diff options
author | Eric Anholt <eric@anholt.net> | 2010-04-23 15:15:41 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2010-04-23 15:15:41 -0700 |
commit | 60724abdf5ec7c2498dc2d7a3a6ee0e765d3cdf6 (patch) | |
tree | fe3969686293ab45067fada57b0f4649e28e4e35 | |
parent | c314ef89ea8f98d020389c53c472500add3e8621 (diff) |
Make the linenumber output of the preproc be glsl linenumber format.preprocessor
The numbers on it look all wrong, but at least it should parse.
-rw-r--r-- | glsl_parser_extras.cpp | 2 | ||||
-rw-r--r-- | preprocessor_glsl.cpp | 8 | ||||
-rw-r--r-- | preprocessor_glsl.h | 2 | ||||
-rw-r--r-- | preprocessor_token.c | 2 |
4 files changed, 10 insertions, 4 deletions
diff --git a/glsl_parser_extras.cpp b/glsl_parser_extras.cpp index 77e2a34..d6e4eff 100644 --- a/glsl_parser_extras.cpp +++ b/glsl_parser_extras.cpp @@ -746,7 +746,7 @@ main(int argc, char **argv) state.ARB_texture_rectangle_enable = true; /* Preprocessor stage. */ - preprocessor(& state, raw_shader, &shader); + preprocessor(& state, raw_shader, &shader, 0); shader_len = strlen(shader); _mesa_glsl_lexer_ctor(& state, shader, shader_len); diff --git a/preprocessor_glsl.cpp b/preprocessor_glsl.cpp index 91a5f49..329d4f5 100644 --- a/preprocessor_glsl.cpp +++ b/preprocessor_glsl.cpp @@ -46,10 +46,13 @@ int preprocessor_output_used; int preprocessor(_mesa_glsl_parse_state *state, - char *shader, char **out_shader) + char *shader, char **out_shader, int source_number) { struct includ ifile; unsigned int ret; + char *filename; + + asprintf(&filename, "%d", source_number); ifiles = &ifile; @@ -72,6 +75,7 @@ preprocessor(_mesa_glsl_parse_state *state, ifiles->maxread = ifiles->curptr + strlen((const char *)ifiles->curptr); ifiles->fn = NULL; + ifiles->fname = (const usch *)filename; ifiles->incs = NULL; ifiles->lineno = 1; ifiles->idx = 0; /* ? */ @@ -90,6 +94,8 @@ preprocessor(_mesa_glsl_parse_state *state, /* FINISHME: error handling. */ (void)state; + free(filename); + return 0; } diff --git a/preprocessor_glsl.h b/preprocessor_glsl.h index 4063548..4766043 100644 --- a/preprocessor_glsl.h +++ b/preprocessor_glsl.h @@ -33,4 +33,4 @@ #include "glsl_parser_extras.h" int preprocessor(_mesa_glsl_parse_state *state, - char *shader, char **out_shader); + char *shader, char **out_shader, int source_number); diff --git a/preprocessor_token.c b/preprocessor_token.c index 8f47c55..5658434 100644 --- a/preprocessor_token.c +++ b/preprocessor_token.c @@ -759,7 +759,7 @@ prtline() preprocessor_out(s, strlen((char *)s)); } } else if (!Pflag) - putstr(sheap("\n# %d \"%s\"\n", ifiles->lineno, ifiles->fname)); + putstr(sheap("\n#line %d %s\n", ifiles->lineno, ifiles->fname)); stringbuf = os; } |