diff options
author | Björn Stenberg <bjorn@haxx.se> | 2008-11-21 15:07:15 +0000 |
---|---|---|
committer | Björn Stenberg <bjorn@haxx.se> | 2008-11-21 15:07:15 +0000 |
commit | 6640978129e8d3153027060ca79ba17e62114d25 (patch) | |
tree | 01a4e340227e0baadc8e0e123011a984c3be90ae | |
parent | 7ef2a053b8082943f5626ec55e78d98ffa5c7820 (diff) | |
download | rockbox-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.make | 3 | ||||
-rw-r--r-- | firmware/firmware.make | 2 | ||||
-rwxr-xr-x | tools/addtargetdir.pl | 28 | ||||
-rw-r--r-- | tools/functions.make | 10 | ||||
-rw-r--r-- | tools/root.make | 4 |
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)) |