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})")
6string(TOLOWER ${PKGNAME} PKGNAME_LC)
7set(PKGVENDOR "The ${CMAKE_PROJECT_NAME} Project" CACHE STRING
8	"Vendor name to be included in distribution package descriptions (default: The ${CMAKE_PROJECT_NAME} Project)")
9set(PKGURL "http://www.${CMAKE_PROJECT_NAME}.org" CACHE STRING
10	"URL of project web site to be included in distribution package descriptions (default: http://www.${CMAKE_PROJECT_NAME}.org)")
11set(PKGEMAIL "information@${CMAKE_PROJECT_NAME}.org" CACHE STRING
12	"E-mail of project maintainer to be included in distribution package descriptions (default: information@${CMAKE_PROJECT_NAME}.org")
13set(PKGID "com.${CMAKE_PROJECT_NAME_LC}.vglclient" CACHE STRING
14	"Globally unique package identifier (reverse DNS notation) (default: com.${CMAKE_PROJECT_NAME_LC}.vglclient)")
15
16
17if(UNIX AND NOT CMAKE_INSTALL_PREFIX MATCHES "^/usr/?$")
18	set(DEFAULT_VGL_BINSYMLINKS 0)
19	set(DEFAULT_VGL_INCSYMLINKS 0)
20	if(CMAKE_INSTALL_PREFIX STREQUAL "${CMAKE_INSTALL_DEFAULT_PREFIX}")
21		set(DEFAULT_VGL_BINSYMLINKS 1)
22		set(DEFAULT_VGL_INCSYMLINKS 1)
23	endif()
24	option(VGL_BINSYMLINKS
25		"In the distribution packages, create symlinks to VirtualGL binaries and scripts under /usr/bin (default: @DEFAULT_VGL_BINSYMLINKS@)"
26		${DEFAULT_VGL_BINSYMLINKS})
27	boolean_number(VGL_BINSYMLINKS)
28	option(VGL_INCSYMLINKS
29		"In the distribution packages, create symlinks to VirtualGL headers under /usr/include (default: @DEFAULT_VGL_INCSYMLINKS@)"
30		${DEFAULT_VGL_INCSYMLINKS})
31	boolean_number(VGL_INCSYMLINKS)
32else()
33	set(VGL_BINSYMLINKS 0)
34	set(VGL_INCSYMLINKS 0)
35endif()
36
37
38###############################################################################
39# Linux RPM and DEB
40###############################################################################
41
42if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
43
44set(RPMARCH ${CMAKE_SYSTEM_PROCESSOR})
45if(CPU_TYPE STREQUAL "x86_64")
46	set(DEBARCH amd64)
47elseif(CPU_TYPE STREQUAL "arm64")
48	set(DEBARCH ${CPU_TYPE})
49elseif(CPU_TYPE STREQUAL "arm")
50	check_c_source_compiles("
51		#if __ARM_PCS_VFP != 1
52		#error \"float ABI = softfp\"
53		#endif
54		int main(void) { return 0; }" HAVE_HARD_FLOAT)
55	if(HAVE_HARD_FLOAT)
56		set(RPMARCH armv7hl)
57		set(DEBARCH armhf)
58	else()
59		set(RPMARCH armel)
60		set(DEBARCH armel)
61	endif()
62elseif(CMAKE_SYSTEM_PROCESSOR_LC STREQUAL "ppc64le")
63	set(DEBARCH ppc64el)
64else()
65	set(DEBARCH ${CMAKE_SYSTEM_PROCESSOR})
66endif()
67message(STATUS "RPM architecture = ${RPMARCH}, DEB architecture = ${DEBARCH}")
68
69configure_file(release/makerpm.in pkgscripts/makerpm)
70configure_file(release/rpm.spec.in pkgscripts/rpm.spec @ONLY)
71
72add_custom_target(rpm pkgscripts/makerpm
73	SOURCES pkgscripts/makerpm)
74
75configure_file(release/makesrpm.in pkgscripts/makesrpm)
76
77add_custom_target(srpm pkgscripts/makesrpm
78	SOURCES pkgscripts/makesrpm
79	DEPENDS dist)
80
81set(EGLDEPENDS "")
82if(VGL_EGLBACKEND)
83	set(EGLDEPENDS ", libegl1-mesa:${DEBARCH}")
84endif()
85configure_file(release/makedpkg.in pkgscripts/makedpkg)
86configure_file(release/deb-control.in pkgscripts/deb-control)
87
88add_custom_target(deb pkgscripts/makedpkg
89	SOURCES pkgscripts/makedpkg)
90
91endif() # Linux
92
93
94###############################################################################
95# Windows installer (NullSoft Installer)
96###############################################################################
97
98if(WIN32)
99
100if(BITS EQUAL 64)
101	set(INST_DEFS -DWIN64)
102endif()
103
104if(MSVC_IDE)
105	set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=${CMAKE_CFG_INTDIR}\\")
106else()
107	set(INST_DEFS ${INST_DEFS} "-DBUILDDIR=")
108endif()
109
110configure_file(release/installer.nsi.in pkgscripts/installer.nsi @ONLY)
111
112if(MSVC_IDE)
113	add_custom_target(installer
114		COMMAND ${CMAKE_COMMAND} -E make_directory @CMAKE_BINARY_DIR@/${CMAKE_CFG_INTDIR}
115		COMMAND makensis -nocd ${INST_DEFS} pkgscripts/installer.nsi
116		DEPENDS tcbench nettest wglspheres
117		SOURCES pkgscripts/installer.nsi)
118else()
119	add_custom_target(installer
120		COMMAND makensis -nocd ${INST_DEFS} pkgscripts/installer.nsi
121		DEPENDS tcbench nettest wglspheres
122		SOURCES pkgscripts/installer.nsi)
123endif()
124
125endif() # WIN32
126
127
128###############################################################################
129# Mac DMG
130###############################################################################
131
132if(APPLE)
133
134set(MACOS_APP_CERT_NAME "" CACHE STRING
135	"Name of the Developer ID Application certificate (in the macOS keychain) that should be used to sign the VirtualGL DMG.  Leave this blank to generate an unsigned DMG.")
136set(MACOS_INST_CERT_NAME "" CACHE STRING
137	"Name of the Developer ID Installer certificate (in the macOS keychain) that should be used to sign the VirtualGL installer package.  Leave this blank to generate an unsigned package.")
138
139string(REGEX REPLACE "/" ":" CMAKE_INSTALL_MACPREFIX ${CMAKE_INSTALL_PREFIX})
140string(REGEX REPLACE "^:" "" CMAKE_INSTALL_MACPREFIX
141	${CMAKE_INSTALL_MACPREFIX})
142
143configure_file(release/makemacpkg.in pkgscripts/makemacpkg)
144configure_file(release/Distribution.xml.in pkgscripts/Distribution.xml)
145configure_file(release/uninstall.in pkgscripts/uninstall)
146configure_file(release/uninstall.applescript.in pkgscripts/uninstall.applescript)
147
148add_custom_target(dmg pkgscripts/makemacpkg
149	SOURCES pkgscripts/makemacpkg)
150
151endif() # APPLE
152
153
154###############################################################################
155# Generic
156###############################################################################
157
158configure_file(release/makesrpm.in pkgscripts/makesrpm)
159
160set(PROJECT_NAME ${CMAKE_PROJECT_NAME})
161if(WIN32)
162	string(REGEX REPLACE "-Utils" "" PROJECT_NAME ${CMAKE_PROJECT_NAME})
163endif()
164add_custom_target(dist
165	COMMAND git archive --prefix=${PROJECT_NAME}-${VERSION}/ HEAD |
166		gzip > ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-${VERSION}.tar.gz
167		WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
168
169configure_file(release/maketarball.in pkgscripts/maketarball)
170
171add_custom_target(tarball pkgscripts/maketarball
172	SOURCES pkgscripts/maketarball)
173