Commit Graph

771 Commits

Author SHA1 Message Date
Kenneth Graunke 03ee33809f glcpp: Don't include newlines as part of #version-passthrough.
Fixes glcpp/tests/064-version.c.
2010-06-21 12:31:04 -07:00
Kenneth Graunke 214632f527 glcpp/tests: Add a test for #version followed by #define.
This isn't really a C file, but...that's probably okay.
2010-06-21 12:31:04 -07:00
Kenneth Graunke 8f32221638 glcpp: Fix line and column numbering.
Lines were off by one, and column numbering was completely daft.
2010-06-21 12:31:03 -07:00
Kenneth Graunke e8e93a4543 glcpp: Remove calls to exit().
Calling exit() would be really bad once integrated into mesa.  Even in
the standalone binary, we want to print the error log first.

Since each case already flags an error, compilation will still fail,
but it may go on (with something fudged) and generate more errors.
2010-06-21 12:31:03 -07:00
Kenneth Graunke 0774523d18 glcpp: Add line locations to "Unterminated #if" error message. 2010-06-21 12:31:03 -07:00
Kenneth Graunke 8a132aa08b glcpp: Add line locations to various mismatched #if error messages. 2010-06-21 12:31:03 -07:00
Kenneth Graunke dcdf62f1c6 glcpp: Add line locations to "reserved name" error messages. 2010-06-21 12:31:03 -07:00
Kenneth Graunke ca9e5fce25 glcpp: Print locations in error messages where possible. 2010-06-21 12:31:03 -07:00
Kenneth Graunke f1e6c069fa glcpp: Introduce new glcpp_error function. 2010-06-21 12:31:02 -07:00
Kenneth Graunke b78c9ddfbf glcpp: Set locations on tokens. 2010-06-21 11:31:56 -07:00
Kenneth Graunke db938103c7 glcpp: Set line locations in the lexer. 2010-06-21 11:31:56 -07:00
Kenneth Graunke 465e03ee07 glcpp: Add plumbing to support line locations. 2010-06-21 11:31:55 -07:00
Kenneth Graunke f70f60739a glcpp: Add %error-verbose. 2010-06-21 11:31:55 -07:00
Kenneth Graunke 77260fc0a0 glcpp: Actually support #ifdef and #ifndef.
Strangely, the lexer never created these tokens, even though the parser
already had code to handle them.
2010-06-21 11:31:55 -07:00
Kenneth Graunke e0e429fca3 glcpp: Build a reentrant parser. 2010-06-21 11:31:55 -07:00
Kenneth Graunke b673ff91ab glcpp: Print errors on stdout instead of stderr (non-standalone version).
Otherwise, piglit marks tests as "warn" when the shader was (correctly)
failing.
2010-06-21 11:31:55 -07:00
Kenneth Graunke 3370c5f90b glcpp/tests: Add extra newline at the end of expected output.
This newline at EOF is harmless and generated by the previous commit.
2010-06-21 11:31:55 -07:00
Kenneth Graunke f82d673648 glcpp: Handle missing newline at EOF.
Fixes CorrectFuncOverload.vert.
2010-06-21 11:31:55 -07:00
Kenneth Graunke 739ba06680 glcpp: Complain about unrecognized directives. 2010-06-21 11:31:55 -07:00
Kenneth Graunke 3b73ea36c4 glcpp: Pass #version, #extension, and #pragma directives through unchanged.
Let the main compiler's lexer/parser handle them.
2010-06-21 11:31:55 -07:00
Kenneth Graunke 04ba86a536 Make the main compiler call the preprocessor.
By using a single function, the main compiler doesn't need to include
glcpp.h, which currently has a lot of details about the preprocessor
internals.  In particular, this prevents the two yacc grammars from
seeing each other, which would be rather messy to sort out.
2010-06-21 11:31:54 -07:00
Kenneth Graunke 2848c4c183 Complain and exit if the given shader file doesn't exist. 2010-06-21 11:27:33 -07:00
Kenneth Graunke 1b1f43e608 glcpp: Add support for lexing from a string.
The standalone binary still reads from stdin, however.
2010-06-21 11:25:50 -07:00
Kenneth Graunke 4c8a1af811 glcpp: Output to a buffer and error log rather than directly printing.
In the standalone case, simply print the buffers when done.
2010-06-21 11:25:50 -07:00
Kenneth Graunke 0656f6b875 glcpp: Fix a case of == where = probably ought to be.
Caught by a GCC warning.
2010-06-21 11:25:50 -07:00
Kenneth Graunke cbaab7093c Add glcpp to the build. 2010-06-21 11:25:48 -07:00
Kenneth Graunke 254a485c33 Specify %option prefix="glcpp_" in the source code, not the Makefile. 2010-06-21 11:25:30 -07:00
Kenneth Graunke 6f510a49d2 Merge Carl's preprocessor into the glcpp subdirectory. 2010-06-21 11:22:11 -07:00
Kenneth Graunke f3eb42d200 Print out the info log if compilation fails. 2010-06-19 11:44:22 -07:00
Kenneth Graunke b2ba6fac09 Change error/warning functions to print to the info log. 2010-06-19 11:44:21 -07:00
Ian Romanick ca97bd395f Initialize the shader info log
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
2010-06-19 11:36:15 -07:00
Kenneth Graunke 32cf482215 Make shader a talloc context. 2010-06-19 11:36:15 -07:00
Kenneth Graunke 57d0fc4139 Link against talloc. We're going to be using it. 2010-06-19 11:36:15 -07:00
Kenneth Graunke c186b3fbe0 Fix crash when running glsl on a signle fragment shader. 2010-06-19 01:29:17 -07:00
Kenneth Graunke 29e6087481 Rename prog to shader. Less confusing. 2010-06-19 01:29:17 -07:00
Kenneth Graunke 520aad2c3e Fix compile on 64-bit. 2010-06-19 01:29:17 -07:00
Ian Romanick c96822cf31 Ensure that shader_in and shader_out are correctly set in declarations 2010-06-18 19:02:45 -07:00
Ian Romanick 93dad36844 glsl_lexer: centroid and invariant are not reserved words in GLSL 1.10 2010-06-18 19:02:45 -07:00
Ian Romanick 8655b7e78a glsl_lexer: Handle interpolation qualifiers 2010-06-18 19:02:45 -07:00
Ian Romanick c93b8f1d2c linker: Add some function header comments 2010-06-17 20:37:38 -07:00
Ian Romanick 4230cfdb42 TODO: Add note about initializers for constants 2010-06-17 20:37:17 -07:00
Ian Romanick ce03088406 Allow initializers for uniforms 2010-06-17 20:09:34 -07:00
Ian Romanick c648a124b2 Don't link shaders by default
Add a command line option to trigger linking.  This "fixes" all the
failing test cases.  Oops.
2010-06-17 19:51:48 -07:00
Ian Romanick 832dfa58b2 linker: Initial bits of the linker
No linking is done yet, but some of the semantic checking is done.
2010-06-17 15:04:20 -07:00
Ian Romanick 705fb01b59 Use glsl_program instead of an open-coded vector of shaders 2010-06-17 12:59:45 -07:00
Ian Romanick 3f09c2508a Add glsl_program that is similar to Mesa's gl_shader_program 2010-06-17 12:59:27 -07:00
Ian Romanick f8fe53ca2e Change glsl_program to glsl_shader 2010-06-17 12:54:24 -07:00
Ian Romanick 6fd9fb23de Compile multiple shaders listed on the command line 2010-06-17 12:22:16 -07:00
Ian Romanick 8ce55dbd92 Extract compilation to a separate routine
Pull all of the code that actually compiles shaders into a separate
function.  Use a glsl_program to track data about the compiled shader.
2010-06-17 12:01:18 -07:00
Ian Romanick 869b6f680f Add glsl_program that is similar to Mesa's gl_program
This will be used as the header for individual compilation units.
2010-06-17 12:00:25 -07:00