Bläddra i källkod

shaderc: Added command line argument for setting preprocessor defines. Issue #662.

Branimir Karadžić 10 år sedan
förälder
incheckning
6d80ef7835
1 ändrade filer med 17 tillägg och 0 borttagningar
  1. 17 0
      tools/shaderc/shaderc.cpp

+ 17 - 0
tools/shaderc/shaderc.cpp

@@ -4,6 +4,7 @@
  */
 
 #include "shaderc.h"
+#include <bx/tokenizecmd.h>
 
 bool g_verbose = false;
 
@@ -662,6 +663,7 @@ void help(const char* _error = NULL)
 		  "           osx\n"
 		  "           windows\n"
 		  "      --preprocess              Preprocess only.\n"
+		  "      --define <defines>        Add defines to preprocessor (semicolon separated).\n"
 		  "      --raw                     Do not process shader. No preprocessor, and no glsl-optimizer (GLSL only).\n"
 		  "      --type <type>             Shader type (vertex, fragment)\n"
 		  "      --varyingdef <file path>  Path to varying.def.sc file.\n"
@@ -807,6 +809,21 @@ int main(int _argc, const char* _argv[])
 		}
 	}
 
+	const char* defines = cmdLine.findOption("define");
+	while (NULL != defines
+	&&    '\0'  != *defines)
+	{
+		defines = bx::strws(defines);
+		const char* eol = strchr(defines, ';');
+		if (NULL == eol)
+		{
+			eol = defines + strlen(defines);
+		}
+		std::string define(defines, eol);
+		preprocessor.setDefine(define.c_str());
+		defines = ';' == *eol ? eol+1 : eol;
+	}
+
 	preprocessor.setDefaultDefine("BX_PLATFORM_ANDROID");
 	preprocessor.setDefaultDefine("BX_PLATFORM_EMSCRIPTEN");
 	preprocessor.setDefaultDefine("BX_PLATFORM_IOS");