From 8a205b980c8dc088aa2c9f91adb90d57a65fa560 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 14 Jul 2014 14:39:20 -0400 Subject: [PATCH] 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. --- Source/cmGlobalGenerator.h | 2 ++ Source/cmTarget.cxx | 8 ++++++++ Source/cmTarget.h | 13 ++++++++++--- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 160a8fbfa..5e6c03e8d 100644 --- a/Source/cmGlobalGenerator.h +++ b/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, diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 0d17dc231..aaae45744 100644 --- a/Source/cmTarget.cxx +++ b/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 &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) diff --git a/Source/cmTarget.h b/Source/cmTarget.h index bd5417a9d..c2efb1464 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -179,8 +179,6 @@ public: typedef std::pair LibraryID; typedef std::vector 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 > 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 PreLinkCommands; std::vector PostBuildCommands; TargetType TargetTypeValue; - LinkLibraryVectorType LinkLibrariesForVS6; LinkLibraryVectorType PrevLinkedLibraries; +#if defined(_WIN32) && !defined(__CYGWIN__) + LinkLibraryVectorType LinkLibrariesForVS6; bool LinkLibrariesForVS6Analyzed; +#endif std::vector LinkDirectories; std::set LinkDirectoriesEmmitted; bool HaveInstallRule;