SuperBuild.cmake 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. SET(cmake_version_required "2.8")
  2. SET(cmake_version_required_dash "2-8")
  3. CMAKE_MINIMUM_REQUIRED(VERSION ${cmake_version_required})
  4. #
  5. # CTK_QMAKE_EXECUTABLE
  6. # CTK_KWSTYLE_EXECUTABLE
  7. #
  8. #-----------------------------------------------------------------------------
  9. # Enable and setup External project global properties
  10. #
  11. INCLUDE(ExternalProject)
  12. SET(ep_base "${CMAKE_BINARY_DIR}/CMakeExternals")
  13. SET_PROPERTY(DIRECTORY PROPERTY EP_BASE ${ep_base})
  14. SET(ep_install_dir ${ep_base}/Install)
  15. #SET(ep_build_dir ${ep_base}/Build)
  16. #SET(ep_parallelism_level)
  17. SET(ep_build_shared_libs ON)
  18. SET(ep_build_testing OFF)
  19. SET(ep_common_args
  20. -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
  21. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  22. -DBUILD_TESTING:BOOL=${ep_build_testing}
  23. )
  24. # Compute -G arg for configuring external projects with the same CMake generator:
  25. IF(CMAKE_EXTRA_GENERATOR)
  26. SET(gen "${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}")
  27. ELSE()
  28. SET(gen "${CMAKE_GENERATOR}")
  29. ENDIF()
  30. # Use this value where semi-colons are needed in ep_add args:
  31. set(sep "^^")
  32. #-----------------------------------------------------------------------------
  33. # Update CMake module path
  34. #
  35. SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/CMake)
  36. #-----------------------------------------------------------------------------
  37. # Qt is expected to be setup by CTK/CMakeLists.txt just before it includes the SuperBuild script
  38. #
  39. #-----------------------------------------------------------------------------
  40. # KWStyle
  41. #
  42. SET (kwstyle_DEPENDS)
  43. IF (CTK_USE_KWSTYLE)
  44. IF (NOT DEFINED CTK_KWSTYLE_EXECUTABLE)
  45. SET(proj KWStyle-CVSHEAD)
  46. SET(kwstyle_DEPENDS ${proj})
  47. ExternalProject_Add(${proj}
  48. LIST_SEPARATOR ${sep}
  49. CVS_REPOSITORY ":pserver:anoncvs:@public.kitware.com:/cvsroot/KWStyle"
  50. CVS_MODULE "KWStyle"
  51. CMAKE_GENERATOR ${gen}
  52. CMAKE_ARGS
  53. ${ep_common_args}
  54. )
  55. SET(CTK_KWSTYLE_EXECUTABLE ${ep_install_dir}/bin/KWStyle)
  56. ENDIF()
  57. ENDIF()
  58. #-----------------------------------------------------------------------------
  59. # Utilities/DCMTK
  60. #
  61. SET(proj DCMTK)
  62. ExternalProject_Add(${proj}
  63. DOWNLOAD_COMMAND ""
  64. INSTALL_COMMAND "" # TODO DCMTK should be installable
  65. CMAKE_GENERATOR ${gen}
  66. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/DCMTK
  67. CMAKE_ARGS
  68. ${ep_common_args}
  69. )
  70. #-----------------------------------------------------------------------------
  71. # Utilities/ZMQ
  72. #
  73. SET(proj ZMQ)
  74. ExternalProject_Add(${proj}
  75. DOWNLOAD_COMMAND ""
  76. INSTALL_COMMAND ""
  77. CMAKE_GENERATOR ${gen}
  78. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Utilities/ZMQ
  79. CMAKE_ARGS
  80. ${ep_common_args}
  81. )
  82. #-----------------------------------------------------------------------------
  83. # CTK Utilities
  84. #
  85. set(proj CTK-Utilities)
  86. ExternalProject_Add(${proj}
  87. DOWNLOAD_COMMAND ""
  88. CONFIGURE_COMMAND ""
  89. BUILD_COMMAND ""
  90. INSTALL_COMMAND ""
  91. DEPENDS
  92. ${kwstyle_DEPENDS}
  93. "DCMTK"
  94. "ZMQ"
  95. )
  96. #-----------------------------------------------------------------------------
  97. # Convenient macro allowing to define superbuild arg
  98. #
  99. MACRO(ctk_set_superbuild_boolean_arg ctk_cmake_var)
  100. SET(superbuild_${ctk_cmake_var} ON)
  101. IF(DEFINED ${ctk_cmake_var} AND NOT ${ctk_cmake_var})
  102. SET(superbuild_${ctk_cmake_var} OFF)
  103. ENDIF()
  104. SET(superbuild_ep_arg_${ctk_cmake_var} -D${ctk_cmake_arg}:BOOL=${superbuild_${ctk_cmake_var}})
  105. ENDMACRO()
  106. #-----------------------------------------------------------------------------
  107. # Set superbuild boolean args
  108. #
  109. SET(ctk_cmake_boolean_args
  110. BUILD_TESTING
  111. CTK_USE_KWSTYLE
  112. ${ctk_libs}
  113. )
  114. SET(ctk_superbuild_boolean_args)
  115. FOREACH(ctk_cmake_arg ${ctk_cmake_boolean_args})
  116. ctk_set_superbuild_boolean_arg(${ctk_cmake_arg})
  117. LIST(APPEND ctk_superbuild_boolean_args -D${ctk_cmake_arg}:BOOL=${superbuild_${ctk_cmake_arg}})
  118. ENDFOREACH()
  119. #-----------------------------------------------------------------------------
  120. # CTK Configure
  121. #
  122. SET(proj CTK-Configure)
  123. ExternalProject_Add(${proj}
  124. DOWNLOAD_COMMAND ""
  125. CMAKE_GENERATOR ${gen}
  126. CMAKE_ARGS
  127. ${ctk_superbuild_boolean_args}
  128. -DCTK_SUPERBUILD:BOOL=OFF
  129. -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
  130. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  131. -DCTK_QMAKE_EXECUTABLE:FILEPATH=${CTK_QMAKE_EXECUTABLE}
  132. -DCTK_KWSTYLE_EXECUTABLE:FILEPATH=${CTK_KWSTYLE_EXECUTABLE}
  133. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
  134. BINARY_DIR ${CMAKE_BINARY_DIR}/CTK-build
  135. BUILD_COMMAND ""
  136. INSTALL_COMMAND ""
  137. DEPENDS
  138. "CTK-Utilities"
  139. )
  140. #-----------------------------------------------------------------------------
  141. # CTK
  142. #
  143. set(proj CTK-build)
  144. ExternalProject_Add(${proj}
  145. DOWNLOAD_COMMAND ""
  146. CMAKE_GENERATOR ${gen}
  147. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
  148. BINARY_DIR CTK-build
  149. #BUILD_COMMAND ""
  150. INSTALL_COMMAND ""
  151. DEPENDS
  152. "CTK-Configure"
  153. )