summaryrefslogtreecommitdiffstats
path: root/Tests/GeneratorExpression
diff options
context:
space:
mode:
authorMichael Herwig <develop@michael-herwig.de>2024-05-31 16:15:55 (GMT)
committerMichael Herwig <develop@michael-herwig.de>2024-09-10 11:24:24 (GMT)
commit4a11772618decd7af2da96af41c1c595693fb17a (patch)
tree4a92e66bb0842d891ad499074faba044c1efdefa /Tests/GeneratorExpression
parent9673f61be1573b7e2b701da8a6ad0fb4c8cac4a1 (diff)
downloadCMake-4a11772618decd7af2da96af41c1c595693fb17a.zip
CMake-4a11772618decd7af2da96af41c1c595693fb17a.tar.gz
CMake-4a11772618decd7af2da96af41c1c595693fb17a.tar.bz2
GenEx: Limit TARGET_PROPERTY transitive closure optimization to subgraphs
Fixes: #25728
Diffstat (limited to 'Tests/GeneratorExpression')
-rw-r--r--Tests/GeneratorExpression/CMakeLists.txt11
-rw-r--r--Tests/GeneratorExpression/check-part2.cmake2
2 files changed, 13 insertions, 0 deletions
diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt
index be750e1..b0064ae 100644
--- a/Tests/GeneratorExpression/CMakeLists.txt
+++ b/Tests/GeneratorExpression/CMakeLists.txt
@@ -112,6 +112,15 @@ target_link_libraries(empty3 LINK_PUBLIC empty2 empty4)
add_library(empty5 empty.cpp)
target_include_directories(empty5 PRIVATE /empty5/private1 /empty5/private2)
+add_library(interface1 INTERFACE)
+target_sources(interface1 INTERFACE foo.c bar.cpp)
+
+set(interface1Sources $<TARGET_PROPERTY:interface1,INTERFACE_SOURCES>)
+set(interface1MergeSources $<LIST:APPEND,$<LIST:FILTER,${interface1Sources},INCLUDE,.*\\.c$>,$<LIST:FILTER,${interface1Sources},EXCLUDE,.*\\.c$>>)
+
+add_library(interface2 INTERFACE)
+target_sources(interface2 INTERFACE ${interface1MergeSources})
+
add_custom_target(check-part2 ALL
COMMAND ${msys2_no_conv} ${CMAKE_COMMAND}
-Dtest_incomplete_1=$<
@@ -147,6 +156,8 @@ add_custom_target(check-part2 ALL
-Dtest_target_includes6=$<TARGET_PROPERTY:empty3,INCLUDE_DIRECTORIES>
-Dtest_target_includes7=$<TARGET_PROPERTY:empty1,INTERFACE_INCLUDE_DIRECTORIES>
-Dtest_target_includes8=$<TARGET_PROPERTY:empty5,INCLUDE_DIRECTORIES>
+ -Dtest_target_closure1=$<JOIN:$<LIST:SORT,${interface1MergeSources}>,$<COMMA>>
+ -Dtest_target_closure2=$<JOIN:$<LIST:SORT,$<TARGET_PROPERTY:interface2,INTERFACE_SOURCES>>,$<COMMA>>
-Dtest_arbitrary_content_comma_1=$<1:a,>
-Dtest_arbitrary_content_comma_2=$<1:,a>
-Dtest_arbitrary_content_comma_3=$<1:a,,>
diff --git a/Tests/GeneratorExpression/check-part2.cmake b/Tests/GeneratorExpression/check-part2.cmake
index a1db5f6..e9c5e5c 100644
--- a/Tests/GeneratorExpression/check-part2.cmake
+++ b/Tests/GeneratorExpression/check-part2.cmake
@@ -34,6 +34,8 @@ check(test_target_includes5 "/empty2/public;/empty3/public;/empty2/public;/empty
check(test_target_includes6 "/empty3/public;/empty3/private;/empty2/public;/empty3/public;/empty4/public")
check(test_target_includes7 "/empty1/public;/empty2/public;/empty3/public;/empty4/public")
check(test_target_includes8 "/empty5/private1;/empty5/private2")
+check(test_target_closure1 "bar.cpp,foo.c")
+check(test_target_closure2 "bar.cpp,foo.c")
check(test_arbitrary_content_comma_1 "a,")
check(test_arbitrary_content_comma_2 ",a")
check(test_arbitrary_content_comma_3 "a,,")