summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2008-11-21 15:07:15 +0000
committerBjörn Stenberg <bjorn@haxx.se>2008-11-21 15:07:15 +0000
commit6640978129e8d3153027060ca79ba17e62114d25 (patch)
tree01a4e340227e0baadc8e0e123011a984c3be90ae
parent7ef2a053b8082943f5626ec55e78d98ffa5c7820 (diff)
downloadrockbox-6640978129e8d3153027060ca79ba17e62114d25.tar.gz
rockbox-6640978129e8d3153027060ca79ba17e62114d25.zip
Altered mkdepfile to use a single gcc call and post-process the output. This speeds up the dependency generation, especially in cygwin.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19169 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/lang/lang.make3
-rw-r--r--firmware/firmware.make2
-rwxr-xr-xtools/addtargetdir.pl28
-rw-r--r--tools/functions.make10
-rw-r--r--tools/root.make4
5 files changed, 37 insertions, 10 deletions
diff --git a/apps/lang/lang.make b/apps/lang/lang.make
index 416b2b4504..311a3d5ee2 100644
--- a/apps/lang/lang.make
+++ b/apps/lang/lang.make
@@ -9,8 +9,7 @@
LANGS := $(call preprocess, $(APPSDIR)/lang/SOURCES)
LANGOBJ := $(LANGS:$(ROOTDIR)/%.lang=$(BUILDDIR)/%.lng)
-
-SRC += $(ROOTDIR)/lang.o # yes ROOTDIR. root.make will subst it to BUILDDIR.
+LANG_O = $(BUILDDIR)/lang.o
CLEANOBJS += $(BUILDDIR)/max_language_size.h $(BUILDDIR)/lang.*
diff --git a/firmware/firmware.make b/firmware/firmware.make
index 02d60db253..2caa2c8a74 100644
--- a/firmware/firmware.make
+++ b/firmware/firmware.make
@@ -10,8 +10,8 @@
INCLUDES += -I$(FIRMDIR) -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I$(FIRMDIR)/common -I$(FIRMDIR)/drivers
FIRMLIB_SRC += $(call preprocess, $(FIRMDIR)/SOURCES)
-FIRMLIB_SRC += $(ROOTDIR)/sysfont.o
FIRMLIB_OBJ := $(call c2obj, $(FIRMLIB_SRC))
+FIRMLIB_OBJ += $(BUILDDIR)/sysfont.o
OTHER_SRC += $(FIRMLIB_SRC)
FIRMLIB = $(BUILDDIR)/firmware/libfirmware.a
diff --git a/tools/addtargetdir.pl b/tools/addtargetdir.pl
new file mode 100755
index 0000000000..37a2b6630e
--- /dev/null
+++ b/tools/addtargetdir.pl
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+# __________ __ ___.
+# Open \______ \ ____ ____ | | _\_ |__ _______ ___
+# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+# \/ \/ \/ \/ \/
+# $Id: Makefile 19082 2008-11-10 23:54:24Z zagor $
+#
+
+# addtargetdir.pl - Adds target directory to gcc-generated dependency data
+
+use File::Basename;
+
+my $rbroot = $ARGV[0];
+my $builddir = $ARGV[1];
+
+for (<STDIN>) {
+ if (/^([^:]+): (\S+) (.*)/) {
+ my ($target, $src, $rest) = ($1, $2, $3);
+ my $dir = dirname $src;
+ $dir =~ s/$rbroot//;
+ print "$builddir$dir/$target: $src $rest\n";
+ }
+ else {
+ print $_;
+ }
+}
diff --git a/tools/functions.make b/tools/functions.make
index dd87377f87..083e3eafeb 100644
--- a/tools/functions.make
+++ b/tools/functions.make
@@ -29,19 +29,17 @@ c2obj = $(subst .c,.o,$(subst .S,.o,$(subst $(ROOTDIR),$(BUILDDIR),$(1))))
# calculate dependencies for a list of source files $(2) and output them
# to a file $(1)
-
mkdepfile = $(shell \
- for each in $(2); do \
- obj=`echo $$each | sed -e 's/\.[cS]/.o/' -e 's:$(ROOTDIR):$(BUILDDIR):'`; \
- $(CC) $(PPCFLAGS) $(OTHER_INC) -MG -MM -include config.h -MT "$$obj" $$each 2>/dev/null; \
- done | sed -e "s: lang.h: $(BUILDDIR)/lang.o:" \
+ $(CC) $(PPCFLAGS) $(OTHER_INC) -MG -MM -include config.h $(2) | \
+ $(TOOLSDIR)/addtargetdir.pl $(ROOTDIR) $(BUILDDIR) | \
+ sed -e "s: lang.h: $(BUILDDIR)/lang.o:" \
-e "s: sysfont.h: $(BUILDDIR)/sysfont.h:" \
-e "s: max_language_size.h: $(BUILDDIR)/max_language_size.h:" \
-e "s: bitmaps/: $(BUILDDIR)/bitmaps/:g" \
-e "s: pluginbitmaps/: $(BUILDDIR)/pluginbitmaps/:g" \
-e "s: lib/: $(APPSDIR)/plugins/lib/:g" \
-e "s: codeclib.h: $(APPSDIR)/codecs/lib/codeclib.h:g" \
- > $(1); )
+ > $(1) )
# function to create .bmp dependencies
bmpdepfile = $(shell \
diff --git a/tools/root.make b/tools/root.make
index c6a9232a85..0d12e30a4b 100644
--- a/tools/root.make
+++ b/tools/root.make
@@ -92,7 +92,7 @@ veryclean: clean
clean:
$(SILENT)echo Cleaning build directory
- $(SILENT)rm -rf rockbox.zip rockbox.7z rockbox.tar rockbox.tar.gz rockbox.tar.bz2 TAGS apps firmware comsim sim lang.[ch] manual *.pdf *.a credits.raw rockbox.ipod bitmaps pluginbitmaps UI256.bmp rockbox-full.zip html txt rockbox-manual*.zip sysfont.h rockbox-info.txt voicefontids *.wav *.mp3 *.voice max_language_size.h $(CLEANOBJS) $(LINKRAM) $(LINKROM) rockbox.elf rockbox.map rockbox.bin $(DEPFILE) rombox.elf rombox.map rombox.bin $(BINARY) $(FLASHFILE) uisimulator bootloader flash
+ $(SILENT)rm -rf rockbox.zip rockbox.7z rockbox.tar rockbox.tar.gz rockbox.tar.bz2 TAGS apps firmware comsim sim lang.[ch] manual *.pdf *.a credits.raw rockbox.ipod bitmaps pluginbitmaps UI256.bmp rockbox-full.zip html txt rockbox-manual*.zip sysfont.h rockbox-info.txt voicefontids *.wav *.mp3 *.voice max_language_size.h $(CLEANOBJS) $(LINKRAM) $(LINKROM) rockbox.elf rockbox.map rockbox.bin $(DEPFILE) rombox.elf rombox.map rombox.bin $(BINARY) $(FLASHFILE) uisimulator bootloader flash $(BOOTLINK)
#### linking the binaries: ####
@@ -109,6 +109,8 @@ LINKRAM := $(BUILDDIR)/ram.link
ROMLDS := $(FIRMDIR)/rom.lds
LINKROM := $(BUILDDIR)/rom.link
+OBJ += $(LANG_O)
+
$(LINKRAM): $(RAMLDS)
$(call PRINTS,PP $(@F))
$(call preprocess2file,$<,$@,-DLOADADDRESS=$(LOADADDRESS))