diff options
author | Stephen Kelly <steveire@gmail.com> | 2014-10-30 23:41:53 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2014-11-24 20:54:41 (GMT) |
commit | 4cf5179c77237f3eb56f85eddebc43895691694c (patch) | |
tree | 4ab200eaf6c05ccd098eeb0f1101c0c6e2745c89 /Tests/Module | |
parent | 2ed0088b2abc591bb5ba6b4a13ee9997231883eb (diff) | |
download | CMake-4cf5179c77237f3eb56f85eddebc43895691694c.zip CMake-4cf5179c77237f3eb56f85eddebc43895691694c.tar.gz CMake-4cf5179c77237f3eb56f85eddebc43895691694c.tar.bz2 |
WCDH: Make it possible to generate multiple files.
Extend the write_compiler_detection_header interface to allow
specifying a location for supplementary files, and getting the
list of resulting files as a variable.
Diffstat (limited to 'Tests/Module')
4 files changed, 58 insertions, 23 deletions
diff --git a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt index 645cc65..b1bc822 100644 --- a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt +++ b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt @@ -67,6 +67,22 @@ add_executable(WriteCompilerDetectionHeader main.cpp) set_property(TARGET WriteCompilerDetectionHeader PROPERTY CXX_STANDARD 98) set_defines(WriteCompilerDetectionHeader "${true_defs}" "${false_defs}") +write_compiler_detection_header( + FILE "${CMAKE_CURRENT_BINARY_DIR}/compiler_multi_files/multi_file_compiler_detection.h" + PREFIX MULTI + OUTPUT_FILES_VAR multi_files + OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/compiler_multi_files/compiler_support" + COMPILERS GNU Clang + VERSION 3.1 + FEATURES + ${cxx_known_features} ${c_known_features} +) + +add_executable(multi_files multi_files.cpp) +set_property(TARGET multi_files PROPERTY CXX_STANDARD 98) +target_include_directories(multi_files PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/compiler_multi_files) +set_defines(multi_files "${true_defs}" "${false_defs}") + if(MSVC) return() # MSVC has only one mode. endif() @@ -86,3 +102,8 @@ endif() add_executable(WriteCompilerDetectionHeader_11 main.cpp) set_property(TARGET WriteCompilerDetectionHeader_11 PROPERTY CXX_STANDARD 11) set_defines(WriteCompilerDetectionHeader_11 "${true_defs}" "${false_defs}") + +add_executable(multi_files_11 multi_files.cpp) +set_property(TARGET multi_files_11 PROPERTY CXX_STANDARD 11) +target_include_directories(multi_files_11 PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/compiler_multi_files) +set_defines(multi_files_11 "${true_defs}" "${false_defs}") diff --git a/Tests/Module/WriteCompilerDetectionHeader/compile_tests.h b/Tests/Module/WriteCompilerDetectionHeader/compile_tests.h new file mode 100644 index 0000000..8b547d8 --- /dev/null +++ b/Tests/Module/WriteCompilerDetectionHeader/compile_tests.h @@ -0,0 +1,25 @@ + +#define JOIN_IMPL(A, B) A ## B +#define JOIN(A, B) JOIN_IMPL(A, B) + +#define CHECK(FEATURE) (JOIN(PREFIX, JOIN(_COMPILER_, FEATURE)) == JOIN(EXPECTED_COMPILER_, FEATURE)) + +#if !CHECK(CXX_DELEGATING_CONSTRUCTORS) +#error cxx_delegating_constructors expected availability did not match. +#endif + +#if !CHECK(CXX_VARIADIC_TEMPLATES) +#error cxx_variadic_templates expected availability did not match. +#endif + +#if !CHECK(VERSION_MAJOR) +#error Compiler major version did not match. +#endif + +#if !CHECK(VERSION_MINOR) +#error Compiler minor version did not match. +#endif + +#if !CHECK(VERSION_PATCH) +#error Compiler patch version did not match. +#endif diff --git a/Tests/Module/WriteCompilerDetectionHeader/main.cpp b/Tests/Module/WriteCompilerDetectionHeader/main.cpp index b807ad5..82b2191 100644 --- a/Tests/Module/WriteCompilerDetectionHeader/main.cpp +++ b/Tests/Module/WriteCompilerDetectionHeader/main.cpp @@ -1,29 +1,8 @@ #include "test_compiler_detection.h" -#define JOIN_IMPL(A, B) A ## B -#define JOIN(A, B) JOIN_IMPL(A, B) -#define CHECK(FEATURE) (JOIN(TEST_COMPILER_, FEATURE) == JOIN(EXPECTED_COMPILER_, FEATURE)) - -#if !CHECK(CXX_DELEGATING_CONSTRUCTORS) -#error cxx_delegating_constructors expected availability did not match. -#endif - -#if !CHECK(CXX_VARIADIC_TEMPLATES) -#error cxx_variadic_templates expected availability did not match. -#endif - -#if !CHECK(VERSION_MAJOR) -#error Compiler major version did not match. -#endif - -#if !CHECK(VERSION_MINOR) -#error Compiler minor version did not match. -#endif - -#if !CHECK(VERSION_PATCH) -#error Compiler patch version did not match. -#endif +#define PREFIX TEST +#include "compile_tests.h" int main() { diff --git a/Tests/Module/WriteCompilerDetectionHeader/multi_files.cpp b/Tests/Module/WriteCompilerDetectionHeader/multi_files.cpp new file mode 100644 index 0000000..ca29823 --- /dev/null +++ b/Tests/Module/WriteCompilerDetectionHeader/multi_files.cpp @@ -0,0 +1,10 @@ + +#include "multi_file_compiler_detection.h" + +#define PREFIX MULTI +#include "compile_tests.h" + +int main() +{ + return 0; +} |