Selaa lähdekoodia

Makefile: Factor out some duplicate link libraries generation

The generators for executable and library targets duplicate the logic to
call the OutputLinkLibraries helper on the local generator.  Factor it
out into a cmMakefileTargetGenerator::CreateLinkLibs method to avoid
dpulication.
Brad King 11 vuotta sitten
vanhempi
sitoutus
c87517099a

+ 2 - 6
Source/cmMakefileExecutableTargetGenerator.cxx

@@ -325,12 +325,8 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
 
   // Collect up flags to link in needed libraries.
   std::string linkLibs;
-  std::string frameworkPath;
-  std::string linkPath;
-  this->LocalGenerator->OutputLinkLibraries(linkLibs, frameworkPath, linkPath,
-                                            *this->GeneratorTarget,
-                                            relink);
-  linkLibs = frameworkPath + linkPath + linkLibs;
+  this->CreateLinkLibs(linkLibs, relink, depends);
+
   // Construct object file lists that may be needed to expand the
   // rule.
   std::string buildObjs;

+ 1 - 6
Source/cmMakefileLibraryTargetGenerator.cxx

@@ -546,12 +546,7 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules
   std::string linkLibs;
   if(this->Target->GetType() != cmTarget::STATIC_LIBRARY)
     {
-    std::string frameworkPath;
-    std::string linkPath;
-    this->LocalGenerator
-      ->OutputLinkLibraries(linkLibs, frameworkPath, linkPath,
-                            *this->GeneratorTarget, relink);
-    linkLibs = frameworkPath + linkPath + linkLibs;
+    this->CreateLinkLibs(linkLibs, relink, depends);
     }
 
   // Construct object file lists that may be needed to expand the

+ 14 - 0
Source/cmMakefileTargetGenerator.cxx

@@ -1830,6 +1830,20 @@ cmMakefileTargetGenerator
   return responseFileName;
 }
 
+//----------------------------------------------------------------------------
+void
+cmMakefileTargetGenerator
+::CreateLinkLibs(std::string& linkLibs, bool relink,
+                 std::vector<std::string>& makefile_depends)
+{
+  std::string frameworkPath;
+  std::string linkPath;
+  this->LocalGenerator
+    ->OutputLinkLibraries(linkLibs, frameworkPath, linkPath,
+                          *this->GeneratorTarget, relink);
+  linkLibs = frameworkPath + linkPath + linkLibs;
+}
+
 //----------------------------------------------------------------------------
 void
 cmMakefileTargetGenerator

+ 4 - 0
Source/cmMakefileTargetGenerator.h

@@ -163,6 +163,10 @@ protected:
                                  std::string const& options,
                                  std::vector<std::string>& makefile_depends);
 
+  /** Create list of flags for link libraries. */
+  void CreateLinkLibs(std::string& linkLibs, bool relink,
+                      std::vector<std::string>& makefile_depends);
+
   /** Create lists of object files for linking and cleaning.  */
   void CreateObjectLists(bool useLinkScript, bool useArchiveRules,
                          bool useResponseFile, std::string& buildObjs,