From 4201a11c2b5a5bdb442f99f88a5f17d6ae7c4a4c Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 26 Oct 2018 09:11:42 -0400 Subject: Tests: add tests for empty-value keyword arguments in target_* Not all of these commands accept non-compilable (i.e., IMPORTED) targets, so those calls are currently just commented out. If they ever do start to accept them, the tests should be enabled. --- Tests/RunCMake/CMakeLists.txt | 5 +++++ Tests/RunCMake/target_compile_definitions/CMakeLists.txt | 5 +++++ Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake | 3 +++ .../target_compile_definitions/empty_keyword_args-result.txt | 1 + .../target_compile_definitions/empty_keyword_args-stderr.txt | 5 +++++ Tests/RunCMake/target_compile_definitions/empty_keyword_args.cmake | 5 +++++ Tests/RunCMake/target_compile_features/RunCMakeTest.cmake | 1 + Tests/RunCMake/target_compile_features/empty_keyword_args-result.txt | 1 + Tests/RunCMake/target_compile_features/empty_keyword_args-stderr.txt | 5 +++++ Tests/RunCMake/target_compile_features/empty_keyword_args.cmake | 5 +++++ Tests/RunCMake/target_compile_options/CMakeLists.txt | 5 +++++ Tests/RunCMake/target_compile_options/RunCMakeTest.cmake | 3 +++ Tests/RunCMake/target_compile_options/empty_keyword_args-result.txt | 1 + Tests/RunCMake/target_compile_options/empty_keyword_args-stderr.txt | 5 +++++ Tests/RunCMake/target_compile_options/empty_keyword_args.cmake | 5 +++++ Tests/RunCMake/target_include_directories/CMakeLists.txt | 5 +++++ Tests/RunCMake/target_include_directories/RunCMakeTest.cmake | 3 +++ .../target_include_directories/empty_keyword_args-result.txt | 1 + .../target_include_directories/empty_keyword_args-stderr.txt | 5 +++++ Tests/RunCMake/target_include_directories/empty_keyword_args.cmake | 5 +++++ Tests/RunCMake/target_link_directories/CMakeLists.txt | 5 +++++ Tests/RunCMake/target_link_directories/RunCMakeTest.cmake | 3 +++ Tests/RunCMake/target_link_directories/empty_keyword_args-result.txt | 1 + Tests/RunCMake/target_link_directories/empty_keyword_args-stderr.txt | 5 +++++ Tests/RunCMake/target_link_directories/empty_keyword_args.cmake | 5 +++++ Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake | 1 + Tests/RunCMake/target_link_libraries/empty_keyword_args.cmake | 4 ++++ Tests/RunCMake/target_link_options/RunCMakeTest.cmake | 2 ++ Tests/RunCMake/target_link_options/empty_keyword_args-result.txt | 1 + Tests/RunCMake/target_link_options/empty_keyword_args-stderr.txt | 4 ++++ Tests/RunCMake/target_link_options/empty_keyword_args.cmake | 5 +++++ Tests/RunCMake/target_sources/CMakeLists.txt | 5 +++++ Tests/RunCMake/target_sources/RunCMakeTest.cmake | 3 +++ Tests/RunCMake/target_sources/empty_keyword_args-result.txt | 1 + Tests/RunCMake/target_sources/empty_keyword_args-stderr.txt | 4 ++++ Tests/RunCMake/target_sources/empty_keyword_args.cmake | 5 +++++ 36 files changed, 128 insertions(+) create mode 100644 Tests/RunCMake/target_compile_definitions/CMakeLists.txt create mode 100644 Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/target_compile_definitions/empty_keyword_args-result.txt create mode 100644 Tests/RunCMake/target_compile_definitions/empty_keyword_args-stderr.txt create mode 100644 Tests/RunCMake/target_compile_definitions/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/target_compile_features/empty_keyword_args-result.txt create mode 100644 Tests/RunCMake/target_compile_features/empty_keyword_args-stderr.txt create mode 100644 Tests/RunCMake/target_compile_features/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/target_compile_options/CMakeLists.txt create mode 100644 Tests/RunCMake/target_compile_options/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/target_compile_options/empty_keyword_args-result.txt create mode 100644 Tests/RunCMake/target_compile_options/empty_keyword_args-stderr.txt create mode 100644 Tests/RunCMake/target_compile_options/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/target_include_directories/CMakeLists.txt create mode 100644 Tests/RunCMake/target_include_directories/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/target_include_directories/empty_keyword_args-result.txt create mode 100644 Tests/RunCMake/target_include_directories/empty_keyword_args-stderr.txt create mode 100644 Tests/RunCMake/target_include_directories/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/target_link_directories/CMakeLists.txt create mode 100644 Tests/RunCMake/target_link_directories/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/target_link_directories/empty_keyword_args-result.txt create mode 100644 Tests/RunCMake/target_link_directories/empty_keyword_args-stderr.txt create mode 100644 Tests/RunCMake/target_link_directories/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/target_link_libraries/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/target_link_options/empty_keyword_args-result.txt create mode 100644 Tests/RunCMake/target_link_options/empty_keyword_args-stderr.txt create mode 100644 Tests/RunCMake/target_link_options/empty_keyword_args.cmake create mode 100644 Tests/RunCMake/target_sources/CMakeLists.txt create mode 100644 Tests/RunCMake/target_sources/RunCMakeTest.cmake create mode 100644 Tests/RunCMake/target_sources/empty_keyword_args-result.txt create mode 100644 Tests/RunCMake/target_sources/empty_keyword_args-stderr.txt create mode 100644 Tests/RunCMake/target_sources/empty_keyword_args.cmake diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 90681b9..b2880b6 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -342,11 +342,16 @@ endif() add_RunCMake_test(File_Generate) add_RunCMake_test(ExportWithoutLanguage) +add_RunCMake_test(target_link_directories) add_RunCMake_test(target_link_libraries) add_RunCMake_test(add_link_options -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}) add_RunCMake_test(target_link_options -DCMAKE_C_COMPILER_ID=${CMAKE_C_COMPILER_ID}) +add_RunCMake_test(target_compile_definitions) add_RunCMake_test(target_compile_features) +add_RunCMake_test(target_compile_options) +add_RunCMake_test(target_include_directories) +add_RunCMake_test(target_sources) add_RunCMake_test(CheckModules) add_RunCMake_test(CheckIPOSupported) add_RunCMake_test(CommandLine -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}) diff --git a/Tests/RunCMake/target_compile_definitions/CMakeLists.txt b/Tests/RunCMake/target_compile_definitions/CMakeLists.txt new file mode 100644 index 0000000..14ef56e --- /dev/null +++ b/Tests/RunCMake/target_compile_definitions/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.11) + +project(${RunCMake_TEST} LANGUAGES NONE) + +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake b/Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake new file mode 100644 index 0000000..b67c598 --- /dev/null +++ b/Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake @@ -0,0 +1,3 @@ +include(RunCMake) + +run_cmake(empty_keyword_args) diff --git a/Tests/RunCMake/target_compile_definitions/empty_keyword_args-result.txt b/Tests/RunCMake/target_compile_definitions/empty_keyword_args-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/target_compile_definitions/empty_keyword_args-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_compile_definitions/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_compile_definitions/empty_keyword_args-stderr.txt new file mode 100644 index 0000000..d8fb3ba --- /dev/null +++ b/Tests/RunCMake/target_compile_definitions/empty_keyword_args-stderr.txt @@ -0,0 +1,5 @@ +CMake Error at empty_keyword_args.cmake:2 \(target_compile_definitions\): + target_compile_definitions may only set INTERFACE properties on INTERFACE + targets +Call Stack \(most recent call first\): + CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_compile_definitions/empty_keyword_args.cmake b/Tests/RunCMake/target_compile_definitions/empty_keyword_args.cmake new file mode 100644 index 0000000..cb94e87 --- /dev/null +++ b/Tests/RunCMake/target_compile_definitions/empty_keyword_args.cmake @@ -0,0 +1,5 @@ +add_library(iface INTERFACE) +target_compile_definitions(iface PUBLIC PRIVATE INTERFACE) +# Cannot be called with non-compilable targets. +#add_library(imported UNKNOWN IMPORTED) +#target_compile_definitions(imported PUBLIC PRIVATE INTERFACE) diff --git a/Tests/RunCMake/target_compile_features/RunCMakeTest.cmake b/Tests/RunCMake/target_compile_features/RunCMakeTest.cmake index 1f67f11..f8b0809 100644 --- a/Tests/RunCMake/target_compile_features/RunCMakeTest.cmake +++ b/Tests/RunCMake/target_compile_features/RunCMakeTest.cmake @@ -12,3 +12,4 @@ run_cmake(no_matching_cxx_feature) run_cmake(not_a_c_feature) run_cmake(no_matching_c_feature) run_cmake(cxx_not_enabled) +run_cmake(empty_keyword_args) diff --git a/Tests/RunCMake/target_compile_features/empty_keyword_args-result.txt b/Tests/RunCMake/target_compile_features/empty_keyword_args-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/target_compile_features/empty_keyword_args-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_compile_features/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_compile_features/empty_keyword_args-stderr.txt new file mode 100644 index 0000000..eecd3cf --- /dev/null +++ b/Tests/RunCMake/target_compile_features/empty_keyword_args-stderr.txt @@ -0,0 +1,5 @@ +CMake Error at empty_keyword_args.cmake:2 \(target_compile_features\): + target_compile_features may only set INTERFACE properties on INTERFACE + targets +Call Stack \(most recent call first\): + CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/target_compile_features/empty_keyword_args.cmake b/Tests/RunCMake/target_compile_features/empty_keyword_args.cmake new file mode 100644 index 0000000..8d57c1c --- /dev/null +++ b/Tests/RunCMake/target_compile_features/empty_keyword_args.cmake @@ -0,0 +1,5 @@ +add_library(iface INTERFACE) +target_compile_features(iface PUBLIC PRIVATE INTERFACE) +# Cannot be called with non-compilable targets. +#add_library(imported UNKNOWN IMPORTED) +#target_compile_features(imported PUBLIC PRIVATE INTERFACE) diff --git a/Tests/RunCMake/target_compile_options/CMakeLists.txt b/Tests/RunCMake/target_compile_options/CMakeLists.txt new file mode 100644 index 0000000..14ef56e --- /dev/null +++ b/Tests/RunCMake/target_compile_options/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.11) + +project(${RunCMake_TEST} LANGUAGES NONE) + +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/target_compile_options/RunCMakeTest.cmake b/Tests/RunCMake/target_compile_options/RunCMakeTest.cmake new file mode 100644 index 0000000..b67c598 --- /dev/null +++ b/Tests/RunCMake/target_compile_options/RunCMakeTest.cmake @@ -0,0 +1,3 @@ +include(RunCMake) + +run_cmake(empty_keyword_args) diff --git a/Tests/RunCMake/target_compile_options/empty_keyword_args-result.txt b/Tests/RunCMake/target_compile_options/empty_keyword_args-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/target_compile_options/empty_keyword_args-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_compile_options/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_compile_options/empty_keyword_args-stderr.txt new file mode 100644 index 0000000..381ff48 --- /dev/null +++ b/Tests/RunCMake/target_compile_options/empty_keyword_args-stderr.txt @@ -0,0 +1,5 @@ +CMake Error at empty_keyword_args.cmake:2 \(target_compile_options\): + target_compile_options may only set INTERFACE properties on INTERFACE + targets +Call Stack \(most recent call first\): + CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_compile_options/empty_keyword_args.cmake b/Tests/RunCMake/target_compile_options/empty_keyword_args.cmake new file mode 100644 index 0000000..8b92fcf --- /dev/null +++ b/Tests/RunCMake/target_compile_options/empty_keyword_args.cmake @@ -0,0 +1,5 @@ +add_library(iface INTERFACE) +target_compile_options(iface PUBLIC PRIVATE INTERFACE) +# Cannot be called with non-compilable targets. +#add_library(imported UNKNOWN IMPORTED) +#target_compile_options(imported PUBLIC PRIVATE INTERFACE) diff --git a/Tests/RunCMake/target_include_directories/CMakeLists.txt b/Tests/RunCMake/target_include_directories/CMakeLists.txt new file mode 100644 index 0000000..14ef56e --- /dev/null +++ b/Tests/RunCMake/target_include_directories/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.11) + +project(${RunCMake_TEST} LANGUAGES NONE) + +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/target_include_directories/RunCMakeTest.cmake b/Tests/RunCMake/target_include_directories/RunCMakeTest.cmake new file mode 100644 index 0000000..b67c598 --- /dev/null +++ b/Tests/RunCMake/target_include_directories/RunCMakeTest.cmake @@ -0,0 +1,3 @@ +include(RunCMake) + +run_cmake(empty_keyword_args) diff --git a/Tests/RunCMake/target_include_directories/empty_keyword_args-result.txt b/Tests/RunCMake/target_include_directories/empty_keyword_args-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/target_include_directories/empty_keyword_args-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_include_directories/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_include_directories/empty_keyword_args-stderr.txt new file mode 100644 index 0000000..6200703 --- /dev/null +++ b/Tests/RunCMake/target_include_directories/empty_keyword_args-stderr.txt @@ -0,0 +1,5 @@ +CMake Error at empty_keyword_args.cmake:2 \(target_include_directories\): + target_include_directories may only set INTERFACE properties on INTERFACE + targets +Call Stack \(most recent call first\): + CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_include_directories/empty_keyword_args.cmake b/Tests/RunCMake/target_include_directories/empty_keyword_args.cmake new file mode 100644 index 0000000..08eaf91 --- /dev/null +++ b/Tests/RunCMake/target_include_directories/empty_keyword_args.cmake @@ -0,0 +1,5 @@ +add_library(iface INTERFACE) +target_include_directories(iface PUBLIC PRIVATE INTERFACE) +# Cannot be called with non-compilable targets. +#add_library(imported UNKNOWN IMPORTED) +#target_include_directories(imported PUBLIC PRIVATE INTERFACE) diff --git a/Tests/RunCMake/target_link_directories/CMakeLists.txt b/Tests/RunCMake/target_link_directories/CMakeLists.txt new file mode 100644 index 0000000..14ef56e --- /dev/null +++ b/Tests/RunCMake/target_link_directories/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.11) + +project(${RunCMake_TEST} LANGUAGES NONE) + +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/target_link_directories/RunCMakeTest.cmake b/Tests/RunCMake/target_link_directories/RunCMakeTest.cmake new file mode 100644 index 0000000..b67c598 --- /dev/null +++ b/Tests/RunCMake/target_link_directories/RunCMakeTest.cmake @@ -0,0 +1,3 @@ +include(RunCMake) + +run_cmake(empty_keyword_args) diff --git a/Tests/RunCMake/target_link_directories/empty_keyword_args-result.txt b/Tests/RunCMake/target_link_directories/empty_keyword_args-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/target_link_directories/empty_keyword_args-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_link_directories/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_link_directories/empty_keyword_args-stderr.txt new file mode 100644 index 0000000..26ee9a1 --- /dev/null +++ b/Tests/RunCMake/target_link_directories/empty_keyword_args-stderr.txt @@ -0,0 +1,5 @@ +CMake Error at empty_keyword_args.cmake:2 \(target_link_directories\): + target_link_directories may only set INTERFACE properties on INTERFACE + targets +Call Stack \(most recent call first\): + CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_link_directories/empty_keyword_args.cmake b/Tests/RunCMake/target_link_directories/empty_keyword_args.cmake new file mode 100644 index 0000000..aadf80a --- /dev/null +++ b/Tests/RunCMake/target_link_directories/empty_keyword_args.cmake @@ -0,0 +1,5 @@ +add_library(iface INTERFACE) +target_link_directories(iface PUBLIC PRIVATE INTERFACE) +# Cannot be called with non-compilable targets. +#add_library(imported UNKNOWN IMPORTED) +#target_link_directories(imported PUBLIC PRIVATE INTERFACE) diff --git a/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake b/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake index a041d6d..0152d4c 100644 --- a/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake +++ b/Tests/RunCMake/target_link_libraries/RunCMakeTest.cmake @@ -19,3 +19,4 @@ run_cmake(SharedDepNotTarget) run_cmake(StaticPrivateDepNotExported) run_cmake(StaticPrivateDepNotTarget) run_cmake(UNKNOWN-IMPORTED-GLOBAL) +run_cmake(empty_keyword_args) diff --git a/Tests/RunCMake/target_link_libraries/empty_keyword_args.cmake b/Tests/RunCMake/target_link_libraries/empty_keyword_args.cmake new file mode 100644 index 0000000..440fa06 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries/empty_keyword_args.cmake @@ -0,0 +1,4 @@ +add_library(iface INTERFACE) +target_link_libraries(iface PUBLIC PRIVATE INTERFACE) +add_library(imported UNKNOWN IMPORTED) +target_link_libraries(imported PUBLIC PRIVATE INTERFACE) diff --git a/Tests/RunCMake/target_link_options/RunCMakeTest.cmake b/Tests/RunCMake/target_link_options/RunCMakeTest.cmake index 1eaa5d2..1d9ef8b 100644 --- a/Tests/RunCMake/target_link_options/RunCMakeTest.cmake +++ b/Tests/RunCMake/target_link_options/RunCMakeTest.cmake @@ -39,3 +39,5 @@ if(RunCMake_GENERATOR MATCHES "(Ninja|Makefile)") run_cmake_target(LINKER_expansion LINKER linker) run_cmake_target(LINKER_expansion LINKER_SHELL linker_shell) endif() + +run_cmake(empty_keyword_args) diff --git a/Tests/RunCMake/target_link_options/empty_keyword_args-result.txt b/Tests/RunCMake/target_link_options/empty_keyword_args-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/target_link_options/empty_keyword_args-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_link_options/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_link_options/empty_keyword_args-stderr.txt new file mode 100644 index 0000000..0103d00 --- /dev/null +++ b/Tests/RunCMake/target_link_options/empty_keyword_args-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at empty_keyword_args.cmake:2 \(target_link_options\): + target_link_options may only set INTERFACE properties on INTERFACE targets +Call Stack \(most recent call first\): + CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_link_options/empty_keyword_args.cmake b/Tests/RunCMake/target_link_options/empty_keyword_args.cmake new file mode 100644 index 0000000..a1a297e --- /dev/null +++ b/Tests/RunCMake/target_link_options/empty_keyword_args.cmake @@ -0,0 +1,5 @@ +add_library(iface INTERFACE) +target_link_options(iface PUBLIC PRIVATE INTERFACE) +# Cannot be called with non-compilable targets. +#add_library(imported UNKNOWN IMPORTED) +#target_link_options(imported PUBLIC PRIVATE INTERFACE) diff --git a/Tests/RunCMake/target_sources/CMakeLists.txt b/Tests/RunCMake/target_sources/CMakeLists.txt new file mode 100644 index 0000000..14ef56e --- /dev/null +++ b/Tests/RunCMake/target_sources/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.11) + +project(${RunCMake_TEST} LANGUAGES NONE) + +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/target_sources/RunCMakeTest.cmake b/Tests/RunCMake/target_sources/RunCMakeTest.cmake new file mode 100644 index 0000000..b67c598 --- /dev/null +++ b/Tests/RunCMake/target_sources/RunCMakeTest.cmake @@ -0,0 +1,3 @@ +include(RunCMake) + +run_cmake(empty_keyword_args) diff --git a/Tests/RunCMake/target_sources/empty_keyword_args-result.txt b/Tests/RunCMake/target_sources/empty_keyword_args-result.txt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/Tests/RunCMake/target_sources/empty_keyword_args-result.txt @@ -0,0 +1 @@ +1 diff --git a/Tests/RunCMake/target_sources/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_sources/empty_keyword_args-stderr.txt new file mode 100644 index 0000000..9ff5bb0 --- /dev/null +++ b/Tests/RunCMake/target_sources/empty_keyword_args-stderr.txt @@ -0,0 +1,4 @@ +CMake Error at empty_keyword_args.cmake:2 \(target_sources\): + target_sources may only set INTERFACE properties on INTERFACE targets +Call Stack \(most recent call first\): + CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_sources/empty_keyword_args.cmake b/Tests/RunCMake/target_sources/empty_keyword_args.cmake new file mode 100644 index 0000000..5cee451 --- /dev/null +++ b/Tests/RunCMake/target_sources/empty_keyword_args.cmake @@ -0,0 +1,5 @@ +add_library(iface INTERFACE) +target_sources(iface PUBLIC PRIVATE INTERFACE) +# Cannot be called with non-compilable targets. +#add_library(imported UNKNOWN IMPORTED) +#target_sources(imported PUBLIC PRIVATE INTERFACE) -- cgit v0.12 From 9f64974f5eff103ceda107c362c66c2adc1997ba Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 26 Oct 2018 09:14:44 -0400 Subject: cmTargetPropCommandBase: skip property setting if there's nothing to add Some target types don't allow setting certain properties even if there is no value being set there. Guard against this by avoiding property setting when there is nothing to add. --- Source/cmTargetPropCommandBase.cxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/cmTargetPropCommandBase.cxx b/Source/cmTargetPropCommandBase.cxx index 9a8fd96..cd82299 100644 --- a/Source/cmTargetPropCommandBase.cxx +++ b/Source/cmTargetPropCommandBase.cxx @@ -112,6 +112,9 @@ bool cmTargetPropCommandBase::PopulateTargetProperies( const std::string& scope, const std::vector& content, bool prepend, bool system) { + if (content.empty()) { + return true; + } if (scope == "PRIVATE" || scope == "PUBLIC") { if (!this->HandleDirectContent(this->Target, content, prepend, system)) { return false; -- cgit v0.12 From 45a49ae58abe835bc3ad446b054fa07035c33d60 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 26 Oct 2018 09:16:24 -0400 Subject: cmTargetPropCommandBase: simplify code path The outside of the loop does the same return expression. --- Source/cmTargetPropCommandBase.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/cmTargetPropCommandBase.cxx b/Source/cmTargetPropCommandBase.cxx index cd82299..48348f3 100644 --- a/Source/cmTargetPropCommandBase.cxx +++ b/Source/cmTargetPropCommandBase.cxx @@ -101,7 +101,7 @@ bool cmTargetPropCommandBase::ProcessContentArgs( for (unsigned int i = argIndex; i < args.size(); ++i, ++argIndex) { if (args[i] == "PUBLIC" || args[i] == "PRIVATE" || args[i] == "INTERFACE") { - return this->PopulateTargetProperies(scope, content, prepend, system); + break; } content.push_back(args[i]); } -- cgit v0.12 From 4babc9058a996e9cccd183eb25eda5faedd04591 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 22 Oct 2018 16:48:28 -0400 Subject: cmTargetPropCommandBase: check keywords after parsing The following was disallowed: add_library(iface INTERFACE) target_link_libraries(iface PUBLIC) just due to the mention of the `PUBLIC` keyword. Instead, only error if there are actually `PUBLIC` dependencies specified (and analogously for other restrictions). Update tests to expect this new behavior. --- Source/cmTargetPropCommandBase.cxx | 20 +++++++++++--------- .../empty_keyword_args-result.txt | 1 - .../empty_keyword_args-stderr.txt | 5 ----- .../empty_keyword_args-result.txt | 1 - .../empty_keyword_args-stderr.txt | 5 ----- .../empty_keyword_args-result.txt | 1 - .../empty_keyword_args-stderr.txt | 5 ----- .../empty_keyword_args-result.txt | 1 - .../empty_keyword_args-stderr.txt | 5 ----- .../empty_keyword_args-result.txt | 1 - .../empty_keyword_args-stderr.txt | 5 ----- .../empty_keyword_args-result.txt | 1 - .../empty_keyword_args-stderr.txt | 4 ---- .../target_sources/empty_keyword_args-result.txt | 1 - .../target_sources/empty_keyword_args-stderr.txt | 4 ---- 15 files changed, 11 insertions(+), 49 deletions(-) delete mode 100644 Tests/RunCMake/target_compile_definitions/empty_keyword_args-result.txt delete mode 100644 Tests/RunCMake/target_compile_definitions/empty_keyword_args-stderr.txt delete mode 100644 Tests/RunCMake/target_compile_features/empty_keyword_args-result.txt delete mode 100644 Tests/RunCMake/target_compile_features/empty_keyword_args-stderr.txt delete mode 100644 Tests/RunCMake/target_compile_options/empty_keyword_args-result.txt delete mode 100644 Tests/RunCMake/target_compile_options/empty_keyword_args-stderr.txt delete mode 100644 Tests/RunCMake/target_include_directories/empty_keyword_args-result.txt delete mode 100644 Tests/RunCMake/target_include_directories/empty_keyword_args-stderr.txt delete mode 100644 Tests/RunCMake/target_link_directories/empty_keyword_args-result.txt delete mode 100644 Tests/RunCMake/target_link_directories/empty_keyword_args-stderr.txt delete mode 100644 Tests/RunCMake/target_link_options/empty_keyword_args-result.txt delete mode 100644 Tests/RunCMake/target_link_options/empty_keyword_args-stderr.txt delete mode 100644 Tests/RunCMake/target_sources/empty_keyword_args-result.txt delete mode 100644 Tests/RunCMake/target_sources/empty_keyword_args-stderr.txt diff --git a/Source/cmTargetPropCommandBase.cxx b/Source/cmTargetPropCommandBase.cxx index 48348f3..1b8ee81 100644 --- a/Source/cmTargetPropCommandBase.cxx +++ b/Source/cmTargetPropCommandBase.cxx @@ -84,15 +84,6 @@ bool cmTargetPropCommandBase::ProcessContentArgs( this->SetError("called with invalid arguments"); return false; } - if (this->Target->GetType() == cmStateEnums::INTERFACE_LIBRARY && - scope != "INTERFACE") { - this->SetError("may only set INTERFACE properties on INTERFACE targets"); - return false; - } - if (this->Target->IsImported() && scope != "INTERFACE") { - this->SetError("may only set INTERFACE properties on IMPORTED targets"); - return false; - } ++argIndex; @@ -105,6 +96,17 @@ bool cmTargetPropCommandBase::ProcessContentArgs( } content.push_back(args[i]); } + if (!content.empty()) { + if (this->Target->GetType() == cmStateEnums::INTERFACE_LIBRARY && + scope != "INTERFACE") { + this->SetError("may only set INTERFACE properties on INTERFACE targets"); + return false; + } + if (this->Target->IsImported() && scope != "INTERFACE") { + this->SetError("may only set INTERFACE properties on IMPORTED targets"); + return false; + } + } return this->PopulateTargetProperies(scope, content, prepend, system); } diff --git a/Tests/RunCMake/target_compile_definitions/empty_keyword_args-result.txt b/Tests/RunCMake/target_compile_definitions/empty_keyword_args-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/target_compile_definitions/empty_keyword_args-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/target_compile_definitions/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_compile_definitions/empty_keyword_args-stderr.txt deleted file mode 100644 index d8fb3ba..0000000 --- a/Tests/RunCMake/target_compile_definitions/empty_keyword_args-stderr.txt +++ /dev/null @@ -1,5 +0,0 @@ -CMake Error at empty_keyword_args.cmake:2 \(target_compile_definitions\): - target_compile_definitions may only set INTERFACE properties on INTERFACE - targets -Call Stack \(most recent call first\): - CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_compile_features/empty_keyword_args-result.txt b/Tests/RunCMake/target_compile_features/empty_keyword_args-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/target_compile_features/empty_keyword_args-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/target_compile_features/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_compile_features/empty_keyword_args-stderr.txt deleted file mode 100644 index eecd3cf..0000000 --- a/Tests/RunCMake/target_compile_features/empty_keyword_args-stderr.txt +++ /dev/null @@ -1,5 +0,0 @@ -CMake Error at empty_keyword_args.cmake:2 \(target_compile_features\): - target_compile_features may only set INTERFACE properties on INTERFACE - targets -Call Stack \(most recent call first\): - CMakeLists.txt:3 \(include\) diff --git a/Tests/RunCMake/target_compile_options/empty_keyword_args-result.txt b/Tests/RunCMake/target_compile_options/empty_keyword_args-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/target_compile_options/empty_keyword_args-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/target_compile_options/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_compile_options/empty_keyword_args-stderr.txt deleted file mode 100644 index 381ff48..0000000 --- a/Tests/RunCMake/target_compile_options/empty_keyword_args-stderr.txt +++ /dev/null @@ -1,5 +0,0 @@ -CMake Error at empty_keyword_args.cmake:2 \(target_compile_options\): - target_compile_options may only set INTERFACE properties on INTERFACE - targets -Call Stack \(most recent call first\): - CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_include_directories/empty_keyword_args-result.txt b/Tests/RunCMake/target_include_directories/empty_keyword_args-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/target_include_directories/empty_keyword_args-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/target_include_directories/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_include_directories/empty_keyword_args-stderr.txt deleted file mode 100644 index 6200703..0000000 --- a/Tests/RunCMake/target_include_directories/empty_keyword_args-stderr.txt +++ /dev/null @@ -1,5 +0,0 @@ -CMake Error at empty_keyword_args.cmake:2 \(target_include_directories\): - target_include_directories may only set INTERFACE properties on INTERFACE - targets -Call Stack \(most recent call first\): - CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_link_directories/empty_keyword_args-result.txt b/Tests/RunCMake/target_link_directories/empty_keyword_args-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/target_link_directories/empty_keyword_args-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/target_link_directories/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_link_directories/empty_keyword_args-stderr.txt deleted file mode 100644 index 26ee9a1..0000000 --- a/Tests/RunCMake/target_link_directories/empty_keyword_args-stderr.txt +++ /dev/null @@ -1,5 +0,0 @@ -CMake Error at empty_keyword_args.cmake:2 \(target_link_directories\): - target_link_directories may only set INTERFACE properties on INTERFACE - targets -Call Stack \(most recent call first\): - CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_link_options/empty_keyword_args-result.txt b/Tests/RunCMake/target_link_options/empty_keyword_args-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/target_link_options/empty_keyword_args-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/target_link_options/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_link_options/empty_keyword_args-stderr.txt deleted file mode 100644 index 0103d00..0000000 --- a/Tests/RunCMake/target_link_options/empty_keyword_args-stderr.txt +++ /dev/null @@ -1,4 +0,0 @@ -CMake Error at empty_keyword_args.cmake:2 \(target_link_options\): - target_link_options may only set INTERFACE properties on INTERFACE targets -Call Stack \(most recent call first\): - CMakeLists.txt:5 \(include\) diff --git a/Tests/RunCMake/target_sources/empty_keyword_args-result.txt b/Tests/RunCMake/target_sources/empty_keyword_args-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/target_sources/empty_keyword_args-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/target_sources/empty_keyword_args-stderr.txt b/Tests/RunCMake/target_sources/empty_keyword_args-stderr.txt deleted file mode 100644 index 9ff5bb0..0000000 --- a/Tests/RunCMake/target_sources/empty_keyword_args-stderr.txt +++ /dev/null @@ -1,4 +0,0 @@ -CMake Error at empty_keyword_args.cmake:2 \(target_sources\): - target_sources may only set INTERFACE properties on INTERFACE targets -Call Stack \(most recent call first\): - CMakeLists.txt:5 \(include\) -- cgit v0.12