From c7c657ca9264b1bc7dc313a92e285128fc9ffea3 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Mon, 26 Sep 2011 20:51:23 +0000 Subject: [PATCH] Prevent unnecessary rebuilding of libs. - When building for Rockbox Utility the called Makefiles would rebuild the libs every time. Change dependencies a bit to allow make to properly detect if the lib is already up to date. - Remove dependency on output folder in some cases to avoid unnecessary rebuilds. - Add standard Rockbox header to files lacking it. - Make make calls from qmake silent. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30608 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/mkamsboot/Makefile | 24 ++++++++++++++++-------- rbutil/mkmpioboot/Makefile | 17 +++++++++++++---- rbutil/mktccboot/Makefile | 34 ++++++++++++++++++---------------- rbutil/rbutilqt/rbutilqt.pro | 10 +++++----- tools/ucl/src/Makefile | 28 ++++++++++++++-------------- 5 files changed, 66 insertions(+), 47 deletions(-) diff --git a/rbutil/mkamsboot/Makefile b/rbutil/mkamsboot/Makefile index a76259794e..052904211b 100644 --- a/rbutil/mkamsboot/Makefile +++ b/rbutil/mkamsboot/Makefile @@ -1,9 +1,15 @@ +# __________ __ ___. +# Open \______ \ ____ ____ | | _\_ |__ _______ ___ +# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +# \/ \/ \/ \/ \/ #change for releases ifndef APPVERSION -APPVERSION=`../../tools/version.sh ../../` +APPVERSION=$(shell ../../tools/version.sh ../../) endif - +TARGET_DIR ?= $(shell pwd)/ # We use the UCL code available in the Rockbox tools/ directory CFLAGS=-I../../tools/ucl/include -Wall -DVERSION=\"$(APPVERSION)\" @@ -37,10 +43,10 @@ endif all: $(OUTPUT) # additional link dependencies for the standalone executable -LIBUCL=../../tools/ucl/src/libucl$(RBARCH).a +LIBUCL=$(OBJDIR)libucl$(RBARCH).a $(LIBUCL): - $(MAKE) -C ../../tools/ucl/src $(TARGET_DIR)libucl$(RBARCH).a + $(SILENT)$(MAKE) -C ../../tools/ucl/src TARGET_DIR=$(OBJDIR) libucl$(RBARCH).a # inputs LIBSOURCES := dualboot.c md5.c mkamsboot.c @@ -58,9 +64,11 @@ $(OBJDIR)%.o: %.c $(SILENT)mkdir -p $(dir $@) $(SILENT)$(CC) $(CFLAGS) -c -o $@ $< -libmkamsboot$(RBARCH).a: $(LIBOBJS) - @echo AR $@ - $(SILENT)$(AR) rucs $(TARGET_DIR)$@ $^ +libmkamsboot$(RBARCH).a: $(TARGET_DIR)libmkamsboot$(RBARCH).a + +$(TARGET_DIR)libmkamsboot$(RBARCH).a: $(LIBOBJS) + @echo AR $(notdir $@) + $(SILENT)$(AR) rucs $@ $^ # building the standalone executable $(OUTPUT): $(OBJS) $(EXTRADEPS) @@ -74,7 +82,7 @@ $(TARGET_DIR)libmkamsbooti386.a: $(TARGET_DIR)libmkamsbootppc.a: make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libmkamsbootppc.a -endif +endif libmkamsboot-universal: $(TARGET_DIR)libmkamsbooti386.a $(TARGET_DIR)libmkamsbootppc.a @echo lipo $(TARGET_DIR)libmkamsboot.a diff --git a/rbutil/mkmpioboot/Makefile b/rbutil/mkmpioboot/Makefile index 5e138b6f12..8077bdceb6 100644 --- a/rbutil/mkmpioboot/Makefile +++ b/rbutil/mkmpioboot/Makefile @@ -1,3 +1,9 @@ +# __________ __ ___. +# Open \______ \ ____ ____ | | _\_ |__ _______ ___ +# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +# \/ \/ \/ \/ \/ #change for releases ifndef APPVERSION @@ -33,6 +39,7 @@ else OBJDIR = $(TARGET_DIR)build/ endif +TARGET_DIR ?= $(shell pwd) all: $(OUTPUT) @@ -52,9 +59,11 @@ $(OBJDIR)%.o: %.c $(SILENT)mkdir -p $(dir $@) $(SILENT)$(CC) $(CFLAGS) -c -o $@ $< -libmkmpioboot$(RBARCH).a: $(LIBOBJS) - @echo AR $@ - $(SILENT)$(AR) rucs $(TARGET_DIR)$@ $^ +libmkmpioboot$(RBARCH).a: $(TARGET_DIR)libmkmpioboot$(RBARCH).a + +$(TARGET_DIR)libmkmpioboot$(RBARCH).a: $(LIBOBJS) + @echo AR $(notdir $@) + $(SILENT)$(AR) rucs $@ $^ # building the standalone executable $(OUTPUT): $(OBJS) $(EXTRADEPS) @@ -68,7 +77,7 @@ $(TARGET_DIR)libmkmpiobooti386.a: $(TARGET_DIR)libmkmpiobootppc.a: make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libmkmpiobootppc.a -endif +endif libmkmpioboot-universal: $(TARGET_DIR)libmkmpiobooti386.a $(TARGET_DIR)libmkmpiobootppc.a @echo lipo $(TARGET_DIR)libmkmpioboot.a diff --git a/rbutil/mktccboot/Makefile b/rbutil/mktccboot/Makefile index 7a7acf87b7..b01f25dc3d 100644 --- a/rbutil/mktccboot/Makefile +++ b/rbutil/mktccboot/Makefile @@ -34,29 +34,34 @@ ifdef RBARCH CFLAGS += -arch $(RBARCH) endif -OUT = $(TARGET_DIR)build$(RBARCH) +TARGET_DIR ?= $(shell pwd)/ +OBJDIR = $(TARGET_DIR)build$(RBARCH) all: $(OUTPUT) # inputs LIBSOURCES := mktccboot.c $(TOOLSDIR)/telechips.o SOURCES := $(LIBSOURCES) main.c -OBJS := $(patsubst %.c,%.o,$(addprefix $(OUT)/,$(notdir $(SOURCES)))) -LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OUT)/,$(notdir $(LIBSOURCES)))) +OBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR)/,$(notdir $(SOURCES)))) +LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR)/,$(notdir $(LIBSOURCES)))) EXTRADEPS := # rule for sources from tools dir -$(OUT)/%.o: $(TOOLSDIR)/%.c $(OUT) +$(OBJDIR)/%.o: $(TOOLSDIR)/%.c @echo CC $< + $(SILENT)mkdir -p $(dir $@) $(SILENT)$(CC) $(CFLAGS) -c -o $@ $< -$(OUT)/%.o: %.c $(OUT) +$(OBJDIR)/%.o: %.c @echo CC $< + $(SILENT)mkdir -p $(dir $@) $(SILENT)$(CC) $(CFLAGS) -c -o $@ $< -libmktccboot$(RBARCH).a: $(LIBOBJS) - @echo AR $@ - $(SILENT)$(AR) rucs $(TARGET_DIR)$@ $^ +libmktccboot$(RBARCH).a: $(TARGET_DIR)libmktccboot$(RBARCH).a + +$(TARGET_DIR)libmktccboot$(RBARCH).a: $(LIBOBJS) + @echo AR $(notdir $@) + $(SILENT)$(AR) rucs $@ $^ # building the standalone executable $(OUTPUT): $(OBJS) $(EXTRADEPS) @@ -70,16 +75,16 @@ $(TARGET_DIR)libmktccbooti386.a: $(TARGET_DIR)libmktccbootppc.a: make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libmktccbootppc.a -endif - +endif + libmktccboot-universal: $(TARGET_DIR)libmktccbooti386.a $(TARGET_DIR)libmktccbootppc.a @echo lipo $(TARGET_DIR)libmktccboot.a $(SILENT) rm -f $(TARGET_DIR)libmktccboot.a $(SILENT)lipo -create $(TARGET_DIR)libmktccbootppc.a $(TARGET_DIR)libmktccbooti386.a -output $(TARGET_DIR)libmktccboot.a - + clean: rm -f $(OUTPUT) $(TARGET_DIR)libmktccboot*.a mktccboot.dmg - rm -rf $(OUT) + rm -rf $(OBJDIR) mktccboot-i386: $(MAKE) RBARCH=i386 @@ -96,8 +101,5 @@ mktccboot.dmg: mktccboot-mac mkdir -p mktccboot-dmg cp -p mktccboot-mac mktccboot-dmg hdiutil create -srcfolder mktccboot-dmg mktccboot.dmg - -$(OUT): - @echo MKDIR $(OUT) - $(SILENT)mkdir $(OUT) + diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro index 6954a19e0f..64a5ed7f89 100644 --- a/rbutil/rbutilqt/rbutilqt.pro +++ b/rbutil/rbutilqt/rbutilqt.pro @@ -70,25 +70,25 @@ mac { # here. This assumes that QMAKE_CC will always be "gcc", maybe with a postfix. MYAR = $$replace(QMAKE_CC,gcc.*,ar) -rbspeex.commands = @$(MAKE) \ +rbspeex.commands = @$(MAKE) -s \ TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/tools/rbspeex \ librbspeex$$RBLIBPOSTFIX \ SYS_SPEEX=\"$$LIBSPEEX\" \ CC=\"$$QMAKE_CC\" AR=\"$$MYAR\" -libucl.commands = @$(MAKE) \ +libucl.commands = @$(MAKE) -s \ TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/tools/ucl/src \ libucl$$RBLIBPOSTFIX \ CC=\"$$QMAKE_CC\" AR=\"$$MYAR\" -libmkamsboot.commands = @$(MAKE) \ +libmkamsboot.commands = @$(MAKE) -s \ TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mkamsboot \ APPVERSION=\"rbutil\" \ libmkamsboot$$RBLIBPOSTFIX \ CC=\"$$QMAKE_CC\" AR=\"$$MYAR\" -libmktccboot.commands = @$(MAKE) \ +libmktccboot.commands = @$(MAKE) -s \ TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mktccboot \ libmktccboot$$RBLIBPOSTFIX \ CC=\"$$QMAKE_CC\" AR=\"$$MYAR\" -libmkmpioboot.commands = @$(MAKE) \ +libmkmpioboot.commands = @$(MAKE) -s \ TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mkmpioboot \ APPVERSION=\"rbutil\" \ libmkmpioboot$$RBLIBPOSTFIX \ diff --git a/tools/ucl/src/Makefile b/tools/ucl/src/Makefile index 01fb66f513..33972bb617 100644 --- a/tools/ucl/src/Makefile +++ b/tools/ucl/src/Makefile @@ -17,25 +17,29 @@ CFLAGS += -arch $(RBARCH) endif -OUT = $(TARGET_DIR)build$(RBARCH) +TARGET_DIR ?= $(shell pwd) +OBJDIR = $(TARGET_DIR)build$(RBARCH) SOURCES = alloc.c io.c n2b_99.c n2b_d.c n2b_ds.c n2b_to.c n2d_99.c \ n2d_d.c n2d_ds.c n2d_to.c n2e_99.c n2e_d.c n2e_ds.c n2e_to.c ucl_crc.c \ ucl_init.c ucl_ptr.c ucl_str.c ucl_util.c #ucl_dll.c -OBJS = $(addprefix $(OUT)/,$(SOURCES:%.c=%.o)) +OBJS = $(addprefix $(OBJDIR)/,$(SOURCES:%.c=%.o)) # This Makefile is _not_ used to build uclpack for Rockbox builds anymore (they # use tools.make), so we can use $(CC) and $(AR) here. -libucl$(RBARCH).a: $(OUT) $(OBJS) - @echo AR $@ - $(SILENT)$(AR) rucs $(TARGET_DIR)$@ $(OBJS) >/dev/null 2>&1 +libucl$(RBARCH).a: $(TARGET_DIR)libucl$(RBARCH).a -$(OUT)/%.o: %.c +$(TARGET_DIR)libucl$(RBARCH).a: $(OBJS) + @echo AR $(notdir $@) + $(SILENT)$(AR) rucs $@ $(OBJS) >/dev/null 2>&1 + +$(OBJDIR)/%.o: %.c @echo CC $< + $(SILENT)mkdir -p $(dir $@) $(SILENT)$(CC) $(CFLAGS) -c $< -o $@ - + # some trickery to build ppc and i386 from a single call ifeq ($(RBARCH),) $(TARGET_DIR)libucli386.a: @@ -43,18 +47,14 @@ $(TARGET_DIR)libucli386.a: $(TARGET_DIR)libuclppc.a: make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libuclppc.a -endif - +endif + libucl-universal: $(TARGET_DIR)libucli386.a $(TARGET_DIR)libuclppc.a @echo lipo $(TARGET_DIR)libucl.a $(SILENT) rm -f $(TARGET_DIR)libucl.a $(SILENT)lipo -create $(TARGET_DIR)libuclppc.a $(TARGET_DIR)libucli386.a -output $(TARGET_DIR)libucl.a - + clean: rm -f $(TARGET_DIR)libucl*.a rm -rf build* -$(OUT): - @echo MKDIR $(OUT) - $(SILENT)mkdir -p $(OUT) -