Browse Source

cmTarget: Compile old-style link dependencies only for VS 6

Compile all the "ForVS6" cmTarget members only on Windows.  No other
platforms support the VS 6 generator.
Brad King 11 years ago
parent
commit
8a205b980c
3 changed files with 20 additions and 3 deletions
  1. 2 0
      Source/cmGlobalGenerator.h
  2. 8 0
      Source/cmTarget.cxx
  3. 10 3
      Source/cmTarget.h

+ 2 - 0
Source/cmGlobalGenerator.h

@@ -214,8 +214,10 @@ public:
    */
   virtual void FindMakeProgram(cmMakefile*);
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
   /** Is this the Visual Studio 6 generator?  */
   virtual bool IsForVS6() const { return false; }
+#endif
 
   ///! Find a target by name by searching the local generators.
   cmTarget* FindTarget(const std::string& name,

+ 8 - 0
Source/cmTarget.cxx

@@ -258,7 +258,9 @@ cmTarget::cmTarget()
 #undef INITIALIZE_TARGET_POLICY_MEMBER
 
   this->Makefile = 0;
+#if defined(_WIN32) && !defined(__CYGWIN__)
   this->LinkLibrariesForVS6Analyzed = false;
+#endif
   this->HaveInstallRule = false;
   this->DLLPlatform = false;
   this->IsApple = false;
@@ -517,11 +519,13 @@ void cmTarget::FinishConfigure()
   // invalidation code in this source file is buggy.
   this->ClearLinkMaps();
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
   // Do old-style link dependency analysis only for CM_USE_OLD_VS6.
   if(this->Makefile->GetLocalGenerator()->GetGlobalGenerator()->IsForVS6())
     {
     this->AnalyzeLibDependenciesForVS6(*this->Makefile);
     }
+#endif
 }
 
 //----------------------------------------------------------------------------
@@ -1335,7 +1339,9 @@ void cmTarget::AddLinkLibrary(cmMakefile& mf,
   cmTarget::LibraryID tmp;
   tmp.first = lib;
   tmp.second = llt;
+#if defined(_WIN32) && !defined(__CYGWIN__)
   this->LinkLibrariesForVS6.push_back( tmp );
+#endif
   this->OriginalLinkLibraries.push_back(tmp);
   this->ClearLinkMaps();
 
@@ -1401,6 +1407,7 @@ cmTarget::AddSystemIncludeDirectories(const std::vector<std::string> &incs)
     }
 }
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
 //----------------------------------------------------------------------------
 void
 cmTarget::AnalyzeLibDependenciesForVS6( const cmMakefile& mf )
@@ -1693,6 +1700,7 @@ void cmTarget::GatherDependenciesForVS6( const cmMakefile& mf,
     this->DeleteDependencyForVS6( dep_map, lib, lib);
     }
 }
+#endif
 
 //----------------------------------------------------------------------------
 static bool whiteListedInterfaceProperty(const std::string& prop)

+ 10 - 3
Source/cmTarget.h

@@ -179,8 +179,6 @@ public:
   typedef std::pair<std::string, LinkLibraryType> LibraryID;
 
   typedef std::vector<LibraryID > LinkLibraryVectorType;
-  const LinkLibraryVectorType &GetLinkLibrariesForVS6() const {
-  return this->LinkLibrariesForVS6;}
   const LinkLibraryVectorType &GetOriginalLinkLibraries() const
     {return this->OriginalLinkLibraries;}
 
@@ -613,6 +611,11 @@ public:
     return this->MaxLanguageStandards;
   }
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
+  const LinkLibraryVectorType &GetLinkLibrariesForVS6() const {
+  return this->LinkLibrariesForVS6;}
+#endif
+
 private:
   bool HandleLocationPropertyPolicy(cmMakefile* context) const;
 
@@ -622,6 +625,7 @@ private:
 
   std::vector<std::pair<TLLSignature, cmListFileBacktrace> > TLLCommands;
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
   /**
    * A list of direct dependencies. Use in conjunction with DependencyMap.
    */
@@ -672,6 +676,7 @@ private:
                                  DependencyMap& dep_map);
 
   void AnalyzeLibDependenciesForVS6( const cmMakefile& mf );
+#endif
 
   const char* GetSuffixVariableInternal(bool implib) const;
   const char* GetPrefixVariableInternal(bool implib) const;
@@ -720,9 +725,11 @@ private:
   std::vector<cmCustomCommand> PreLinkCommands;
   std::vector<cmCustomCommand> PostBuildCommands;
   TargetType TargetTypeValue;
-  LinkLibraryVectorType LinkLibrariesForVS6;
   LinkLibraryVectorType PrevLinkedLibraries;
+#if defined(_WIN32) && !defined(__CYGWIN__)
+  LinkLibraryVectorType LinkLibrariesForVS6;
   bool LinkLibrariesForVS6Analyzed;
+#endif
   std::vector<std::string> LinkDirectories;
   std::set<std::string> LinkDirectoriesEmmitted;
   bool HaveInstallRule;