Add a versioning system and tie it to the -v command-line option. System is described in glslang/Include/revision.template.
git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@24314 e7fa87d3-cd2b-0410-9028-fcbf551c1848
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 8e240c6..ba910f8 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -63,6 +63,7 @@
EOptionDumpConfig = 0x080,
EOptionDumpReflection = 0x100,
EOptionSuppressWarnings = 0x200,
+ EOptionDumpVersions = 0x400,
};
//
@@ -486,6 +487,9 @@
Options |= EOptionMultiThreaded;
#endif
break;
+ case 'v':
+ Options |= EOptionDumpVersions;
+ break;
case 'w':
Options |= EOptionSuppressWarnings;
break;
@@ -552,9 +556,6 @@
// keep track of what to free
std::list<glslang::TShader*> shaders;
- //printf("%s\n", glslang::GetEsslVersionString());
- //printf("%s\n", glslang::GetGlslVersionString());
-
EShMessages messages = EShMsgDefault;
SetMessageOptions(messages);
@@ -632,6 +633,13 @@
return ESuccess;
}
+ if (Options & EOptionDumpVersions) {
+ printf("ESSL Version: %s\n", glslang::GetEsslVersionString());
+ printf("GLSL Version: %s\n", glslang::GetGlslVersionString());
+ if (Worklist.empty())
+ return ESuccess;
+ }
+
if (Worklist.empty()) {
usage();
return EFailUsage;
@@ -783,27 +791,32 @@
//
void usage()
{
- printf("Usage: glslangValidator [ options ] filename\n"
- "Where: filename is a name ending in\n"
- " .conf provides an optional config file that replaces the default configuration\n"
+ printf("Usage: glslangValidator [option]... [file]...\n"
+ "\n"
+ "Where: each 'file' ends in\n"
+ " .conf to provide an optional config file that replaces the default configuration\n"
" (see -c option below for generating a template)\n"
" .vert for a vertex shader\n"
" .tesc for a tessellation control shader\n"
" .tese for a tessellation evaluation shader\n"
" .geom for a geometry shader\n"
" .frag for a fragment shader\n"
- " .comp for a compute shader\n\n"
+ " .comp for a compute shader\n"
+ "\n"
"Compilation warnings and errors will be printed to stdout.\n"
+ "\n"
"To get other information, use one of the following options:\n"
- "-c: configuration dump; use to create default configuration file (redirect to a .conf file)\n"
- "-i: intermediate tree (glslang AST) is printed out\n"
- "-l: link validation of all input files\n"
- "-m: memory leak mode\n"
- "-q: dump reflection query database\n"
- "-r: relaxed semantic error-checking mode\n"
- "-s: silent mode\n"
- "-t: multi-threaded mode\n"
- "-w: suppress warnings (except as required by #extension : warn)\n"
+ "(Each option must be specified separately, but can go anywhere in the command line.)\n"
+ " -c configuration dump; use to create default configuration file (redirect to a .conf file)\n"
+ " -i intermediate tree (glslang AST) is printed out\n"
+ " -l link validation of all input files\n"
+ " -m memory leak mode\n"
+ " -q dump reflection query database\n"
+ " -r relaxed semantic error-checking mode\n"
+ " -s silent mode\n"
+ " -t multi-threaded mode\n"
+ " -v print version strings\n"
+ " -w suppress warnings (except as required by #extension : warn)\n"
);
}
diff --git a/glslang.vcxproj b/glslang.vcxproj
index 7685882..dc7b773 100644
--- a/glslang.vcxproj
+++ b/glslang.vcxproj
@@ -94,6 +94,9 @@
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0809</Culture>
</ResourceCompile>
+ <PreBuildEvent>
+ <Command>SubWCRev . glslang/Include/revision.template glslang/Include/revision.h -q</Command>
+ </PreBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
@@ -147,6 +150,9 @@
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Culture>0x0809</Culture>
</ResourceCompile>
+ <PreBuildEvent>
+ <Command>SubWCRev . glslang/Include/revision.template glslang/Include/revision.h -q</Command>
+ </PreBuildEvent>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="glslang\MachineIndependent\Constant.cpp" />
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
new file mode 100644
index 0000000..e18be76
--- /dev/null
+++ b/glslang/Include/revision.h
@@ -0,0 +1,13 @@
+// The file revision.h should be updated to the latest version, somehow, on
+// check-in, if glslang has changed.
+//
+// revision.template is the source for revision.h when using SubWCRev as the
+// method of updating revision.h. You don't have to do it this way, the
+// requirement is only that revision.h gets updated.
+//
+// revision.h is under source control so that not all consumers of glslang
+// source have to figure out how to create revision.h just to get a build
+// going. However, if it is not updated, it can be a version behind.
+
+#define GLSLANG_REVISION "24303"
+#define GLSLANG_DATE "2013/12/03 14:05:07"
diff --git a/glslang/Include/revision.template b/glslang/Include/revision.template
new file mode 100644
index 0000000..1dc3392
--- /dev/null
+++ b/glslang/Include/revision.template
@@ -0,0 +1,13 @@
+// The file revision.h should be updated to the latest version, somehow, on
+// check-in, if glslang has changed.
+//
+// revision.template is the source for revision.h when using SubWCRev as the
+// method of updating revision.h. You don't have to do it this way, the
+// requirement is only that revision.h gets updated.
+//
+// revision.h is under source control so that not all consumers of glslang
+// source have to figure out how to create revision.h just to get a build
+// going. However, if it is not updated, it can be a version behind.
+
+#define GLSLANG_REVISION "$WCREV$"
+#define GLSLANG_DATE "$WCDATE$"
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index 8fcf581..730ffe9 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -912,14 +912,16 @@
namespace glslang {
+#include "../Include/revision.h"
+
const char* GetEsslVersionString()
{
- return "OpenGL ES GLSL 3.00 glslang";
+ return "OpenGL ES GLSL 3.00 glslang LunarG Khronos." GLSLANG_REVISION " " GLSLANG_DATE;
}
const char* GetGlslVersionString()
{
- return "4.20 glslang";
+ return "4.20 glslang LunarG Khronos." GLSLANG_REVISION " " GLSLANG_DATE;
}
bool InitializeProcess()