diff options
author | Stephen Kelly <steveire@gmail.com> | 2014-02-26 14:59:18 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2014-03-31 21:18:44 (GMT) |
commit | bf98cc252f18e761ed9a57d2f7a9304bfbb621de (patch) | |
tree | 11dddd9eb207be750e39a959baae2bb3c115799b /Tests/GeneratorExpression | |
parent | 8cd113ad1d715cc9ce865956870cd462d3659089 (diff) | |
download | CMake-bf98cc252f18e761ed9a57d2f7a9304bfbb621de.zip CMake-bf98cc252f18e761ed9a57d2f7a9304bfbb621de.tar.gz CMake-bf98cc252f18e761ed9a57d2f7a9304bfbb621de.tar.bz2 |
Genex: Evaluate TARGET_OBJECTS as a normal expression.
Diffstat (limited to 'Tests/GeneratorExpression')
-rw-r--r-- | Tests/GeneratorExpression/CMakeLists.txt | 14 | ||||
-rw-r--r-- | Tests/GeneratorExpression/check_object_files.cmake | 48 | ||||
-rw-r--r-- | Tests/GeneratorExpression/objlib1.c | 5 | ||||
-rw-r--r-- | Tests/GeneratorExpression/objlib2.c | 5 |
4 files changed, 72 insertions, 0 deletions
diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt index a0e34ef..66b175a 100644 --- a/Tests/GeneratorExpression/CMakeLists.txt +++ b/Tests/GeneratorExpression/CMakeLists.txt @@ -258,3 +258,17 @@ set(CMP0044_TYPE NEW) add_subdirectory(CMP0044 ${CMAKE_BINARY_DIR}/CMP0044-NEW) set(CMP0044_TYPE OLD) add_subdirectory(CMP0044 ${CMAKE_BINARY_DIR}/CMP0044-OLD) + +add_library(objlib OBJECT objlib1.c objlib2.c) +file(GENERATE + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/objlib_files" + CONTENT "$<JOIN:$<TARGET_OBJECTS:objlib>,\n>\n" +) +add_custom_target(check_object_files ALL + COMMAND ${CMAKE_COMMAND} + "-DOBJLIB_LISTFILE=${CMAKE_CURRENT_BINARY_DIR}/objlib_files" + -DTEST_CONFIGURATION=${CMAKE_BUILD_TYPE} + -DEXPECTED_NUM_OBJECTFILES=2 + -P "${CMAKE_CURRENT_SOURCE_DIR}/check_object_files.cmake" + DEPENDS objlib +) diff --git a/Tests/GeneratorExpression/check_object_files.cmake b/Tests/GeneratorExpression/check_object_files.cmake new file mode 100644 index 0000000..889fe80 --- /dev/null +++ b/Tests/GeneratorExpression/check_object_files.cmake @@ -0,0 +1,48 @@ + +if (NOT EXISTS ${OBJLIB_LISTFILE}) + message(SEND_ERROR "Object listing file \"${OBJLIB_LISTFILE}\" not found!") +endif() + +file(STRINGS ${OBJLIB_LISTFILE} objlib_files) + +list(LENGTH objlib_files num_objectfiles) +if (NOT EXPECTED_NUM_OBJECTFILES EQUAL num_objectfiles) + message(SEND_ERROR "Unexpected number of entries in object list file (${num_objectfiles} instead of ${EXPECTED_NUM_OBJECTFILES})") +endif() + +foreach(objlib_file ${objlib_files}) + set(file_exists False) + if (EXISTS ${objlib_file}) + set(file_exists True) + endif() + + if (NOT file_exists) + if (objlib_file MATCHES ".(CURRENT_ARCH)") + string(REPLACE "$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)" "*" config_file "${objlib_file}") + string(REPLACE "$(PROJECT_NAME)" "GeneratorExpression" config_file "${config_file}") + string(REPLACE "$(CURRENT_ARCH)" "*" config_file "${config_file}") + file(GLOB_RECURSE files "${config_file}") + list(LENGTH files num_files) + if (NOT files) + message(SEND_ERROR "Got no files for expression ${config_file}") + endif() + set(file_exists True) + else() + foreach(config_macro "$(Configuration)" "$(OutDir)" "$(IntDir)") + string(REPLACE "${config_macro}" "${TEST_CONFIGURATION}" config_file "${objlib_file}") + list(APPEND attempts ${config_file}) + if (EXISTS ${config_file}) + set(file_exists True) + endif() + endforeach() + endif() + endif() + + if (NOT file_exists) + if(attempts) + list(REMOVE_DUPLICATES attempts) + set(tried " Tried ${attempts}") + endif() + message(SEND_ERROR "File \"${objlib_file}\" does not exist!${tried}") + endif() +endforeach() diff --git a/Tests/GeneratorExpression/objlib1.c b/Tests/GeneratorExpression/objlib1.c new file mode 100644 index 0000000..aa8de0a --- /dev/null +++ b/Tests/GeneratorExpression/objlib1.c @@ -0,0 +1,5 @@ + +void objlib1() +{ + +} diff --git a/Tests/GeneratorExpression/objlib2.c b/Tests/GeneratorExpression/objlib2.c new file mode 100644 index 0000000..3c7307a --- /dev/null +++ b/Tests/GeneratorExpression/objlib2.c @@ -0,0 +1,5 @@ + +void objlib2() +{ + +} |