summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvraham Shukron <avraham.shukron@gmail.com>2019-07-19 19:50:59 (GMT)
committerBrad King <brad.king@kitware.com>2019-07-22 14:23:39 (GMT)
commit680a3c63bb3a6485a1774a457f3f2a63ad96b728 (patch)
tree91804953565e546801f09ec7166b19e3e4bebcb2
parent62b5d1e4adf4f21a953557edf6552e3a81f47c07 (diff)
downloadCMake-680a3c63bb3a6485a1774a457f3f2a63ad96b728.zip
CMake-680a3c63bb3a6485a1774a457f3f2a63ad96b728.tar.gz
CMake-680a3c63bb3a6485a1774a457f3f2a63ad96b728.tar.bz2
target_*: Allow setting INTERFACE properties of UNKNOWN IMPORTED targets
Extend the change made by commit fe4b25ec2f (Teach target_* commands to set INTERFACE properties of IMPORTED targets, 2017-09-18, v3.11.0-rc1~433^2~2) to work with imported targets of type `UNKNOWN`. Fixes: #19434
-rw-r--r--Source/cmTargetPropCommandBase.cxx3
-rw-r--r--Tests/RunCMake/add_library/UNKNOWNwithOnlyObjectSources-stderr.txt2
-rw-r--r--Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake1
-rw-r--r--Tests/RunCMake/target_compile_definitions/unknown_imported_target.cmake11
4 files changed, 15 insertions, 2 deletions
diff --git a/Source/cmTargetPropCommandBase.cxx b/Source/cmTargetPropCommandBase.cxx
index 2f93e39..3aa845c 100644
--- a/Source/cmTargetPropCommandBase.cxx
+++ b/Source/cmTargetPropCommandBase.cxx
@@ -37,7 +37,8 @@ bool cmTargetPropCommandBase::HandleArguments(
(this->Target->GetType() != cmStateEnums::SHARED_LIBRARY) &&
(this->Target->GetType() != cmStateEnums::MODULE_LIBRARY) &&
(this->Target->GetType() != cmStateEnums::OBJECT_LIBRARY) &&
- (this->Target->GetType() != cmStateEnums::INTERFACE_LIBRARY)) {
+ (this->Target->GetType() != cmStateEnums::INTERFACE_LIBRARY) &&
+ (this->Target->GetType() != cmStateEnums::UNKNOWN_LIBRARY)) {
this->SetError("called with non-compilable target type");
return false;
}
diff --git a/Tests/RunCMake/add_library/UNKNOWNwithOnlyObjectSources-stderr.txt b/Tests/RunCMake/add_library/UNKNOWNwithOnlyObjectSources-stderr.txt
index e332281..838992b 100644
--- a/Tests/RunCMake/add_library/UNKNOWNwithOnlyObjectSources-stderr.txt
+++ b/Tests/RunCMake/add_library/UNKNOWNwithOnlyObjectSources-stderr.txt
@@ -1,4 +1,4 @@
^CMake Error at UNKNOWNwithOnlyObjectSources.cmake:[0-9]+ \(target_sources\):
- target_sources called with non-compilable target type
+ target_sources may only set INTERFACE properties on IMPORTED targets
Call Stack \(most recent call first\):
CMakeLists.txt:[0-9]+ \(include\)$
diff --git a/Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake b/Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake
index b67c598..a419cc9 100644
--- a/Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake
+++ b/Tests/RunCMake/target_compile_definitions/RunCMakeTest.cmake
@@ -1,3 +1,4 @@
include(RunCMake)
run_cmake(empty_keyword_args)
+run_cmake(unknown_imported_target)
diff --git a/Tests/RunCMake/target_compile_definitions/unknown_imported_target.cmake b/Tests/RunCMake/target_compile_definitions/unknown_imported_target.cmake
new file mode 100644
index 0000000..4ae1c0d
--- /dev/null
+++ b/Tests/RunCMake/target_compile_definitions/unknown_imported_target.cmake
@@ -0,0 +1,11 @@
+# Test that target_compile_definitions works on UNKNOWN IMPORTED target
+add_library(imported UNKNOWN IMPORTED)
+target_compile_definitions(imported INTERFACE FOO)
+
+get_target_property(IMPORTED_INTERFACE_CDS imported INTERFACE_COMPILE_DEFINITIONS)
+
+if (NOT FOO IN_LIST IMPORTED_INTERFACE_CDS)
+ message(
+ FATAL_ERROR "FOO should be in INTERFACE_COMPILE_DEFINITIONS.\n"
+ "Actual INTERFACE_COMPILE_DEFINITIONS: " ${IMPORTED_INTERFACE_CDS})
+endif()