From b4d3af8888f261abb1f45ca42503f7170bdb3470 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Thu, 11 Feb 2010 03:21:29 +0000 Subject: separate build.h and config.h usage (now possible because newconfig is gone) Signed-off-by: Stefan Reinauer Acked-by: Patrick Georgi This patch is slightly reworked to include a necessary romcc change that allows more than one -include specified on the command line, and gets rid of the explicit build.h dependencies of all files. (The files do keep an explicit config.h dependency though) git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5114 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- util/romcc/romcc.c | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) (limited to 'util') diff --git a/util/romcc/romcc.c b/util/romcc/romcc.c index 35bd35a551..71c33b0a1b 100644 --- a/util/romcc/romcc.c +++ b/util/romcc/romcc.c @@ -3,8 +3,8 @@ #undef RELEASE_DATE #undef VERSION #define VERSION_MAJOR "0" -#define VERSION_MINOR "71" -#define RELEASE_DATE "03 April 2009" +#define VERSION_MINOR "72" +#define RELEASE_DATE "10 February 2010" #define VERSION VERSION_MAJOR "." VERSION_MINOR #include @@ -127,6 +127,14 @@ * Where do I place phi functions and how do I make that decision. * */ + +struct filelist { + const char *filename; + struct filelist *next; +}; + +struct filelist *include_filelist = NULL; + static void die(char *fmt, ...) { va_list args; @@ -24927,12 +24935,13 @@ static void print_preprocessed_tokens(struct compile_state *state) } } -static void compile(const char *filename, const char *includefile, +static void compile(const char *filename, struct compiler_state *compiler, struct arch_state *arch) { int i; struct compile_state state; struct triple *ptr; + struct filelist *includes = include_filelist; memset(&state, 0, sizeof(state)); state.compiler = compiler; state.arch = arch; @@ -25002,8 +25011,11 @@ static void compile(const char *filename, const char *includefile, register_builtins(&state); compile_file(&state, filename, 1); - if (includefile) - compile_file(&state, includefile, 1); + + while (includes) { + compile_file(&state, includes->filename, 1); + includes=includes->next; + } /* Stop if all we want is preprocessor output */ if (state.compiler->flags & COMPILER_PP_ONLY) { @@ -25070,7 +25082,6 @@ static void arg_error(char *fmt, ...) int main(int argc, char **argv) { const char *filename; - const char *includefile = NULL; struct compiler_state compiler; struct arch_state arch; int all_opts; @@ -25121,14 +25132,16 @@ int main(int argc, char **argv) result = arch_encode_flag(&arch, argv[1]+2); } else if (strncmp(argv[1], "-include", 10) == 0) { - if (includefile) { - arg_error("Only one -include option may be specified.\n"); - } else { - argv++; - argc--; - includefile = argv[1]; - result = 0; + struct filelist *old_head = include_filelist; + include_filelist = malloc(sizeof(struct filelist)); + if (!include_filelist) { + die("Out of memory.\n"); } + argv++; + argc--; + include_filelist->filename = argv[1]; + include_filelist->next = old_head; + result = 0; } if (result < 0) { arg_error("Invalid option specified: %s\n", @@ -25149,7 +25162,7 @@ int main(int argc, char **argv) if (!filename) { arg_error("No filename specified\n"); } - compile(filename, includefile, &compiler, &arch); + compile(filename, &compiler, &arch); return 0; } -- cgit v1.2.3