[Cmake-commits] CMake branch, next, updated. v2.8.12-3743-gb78fab0

Brad King brad.king at kitware.com
Thu Oct 10 08:47:07 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  b78fab04d97d902282a5236ea786e9b2697ab7ca (commit)
       via  2e13c362117dbd0df2d5fff1c00ee8af2707185a (commit)
       via  872db622d62012d6ea0c2142d75f9a0b97949004 (commit)
      from  8b7c1e9023cec0d36e68f51e6e2b2d8346a7a445 (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=b78fab04d97d902282a5236ea786e9b2697ab7ca
commit b78fab04d97d902282a5236ea786e9b2697ab7ca
Merge: 8b7c1e9 2e13c36
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Oct 10 08:47:06 2013 -0400
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Oct 10 08:47:06 2013 -0400

    Merge topic 'osx-framework-search-flag' into next
    
    2e13c36 OS X: Encode -F framework search flag in per-language platform variable
    872db62 CMake Nightly Date Stamp


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2e13c362117dbd0df2d5fff1c00ee8af2707185a
commit 2e13c362117dbd0df2d5fff1c00ee8af2707185a
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Oct 10 08:29:04 2013 -0400
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Oct 10 08:33:25 2013 -0400

    OS X: Encode -F framework search flag in per-language platform variable
    
    Compilers for languages other than C and C++ on OS X may not understand
    the -F framework search flag.  Create a new platform information
    variable CMAKE_<LANG>_FRAMEWORK_SEARCH_FLAG to hold the flag, and set it
    for C and CXX lanugages in the Platform/Darwin module.
    
    Reported-by: Vittorio Giovara <vittorio.giovara at gmail.com>

diff --git a/Modules/Platform/Darwin.cmake b/Modules/Platform/Darwin.cmake
index 72844b5..8ab3e2c 100644
--- a/Modules/Platform/Darwin.cmake
+++ b/Modules/Platform/Darwin.cmake
@@ -268,6 +268,11 @@ set(CMAKE_C_CREATE_MACOSX_FRAMEWORK
 set(CMAKE_CXX_CREATE_MACOSX_FRAMEWORK
       "<CMAKE_CXX_COMPILER> <LANGUAGE_COMPILE_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <LINK_FLAGS> -o <TARGET> <SONAME_FLAG> <TARGET_INSTALLNAME_DIR><TARGET_SONAME> <OBJECTS> <LINK_LIBRARIES>")
 
+# Set default framework search path flag for languages known to use a
+# preprocessor that may find headers in frameworks.
+set(CMAKE_C_FRAMEWORK_SEARCH_FLAG -F)
+set(CMAKE_CXX_FRAMEWORK_SEARCH_FLAG -F)
+set(CMAKE_Fortran_FRAMEWORK_SEARCH_FLAG -F)
 
 # default to searching for frameworks first
 if(NOT DEFINED CMAKE_FIND_FRAMEWORK)
diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx
index 58634ea..dbe1b04 100644
--- a/Source/cmDocumentVariables.cxx
+++ b/Source/cmDocumentVariables.cxx
@@ -1977,6 +1977,8 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
                      cmProperty::VARIABLE,0,0);
   cm->DefineProperty("CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT",
                      cmProperty::VARIABLE,0,0);
+  cm->DefineProperty("CMAKE_<LANG>_FRAMEWORK_SEARCH_FLAG",
+                     cmProperty::VARIABLE,0,0);
   cm->DefineProperty("CMAKE_<LANG>_INFORMATION_LOADED",
                      cmProperty::VARIABLE,0,0);
   cm->DefineProperty("CMAKE_<LANG>_LINK_FLAGS",
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 9174e26..3dde19f 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1253,6 +1253,12 @@ std::string cmLocalGenerator::GetIncludeFlags(
     sysIncludeFlag = this->Makefile->GetDefinition(sysFlagVar.c_str());
     }
 
+  std::string fwSearchFlagVar = "CMAKE_";
+  fwSearchFlagVar += lang;
+  fwSearchFlagVar += "_FRAMEWORK_SEARCH_FLAG";
+  const char* fwSearchFlag =
+    this->Makefile->GetDefinition(fwSearchFlagVar.c_str());
+
   bool flagUsed = false;
   std::set<cmStdString> emitted;
 #ifdef __APPLE__
@@ -1261,7 +1267,7 @@ std::string cmLocalGenerator::GetIncludeFlags(
   std::vector<std::string>::const_iterator i;
   for(i = includes.begin(); i != includes.end(); ++i)
     {
-    if(this->Makefile->IsOn("APPLE")
+    if(fwSearchFlag && *fwSearchFlag && this->Makefile->IsOn("APPLE")
        && cmSystemTools::IsPathToFramework(i->c_str()))
       {
       std::string frameworkDir = *i;
@@ -1271,8 +1277,8 @@ std::string cmLocalGenerator::GetIncludeFlags(
         {
         OutputFormat format = forResponseFile? RESPONSE : SHELL;
         includeFlags
-          << "-F" << this->Convert(frameworkDir.c_str(),
-                                   START_OUTPUT, format, true)
+          << fwSearchFlag << this->Convert(frameworkDir.c_str(),
+                                           START_OUTPUT, format, true)
           << " ";
         }
       continue;
@@ -1770,13 +1776,21 @@ void cmLocalGenerator::OutputLinkLibraries(std::string& linkLibraries,
     }
 
   // Append the framework search path flags.
-  std::vector<std::string> const& fwDirs = cli.GetFrameworkPaths();
-  for(std::vector<std::string>::const_iterator fdi = fwDirs.begin();
-      fdi != fwDirs.end(); ++fdi)
+  std::string fwSearchFlagVar = "CMAKE_";
+  fwSearchFlagVar += linkLanguage;
+  fwSearchFlagVar += "_FRAMEWORK_SEARCH_FLAG";
+  const char* fwSearchFlag =
+    this->Makefile->GetDefinition(fwSearchFlagVar.c_str());
+  if(fwSearchFlag && *fwSearchFlag)
     {
-    frameworkPath += "-F";
-    frameworkPath += this->Convert(fdi->c_str(), NONE, SHELL, false);
-    frameworkPath += " ";
+    std::vector<std::string> const& fwDirs = cli.GetFrameworkPaths();
+    for(std::vector<std::string>::const_iterator fdi = fwDirs.begin();
+        fdi != fwDirs.end(); ++fdi)
+      {
+      frameworkPath += fwSearchFlag;
+      frameworkPath += this->Convert(fdi->c_str(), NONE, SHELL, false);
+      frameworkPath += " ";
+      }
     }
 
   // Append the library search path flags.
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index 42091e3..9ca9149 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -291,7 +291,7 @@ std::string cmMakefileTargetGenerator::GetFlags(const std::string &l)
 
     // Add include directory flags.
     this->LocalGenerator->
-      AppendFlags(flags,this->GetFrameworkFlags().c_str());
+      AppendFlags(flags,this->GetFrameworkFlags(l).c_str());
 
     // Add target-specific flags.
     this->LocalGenerator->AddCompileOptions(flags, this->Target,
@@ -1518,13 +1518,21 @@ void cmMakefileTargetGenerator::WriteTargetDriverRule(const char* main_output,
 }
 
 //----------------------------------------------------------------------------
-std::string cmMakefileTargetGenerator::GetFrameworkFlags()
+std::string cmMakefileTargetGenerator::GetFrameworkFlags(std::string const& l)
 {
  if(!this->Makefile->IsOn("APPLE"))
    {
    return std::string();
    }
 
+  std::string fwSearchFlagVar = "CMAKE_" + l + "_FRAMEWORK_SEARCH_FLAG";
+  const char* fwSearchFlag =
+    this->Makefile->GetDefinition(fwSearchFlagVar.c_str());
+  if(!(fwSearchFlag && *fwSearchFlag))
+    {
+    return std::string();
+    }
+
  std::set<cmStdString> emitted;
 #ifdef __APPLE__  /* don't insert this when crosscompiling e.g. to iphone */
   emitted.insert("/System/Library/Frameworks");
@@ -1559,7 +1567,7 @@ std::string cmMakefileTargetGenerator::GetFrameworkFlags()
       {
       if(emitted.insert(*i).second)
         {
-        flags += "-F";
+        flags += fwSearchFlag;
         flags += this->Convert(i->c_str(),
                                cmLocalGenerator::START_OUTPUT,
                                cmLocalGenerator::SHELL, true);
diff --git a/Source/cmMakefileTargetGenerator.h b/Source/cmMakefileTargetGenerator.h
index f7a1e2e..ec2af1c 100644
--- a/Source/cmMakefileTargetGenerator.h
+++ b/Source/cmMakefileTargetGenerator.h
@@ -124,7 +124,7 @@ protected:
   void DriveCustomCommands(std::vector<std::string>& depends);
 
   // Return the a string with -F flags on apple
-  std::string GetFrameworkFlags();
+  std::string GetFrameworkFlags(std::string const& l);
 
   void AppendFortranFormatFlags(std::string& flags, cmSourceFile& source);
 

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

Summary of changes:
 Modules/Platform/Darwin.cmake        |    5 +++++
 Source/CMakeVersion.cmake            |    2 +-
 Source/cmDocumentVariables.cxx       |    2 ++
 Source/cmLocalGenerator.cxx          |   32 +++++++++++++++++++++++---------
 Source/cmMakefileTargetGenerator.cxx |   14 +++++++++++---
 Source/cmMakefileTargetGenerator.h   |    2 +-
 6 files changed, 43 insertions(+), 14 deletions(-)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list