[cmake-commits] hoffman committed cmGlobalXCodeGenerator.cxx 1.154 1.155 cmGlobalXCodeGenerator.h 1.48 1.49

cmake-commits at cmake.org cmake-commits at cmake.org
Thu May 24 17:06:34 EDT 2007


Update of /cvsroot/CMake/CMake/Source
In directory public:/mounts/ram/cvs-serv19236/Source

Modified Files:
	cmGlobalXCodeGenerator.cxx cmGlobalXCodeGenerator.h 
Log Message:
ENH: add copy header stuff


Index: cmGlobalXCodeGenerator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalXCodeGenerator.cxx,v
retrieving revision 1.154
retrieving revision 1.155
diff -u -d -r1.154 -r1.155
--- cmGlobalXCodeGenerator.cxx	23 May 2007 21:21:08 -0000	1.154
+++ cmGlobalXCodeGenerator.cxx	24 May 2007 21:06:32 -0000	1.155
@@ -729,6 +729,51 @@
         buildFiles->AddObject(xsf);
         }
       }
+    if(cmtarget.GetPropertyAsBool("FRAMEWORK"))
+      {
+      this->AddFrameworkPhases(&cmtarget, buildPhases);
+      }
+    }
+}
+
+//----------------------------------------------------------------------------
+void cmGlobalXCodeGenerator::AddFrameworkPhases(cmTarget* target,
+                                                cmXCodeObject* buildPhases)
+{
+  const char* headers = target->GetProperty("FRAMEWORK_PUBLIC_HEADERS");
+  if(!headers)
+    {
+    return;
+    }
+  
+  cmXCodeObject* copyHeaders =
+    this->CreateObject(cmXCodeObject::PBXCopyFilesBuildPhase);
+  copyHeaders->SetComment("Copy files");
+  copyHeaders->AddAttribute("buildActionMask",
+                            this->CreateString("2147483647"));
+  copyHeaders->AddAttribute("dstSubfolderSpec",
+                            this->CreateString("6"));
+  copyHeaders->AddAttribute("dstPath",
+                                    this->CreateString("Headers"));
+  buildPhases->AddObject(copyHeaders);
+  cmXCodeObject* headersToCopy = 
+    this->CreateObject(cmXCodeObject::OBJECT_LIST);
+  copyHeaders->AddAttribute("files", headersToCopy);
+  std::vector<std::string> headersVec;
+  cmSystemTools::ExpandListArgument(headers,
+                                    headersVec);
+  cmCustomCommandLines commandLines;
+  std::vector<std::string> depends;
+  for(std::vector<std::string>::iterator i = headersVec.begin();
+      i != headersVec.end(); ++i)
+    {
+    cmCustomCommandLine line;
+    cmSourceFile* sf = this->CurrentMakefile->GetOrCreateSource(i->c_str());
+    cmXCodeObject* xsf =
+      this->CreateXCodeSourceFile(this->CurrentLocalGenerator, 
+                                  sf, *target);
+    std::cerr << "copy header " << sf->GetFullPath() << "\n";
+    headersToCopy->AddObject(xsf);
     }
 }
 
@@ -2008,8 +2053,28 @@
         cmtarget.GetSourceFiles().push_back
           (this->CurrentMakefile->AddSource(file));
         }
-
-      std::vector<cmSourceFile*> & classes = cmtarget.GetSourceFiles();
+      std::vector<cmSourceFile*>  classes = cmtarget.GetSourceFiles();
+      // add framework copy headers
+      if(cmtarget.GetPropertyAsBool("FRAMEWORK"))
+        {
+        const char* headers = cmtarget.GetProperty("FRAMEWORK_PUBLIC_HEADERS");
+        if(!headers)
+          {
+          return;
+          }
+        std::vector<std::string> headersVec;
+        cmSystemTools::ExpandListArgument(headers,
+                                          headersVec);
+        cmCustomCommandLines commandLines;
+        std::vector<std::string> depends;
+        for(std::vector<std::string>::iterator i = headersVec.begin();
+            i != headersVec.end(); ++i)
+          {
+          cmSourceFile* sf 
+            = this->CurrentMakefile->GetOrCreateSource(i->c_str());
+          classes.push_back(sf);
+          }
+        }
       for(std::vector<cmSourceFile*>::const_iterator s = classes.begin(); 
           s != classes.end(); s++)
         {

Index: cmGlobalXCodeGenerator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/cmGlobalXCodeGenerator.h,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -d -r1.48 -r1.49
--- cmGlobalXCodeGenerator.h	11 May 2007 17:52:33 -0000	1.48
+++ cmGlobalXCodeGenerator.h	24 May 2007 21:06:32 -0000	1.49
@@ -65,6 +65,9 @@
                                            const char* config, 
                                            bool ignoreErrors,
                                            bool fast);
+  
+  // add extra build phases for a framework target
+  void AddFrameworkPhases(cmTarget*, cmXCodeObject* buildPhases);
 
   /**
    * Generate the all required files for building this project/tree. This



More information about the Cmake-commits mailing list