mesa/src/compiler/glsl/glcpp
Yiwei Zhang 53482178ef glcpp/meson: fix libglcpp generated header dependency
Explicitly declare glcpp-parse.h as a file dependency to ensure
glcpp_parse custom target completes before compiling glcpp-lex.c.

Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38254>
2025-11-05 18:13:47 +00:00
..
tests glcpp: prevent accidental token pasting 2025-09-16 11:27:43 +00:00
glcpp-lex.l glsl: rename state name to avoid conflicts with future changes 2025-07-31 17:49:40 +00:00
glcpp-parse.y glcpp: prevent accidental token pasting 2025-09-16 11:27:43 +00:00
glcpp.c util: Cleanup strtod.(h|c) by introduce _mesa_get_locale 2024-03-19 04:05:08 +00:00
glcpp.h util: Use an opaque type for linear context 2023-09-25 17:26:17 +00:00
meson.build glcpp/meson: fix libglcpp generated header dependency 2025-11-05 18:13:47 +00:00
pp.c
pp_standalone_scaffolding.c
pp_standalone_scaffolding.h
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.10.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 a draft of
the C99 standard as available from:

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

Any downstream compiler accepting output from glcpp should be prepared
to encounter and deal with the following preprocessor macros:

	#line
	#pragma
	#extension

All other macros will be handled according to the GLSL specification
and will not appear in the output.

Known limitations
-----------------
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).