mesa/src/compiler/glsl/glcpp
Yonggang Luo aa8ea0f1b9 glsl: Fixes glcpp/tests with mingw/gcc
glcpp mingw failing in the following way:
```
49/56 mesa:compiler+glcpp / glcpp test (unix)     FAIL             3.39s   exit status 1
50/56 mesa:compiler+glcpp / glcpp test (oldmac)   FAIL             3.41s   exit status 1
51/56 mesa:compiler+glcpp / glcpp test (bizarro)  FAIL             3.42s   exit status 1
52/56 mesa:compiler+glcpp / glcpp test (windows)  FAIL             3.45s   exit status 1
```

The test failed because on mingw, the stderr will comes after stdout,
but all the expect files, the stderr is coming first,
so we flush(stderr) first to makesure stderr out before stdout

The failing example:

039-func-arg-obj-macro-with-comma: FAIL
---

+++

@@ -1,3 +1,5 @@

+0:12(21): preprocessor error: Error: macro foo invoked with 2 arguments (expected 1)
+

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26778>
2024-01-05 21:15:58 +00:00
..
tests glsl/tests: do not perform eol-conversion on windows 2022-08-23 09:16:19 +00:00
glcpp-lex.l util: Use an opaque type for linear context 2023-09-25 17:26:17 +00:00
glcpp-parse.y util: Use an opaque type for linear context 2023-09-25 17:26:17 +00:00
glcpp.c glsl: Fixes glcpp/tests with mingw/gcc 2024-01-05 21:15:58 +00:00
glcpp.h util: Use an opaque type for linear context 2023-09-25 17:26:17 +00:00
meson.build meson: use files() instead of joining paths 2023-01-27 11:35:50 +00:00
pp.c glcpp: Fix undefined behaviour in glcpp 2021-03-25 00:23:43 +00:00
pp_standalone_scaffolding.c mesa: add support cursor support for relative path shader includes 2019-11-20 05:05:56 +00:00
pp_standalone_scaffolding.h mesa: add support cursor support for relative path shader includes 2019-11-20 05:05:56 +00:00
README glsl: move to compiler/ 2016-01-26 16:08:33 +00:00

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