diff --git a/tools/bin/shaderc.exe b/tools/bin/shaderc.exe index 2d7de6fa8..b7f2b7e5f 100644 Binary files a/tools/bin/shaderc.exe and b/tools/bin/shaderc.exe differ diff --git a/tools/shaderc/shaderc.cpp b/tools/shaderc/shaderc.cpp index 2491bc98a..cfa31e950 100644 --- a/tools/shaderc/shaderc.cpp +++ b/tools/shaderc/shaderc.cpp @@ -1035,20 +1035,7 @@ struct Preprocessor if (NULL != _includeDir) { - char* start = scratch(_includeDir); - - for (char* split = strchr(start, ';'); NULL != split; split = strchr(start, ';')) - { - *split = '\0'; - m_tagptr->tag = FPPTAG_INCLUDE_DIR; - m_tagptr->data = start; - m_tagptr++; - start = split + 1; - } - - m_tagptr->tag = FPPTAG_INCLUDE_DIR; - m_tagptr->data = start; - m_tagptr++; + addInclude(_includeDir); } m_default = "#define lowp\n#define mediump\n#define highp\n"; @@ -1085,6 +1072,24 @@ struct Preprocessor va_end(argList); } + void addInclude(const char* _includeDir) + { + char* start = scratch(_includeDir); + + for (char* split = strchr(start, ';'); NULL != split; split = strchr(start, ';')) + { + *split = '\0'; + m_tagptr->tag = FPPTAG_INCLUDE_DIR; + m_tagptr->data = start; + m_tagptr++; + start = split + 1; + } + + m_tagptr->tag = FPPTAG_INCLUDE_DIR; + m_tagptr->data = start; + m_tagptr++; + } + void addDependency(const char* _fileName) { m_depends += " \\\n "; @@ -1373,6 +1378,17 @@ int main(int _argc, const char* _argv[]) Preprocessor preprocessor(filePath, includeDir); + std::string dir; + { + const char* base = baseName(filePath); + + if (base != filePath) + { + dir.assign(filePath, base-filePath); + preprocessor.addInclude(dir.c_str() ); + } + } + preprocessor.setDefaultDefine("BX_PLATFORM_ANDROID"); preprocessor.setDefaultDefine("BX_PLATFORM_IOS"); preprocessor.setDefaultDefine("BX_PLATFORM_LINUX"); @@ -1459,7 +1475,8 @@ int main(int _argc, const char* _argv[]) { VaryingMap varyingMap; - const char* varyingdef = cmdLine.findOption("varyingdef", "varying.def.sc"); + std::string defaultVarying = dir + "varying.def.sc"; + const char* varyingdef = cmdLine.findOption("varyingdef", defaultVarying.c_str() ); File attribdef(varyingdef); const char* parse = attribdef.getData(); if (NULL != parse