summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-08-12 13:30:27 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2015-08-12 13:30:27 (GMT)
commit7216742ea61bd8853cf490d7605c6c7c0cffe187 (patch)
tree7aca5a85dee196a56dbe40a5122bc2c018a58294
parentb583800203aea14aa03629bd27ad07d3f9440b17 (diff)
parent8c076a8bdba8c5bc77fc01b3fafafa100fb59657 (diff)
downloadCMake-7216742ea61bd8853cf490d7605c6c7c0cffe187.zip
CMake-7216742ea61bd8853cf490d7605c6c7c0cffe187.tar.gz
CMake-7216742ea61bd8853cf490d7605c6c7c0cffe187.tar.bz2
Merge topic 'target_include_directories-relative-SYSTEM-dirs'
8c076a8b cmTarget: Remove unused AddSystemIncludeDirectories overload 5790aca4 target_include_directories: Support relative SYSTEM include dirs (#15464)
-rw-r--r--Source/cmTarget.cxx7
-rw-r--r--Source/cmTarget.h1
-rw-r--r--Source/cmTargetIncludeDirectoriesCommand.cxx20
-rw-r--r--Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt10
4 files changed, 28 insertions, 10 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index d3170e4..316d85c 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -1350,13 +1350,6 @@ cmTarget::AddSystemIncludeDirectories(const std::set<std::string> &incs)
this->SystemIncludeDirectories.insert(incs.begin(), incs.end());
}
-//----------------------------------------------------------------------------
-void
-cmTarget::AddSystemIncludeDirectories(const std::vector<std::string> &incs)
-{
- this->SystemIncludeDirectories.insert(incs.begin(), incs.end());
-}
-
#if defined(_WIN32) && !defined(__CYGWIN__)
//----------------------------------------------------------------------------
void
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index 490aaa3..2007b40 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -427,7 +427,6 @@ public:
cmTarget::LinkLibraryType llt) const;
void AddSystemIncludeDirectories(const std::set<std::string> &incs);
- void AddSystemIncludeDirectories(const std::vector<std::string> &incs);
std::set<std::string> const & GetSystemIncludeDirectories() const
{ return this->SystemIncludeDirectories; }
diff --git a/Source/cmTargetIncludeDirectoriesCommand.cxx b/Source/cmTargetIncludeDirectoriesCommand.cxx
index 7824c89..7dfe9ca 100644
--- a/Source/cmTargetIncludeDirectoriesCommand.cxx
+++ b/Source/cmTargetIncludeDirectoriesCommand.cxx
@@ -75,7 +75,23 @@ bool cmTargetIncludeDirectoriesCommand
tgt->InsertInclude(this->Join(content), lfbt, prepend);
if (system)
{
- tgt->AddSystemIncludeDirectories(content);
+ std::string prefix =
+ this->Makefile->GetCurrentSourceDirectory() + std::string("/");
+ std::set<std::string> sdirs;
+ for (std::vector<std::string>::const_iterator it = content.begin();
+ it != content.end(); ++it)
+ {
+ if (cmSystemTools::FileIsFullPath(it->c_str())
+ || cmGeneratorExpression::Find(*it) == 0)
+ {
+ sdirs.insert(*it);
+ }
+ else
+ {
+ sdirs.insert(prefix + *it);
+ }
+ }
+ tgt->AddSystemIncludeDirectories(sdirs);
}
return true;
}
@@ -91,7 +107,7 @@ void cmTargetIncludeDirectoriesCommand
if (system)
{
- std::string joined = cmJoin(content, ";");
+ std::string joined = this->Join(content);
tgt->AppendProperty("INTERFACE_SYSTEM_INCLUDE_DIRECTORIES",
joined.c_str());
}
diff --git a/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt b/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt
index 0215e93..dcee85e 100644
--- a/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt
+++ b/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt
@@ -35,6 +35,16 @@ add_library(imported_consumer2 imported_consumer.cpp)
target_link_libraries(imported_consumer2 imported_consumer)
target_compile_options(imported_consumer2 PRIVATE -Werror=unused-variable)
+# add a target which has a relative system include
+add_library(somelib imported_consumer.cpp)
+target_include_directories(somelib SYSTEM PUBLIC "systemlib_header_only")
+target_compile_options(somelib PRIVATE -Werror=unused-variable)
+
+# add a target which consumes a relative system include
+add_library(otherlib upstream.cpp)
+target_link_libraries(otherlib PUBLIC somelib)
+target_compile_options(somelib PRIVATE -Werror=unused-variable)
+
macro(do_try_compile error_option)
set(TC_ARGS
IFACE_TRY_COMPILE_${error_option}