Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
SuperBuild.cmake
Go to the documentation of this file.
1 #-----------------------------------------------------------------------------
2 # Convenient macro allowing to download a file
3 #-----------------------------------------------------------------------------
4 
5 if(NOT MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL)
6  set(MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL http://mitk.org/download/thirdparty)
7 endif()
8 
9 macro(downloadFile url dest)
10  file(DOWNLOAD ${url} ${dest} STATUS status)
11  list(GET status 0 error_code)
12  list(GET status 1 error_msg)
13  if(error_code)
14  message(FATAL_ERROR "error: Failed to download ${url} - ${error_msg}")
15  endif()
16 endmacro()
17 
18 #-----------------------------------------------------------------------------
19 # MITK Prerequisites
20 #-----------------------------------------------------------------------------
21 
22 if(UNIX AND NOT APPLE)
23 
25 
26  # Check for libxt-dev
27  mitkFunctionCheckPackageHeader(StringDefs.h libxt-dev /usr/include/X11/)
28 
29  # Check for libtiff4-dev
30  mitkFunctionCheckPackageHeader(tiff.h libtiff4-dev)
31 
32 endif()
33 
34 # We need a proper patch program. On Linux and MacOS, we assume
35 # that "patch" is available. On Windows, we download patch.exe
36 # if not patch program is found.
37 find_program(PATCH_COMMAND patch)
38 if((NOT PATCH_COMMAND OR NOT EXISTS ${PATCH_COMMAND}) AND WIN32)
39  downloadFile(${MITK_THIRDPARTY_DOWNLOAD_PREFIX_URL}/patch.exe
40  ${CMAKE_CURRENT_BINARY_DIR}/patch.exe)
41  find_program(PATCH_COMMAND patch ${CMAKE_CURRENT_BINARY_DIR})
42 endif()
43 if(NOT PATCH_COMMAND)
44  message(FATAL_ERROR "No patch program found.")
45 endif()
46 
47 #-----------------------------------------------------------------------------
48 # ExternalProjects
49 #-----------------------------------------------------------------------------
50 
51 get_property(external_projects GLOBAL PROPERTY MITK_EXTERNAL_PROJECTS)
52 
53 if(MITK_CTEST_SCRIPT_MODE)
54  # Write a file containing the list of enabled external project targets.
55  # This file can be read by a ctest script to separately build projects.
56  set(SUPERBUILD_TARGETS )
57  foreach(proj ${external_projects})
58  if(MITK_USE_${proj})
59  list(APPEND SUPERBUILD_TARGETS ${proj})
60  endif()
61  endforeach()
62  file(WRITE "${CMAKE_BINARY_DIR}/SuperBuildTargets.cmake" "set(SUPERBUILD_TARGETS ${SUPERBUILD_TARGETS})")
63 endif()
64 
65 # A list of "nice" external projects, playing well together with CMake
66 set(nice_external_projects ${external_projects})
67 list(REMOVE_ITEM nice_external_projects Boost)
68 foreach(proj ${nice_external_projects})
69  if(MITK_USE_${proj})
70  set(EXTERNAL_${proj}_DIR "${${proj}_DIR}" CACHE PATH "Path to ${proj} build directory")
71  mark_as_advanced(EXTERNAL_${proj}_DIR)
72  if(EXTERNAL_${proj}_DIR)
73  set(${proj}_DIR ${EXTERNAL_${proj}_DIR})
74  endif()
75  endif()
76 endforeach()
77 
78 set(EXTERNAL_BOOST_ROOT "${BOOST_ROOT}" CACHE PATH "Path to Boost directory")
79 mark_as_advanced(EXTERNAL_BOOST_ROOT)
80 if(EXTERNAL_BOOST_ROOT)
81  set(BOOST_ROOT ${EXTERNAL_BOOST_ROOT})
82 endif()
83 
84 # Setup file for setting custom ctest vars
85 configure_file(
86  CMake/SuperbuildCTestCustom.cmake.in
87  ${MITK_BINARY_DIR}/CTestCustom.cmake
88  @ONLY
89 )
90 
91 if(BUILD_TESTING)
92  set(EXTERNAL_MITK_DATA_DIR "${MITK_DATA_DIR}" CACHE PATH "Path to the MITK data directory")
93  mark_as_advanced(EXTERNAL_MITK_DATA_DIR)
94  if(EXTERNAL_MITK_DATA_DIR)
95  set(MITK_DATA_DIR ${EXTERNAL_MITK_DATA_DIR})
96  endif()
97 endif()
98 
99 #-----------------------------------------------------------------------------
100 # External project settings
101 #-----------------------------------------------------------------------------
102 
103 include(ExternalProject)
104 include(mitkMacroQueryCustomEPVars)
105 include(mitkFunctionInstallExternalCMakeProject)
106 include(mitkFunctionCleanExternalProject)
107 
108 option(MITK_AUTOCLEAN_EXTERNAL_PROJECTS "Experimental: Clean external project builds if updated" OFF)
109 mark_as_advanced(MITK_AUTOCLEAN_EXTERNAL_PROJECTS)
110 
111 set(ep_prefix "${CMAKE_BINARY_DIR}/ep")
112 set_property(DIRECTORY PROPERTY EP_PREFIX ${ep_prefix})
113 
114 # Compute -G arg for configuring external projects with the same CMake generator:
115 if(CMAKE_EXTRA_GENERATOR)
116  set(gen "${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}")
117 else()
118  set(gen "${CMAKE_GENERATOR}")
119 endif()
120 
121 set(gen_platform ${CMAKE_GENERATOR_PLATFORM})
122 
123 # Use this value where semi-colons are needed in ep_add args:
124 set(sep "^^")
125 
126 ##
127 
128 if(MSVC_VERSION)
129  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /bigobj /MP")
130  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /MP")
131 endif()
132 
133 if(MITK_USE_Boost_LIBRARIES)
134  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DBOOST_ALL_DYN_LINK")
135 endif()
136 
137 # This is a workaround for passing linker flags
138 # actually down to the linker invocation
139 set(_cmake_required_flags_orig ${CMAKE_REQUIRED_FLAGS})
140 set(CMAKE_REQUIRED_FLAGS "-Wl,-rpath")
141 mitkFunctionCheckCompilerFlags(${CMAKE_REQUIRED_FLAGS} _has_rpath_flag)
142 set(CMAKE_REQUIRED_FLAGS ${_cmake_required_flags_orig})
143 
144 set(_install_rpath_linkflag )
145 if(_has_rpath_flag)
146  if(APPLE)
147  set(_install_rpath_linkflag "-Wl,-rpath,@loader_path/../lib")
148  else()
149  set(_install_rpath_linkflag "-Wl,-rpath='$ORIGIN/../lib'")
150  endif()
151 endif()
152 
153 set(_install_rpath)
154 if(APPLE)
155  set(_install_rpath "@loader_path/../lib")
156 elseif(UNIX)
157  # this work for libraries as well as executables
158  set(_install_rpath "\$ORIGIN/../lib")
159 endif()
160 
161 set(ep_common_args
162  -DCMAKE_CXX_EXTENSIONS:STRING=${CMAKE_CXX_EXTENSIONS}
163  -DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}
164  -DCMAKE_CXX_STANDARD_REQUIRED:BOOL=${CMAKE_CXX_STANDARD_REQUIRED}
165  -DCMAKE_MACOSX_RPATH:BOOL=TRUE
166  "-DCMAKE_INSTALL_RPATH:STRING=${_install_rpath}"
167  -DBUILD_TESTING:BOOL=OFF
168  -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
169  -DBUILD_SHARED_LIBS:BOOL=ON
170  -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
171  -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
172  -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
173  -DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}
174  "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} ${MITK_CXX14_FLAG}"
175  #debug flags
176  -DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG}
177  -DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG}
178  #release flags
179  -DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE}
180  -DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE}
181  #relwithdebinfo
182  -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
183  -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
184  #link flags
185  -DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS}
186  -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS}
187  -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS}
188 )
189 
190 if(MSVC_VERSION)
191  list(APPEND ep_common_args
192  -DCMAKE_DEBUG_POSTFIX:STRING=d
193  )
194 
195  set(DCMTK_CMAKE_DEBUG_POSTFIX d)
196 endif()
197 
198 set(ep_common_cache_args
199 )
200 
201 set(ep_common_cache_default_args
202  "-DCMAKE_PREFIX_PATH:PATH=<INSTALL_DIR>;${CMAKE_PREFIX_PATH}"
203  "-DCMAKE_INCLUDE_PATH:PATH=${CMAKE_INCLUDE_PATH}"
204  "-DCMAKE_LIBRARY_PATH:PATH=${CMAKE_LIBRARY_PATH}"
205 )
206 
207 # Pass the CMAKE_OSX variables to external projects
208 if(APPLE)
209  set(MAC_OSX_ARCHITECTURE_ARGS
210  -DCMAKE_OSX_ARCHITECTURES:PATH=${CMAKE_OSX_ARCHITECTURES}
211  -DCMAKE_OSX_DEPLOYMENT_TARGET:PATH=${CMAKE_OSX_DEPLOYMENT_TARGET}
212  -DCMAKE_OSX_SYSROOT:PATH=${CMAKE_OSX_SYSROOT}
213  )
214  set(ep_common_args
215  ${MAC_OSX_ARCHITECTURE_ARGS}
216  ${ep_common_args}
217  )
218 endif()
219 
220 set(mitk_superbuild_ep_args)
221 set(mitk_depends )
222 
223 # Include external projects
224 include(CMakeExternals/MITKData.cmake)
225 foreach(p ${external_projects})
226  set(p_hash "")
227 
228  set(p_file "${CMAKE_SOURCE_DIR}/CMakeExternals/${p}.cmake")
229  if(EXISTS ${p_file})
230  file(MD5 ${p_file} p_hash)
231  else()
232  foreach(MITK_EXTENSION_DIR ${MITK_EXTENSION_DIRS})
233  get_filename_component(MITK_EXTENSION_DIR ${MITK_EXTENSION_DIR} ABSOLUTE)
234  set(MITK_CMAKE_EXTERNALS_EXTENSION_DIR ${MITK_EXTENSION_DIR}/CMakeExternals)
235  set(p_file "${MITK_CMAKE_EXTERNALS_EXTENSION_DIR}/${p}.cmake")
236  if(EXISTS ${p_file})
237  file(MD5 ${p_file} p_hash)
238  break()
239  endif()
240  endforeach()
241  endif()
242 
243  if(p_hash)
244  set(p_hash_file "${ep_prefix}/tmp/${p}-hash.txt")
245  if(MITK_AUTOCLEAN_EXTERNAL_PROJECTS)
246  if(EXISTS ${p_hash_file})
247  file(READ ${p_hash_file} p_prev_hash)
248  if(NOT p_hash STREQUAL p_prev_hash)
249  mitkCleanExternalProject(${p})
250  endif()
251  endif()
252  endif()
253  file(WRITE ${p_hash_file} ${p_hash})
254  endif()
255 
256  include(${p_file} OPTIONAL)
257 
258  list(APPEND mitk_superbuild_ep_args
259  -DMITK_USE_${p}:BOOL=${MITK_USE_${p}}
260  )
261  get_property(_package GLOBAL PROPERTY MITK_${p}_PACKAGE)
262  if(_package)
263  list(APPEND mitk_superbuild_ep_args -D${p}_DIR:PATH=${${p}_DIR})
264  endif()
265 
266  list(APPEND mitk_depends ${${p}_DEPENDS})
267 endforeach()
268 if (SWIG_EXECUTABLE)
269  list(APPEND mitk_superbuild_ep_args -DSWIG_EXECUTABLE=${SWIG_EXECUTABLE})
270 endif()
271 
272 #-----------------------------------------------------------------------------
273 # Set superbuild boolean args
274 #-----------------------------------------------------------------------------
275 
276 set(mitk_cmake_boolean_args
277  BUILD_SHARED_LIBS
278  WITH_COVERAGE
279  BUILD_TESTING
280  MITK_BUILD_ALL_PLUGINS
281  MITK_BUILD_ALL_APPS
282  MITK_BUILD_EXAMPLES
283  MITK_USE_Qt5
284  MITK_USE_SYSTEM_Boost
285  MITK_USE_BLUEBERRY
286  MITK_USE_OpenCL
287  MITK_USE_OpenMP
288  MITK_ENABLE_PIC_READER
289  )
290 
291 #-----------------------------------------------------------------------------
292 # Create the final variable containing superbuild boolean args
293 #-----------------------------------------------------------------------------
294 
295 set(mitk_superbuild_boolean_args)
296 foreach(mitk_cmake_arg ${mitk_cmake_boolean_args})
297  list(APPEND mitk_superbuild_boolean_args -D${mitk_cmake_arg}:BOOL=${${mitk_cmake_arg}})
298 endforeach()
299 
300 if(MITK_BUILD_ALL_PLUGINS)
301  list(APPEND mitk_superbuild_boolean_args -DBLUEBERRY_BUILD_ALL_PLUGINS:BOOL=ON)
302 endif()
303 
304 #-----------------------------------------------------------------------------
305 # MITK Utilities
306 #-----------------------------------------------------------------------------
307 
308 set(proj MITK-Utilities)
309 ExternalProject_Add(${proj}
310  DOWNLOAD_COMMAND ""
311  CONFIGURE_COMMAND ""
312  BUILD_COMMAND ""
313  INSTALL_COMMAND ""
314  DEPENDS
315  ${mitk_depends}
316 )
317 #-----------------------------------------------------------------------------
318 # Additional MITK CXX/C Flags
319 #-----------------------------------------------------------------------------
320 
321 set(MITK_ADDITIONAL_C_FLAGS "" CACHE STRING "Additional C Flags for MITK")
322 set(MITK_ADDITIONAL_C_FLAGS_RELEASE "" CACHE STRING "Additional Release C Flags for MITK")
323 set(MITK_ADDITIONAL_C_FLAGS_DEBUG "" CACHE STRING "Additional Debug C Flags for MITK")
324 mark_as_advanced(MITK_ADDITIONAL_C_FLAGS MITK_ADDITIONAL_C_FLAGS_DEBUG MITK_ADDITIONAL_C_FLAGS_RELEASE)
325 
326 set(MITK_ADDITIONAL_CXX_FLAGS "" CACHE STRING "Additional CXX Flags for MITK")
327 set(MITK_ADDITIONAL_CXX_FLAGS_RELEASE "" CACHE STRING "Additional Release CXX Flags for MITK")
328 set(MITK_ADDITIONAL_CXX_FLAGS_DEBUG "" CACHE STRING "Additional Debug CXX Flags for MITK")
329 mark_as_advanced(MITK_ADDITIONAL_CXX_FLAGS MITK_ADDITIONAL_CXX_FLAGS_DEBUG MITK_ADDITIONAL_CXX_FLAGS_RELEASE)
330 
331 set(MITK_ADDITIONAL_EXE_LINKER_FLAGS "" CACHE STRING "Additional exe linker flags for MITK")
332 set(MITK_ADDITIONAL_SHARED_LINKER_FLAGS "" CACHE STRING "Additional shared linker flags for MITK")
333 set(MITK_ADDITIONAL_MODULE_LINKER_FLAGS "" CACHE STRING "Additional module linker flags for MITK")
334 mark_as_advanced(MITK_ADDITIONAL_EXE_LINKER_FLAGS MITK_ADDITIONAL_SHARED_LINKER_FLAGS MITK_ADDITIONAL_MODULE_LINKER_FLAGS)
335 
336 #-----------------------------------------------------------------------------
337 # MITK Configure
338 #-----------------------------------------------------------------------------
339 
340 if(MITK_INITIAL_CACHE_FILE)
341  set(mitk_initial_cache_arg -C "${MITK_INITIAL_CACHE_FILE}")
342 endif()
343 
344 set(mitk_optional_cache_args )
345 foreach(type RUNTIME ARCHIVE LIBRARY)
346  if(DEFINED CTK_PLUGIN_${type}_OUTPUT_DIRECTORY)
347  list(APPEND mitk_optional_cache_args -DCTK_PLUGIN_${type}_OUTPUT_DIRECTORY:PATH=${CTK_PLUGIN_${type}_OUTPUT_DIRECTORY})
348  endif()
349 endforeach()
350 
351 # Optional python variables
352 if(MITK_USE_Python3)
353  list(APPEND mitk_optional_cache_args
354  -DMITK_USE_Python3:BOOL=${MITK_USE_Python3}
355  "-DPython3_EXECUTABLE:FILEPATH=${Python3_EXECUTABLE}"
356  "-DPython3_INCLUDE_DIR:PATH=${Python3_INCLUDE_DIRS}"
357  "-DPython3_LIBRARY:FILEPATH=${Python3_LIBRARY}"
358  "-DPython3_STDLIB:FILEPATH=${Python3_STDLIB}"
359  "-DPython3_SITELIB:FILEPATH=${Python3_SITELIB}"
360  )
361 endif()
362 
363 if(OPENSSL_ROOT_DIR)
364  list(APPEND mitk_optional_cache_args
365  "-DOPENSSL_ROOT_DIR:PATH=${OPENSSL_ROOT_DIR}"
366  )
367 endif()
368 
369 if(CMAKE_FRAMEWORK_PATH)
370  list(APPEND mitk_optional_cache_args
371  "-DCMAKE_FRAMEWORK_PATH:PATH=${CMAKE_FRAMEWORK_PATH}"
372  )
373 endif()
374 
375 if(Eigen_INCLUDE_DIR)
376  list(APPEND mitk_optional_cache_args
377  -DEigen_INCLUDE_DIR:PATH=${Eigen_INCLUDE_DIR}
378  )
379 endif()
380 
381 # Optional pass through of Doxygen
382 if(DOXYGEN_EXECUTABLE)
383  list(APPEND mitk_optional_cache_args
384  -DDOXYGEN_EXECUTABLE:FILEPATH=${DOXYGEN_EXECUTABLE}
385  )
386 endif()
387 
388 set(proj MITK-Configure)
389 
390 ExternalProject_Add(${proj}
391  LIST_SEPARATOR ${sep}
392  DOWNLOAD_COMMAND ""
393  CMAKE_GENERATOR ${gen}
394  CMAKE_GENERATOR_PLATFORM ${gen_platform}
395  CMAKE_CACHE_ARGS
396  # --------------- Build options ----------------
397  -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
398  -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
399  "-DCMAKE_PREFIX_PATH:PATH=${ep_prefix};${CMAKE_PREFIX_PATH}"
400  "-DCMAKE_LIBRARY_PATH:PATH=${CMAKE_LIBRARY_PATH}"
401  "-DCMAKE_INCLUDE_PATH:PATH=${CMAKE_INCLUDE_PATH}"
402  # --------------- Compile options ----------------
403  -DCMAKE_CXX_EXTENSIONS:STRING=${CMAKE_CXX_EXTENSIONS}
404  -DCMAKE_CXX_STANDARD:STRING=${CMAKE_CXX_STANDARD}
405  -DCMAKE_CXX_STANDARD_REQUIRED:BOOL=${CMAKE_CXX_STANDARD_REQUIRED}
406  -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
407  -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
408  "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS} ${MITK_ADDITIONAL_C_FLAGS}"
409  "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS} ${MITK_ADDITIONAL_CXX_FLAGS}"
410  # debug flags
411  "-DCMAKE_CXX_FLAGS_DEBUG:STRING=${CMAKE_CXX_FLAGS_DEBUG} ${MITK_ADDITIONAL_CXX_FLAGS_DEBUG}"
412  "-DCMAKE_C_FLAGS_DEBUG:STRING=${CMAKE_C_FLAGS_DEBUG} ${MITK_ADDITIONAL_C_FLAGS_DEBUG}"
413  # release flags
414  "-DCMAKE_CXX_FLAGS_RELEASE:STRING=${CMAKE_CXX_FLAGS_RELEASE} ${MITK_ADDITIONAL_CXX_FLAGS_RELEASE}"
415  "-DCMAKE_C_FLAGS_RELEASE:STRING=${CMAKE_C_FLAGS_RELEASE} ${MITK_ADDITIONAL_C_FLAGS_RELEASE}"
416  # relwithdebinfo
417  -DCMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_CXX_FLAGS_RELWITHDEBINFO}
418  -DCMAKE_C_FLAGS_RELWITHDEBINFO:STRING=${CMAKE_C_FLAGS_RELWITHDEBINFO}
419  # link flags
420  "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_EXE_LINKER_FLAGS} ${MITK_ADDITIONAL_EXE_LINKER_FLAGS}"
421  "-DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_SHARED_LINKER_FLAGS} ${MITK_ADDITIONAL_SHARED_LINKER_FLAGS}"
422  "-DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS} ${MITK_ADDITIONAL_MODULE_LINKER_FLAGS}"
423  # Output directories
424  -DMITK_CMAKE_LIBRARY_OUTPUT_DIRECTORY:PATH=${MITK_CMAKE_LIBRARY_OUTPUT_DIRECTORY}
425  -DMITK_CMAKE_RUNTIME_OUTPUT_DIRECTORY:PATH=${MITK_CMAKE_RUNTIME_OUTPUT_DIRECTORY}
426  -DMITK_CMAKE_ARCHIVE_OUTPUT_DIRECTORY:PATH=${MITK_CMAKE_ARCHIVE_OUTPUT_DIRECTORY}
427  # ------------- Boolean build options --------------
428  ${mitk_superbuild_boolean_args}
429  ${mitk_optional_cache_args}
430  -DMITK_USE_SUPERBUILD:BOOL=OFF
431  -DMITK_BUILD_CONFIGURATION:STRING=${MITK_BUILD_CONFIGURATION}
432  -DMITK_FAST_TESTING:BOOL=${MITK_FAST_TESTING}
433  -DMITK_XVFB_TESTING:BOOL=${MITK_XVFB_TESTING}
434  -DCTEST_USE_LAUNCHERS:BOOL=${CTEST_USE_LAUNCHERS}
435  # ----------------- Miscellaneous ---------------
436  -DCMAKE_LIBRARY_PATH:PATH=${CMAKE_LIBRARY_PATH}
437  -DCMAKE_INCLUDE_PATH:PATH=${CMAKE_INCLUDE_PATH}
438  -DMITK_CTEST_SCRIPT_MODE:STRING=${MITK_CTEST_SCRIPT_MODE}
439  -DMITK_SUPERBUILD_BINARY_DIR:PATH=${MITK_BINARY_DIR}
440  -DMITK_MODULES_TO_BUILD:INTERNAL=${MITK_MODULES_TO_BUILD}
441  -DMITK_WHITELIST:STRING=${MITK_WHITELIST}
442  -DMITK_WHITELISTS_EXTERNAL_PATH:STRING=${MITK_WHITELISTS_EXTERNAL_PATH}
443  -DMITK_WHITELISTS_INTERNAL_PATH:STRING=${MITK_WHITELISTS_INTERNAL_PATH}
444  -DMITK_EXTENSION_DIRS:STRING=${MITK_EXTENSION_DIRS}
445  -DMITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_INTEGRAL_PIXEL_TYPES}
446  -DMITK_ACCESSBYITK_FLOATING_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_FLOATING_PIXEL_TYPES}
447  -DMITK_ACCESSBYITK_COMPOSITE_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_COMPOSITE_PIXEL_TYPES}
448  -DMITK_ACCESSBYITK_VECTOR_PIXEL_TYPES:STRING=${MITK_ACCESSBYITK_VECTOR_PIXEL_TYPES}
449  -DMITK_ACCESSBYITK_DIMENSIONS:STRING=${MITK_ACCESSBYITK_DIMENSIONS}
450  -DMITK_CUSTOM_REVISION_DESC:STRING=${MITK_CUSTOM_REVISION_DESC}
451  # --------------- External project options ---------------
452  -DMITK_DATA_DIR:PATH=${MITK_DATA_DIR}
453  -DMITK_EXTERNAL_PROJECT_PREFIX:PATH=${ep_prefix}
454  -DCppMicroServices_DIR:PATH=${CppMicroServices_DIR}
455  -DDCMTK_CMAKE_DEBUG_POSTFIX:STRING=${DCMTK_CMAKE_DEBUG_POSTFIX}
456  -DBOOST_ROOT:PATH=${BOOST_ROOT}
457  -DBOOST_LIBRARYDIR:PATH=${BOOST_LIBRARYDIR}
458  -DMITK_USE_Boost_LIBRARIES:STRING=${MITK_USE_Boost_LIBRARIES}
459  -DQt5_DIR:PATH=${Qt5_DIR}
460  CMAKE_ARGS
461  ${mitk_initial_cache_arg}
462  ${MAC_OSX_ARCHITECTURE_ARGS}
463  ${mitk_superbuild_ep_args}
464  SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
465  BINARY_DIR ${CMAKE_BINARY_DIR}/MITK-build
466  BUILD_COMMAND ""
467  INSTALL_COMMAND ""
468  DEPENDS
469  MITK-Utilities
470  )
471 
472 mitkFunctionInstallExternalCMakeProject(${proj})
473 
474 #-----------------------------------------------------------------------------
475 # MITK
476 #-----------------------------------------------------------------------------
477 
478 if(CMAKE_GENERATOR MATCHES ".*Makefiles.*")
479  set(mitk_build_cmd "$(MAKE)")
480 else()
481  set(mitk_build_cmd ${CMAKE_COMMAND} --build ${CMAKE_CURRENT_BINARY_DIR}/MITK-build --config ${CMAKE_CFG_INTDIR})
482 endif()
483 
484 if(NOT DEFINED SUPERBUILD_EXCLUDE_MITKBUILD_TARGET OR NOT SUPERBUILD_EXCLUDE_MITKBUILD_TARGET)
485  set(MITKBUILD_TARGET_ALL_OPTION "ALL")
486 else()
487  set(MITKBUILD_TARGET_ALL_OPTION "")
488 endif()
489 
490 add_custom_target(MITK-build ${MITKBUILD_TARGET_ALL_OPTION}
491  COMMAND ${mitk_build_cmd}
492  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/MITK-build
493  DEPENDS MITK-Configure
494  )
495 
496 #-----------------------------------------------------------------------------
497 # Custom target allowing to drive the build of the MITK project itself
498 #-----------------------------------------------------------------------------
499 
500 add_custom_target(MITK
501  COMMAND ${mitk_build_cmd}
502  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/MITK-build
503 )
504 
#define MITK_DATA_DIR
mitkFunctionCheckPackageHeader(_header, _provider)
downloadFile(url, dest)
const std::string FILEPATH