GHS: Set LANGUAGE type for source files

Use gbuild project syntax for setting the language type for the file.
gbuild will pick the correct compiler or tool to use.

NOTE: Language names come from gbuild config files.  Therefore to
compile a file with the C++ compiler use "C++" not "CXX".

The previous implementation was passing the C compiler a flag to compile as C++
if LANGUAGE was set to "CXX".
pipelines/278874^2
Fred Baksik 2022-04-25 22:03:21 -04:00
parent c6ead9be83
commit 158d6252cc
2 changed files with 8 additions and 15 deletions

View File

@ -634,13 +634,8 @@ void cmGhsMultiTargetGenerator::WriteSources(std::ostream& fout_proj)
compile = false;
}
*fout << comment << fname << '\n';
*fout << comment << fname << WriteObjectLangOverride(si) << '\n';
if (compile) {
if ("ld" != si->GetExtension() && "int" != si->GetExtension() &&
"bsp" != si->GetExtension()) {
WriteObjectLangOverride(*fout, si);
}
this->WriteSourceProperty(*fout, si, "INCLUDE_DIRECTORIES", "-I");
this->WriteSourceProperty(*fout, si, "COMPILE_DEFINITIONS", "-D");
this->WriteSourceProperty(*fout, si, "COMPILE_OPTIONS", "");
@ -736,17 +731,16 @@ void cmGhsMultiTargetGenerator::WriteCustomCommandLine(
}
}
void cmGhsMultiTargetGenerator::WriteObjectLangOverride(
std::ostream& fout, const cmSourceFile* sourceFile)
std::string cmGhsMultiTargetGenerator::WriteObjectLangOverride(
const cmSourceFile* sourceFile)
{
std::string ret;
cmValue rawLangProp = sourceFile->GetProperty("LANGUAGE");
if (rawLangProp) {
std::string sourceLangProp(*rawLangProp);
std::string const& extension = sourceFile->GetExtension();
if ("CXX" == sourceLangProp && ("c" == extension || "C" == extension)) {
fout << " -dotciscxx\n";
}
ret = cmStrCat(" [", *rawLangProp, "]");
}
return ret;
}
bool cmGhsMultiTargetGenerator::DetermineIfIntegrityApp()

View File

@ -65,8 +65,7 @@ private:
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);
static std::string WriteObjectLangOverride(const cmSourceFile* sourceFile);
bool DetermineIfIntegrityApp();
cmGeneratorTarget* GeneratorTarget;