summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-04-23 15:15:41 -0700
committerEric Anholt <eric@anholt.net>2010-04-23 15:15:41 -0700
commit60724abdf5ec7c2498dc2d7a3a6ee0e765d3cdf6 (patch)
treefe3969686293ab45067fada57b0f4649e28e4e35
parentc314ef89ea8f98d020389c53c472500add3e8621 (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.cpp2
-rw-r--r--preprocessor_glsl.cpp8
-rw-r--r--preprocessor_glsl.h2
-rw-r--r--preprocessor_token.c2
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;
}