-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathCMakeLists.txt
420 lines (373 loc) · 20.4 KB
/
CMakeLists.txt
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
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
########################################################
# Welcome to the OpenCMISS build system!
########################################################
# This script realises the top-level setup phase.
# One of it's jobs is to make sure you have the minimum cmake version available (if not, you can have us build it for you).
#
# The easiest thing to do is nothing: CMake will determine from the current environment the system's setup and try to use that.
# Otherwise, here's what you can configure at this stage:
#
# Configuration options
# ########################################################
# Specify any of the following variables on the command line via -DVARNAME=VALUE or set them in your CMake GUI.
# The values in brackets indicate the default values, where [] denotes not set and | separates alternatives.
#
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
project(OpenCMISS-Setup)
cmake_policy(SET CMP0057 NEW)
cmake_policy(SET CMP0054 NEW)
include(ExternalProject)
set(VISIBLE_GUI_ENTRIES OPENCMISS_LIBRARIES OPENCMISS_ROOT OPENCMISS_LIBRARIES_ROOT OPENCMISS_DEPENDENCIES_ROOT OPENCMISS_EXAMPLES_ROOT OPENCMISS_MANAGE_ROOT OPENCMISS_CMAKE_MODULES_ROOT OPENCMISS_IRON_ROOT OPENCMISS_ZINC_ROOT OPENCMISS_DEPENDENCIES_INSTALL_PREFIX OPENCMISS_CMAKE_MODULE_PATH OPENCMISS_PYTHON_EXECUTABLE)
set(VISIBLE_standard_GUI_ENTRIES OPENCMISS_ROOT OPENCMISS_LIBRARIES OPENCMISS_PYTHON_EXECUTABLE)
set(VISIBLE_standard_IND_GUI_ENTRIES OPENCMISS_LIBRARIES OPENCMISS_LIBRARIES_ROOT OPENCMISS_EXAMPLES_ROOT OPENCMISS_DEPENDENCIES_ROOT OPENCMISS_MANAGE_ROOT OPENCMISS_CMAKE_MODULES_ROOT OPENCMISS_PYTHON_EXECUTABLE)
set(VISIBLE_libraries_GUI_ENTRIES OPENCMISS_LIBRARIES OPENCMISS_LIBRARIES_ROOT OPENCMISS_DEPENDENCIES_INSTALL_PREFIX OPENCMISS_CMAKE_MODULE_PATH OPENCMISS_PYTHON_EXECUTABLE)
set(VISIBLE_libraries_IND_GUI_ENTRIES OPENCMISS_LIBRARIES OPENCMISS_ZINC_ROOT OPENCMISS_IRON_ROOT OPENCMISS_MANAGE_ROOT OPENCMISS_CMAKE_MODULE_PATH OPENCMISS_DEPENDENCIES_INSTALL_PREFIX OPENCMISS_PYTHON_EXECUTABLE)
set(VISIBLE_dependencies_GUI_ENTRIES OPENCMISS_DEPENDENCIES_ROOT OPENCMISS_PYTHON_EXECUTABLE OPENCMISS_LIBRARIES)
set(VISIBLE_dependencies_IND_GUI_ENTRIES OPENCMISS_DEPENDENCIES_ROOT OPENCMISS_MANAGE_ROOT OPENCMISS_CMAKE_MODULES_ROOT OPENCMISS_PYTHON_EXECUTABLE OPENCMISS_LIBRARIES)
set(VISIBLE_cmake_modules_GUI_ENTRIES OPENCMISS_CMAKE_MODULES_ROOT OPENCMISS_PYTHON_EXECUTABLE)
set(VISIBLE_cmake_modules_IND_GUI_ENTRIES OPENCMISS_CMAKE_MODULES_ROOT OPENCMISS_PYTHON_EXECUTABLE)
set(SETUP_PROJECTS CMAKE_MODULES MANAGE)
set(KNOWN_OPENCMISS_VERSIONS develop)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
# This ensures that CMake is new enough before anything else is done
# If its too old, the script will stop with an appropriate error message.
# The option is to either come up with a sufficiently new version yourself,
# or to build cmake using the (then generated) "cmake" target.
include(OCCMakeCheck)
# Need to make this outside the include as the return is intended for the main level
if (NOT CMAKE_COMPATIBLE)
return()
endif(NOT CMAKE_COMPATIBLE)
include(OCFunctions)
# Basic test for multi-configuration capable environments
if (MSVC OR XCODE)
set(_MULTI_CONFIG_ENV TRUE)
else ()
set(_MULTI_CONFIG_ENV FALSE)
endif ()
# Clean up GUI options
mark_as_advanced(QT_QMAKE_EXECUTABLE)
if (APPLE)
mark_as_advanced(CMAKE_OSX_ARCHITECTURES)
mark_as_advanced(CMAKE_CODEBLOCKS_EXECUTABLE)
mark_as_advanced(CMAKE_OSX_DEPLOYMENT_TARGET)
mark_as_advanced(CMAKE_OSX_SYSROOT)
endif ()
include(Options)
mark_as_advanced(OPENCMISS_SETUP_ORGANISATION)
mark_as_advanced(OPENCMISS_SETUP_BRANCH)
set(MANAGE_ORG ${OPENCMISS_SETUP_ORGANISATION})
set(CMAKE_MODULES_ORG ${OPENCMISS_SETUP_ORGANISATION})
set(MANAGE_REPO ${MANAGE_ORG}/manage)
set(CMAKE_MODULES_REPO ${CMAKE_MODULES_ORG}/cmake_modules)
set(MANAGE_BRANCH ${OPENCMISS_SETUP_BRANCH})
set(CMAKE_MODULES_BRANCH ${OPENCMISS_SETUP_BRANCH})
set(SETUP_TYPES standard libraries dependencies cmake_modules)
set_property(CACHE OPENCMISS_SETUP_TYPE PROPERTY STRINGS ${SETUP_TYPES})
if (DEFINED SETUP_TYPE)
string(TOLOWER ${SETUP_TYPE} _LOWER_SETUP_TYPE)
if (${_LOWER_SETUP_TYPE} IN_LIST SETUP_TYPES)
set(OPENCMISS_SETUP_TYPE ${_LOWER_SETUP_TYPE} CACHE STRING "The type of OpenCMISS installation to setup." FORCE)
endif ()
endif ()
set(LIB_BUILD_TYPES all iron zinc)
set_property(CACHE OPENCMISS_LIBRARIES PROPERTY STRINGS ${LIB_BUILD_TYPES})
if (DEFINED LIBRARIES)
string(TOLOWER ${LIBRARIES} _LOWER_LIBRARIES)
if (${_LOWER_LIBRARIES} IN_LIST LIB_BUILD_TYPES)
set(OPENCMISS_LIBRARIES ${_LOWER_LIBRARIES} CACHE STRING "Set which OpenCMISS libraries to build." FORCE)
endif ()
endif ()
if (OPENCMISS_PERFORM_INITIAL_BUILD)
set(OPENCMISS_VERSION "develop" CACHE STRING "The branch or tag to setup. Must be one of: ${KNOWN_OPENCMISS_VERSIONS}")
set(OPENCMISS_MULTI_ARCHITECTURE FALSE CACHE BOOL "Setup for a multi architecture build.")
if (NOT _MULTI_CONFIG_ENV)
set(OPENCMISS_CONFIG_BUILD_TYPE Release CACHE STRING "Set the configuration build type.")
set_property(CACHE OPENCMISS_CONFIG_BUILD_TYPE PROPERTY STRINGS Release RelWithDebInfo Debug MinSizeRel)
endif ()
else ()
unset(OPENCMISS_VERSION CACHE)
unset(OPENCMISS_MULTI_ARCHITECTURE CACHE)
unset(OPENCMISS_CONFIG_BUILD_TYPE CACHE)
endif ()
if (OPENCMISS_INDEPENDENT)
set(IND_MARKER _IND)
endif ()
set(_VISIBLE_LIST VISIBLE_${OPENCMISS_SETUP_TYPE}${IND_MARKER}_GUI_ENTRIES)
if (OPENCMISS_INDEPENDENT AND OPENCMISS_LIBRARIES STREQUAL zinc)
list(REMOVE_ITEM ${_VISIBLE_LIST} OPENCMISS_IRON_ROOT)
elseif (OPENCMISS_INDEPENDENT AND OPENCMISS_LIBRARIES STREQUAL iron)
list(REMOVE_ITEM ${_VISIBLE_LIST} OPENCMISS_ZINC_ROOT)
endif ()
foreach(_R ${VISIBLE_GUI_ENTRIES})
if ("${_R}" IN_LIST ${_VISIBLE_LIST})
set(${_R} "" CACHE PATH "The location of the OpenCMISS root ${_R}")
else ()
unset(${_R} CACHE)
endif ()
endforeach()
# Internalise some variables that don't have any meaning here
set(CMAKE_BUILD_TYPE "Release" CACHE INTERNAL "Internalise CMAKE_BUILD_TYPE")
set(CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE INTERNAL "Internalise CMAKE_INSTALL_PREFIX")
set(CMAKE_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES} CACHE INTERNAL "Internalise CMAKE_CONFIGURATION_TYPES")
find_package(Git)
if (GIT_FOUND)
if ( (NOT HAVE_SSH_GITHUB_ACCESS AND NOT SSH_GITHUB_ACCESS_CHECKED) OR FORCE_GITHUB_SSH_CHECK)
check_ssh_github_access(HAVE_SSH_GITHUB_ACCESS)
set(SSH_GITHUB_ACCESS_CHECKED TRUE CACHE BOOL "ssh access to github.com checked.")
mark_as_advanced(SSH_GITHUB_ACCESS_CHECKED)
message(STATUS "Have ssh access to GitHub.com: ${HAVE_SSH_GITHUB_ACCESS}")
endif ()
if (HAVE_SSH_GITHUB_ACCESS)
set(GITHUB_PROTOCOL "[email protected]:")
else ()
set(GITHUB_PROTOCOL "https://github.com/")
endif ()
set(GITHUB_EXT ".git")
else ()
set(GITHUB_PROTOCOL "https://github.com/")
endif ()
message(STATUS "Using GitHub protocol: ${GITHUB_PROTOCOL}")
set(ALL_ROOTS OPENCMISS_ROOT OPENCMISS_LIBRARIES_ROOT OPENCMISS_EXAMPLES_ROOT OPENCMISS_DEPENDENCIES_ROOT OPENCMISS_MANAGE_ROOT OPENCMISS_CMAKE_MODULES_ROOT OPENCMISS_ZINC_ROOT OPENCMISS_IRON_ROOT)
# Make all paths CMake paths:
foreach(_path_var ${${_VISIBLE_LIST}})
if (_path_var IN_LIST ALL_ROOTS)
file(TO_CMAKE_PATH "${${_path_var}}" ${_path_var})
endif ()
endforeach()
# Check sanity of configuration.
set(VALID_CONFIG TRUE)
set(ERROR_MSG)
foreach(_path_var ${${_VISIBLE_LIST}})
if (_path_var IN_LIST ALL_ROOTS AND NOT EXISTS ${${_path_var}})
set(VALID_CONFIG FALSE)
list(APPEND ERROR_MSG "Location ${_path_var}: '${${_path_var}}' does not exist")
endif ()
endforeach()
if (OPENCMISS_PERFORM_INITIAL_BUILD AND (NOT OPENCMISS_VERSION IN_LIST KNOWN_OPENCMISS_VERSIONS))
set(VALID_CONFIG FALSE)
list(APPEND ERROR_MSG "${OPENCMISS_VERSION} is not a known OpenCMISS version.")
endif ()
if (OPENCMISS_SETUP_TYPE STREQUAL "libraries")
if (NOT EXISTS ${OPENCMISS_DEPENDENCIES_INSTALL_PREFIX})
set(VALID_CONFIG FALSE)
list(APPEND ERROR_MSG "OPENCMISS_DEPENDENCIES_INSTALL_PREFIX: '${OPENCMISS_DEPENDENCIES_INSTALL_PREFIX}' does not exist.")
endif ()
if (NOT EXISTS ${OPENCMISS_CMAKE_MODULE_PATH})
set(VALID_CONFIG FALSE)
list(APPEND ERROR_MSG "OPENCMISS_CMAKE_MODULE_PATH: '${OPENCMISS_CMAKE_MODULE_PATH}' does not exist.")
endif ()
endif ()
if (NOT VALID_CONFIG)
foreach (msg ${ERROR_MSG})
message(SEND_ERROR "${msg}")
endforeach ()
message(FATAL_ERROR "Invalid configuration.")
endif ()
# Basic test for multi-configuration capable environments
if (_MULTI_CONFIG_ENV)
mark_as_advanced(CMAKE_CONFIGURATION_TYPES)
set(MULTICONFIG_BUILD_CONFIG --config $<CONFIGURATION>)
else ()
set(SINGLE_ARCHITECUTRE_BUILD_TYPE /release)
set(SINGLE_BUILD_CONFIG -DCMAKE_BUILD_TYPE=Release)
endif ()
# Everything should be valid from here onwards.
if (OPENCMISS_SETUP_TYPE STREQUAL "standard" AND NOT OPENCMISS_INDEPENDENT)
set(OPENCMISS_MANAGE_SOURCE_DIR "${OPENCMISS_ROOT}/src/manage")
set(OPENCMISS_MANAGE_BINARY_DIR "${OPENCMISS_ROOT}/build/manage${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
set(OPENCMISS_CMAKE_MODULES_SOURCE_DIR "${OPENCMISS_ROOT}/src/cmake_modules")
set(OPENCMISS_CMAKE_MODULES_BINARY_DIR "${OPENCMISS_ROOT}/build/cmake_modules${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
set(OPENCMISS_CMAKE_MODULE_PATH "${OPENCMISS_ROOT}/install/share/cmake/Modules")
elseif (OPENCMISS_SETUP_TYPE STREQUAL "standard" AND OPENCMISS_INDEPENDENT)
set(OPENCMISS_MANAGE_SOURCE_DIR "${OPENCMISS_MANAGE_ROOT}/src")
set(OPENCMISS_MANAGE_BINARY_DIR "${OPENCMISS_MANAGE_ROOT}/build${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
set(OPENCMISS_CMAKE_MODULES_SOURCE_DIR "${OPENCMISS_CMAKE_MODULES_ROOT}/src")
set(OPENCMISS_CMAKE_MODULES_BINARY_DIR "${OPENCMISS_CMAKE_MODULES_ROOT}/build${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
set(OPENCMISS_CMAKE_MODULE_PATH "${OPENCMISS_CMAKE_MODULES_ROOT}/install/share/cmake/Modules")
elseif (OPENCMISS_SETUP_TYPE STREQUAL "cmake_modules" AND OPENCMISS_INDEPENDENT)
set(OPENCMISS_CMAKE_MODULES_SOURCE_DIR "${OPENCMISS_CMAKE_MODULES_ROOT}/src")
set(OPENCMISS_CMAKE_MODULES_BINARY_DIR "${OPENCMISS_CMAKE_MODULES_ROOT}/build${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
elseif (OPENCMISS_SETUP_TYPE STREQUAL "cmake_modules" AND NOT OPENCMISS_INDEPENDENT)
set(OPENCMISS_CMAKE_MODULES_SOURCE_DIR "${OPENCMISS_CMAKE_MODULES_ROOT}/src")
set(OPENCMISS_CMAKE_MODULES_BINARY_DIR "${OPENCMISS_CMAKE_MODULES_ROOT}/build${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
elseif (OPENCMISS_SETUP_TYPE STREQUAL "dependencies" AND OPENCMISS_INDEPENDENT)
set(OPENCMISS_MANAGE_SOURCE_DIR "${OPENCMISS_MANAGE_ROOT}/src")
set(OPENCMISS_MANAGE_BINARY_DIR "${OPENCMISS_MANAGE_ROOT}/build${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
set(OPENCMISS_CMAKE_MODULES_SOURCE_DIR "${OPENCMISS_CMAKE_MODULES_ROOT}/src")
set(OPENCMISS_CMAKE_MODULES_BINARY_DIR "${OPENCMISS_CMAKE_MODULES_ROOT}/build${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
set(OPENCMISS_CMAKE_MODULE_PATH "${OPENCMISS_CMAKE_MODULES_ROOT}/install/share/cmake/Modules")
elseif (OPENCMISS_SETUP_TYPE STREQUAL "dependencies" AND NOT OPENCMISS_INDEPENDENT)
set(OPENCMISS_MANAGE_SOURCE_DIR "${OPENCMISS_DEPENDENCIES_ROOT}/src/manage")
set(OPENCMISS_MANAGE_BINARY_DIR "${OPENCMISS_DEPENDENCIES_ROOT}/build/manage${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
set(OPENCMISS_CMAKE_MODULES_SOURCE_DIR "${OPENCMISS_DEPENDENCIES_ROOT}/src/cmake_modules")
set(OPENCMISS_CMAKE_MODULES_BINARY_DIR "${OPENCMISS_DEPENDENCIES_ROOT}/build/cmake_modules${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
set(OPENCMISS_CMAKE_MODULE_PATH "${OPENCMISS_DEPENDENCIES_ROOT}/install/share/cmake/Modules")
elseif (OPENCMISS_SETUP_TYPE STREQUAL "libraries" AND NOT OPENCMISS_INDEPENDENT)
set(OPENCMISS_MANAGE_SOURCE_DIR "${OPENCMISS_LIBRARIES_ROOT}/src/manage")
set(OPENCMISS_MANAGE_BINARY_DIR "${OPENCMISS_LIBRARIES_ROOT}/build/manage${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
elseif (OPENCMISS_SETUP_TYPE STREQUAL "libraries" AND OPENCMISS_INDEPENDENT)
set(OPENCMISS_MANAGE_SOURCE_DIR "${OPENCMISS_MANAGE_ROOT}/src")
set(OPENCMISS_MANAGE_BINARY_DIR "${OPENCMISS_MANAGE_ROOT}/build${SINGLE_ARCHITECUTRE_BUILD_TYPE}")
else ()
message(FATAL_ERROR "This case is not handled: ${OPENCMISS_SETUP_TYPE} [ind=${OPENCMISS_INDEPENDENT}], something has gone wrong!")
endif ()
set(MANAGE_BUILD_CMD "")
set(MANAGE_INSTALL_CMD "")
if (OPENCMISS_INDEPENDENT)
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_INDEPENDENT_ROOTS=TRUE)
endif ()
if (OPENCMISS_PERFORM_INITIAL_BUILD)
if (NOT OPENCMISS_MULTI_ARCHITECTURE)
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_USE_ARCHITECTURE_PATH=FALSE)
endif ()
if ("${OPENCMISS_SETUP_TYPE}" STREQUAL "libraries")
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_INSTALLATION_TYPE=libraries)
endif ()
if ("${OPENCMISS_SETUP_TYPE}" STREQUAL "dependencies")
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_INSTALLATION_TYPE=dependencies)
endif ()
if ("${OPENCMISS_VERSION}" STREQUAL "develop")
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_DEVELOP_ALL=YES)
endif ()
if (NOT _MULTI_CONFIG_ENV)
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_BUILD_TYPE=${OPENCMISS_CONFIG_BUILD_TYPE})
endif ()
if ("${OPENCMISS_LIBRARIES}" STREQUAL "iron" AND NOT "${OPENCMISS_SETUP_TYPE}" STREQUAL "dependencies")
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_IRON_ONLY=TRUE)
elseif ("${OPENCMISS_LIBRARIES}" STREQUAL "iron" AND "${OPENCMISS_SETUP_TYPE}" STREQUAL "dependencies")
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_IRON_DEPENDENCIES_ONLY=TRUE)
endif ()
if ("${OPENCMISS_LIBRARIES}" STREQUAL "zinc" AND NOT "${OPENCMISS_SETUP_TYPE}" STREQUAL "dependencies")
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_ZINC_ONLY=TRUE)
elseif ("${OPENCMISS_LIBRARIES}" STREQUAL "zinc" AND "${OPENCMISS_SETUP_TYPE}" STREQUAL "dependencies")
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_ZINC_DEPENDENCIES_ONLY=TRUE)
endif ()
if (OPENCMISS_INSTRUMENTATION)
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_INSTRUMENTATION=${OPENCMISS_INSTRUMENTATION})
list(APPEND CMAKE_MODULES_ARGS -DOPENCMISS_INSTRUMENTATION=${OPENCMISS_INSTRUMENTATION})
endif ()
foreach(_E ${${_VISIBLE_LIST}})
if (NOT "${_E}" STREQUAL "OPENCMISS_ROOT" AND NOT "${_E}" STREQUAL "OPENCMISS_MANAGE_ROOT" AND NOT "${_E}" STREQUAL "OPENCMISS_LIBRARIES" AND NOT "${_E}" STREQUAL "OPENCMISS_CMAKE_MODULES_ROOT")
list(APPEND MANAGE_CONFIGURE_ARGS -D${_E}=${${_E}})
endif ()
endforeach()
if (OPENCMISS_SETUP_TYPE STREQUAL "standard" AND OPENCMISS_INDEPENDENT)
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_CMAKE_MODULE_PATH=${OPENCMISS_CMAKE_MODULE_PATH})
list(APPEND CMAKE_MODULES_ARGS -DINSTALL_PREFIX=${OPENCMISS_CMAKE_MODULES_ROOT}/install)
elseif (OPENCMISS_SETUP_TYPE STREQUAL "standard" AND NOT OPENCMISS_INDEPENDENT)
elseif (OPENCMISS_SETUP_TYPE STREQUAL "cmake_modules" AND OPENCMISS_INDEPENDENT)
list(APPEND CMAKE_MODULES_ARGS -DINSTALL_PREFIX=${OPENCMISS_CMAKE_MODULES_ROOT}/install)
elseif (OPENCMISS_SETUP_TYPE STREQUAL "cmake_modules" AND NOT OPENCMISS_INDEPENDENT)
list(APPEND CMAKE_MODULES_ARGS -DINSTALL_PREFIX=${OPENCMISS_CMAKE_MODULES_ROOT}/install)
elseif (OPENCMISS_SETUP_TYPE STREQUAL "dependencies" AND OPENCMISS_INDEPENDENT)
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_CMAKE_MODULE_PATH=${OPENCMISS_CMAKE_MODULE_PATH})
list(APPEND CMAKE_MODULES_ARGS -DINSTALL_PREFIX=${OPENCMISS_CMAKE_MODULES_ROOT}/install)
elseif (OPENCMISS_SETUP_TYPE STREQUAL "dependencies" AND NOT OPENCMISS_INDEPENDENT)
elseif (OPENCMISS_SETUP_TYPE STREQUAL "libraries" AND OPENCMISS_INDEPENDENT)
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_CMAKE_MODULE_PATH=${OPENCMISS_CMAKE_MODULE_PATH})
elseif (OPENCMISS_SETUP_TYPE STREQUAL "libraries" AND NOT OPENCMISS_INDEPENDENT)
list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_CMAKE_MODULE_PATH=${OPENCMISS_CMAKE_MODULE_PATH})
else ()
#list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_LIBRARIES_ROOT=${OPENCMISS_LIBRARIES_ROOT})
#list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_DEPENDENCIES_ROOT=${OPENCMISS_DEPENDENCIES_ROOT})
#list(APPEND MANAGE_CONFIGURE_ARGS -DOPENCMISS_CMAKE_MODULES_ROOT=${OPENCMISS_CMAKE_MODULES_ROOT})
message(FATAL_ERROR "This case is not handled when performing initial build: ${OPENCMISS_SETUP_TYPE} [ind=${OPENCMISS_INDEPENDENT}], something has gone wrong!")
endif ()
set(MANAGE_BUILD_CMD ${CMAKE_COMMAND} --build . ${MULTICONFIG_BUILD_CONFIG})
# set(MANAGE_BUILD_CMD "") # Remove me soon
endif ()
foreach (SETUP_PROJECT ${SETUP_PROJECTS})
set(GITHUB_BRANCH ${${SETUP_PROJECT}_BRANCH})
set(GITHUB_REPO ${${SETUP_PROJECT}_REPO})
if ("${OPENCMISS_VERSION}" STREQUAL "develop")
set(GITHUB_BRANCH ${OPENCMISS_VERSION})
endif ()
set(GITHUB_REPO_URL ${GITHUB_PROTOCOL}${GITHUB_REPO}${GITHUB_EXT})
if (GIT_FOUND)
set(DOWNLOAD_${SETUP_PROJECT}_CMD
GIT_REPOSITORY ${GITHUB_REPO_URL}
GIT_TAG ${GITHUB_BRANCH}
)
else ()
set(DOWNLOAD_${SETUP_PROJECT}_CMD
URL ${GITHUB_REPO_URL}/archive/${GITHUB_BRANCH}.zip
)
endif ()
endforeach ()
set(_DEPENDS_MODULES)
if (NOT OPENCMISS_SETUP_TYPE STREQUAL "libraries")
if (EXISTS ${OPENCMISS_CMAKE_MODULES_SOURCE_DIR}/CMakeLists.txt)
message(STATUS "Disabling download of cmake modules.")
unset(DOWNLOAD_CMAKE_MODULES_CMD)
endif ()
set(_DEPENDS_MODULES DEPENDS setup_cmake_modules)
ExternalProject_Add(setup_cmake_modules
${DOWNLOAD_CMAKE_MODULES_CMD}
SOURCE_DIR "${OPENCMISS_CMAKE_MODULES_SOURCE_DIR}"
BINARY_DIR "${OPENCMISS_CMAKE_MODULES_BINARY_DIR}"
CMAKE_COMMAND ${CMAKE_COMMAND}
CMAKE_ARGS ${SINGLE_BUILD_CONFIG} ${CMAKE_MODULES_ARGS}
BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install ${MULTICONFIG_BUILD_CONFIG}
)
endif ()
if (NOT OPENCMISS_SETUP_TYPE STREQUAL "cmake_modules")
if (EXISTS ${OPENCMISS_MANAGE_SOURCE_DIR}/CMakeLists.txt)
message(STATUS "Disabling download of manage.")
unset(DOWNLOAD_MANAGE_CMD)
endif ()
ExternalProject_Add(setup_manage
${_DEPENDS_MODULES}
${DOWNLOAD_MANAGE_CMD}
SOURCE_DIR "${OPENCMISS_MANAGE_SOURCE_DIR}"
BINARY_DIR "${OPENCMISS_MANAGE_BINARY_DIR}"
CMAKE_COMMAND ${CMAKE_COMMAND}
CMAKE_ARGS ${SINGLE_BUILD_CONFIG} ${MANAGE_CONFIGURE_ARGS}
BUILD_COMMAND "${MANAGE_BUILD_CMD}"
INSTALL_COMMAND "${MANAGE_INSTALL_CMD}"
)
if (NOT OPENCMISS_SETUP_TYPE STREQUAL "dependencies")
add_custom_target(keytests
DEPENDS setup_manage
COMMAND ${CMAKE_COMMAND} --build . --target keytests --config $<CONFIG>
COMMENT "Running keytests"
WORKING_DIRECTORY ${OPENCMISS_MANAGE_BINARY_DIR}
VERBATIM
)
endif ()
endif ()
set(PRINT_SUMMARY TRUE)
if (PRINT_SUMMARY)
message(STATUS "@")
message(STATUS "@@@@@@@@@@@@@@@@@@@@@@@@ SUMMARY @@@@@@@@@@@@@@@@@@@@@@@@")
message(STATUS "@")
message(STATUS "@ OPENCMISS_SETUP_TYPE: ${OPENCMISS_SETUP_TYPE}")
message(STATUS "@ OPENCMISS_INDEPENDENT: ${OPENCMISS_INDEPENDENT}")
message(STATUS "@ OPENCMISS_PERFORM_INITIAL_BUILD: ${OPENCMISS_PERFORM_INITIAL_BUILD}")
if (OPENCMISS_PERFORM_INITIAL_BUILD)
message(STATUS "@ OPENCMISS_VERSION: ${OPENCMISS_VERSION}")
message(STATUS "@ OPENCMISS_MULTI_ARCHITECTURE: ${OPENCMISS_MULTI_ARCHITECTURE}")
if (NOT _MULTI_CONFIG_ENV)
message(STATUS "@ OPENCMISS_CONFIG_BUILD_TYPE: ${OPENCMISS_CONFIG_BUILD_TYPE}")
endif ()
endif ()
message(STATUS "@")
foreach(_E ${${_VISIBLE_LIST}})
message(STATUS "@ ${_E}: ${${_E}}")
endforeach()
message(STATUS "@")
if (NOT ${OPENCMISS_SETUP_TYPE} STREQUAL libraries)
message(STATUS "@ OPENCMISS_CMAKE_MODULES_SOURCE_DIR: ${OPENCMISS_CMAKE_MODULES_SOURCE_DIR}")
message(STATUS "@ OPENCMISS_CMAKE_MODULES_BINARY_DIR: ${OPENCMISS_CMAKE_MODULES_BINARY_DIR}")
else ()
endif ()
message(STATUS "@ OPENCMISS_CMAKE_MODULE_PATH: ${OPENCMISS_CMAKE_MODULE_PATH}")
message(STATUS "@")
if (OPENCMISS_PERFORM_INITIAL_BUILD)
message(STATUS "@ MANAGE_CONFIGURE_ARGS: ${MANAGE_CONFIGURE_ARGS}")
message(STATUS "@")
endif ()
message(STATUS "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
message(STATUS "@")
endif ()