diff options
author | Brad King <brad.king@kitware.com> | 2023-05-05 16:42:08 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2023-05-05 16:42:23 (GMT) |
commit | 5924630e6d4a383ef76412a6f560fbe852837e50 (patch) | |
tree | fbab8184157448c3251e09feee8e4ce5c0b6234e /Tests | |
parent | 2b5b09556c08bdbcd949e600daa3059f63da240a (diff) | |
parent | c42630ee62df80e649211e99c510cab7ac28fc0b (diff) | |
download | CMake-5924630e6d4a383ef76412a6f560fbe852837e50.zip CMake-5924630e6d4a383ef76412a6f560fbe852837e50.tar.gz CMake-5924630e6d4a383ef76412a6f560fbe852837e50.tar.bz2 |
Merge topic 'compile-only-genex'
c42630ee62 cmGeneratorExpressionNode: implement `COMPILE_ONLY` genex
0fb923c460 cmGeneratorExpressionNode: implement `COMPILE_ONLY` genex
Acked-by: Kitware Robot <kwrobot@kitware.com>
Tested-by: buildbot <buildbot@kitware.com>
Merge-request: !8411
Diffstat (limited to 'Tests')
8 files changed, 49 insertions, 0 deletions
diff --git a/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt b/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt index b2365ca..8231a5c 100644 --- a/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt +++ b/Tests/CMakeCommands/target_link_libraries/CMakeLists.txt @@ -155,3 +155,19 @@ target_link_libraries(TopDir SubDirC) add_library(TopDirImported IMPORTED INTERFACE) target_compile_definitions(TopDirImported INTERFACE DEF_TopDirImported) cmake_policy(POP) + +#---------------------------------------------------------------------------- +# Test $<COMPILE_ONLY:> genex. +cmake_policy(SET CMP0099 NEW) +add_library(dont_link_too SHARED compile_only.cpp) +target_compile_definitions(dont_link_too PUBLIC USE_EXAMPLE) +target_link_options(dont_link_too INTERFACE invalid_link_option) +target_link_libraries(dont_link_too INTERFACE invalid_link_library) + +add_library(uses_compile_only_genex SHARED compile_only.cpp) +target_link_libraries(uses_compile_only_genex PUBLIC $<COMPILE_ONLY:dont_link_too>) + +add_library(uses_compile_only_genex_static STATIC compile_only.cpp) +target_link_libraries(uses_compile_only_genex_static PRIVATE $<COMPILE_ONLY:dont_link_too>) +add_executable(uses_via_static_linking main.cxx) +target_link_libraries(uses_via_static_linking PRIVATE uses_compile_only_genex_static) diff --git a/Tests/CMakeCommands/target_link_libraries/compile_only.cpp b/Tests/CMakeCommands/target_link_libraries/compile_only.cpp new file mode 100644 index 0000000..7519bd0 --- /dev/null +++ b/Tests/CMakeCommands/target_link_libraries/compile_only.cpp @@ -0,0 +1,8 @@ + +#ifndef USE_EXAMPLE +# error "Missing propagated define" +#endif + +// Solaris needs non-empty content so ensure +// we have at least one symbol +int Solaris_requires_a_symbol_here = 0; diff --git a/Tests/ExportImport/Export/CMakeLists.txt b/Tests/ExportImport/Export/CMakeLists.txt index 6f19c13..67f2fcb 100644 --- a/Tests/ExportImport/Export/CMakeLists.txt +++ b/Tests/ExportImport/Export/CMakeLists.txt @@ -22,9 +22,18 @@ add_executable(testExe2 testExe2.c) set_property(TARGET testExe2 PROPERTY ENABLE_EXPORTS 1) set_property(TARGET testExe2 PROPERTY LINK_INTERFACE_LIBRARIES testExe2lib) +add_library(compileOnly INTERFACE) +target_compile_definitions(compileOnly INTERFACE FROM_compileOnly) +target_link_options(compileOnly INTERFACE -fthis-flag-does-not-exist) + add_library(testLib1 STATIC testLib1.c) add_library(testLib2 STATIC testLib2.c) target_link_libraries(testLib2 testLib1) +target_link_libraries(testLib2 + PRIVATE + testLib1 + "$<COMPILE_ONLY:compileOnly>") + # Test install(FILES) with generator expressions referencing testLib1. add_custom_command(TARGET testLib1 POST_BUILD @@ -556,6 +565,7 @@ install(FILES # Install and export from install tree. install( TARGETS + compileOnly testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3 testExe4 testExe2lib testLib4lib testLib4libdbg testLib4libopt testLib6 testLib7 testLib8 diff --git a/Tests/ExportImport/Export/testLib2.c b/Tests/ExportImport/Export/testLib2.c index 7a5206f..f5faffa 100644 --- a/Tests/ExportImport/Export/testLib2.c +++ b/Tests/ExportImport/Export/testLib2.c @@ -1,4 +1,8 @@ +#ifndef FROM_compileOnly +# error "Usage requirements from `compileOnly` not found" +#endif + extern int testLib1(void); int testLib2(void) diff --git a/Tests/RunCMake/GeneratorExpression/COMPILE_ONLY-not-compiling-result.txt b/Tests/RunCMake/GeneratorExpression/COMPILE_ONLY-not-compiling-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/GeneratorExpression/COMPILE_ONLY-not-compiling-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/GeneratorExpression/COMPILE_ONLY-not-compiling-stderr.txt b/Tests/RunCMake/GeneratorExpression/COMPILE_ONLY-not-compiling-stderr.txt new file mode 100644 index 0000000..8c93d59 --- /dev/null +++ b/Tests/RunCMake/GeneratorExpression/COMPILE_ONLY-not-compiling-stderr.txt @@ -0,0 +1,8 @@ +CMake Error at COMPILE_ONLY-not-compiling.cmake:1 \(add_custom_target\): + Error evaluating generator expression: + + \$<COMPILE_ONLY:something> + + \$<COMPILE_ONLY:...> may only be used for linking +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/GeneratorExpression/COMPILE_ONLY-not-compiling.cmake b/Tests/RunCMake/GeneratorExpression/COMPILE_ONLY-not-compiling.cmake new file mode 100644 index 0000000..1bc75f9 --- /dev/null +++ b/Tests/RunCMake/GeneratorExpression/COMPILE_ONLY-not-compiling.cmake @@ -0,0 +1 @@ +add_custom_target(Custom ALL COMMAND ${CMAKE_COMMAND} -E echo $<COMPILE_ONLY:something>) diff --git a/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake b/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake index b139210..3fd9947 100644 --- a/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake +++ b/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake @@ -22,6 +22,7 @@ run_cmake(NonValidTarget-CXX_COMPILER_VERSION) run_cmake(NonValidTarget-Fortran_COMPILER_VERSION) run_cmake(NonValidTarget-TARGET_PROPERTY) run_cmake(NonValidTarget-TARGET_POLICY) +run_cmake(COMPILE_ONLY-not-compiling) run_cmake(LINK_ONLY-not-linking) run_cmake(TARGET_EXISTS-no-arg) run_cmake(TARGET_EXISTS-empty-arg) |