Blame view

3rdparty/rabbitmq-c-0.11.0/cmake/CMakePushCheckState.cmake 4.78 KB
09c2d08c   Hu Chunming   arm交付版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
  # 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 2006-2011 Alexander Neundorf, <neundorf@kde.org>
  #
  # Redistribution and use in source and binary forms, with or without
  # modification, are permitted provided that the following conditions
  # are met:
  # 
  # * Redistributions of source code must retain the above copyright
  #   notice, this list of conditions and the following disclaimer.
  # 
  # * Redistributions in binary form must reproduce the above copyright
  #   notice, this list of conditions and the following disclaimer in the
  #   documentation and/or other materials provided with the distribution.
  # 
  # * Neither the names of Kitware, Inc., the Insight Software Consortium,
  #   nor the names of their contributors may be used to endorse or promote
  #   products derived from this software without specific prior written
  #   permission.
  # 
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  # 
  # ------------------------------------------------------------------------------
  # 
  # The above copyright and license notice applies to distributions of
  # CMake in source and binary form.  Some source files contain additional
  # notices of original copyright by their contributors; see each source
  # for details.  Third-party software packages supplied with CMake under
  # compatible licenses provide their own copyright notices documented in
  # corresponding subdirectories.
  # 
  # ------------------------------------------------------------------------------
  # 
  # CMake was initially developed by Kitware with the following sponsorship:
  # 
  #  * National Library of Medicine at the National Institutes of Health
  #    as part of the Insight Segmentation and Registration Toolkit (ITK).
  # 
  #  * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel
  #    Visualization Initiative.
  # 
  #  * National Alliance for Medical Image Computing (NAMIC) is funded by the
  #    National Institutes of Health through the NIH Roadmap for Medical Research,
  #    Grant U54 EB005149.
  # 
  #  * Kitware, Inc.
  
  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()
  
  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()