mirror of
https://github.com/reactos/CMake.git
synced 2024-12-20 18:48:14 +00:00
9db3116226
Ancient versions of CMake required else(), endif(), and similar block termination commands to have arguments matching the command starting the block. This is no longer the preferred style. Run the following shell code: for c in else endif endforeach endfunction endmacro endwhile; do echo 's/\b'"$c"'\(\s*\)(.\+)/'"$c"'\1()/' done >convert.sed && git ls-files -z -- bootstrap '*.cmake' '*.cmake.in' '*CMakeLists.txt' | egrep -z -v '^(Utilities/cm|Source/kwsys/)' | egrep -z -v 'Tests/CMakeTests/While-Endwhile-' | xargs -0 sed -i -f convert.sed && rm convert.sed
105 lines
3.1 KiB
CMake
105 lines
3.1 KiB
CMake
project(PolicyScope C)
|
|
# No cmake_minimum_required(VERSION), it's in FindFoo.
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Helper function to report results.
|
|
function(check msg lhs rhs)
|
|
if(NOT "${lhs}" STREQUAL "${rhs}")
|
|
message(FATAL_ERROR "${msg}: expected [${lhs}], got [${rhs}]")
|
|
endif()
|
|
endfunction()
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Test using a development framework that sets policies for us.
|
|
|
|
# Policy CMP0011 should not be set at this point.
|
|
cmake_policy(GET CMP0011 cmp)
|
|
check(CMP0011 "" "${cmp}")
|
|
|
|
# Put the test modules in the search path.
|
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
# The included file should set policies for us.
|
|
find_package(Foo)
|
|
|
|
# Check policies set by the package.
|
|
cmake_policy(GET CMP0003 cmp)
|
|
check(CMP0003 "OLD" "${cmp}")
|
|
cmake_policy(GET CMP0002 cmp)
|
|
check(CMP0002 "NEW" "${cmp}")
|
|
cmake_policy(GET CMP0011 cmp)
|
|
check(CMP0011 "NEW" "${cmp}")
|
|
|
|
# Make sure an included file cannot change policies.
|
|
include(Bar)
|
|
cmake_policy(GET CMP0003 cmp)
|
|
check(CMP0003 "OLD" "${cmp}")
|
|
|
|
# Allow the included file to change policies.
|
|
include(Bar NO_POLICY_SCOPE)
|
|
cmake_policy(GET CMP0003 cmp)
|
|
check(CMP0003 "NEW" "${cmp}")
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Test function and macro policy recording.
|
|
|
|
# Create the functions in an isolated scope in which we change policies.
|
|
cmake_policy(PUSH)
|
|
if(1)
|
|
# Change CMP0002
|
|
cmake_policy(SET CMP0002 OLD)
|
|
function(func1)
|
|
# CMP0002 should be changed when this function is invoked
|
|
cmake_policy(GET CMP0002 cmp)
|
|
check(CMP0002 "OLD" "${cmp}")
|
|
endfunction()
|
|
|
|
# Unset CMP0002
|
|
cmake_policy(VERSION 2.4)
|
|
macro(macro1)
|
|
# CMP0002 should be unset when this macro is invoked
|
|
cmake_policy(GET CMP0002 cmp)
|
|
check(CMP0002 "" "${cmp}")
|
|
|
|
# Setting the policy should work here and also in the caller.
|
|
cmake_policy(SET CMP0002 OLD)
|
|
cmake_policy(GET CMP0002 cmp)
|
|
check(CMP0002 "OLD" "${cmp}")
|
|
endmacro()
|
|
endif()
|
|
cmake_policy(POP)
|
|
|
|
# CMP0002 should still be NEW in this context.
|
|
cmake_policy(GET CMP0002 cmp)
|
|
check(CMP0002 "NEW" "${cmp}")
|
|
|
|
# Check the recorded policies
|
|
func1()
|
|
macro1()
|
|
|
|
# The macro should have changed CMP0002.
|
|
cmake_policy(GET CMP0002 cmp)
|
|
check(CMP0002 "OLD" "${cmp}")
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Test CMAKE_POLICY_DEFAULT_CMP<NNNN> variable.
|
|
cmake_policy(PUSH)
|
|
set(CMAKE_POLICY_DEFAULT_CMP0010 OLD) # ignored
|
|
set(CMAKE_POLICY_DEFAULT_CMP0012 OLD) # honored
|
|
set(CMAKE_POLICY_DEFAULT_CMP0013 NEW) # honored
|
|
set(CMAKE_POLICY_DEFAULT_CMP0014 "") # noop
|
|
cmake_policy(VERSION 2.6.3)
|
|
cmake_policy(GET CMP0010 cmp)
|
|
check(CMP0010 "NEW" "${cmp}")
|
|
cmake_policy(GET CMP0012 cmp)
|
|
check(CMP0012 "OLD" "${cmp}")
|
|
cmake_policy(GET CMP0013 cmp)
|
|
check(CMP0013 "NEW" "${cmp}")
|
|
cmake_policy(GET CMP0014 cmp)
|
|
check(CMP0014 "" "${cmp}")
|
|
cmake_policy(POP)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Dummy executable so the project can build and run.
|
|
add_executable(PolicyScope main.c)
|