diff options
Diffstat (limited to 'Tests/RunCMake')
-rw-r--r-- | Tests/RunCMake/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-NEW-iface-result.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-NEW-iface-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-NEW-iface-stderr.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-NEW-iface-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-NEW-iface.cmake (renamed from Tests/RunCMake/CMP0028/CMP0028-NEW-iface.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-NEW-result.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-NEW-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-NEW-stderr.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-NEW-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-NEW.cmake (renamed from Tests/RunCMake/CMP0028/CMP0028-NEW.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-OLD-iface-result.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-OLD-iface-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-OLD-iface-stderr.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-OLD-iface-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-OLD-iface.cmake (renamed from Tests/RunCMake/CMP0028/CMP0028-OLD-iface.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-OLD-result.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-OLD-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-OLD-stderr.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-OLD-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-OLD.cmake (renamed from Tests/RunCMake/CMP0028/CMP0028-OLD.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-WARN-iface-result.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-WARN-iface-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-WARN-iface-stderr.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-WARN-iface-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-WARN-iface.cmake (renamed from Tests/RunCMake/CMP0028/CMP0028-WARN-iface.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-WARN-result.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-WARN-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-WARN-stderr.txt (renamed from Tests/RunCMake/CMP0028/CMP0028-WARN-stderr.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMP0028-WARN.cmake (renamed from Tests/RunCMake/CMP0028/CMP0028-WARN.cmake) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/CMakeLists.txt (renamed from Tests/RunCMake/CMP0028/CMakeLists.txt) | 3 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/OnlyTargets-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/OnlyTargets-stderr.txt | 40 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/OnlyTargets.cmake | 56 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/RunCMakeTest.cmake (renamed from Tests/RunCMake/CMP0028/RunCMakeTest.cmake) | 2 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/empty.cpp (renamed from Tests/RunCMake/CMP0028/empty.cpp) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/LinkItemValidation/main.c | 4 |
26 files changed, 107 insertions, 1 deletions
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 5dc7031..2363d7d 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -94,7 +94,6 @@ add_RunCMake_test(CMP0019) add_RunCMake_test(CMP0022) add_RunCMake_test(CMP0026) add_RunCMake_test(CMP0027) -add_RunCMake_test(CMP0028) add_RunCMake_test(CMP0037) add_RunCMake_test(CMP0038) add_RunCMake_test(CMP0039) @@ -329,6 +328,7 @@ add_RunCMake_test(GoogleTest) # Note: does not actually depend on Google Test add_RunCMake_test(Graphviz) add_RunCMake_test(TargetPropertyGeneratorExpressions) add_RunCMake_test(Languages) +add_RunCMake_test(LinkItemValidation) add_RunCMake_test(LinkStatic) if(CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|Fujitsu|FujitsuClang)$") add_RunCMake_test(MetaCompileFeatures) diff --git a/Tests/RunCMake/CMP0028/CMP0028-NEW-iface-result.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW-iface-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-NEW-iface-result.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW-iface-result.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-NEW-iface-stderr.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW-iface-stderr.txt index 111d1f0..111d1f0 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-NEW-iface-stderr.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW-iface-stderr.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-NEW-iface.cmake b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW-iface.cmake index 1a71433..1a71433 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-NEW-iface.cmake +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW-iface.cmake diff --git a/Tests/RunCMake/CMP0028/CMP0028-NEW-result.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-NEW-result.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW-result.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-NEW-stderr.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW-stderr.txt index 17b25de..17b25de 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-NEW-stderr.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW-stderr.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-NEW.cmake b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW.cmake index a0a6ae8..a0a6ae8 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-NEW.cmake +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-NEW.cmake diff --git a/Tests/RunCMake/CMP0028/CMP0028-OLD-iface-result.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD-iface-result.txt index 573541a..573541a 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-OLD-iface-result.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD-iface-result.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-OLD-iface-stderr.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD-iface-stderr.txt index b7a0755..b7a0755 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-OLD-iface-stderr.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD-iface-stderr.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-OLD-iface.cmake b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD-iface.cmake index d7bd60e..d7bd60e 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-OLD-iface.cmake +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD-iface.cmake diff --git a/Tests/RunCMake/CMP0028/CMP0028-OLD-result.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD-result.txt index 573541a..573541a 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-OLD-result.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD-result.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-OLD-stderr.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD-stderr.txt index 586a876..586a876 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-OLD-stderr.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD-stderr.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-OLD.cmake b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD.cmake index d4a870b..d4a870b 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-OLD.cmake +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-OLD.cmake diff --git a/Tests/RunCMake/CMP0028/CMP0028-WARN-iface-result.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN-iface-result.txt index 573541a..573541a 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-WARN-iface-result.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN-iface-result.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-WARN-iface-stderr.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN-iface-stderr.txt index bb6a16e..bb6a16e 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-WARN-iface-stderr.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN-iface-stderr.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-WARN-iface.cmake b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN-iface.cmake index 9270023..9270023 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-WARN-iface.cmake +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN-iface.cmake diff --git a/Tests/RunCMake/CMP0028/CMP0028-WARN-result.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN-result.txt index 573541a..573541a 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-WARN-result.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN-result.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-WARN-stderr.txt b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN-stderr.txt index c0cb5b0..c0cb5b0 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-WARN-stderr.txt +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN-stderr.txt diff --git a/Tests/RunCMake/CMP0028/CMP0028-WARN.cmake b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN.cmake index 70a6cc6..70a6cc6 100644 --- a/Tests/RunCMake/CMP0028/CMP0028-WARN.cmake +++ b/Tests/RunCMake/LinkItemValidation/CMP0028-WARN.cmake diff --git a/Tests/RunCMake/CMP0028/CMakeLists.txt b/Tests/RunCMake/LinkItemValidation/CMakeLists.txt index 4f867df..185cd91 100644 --- a/Tests/RunCMake/CMP0028/CMakeLists.txt +++ b/Tests/RunCMake/LinkItemValidation/CMakeLists.txt @@ -1,3 +1,6 @@ cmake_minimum_required(VERSION 2.8.12) +if(NOT RunCMake_TEST MATCHES "^CMP0028") + cmake_minimum_required(VERSION 3.22) +endif() project(${RunCMake_TEST} CXX) include(${RunCMake_TEST}.cmake NO_POLICY_SCOPE) # policy used at end of dir diff --git a/Tests/RunCMake/LinkItemValidation/OnlyTargets-result.txt b/Tests/RunCMake/LinkItemValidation/OnlyTargets-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/LinkItemValidation/OnlyTargets-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/LinkItemValidation/OnlyTargets-stderr.txt b/Tests/RunCMake/LinkItemValidation/OnlyTargets-stderr.txt new file mode 100644 index 0000000..bbb0170 --- /dev/null +++ b/Tests/RunCMake/LinkItemValidation/OnlyTargets-stderr.txt @@ -0,0 +1,40 @@ +^CMake Error at OnlyTargets\.cmake:11 \(target_link_libraries\): + Target "exe" has LINK_LIBRARIES_ONLY_TARGETS enabled, but it links to: + + non_target_in_exe + + which is not a target\. Possible reasons include: +( + \*[^ +]+)* + +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) ++ +CMake Error at OnlyTargets\.cmake:21 \(target_link_libraries\): + Target "iface" has LINK_LIBRARIES_ONLY_TARGETS enabled, but its link + interface contains: + + non_target_in_iface + + which is not a target\. Possible reasons include: +( + \*[^ +]+)* + +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) ++ +CMake Error at OnlyTargets\.cmake:30 \(target_link_libraries\): + Target "iface_imported_checked" has LINK_LIBRARIES_ONLY_TARGETS enabled, + but its link interface contains: + + non_target_in_iface_imported_checked + + which is not a target\. Possible reasons include: +( + \*[^ +]+)* + +Call Stack \(most recent call first\): + CMakeLists\.txt:[0-9]+ \(include\) diff --git a/Tests/RunCMake/LinkItemValidation/OnlyTargets.cmake b/Tests/RunCMake/LinkItemValidation/OnlyTargets.cmake new file mode 100644 index 0000000..9417318 --- /dev/null +++ b/Tests/RunCMake/LinkItemValidation/OnlyTargets.cmake @@ -0,0 +1,56 @@ +enable_language(C) + +set(CMAKE_LINK_LIBRARIES_ONLY_TARGETS 1) + +# Use imported interface library to name toolchain-provided libraries. +add_library(toolchain::m INTERFACE IMPORTED) +set_property(TARGET toolchain::m PROPERTY IMPORTED_LIBNAME "m") + +# Linking directly warns. +add_executable(exe main.c) +target_link_libraries(exe PRIVATE + -lflag_in_exe # accepted + /abs/path/in_exe # accepted + rel/path/in_exe # accepted + toolchain::m # accepted + non_target_in_exe # rejected + ) + +# Link interfaces warn. +add_library(iface INTERFACE) +target_link_libraries(iface INTERFACE + -lflag_in_iface # accepted + /abs/path/in_iface # accepted + rel/path/in_iface # accepted + non_target_in_iface # rejected + ) + +# Imported target link interfaces warn if explicitly enabled. +add_library(iface_imported_checked INTERFACE IMPORTED) +target_link_libraries(iface_imported_checked INTERFACE + -lflag_iface_imported_checked # accepted + /abs/path/in_iface_imported_checked # accepted + rel/path/in_iface_imported_checked # accepted + non_target_in_iface_imported_checked # rejected + ) +set_property(TARGET iface_imported_checked PROPERTY LINK_LIBRARIES_ONLY_TARGETS 1) + +# Linking directly does not warn if explicitly disabled. +add_executable(exe_not_checked main.c) +target_link_libraries(exe_not_checked PRIVATE + non_target_in_exe_not_checked + ) +set_property(TARGET exe_not_checked PROPERTY LINK_LIBRARIES_ONLY_TARGETS 0) + +# Link interfaces do not warn if explicitly disabled. +add_library(iface_not_checked INTERFACE) +target_link_libraries(iface_not_checked INTERFACE + non_target_in_iface_not_checked + ) +set_property(TARGET iface_not_checked PROPERTY LINK_LIBRARIES_ONLY_TARGETS 0) + +# Imported target link interfaces do not warn if not explicitly enabled. +add_library(iface_imported_default INTERFACE IMPORTED) +target_link_libraries(iface_imported_default INTERFACE + non_target_in_iface_imported_default + ) diff --git a/Tests/RunCMake/CMP0028/RunCMakeTest.cmake b/Tests/RunCMake/LinkItemValidation/RunCMakeTest.cmake index 0c72ca2..c423f6a 100644 --- a/Tests/RunCMake/CMP0028/RunCMakeTest.cmake +++ b/Tests/RunCMake/LinkItemValidation/RunCMakeTest.cmake @@ -6,3 +6,5 @@ run_cmake(CMP0028-WARN) run_cmake(CMP0028-NEW-iface) run_cmake(CMP0028-OLD-iface) run_cmake(CMP0028-WARN-iface) + +run_cmake(OnlyTargets) diff --git a/Tests/RunCMake/CMP0028/empty.cpp b/Tests/RunCMake/LinkItemValidation/empty.cpp index e69de29..e69de29 100644 --- a/Tests/RunCMake/CMP0028/empty.cpp +++ b/Tests/RunCMake/LinkItemValidation/empty.cpp diff --git a/Tests/RunCMake/LinkItemValidation/main.c b/Tests/RunCMake/LinkItemValidation/main.c new file mode 100644 index 0000000..8488f4e --- /dev/null +++ b/Tests/RunCMake/LinkItemValidation/main.c @@ -0,0 +1,4 @@ +int main(void) +{ + return 0; +} |