1# This file is included from the top-level CMakeLists.txt. We just store it 2# here to avoid cluttering up that file. 3 4set(PKGNAME ${CMAKE_PROJECT_NAME} CACHE STRING 5 "Distribution package name (default: ${CMAKE_PROJECT_NAME})") 6set(PKGVENDOR "The ${CMAKE_PROJECT_NAME} Project" CACHE STRING 7 "Vendor name to be included in distribution package descriptions (default: The ${CMAKE_PROJECT_NAME} Project)") 8set(PKGURL "http://www.${CMAKE_PROJECT_NAME}.org" CACHE STRING 9 "URL of project web site to be included in distribution package descriptions (default: http://www.${CMAKE_PROJECT_NAME}.org)") 10set(PKGEMAIL "information@${CMAKE_PROJECT_NAME}.org" CACHE STRING 11 "E-mail of project maintainer to be included in distribution package descriptions (default: information@${CMAKE_PROJECT_NAME}.org") 12set(PKGID "com.${CMAKE_PROJECT_NAME}.${PKGNAME}" CACHE STRING 13 "Globally unique package identifier (reverse DNS notation) (default: com.${CMAKE_PROJECT_NAME}.${PKGNAME})") 14 15 16############################################################################### 17# Linux RPM and DEB 18############################################################################### 19 20if(CMAKE_SYSTEM_NAME STREQUAL "Linux") 21 22set(RPMARCH ${CMAKE_SYSTEM_PROCESSOR}) 23if(CPU_TYPE STREQUAL "x86_64") 24 set(DEBARCH amd64) 25elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "armv7*") 26 set(RPMARCH armv7hl) 27 set(DEBARCH armhf) 28elseif(CPU_TYPE STREQUAL "arm64") 29 set(DEBARCH ${CPU_TYPE}) 30elseif(CPU_TYPE STREQUAL "arm") 31 if(CMAKE_C_COMPILER MATCHES "gnueabihf") 32 set(RPMARCH armv7hl) 33 set(DEBARCH armhf) 34 else() 35 set(RPMARCH armel) 36 set(DEBARCH armel) 37 endif() 38elseif(CMAKE_SYSTEM_PROCESSOR_LC STREQUAL "ppc64le") 39 set(DEBARCH ppc64el) 40elseif(CPU_TYPE STREQUAL "powerpc" AND BITS EQUAL 32) 41 set(RPMARCH ppc) 42 set(DEBARCH ppc) 43else() 44 set(DEBARCH ${CMAKE_SYSTEM_PROCESSOR}) 45endif() 46message(STATUS "RPM architecture = ${RPMARCH}, DEB architecture = ${DEBARCH}") 47 48# Re-set CMAKE_POSITION_INDEPENDENT_CODE so that the RPM spec file works 49# properly 50boolean_number(CMAKE_POSITION_INDEPENDENT_CODE) 51 52configure_file(release/makerpm.in pkgscripts/makerpm) 53configure_file(release/rpm.spec.in pkgscripts/rpm.spec @ONLY) 54 55add_custom_target(rpm pkgscripts/makerpm 56 SOURCES pkgscripts/makerpm) 57 58configure_file(release/makesrpm.in pkgscripts/makesrpm) 59 60add_custom_target(srpm pkgscripts/makesrpm 61 SOURCES pkgscripts/makesrpm 62 DEPENDS dist) 63 64configure_file(release/makedpkg.in pkgscripts/makedpkg) 65configure_file(release/deb-control.in pkgscripts/deb-control) 66 67add_custom_target(deb pkgscripts/makedpkg 68 SOURCES pkgscripts/makedpkg) 69 70endif() # Linux 71 72 73############################################################################### 74# Windows installer (NullSoft Installer) 75############################################################################### 76 77if(WIN32) 78 79if(MSVC) 80 set(INST_PLATFORM "Visual C++") 81 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-vc) 82 set(INST_REG_NAME ${CMAKE_PROJECT_NAME}) 83elseif(MINGW) 84 set(INST_PLATFORM GCC) 85 set(INST_NAME ${CMAKE_PROJECT_NAME}-${VERSION}-gcc) 86 set(INST_REG_NAME ${CMAKE_PROJECT_NAME}-gcc) 87 set(INST_DEFS -DGCC) 88endif() 89 90if(BITS EQUAL 64) 91 set(INST_PLATFORM "${INST_PLATFORM} 64-bit") 92 set(INST_NAME ${INST_NAME}64) 93 set(INST_REG_NAME ${INST_REG_NAME}64) 94 set(INST_DEFS ${INST_DEFS} -DWIN64) 95endif() 96 97if(WITH_JAVA) 98 set(INST_DEFS ${INST_DEFS} -DJAVA) 99endif() 100 101if(MSVC_IDE) 102 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\") 103else() 104 set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=") 105endif() 106 107string(REGEX REPLACE "/" "\\\\" INST_DIR ${CMAKE_INSTALL_PREFIX}) 108 109configure_file(release/installer.nsi.in installer.nsi @ONLY) 110 111if(WITH_JAVA) 112 set(JAVA_DEPEND turbojpeg-java) 113endif() 114add_custom_target(installer 115 makensis -nocd ${INST_DEFS} installer.nsi 116 DEPENDS jpeg jpeg-static turbojpeg turbojpeg-static rdjpgcom wrjpgcom 117 cjpeg djpeg jpegtran tjbench ${JAVA_DEPEND} 118 SOURCES installer.nsi) 119 120endif() # WIN32 121 122 123############################################################################### 124# Cygwin Package 125############################################################################### 126 127if(CYGWIN) 128 129configure_file(release/makecygwinpkg.in pkgscripts/makecygwinpkg) 130 131add_custom_target(cygwinpkg pkgscripts/makecygwinpkg) 132 133endif() # CYGWIN 134 135 136############################################################################### 137# Mac DMG 138############################################################################### 139 140if(APPLE) 141 142set(DEFAULT_OSX_32BIT_BUILD ${CMAKE_SOURCE_DIR}/osxx86) 143set(OSX_32BIT_BUILD ${DEFAULT_OSX_32BIT_BUILD} CACHE PATH 144 "Directory containing 32-bit (i386) Mac build to include in universal binaries (default: ${DEFAULT_OSX_32BIT_BUILD})") 145set(DEFAULT_IOS_ARMV7_BUILD ${CMAKE_SOURCE_DIR}/iosarmv7) 146set(IOS_ARMV7_BUILD ${DEFAULT_IOS_ARMV7_BUILD} CACHE PATH 147 "Directory containing Armv7 iOS build to include in universal binaries (default: ${DEFAULT_IOS_ARMV7_BUILD})") 148set(DEFAULT_IOS_ARMV7S_BUILD ${CMAKE_SOURCE_DIR}/iosarmv7s) 149set(IOS_ARMV7S_BUILD ${DEFAULT_IOS_ARMV7S_BUILD} CACHE PATH 150 "Directory containing Armv7s iOS build to include in universal binaries (default: ${DEFAULT_IOS_ARMV7S_BUILD})") 151set(DEFAULT_IOS_ARMV8_BUILD ${CMAKE_SOURCE_DIR}/iosarmv8) 152set(IOS_ARMV8_BUILD ${DEFAULT_IOS_ARMV8_BUILD} CACHE PATH 153 "Directory containing Armv8 iOS build to include in universal binaries (default: ${DEFAULT_IOS_ARMV8_BUILD})") 154 155set(OSX_APP_CERT_NAME "" CACHE STRING 156 "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.") 157set(OSX_INST_CERT_NAME "" CACHE STRING 158 "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.") 159 160configure_file(release/makemacpkg.in pkgscripts/makemacpkg) 161configure_file(release/Distribution.xml.in pkgscripts/Distribution.xml) 162configure_file(release/uninstall.in pkgscripts/uninstall) 163 164add_custom_target(dmg pkgscripts/makemacpkg 165 SOURCES pkgscripts/makemacpkg) 166 167add_custom_target(udmg pkgscripts/makemacpkg universal 168 SOURCES pkgscripts/makemacpkg) 169 170endif() # APPLE 171 172 173############################################################################### 174# Generic 175############################################################################### 176 177add_custom_target(dist 178 COMMAND git archive --prefix=${CMAKE_PROJECT_NAME}-${VERSION}/ HEAD | 179 gzip > ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-${VERSION}.tar.gz 180 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) 181 182configure_file(release/maketarball.in pkgscripts/maketarball) 183 184add_custom_target(tarball pkgscripts/maketarball 185 SOURCES pkgscripts/maketarball) 186 187configure_file(release/libjpeg.pc.in pkgscripts/libjpeg.pc @ONLY) 188 189configure_file(release/libturbojpeg.pc.in pkgscripts/libturbojpeg.pc @ONLY) 190