/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include #include #include #include #include #include "cmGhsMultiGpj.h" class cmCustomCommand; class cmCustomCommandGenerator; class cmGeneratorTarget; class cmGlobalGhsMultiGenerator; class cmLocalGhsMultiGenerator; class cmMakefile; class cmSourceFile; class cmGhsMultiTargetGenerator { public: cmGhsMultiTargetGenerator(cmGeneratorTarget* target); virtual ~cmGhsMultiTargetGenerator(); virtual void Generate(); private: cmGlobalGhsMultiGenerator* GetGlobalGenerator() const; void GenerateTarget(); void WriteTargetSpecifics(std::ostream& fout, const std::string& config); void WriteCompilerFlags(std::ostream& fout, const std::string& config, const std::string& language); void WriteCompilerDefinitions(std::ostream& fout, const std::string& config, const std::string& language); void SetCompilerFlags(std::string const& config, const std::string& language); std::string GetDefines(const std::string& language, std::string const& config); void WriteIncludes(std::ostream& fout, const std::string& config, const std::string& language); void WriteTargetLinkLine(std::ostream& fout, std::string const& config); void WriteBuildEvents(std::ostream& fout); void WriteBuildEventsHelper(std::ostream& fout, const std::vector& ccv, std::string const& name, std::string const& cmd); void WriteCustomCommandsHelper(std::ostream& fout, cmCustomCommandGenerator const& ccg); void WriteCustomCommandLine(std::ostream& fout, std::string& fname, cmCustomCommandGenerator const& ccg); bool ComputeCustomCommandOrder(std::vector& order); bool VisitCustomCommand(std::set& temp, std::set& perm, std::vector& order, cmSourceFile const* sf); void WriteSources(std::ostream& fout_proj); void WriteSourceProperty(std::ostream& fout, const cmSourceFile* sf, std::string const& propName, std::string const& propFlag); static void WriteObjectLangOverride(std::ostream& fout, const cmSourceFile* sourceFile); bool DetermineIfIntegrityApp(); cmGeneratorTarget* GeneratorTarget; cmLocalGhsMultiGenerator* LocalGenerator; cmMakefile* Makefile; std::map FlagsByLanguage; std::map DefinesByLanguage; std::string TargetNameReal; GhsMultiGpj::Types TagType; std::string const Name; std::string ConfigName; /* CMAKE_BUILD_TYPE */ };