glslang preprocessing: Add -E option to print out preprocessed GLSL, and do the work needed to generate a preprocessed stream. From Andrew Woloszyn <awoloszyn@google.com>.

git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31508 e7fa87d3-cd2b-0410-9028-fcbf551c1848
This commit is contained in:
John Kessenich 2015-06-17 02:38:44 +00:00
parent 9288f46b95
commit c555dddd53
23 changed files with 609 additions and 55 deletions

View file

@ -629,10 +629,15 @@ int TPpContext::CPPline(TPpToken* ppToken)
return token;
}
int lineRes = 0;
int lineRes = 0; // Line number after macro expansion.
int lineToken = 0;
int fileRes = 0; // Source file number after macro expansion.
bool hasFile = false;
bool lineErr = false;
bool fileErr = false;
token = eval(token, MIN_PRECEDENCE, false, lineRes, lineErr, ppToken);
if (! lineErr) {
lineToken = lineRes;
if (token == '\n')
++lineRes;
@ -648,14 +653,15 @@ int TPpContext::CPPline(TPpToken* ppToken)
parseContext.setCurrentLine(lineRes);
if (token != '\n') {
int fileRes = 0;
bool fileErr = false;
token = eval(token, MIN_PRECEDENCE, false, fileRes, fileErr, ppToken);
if (! fileErr)
parseContext.setCurrentString(fileRes);
hasFile = true;
}
}
if (!fileErr && !lineErr) {
parseContext.notifyLineDirective(lineToken, hasFile, fileRes);
}
token = extraTokenCheck(lineAtom, ppToken, token);
return token;
@ -680,6 +686,7 @@ int TPpContext::CPPerror(TPpToken* ppToken)
message.append(" ");
token = scanToken(ppToken);
}
parseContext.notifyErrorDirective(loc.line, message.c_str());
//store this msg into the shader's information log..set the Compile Error flag!!!!
parseContext.error(loc, message.c_str(), "#error", "");