mirror of
https://github.com/reactos/CMake.git
synced 2024-12-13 06:16:49 +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
61 lines
1.9 KiB
CMake
61 lines
1.9 KiB
CMake
cmake_minimum_required(VERSION 2.8)
|
|
|
|
project(ArgumentExpansion)
|
|
|
|
function (argument_tester expected expected_len)
|
|
list(LENGTH ARGN argn_len)
|
|
list(LENGTH ${expected} expected_received_len)
|
|
|
|
if (NOT ${expected_received_len} EQUAL ${expected_len})
|
|
message(STATUS "Unexpected: Expanding expected values isn't working")
|
|
endif ()
|
|
|
|
if (${argn_len} EQUAL ${expected_len})
|
|
set(i 0)
|
|
while (i LESS ${argn_len})
|
|
list(GET ARGN ${i} argn_value)
|
|
list(GET ${expected} ${i} expected_value)
|
|
|
|
if (NOT "${argn_value}" STREQUAL "${expected_value}")
|
|
message(STATUS "Unexpected: Argument ${i} doesn't match")
|
|
message(STATUS " Expected: ${expected_value}")
|
|
message(STATUS " Received: ${argn_value}")
|
|
endif ()
|
|
|
|
math(EXPR i "${i} + 1")
|
|
endwhile ()
|
|
else ()
|
|
message(STATUS "Unexpected: Lengths of arguments don't match")
|
|
message(STATUS " Expected: ${expected_len}")
|
|
message(STATUS " Received: ${argn_len}")
|
|
endif ()
|
|
endfunction ()
|
|
|
|
set(empty_test)
|
|
message(STATUS "Test: Empty arguments")
|
|
argument_tester(empty_test 0 ${empty_test})
|
|
|
|
set(single_arg_test
|
|
"single arg")
|
|
message(STATUS "Test: Single argument")
|
|
argument_tester(single_arg_test 1 ${single_arg_test})
|
|
|
|
set(multiple_arg_test
|
|
"first arg"
|
|
"second arg")
|
|
message(STATUS "Test: Multiple arguments")
|
|
argument_tester(multiple_arg_test 2 ${multiple_arg_test})
|
|
|
|
set(nested_list_arg_test
|
|
"${multiple_arg_test}"
|
|
"first arg"
|
|
"second arg")
|
|
message(STATUS "Test: Nested list argument flattens")
|
|
argument_tester(nested_list_arg_test 4 ${nested_list_arg_test})
|
|
|
|
set(semicolon_arg_test
|
|
"pre\;post")
|
|
set(semicolon_arg_test_flat "pre;post")
|
|
message(STATUS "Test: Semicolon argument flattens")
|
|
argument_tester(semicolon_arg_test_flat 2 ${semicolon_arg_test})
|