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