Skip to content

Commit

Permalink
Merge branch 'add-MarkAsSuperBuild-EP_ARGS_VAR-test'
Browse files Browse the repository at this point in the history
* add-MarkAsSuperBuild-EP_ARGS_VAR-test:
  Add MarkAsSuperBuild-EP_ARGS_VAR test
  ExternalProjectDependency: Support ALL_PROJECTS variable ending with NOTFOUND
  • Loading branch information
jcfr committed Jun 2, 2018
2 parents 34aef01 + be51ee6 commit 0cc99d3
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 1 deletion.
3 changes: 2 additions & 1 deletion ExternalProjectDependency.cmake
Expand Up @@ -458,7 +458,8 @@ function(_sb_get_external_project_arguments proj varname)
get_property(${proj}_EP_PROPERTY_${property} GLOBAL PROPERTY ${proj}_EP_PROPERTY_${property})
get_property(${_ALL_PROJECT_IDENTIFIER}_EP_PROPERTY_${property} GLOBAL PROPERTY ${_ALL_PROJECT_IDENTIFIER}_EP_PROPERTY_${property})
set(_all ${${proj}_EP_PROPERTY_${property}} ${${_ALL_PROJECT_IDENTIFIER}_EP_PROPERTY_${property}})
if(_all)
list(LENGTH _all _num_properties)
if(_num_properties GREATER 0)
list(APPEND _ep_arguments ${property} ${_all})
endif()
endforeach()
Expand Down
1 change: 1 addition & 0 deletions Tests/CMakeLists.txt
Expand Up @@ -84,6 +84,7 @@ add_cmakescript_test(ExternalProject_SetIfNotDefined ArtichokeTest)
set(tests_source_dir ${CMAKE_SOURCE_DIR})
add_project_test(AlwaysConfigure SuperBuild)
add_project_test(MarkAsSuperBuild SuperBuild)
add_project_test(MarkAsSuperBuild-EP_ARGS_VAR SuperBuild)
add_project_test(MarkAsSuperBuild-WithNotFoundVariable SuperBuild)
if(${CMAKE_VERSION} VERSION_LESS "3.11.4")
# See https://gitlab.kitware.com/cmake/cmake/merge_requests/2127
Expand Down
83 changes: 83 additions & 0 deletions Tests/MarkAsSuperBuild-EP_ARGS_VAR-Test/CMakeLists.txt
@@ -0,0 +1,83 @@
cmake_minimum_required(VERSION 2.8.7)

if(POLICY CMP0054)
cmake_policy(SET CMP0054 OLD)
endif()

project(MarkAsSuperBuild-WithNotFoundVariable-Test NONE)

set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../" ${CMAKE_MODULE_PATH})
set(EXTERNAL_PROJECT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/TheExternals)
set(EXTERNAL_PROJECT_FILE_PREFIX "TheExternal_")
include(ExternalProject)
include(ExternalProjectDependency)

option(${PROJECT_NAME}_SUPERBUILD "Build ${PROJECT_NAME} and the projects it depends" ON)
mark_as_advanced(${PROJECT_NAME}_SUPERBUILD)

# Set variables needed for '*_CMAKE_ARGS' case
if(NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_CFG_INTDIR MyConfig)
set(CMAKE_CONFIGURATION_TYPES ${CMAKE_CFG_INTDIR})
set(EXPECTED_CMAKE_CFG_INTDIR ${CMAKE_CFG_INTDIR})
else()
set(EXPECTED_CMAKE_CFG_INTDIR Release)
endif()

if(${PROJECT_NAME}_SUPERBUILD)
set(VAR "VAR_VALUE")
mark_as_superbuild(VAR)

set(PROJECT_SPECIFIC_VAR "PROJECT_SPECIFIC_VAR_VALUE")
mark_as_superbuild(
VARS
PROJECT_SPECIFIC_VAR:STRING
PROJECTS ${PROJECT_NAME}
)

set(ALL_PROJECTS_VAR "ALL_PROJECTS_VAR_VALUE")
mark_as_superbuild(
VARS
ALL_PROJECTS_VAR:STRING
ALL_PROJECTS
)
endif()

set(${PROJECT_NAME}_DEPENDS )

ExternalProject_Include_Dependencies(${PROJECT_NAME}
EP_ARGS_VAR MYTEST_EP_ARGS_VAR
)

include(${CMAKE_CURRENT_SOURCE_DIR}/../ArtichokeTestUtility.cmake)

check_variable_defined("${PROJECT_NAME}_SUPERBUILD")

if(${PROJECT_NAME}_SUPERBUILD)
check_variable_defined("MYTEST_EP_ARGS_VAR")

ExternalProject_Add(${PROJECT_NAME}
${MYTEST_EP_ARGS_VAR}
DOWNLOAD_COMMAND ""
CMAKE_CACHE_ARGS
-D${PROJECT_NAME}_SUPERBUILD:BOOL=OFF
-DCMAKE_CFG_INTDIR_FILE:FILEPATH=${CMAKE_CFG_INTDIR_FILE}
SOURCE_DIR ${${PROJECT_NAME}_SOURCE_DIR}
BINARY_DIR ${${PROJECT_NAME}_BINARY_DIR}/${PROJECT_NAME}-build
BUILD_COMMAND ""
INSTALL_COMMAND ""
DEPENDS
${${PROJECT_NAME}_DEPENDS}
)
return()
endif()

check_variable_defined("VAR")
check_variable(VAR "VAR_VALUE")

check_variable_defined("PROJECT_SPECIFIC_VAR")
check_variable(PROJECT_SPECIFIC_VAR "PROJECT_SPECIFIC_VAR_VALUE")

check_variable_defined("ALL_PROJECTS_VAR")
check_variable(ALL_PROJECTS_VAR "ALL_PROJECTS_VAR_VALUE")

Expand Up @@ -27,6 +27,13 @@ endif()
if(${PROJECT_NAME}_SUPERBUILD)
set(VARIABLE "VARIABLE-NOTFOUND")
mark_as_superbuild(VARIABLE)

set(VARIABLE_ALL_PROJECTS "VARIABLE_ALL_PROJECTS-NOTFOUND")
mark_as_superbuild(
VARS
VARIABLE_ALL_PROJECTS
ALL_PROJECTS
)
endif()

set(${PROJECT_NAME}_DEPENDS )
Expand All @@ -53,4 +60,5 @@ endif()
include(${CMAKE_CURRENT_SOURCE_DIR}/../ArtichokeTestUtility.cmake)

check_variable(VARIABLE "VARIABLE-NOTFOUND")
check_variable(VARIABLE_ALL_PROJECTS "VARIABLE_ALL_PROJECTS-NOTFOUND")

0 comments on commit 0cc99d3

Please sign in to comment.