mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-03 21:00:01 -05:00
ISPC: Generated Headers suffix configurable with a better default
The target property `ISPC_HEADER_SUFFIX` and associated global variable now can control the suffix used when generating the C/C++ interoperability ISPC headers. In addition the default suffix is now "_ispc.h" which matches the common convention that the ISPC compiler team uses and recommends.
This commit is contained in:
committed by
Brad King
parent
6aff058ab4
commit
c9a50f3556
@@ -2426,9 +2426,12 @@ void cmLocalGenerator::AddISPCDependencies(cmGeneratorTarget* target)
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<std::string> ispcSuffixes =
|
||||
cmProp ispcHeaderSuffixProp = target->GetProperty("ISPC_HEADER_SUFFIX");
|
||||
assert(ispcHeaderSuffixProp != nullptr);
|
||||
|
||||
std::vector<std::string> ispcArchSuffixes =
|
||||
detail::ComputeISPCObjectSuffixes(target);
|
||||
const bool extra_objects = (ispcSuffixes.size() > 1);
|
||||
const bool extra_objects = (ispcArchSuffixes.size() > 1);
|
||||
|
||||
std::vector<std::string> configsList =
|
||||
this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig);
|
||||
@@ -2451,14 +2454,19 @@ void cmLocalGenerator::AddISPCDependencies(cmGeneratorTarget* target)
|
||||
const std::string& lang = sf->GetLanguage();
|
||||
if (lang == "ISPC") {
|
||||
std::string const& objectName = target->GetObjectName(sf);
|
||||
|
||||
// Drop both ".obj" and the source file extension
|
||||
std::string ispcSource =
|
||||
cmSystemTools::GetFilenameWithoutLastExtension(objectName);
|
||||
ispcSource =
|
||||
cmSystemTools::GetFilenameWithoutLastExtension(ispcSource);
|
||||
|
||||
auto headerPath = cmStrCat(headerDir, '/', ispcSource, ".h");
|
||||
auto headerPath =
|
||||
cmStrCat(headerDir, '/', ispcSource, *ispcHeaderSuffixProp);
|
||||
target->AddISPCGeneratedHeader(headerPath, config);
|
||||
if (extra_objects) {
|
||||
std::vector<std::string> objs = detail::ComputeISPCExtraObjects(
|
||||
objectName, rootObjectDir, ispcSuffixes);
|
||||
objectName, rootObjectDir, ispcArchSuffixes);
|
||||
target->AddISPCGeneratedObject(std::move(objs), config);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user