summaryrefslogtreecommitdiff
path: root/source/compiler-core/slang-artifact-desc-util.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2022-09-01 09:35:18 -0400
committerGitHub <noreply@github.com>2022-09-01 09:35:18 -0400
commitcd8715a7760189c54b36c0c250efbe1db5b8635c (patch)
treecd1b2e840e64cbdd9e9a383646f0e58a7f14ae97 /source/compiler-core/slang-artifact-desc-util.cpp
parent5c2c2cfc9918bb43225159e67a851e196e17759a (diff)
Passing source to Downstream compilation as artifacts (#2382)
* #include an absolute path didn't work - because paths were taken to always be relative. * Make DownstreamCompileOptions use POD types. * CharSliceAllocator -> SliceAllocator Added SliceConverter CharSliceCaster -> SliceCaster * First attempt at zero terminating around blobs. * Fix clang warning. * Add SlangTerminatedChars Make Blob implementations support it. Make most blobs 'terminated'. * Fix bug setting up sourceFiles for CommandLineDownstreamCompiler. * Traffic in TerminatedCharSlice for sourceFiles. Use ArtifactDesc to generate temporary file names for source. * Fix typo in testing for shared library/C++. * Working with source being passed as artifacts to DownstreamCompiler. * Use artifacts in SourceManager/SourceFile. * Support infering extension from the original file extension.
Diffstat (limited to 'source/compiler-core/slang-artifact-desc-util.cpp')
-rw-r--r--source/compiler-core/slang-artifact-desc-util.cpp56
1 files changed, 32 insertions, 24 deletions
diff --git a/source/compiler-core/slang-artifact-desc-util.cpp b/source/compiler-core/slang-artifact-desc-util.cpp
index cb5d401a9..7534e1265 100644
--- a/source/compiler-core/slang-artifact-desc-util.cpp
+++ b/source/compiler-core/slang-artifact-desc-util.cpp
@@ -443,12 +443,12 @@ static const KindExtension g_cpuKindExts[] =
{
switch (kind)
{
- case Kind::Library:
- case Kind::ObjectCode:
- {
- return true;
- }
- default: break;
+ case Kind::Library:
+ case Kind::ObjectCode:
+ {
+ return true;
+ }
+ default: break;
}
return false;
}
@@ -587,9 +587,6 @@ static UnownedStringSlice _getPayloadExtension(ArtifactPayload payload)
typedef ArtifactPayload Payload;
switch (payload)
{
- /* Misc */
- case Payload::Unknown: return toSlice("unknown");
-
/* Source types */
case Payload::HLSL: return toSlice("hlsl");
case Payload::GLSL: return toSlice("glsl");
@@ -685,8 +682,14 @@ SlangResult ArtifactDescUtil::appendDefaultExtension(const ArtifactDesc& desc, S
}
case ArtifactKind::Source:
{
- out << _getPayloadExtension(desc.payload);
- return SLANG_OK;
+ auto ext = _getPayloadExtension(desc.payload);
+ if (ext.begin() != nullptr)
+ {
+ out << ext;
+ return SLANG_OK;
+ }
+ // Don't know the extension for that
+ return SLANG_E_NOT_FOUND;
}
default: break;
}
@@ -695,16 +698,7 @@ SlangResult ArtifactDescUtil::appendDefaultExtension(const ArtifactDesc& desc, S
{
return appendCpuExtensionForKind(desc.kind, out);
}
- else
- {
- auto slice = _getPayloadExtension(desc.payload);
- if (slice.getLength())
- {
- out << slice;
- return SLANG_OK;
- }
- }
-
+
return SLANG_E_NOT_FOUND;
}
@@ -752,6 +746,12 @@ SlangResult ArtifactDescUtil::appendDefaultExtension(const ArtifactDesc& desc, S
return getBaseNameFromPath(desc, path);
}
+/* static */SlangResult ArtifactDescUtil::hasDefinedNameForDesc(const ArtifactDesc& desc)
+{
+ StringBuilder buf;
+ return SLANG_SUCCEEDED(appendDefaultExtension(desc, buf));
+}
+
/* static */SlangResult ArtifactDescUtil::calcNameForDesc(const ArtifactDesc& desc, const UnownedStringSlice& inBaseName, StringBuilder& outName)
{
UnownedStringSlice baseName(inBaseName);
@@ -779,10 +779,18 @@ SlangResult ArtifactDescUtil::appendDefaultExtension(const ArtifactDesc& desc, S
// If there is an extension append it
StringBuilder ext;
- if (SLANG_SUCCEEDED(appendDefaultExtension(desc, ext)) && ext.getLength() > 0)
+ if (SLANG_SUCCEEDED(appendDefaultExtension(desc, ext)))
+ {
+ if (ext.getLength())
+ {
+ outName.appendChar('.');
+ outName.append(ext);
+ }
+ }
+ else
{
- outName.appendChar('.');
- outName.append(ext);
+ // If we can't determine the type we can output with .unknown
+ outName.append(toSlice(".unknown"));
}
return SLANG_OK;