Clone of mesa.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ian Romanick b302359394 Add missing build products to gitignore 15 years ago
..
main Merge Carl's preprocessor into the glcpp subdirectory. 15 years ago
tests glcpp/tests: Add a test for #if defined (identifier) 15 years ago
.gitignore Add missing build products to gitignore 15 years ago
Makefile.am Make the main compiler call the preprocessor. 15 years ago
README Merge Carl's preprocessor into the glcpp subdirectory. 15 years ago
glcpp-lex.l glcpp: Don't include newlines as part of #version-passthrough. 15 years ago
glcpp-parse.y glcpp: Initialize error state. 15 years ago
glcpp.c glcpp: Rename "errors" to "info_log." 15 years ago
glcpp.h glcpp: Add glcpp_warning for printing warnings to the info log. 15 years ago
hash_table.c Merge Carl's preprocessor into the glcpp subdirectory. 15 years ago
hash_table.h Merge Carl's preprocessor into the glcpp subdirectory. 15 years ago
pp.c glcpp: Print to the main compiler's infolog, not stdout. 15 years ago
xtalloc.c Merge Carl's preprocessor into the glcpp subdirectory. 15 years ago

README

glcpp -- GLSL "C" preprocessor

This is a simple preprocessor designed to provide the preprocessing
needs of the GLSL language. The requirements for this preprocessor are
specified in the GLSL 1.30 specification availble from:

http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.30.08.pdf

This specification is not precise on some semantics, (for example,
#define and #if), defining these merely "as is standard for C++
preprocessors". To fill in these details, I've been using the C99
standard (for which I had a convenient copy) as available from:

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf

Known limitations
-----------------
Macro invocations cannot include embedded newlines.

The __LINE__, __FILE__, and __VERSION__ macros are not yet supported.

The argument of the 'defined' operator cannot yet include enclosing
parentheses.

The #error, #pragma, #extension, #version, and #line macros are not
yet supported.

A file that ends with a function-like macro name as the last
non-whitespace token will result in a parse error, (where it should be
passed through as is).