This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  1eea30f266edfa503676a0697d4f37508760c43d (commit)
       via  97fae68b81d7dbb5dda9fe21f860863bcc0c7183 (commit)
      from  f9cd8dd68e193ba424a688e047648c700e26dde0 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1eea30f266edfa503676a0697d4f37508760c43d
commit 1eea30f266edfa503676a0697d4f37508760c43d
Merge: f9cd8dd 97fae68
Author:     Stephen Kelly <steve...@gmail.com>
AuthorDate: Tue Dec 10 12:04:32 2013 -0500
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Tue Dec 10 12:04:32 2013 -0500

    Merge topic 'remove-INTERFACE-build-targets' into next
    
    97fae68 Remove INTERFACE build targets.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=97fae68b81d7dbb5dda9fe21f860863bcc0c7183
commit 97fae68b81d7dbb5dda9fe21f860863bcc0c7183
Author:     Stephen Kelly <steve...@gmail.com>
AuthorDate: Tue Dec 10 17:16:08 2013 +0100
Commit:     Stephen Kelly <steve...@gmail.com>
CommitDate: Tue Dec 10 17:58:36 2013 +0100

    Remove INTERFACE build targets.
    
    Commit b04f3b9a (Create make rules for INTERFACE_LIBRARY
    targets., 2013-08-21) extended the makefile generator to create
    build targets for INTERFACE_LIBRARY targets. No other generators
    were extended with this feature.
    
    This conflicts with the feature of whitelisting of target properties
    read from INTERFACE_LIBRARY targets. The INTERFACE_* properties
    of the INTERFACE_LIBRARY may legitimately contain TARGET_PROPERTY
    generator expressions for reading properties from the 'head target'.
    The 'head target' would be the INTERFACE_LIBRARY itself when creating
    the build rules for it, which means that non-whitelisted properties
    would be read.

