mkmpioboot: use common Makefile.

Extend common libtools.make with libucl dependency, which will be needed by
other tools as well. Update mkmpioboot.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31259 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Riebeling 2011-12-14 22:00:06 +00:00
parent 29937388fd
commit 6b8f0b0267
2 changed files with 29 additions and 102 deletions

View file

@ -58,19 +58,13 @@ all: $(BINARY)
OBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(notdir $(SOURCES)))) OBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(notdir $(SOURCES))))
LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(notdir $(LIBSOURCES)))) LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(notdir $(LIBSOURCES))))
$(OBJDIR)%.o: %.c # additional link dependencies for the standalone executable
@echo CC $< # extra dependencies: libucl
$(SILENT)mkdir -p $(dir $@) LIBUCL = libucl$(RBARCH).a
$(SILENT)$(CROSS)$(CC) $(CFLAGS) -c -o $@ $< $(LIBUCL): $(OBJDIR)$(LIBUCL)
lib$(OUTPUT)$(RBARCH).a: $(TARGET_DIR)lib$(OUTPUT)$(RBARCH).a
lib$(OUTPUT)$(RBARCH): $(TARGET_DIR)lib$(OUTPUT)$(RBARCH).a
$(TARGET_DIR)lib$(OUTPUT)$(RBARCH).a: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
@echo AR $(notdir $@)
$(SILENT)mkdir -p $(dir $@)
$(SILENT)$(AR) rucs $@ $^
$(OBJDIR)$(LIBUCL):
$(SILENT)$(MAKE) -C $(TOP)/../tools/ucl/src TARGET_DIR=$(OBJDIR) $@
# building the standalone executable # building the standalone executable
$(BINARY): $(OBJS) $(EXTRADEPS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS)) $(BINARY): $(OBJS) $(EXTRADEPS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
@ -79,6 +73,21 @@ $(BINARY): $(OBJS) $(EXTRADEPS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
# EXTRADEPS need to be built into OBJDIR. # EXTRADEPS need to be built into OBJDIR.
$(SILENT)$(CROSS)$(CC) $(CFLAGS) -o $(BINARY) $(OBJS) $(addprefix $(OBJDIR),$(EXTRADEPS)) $(addprefix $(OBJDIR),$(EXTRALIBOBJS)) $(SILENT)$(CROSS)$(CC) $(CFLAGS) -o $(BINARY) $(OBJS) $(addprefix $(OBJDIR),$(EXTRADEPS)) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
# common rules
$(OBJDIR)%.o: %.c
@echo CC $<
$(SILENT)mkdir -p $(dir $@)
$(SILENT)$(CROSS)$(CC) $(CFLAGS) -c -o $@ $<
# lib rules
lib$(OUTPUT)$(RBARCH).a: $(TARGET_DIR)lib$(OUTPUT)$(RBARCH).a
lib$(OUTPUT)$(RBARCH): $(TARGET_DIR)lib$(OUTPUT)$(RBARCH).a
$(TARGET_DIR)lib$(OUTPUT)$(RBARCH).a: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
@echo AR $(notdir $@)
$(SILENT)mkdir -p $(dir $@)
$(SILENT)$(AR) rucs $@ $^
# some trickery to build ppc and i386 from a single call # some trickery to build ppc and i386 from a single call
ifeq ($(RBARCH),) ifeq ($(RBARCH),)
$(TARGET_DIR)lib$(OUTPUT)i386.a: $(TARGET_DIR)lib$(OUTPUT)i386.a:

View file

@ -5,101 +5,19 @@
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/ # \/ \/ \/ \/ \/
#change for releases TARGET_DIR ?= $(shell pwd)/
ifndef APPVERSION
APPVERSION=`../../tools/version.sh ../../`
endif
# We use the UCL code available in the Rockbox tools/ directory # We use the UCL code available in the Rockbox tools/ directory
CFLAGS=-I../../tools/ucl/include -Wall -DVERSION=\"$(APPVERSION)\" CFLAGS = -I../../tools/ucl/include -Wall
ifndef V OUTPUT = mkmpioboot
SILENT = @
endif
ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN)
OUTPUT=mkmpioboot.exe
CFLAGS+=-mno-cygwin
else
ifeq ($(findstring MINGW,$(shell uname)),MINGW)
OUTPUT=mkmpioboot.exe
else
ifeq ($(findstring mingw,$(CC)),mingw)
OUTPUT=mkmpioboot.exe
else
OUTPUT=mkmpioboot
endif
endif
endif
ifdef RBARCH
CFLAGS += -arch $(RBARCH)
OBJDIR = $(TARGET_DIR)build/$(RBARCH)/
else
OBJDIR = $(TARGET_DIR)build/
endif
TARGET_DIR ?= $(shell pwd)
all: $(OUTPUT)
# inputs # inputs
LIBSOURCES := mkmpioboot.c LIBSOURCES = mkmpioboot.c
SOURCES := $(LIBSOURCES) main.c SOURCES = $(LIBSOURCES) main.c
OBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(SOURCES))) EXTRADEPS = $(LIBUCL)
LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(LIBSOURCES)))
EXTRADEPS := $(LIBUCL) include ../libtools.make
# explicit dependencies # explicit dependencies
$(OBJDIR)mkmpioboot.o: mkmpioboot.c mkmpioboot.h $(OBJDIR)mkmpioboot.o: mkmpioboot.c mkmpioboot.h
$(OBJDIR)main.o: main.c
$(OBJDIR)%.o: %.c
@echo CC $< $
$(SILENT)mkdir -p $(dir $@)
$(SILENT)$(CC) $(CFLAGS) -c -o $@ $<
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)
@echo LD $@
$(SILENT)$(CC) $(CFLAGS) -o $(OUTPUT) $(OBJS) $(EXTRADEPS)
# some trickery to build ppc and i386 from a single call
ifeq ($(RBARCH),)
$(TARGET_DIR)libmkmpiobooti386.a:
make RBARCH=i386 TARGET_DIR=$(TARGET_DIR) libmkmpiobooti386.a
$(TARGET_DIR)libmkmpiobootppc.a:
make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libmkmpiobootppc.a
endif
libmkmpioboot-universal: $(TARGET_DIR)libmkmpiobooti386.a $(TARGET_DIR)libmkmpiobootppc.a
@echo lipo $(TARGET_DIR)libmkmpioboot.a
$(SILENT) rm -f $(TARGET_DIR)libmkmpioboot.a
$(SILENT)lipo -create $(TARGET_DIR)libmkmpiobootppc.a $(TARGET_DIR)libmkmpiobooti386.a -output $(TARGET_DIR)libmkmpioboot.a
clean:
rm -f $(OBJS) $(OUTPUT) $(TARGET_DIR)libmkmpioboot*.a mkmpioboot.dmg
rm -rf mkmpioboot-* i386 ppc $(OBJDIR)
mkmpioboot-i386:
$(MAKE) RBARCH=i386
mv mkmpioboot mkmpioboot-i386
mkmpioboot-ppc:
$(MAKE) RBARCH=ppc
mv mkmpioboot mkmpioboot-ppc
mkmpioboot-mac: mkmpioboot-i386 mkmpioboot-ppc
$(SILENT)lipo -create mkmpioboot-ppc mkmpioboot-i386 -output mkmpioboot-mac
mkmpioboot.dmg: mkmpioboot-mac
mkdir -p mkmpioboot-dmg
cp -p mkmpioboot-mac mkmpioboot-dmg
hdiutil create -srcfolder mkmpioboot-dmg mkmpioboot.dmg