diff options
author | Brad King <brad.king@kitware.com> | 2013-07-31 12:48:29 (GMT) |
---|---|---|
committer | CMake Topic Stage <kwrobot@kitware.com> | 2013-07-31 12:48:29 (GMT) |
commit | cdfeda60f605fc8ef044ae28d4209a445ca09ffd (patch) | |
tree | b67a87d6d01835d5f098694ca89478038d37dba9 | |
parent | 6e2da4a4d3a34f62ec830720ab47d344ada73441 (diff) | |
parent | 9349d69abf69795e115329475d56ff0583b6c79c (diff) | |
download | CMake-cdfeda60f605fc8ef044ae28d4209a445ca09ffd.zip CMake-cdfeda60f605fc8ef044ae28d4209a445ca09ffd.tar.gz CMake-cdfeda60f605fc8ef044ae28d4209a445ca09ffd.tar.bz2 |
Merge topic 'add-cmake_reset_check_state'
9349d69 Add cmake_reset_check_state() macro
-rw-r--r-- | Modules/CMakePushCheckState.cmake | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/Modules/CMakePushCheckState.cmake b/Modules/CMakePushCheckState.cmake index 08809bf..b37b706 100644 --- a/Modules/CMakePushCheckState.cmake +++ b/Modules/CMakePushCheckState.cmake @@ -1,8 +1,10 @@ -# This module defines two macros: +# This module defines three macros: # CMAKE_PUSH_CHECK_STATE() -# and # CMAKE_POP_CHECK_STATE() -# These two macros can be used to save and restore the state of the variables +# and +# CMAKE_RESET_CHECK_STATE() +# These macros can be used to save, restore and reset (i.e., clear contents) +# the state of the variables # CMAKE_REQUIRED_FLAGS, CMAKE_REQUIRED_DEFINITIONS, CMAKE_REQUIRED_LIBRARIES # and CMAKE_REQUIRED_INCLUDES used by the various Check-files coming with CMake, # like e.g. check_function_exists() etc. @@ -11,9 +13,16 @@ # but after the Find-module has been executed they should have the same value # as they had before. # +# CMAKE_PUSH_CHECK_STATE() macro receives optional argument RESET. Whether it's specified, +# CMAKE_PUSH_CHECK_STATE() will set all CMAKE_REQUIRED_* variables to empty values, same +# as CMAKE_RESET_CHECK_STATE() call will do. +# # Usage: -# cmake_push_check_state() -# set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -DSOME_MORE_DEF) +# cmake_push_check_state(RESET) +# set(CMAKE_REQUIRED_DEFINITIONS -DSOME_MORE_DEF) +# check_function_exists(...) +# cmake_reset_check_state() +# set(CMAKE_REQUIRED_DEFINITIONS -DANOTHER_DEF) # check_function_exists(...) # cmake_pop_check_state() @@ -31,6 +40,15 @@ # License text for the above reference.) +macro(CMAKE_RESET_CHECK_STATE) + + set(CMAKE_REQUIRED_INCLUDES) + set(CMAKE_REQUIRED_DEFINITIONS) + set(CMAKE_REQUIRED_LIBRARIES) + set(CMAKE_REQUIRED_FLAGS) + +endmacro() + macro(CMAKE_PUSH_CHECK_STATE) if(NOT DEFINED _CMAKE_PUSH_CHECK_STATE_COUNTER) @@ -43,6 +61,11 @@ macro(CMAKE_PUSH_CHECK_STATE) set(_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_DEFINITIONS}) set(_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_LIBRARIES}) set(_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER} ${CMAKE_REQUIRED_FLAGS}) + + if (ARGC GREATER 0 AND ARGV0 STREQUAL "RESET") + cmake_reset_check_state() + endif() + endmacro() macro(CMAKE_POP_CHECK_STATE) |