From b4d3af8888f261abb1f45ca42503f7170bdb3470 Mon Sep 17 00:00:00 2001 From: Stefan Reinauer Date: Thu, 11 Feb 2010 03:21:29 +0000 Subject: [PATCH] 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 --- Makefile | 19 +++++++++-------- src/arch/i386/Makefile.inc | 4 ++-- src/arch/i386/lib/console.c | 6 +----- src/lib/version.c | 1 + util/romcc/romcc.c | 41 ++++++++++++++++++++++++------------- 5 files changed, 42 insertions(+), 29 deletions(-) diff --git a/Makefile b/Makefile index 65a740595a..5b1e42ebef 100644 --- a/Makefile +++ b/Makefile @@ -148,31 +148,31 @@ $(obj)/$(1)%.o: src/$(1)%.asl endef define objs_c_template -$(obj)/$(1)%.o: src/$(1)%.c $(obj)/build.h +$(obj)/$(1)%.o: src/$(1)%.c $(obj)/config.h @printf " CC $$(subst $$(obj)/,,$$(@))\n" $(CC) -m32 $$(CFLAGS) -c -o $$@ $$< endef define objs_S_template -$(obj)/$(1)%.o: src/$(1)%.S $(obj)/build.h +$(obj)/$(1)%.o: src/$(1)%.S $(obj)/config.h @printf " CC $$(subst $$(obj)/,,$$(@))\n" $(CC) -m32 -DASSEMBLY $$(CFLAGS) -c -o $$@ $$< endef define initobjs_c_template -$(obj)/$(1)%.o: src/$(1)%.c $(obj)/build.h +$(obj)/$(1)%.o: src/$(1)%.c $(obj)/config.h @printf " CC $$(subst $$(obj)/,,$$(@))\n" $(CC) -m32 $$(CFLAGS) -c -o $$@ $$< endef define initobjs_S_template -$(obj)/$(1)%.o: src/$(1)%.S $(obj)/build.h +$(obj)/$(1)%.o: src/$(1)%.S $(obj)/config.h @printf " CC $$(subst $$(obj)/,,$$(@))\n" $(CC) -m32 -DASSEMBLY $$(CFLAGS) -c -o $$@ $$< endef define drivers_c_template -$(obj)/$(1)%.o: src/$(1)%.c $(obj)/build.h +$(obj)/$(1)%.o: src/$(1)%.c $(obj)/config.h @printf " CC $$(subst $$(obj)/,,$$(@))\n" $(CC) -m32 $$(CFLAGS) -c -o $$@ $$< endef @@ -219,7 +219,7 @@ OBJS := $(patsubst %,$(obj)/%,$(TARGETS-y)) INCLUDES := -I$(top)/src -I$(top)/src/include -I$(obj) -I$(top)/src/arch/$(ARCHDIR-y)/include INCLUDES += -I$(shell $(CC) -print-search-dirs | head -n 1 | cut -d' ' -f2)include INCLUDES += -I$(top)/util/x86emu/include -INCLUDES += -include $(obj)/build.h +INCLUDES += -include $(obj)/config.h CFLAGS = $(INCLUDES) -Os -nostdinc CFLAGS += -nostdlib -Wall -Wundef -Wstrict-prototypes -Wmissing-prototypes @@ -250,7 +250,10 @@ prepare2: $(obj)/build.h $(obj)/build.h: @printf " GEN build.h\n" rm -f $(obj)/build.h - printf "#define COREBOOT_VERSION \"$(KERNELVERSION)\"\n" > $(obj)/build.ht + printf "/* build system definitions (autogenerated) */\n" > $(obj)/build.ht + printf "#ifndef __BUILD_H\n" >> $(obj)/build.ht + printf "#define __BUILD_H\n\n" >> $(obj)/build.ht + printf "#define COREBOOT_VERSION \"$(KERNELVERSION)\"\n" >> $(obj)/build.ht printf "#define COREBOOT_EXTRA_VERSION \"$(COREBOOT_EXTRA_VERSION)\"\n" >> $(obj)/build.ht printf "#define COREBOOT_BUILD \"`LANG= date`\"\n" >> $(obj)/build.ht printf "\n" >> $(obj)/build.ht @@ -261,7 +264,7 @@ $(obj)/build.h: printf "#define COREBOOT_COMPILE_BY \"$(subst \,@,$(shell PATH=$$PATH:/usr/ucb whoami))\"\n" >> $(obj)/build.ht printf "#define COREBOOT_COMPILE_HOST \"$(shell hostname -s)\"\n" >> $(obj)/build.ht printf "#define COREBOOT_COMPILE_DOMAIN \"$(shell test `uname -s` = "Linux" && dnsdomainname || domainname)\"\n" >> $(obj)/build.ht - printf "#include \"config.h\"\n" >> $(obj)/build.ht + printf "#endif\n" >> $(obj)/build.ht mv $(obj)/build.ht $(obj)/build.h doxy: doxygen diff --git a/src/arch/i386/Makefile.inc b/src/arch/i386/Makefile.inc index f36f2db8ca..85b682bda4 100644 --- a/src/arch/i386/Makefile.inc +++ b/src/arch/i386/Makefile.inc @@ -79,11 +79,11 @@ $(obj)/mainboard/$(MAINBOARDDIR)/failover.inc: $(obj)/romcc $(src)/arch/i386/lib $(obj)/romcc $(ROMCCFLAGS) --label-prefix=failover $(INCLUDES) $(src)/arch/i386/lib/failover.c -o $@ $(obj)/mainboard/$(MAINBOARDDIR)/romstage.inc: $(src)/mainboard/$(MAINBOARDDIR)/romstage.c $(obj)/romcc $(OPTION_TABLE_H) $(obj)/build.h - $(obj)/romcc $(ROMCCFLAGS) $(INCLUDES) $< -o $@ + $(obj)/romcc $(ROMCCFLAGS) -include $(obj)/build.h $(INCLUDES) $< -o $@ else $(obj)/mainboard/$(MAINBOARDDIR)/romstage.inc: $(src)/mainboard/$(MAINBOARDDIR)/romstage.c $(OPTION_TABLE_H) $(obj)/build.h - $(CC) $(DISTRO_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(DEBUG_CFLAGS) -I$(src) -I. -c -S $< -o - | sed -e 's/\.rodata/.rom.data/g' -e 's/\.text/.section .rom.text/g' > $@.tmp + $(CC) $(DISTRO_CFLAGS) $(CFLAGS) $(CPPFLAGS) $(DEBUG_CFLAGS) -include $(obj)/build.h -I$(src) -I. -c -S $< -o - | sed -e 's/\.rodata/.rom.data/g' -e 's/\.text/.section .rom.text/g' > $@.tmp mv $@.tmp $@ endif endif diff --git a/src/arch/i386/lib/console.c b/src/arch/i386/lib/console.c index b5d3c1bffe..2f4500cef1 100644 --- a/src/arch/i386/lib/console.c +++ b/src/arch/i386/lib/console.c @@ -1,3 +1,4 @@ +#include #include #if CONFIG_USE_PRINTK_IN_CAR == 0 @@ -6,10 +7,6 @@ #include "console_printk.c" #endif /* CONFIG_USE_PRINTK_IN_CAR */ -#ifndef COREBOOT_EXTRA_VERSION -#define COREBOOT_EXTRA_VERSION "" -#endif - void console_init(void) { static const char console_test[] = @@ -22,7 +19,6 @@ void console_init(void) print_info(console_test); } - void die(const char *str) { print_emerg(str); diff --git a/src/lib/version.c b/src/lib/version.c index 2c84c4ae86..53abeca155 100644 --- a/src/lib/version.c +++ b/src/lib/version.c @@ -1,4 +1,5 @@ #include +#include #ifndef CONFIG_MAINBOARD_VENDOR #error CONFIG_MAINBOARD_VENDOR not defined 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; }