diff --git a/Source/cmComputeTargetDepends.cxx 
b/Source/cmComputeTargetDepends.cxx
index cb9e37e..02fd173 100644
--- a/Source/cmComputeTargetDepends.cxx
+++ b/Source/cmComputeTargetDepends.cxx
@@ -199,6 +199,10 @@ void cmComputeTargetDepends::CollectTargetDepends(int 
depender_index)
 {
   // Get the depender.
   cmTarget* depender = this->Targets[depender_index];
+  if (depender->GetType() == cmTarget::INTERFACE_LIBRARY)
+    {
+    return;
+    }
 
   // Loop over all targets linked directly in all configs.
   // We need to make targets depend on the union of all config-specific
@@ -208,15 +212,7 @@ void cmComputeTargetDepends::CollectTargetDepends(int 
depender_index)
   std::set<cmStdString> emitted;
   {
   std::vector<std::string> tlibs;
-  if (depender->GetType() == cmTarget::INTERFACE_LIBRARY)
-    {
-    // For INTERFACE_LIBRARY depend on the interface instead.
-    depender->GetInterfaceLinkLibraries(0, tlibs, depender);
-    }
-  else
-    {
-    depender->GetDirectLinkLibraries(0, tlibs, depender);
-    }
+  depender->GetDirectLinkLibraries(0, tlibs, depender);
   // A target should not depend on itself.
   emitted.insert(depender->GetName());
   for(std::vector<std::string>::const_iterator lib = tlibs.begin();
@@ -237,15 +233,8 @@ void cmComputeTargetDepends::CollectTargetDepends(int 
depender_index)
     it != configs.end(); ++it)
     {
     std::vector<std::string> tlibs;
-    if (depender->GetType() == cmTarget::INTERFACE_LIBRARY)
-      {
-      // For INTERFACE_LIBRARY depend on the interface instead.
-      depender->GetInterfaceLinkLibraries(it->c_str(), tlibs, depender);
-      }
-    else
-      {
-      depender->GetDirectLinkLibraries(it->c_str(), tlibs, depender);
-      }
+    depender->GetDirectLinkLibraries(it->c_str(), tlibs, depender);
+
     // A target should not depend on itself.
     emitted.insert(depender->GetName());
     for(std::vector<std::string>::const_iterator lib = tlibs.begin();
diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx 
b/Source/cmGlobalUnixMakefileGenerator3.cxx
index 6333873..52465dc 100644
--- a/Source/cmGlobalUnixMakefileGenerator3.cxx
+++ b/Source/cmGlobalUnixMakefileGenerator3.cxx
@@ -480,7 +480,6 @@ cmGlobalUnixMakefileGenerator3
        (l->second->GetType() == cmTarget::SHARED_LIBRARY) ||
        (l->second->GetType() == cmTarget::MODULE_LIBRARY) ||
        (l->second->GetType() == cmTarget::OBJECT_LIBRARY) ||
-       (l->second->GetType() == cmTarget::INTERFACE_LIBRARY) ||
        (l->second->GetType() == cmTarget::UTILITY))
       {
       if(l->second->Target->IsImported())
@@ -658,7 +657,6 @@ cmGlobalUnixMakefileGenerator3
           (t->second->GetType() == cmTarget::SHARED_LIBRARY) ||
           (t->second->GetType() == cmTarget::MODULE_LIBRARY) ||
           (t->second->GetType() == cmTarget::OBJECT_LIBRARY) ||
-          (t->second->GetType() == cmTarget::INTERFACE_LIBRARY) ||
           (t->second->GetType() == cmTarget::UTILITY)))
         {
         // Add a rule to build the target by name.
@@ -680,10 +678,6 @@ cmGlobalUnixMakefileGenerator3
                           t->second->GetName(), depends, commands,
                           true);
 
-        if (t->second->GetType() == cmTarget::INTERFACE_LIBRARY)
-          {
-          continue;
-          }
         // Add a fast rule to build the target
         std::string localName =
                           lg->GetRelativeTargetDirectory(*t->second->Target);
@@ -757,7 +751,6 @@ cmGlobalUnixMakefileGenerator3
         || (t->second->GetType() == cmTarget::SHARED_LIBRARY)
         || (t->second->GetType() == cmTarget::MODULE_LIBRARY)
         || (t->second->GetType() == cmTarget::OBJECT_LIBRARY)
-        || (t->second->GetType() == cmTarget::INTERFACE_LIBRARY)
         || (t->second->GetType() == cmTarget::UTILITY)))
       {
       std::string makefileName;
@@ -774,64 +767,53 @@ cmGlobalUnixMakefileGenerator3
         << localName << "\n\n";
 
       commands.clear();
+      makeTargetName = localName;
+      makeTargetName += "/depend";
+      commands.push_back(lg->GetRecursiveMakeCall
+                         (makefileName.c_str(),makeTargetName.c_str()));
 
-      if(t->second->GetType() != cmTarget::INTERFACE_LIBRARY)
+      // add requires if we need it for this generator
+      if (needRequiresStep)
         {
         makeTargetName = localName;
-        makeTargetName += "/depend";
+        makeTargetName += "/requires";
         commands.push_back(lg->GetRecursiveMakeCall
                           (makefileName.c_str(),makeTargetName.c_str()));
+        }
+      makeTargetName = localName;
+      makeTargetName += "/build";
+      commands.push_back(lg->GetRecursiveMakeCall
+                         (makefileName.c_str(),makeTargetName.c_str()));
 
-        // add requires if we need it for this generator
-        if (needRequiresStep)
-          {
-          makeTargetName = localName;
-          makeTargetName += "/requires";
-          commands.push_back(lg->GetRecursiveMakeCall
-                            (makefileName.c_str(),makeTargetName.c_str()));
-          }
-        makeTargetName = localName;
-        makeTargetName += "/build";
-        commands.push_back(lg->GetRecursiveMakeCall
-                            (makefileName.c_str(),makeTargetName.c_str()));
-
-        // Write the rule.
-        localName += "/all";
-        depends.clear();
+      // Write the rule.
+      localName += "/all";
+      depends.clear();
 
-        std::string progressDir =
-          lg->GetMakefile()->GetHomeOutputDirectory();
-        progressDir += cmake::GetCMakeFilesDirectory();
+      std::string progressDir =
+        lg->GetMakefile()->GetHomeOutputDirectory();
+      progressDir += cmake::GetCMakeFilesDirectory();
+        {
+        cmOStringStream progCmd;
+        progCmd << "$(CMAKE_COMMAND) -E cmake_progress_report ";
+        // all target counts
+        progCmd << lg->Convert(progressDir.c_str(),
+                                cmLocalGenerator::FULL,
+                                cmLocalGenerator::SHELL);
+        progCmd << " ";
+        std::vector<unsigned long>& progFiles =
+          this->ProgressMap[t->second->Target].Marks;
+        for (std::vector<unsigned long>::iterator i = progFiles.begin();
+              i != progFiles.end(); ++i)
           {
-          cmOStringStream progCmd;
-          progCmd << "$(CMAKE_COMMAND) -E cmake_progress_report ";
-          // all target counts
-          progCmd << lg->Convert(progressDir.c_str(),
-                                  cmLocalGenerator::FULL,
-                                  cmLocalGenerator::SHELL);
-          progCmd << " ";
-          std::vector<unsigned long>& progFiles =
-            this->ProgressMap[t->second->Target].Marks;
-          for (std::vector<unsigned long>::iterator i = progFiles.begin();
-                i != progFiles.end(); ++i)
-            {
-            progCmd << " " << *i;
-            }
-          commands.push_back(progCmd.str());
+          progCmd << " " << *i;
           }
-        progressDir = "Built target ";
-        progressDir += t->second->GetName();
-        lg->AppendEcho(commands,progressDir.c_str());
-        }
-      else
-        {
-        depends.clear();
+        commands.push_back(progCmd.str());
         }
+      progressDir = "Built target ";
+      progressDir += t->second->GetName();
+      lg->AppendEcho(commands,progressDir.c_str());
+
       this->AppendGlobalTargetDepends(depends,*t->second->Target);
-      if(depends.empty() && this->EmptyRuleHackDepends != "")
-        {
-        depends.push_back(this->EmptyRuleHackDepends);
-        }
       lg->WriteMakeRule(ruleFileStream, "All Build rule for target.",
                         localName.c_str(), depends, commands, true);
 
@@ -847,7 +829,7 @@ cmGlobalUnixMakefileGenerator3
 
       // Write the rule.
       commands.clear();
-      std::string progressDir = lg->GetMakefile()->GetHomeOutputDirectory();
+      progressDir = lg->GetMakefile()->GetHomeOutputDirectory();
       progressDir += cmake::GetCMakeFilesDirectory();
 
       {
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx 
b/Source/cmLocalUnixMakefileGenerator3.cxx
index 6ca386c..7e97f78 100644
--- a/Source/cmLocalUnixMakefileGenerator3.cxx
+++ b/Source/cmLocalUnixMakefileGenerator3.cxx
@@ -388,7 +388,6 @@ void cmLocalUnixMakefileGenerator3
        (t->second->GetType() == cmTarget::SHARED_LIBRARY) ||
        (t->second->GetType() == cmTarget::MODULE_LIBRARY) ||
        (t->second->GetType() == cmTarget::OBJECT_LIBRARY) ||
-       (t->second->GetType() == cmTarget::INTERFACE_LIBRARY) ||
        (t->second->GetType() == cmTarget::UTILITY))
       {
       if (t->second->Target->IsImported())
diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx 
b/Source/cmMakefileLibraryTargetGenerator.cxx
index 35818ee..399b582 100644
--- a/Source/cmMakefileLibraryTargetGenerator.cxx
+++ b/Source/cmMakefileLibraryTargetGenerator.cxx
@@ -85,9 +85,6 @@ void cmMakefileLibraryTargetGenerator::WriteRuleFiles()
     case cmTarget::OBJECT_LIBRARY:
       this->WriteObjectLibraryRules();
       break;
-    case cmTarget::INTERFACE_LIBRARY:
-      // Nothing to do.
-      break;
     default:
       // If language is not known, this is an error.
       cmSystemTools::Error("Unknown Library Type");
diff --git a/Source/cmMakefileTargetGenerator.cxx 
b/Source/cmMakefileTargetGenerator.cxx
index 2063a24..6e70285 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -76,7 +76,6 @@ cmMakefileTargetGenerator::New(cmGeneratorTarget *tgt)
     case cmTarget::SHARED_LIBRARY:
     case cmTarget::MODULE_LIBRARY:
     case cmTarget::OBJECT_LIBRARY:
-    case cmTarget::INTERFACE_LIBRARY:
       result = new cmMakefileLibraryTargetGenerator(tgt);
       break;
     case cmTarget::UTILITY:
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 9e74b7d..5ea604f 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -285,24 +285,6 @@ if(BUILD_TESTING)
       PASS_REGULAR_EXPRESSION "(file is not of required architecture|does not 
match cputype|not the architecture being linked)")
   endif()
 
-  if(CMAKE_TEST_GENERATOR MATCHES Make)
-    set(InterfaceBuildTargets_libname testlib)
-    if (CMAKE_TEST_GENERATOR MATCHES "Borland|Watcom")
-      set(InterfaceBuildTargets_libname testlib.lib)
-    endif()
-    add_test(InterfaceBuildTargets ${CMAKE_CTEST_COMMAND}
-      --build-and-test
-      "${CMake_SOURCE_DIR}/Tests/InterfaceBuildTargets"
-      "${CMake_BINARY_DIR}/Tests/InterfaceBuildTargets"
-      --build-two-config
-      ${build_generator_args}
-      --build-project InterfaceBuildTargets
-      --build-options ${build_options}
-      --test-command ${CMAKE_CMAKE_COMMAND} -E touch_nocreate 
${InterfaceBuildTargets_libname}
-      )
-    list(APPEND TEST_BUILD_DIRS 
"${CMake_BINARY_DIR}/Tests/InterfaceBuildTargets")
-  endif()
-
   list(APPEND TEST_BUILD_DIRS ${CMake_TEST_INSTALL_PREFIX})
 
   if(NOT QT4_FOUND)
diff --git a/Tests/InterfaceBuildTargets/CMakeLists.txt 
b/Tests/InterfaceBuildTargets/CMakeLists.txt
deleted file mode 100644
index a00e5d5..0000000
--- a/Tests/InterfaceBuildTargets/CMakeLists.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-project(InterfaceBuildTargets)
-
-add_library(testlib EXCLUDE_FROM_ALL testlib.cxx)
-set_property(TARGET testlib PROPERTY PREFIX "")
-if(CMAKE_GENERATOR MATCHES "Borland|Watcom")
-  # These librarians add the .lib suffix anyway.
-  set_property(TARGET testlib PROPERTY SUFFIX ".lib")
-else()
-  set_property(TARGET testlib PROPERTY SUFFIX "")
-endif()
-
-add_library(iface INTERFACE)
-target_link_libraries(iface INTERFACE testlib)
diff --git a/Tests/InterfaceBuildTargets/main.cxx 
b/Tests/InterfaceBuildTargets/main.cxx
deleted file mode 100644
index e9ad257..0000000
--- a/Tests/InterfaceBuildTargets/main.cxx
+++ /dev/null
@@ -1,5 +0,0 @@
-
-int main(int, char**)
-{
-  return 0;
-}
diff --git a/Tests/InterfaceBuildTargets/testlib.cxx 
b/Tests/InterfaceBuildTargets/testlib.cxx
deleted file mode 100644
index 02bd6b0..0000000
--- a/Tests/InterfaceBuildTargets/testlib.cxx
+++ /dev/null
@@ -1,5 +0,0 @@
-
-void testlib(void)
-{
-
-}
diff --git a/Tests/InterfaceLibrary/CMakeLists.txt 
b/Tests/InterfaceLibrary/CMakeLists.txt
index 53aeb03..8154ced 100644
--- a/Tests/InterfaceLibrary/CMakeLists.txt
+++ b/Tests/InterfaceLibrary/CMakeLists.txt
@@ -13,3 +13,17 @@ add_subdirectory(libsdir)
 
 add_executable(sharedlibtestexe sharedlibtestexe.cpp)
 target_link_libraries(sharedlibtestexe shared_iface)
+
+add_library(broken EXCLUDE_FROM_ALL broken.cpp)
+
+add_library(iface_broken INTERFACE)
+# This is not a dependency, so broken will not be built (and the error in
+# it will not be hit)
+target_link_libraries(iface_broken INTERFACE broken)
+
+add_library(iface_whitelist INTERFACE)
+# The target property CUSTOM will never be evaluated on the INTERFACE library.
+target_link_libraries(iface_whitelist INTERFACE 
$<$<BOOL:$<TARGET_PROPERTY:CUSTOM>>:irrelevant>)
+
+add_executable(exec_whitelist dummy.cpp)
+target_link_libraries(exec_whitelist iface_whitelist)
diff --git a/Tests/InterfaceLibrary/broken.cpp 
b/Tests/InterfaceLibrary/broken.cpp
new file mode 100644
index 0000000..1fd1041
--- /dev/null
+++ b/Tests/InterfaceLibrary/broken.cpp
@@ -0,0 +1,2 @@
+
+#error Broken
diff --git a/Tests/InterfaceLibrary/dummy.cpp b/Tests/InterfaceLibrary/dummy.cpp
new file mode 100644
index 0000000..341aaaf
--- /dev/null
+++ b/Tests/InterfaceLibrary/dummy.cpp
@@ -0,0 +1,5 @@
+
+int main(int, char **)
+{
+  return 0;
+}

-----------------------------------------------------------------------

Summary of changes:
 Source/cmComputeTargetDepends.cxx                  |   25 ++----
 Source/cmGlobalUnixMakefileGenerator3.cxx          |   92 ++++++++------------
 Source/cmLocalUnixMakefileGenerator3.cxx           |    1 -
 Source/cmMakefileLibraryTargetGenerator.cxx        |    3 -
 Source/cmMakefileTargetGenerator.cxx               |    1 -
 Tests/CMakeLists.txt                               |   18 ----
 Tests/InterfaceBuildTargets/CMakeLists.txt         |   13 ---
 Tests/InterfaceBuildTargets/main.cxx               |    5 -
 Tests/InterfaceBuildTargets/testlib.cxx            |    5 -
 Tests/InterfaceLibrary/CMakeLists.txt              |   14 +++
 Tests/InterfaceLibrary/broken.cpp                  |    2 +
 .../main.cpp => InterfaceLibrary/dummy.cpp}        |    0
 12 files changed, 60 insertions(+), 119 deletions(-)
 delete mode 100644 Tests/InterfaceBuildTargets/CMakeLists.txt
 delete mode 100644 Tests/InterfaceBuildTargets/main.cxx
 delete mode 100644 Tests/InterfaceBuildTargets/testlib.cxx
 create mode 100644 Tests/InterfaceLibrary/broken.cpp
 copy Tests/{StagingPrefix/main.cpp => InterfaceLibrary/dummy.cpp} (100%)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits

Reply via email to