summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;
}