1 include(ExternalProject)
2 include(CMakeParseArguments)
5 set(SB_PACKAGE_VERSION_NUMBER "0.0.1" CACHE STRING "The version number for the source package.")
7 set(SB_CMAKE_ARGS "" CACHE STRING "Additional arguments to CMake which will be used for all subprojects (e.g. \"-DFOO=Bar\"). For per-project arguments variables SB_CMAKE_ARGS_<ProjectName> can be defined.")
9 set(SB_SILENT_SKIPPED_PROJECTS FALSE)
11 # this file (SuperBuild.cmake) is systematically included from one of the child directories
12 # where some CMakeLists.txt state include(../SuperBuild.cmake). So the current directory is
13 # located in a subfolder of this include file. That's why global SuperBuildOptions.cmake should
14 # be included from ../ (e.g. the parent directory)
15 #message(STATUS ${CMAKE_CURRENT_SOURCE_DIR})
16 include(../GlobalSuperBuildOptions.cmake OPTIONAL)
18 # this file is included from the project directory and allow for local definitions
19 include(SuperBuildOptions.cmake OPTIONAL)
21 # set up directory structure to use for the ExternalProjects
22 set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
23 PROPERTY EP_BASE ${CMAKE_CURRENT_BINARY_DIR}
26 if (NOT SB_INSTALL_PREFIX)
27 set(SB_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
32 macro(sb_add_project _subdir )
33 set(name "${_subdir}")
34 if("${_subdir}" MATCHES "(.+)/(.+)")
35 set(name "${CMAKE_MATCH_2}")
38 message(STATUS "superbuild: Adding project ${_subdir}")
40 externalproject_add(sb_${name}
41 ${_SB_UNPARSED_ARGUMENTS}
43 SOURCE_DIR ${CMAKE_SOURCE_DIR}/${_subdir}
44 TMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/SuperBuild/tmpfiles/${name}
45 STAMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/SuperBuild/stampfiles/${name}
46 DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/SuperBuild/download/${name}
47 BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${name}
48 INSTALL_DIR ${SB_INSTALL_PREFIX}
49 CMAKE_ARGS --no-warn-unused-cli
50 -DQT_QMAKE_EXECUTABLE=${QT_QMAKE_EXECUTABLE}
51 -DCMAKE_PREFIX_PATH=${SB_INITIAL_DESTDIR}${CMAKE_INSTALL_PREFIX}
52 -DCMAKE_INSTALL_PREFIX=${SB_INSTALL_PREFIX}
53 -DCMAKE_SKIP_RPATH="${CMAKE_SKIP_RPATH}"
54 -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
55 -DLIB_SUFFIX=${LIB_SUFFIX}
57 ${SB_CMAKE_ARGS_${name}}
60 set_target_properties(sb_${name} PROPERTIES EXCLUDE_FROM_ALL TRUE)
63 add_dependencies(sb_${name} ${_SB_LAST_TARGET})
65 set(_SB_LAST_TARGET sb_${name})
66 endmacro(sb_add_project)
69 add_custom_target(sb_all)
70 set_target_properties(sb_all PROPERTIES EXCLUDE_FROM_ALL TRUE)
71 add_dependencies(sb_all ${_SB_LAST_TARGET})
74 #file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/ThisIsASourcePackage.in "This is a generated source package.")
76 #install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ThisIsASourcePackage.in DESTINATION src RENAME ThisIsASourcePackage.valid COMPONENT SuperBuild )
77 #install(FILES CMakeLists.txt DESTINATION src COMPONENT SuperBuild )
78 #install(FILES ${CMAKE_CURRENT_LIST_FILE} DESTINATION . COMPONENT SuperBuild )
81 set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY TRUE)