SuperBuild.cmake 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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. # CTK Utilities
  72. #
  73. set(proj CTK-Utilities)
  74. ExternalProject_Add(${proj}
  75. DOWNLOAD_COMMAND ""
  76. CONFIGURE_COMMAND ""
  77. BUILD_COMMAND ""
  78. INSTALL_COMMAND ""
  79. DEPENDS
  80. ${kwstyle_DEPENDS}
  81. "DCMTK"
  82. )
  83. #-----------------------------------------------------------------------------
  84. # Convenient macro allowing to define superbuild arg
  85. #
  86. MACRO(ctk_set_superbuild_boolean_arg ctk_cmake_var)
  87. SET(superbuild_${ctk_cmake_var} ON)
  88. IF(DEFINED ${ctk_cmake_var} AND NOT ${ctk_cmake_var})
  89. SET(superbuild_${ctk_cmake_var} OFF)
  90. ENDIF()
  91. SET(superbuild_ep_arg_${ctk_cmake_var} -D${ctk_cmake_arg}:BOOL=${superbuild_${ctk_cmake_var}})
  92. ENDMACRO()
  93. #-----------------------------------------------------------------------------
  94. # Set superbuild boolean args
  95. #
  96. SET(ctk_cmake_boolean_args
  97. BUILD_TESTING
  98. CTK_USE_KWSTYLE
  99. ${ctk_libs}
  100. )
  101. SET(ctk_superbuild_boolean_args)
  102. FOREACH(ctk_cmake_arg ${ctk_cmake_boolean_args})
  103. ctk_set_superbuild_boolean_arg(${ctk_cmake_arg})
  104. LIST(APPEND ctk_superbuild_boolean_args -D${ctk_cmake_arg}:BOOL=${superbuild_${ctk_cmake_arg}})
  105. ENDFOREACH()
  106. #-----------------------------------------------------------------------------
  107. # CTK Configure
  108. #
  109. SET(proj CTK-Configure)
  110. ExternalProject_Add(${proj}
  111. DOWNLOAD_COMMAND ""
  112. CMAKE_GENERATOR ${gen}
  113. CMAKE_ARGS
  114. ${ctk_superbuild_boolean_args}
  115. -DCTK_SUPERBUILD:BOOL=OFF
  116. -DCMAKE_INSTALL_PREFIX:PATH=${ep_install_dir}
  117. -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
  118. -DCTK_QMAKE_EXECUTABLE:FILEPATH=${CTK_QMAKE_EXECUTABLE}
  119. -DCTK_KWSTYLE_EXECUTABLE:FILEPATH=${CTK_KWSTYLE_EXECUTABLE}
  120. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
  121. BINARY_DIR ${CMAKE_BINARY_DIR}/CTK-build
  122. BUILD_COMMAND ""
  123. INSTALL_COMMAND ""
  124. DEPENDS
  125. "CTK-Utilities"
  126. )
  127. #-----------------------------------------------------------------------------
  128. # CTK
  129. #
  130. set(proj CTK-build)
  131. ExternalProject_Add(${proj}
  132. DOWNLOAD_COMMAND ""
  133. CMAKE_GENERATOR ${gen}
  134. SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
  135. BINARY_DIR CTK-build
  136. #BUILD_COMMAND ""
  137. INSTALL_COMMAND ""
  138. DEPENDS
  139. "CTK-Configure"
  140. )