ctkBlockCheckDependencies.cmake 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #
  2. # Independently of the value of CTK_SUPERBUILD, each external project definition will
  3. # provides either the include and library directories or a variable name
  4. # used by the corresponding Find<package>.cmake files.
  5. #
  6. # Within top-level CMakeLists.txt file, the variable names will be expanded if not in
  7. # superbuild mode. The include and library dirs are then used in
  8. # ctkMacroBuildApp, ctkMacroBuildLib, and ctkMacroBuildPlugin
  9. #
  10. #-----------------------------------------------------------------------------
  11. # Collect CTK library target dependencies
  12. #
  13. ctkMacroCollectAllTargetLibraries("${CTK_LIBS_SUBDIRS}" "Libs" ALL_TARGET_LIBRARIES)
  14. ctkMacroCollectAllTargetLibraries("${CTK_PLUGINS_SUBDIRS}" "Plugins" ALL_TARGET_LIBRARIES)
  15. ctkMacroCollectAllTargetLibraries("${CTK_APPLICATIONS_SUBDIRS}" "Applications" ALL_TARGET_LIBRARIES)
  16. #message(STATUS ALL_TARGET_LIBRARIES:${ALL_TARGET_LIBRARIES})
  17. #-----------------------------------------------------------------------------
  18. # Initialize NON_CTK_DEPENDENCIES variable
  19. #
  20. # Using the variable ALL_TARGET_LIBRARIES initialized above with the help
  21. # of the macro ctkMacroCollectAllTargetLibraries, let's get the list of all Non-CTK dependencies.
  22. # NON_CTK_DEPENDENCIES is expected by the macro ctkMacroShouldAddExternalProject
  23. ctkMacroGetAllNonProjectTargetLibraries("${ALL_TARGET_LIBRARIES}" NON_CTK_DEPENDENCIES)
  24. #message(STATUS NON_CTK_DEPENDENCIES:${NON_CTK_DEPENDENCIES})
  25. #-----------------------------------------------------------------------------
  26. # Include external projects
  27. #
  28. #-----------------------------------------------------------------------------
  29. # Git protocole option
  30. #
  31. option(CTK_USE_GIT_PROTOCOL "If behind a firewall turn this OFF to use http instead." ON)
  32. set(git_protocol "git")
  33. if(NOT CTK_USE_GIT_PROTOCOL)
  34. set(git_protocol "http")
  35. endif()
  36. #-----------------------------------------------------------------------------
  37. # Enable and setup External project global properties
  38. #
  39. if(CTK_SUPERBUILD)
  40. include(ExternalProject)
  41. include(ctkMacroEmptyExternalProject)
  42. #set(ep_base "${CMAKE_BINARY_DIR}/CMakeExternals")
  43. #set_property(DIRECTORY PROPERTY EP_BASE ${ep_base})
  44. set(ep_install_dir ${CMAKE_BINARY_DIR}/CMakeExternals/Install)
  45. set(ep_suffix "-cmake")
  46. set(ep_common_c_flags "${CMAKE_C_FLAGS_INIT} ${ADDITIONAL_C_FLAGS}")
  47. set(ep_common_cxx_flags "${CMAKE_CXX_FLAGS_INIT} ${ADDITIONAL_CXX_FLAGS}")
  48. # Compute -G arg for configuring external projects with the same CMake generator:
  49. if(CMAKE_EXTRA_GENERATOR)
  50. set(gen "${CMAKE_EXTRA_GENERATOR} - ${CMAKE_GENERATOR}")
  51. else()
  52. set(gen "${CMAKE_GENERATOR}")
  53. endif()
  54. # Use this value where semi-colons are needed in ep_add args:
  55. set(sep "^^")
  56. # This variable will contain the list of CMake variable specific to each external project
  57. # that should passed to CTK.
  58. # The item of this list should have the following form: <EP_VAR>:<TYPE>
  59. # where '<EP_VAR>' is an external project variable and TYPE is either BOOL, PATH or FILEPATH.
  60. # Variable appended to this list will be automatically exported in CTKConfig.cmake, prefix 'CTK_'
  61. # will be prepended if it applied.
  62. set(CTK_SUPERBUILD_EP_VARS)
  63. endif()
  64. if(NOT DEFINED CTK_POSSIBLE_DEPENDENCIES)
  65. message(FATAL_ERROR "error: CTK_POSSIBLE_DEPENDENCIES variable is not defined !")
  66. endif()
  67. foreach(p ${CTK_POSSIBLE_DEPENDENCIES})
  68. include(CMakeExternals/${p}.cmake)
  69. endforeach()
  70. #message("CTK_POSSIBLE_DEPENDENCIES:")
  71. #foreach(dep ${CTK_POSSIBLE_DEPENDENCIES})
  72. # message(" ${dep}")
  73. #endforeach()