[OpenBIOS] [commit] r1013 - in trunk/openbios-devel: . config/xml kernel
repository service
svn at openbios.org
Sun Jan 2 10:56:19 CET 2011
Author: blueswirl
Date: Sun Jan 2 10:56:19 2011
New Revision: 1013
URL: http://tracker.coreboot.org/trac/openbios/changeset/1013
Log:
Generate Makefile dependencies also from Forth files
Dependencies between Forth files were not detected, so
dictionaries were not regenerated automatically in some cases.
Introduce '-M' flag to forthstrap to dump dependency information
in Makefile compatible format, based on the Forth 'include'
directives.
Signed-off-by: Blue Swirl <blauwirbel at gmail.com>
Modified:
trunk/openbios-devel/Makefile.target
trunk/openbios-devel/config/xml/dictionary.xsl
trunk/openbios-devel/kernel/bootstrap.c
Modified: trunk/openbios-devel/Makefile.target
==============================================================================
--- trunk/openbios-devel/Makefile.target Sun Jan 2 02:32:17 2011 (r1012)
+++ trunk/openbios-devel/Makefile.target Sun Jan 2 10:56:19 2011 (r1013)
@@ -77,4 +77,4 @@
include rules.mak
# Include automatically generated dependency files
--include $(wildcard $(ODIR)/host/kernel/*.d $(ODIR)/target/*/*.d $(ODIR)/target/*/*/*.d $(ODIR)/target/*/*/*/*.d)
+-include $(wildcard $(ODIR)/*.d $(ODIR)/host/kernel/*.d $(ODIR)/target/*/*.d $(ODIR)/target/*/*/*.d $(ODIR)/target/*/*/*/*.d)
Modified: trunk/openbios-devel/config/xml/dictionary.xsl
==============================================================================
--- trunk/openbios-devel/config/xml/dictionary.xsl Sun Jan 2 02:32:17 2011 (r1012)
+++ trunk/openbios-devel/config/xml/dictionary.xsl Sun Jan 2 10:56:19 2011 (r1013)
@@ -126,6 +126,7 @@
<xsl:text> -I$(ODIR)/forth</xsl:text>
<xsl:text> -D $@</xsl:text>
+ <xsl:text> -M $@.d</xsl:text>
<xsl:if test="$init!=''">
<xsl:text> -d $(ODIR)/</xsl:text><xsl:value-of select="$init"/><xsl:text>.dict</xsl:text>
</xsl:if>
Modified: trunk/openbios-devel/kernel/bootstrap.c
==============================================================================
--- trunk/openbios-devel/kernel/bootstrap.c Sun Jan 2 02:32:17 2011 (r1012)
+++ trunk/openbios-devel/kernel/bootstrap.c Sun Jan 2 10:56:19 2011 (r1013)
@@ -69,6 +69,7 @@
};
static include includes = { ".", NULL };
+static FILE *depfile;
static ucell * relocation_address=NULL;
static int relocation_length=0;
@@ -465,6 +466,10 @@
srclines [ cursrc ] = 1;
srcfiles [ cursrc++ ] = ret;
+ if (depfile) {
+ fprintf(depfile, " %s", fullpath);
+ }
+
return ret;
}
@@ -1025,7 +1030,9 @@
" write to output.dict\n" \
" -c|--console output.log\n" \
" write kernel console output to log file\n" \
- " -s|--segfault install segfault handler\n\n"
+ " -s|--segfault install segfault handler\n" \
+ " -M|--dependency-dump file\n" \
+ " dump dependencies in Makefile format\n\n"
#else
#define USAGE "Usage: %s [options] [dictionary file|source file]\n\n" \
" -h show this help\n" \
@@ -1039,7 +1046,7 @@
" -c output.log\n" \
" write kernel console output to log file\n" \
" -s install segfault handler\n\n"
-
+ " -M file dump dependencies in Makefile format\n\n"
#endif
int main(int argc, char *argv[])
@@ -1050,11 +1057,12 @@
char *dictname = NULL;
char *basedict = NULL;
char *consolefile = NULL;
+ char *depfilename = NULL;
unsigned char *bootstrapdict[2];
int c, cnt;
- const char *optstring = "VvhsI:d:D:c:?";
+ const char *optstring = "VvhsI:d:D:c:M:?";
while (1) {
#ifdef __GLIBC__
@@ -1068,6 +1076,7 @@
{"source-dictionary", 1, NULL, 'd'},
{"target-dictionary", 1, NULL, 'D'},
{"console", 1, NULL, 'c'},
+ {"dependency-dump", 1, NULL, 'M'},
};
/*
@@ -1118,6 +1127,11 @@
consolefile = optarg;
}
break;
+ case 'M':
+ if (!depfilename) {
+ depfilename = optarg;
+ }
+ break;
default:
return 1;
}
@@ -1127,6 +1141,7 @@
printk(BANNER);
printk("Using source dictionary '%s'\n", basedict);
printk("Dumping final dictionary to '%s'\n", dictname);
+ printk("Dumping dependencies to '%s'\n", depfilename);
}
if (argc < optind + 1) {
@@ -1134,6 +1149,15 @@
return 1;
}
+ if (depfilename) {
+ depfile = fopen(depfilename, "w");
+ if (!depfile) {
+ printk("panic: can't write to dependency file '%s'.\n",
+ depfilename);
+ exit(1);
+ }
+ fprintf(depfile, "%s:", dictname);
+ }
/*
* Get all required resources
@@ -1203,6 +1227,11 @@
run_dictionary(basedict, consolefile);
}
+ if (depfile) {
+ fprintf(depfile, "\n");
+ fclose(depfile);
+ depfile = NULL;
+ }
if(errors)
break;
}
More information about the OpenBIOS
mailing list