From 9df7fcb023bd5a22f35ecd609b7a50cc6634976c Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Tue, 9 Aug 2022 11:23:40 -0400 Subject: Artifact split interface and implementation (#2349) * #include an absolute path didn't work - because paths were taken to always be relative. * WIP with hierarchical enums. * Some small fixes and improvements around artifact desc related types. * Improvements around hierarchical enum. * Fixes to get Artifact types refactor to be able to execute tests. * Attempt to better categorize PTX. * Work around for potentially unused function warning. * Typo fix. * Simplify Artifact header. * Small improvements around Artifact kind/payload/style. * Added IDestroyable/ICastable * Add IArtifactList. * First impl of IArtifactUtil. * Use the ICastable interface for IArtifactRepresentation. * Added IArtifactRepresentation & IArtifactAssociated. * Add SLANG_OVERRIDE to avoid gcc/clang warning. * Fix calling convention issue on win32. * Fix missing SLANG_OVERRIDE. * First attempt at file abstraction around Artifact. * Added creation of lock file. * Move functionality for determining file paths to the IArtifactUtil. Add casting to ICastable. * Added some casting/finding mechanisms. * Simplify IArtifact interface, and use Items for file reps. * Fix problem with libraries on DXIL. * Split out ArtifactRepresentation. * Move ArtifactDesc functionality to ArtifactDescUtil. ArtifactInfoUtil becomes ArtifactDescUtil. * Split implementations from the interfaces for Artifact. * Use TypeTextUtil for target name outputting. * Add artifact impls. --- source/slang/slang-options.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'source/slang/slang-options.cpp') diff --git a/source/slang/slang-options.cpp b/source/slang/slang-options.cpp index ab658fe18..5b14ca24f 100644 --- a/source/slang/slang-options.cpp +++ b/source/slang/slang-options.cpp @@ -10,7 +10,10 @@ #include "slang-compiler.h" #include "slang-profile.h" -#include "../compiler-core/slang-artifact.h" +#include "../compiler-core/slang-artifact-desc-util.h" + +#include "../compiler-core/slang-artifact-impl.h" +#include "../compiler-core/slang-artifact-representation-impl.h" #include "slang-repro.h" #include "slang-serialize-ir.h" @@ -20,7 +23,7 @@ #include "../core/slang-hex-dump-util.h" #include "../compiler-core/slang-command-line-args.h" -#include "../compiler-core/slang-artifact-info.h" +#include "../compiler-core/slang-artifact-desc-util.h" #include "../compiler-core/slang-core-diagnostics.h" #include @@ -1458,7 +1461,7 @@ struct OptionsParser const auto path = referenceModuleName.value; - auto desc = ArtifactInfoUtil::getDescFromPath(path.getUnownedSlice()); + auto desc = ArtifactDescUtil::getDescFromPath(path.getUnownedSlice()); if (desc.kind == ArtifactKind::Unknown) { @@ -1467,18 +1470,18 @@ struct OptionsParser } // If it's a GPU binary, then we'll assume it's a library - if (ArtifactInfoUtil::isGpuUsable(desc)) + if (ArtifactDescUtil::isGpuUsable(desc)) { desc.kind = ArtifactKind::Library; } - if (!ArtifactInfoUtil::isLinkable(desc)) + if (!ArtifactDescUtil::isLinkable(desc)) { sink->diagnose(referenceModuleName.loc, Diagnostics::kindNotLinkable, Path::getPathExt(path)); return SLANG_FAIL; } - const String name = ArtifactInfoUtil::getBaseNameFromPath(desc, path.getUnownedSlice()); + const String name = ArtifactDescUtil::getBaseNameFromPath(desc, path.getUnownedSlice()); // Create the artifact ComPtr artifact(new Artifact(desc, name)); @@ -2042,7 +2045,7 @@ struct OptionsParser // and output type is callable, add an empty' rawOutput. if (rawOutputs.getCount() == 0 && rawTargets.getCount() == 1 && - ArtifactDesc::makeFromCompileTarget(asExternal(rawTargets[0].format)).kind == ArtifactKind::HostCallable) + ArtifactDescUtil::makeDescFromCompileTarget(asExternal(rawTargets[0].format)).kind == ArtifactKind::HostCallable) { RawOutput rawOutput; rawOutput.impliedFormat = rawTargets[0].format; -- cgit v1.2.3