1 # This file is included from the top-level CMakeLists.txt. We just store it
2 # here to avoid cluttering up that file.
4 ###############################################################################
6 ###############################################################################
8 if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
10 set(RPMARCH ${CMAKE_SYSTEM_PROCESSOR})
11 if(CPU_TYPE STREQUAL "x86_64")
13 elseif(CPU_TYPE STREQUAL "arm64")
14 set(DEBARCH ${CPU_TYPE})
15 elseif(CPU_TYPE STREQUAL "arm")
16 check_c_source_compiles("
17 #if __ARM_PCS_VFP != 1
18 #error \"float ABI != hard\"
20 int main(void) { return 0; }" HAVE_HARD_FLOAT)
28 elseif(CMAKE_SYSTEM_PROCESSOR_LC STREQUAL "ppc64le")
30 elseif(CPU_TYPE STREQUAL "powerpc" AND BITS EQUAL 32)
34 set(DEBARCH ${CMAKE_SYSTEM_PROCESSOR})
36 message(STATUS "RPM architecture = ${RPMARCH}, DEB architecture = ${DEBARCH}")
38 # Re-set CMAKE_POSITION_INDEPENDENT_CODE so that the RPM spec file works
40 boolean_number(CMAKE_POSITION_INDEPENDENT_CODE)
42 configure_file(release/makerpm.in pkgscripts/makerpm)
43 configure_file(release/rpm.spec.in pkgscripts/rpm.spec @ONLY)
45 add_custom_target(rpm pkgscripts/makerpm
46 SOURCES pkgscripts/makerpm)
48 configure_file(release/makesrpm.in pkgscripts/makesrpm)
50 add_custom_target(srpm pkgscripts/makesrpm
51 SOURCES pkgscripts/makesrpm
54 configure_file(release/makedpkg.in pkgscripts/makedpkg)
55 configure_file(release/deb-control.in pkgscripts/deb-control)
57 add_custom_target(deb pkgscripts/makedpkg
58 SOURCES pkgscripts/makedpkg)
63 ###############################################################################
64 # Windows installer (NullSoft Installer)
65 ###############################################################################
70 set(INST_PLATFORM "Visual C++")
72 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-${INST_ID})
73 set(INST_REG_NAME ${CMAKE_PROJECT_NAME})
75 set(INST_PLATFORM GCC)
77 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-${INST_ID})
78 set(INST_REG_NAME ${CMAKE_PROJECT_NAME}-${INST_ID})
83 set(INST_PLATFORM "${INST_PLATFORM} 64-bit")
84 set(INST_NAME ${INST_NAME}64)
85 set(INST_REG_NAME ${INST_REG_NAME}64)
86 set(INST_DEFS ${INST_DEFS} -DWIN64)
90 set(INST_DEFS ${INST_DEFS} -DJAVA)
93 if(GENERATOR_IS_MULTI_CONFIG)
94 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\")
96 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
99 string(REGEX REPLACE "/" "\\\\" INST_DIR ${CMAKE_INSTALL_PREFIX})
101 configure_file(release/installer.nsi.in installer.nsi @ONLY)
102 # TODO: It would be nice to eventually switch to CPack and eliminate this mess,
104 configure_file(win/projectTargets.cmake.in
105 win/${CMAKE_PROJECT_NAME}Targets.cmake @ONLY)
106 configure_file(win/${INST_ID}/projectTargets-release.cmake.in
107 win/${CMAKE_PROJECT_NAME}Targets-release.cmake @ONLY)
110 set(JAVA_DEPEND turbojpeg-java)
113 set(TURBOJPEG_DEPEND turbojpeg turbojpeg-static tjbench)
115 add_custom_target(installer
116 makensis -nocd ${INST_DEFS} installer.nsi
117 DEPENDS jpeg jpeg-static rdjpgcom wrjpgcom cjpeg djpeg jpegtran
118 ${JAVA_DEPEND} ${TURBOJPEG_DEPEND}
119 SOURCES installer.nsi)
124 ###############################################################################
126 ###############################################################################
130 set(ARMV8_BUILD "" CACHE PATH
131 "Directory containing Armv8 iOS or macOS build to include in universal binaries")
133 set(MACOS_APP_CERT_NAME "" CACHE STRING
134 "Name of the Developer ID Application certificate (in the macOS keychain) that should be used to sign the libjpeg-turbo DMG. Leave this blank to generate an unsigned DMG.")
135 set(MACOS_INST_CERT_NAME "" CACHE STRING
136 "Name of the Developer ID Installer certificate (in the macOS keychain) that should be used to sign the libjpeg-turbo installer package. Leave this blank to generate an unsigned package.")
138 configure_file(release/makemacpkg.in pkgscripts/makemacpkg)
139 configure_file(release/Distribution.xml.in pkgscripts/Distribution.xml)
140 configure_file(release/Welcome.rtf.in pkgscripts/Welcome.rtf)
141 configure_file(release/uninstall.in pkgscripts/uninstall)
143 add_custom_target(dmg pkgscripts/makemacpkg
144 SOURCES pkgscripts/makemacpkg)
149 ###############################################################################
151 ###############################################################################
153 add_custom_target(dist
154 COMMAND git archive --prefix=${CMAKE_PROJECT_NAME}-${VERSION}/ HEAD |
155 gzip > ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}.tar.gz
156 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
158 configure_file(release/maketarball.in pkgscripts/maketarball)
160 add_custom_target(tarball pkgscripts/maketarball
161 SOURCES pkgscripts/maketarball)
163 configure_file(release/libjpeg.pc.in pkgscripts/libjpeg.pc @ONLY)
166 configure_file(release/libturbojpeg.pc.in pkgscripts/libturbojpeg.pc @ONLY)
169 include(CMakePackageConfigHelpers)
170 write_basic_package_version_file(
171 pkgscripts/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
172 VERSION ${VERSION} COMPATIBILITY AnyNewerVersion)
174 configure_package_config_file(release/Config.cmake.in
175 pkgscripts/${CMAKE_PROJECT_NAME}Config.cmake
176 INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME})