[coreboot] [commit] r5114 - in trunk: . src/arch/i386 src/arch/i386/lib src/lib util/romcc

repository service svn at coreboot.org
Thu Feb 11 04:21:29 CET 2010


Author: stepan
Date: Thu Feb 11 04:21:29 2010
New Revision: 5114
URL: http://tracker.coreboot.org/trac/coreboot/changeset/5114

Log:
separate build.h and config.h usage (now possible because newconfig is gone)

Signed-off-by: Stefan Reinauer <stepan at coresystems.de>
Acked-by: Patrick Georgi <patrick.georgi at coresystems.de>

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)

Modified:
   trunk/Makefile
   trunk/src/arch/i386/Makefile.inc
   trunk/src/arch/i386/lib/console.c
   trunk/src/lib/version.c
   trunk/util/romcc/romcc.c

Modified: trunk/Makefile
==============================================================================
--- trunk/Makefile	Wed Feb 10 21:31:38 2010	(r5113)
+++ trunk/Makefile	Thu Feb 11 04:21:29 2010	(r5114)
@@ -148,31 +148,31 @@
 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 @@
 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 @@
 $(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 @@
 	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

Modified: trunk/src/arch/i386/Makefile.inc
==============================================================================
--- trunk/src/arch/i386/Makefile.inc	Wed Feb 10 21:31:38 2010	(r5113)
+++ trunk/src/arch/i386/Makefile.inc	Thu Feb 11 04:21:29 2010	(r5114)
@@ -79,11 +79,11 @@
 	$(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

Modified: trunk/src/arch/i386/lib/console.c
==============================================================================
--- trunk/src/arch/i386/lib/console.c	Wed Feb 10 21:31:38 2010	(r5113)
+++ trunk/src/arch/i386/lib/console.c	Thu Feb 11 04:21:29 2010	(r5114)
@@ -1,3 +1,4 @@
+#include <build.h>
 #include <console/loglevel.h>
 
 #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 @@
 	print_info(console_test);
 }
 
-
 void die(const char *str)
 {
 	print_emerg(str);

Modified: trunk/src/lib/version.c
==============================================================================
--- trunk/src/lib/version.c	Wed Feb 10 21:31:38 2010	(r5113)
+++ trunk/src/lib/version.c	Thu Feb 11 04:21:29 2010	(r5114)
@@ -1,4 +1,5 @@
 #include <version.h>
+#include <build.h>
 
 #ifndef CONFIG_MAINBOARD_VENDOR
 #error CONFIG_MAINBOARD_VENDOR not defined

Modified: trunk/util/romcc/romcc.c
==============================================================================
--- trunk/util/romcc/romcc.c	Wed Feb 10 21:31:38 2010	(r5113)
+++ trunk/util/romcc/romcc.c	Thu Feb 11 04:21:29 2010	(r5114)
@@ -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 <stdarg.h>
@@ -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 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 @@
 	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 @@
 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 @@
 				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 @@
 	if (!filename) {
 		arg_error("No filename specified\n");
 	}
-	compile(filename, includefile, &compiler, &arch);
+	compile(filename, &compiler, &arch);
 
 	return 0;
 }




More information about the coreboot mailing list