mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-17 12:12:10 -04:00
51 lines
1.5 KiB
CMake
51 lines
1.5 KiB
CMake
# Filename: PerConfigOption.cmake
|
|
#
|
|
# This contains a convenience function for defining per-config options.
|
|
# In single-config generators, it will set the option based on the defined
|
|
# CMAKE_BUILD_TYPE. In multi-config generators, it will create separate
|
|
# options, one per config.
|
|
#
|
|
# Function: per_config_option
|
|
# Usage:
|
|
# option(name "help string" [Config1] [Config2] [...ConfigN])
|
|
#
|
|
# Example:
|
|
# per_config_option(DO_DEBUGGING "Enables debugging." Debug Standard)
|
|
|
|
set(_PER_CONFIG_OPTIONS CACHE INTERNAL "Internal variable")
|
|
|
|
function(per_config_option name help)
|
|
set(_configs ${ARGN})
|
|
|
|
# In single-config generatotrs, we simply create one config.
|
|
if(NOT IS_MULTICONFIG)
|
|
list(FIND _configs "${CMAKE_BUILD_TYPE}" _index)
|
|
if(${_index} GREATER -1)
|
|
option("${name}" "${help}" ON)
|
|
else()
|
|
option("${name}" "${help}" OFF)
|
|
endif()
|
|
|
|
elseif(DEFINED "${name}")
|
|
# It's been explicitly defined, so that makes it not a multi-configuration
|
|
# variable anymore.
|
|
option("${name}" "${help}")
|
|
return()
|
|
|
|
else()
|
|
foreach(_config ${CMAKE_CONFIGURATION_TYPES})
|
|
string(TOUPPER "${_config}" _config_upper)
|
|
list(FIND _configs "${_config}" _index)
|
|
if(${_index} GREATER -1)
|
|
option("${name}_${_config_upper}" "${help}" ON)
|
|
else()
|
|
option("${name}_${_config_upper}" "${help}" OFF)
|
|
endif()
|
|
endforeach()
|
|
|
|
endif()
|
|
|
|
list(APPEND _PER_CONFIG_OPTIONS "${name}")
|
|
set(_PER_CONFIG_OPTIONS "${_PER_CONFIG_OPTIONS}" CACHE INTERNAL "Internal variable")
|
|
endfunction(per_config_option)
|