diff options
Diffstat (limited to 'Source/cmCommonTargetGenerator.h')
-rw-r--r-- | Source/cmCommonTargetGenerator.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Source/cmCommonTargetGenerator.h b/Source/cmCommonTargetGenerator.h new file mode 100644 index 0000000..0bafde9 --- /dev/null +++ b/Source/cmCommonTargetGenerator.h @@ -0,0 +1,81 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2015 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef cmCommonTargetGenerator_h +#define cmCommonTargetGenerator_h + +#include "cmStandardIncludes.h" + +#include "cmLocalGenerator.h" + +class cmGeneratorTarget; +class cmGlobalCommonGenerator; +class cmLocalCommonGenerator; +class cmMakefile; +class cmSourceFile; + +/** \class cmCommonTargetGenerator + * \brief Common infrastructure for Makefile and Ninja per-target generators + */ +class cmCommonTargetGenerator +{ +public: + cmCommonTargetGenerator(cmGeneratorTarget* gt); + virtual ~cmCommonTargetGenerator(); + + std::string const& GetConfigName() const; + +protected: + // Add language feature flags. + void AddFeatureFlags(std::string& flags, const std::string& lang); + + // Feature query methods. + const char* GetFeature(const std::string& feature); + bool GetFeatureAsBool(const std::string& feature); + + // Helper to add flag for windows .def file. + void AddModuleDefinitionFlag(std::string& flags); + + cmGeneratorTarget* GeneratorTarget; + cmMakefile* Makefile; + cmLocalCommonGenerator* LocalGenerator; + cmGlobalCommonGenerator* GlobalGenerator; + std::string ConfigName; + + // The windows module definition source file (.def), if any. + cmSourceFile const* ModuleDefinitionFile; + + std::string Convert( + std::string const& source, cmOutputConverter::RelativeRoot relative, + cmOutputConverter::OutputFormat output = cmOutputConverter::UNCHANGED); + + void AppendFortranFormatFlags(std::string& flags, + cmSourceFile const& source); + + virtual void AddIncludeFlags(std::string& flags, + std::string const& lang) = 0; + + void AppendOSXVerFlag(std::string& flags, const std::string& lang, + const char* name, bool so); + + typedef std::map<std::string, std::string> ByLanguageMap; + std::string GetFlags(const std::string& l); + ByLanguageMap FlagsByLanguage; + std::string GetDefines(const std::string& l); + ByLanguageMap DefinesByLanguage; + std::string GetIncludes(std::string const& l); + ByLanguageMap IncludesByLanguage; + std::string GetManifests(); + + std::vector<std::string> GetLinkedTargetDirectories() const; +}; + +#endif |