blob: f34c3e4884519b3484f9d1af981f415a205755dc [file] [log] [blame]
include(ExternalProject)
#
## Set environment variables on custom commands
#
# Comma list-separator
set(ScriptPath "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars/EchoVar.cmake")
ExternalProject_Add(CustomCommand
DOWNLOAD_COMMAND ""
UPDATE_COMMAND ""
PATCH_COMMAND ""
LIST_SEPARATOR ,
CONFIGURE_COMMAND ""
COMMAND
COMMAND "${CMAKE_COMMAND}" -DMYLIST='a,b,c' -P ${ScriptPath}
COMMAND "${CMAKE_COMMAND}" -DVARNAME=Stage -P ${ScriptPath}
COMMAND ""
COMMAND COMMAND COMMAND
COMMAND "${CMAKE_COMMAND}" -E echo "" ""
COMMAND
COMMAND "${CMAKE_COMMAND}" -DVARNAME=ListVar -P ${ScriptPath}
CONFIGURE_ENVIRONMENT_MODIFICATION
Stage=set:config
ListVar=set:4,5,6
ListSeparator=set:,
BUILD_COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
BUILD_ENVIRONMENT_MODIFICATION
Stage=set:build
ListVar=set:4,5,6
ListSeparator=set:,
INSTALL_COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
INSTALL_ENVIRONMENT_MODIFICATION
InstallVar=set:install
Stage=set:install
ListVar=set:4,5,6
ListSeparator=set:,
TEST_COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
TEST_ENVIRONMENT_MODIFICATION
Stage=set:test
ListVar=set:4,5,6
ListSeparator=set:,)
ExternalProject_Add_Step(CustomCommand custom
DEPENDERS configure
COMMAND "${CMAKE_COMMAND}" -DVARNAME=CustomVar -P ${ScriptPath}
COMMAND "${CMAKE_COMMAND}" -DVARNAME=CustomVar2 -P ${ScriptPath}
COMMAND "${CMAKE_COMMAND}" -P ${ScriptPath}
ENVIRONMENT_MODIFICATION
CustomVar=set:custom
CustomVar2=set:custom2
Stage=set:custom
ListVar=set:1,2,3
ListSeparator=set:,)
#
## Set environment variables on the default commands
#
# No list separator
ExternalProject_Add(DefaultCommand
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars"
DOWNLOAD_COMMAND ""
UPDATE_COMMAND ""
PATCH_COMMAND ""
DEPENDS CustomCommand
CMAKE_ARGS
-DVARIABLE=ConfigVar
CONFIGURE_ENVIRONMENT_MODIFICATION
ConfigVar=string_append:fig # RunCMakeTest.cmake sets to "con"
ListVar=set:7,8,9
ListSeparator=set:,
BUILD_ENVIRONMENT_MODIFICATION
Stage=set:build
ListVar=set:7,8,9,10
ListSeparator=set:,
INSTALL_COMMAND "" # empty install command should not show up
INSTALL_ENVIRONMENT_MODIFICATION
Stage=set:install
Separator=set:,)
ExternalProject_Add(DefaultCommandListSep
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars"
DOWNLOAD_COMMAND ""
UPDATE_COMMAND ""
PATCH_COMMAND ""
DEPENDS DefaultCommand
LIST_SEPARATOR `
CMAKE_ARGS
-DVARIABLE=ConfigVar
-DMYLIST=d`e`f`g
CONFIGURE_ENVIRONMENT_MODIFICATION
ConfigVar=set:config
ListVar=set:9`8`7
ListSeparator=set:`
BUILD_COMMAND ""
INSTALL_COMMAND "")
# Using `:` as a list separator on Windows does not work as it replaces the `:`
# between the drive letter and the filepath with `;`.
if(NOT WIN32)
# Ensure that using `:` as a list-separator does not break setting environment
# variables
ExternalProject_Add(DefaultCommandListColon
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/EnvVars"
DOWNLOAD_COMMAND ""
UPDATE_COMMAND ""
PATCH_COMMAND ""
DEPENDS DefaultCommandListSep
LIST_SEPARATOR :
CMAKE_ARGS
-DVARIABLE=ConfigVar
CONFIGURE_ENVIRONMENT_MODIFICATION
ConfigVar=set:config
ListVar=set:10:11:12
ListSeparator=set::
BUILD_ENVIRONMENT_MODIFICATION
Stage=set:build
ListVar=set:10:11:12
ListSeparator=set::
INSTALL_ENVIRONMENT_MODIFICATION
Stage=set:install
ListSeparator=set::
ListVar=set:10:11:12:13)
endif()