[Cmake-commits] CMake branch, next, updated. v2.8.4-1855-g88253ce

Alexander Neundorf neundorf at kde.org
Thu Jul 7 16:12:54 EDT 2011


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  88253ce3094cf489c31774fab1a94e3ca9cf78d7 (commit)
       via  1325260a664577a1356f3034ed5f110d45f6a6d8 (commit)
       via  a8e0287d86aa2450b5cbe0792180587bb1d48b7e (commit)
       via  69ed07ad2d6c30c351eddc12388c856ad128577a (commit)
       via  aa20138dbcd3b62bcd52da49a5daa4c345de9d84 (commit)
      from  f03ecc7150dd4b03b501c62fc6557bddcfc89779 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=88253ce3094cf489c31774fab1a94e3ca9cf78d7
commit 88253ce3094cf489c31774fab1a94e3ca9cf78d7
Merge: f03ecc7 1325260
Author:     Alexander Neundorf <neundorf at kde.org>
AuthorDate: Thu Jul 7 16:12:51 2011 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Jul 7 16:12:51 2011 -0400

    Merge topic 'PushCheckState' into next
    
    1325260 Add macros cmake_push/pop_check_state() as discussed on the list.
    a8e0287 KWSys Nightly Date Stamp
    69ed07a KWSys Nightly Date Stamp
    aa20138 KWSys Nightly Date Stamp


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1325260a664577a1356f3034ed5f110d45f6a6d8
commit 1325260a664577a1356f3034ed5f110d45f6a6d8
Author:     Alex Neundorf <neundorf at kde.org>
AuthorDate: Thu Jul 7 22:07:16 2011 +0200
Commit:     Alex Neundorf <neundorf at kde.org>
CommitDate: Thu Jul 7 22:09:44 2011 +0200

    Add macros cmake_push/pop_check_state() as discussed on the list.
    
    This patch adds two macros cmake_push_check_state() and
    cmake_pop_check_state(), which can be used to save and restore
    the contents of the CMAKE_REQUIRED_xxx variables.
    
    Alex

diff --git a/Modules/CMakePushCheckState.cmake b/Modules/CMakePushCheckState.cmake
new file mode 100644
index 0000000..52503e5
--- /dev/null
+++ b/Modules/CMakePushCheckState.cmake
@@ -0,0 +1,52 @@
+# This module defines two 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
+# 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.
+# The variable contents are pushed on a stack, pushing multiple times is supported.
+# This is useful e.g. when executing such tests in a Find-module, where they have to be set,
+# but after the Find-module has been executed they should have the same value
+# as they had before.
+#
+# Usage:
+#   cmake_push_check_state()
+#   set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS} -DSOME_MORE_DEF)
+#   check_function_exists(...)
+#   cmake_pop_check_state()
+
+# Copyright (c) 2006-2011, Alexander Neundorf, <neundorf at kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+MACRO(CMAKE_PUSH_CHECK_STATE)
+
+   IF(NOT DEFINED _CMAKE_PUSH_CHECK_STATE_COUNTER)
+      SET(_CMAKE_PUSH_CHECK_STATE_COUNTER 0)
+   ENDIF()
+
+   MATH(EXPR _CMAKE_PUSH_CHECK_STATE_COUNTER "${_CMAKE_PUSH_CHECK_STATE_COUNTER}+1")
+
+   SET(_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}    ${CMAKE_REQUIRED_INCLUDES})
+   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})
+ENDMACRO(CMAKE_PUSH_CHECK_STATE)
+
+MACRO(CMAKE_POP_CHECK_STATE)
+
+# don't pop more than we pushed
+   IF("${_CMAKE_PUSH_CHECK_STATE_COUNTER}" GREATER "0")
+
+      SET(CMAKE_REQUIRED_INCLUDES    ${_CMAKE_REQUIRED_INCLUDES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      SET(CMAKE_REQUIRED_DEFINITIONS ${_CMAKE_REQUIRED_DEFINITIONS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      SET(CMAKE_REQUIRED_LIBRARIES   ${_CMAKE_REQUIRED_LIBRARIES_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+      SET(CMAKE_REQUIRED_FLAGS       ${_CMAKE_REQUIRED_FLAGS_SAVE_${_CMAKE_PUSH_CHECK_STATE_COUNTER}})
+
+      MATH(EXPR _CMAKE_PUSH_CHECK_STATE_COUNTER "${_CMAKE_PUSH_CHECK_STATE_COUNTER}-1")
+   ENDIF()
+
+ENDMACRO(CMAKE_POP_CHECK_STATE)
diff --git a/Tests/CMakeTests/CMakeLists.txt b/Tests/CMakeTests/CMakeLists.txt
index 5cb50c9..fc1426e 100644
--- a/Tests/CMakeTests/CMakeLists.txt
+++ b/Tests/CMakeTests/CMakeLists.txt
@@ -28,6 +28,7 @@ AddCMakeTest(Math "")
 AddCMakeTest(CMakeMinimumRequired "")
 AddCMakeTest(CompilerIdVendor "")
 AddCMakeTest(ProcessorCount "")
+AddCMakeTest(PushCheckState "")
 
 AddCMakeTest(FileDownload "")
 set_property(TEST CMake.FileDownload PROPERTY
diff --git a/Tests/CMakeTests/PushCheckStateTest.cmake.in b/Tests/CMakeTests/PushCheckStateTest.cmake.in
new file mode 100644
index 0000000..e707b9a
--- /dev/null
+++ b/Tests/CMakeTests/PushCheckStateTest.cmake.in
@@ -0,0 +1,30 @@
+include(CMakePushCheckState)
+
+set(CMAKE_REQUIRED_DEFINITIONS defs1 )
+
+cmake_push_check_state()
+
+set(CMAKE_REQUIRED_DEFINITIONS defs2)
+
+cmake_push_check_state()
+
+set(CMAKE_REQUIRED_DEFINITIONS defs3)
+
+cmake_pop_check_state()
+
+if (NOT "${CMAKE_REQUIRED_DEFINITIONS}" STREQUAL "defs2")
+  set(fatal TRUE)
+  message("ERROR: "CMAKE_REQUIRED_DEFINITIONS is \"${CMAKE_REQUIRED_DEFINITIONS}\" (expected \"defs2\")" )
+endif()
+
+cmake_pop_check_state()
+
+if (NOT "${CMAKE_REQUIRED_DEFINITIONS}" STREQUAL "defs1")
+  set(fatal TRUE)
+  message("ERROR: "CMAKE_REQUIRED_DEFINITIONS is \"${CMAKE_REQUIRED_DEFINITIONS}\" (expected \"defs1\")" )
+endif()
+
+
+if(fatal)
+  message(FATAL_ERROR "cmake_push_check_state() test failed")
+endif()

-----------------------------------------------------------------------

Summary of changes:
 Modules/CMakePushCheckState.cmake            |   52 ++++++++++++++++++++++++++
 Source/kwsys/kwsysDateStamp.cmake            |    2 +-
 Tests/CMakeTests/CMakeLists.txt              |    1 +
 Tests/CMakeTests/PushCheckStateTest.cmake.in |   30 +++++++++++++++
 4 files changed, 84 insertions(+), 1 deletions(-)
 create mode 100644 Modules/CMakePushCheckState.cmake
 create mode 100644 Tests/CMakeTests/PushCheckStateTest.cmake.in


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list