Build: Embed version/API/(C) info in MSVC DLLs
Based on:
da7a18801a
Closes #576
This commit is contained in:
@@ -11,6 +11,7 @@ endif()
|
|||||||
|
|
||||||
project(libjpeg-turbo C)
|
project(libjpeg-turbo C)
|
||||||
set(VERSION 2.1.3)
|
set(VERSION 2.1.3)
|
||||||
|
set(COPYRIGHT_YEAR "1991-2022")
|
||||||
string(REPLACE "." ";" VERSION_TRIPLET ${VERSION})
|
string(REPLACE "." ";" VERSION_TRIPLET ${VERSION})
|
||||||
list(GET VERSION_TRIPLET 0 VERSION_MAJOR)
|
list(GET VERSION_TRIPLET 0 VERSION_MAJOR)
|
||||||
list(GET VERSION_TRIPLET 1 VERSION_MINOR)
|
list(GET VERSION_TRIPLET 1 VERSION_MINOR)
|
||||||
@@ -52,6 +53,8 @@ message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
|
|||||||
|
|
||||||
message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}")
|
message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}")
|
||||||
|
|
||||||
|
include(cmakescripts/PackageInfo.cmake)
|
||||||
|
|
||||||
# Detect CPU type and whether we're building 64-bit or 32-bit code
|
# Detect CPU type and whether we're building 64-bit or 32-bit code
|
||||||
math(EXPR BITS "${CMAKE_SIZEOF_VOID_P} * 8")
|
math(EXPR BITS "${CMAKE_SIZEOF_VOID_P} * 8")
|
||||||
string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR_LC)
|
string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR_LC)
|
||||||
@@ -336,7 +339,8 @@ message(STATUS "libjpeg API shared library version = ${SO_MAJOR_VERSION}.${SO_AG
|
|||||||
# minor SO versions don't change. However, we increase the middle number (the
|
# minor SO versions don't change. However, we increase the middle number (the
|
||||||
# SO "age") whenever functions are added to the API.
|
# SO "age") whenever functions are added to the API.
|
||||||
set(TURBOJPEG_SO_MAJOR_VERSION 0)
|
set(TURBOJPEG_SO_MAJOR_VERSION 0)
|
||||||
set(TURBOJPEG_SO_VERSION 0.2.0)
|
set(TURBOJPEG_SO_AGE 2)
|
||||||
|
set(TURBOJPEG_SO_VERSION 0.${TURBOJPEG_SO_AGE}.0)
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@@ -516,6 +520,7 @@ else()
|
|||||||
configure_file(jconfig.h.in jconfig.h)
|
configure_file(jconfig.h.in jconfig.h)
|
||||||
endif()
|
endif()
|
||||||
configure_file(jconfigint.h.in jconfigint.h)
|
configure_file(jconfigint.h.in jconfigint.h)
|
||||||
|
configure_file(jversion.h.in jversion.h)
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
configure_file(libjpeg.map.in libjpeg.map)
|
configure_file(libjpeg.map.in libjpeg.map)
|
||||||
endif()
|
endif()
|
||||||
@@ -600,6 +605,12 @@ if(WITH_TURBOJPEG)
|
|||||||
include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
|
include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2})
|
||||||
set(TJMAPFILE ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg-mapfile.jni)
|
set(TJMAPFILE ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg-mapfile.jni)
|
||||||
endif()
|
endif()
|
||||||
|
if(MSVC)
|
||||||
|
configure_file(${CMAKE_SOURCE_DIR}/win/turbojpeg.rc.in
|
||||||
|
${CMAKE_BINARY_DIR}/win/turbojpeg.rc)
|
||||||
|
set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES}
|
||||||
|
${CMAKE_BINARY_DIR}/win/turbojpeg.rc)
|
||||||
|
endif()
|
||||||
add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
|
add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES})
|
||||||
set_property(TARGET turbojpeg PROPERTY COMPILE_FLAGS
|
set_property(TARGET turbojpeg PROPERTY COMPILE_FLAGS
|
||||||
"-DBMP_SUPPORTED -DPPM_SUPPORTED")
|
"-DBMP_SUPPORTED -DPPM_SUPPORTED")
|
||||||
|
|||||||
@@ -1,18 +1,6 @@
|
|||||||
# This file is included from the top-level CMakeLists.txt. We just store it
|
# This file is included from the top-level CMakeLists.txt. We just store it
|
||||||
# here to avoid cluttering up that file.
|
# here to avoid cluttering up that file.
|
||||||
|
|
||||||
set(PKGNAME ${CMAKE_PROJECT_NAME} CACHE STRING
|
|
||||||
"Distribution package name (default: ${CMAKE_PROJECT_NAME})")
|
|
||||||
set(PKGVENDOR "The ${CMAKE_PROJECT_NAME} Project" CACHE STRING
|
|
||||||
"Vendor name to be included in distribution package descriptions (default: The ${CMAKE_PROJECT_NAME} Project)")
|
|
||||||
set(PKGURL "http://www.${CMAKE_PROJECT_NAME}.org" CACHE STRING
|
|
||||||
"URL of project web site to be included in distribution package descriptions (default: http://www.${CMAKE_PROJECT_NAME}.org)")
|
|
||||||
set(PKGEMAIL "information@${CMAKE_PROJECT_NAME}.org" CACHE STRING
|
|
||||||
"E-mail of project maintainer to be included in distribution package descriptions (default: information@${CMAKE_PROJECT_NAME}.org")
|
|
||||||
set(PKGID "com.${CMAKE_PROJECT_NAME}.${PKGNAME}" CACHE STRING
|
|
||||||
"Globally unique package identifier (reverse DNS notation) (default: com.${CMAKE_PROJECT_NAME}.${PKGNAME})")
|
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Linux RPM and DEB
|
# Linux RPM and DEB
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|||||||
13
cmakescripts/PackageInfo.cmake
Normal file
13
cmakescripts/PackageInfo.cmake
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# This file is included from the top-level CMakeLists.txt. We just store it
|
||||||
|
# here to avoid cluttering up that file.
|
||||||
|
|
||||||
|
set(PKGNAME ${CMAKE_PROJECT_NAME} CACHE STRING
|
||||||
|
"Distribution package name (default: ${CMAKE_PROJECT_NAME})")
|
||||||
|
set(PKGVENDOR "The ${CMAKE_PROJECT_NAME} Project" CACHE STRING
|
||||||
|
"Vendor name to be included in distribution package descriptions (default: The ${CMAKE_PROJECT_NAME} Project)")
|
||||||
|
set(PKGURL "http://www.${CMAKE_PROJECT_NAME}.org" CACHE STRING
|
||||||
|
"URL of project web site to be included in distribution package descriptions (default: http://www.${CMAKE_PROJECT_NAME}.org)")
|
||||||
|
set(PKGEMAIL "information@${CMAKE_PROJECT_NAME}.org" CACHE STRING
|
||||||
|
"E-mail of project maintainer to be included in distribution package descriptions (default: information@${CMAKE_PROJECT_NAME}.org")
|
||||||
|
set(PKGID "com.${CMAKE_PROJECT_NAME}.${PKGNAME}" CACHE STRING
|
||||||
|
"Globally unique package identifier (reverse DNS notation) (default: com.${CMAKE_PROJECT_NAME}.${PKGNAME})")
|
||||||
@@ -51,4 +51,4 @@
|
|||||||
"Copyright (C) 1991-2020 Thomas G. Lane, Guido Vollbeding"
|
"Copyright (C) 1991-2020 Thomas G. Lane, Guido Vollbeding"
|
||||||
|
|
||||||
#define JCOPYRIGHT_SHORT \
|
#define JCOPYRIGHT_SHORT \
|
||||||
"Copyright (C) 1991-2022 The libjpeg-turbo Project and many others"
|
"Copyright (C) @COPYRIGHT_YEAR@ The libjpeg-turbo Project and many others"
|
||||||
@@ -35,6 +35,11 @@ if(WIN32)
|
|||||||
set(DEFFILE ../win/jpeg${SO_MAJOR_VERSION}.def)
|
set(DEFFILE ../win/jpeg${SO_MAJOR_VERSION}.def)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
if(MSVC)
|
||||||
|
configure_file(${CMAKE_SOURCE_DIR}/win/jpeg.rc.in
|
||||||
|
${CMAKE_BINARY_DIR}/win/jpeg.rc)
|
||||||
|
set(JPEG_SRCS ${JPEG_SRCS} ${CMAKE_BINARY_DIR}/win/jpeg.rc)
|
||||||
|
endif()
|
||||||
add_library(jpeg SHARED ${JPEG_SRCS} ${DEFFILE} $<TARGET_OBJECTS:simd>
|
add_library(jpeg SHARED ${JPEG_SRCS} ${DEFFILE} $<TARGET_OBJECTS:simd>
|
||||||
${SIMD_OBJS})
|
${SIMD_OBJS})
|
||||||
|
|
||||||
|
|||||||
35
win/jpeg.rc.in
Normal file
35
win/jpeg.rc.in
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
#include "Winver.h"
|
||||||
|
#include "winres.h"
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION @SO_MAJOR_VERSION@,@SO_AGE@,@SO_MINOR_VERSION@,0
|
||||||
|
PRODUCTVERSION @VERSION_MAJOR@,@VERSION_MINOR@,@VERSION_REVISION@,0
|
||||||
|
FILEFLAGSMASK 0x17L
|
||||||
|
#ifndef NDEBUG
|
||||||
|
FILEFLAGS VS_FF_DEBUG
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS VOS_NT_WINDOWS32
|
||||||
|
FILETYPE VFT_DLL
|
||||||
|
FILESUBTYPE VFT2_UNKNOWN
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", "@PKGVENDOR@"
|
||||||
|
VALUE "FileDescription", "libjpeg API DLL"
|
||||||
|
VALUE "FileVersion", "@SO_MAJOR_VERSION@,@SO_AGE@,@SO_MINOR_VERSION@,0"
|
||||||
|
VALUE "ProductVersion", "@VERSION@"
|
||||||
|
VALUE "ProductName", "@CMAKE_PROJECT_NAME@"
|
||||||
|
VALUE "InternalName", "jpeg@SO_MAJOR_VERSION@"
|
||||||
|
VALUE "LegalCopyright", "Copyright \xA9 @COPYRIGHT_YEAR@ The libjpeg-turbo Project and many others"
|
||||||
|
VALUE "OriginalFilename", "jpeg@SO_MAJOR_VERSION@.dll"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1200
|
||||||
|
END
|
||||||
|
END
|
||||||
35
win/turbojpeg.rc.in
Normal file
35
win/turbojpeg.rc.in
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
#include "Winver.h"
|
||||||
|
#include "winres.h"
|
||||||
|
|
||||||
|
VS_VERSION_INFO VERSIONINFO
|
||||||
|
FILEVERSION 0,@TURBOJPEG_SO_AGE@,0,0
|
||||||
|
PRODUCTVERSION @VERSION_MAJOR@,@VERSION_MINOR@,@VERSION_REVISION@,0
|
||||||
|
FILEFLAGSMASK 0x17L
|
||||||
|
#ifndef NDEBUG
|
||||||
|
FILEFLAGS VS_FF_DEBUG
|
||||||
|
#else
|
||||||
|
FILEFLAGS 0x0L
|
||||||
|
#endif
|
||||||
|
FILEOS VOS_NT_WINDOWS32
|
||||||
|
FILETYPE VFT_DLL
|
||||||
|
FILESUBTYPE VFT2_UNKNOWN
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904b0"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", "@PKGVENDOR@"
|
||||||
|
VALUE "FileDescription", "TurboJPEG API DLL"
|
||||||
|
VALUE "FileVersion", "0,@TURBOJPEG_SO_AGE@,0,0"
|
||||||
|
VALUE "ProductVersion", "@VERSION@"
|
||||||
|
VALUE "ProductName", "@CMAKE_PROJECT_NAME@"
|
||||||
|
VALUE "InternalName", "turbojpeg"
|
||||||
|
VALUE "LegalCopyright", "Copyright \xA9 @COPYRIGHT_YEAR@ The libjpeg-turbo Project and many others"
|
||||||
|
VALUE "OriginalFilename", "turbojpeg.dll"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1200
|
||||||
|
END
|
||||||
|
END
|
||||||
Reference in New Issue
Block a user