[Cmake-commits] CMake branch, next, updated. v2.8.11-2069-g99f556c

Stephen Kelly steveire at gmail.com
Sat May 18 04:00:10 EDT 2013


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  99f556c1f98959af74c099401db6da93d524a334 (commit)
       via  d3879a45be690d5b7ea42371893f5c00a11738f1 (commit)
      from  a5324669e23fbfb79e0b46d2043275cd685f6d74 (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=99f556c1f98959af74c099401db6da93d524a334
commit 99f556c1f98959af74c099401db6da93d524a334
Merge: a532466 d3879a4
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Sat May 18 04:00:07 2013 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Sat May 18 04:00:07 2013 -0400

    Merge topic 'add-EXPORT_NAME-property' into next
    
    d3879a4 Add EXPORT_NAME property.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d3879a45be690d5b7ea42371893f5c00a11738f1
commit d3879a45be690d5b7ea42371893f5c00a11738f1
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri May 17 15:20:22 2013 +0200
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Sat May 18 09:58:44 2013 +0200

    Add EXPORT_NAME property.
    
    This allows for example, the buildsystem to use names like 'boost_any'
    instead of the overly generic 'any', and still be able to generate
    IMPORTED targets called 'boost::any'.

diff --git a/Source/cmExportBuildFileGenerator.cxx b/Source/cmExportBuildFileGenerator.cxx
index 7147f86..e1c26c6 100644
--- a/Source/cmExportBuildFileGenerator.cxx
+++ b/Source/cmExportBuildFileGenerator.cxx
@@ -30,7 +30,7 @@ bool cmExportBuildFileGenerator::GenerateMainFile(std::ostream& os)
         tei = this->Exports->begin();
       tei != this->Exports->end(); ++tei)
     {
-    expectedTargets += sep + this->Namespace + (*tei)->GetName();
+    expectedTargets += sep + this->Namespace + (*tei)->GetExportName();
     sep = " ";
     cmTarget* te = *tei;
     if(this->ExportedTargets.insert(te).second)
@@ -189,7 +189,7 @@ cmExportBuildFileGenerator::HandleMissingTarget(
   // Assume the target will be exported by another command.
   // Append it with the export namespace.
   link_libs += this->Namespace;
-  link_libs += dependee->GetName();
+  link_libs += dependee->GetExportName();
 }
 
 //----------------------------------------------------------------------------
diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx
index a83a881..a6ccbd5 100644
--- a/Source/cmExportFileGenerator.cxx
+++ b/Source/cmExportFileGenerator.cxx
@@ -376,7 +376,7 @@ void cmExportFileGenerator::GenerateInterfaceProperties(cmTarget *target,
   if (!properties.empty())
     {
     std::string targetName = this->Namespace;
-    targetName += target->GetName();
+    targetName += target->GetExportName();
     os << "set_target_properties(" << targetName << " PROPERTIES\n";
     for(ImportPropertyMap::const_iterator pi = properties.begin();
         pi != properties.end(); ++pi)
@@ -407,7 +407,7 @@ cmExportFileGenerator::AddTargetNamespace(std::string &input,
     }
   if(this->ExportedTargets.find(tgt) != this->ExportedTargets.end())
     {
-    input = this->Namespace + tgt->GetName();
+    input = this->Namespace + tgt->GetExportName();
     }
   else
     {
@@ -772,7 +772,8 @@ cmExportFileGenerator
 {
   // Construct the imported target name.
   std::string targetName = this->Namespace;
-  targetName += target->GetName();
+
+  targetName += target->GetExportName();
 
   // Create the imported target.
   os << "# Create imported target " << targetName << "\n";
@@ -835,7 +836,8 @@ cmExportFileGenerator
 {
   // Construct the imported target name.
   std::string targetName = this->Namespace;
-  targetName += target->GetName();
+
+  targetName += target->GetExportName();
 
   // Set the import properties.
   os << "# Import target \"" << targetName << "\" for configuration \""
@@ -954,7 +956,7 @@ cmExportFileGenerator
 {
   // Construct the imported target name.
   std::string targetName = this->Namespace;
-  targetName += target->GetName();
+  targetName += target->GetExportName();
 
   os << "list(APPEND _IMPORT_CHECK_TARGETS " << targetName << " )\n"
         "list(APPEND _IMPORT_CHECK_FILES_FOR_" << targetName << " ";
diff --git a/Source/cmExportInstallFileGenerator.cxx b/Source/cmExportInstallFileGenerator.cxx
index 800537c..55081a7 100644
--- a/Source/cmExportInstallFileGenerator.cxx
+++ b/Source/cmExportInstallFileGenerator.cxx
@@ -47,7 +47,7 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
         tei = this->IEGen->GetExportSet()->GetTargetExports()->begin();
       tei != this->IEGen->GetExportSet()->GetTargetExports()->end(); ++tei)
     {
-    expectedTargets += sep + this->Namespace + (*tei)->Target->GetName();
+    expectedTargets += sep + this->Namespace + (*tei)->Target->GetExportName();
     sep = " ";
     cmTargetExport const* te = *tei;
     if(this->ExportedTargets.insert(te->Target).second)
@@ -402,7 +402,7 @@ cmExportInstallFileGenerator::HandleMissingTarget(
     {
     std::string missingTarget = namespaces[0];
 
-    missingTarget += dependee->GetName();
+    missingTarget += dependee->GetExportName();
     link_libs += missingTarget;
     missingTargets.push_back(missingTarget);
     }
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx
index ed8edcc..3f6488a 100644
--- a/Source/cmTarget.cxx
+++ b/Source/cmTarget.cxx
@@ -867,6 +867,13 @@ void cmTarget::DefineProperties(cmake *cm)
      "OSX_ARCHITECTURES.");
 
   cm->DefineProperty
+    ("EXPORT_NAME", cmProperty::TARGET,
+     "Exported name for target files.",
+     "This sets the name for the IMPORTED target generated when it this "
+     "target is is exported.  "
+     "If not set, the logical target name is used by default.");
+
+  cm->DefineProperty
     ("OUTPUT_NAME", cmProperty::TARGET,
      "Output name for target files.",
      "This sets the base name for output files created for an executable or "
@@ -2719,6 +2726,14 @@ void cmTarget::SetProperty(const char* prop, const char* value)
                           new cmTargetInternals::IncludeDirectoriesEntry(cge));
     return;
     }
+  if(strcmp(prop,"EXPORT_NAME") == 0 && this->IsImported())
+    {
+    cmOStringStream e;
+    e << "EXPORT_NAME property can't be set on imported targets (\""
+          << this->Name << "\")\n";
+    this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str().c_str());
+    return;
+    }
   if (strcmp(prop, "LINK_LIBRARIES") == 0)
     {
     this->Internal->LinkInterfaceIncludeDirectoriesEntries.clear();
@@ -2753,6 +2768,14 @@ void cmTarget::AppendProperty(const char* prop, const char* value,
               new cmTargetInternals::IncludeDirectoriesEntry(ge.Parse(value)));
     return;
     }
+  if(strcmp(prop,"EXPORT_NAME") == 0 && this->IsImported())
+    {
+    cmOStringStream e;
+    e << "EXPORT_NAME property can't be set on imported targets (\""
+          << this->Name << "\")\n";
+    this->Makefile->IssueMessage(cmake::FATAL_ERROR, e.str().c_str());
+    return;
+    }
   if (strcmp(prop, "LINK_LIBRARIES") == 0)
     {
     if (cmGeneratorExpression::IsValidTargetName(value)
@@ -2770,6 +2793,26 @@ void cmTarget::AppendProperty(const char* prop, const char* value,
 }
 
 //----------------------------------------------------------------------------
+const char* cmTarget::GetExportName()
+{
+  const char *exportName = this->GetProperty("EXPORT_NAME");
+
+  if (exportName && *exportName)
+    {
+    if (!cmGeneratorExpression::IsValidTargetName(exportName))
+      {
+      cmOStringStream e;
+      e << "EXPORT_NAME property \"" << exportName << "\" for \""
+        << this->GetName() << "\": is not valid.";
+      cmSystemTools::Error(e.str().c_str());
+      return "";
+      }
+    return exportName;
+    }
+  return this->GetName();
+}
+
+//----------------------------------------------------------------------------
 void cmTarget::AppendBuildInterfaceIncludes()
 {
   if(this->GetType() != cmTarget::SHARED_LIBRARY &&
diff --git a/Source/cmTarget.h b/Source/cmTarget.h
index 9d46796..42a31db 100644
--- a/Source/cmTarget.h
+++ b/Source/cmTarget.h
@@ -85,6 +85,7 @@ public:
 
   ///! Set/Get the name of the target
   const char* GetName() const {return this->Name.c_str();}
+  const char* GetExportName();
 
   ///! Set the cmMakefile that owns this target
   void SetMakefile(cmMakefile *mf);
diff --git a/Tests/ExportImport/Export/CMakeLists.txt b/Tests/ExportImport/Export/CMakeLists.txt
index be48483..e3f23b8 100644
--- a/Tests/ExportImport/Export/CMakeLists.txt
+++ b/Tests/ExportImport/Export/CMakeLists.txt
@@ -165,6 +165,8 @@ set_property(TARGET testLibRequired APPEND PROPERTY
 
 include(GenerateExportHeader)
 
+add_subdirectory(renamed)
+
 add_library(testSharedLibRequired SHARED testSharedLibRequired.cpp)
 generate_export_header(testSharedLibRequired)
 set_property(TARGET testSharedLibRequired
@@ -219,13 +221,12 @@ set_property(TARGET testSharedLibDepends APPEND PROPERTY
   INTERFACE_INCLUDE_DIRECTORIES "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include/testSharedLibDepends>"
                                 "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>"
 )
-set_property(TARGET testSharedLibDepends APPEND PROPERTY
-  LINK_INTERFACE_LIBRARIES
-    $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:$<TARGET_NAME:testSharedLibRequired>>
-)
 
 # LINK_PRIVATE because the LINK_INTERFACE_LIBRARIES is specified above.
 target_link_libraries(testSharedLibDepends LINK_PRIVATE testSharedLibRequired)
+target_link_libraries(testSharedLibDepends LINK_PUBLIC renamed_on_export)
+target_link_libraries(testSharedLibDepends LINK_INTERFACE_LIBRARIES
+  $<$<STREQUAL:$<TARGET_PROPERTY:TYPE>,EXECUTABLE>:$<TARGET_NAME:testSharedLibRequired>>)
 
 install(TARGETS testLibRequired
                 testLibIncludeRequired1
@@ -310,7 +311,7 @@ add_subdirectory(sublib) # For CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE test.
 # Export from build tree.
 export(TARGETS testExe1 testLib1 testLib2 testLib3
   testExe2libImp testLib3Imp testLib3ImpDep subdirlib
-  testSharedLibRequired testSharedLibDepends
+  testSharedLibRequired testSharedLibDepends renamed_on_export
   NAMESPACE bld_
   FILE ExportBuildTree.cmake
   )
diff --git a/Tests/ExportImport/Export/renamed/CMakeLists.txt b/Tests/ExportImport/Export/renamed/CMakeLists.txt
new file mode 100644
index 0000000..a763251
--- /dev/null
+++ b/Tests/ExportImport/Export/renamed/CMakeLists.txt
@@ -0,0 +1,20 @@
+
+add_library(renamed_on_export SHARED renamed.cxx)
+generate_export_header(renamed_on_export)
+target_include_directories(renamed_on_export
+  PUBLIC "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/include/renamed>"
+         "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}>"
+)
+set_property(TARGET renamed_on_export
+  PROPERTY
+    EXPORT_NAME renamed
+)
+
+install(FILES
+  "${CMAKE_CURRENT_SOURCE_DIR}/renamed.h"
+  "${CMAKE_CURRENT_BINARY_DIR}/renamed_on_export_export.h"
+    DESTINATION include/renamed
+)
+
+install(TARGETS renamed_on_export
+        EXPORT exp DESTINATION lib )
diff --git a/Tests/ExportImport/Export/renamed/renamed.cxx b/Tests/ExportImport/Export/renamed/renamed.cxx
new file mode 100644
index 0000000..b3e3e7e
--- /dev/null
+++ b/Tests/ExportImport/Export/renamed/renamed.cxx
@@ -0,0 +1,7 @@
+
+#include "renamed.h"
+
+int Renamed::foo()
+{
+  return 0;
+}
diff --git a/Tests/ExportImport/Export/renamed/renamed.h b/Tests/ExportImport/Export/renamed/renamed.h
new file mode 100644
index 0000000..06ac601
--- /dev/null
+++ b/Tests/ExportImport/Export/renamed/renamed.h
@@ -0,0 +1,12 @@
+
+#ifndef RENAMED_H
+#define RENAMED_H
+
+#include "renamed_on_export_export.h"
+
+struct RENAMED_ON_EXPORT_EXPORT Renamed
+{
+  int foo();
+};
+
+#endif
diff --git a/Tests/ExportImport/Export/testSharedLibDepends.cpp b/Tests/ExportImport/Export/testSharedLibDepends.cpp
index e279207..962223f 100644
--- a/Tests/ExportImport/Export/testSharedLibDepends.cpp
+++ b/Tests/ExportImport/Export/testSharedLibDepends.cpp
@@ -4,5 +4,6 @@
 int TestSharedLibDepends::foo()
 {
   TestSharedLibRequired req;
-  return req.foo();
+  Renamed renamed;
+  return req.foo() + renamed.foo();
 }
diff --git a/Tests/ExportImport/Export/testSharedLibDepends.h b/Tests/ExportImport/Export/testSharedLibDepends.h
index b93143a..8b2f84e 100644
--- a/Tests/ExportImport/Export/testSharedLibDepends.h
+++ b/Tests/ExportImport/Export/testSharedLibDepends.h
@@ -5,6 +5,7 @@
 #include "testsharedlibdepends_export.h"
 
 #include "testSharedLibRequired.h"
+#include "renamed.h"
 
 struct TESTSHAREDLIBDEPENDS_EXPORT TestSharedLibDepends
 {
diff --git a/Tests/ExportImport/Import/A/CMakeLists.txt b/Tests/ExportImport/Import/A/CMakeLists.txt
index 0337130..65b1a36 100644
--- a/Tests/ExportImport/Import/A/CMakeLists.txt
+++ b/Tests/ExportImport/Import/A/CMakeLists.txt
@@ -183,6 +183,12 @@ else()
   endif()
 endif()
 
+add_executable(exp_renamed_test renamed_test.cpp)
+target_link_libraries(exp_renamed_test exp_renamed)
+
+add_executable(bld_renamed_test renamed_test.cpp)
+target_link_libraries(bld_renamed_test bld_renamed)
+
 if (run_pic_test)
   target_compile_definitions(deps_shared_iface PRIVATE CHECK_PIC_WORKS)
 endif()
diff --git a/Tests/ExportImport/Import/A/deps_shared_iface.cpp b/Tests/ExportImport/Import/A/deps_shared_iface.cpp
index 2f0e74a..32e04db 100644
--- a/Tests/ExportImport/Import/A/deps_shared_iface.cpp
+++ b/Tests/ExportImport/Import/A/deps_shared_iface.cpp
@@ -22,6 +22,7 @@
 
 #ifdef TEST_SUBDIR_LIB
 #include "subdir.h"
+#include "renamed.h"
 #endif
 
 int main(int,char **)
@@ -31,11 +32,12 @@ int main(int,char **)
 
 #ifdef TEST_SUBDIR_LIB
   SubDirObject sdo;
+  Renamed ren;
 #endif
 
   return dep.foo() + req.foo()
 #ifdef TEST_SUBDIR_LIB
-                   + sdo.foo()
+                   + sdo.foo() + ren.foo()
 #endif
                               ;
 }
diff --git a/Tests/ExportImport/Import/A/renamed_test.cpp b/Tests/ExportImport/Import/A/renamed_test.cpp
new file mode 100644
index 0000000..e2ee126
--- /dev/null
+++ b/Tests/ExportImport/Import/A/renamed_test.cpp
@@ -0,0 +1,8 @@
+
+#include "renamed.h"
+
+int main(int, char **)
+{
+  Renamed ren;
+  return ren.foo();
+}

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

Summary of changes:
 Source/cmExportBuildFileGenerator.cxx              |    4 +-
 Source/cmExportFileGenerator.cxx                   |   12 +++--
 Source/cmExportInstallFileGenerator.cxx            |    4 +-
 Source/cmTarget.cxx                                |   43 ++++++++++++++++++++
 Source/cmTarget.h                                  |    1 +
 Tests/ExportImport/Export/CMakeLists.txt           |   11 +++--
 Tests/ExportImport/Export/renamed/CMakeLists.txt   |   20 +++++++++
 Tests/ExportImport/Export/renamed/renamed.cxx      |    7 +++
 Tests/ExportImport/Export/renamed/renamed.h        |   12 +++++
 Tests/ExportImport/Export/testSharedLibDepends.cpp |    3 +-
 Tests/ExportImport/Export/testSharedLibDepends.h   |    1 +
 Tests/ExportImport/Import/A/CMakeLists.txt         |    6 +++
 Tests/ExportImport/Import/A/deps_shared_iface.cpp  |    4 +-
 Tests/ExportImport/Import/A/renamed_test.cpp       |    8 ++++
 14 files changed, 120 insertions(+), 16 deletions(-)
 create mode 100644 Tests/ExportImport/Export/renamed/CMakeLists.txt
 create mode 100644 Tests/ExportImport/Export/renamed/renamed.cxx
 create mode 100644 Tests/ExportImport/Export/renamed/renamed.h
 create mode 100644 Tests/ExportImport/Import/A/renamed_test.cpp


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list