-
Notifications
You must be signed in to change notification settings - Fork 26
Expand file tree
/
Copy pathinstall_codesign_script_OpenStudioApp.cmake
More file actions
307 lines (277 loc) · 9.03 KB
/
install_codesign_script_OpenStudioApp.cmake
File metadata and controls
307 lines (277 loc) · 9.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
#[=======================================================================[.rst:
install_codesign_script_OpenStudioApp
-------------------------------------
This file is meant to be used up as a ``install(SCRIPT)``
Pre-conditions:
- It requires that you're running on ``APPLE``
- **Important: In the scope of this** ``install(SCRIPT)``, you must define
* :cmake:variable:`CPACK_CODESIGNING_DEVELOPPER_ID_APPLICATION`
* :cmake:variable:`CPACK_CODESIGNING_MACOS_IDENTIFIER`
**In the scope** meaning that you have to issue some ``install(CODE ..)`` commands prior to calling it, and they must be:
* Part of the same ``project()``
* Using the same CPack ``COMPONENT``
This script will codesign the ``FILES_TO_SIGN`` that is defined in this file as well as some globs.
To do so, it uses the `CodeSigning`_ functions :cmake:command:`codesign_files_macos`
This script will therefore run in the CPack staging area, and should be added after installation of root dylibs (they may come from fixup_executable)
after any rpath adjustments, to ensure the signature sticks.
Usage::
if(APPLE AND CPACK_CODESIGNING_DEVELOPPER_ID_APPLICATION)
install(CODE "set(CPACK_CODESIGNING_DEVELOPPER_ID_APPLICATION \"${CPACK_CODESIGNING_DEVELOPPER_ID_APPLICATION}\")" COMPONENT OpenStudioApp)
install(CODE "set(CPACK_CODESIGNING_MACOS_IDENTIFIER \"${CPACK_CODESIGNING_MACOS_IDENTIFIER}\")" COMPONENT OpenStudioApp)
# call the script
install(SCRIPT "${CMAKE_CURRENT_LIST_DIR}/install_codesign_script_OpenStudioApp.cmake" COMPONENT OpenStudioApp)
endif()
#]=======================================================================]
#------------------------------------------------------------------------------
# Just a helper
function(print_relative_paths)
set(prefix "")
set(valueLessKeywords NAME_ONLY NEWLINE)
set(singleValueKeywords PREFIX BASE_DIRECTORY)
set(multiValueKeywords ABSOLUTE_PATHS)
cmake_parse_arguments(
PARSE_ARGV 0 # Start at one with NAME is the first param
"${prefix}"
"${valueLessKeywords}"
"${singleValueKeywords}"
"${multiValueKeywords}"
)
if (_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Extra unknown arguments were passed: ${_UNPARSED_ARGUMENTS}")
endif()
if (_KEYWORDS_MISSING_VALUES)
message(FATAL_ERROR "Keywords missing values: ${_KEYWORDS_MISSING_VALUES}")
endif()
if(NOT _BASE_DIRECTORY)
set(_BASE_DIRECTORY ${CMAKE_INSTALL_PREFIX})
endif()
foreach(path ${_ABSOLUTE_PATHS})
if(_NAME_ONLY)
cmake_path(GET path FILENAME rel_path)
else()
cmake_path(RELATIVE_PATH path BASE_DIRECTORY ${_BASE_DIRECTORY} OUTPUT_VARIABLE rel_path)
endif()
list(APPEND rel_paths ${rel_path})
endforeach()
if(_NEWLINE)
message("${_PREFIX}")
foreach(path ${rel_paths})
message(" - ${path}")
endforeach()
else()
message("${_PREFIX}${rel_paths}")
endif()
endfunction()
#------------------------------------------------------------------------------
message("Codesigning inner executables and library from ${CMAKE_CURRENT_LIST_FILE}")
message("CMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}")
message("CPACK_CODESIGNING_DEVELOPPER_ID_APPLICATION=${CPACK_CODESIGNING_DEVELOPPER_ID_APPLICATION}")
message("CPACK_CODESIGNING_MACOS_IDENTIFIER=${CPACK_CODESIGNING_MACOS_IDENTIFIER}")
message("CMAKE_INSTALL_COMPONENT=${CMAKE_INSTALL_COMPONENT}")
message("CPACK_GENERATOR=${CPACK_GENERATOR}")
if(NOT CPACK_CODESIGNING_DEVELOPPER_ID_APPLICATION)
message(FATAL_ERROR "CPACK_CODESIGNING_DEVELOPPER_ID_APPLICATION is required")
endif()
if(NOT CPACK_CODESIGNING_MACOS_IDENTIFIER)
message(FATAL_ERROR "CPACK_CODESIGNING_MACOS_IDENTIFIER is required")
endif()
set(FILES_TO_SIGN
EnergyPlus/ExpandObjects
EnergyPlus/energyplus-25.2.0
EnergyPlus/energyplus.1
EnergyPlus/libenergyplusapi.25.2.0.dylib
EnergyPlus/libintl.8.dylib
EnergyPlus/libpython3.12.dylib
Ruby/openstudio.bundle
Radiance/bin/vinfo
Radiance/bin/pcompos
Radiance/bin/dgraph
Radiance/bin/optics2rad
Radiance/bin/pmapdump
Radiance/bin/bsdf2klems
Radiance/bin/gensurf
Radiance/bin/ra_gif
Radiance/bin/xglaresrc
Radiance/bin/histo
Radiance/bin/libxcb.1.dylib
Radiance/bin/ranimate
Radiance/bin/eplus_adduvf
Radiance/bin/glaze
Radiance/bin/rlam
Radiance/bin/neaten
Radiance/bin/oconv
Radiance/bin/normtiff
Radiance/bin/pfilt
Radiance/bin/ltpict.pl
Radiance/bin/rhoptimize
Radiance/bin/mgf2meta
Radiance/bin/ra_bmp
Radiance/bin/genworm
Radiance/bin/gendaylit
Radiance/bin/libXplugin.1.dylib
Radiance/bin/rhcopy
Radiance/bin/igraph
Radiance/bin/wrapBSDF
Radiance/bin/pvalue
Radiance/bin/rcollate
Radiance/bin/genambpos
Radiance/bin/rcalc
Radiance/bin/pinterp
Radiance/bin/obj2mesh
Radiance/bin/pdfblur
Radiance/bin/falsecolor
Radiance/bin/vwright
Radiance/bin/ra_rgbe
Radiance/bin/rfluxmtx
Radiance/bin/libICE.6.dylib
Radiance/bin/fieldcomb
Radiance/bin/rpiece
Radiance/bin/pcwarp
Radiance/bin/3ds2mgf
Radiance/bin/psign
Radiance/bin/libX11.6.dylib
Radiance/bin/bgraph
Radiance/bin/ev
Radiance/bin/genprism
Radiance/bin/vwrays
Radiance/bin/libglapi.0.dylib
Radiance/bin/bsdf2ttree
Radiance/bin/pgblur
Radiance/bin/mgf2inv
Radiance/bin/phisto
Radiance/bin/rhinfo
Radiance/bin/meta2tga
Radiance/bin/ra_tiff
Radiance/bin/trad
Radiance/bin/objpict
Radiance/bin/ies2rad
Radiance/bin/plotin
Radiance/bin/protate
Radiance/bin/plot4
Radiance/bin/replmarks
Radiance/bin/findglare
Radiance/bin/genbox
Radiance/bin/pextrem
Radiance/bin/gensky
Radiance/bin/xform
Radiance/bin/pexpand
Radiance/bin/genBSDF
Radiance/bin/rcontrib
Radiance/bin/ra_hexbit
Radiance/bin/mgf2rad
Radiance/bin/rad2mgf
Radiance/bin/libxcb-glx.0.dylib
Radiance/bin/rtrace
Radiance/bin/rhpict
Radiance/bin/libXfixes.3.dylib
Radiance/bin/getbbox
Radiance/bin/lampcolor
Radiance/bin/cnt
Radiance/bin/ra_xyze
Radiance/bin/total
Radiance/bin/genskyvec
Radiance/bin/epw2wea
Radiance/bin/pmdblur
Radiance/bin/objline
Radiance/bin/ximage
Radiance/bin/libX11-xcb.1.dylib
Radiance/bin/psort
Radiance/bin/pkgBSDF
Radiance/bin/pbilat
Radiance/bin/ttyimage
Radiance/bin/libXdmcp.6.dylib
Radiance/bin/lookamb
Radiance/bin/ra_ppm
Radiance/bin/libXau.6.dylib
Radiance/bin/mkpmap
Radiance/bin/pmblur
Radiance/bin/tmesh2rad
Radiance/bin/rlux
Radiance/bin/psmeta
Radiance/bin/libXext.6.dylib
Radiance/bin/objview
Radiance/bin/libXxf86vm.1.dylib
Radiance/bin/glarendx
Radiance/bin/ra_t8
Radiance/bin/libGL.1.dylib
Radiance/bin/libXdamage.1.dylib
Radiance/bin/raddepend
Radiance/bin/genklemsamp
Radiance/bin/pflip
Radiance/bin/icalc
Radiance/bin/dctimestep
Radiance/bin/ra_ps
Radiance/bin/tabfunc
Radiance/bin/gendaymtx
Radiance/bin/cv
Radiance/bin/rholo
Radiance/bin/mkillum
Radiance/bin/rvu
Radiance/bin/glrad
Radiance/bin/obj2rad
Radiance/bin/pcomb
Radiance/bin/rmtxop
Radiance/bin/genrev
Radiance/bin/pcond
Radiance/bin/libSM.6.dylib
Radiance/bin/evalglare
Radiance/bin/normpat
Radiance/bin/ra_t16
Radiance/bin/meta2bmp
Radiance/bin/rpict
Radiance/bin/libGLU.1.dylib
Radiance/bin/gcomp
Radiance/bin/rsensor
Radiance/bin/compamb
Radiance/bin/getinfo
Radiance/bin/macbethcal
Radiance/bin/xshowtrace
Radiance/bin/ran2tiff
Radiance/bin/ra_pfm
Radiance/bin/ranimove
Radiance/bin/x11meta
Radiance/bin/rad
Radiance/bin/rttree_reduce
Radiance/bin/x11.hdi
Radiance/bin/nff2rad
Radiance/bin/genrhgrid
Radiance/bin/genblinds
Radiance/bin/genclock
Radiance/bin/mksource
Radiance/bin/dayfact
Radiance/bin/mgfilt
Radiance/bin/xyzimage
Radiance/bin/ra_pict
Radiance/bin/glare
Radiance/bin/ltview.pl
Radiance/bin/libz.1.dylib
Radiance/bin/plugins/platforms/libqcocoa.dylib
Radiance/bin/plugins/imageformats/libqgif.dylib
Radiance/bin/plugins/imageformats/libqico.dylib
Radiance/bin/plugins/imageformats/libqjpeg.dylib
Radiance/bin/plugins/imageformats/libqtiff.dylib
Radiance/bin/QtPrintSupport.framework/Versions/5/QtPrintSupport
Radiance/bin/QtGui.framework/Versions/5/QtGui
Radiance/bin/QtCore.framework/Versions/5/QtCore
Radiance/bin/QtWidgets.framework/Versions/5/QtWidgets
)
foreach(path ${FILES_TO_SIGN})
list(APPEND _FULL_PATHS "${CMAKE_INSTALL_PREFIX}/${path}")
endforeach()
file(GLOB_RECURSE _PYTHON_SOS "${CMAKE_INSTALL_PREFIX}/EnergyPlus/python_lib/**/*.so")
file(GLOB _numpy_dylibs "${CMAKE_INSTALL_PREFIX}/EnergyPlus/python_lib/numpy/.dylibs/*.dylib")
list (APPEND _PYTHON_SOS ${_numpy_dylibs})
print_relative_paths(PREFIX "FULL_PATHS=" ABSOLUTE_PATHS ${_FULL_PATHS})
print_relative_paths(PREFIX "PYTHON_SOS=" ABSOLUTE_PATHS ${_PYTHON_SOS})
include(${CMAKE_CURRENT_LIST_DIR}/CodeSigning.cmake)
codesign_files_macos(
FILES ${_FULL_PATHS} ${_PYTHON_SOS}
SIGNING_IDENTITY ${CPACK_CODESIGNING_DEVELOPPER_ID_APPLICATION}
PREFIX "${CPACK_CODESIGNING_MACOS_IDENTIFIER}."
FORCE VERBOSE
)
# Clean up to avoid multiple passes (several components) appending to a pre-existing list
unset(FILES_TO_SIGN)
unset(_FULL_PATHS)
unset(_PYTHON_SOS)
message("Finished Codesigning inner executables and library for CPack Component OpenStudioApp")