cmake/Source/cmGhsMultiTargetGenerator.h

87 lines
3.2 KiB
C
Raw Normal View History

2016-10-30 18:24:19 +01:00
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
2015-08-17 11:37:30 +02:00
#ifndef cmGhsMultiTargetGenerator_h
#define cmGhsMultiTargetGenerator_h
2019-11-11 23:01:05 +01:00
#include <iosfwd>
#include <map>
#include <set>
#include <string>
#include <vector>
2016-07-09 11:21:54 +02:00
2020-02-01 23:06:01 +01:00
#include "cmGhsMultiGpj.h"
2016-10-30 18:24:19 +01:00
class cmCustomCommand;
2019-11-11 23:01:05 +01:00
class cmCustomCommandGenerator;
2016-10-30 18:24:19 +01:00
class cmGeneratorTarget;
2015-08-17 11:37:30 +02:00
class cmGlobalGhsMultiGenerator;
class cmLocalGhsMultiGenerator;
class cmMakefile;
class cmSourceFile;
class cmGhsMultiTargetGenerator
{
public:
2015-11-17 17:22:37 +01:00
cmGhsMultiTargetGenerator(cmGeneratorTarget* target);
2015-08-17 11:37:30 +02:00
virtual ~cmGhsMultiTargetGenerator();
virtual void Generate();
private:
2016-07-09 11:21:54 +02:00
cmGlobalGhsMultiGenerator* GetGlobalGenerator() const;
2019-11-11 23:01:05 +01:00
void GenerateTarget();
void WriteTargetSpecifics(std::ostream& fout, const std::string& config);
void WriteCompilerFlags(std::ostream& fout, const std::string& config,
2016-07-09 11:21:54 +02:00
const std::string& language);
2019-11-11 23:01:05 +01:00
void WriteCompilerDefinitions(std::ostream& fout, const std::string& config,
2016-07-09 11:21:54 +02:00
const std::string& language);
2015-08-17 11:37:30 +02:00
2019-11-11 23:01:05 +01:00
void SetCompilerFlags(std::string const& config,
const std::string& language);
2016-07-09 11:21:54 +02:00
std::string GetDefines(const std::string& langugae,
std::string const& config);
2015-08-17 11:37:30 +02:00
2019-11-11 23:01:05 +01:00
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<cmCustomCommand>& 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<cmSourceFile const*>& order);
bool VisitCustomCommand(std::set<cmSourceFile const*>& temp,
std::set<cmSourceFile const*>& perm,
std::vector<cmSourceFile const*>& 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);
2015-08-17 11:37:30 +02:00
2019-11-11 23:01:05 +01:00
bool DetermineIfIntegrityApp();
2015-11-17 17:22:37 +01:00
cmGeneratorTarget* GeneratorTarget;
2016-07-09 11:21:54 +02:00
cmLocalGhsMultiGenerator* LocalGenerator;
cmMakefile* Makefile;
2015-08-17 11:37:30 +02:00
std::map<std::string, std::string> FlagsByLanguage;
std::map<std::string, std::string> DefinesByLanguage;
2019-11-11 23:01:05 +01:00
std::string TargetNameReal;
GhsMultiGpj::Types TagType;
std::string const Name;
std::string ConfigName; /* CMAKE_BUILD_TYPE */
bool const CmdWindowsShell; /* custom commands run in cmd.exe or /bin/sh */
2015-08-17 11:37:30 +02:00
};
#endif // ! cmGhsMultiTargetGenerator_h