diff options
Diffstat (limited to 'Source/cmGlobalGenerator.h')
-rw-r--r-- | Source/cmGlobalGenerator.h | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index add2b92..4bf4bd1 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -6,10 +6,13 @@ #include <cmConfigure.h> #include "cmExportSetMap.h" -#include "cmState.h" +#include "cmStateDirectory.h" +#include "cmStateSnapshot.h" #include "cmSystemTools.h" #include "cmTarget.h" #include "cmTargetDepend.h" +#include "cm_codecvt.hxx" +#include "cm_unordered_map.hxx" #include <iosfwd> #include <map> @@ -20,11 +23,6 @@ #if defined(CMAKE_BUILD_WITH_CMAKE) #include "cmFileLockPool.h" -#ifdef CMake_HAVE_CXX_UNORDERED_MAP -#include <unordered_map> -#else -#include <cmsys/hash_map.hxx> -#endif #endif class cmCustomCommandLines; @@ -33,7 +31,9 @@ class cmExportBuildFileGenerator; class cmExternalMakefileProjectGenerator; class cmGeneratorTarget; class cmLocalGenerator; +class cmLinkLineComputer; class cmMakefile; +class cmOutputConverter; class cmake; /** \class cmGlobalGenerator @@ -60,6 +60,12 @@ public: return this->GetName() == name; } + /** Get encoding used by generator for makefile files */ + virtual codecvt::Encoding GetMakefileEncoding() const + { + return codecvt::None; + } + /** Tell the generator about the target system. */ virtual bool SetSystemName(std::string const&, cmMakefile*) { return true; } @@ -98,6 +104,12 @@ public: */ virtual void Generate(); + virtual cmLinkLineComputer* CreateLinkLineComputer( + cmOutputConverter* outputConverter, cmStateDirectory stateDir) const; + + cmLinkLineComputer* CreateMSVC60LinkLineComputer( + cmOutputConverter* outputConverter, cmStateDirectory stateDir) const; + /** * Set/Get and Clear the enabled languages. */ @@ -234,7 +246,7 @@ public: /* * Determine what program to use for building the project. */ - virtual void FindMakeProgram(cmMakefile*); + virtual bool FindMakeProgram(cmMakefile*); ///! Find a target by name by searching the local generators. cmTarget* FindTarget(const std::string& name, @@ -319,6 +331,8 @@ public: i.e. "Can I build Debug and Release in the same tree?" */ virtual bool IsMultiConfig() const { return false; } + virtual bool UseFolderProperty() const; + std::string GetSharedLibFlagsForLanguage(std::string const& lang) const; /** Generate an <output>.rule file path for a given command output. */ @@ -393,8 +407,8 @@ protected: // has been populated. void FillProjectMap(); void CheckTargetProperties(); - bool IsExcluded(cmState::Snapshot const& root, - cmState::Snapshot const& snp) const; + bool IsExcluded(cmStateSnapshot const& root, + cmStateSnapshot const& snp) const; bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen) const; bool IsExcluded(cmLocalGenerator* root, cmGeneratorTarget* target) const; virtual void InitializeProgressMarks() {} @@ -448,25 +462,11 @@ protected: std::string const& name) const; const char* GetPredefinedTargetsFolder(); - virtual bool UseFolderProperty(); private: -#if defined(CMAKE_BUILD_WITH_CMAKE) -#ifdef CMake_HAVE_CXX_UNORDERED_MAP - typedef std::unordered_map<std::string, cmTarget*> TargetMap; - typedef std::unordered_map<std::string, cmGeneratorTarget*> - GeneratorTargetMap; - typedef std::unordered_map<std::string, cmMakefile*> MakefileMap; -#else - typedef cmsys::hash_map<std::string, cmTarget*> TargetMap; - typedef cmsys::hash_map<std::string, cmGeneratorTarget*> GeneratorTargetMap; - typedef cmsys::hash_map<std::string, cmMakefile*> MakefileMap; -#endif -#else - typedef std::map<std::string, cmTarget*> TargetMap; - typedef std::map<std::string, cmGeneratorTarget*> GeneratorTargetMap; - typedef std::map<std::string, cmMakefile*> MakefileMap; -#endif + typedef CM_UNORDERED_MAP<std::string, cmTarget*> TargetMap; + typedef CM_UNORDERED_MAP<std::string, cmGeneratorTarget*> GeneratorTargetMap; + typedef CM_UNORDERED_MAP<std::string, cmMakefile*> MakefileMap; // Map efficiently from target name to cmTarget instance. // Do not use this structure for looping over all targets. // It contains both normal and globally visible imported targets. |