summaryrefslogtreecommitdiff
path: root/Tests/MakeClean/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/MakeClean/CMakeLists.txt')
-rw-r--r--Tests/MakeClean/CMakeLists.txt57
1 files changed, 57 insertions, 0 deletions
diff --git a/Tests/MakeClean/CMakeLists.txt b/Tests/MakeClean/CMakeLists.txt
new file mode 100644
index 000000000..97d3554bd
--- /dev/null
+++ b/Tests/MakeClean/CMakeLists.txt
@@ -0,0 +1,57 @@
+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(TOCLEAN_BUILT)
+ MESSAGE(FATAL_ERROR
+ "Building ToClean failed with the following output:\n"
+ "[${OUTPUT}]"
+ )
+ENDIF(TOCLEAN_BUILT)
+
+# 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(EXISTS "${f}")
+ MESSAGE(FATAL_ERROR "File \"${f}\" does not exist!")
+ ENDIF(EXISTS "${f}")
+ENDFOREACH(f)
+
+# 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(f)
+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"
+ )