mirror of
https://github.com/reactos/CMake.git
synced 2025-01-19 09:54:02 +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
58 lines
1.5 KiB
CMake
58 lines
1.5 KiB
CMake
cmake_minimum_required (VERSION 2.6)
|
|
project(MakeClean)
|
|
|
|
# Build the to-clean project.
|
|
try_compile(TOCLEAN_BUILT
|
|
${MakeClean_BINARY_DIR}/ToClean
|
|
${MakeClean_SOURCE_DIR}/ToClean
|
|
ToClean
|
|
OUTPUT_VARIABLE OUTPUT
|
|
)
|
|
if(TOCLEAN_BUILT)
|
|
message(
|
|
"Building ToClean succeeded with the following output:\n"
|
|
"[${OUTPUT}]"
|
|
)
|
|
else()
|
|
message(FATAL_ERROR
|
|
"Building ToClean failed with the following output:\n"
|
|
"[${OUTPUT}]"
|
|
)
|
|
endif()
|
|
|
|
# Get the set of files to check from the ToClean project.
|
|
include(${MakeClean_BINARY_DIR}/ToClean/ToCleanFiles.cmake)
|
|
|
|
# Check for the existence of the files.
|
|
foreach(f ${TOCLEAN_FILES})
|
|
if(EXISTS "${f}")
|
|
else()
|
|
message(FATAL_ERROR "File \"${f}\" does not exist!")
|
|
endif()
|
|
endforeach()
|
|
|
|
# Configure an executable to check that all the files are missing.
|
|
set(CHECK_FILES)
|
|
foreach(f ${TOCLEAN_FILES})
|
|
set(CHECK_FILES "${CHECK_FILES} \"${f}\",\n")
|
|
endforeach()
|
|
configure_file(${MakeClean_SOURCE_DIR}/check_clean.c.in
|
|
${MakeClean_BINARY_DIR}/check_clean.c @ONLY IMMEDIATE)
|
|
add_executable(check_clean ${MakeClean_BINARY_DIR}/check_clean.c)
|
|
|
|
# After the executable builds, clean the files.
|
|
add_custom_command(
|
|
TARGET check_clean
|
|
POST_BUILD
|
|
COMMAND ${CMAKE_CTEST_COMMAND}
|
|
ARGS --build-and-test
|
|
${MakeClean_SOURCE_DIR}/ToClean
|
|
${MakeClean_BINARY_DIR}/ToClean
|
|
--build-generator ${CMAKE_GENERATOR}
|
|
--build-project ToClean
|
|
--build-makeprogram ${CMAKE_MAKE_PROGRAM}
|
|
--build-noclean
|
|
--build-target clean
|
|
COMMENT "Clean the ToClean Project"
|
|
)
|