Allowing explicit specification of shader compiltion type via -T option, rather then looking at file extension. For HLSL files, this is nice because .hlsl extension is natively udnerstood by visual studio, likely to be used with the -e option.
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index c014be2..151141f 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -155,6 +155,7 @@
const char* ExecutableName = nullptr;
const char* binaryFileName = nullptr;
const char* entryPointName = nullptr;
+const char* shaderTargetName = nullptr;
//
// Create the default name for saving a binary if -o is not provided.
@@ -236,6 +237,15 @@
Options |= EOptionVulkanRules;
Options |= EOptionLinkProgram;
break;
+ case 'T':
+ shaderTargetName = argv[1];
+ if (argc > 0) {
+ argc--;
+ argv++;
+ }
+ else
+ Error("no <target> specified for -T");
+ break;
case 'G':
Options |= EOptionSpv;
Options |= EOptionLinkProgram;
@@ -260,6 +270,7 @@
case 'e':
// HLSL todo: entry point handle needs much more sophistication.
// This is okay for one compilation unit with one entry point.
+ // dankbaker - not sure it needs to be, fxc has no more sophistication then this
entryPointName = argv[1];
if (argc > 0) {
argc--;
@@ -685,6 +696,9 @@
}
std::string suffix = name.substr(ext + 1, std::string::npos);
+ if (shaderTargetName)
+ suffix = shaderTargetName;
+
if (suffix == "vert")
return EShLangVertex;
else if (suffix == "tesc")
@@ -778,6 +792,8 @@
" -H print human readable form of SPIR-V; turns on -V\n"
" -E print pre-processed GLSL; cannot be used with -l;\n"
" errors will appear on stderr.\n"
+ " -T <target> uses explicit target specified, rather then the file extension.\n"
+ " valid choices are vert,tesc, tese,geom, rag,comp\n"
" -c configuration dump;\n"
" creates the default configuration file (redirect to a .conf file)\n"
" -C cascading errors; risks crashes from accumulation of error recoveries\n"