diff options
Diffstat (limited to 'apps/Makefile')
-rw-r--r-- | apps/Makefile | 186 |
1 files changed, 39 insertions, 147 deletions
diff --git a/apps/Makefile b/apps/Makefile index 7afcdc35bd..e140172607 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -7,47 +7,11 @@ # $Id$ # -# $@ is the name to the left of the colon -# $> is the first name to the right of the colon +INCLUDES= -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I. -I$(OBJDIR) -CC = sh-elf-gcc -LD = sh-elf-ld -AR = sh-elf-ar -AS = sh-elf-as -OC = sh-elf-objcopy - -LANGUAGE = english - -FIRMWARE := ../firmware -DOCSDIR := ../docs - -INCLUDES= -I$(FIRMWARE)/include -I$(FIRMWARE)/export -I. -I$(OBJDIR) - -CFLAGS = -O -W -Wall -m1 -nostdlib -ffreestanding -Wstrict-prototypes \ --fomit-frame-pointer -fschedule-insns $(INCLUDES) $(TARGET) $(DEFINES) \ --DAPPSVERSION=\"$(VERSION)\" $(EXTRA_DEFINES) -DMEM=${MEM} -AFLAGS += -small -relax - -# Check if this is a kind of Recorder -ANYREC = $(findstring RECORDER, $(TARGET)) - -# Check if this is an Ondio model -ANYONDIO = $(findstring ONDIO, $(TARGET)) - -# scramble tool -TOOL = scramble - -ifndef MEM - # if MEM is not set, assume 2MB - MEM=2 -endif - -ifdef ARCHOS_ROM - ROMBUILD=-DARCHOS_ROM -endif - -LDS := $(FIRMWARE)/app.lds -ROMLDS := $(FIRMWARE)/rom.lds +DEPFILE = $(OBJDIR)/dep-apps +LDS := $(FIRMDIR)/app.lds +ROMLDS := $(FIRMDIR)/rom.lds ifdef DEBUG DEFINES := -DDEBUG @@ -55,103 +19,64 @@ ifdef DEBUG endif SRC := $(wildcard *.c) +DIRS = . -ifeq ($(TARGET), -DARCHOS_FMRECORDER) - TOOL_OPT = -fm -endif -ifeq ($(TARGET), -DARCHOS_RECORDERV2) - TOOL_OPT = -v2 -endif -ifeq ($(TARGET), -DARCHOS_ONDIOSP) - TOOL_OPT = -osp -endif -ifeq ($(TARGET), -DARCHOS_ONDIOFM) - TOOL_OPT = -ofm -endif - +# set the ROMTARGET here +ROMTARGET := $(ARCHOSROM) -ifeq ($(ANYREC), RECORDER) - SRC += $(wildcard recorder/*.c) - CFLAGS += -Irecorder - OUTNAME = ajbrec.ajz - # set the ROMTARGET here to make this get built only on recorders - ROMTARGET := $(OBJDIR)/rombox.ucl -else -ifeq ($(TARGET), -DARCHOS_PLAYER) - SRC += $(wildcard player/*.c) - CFLAGS += -Iplayer - OUTNAME = archos.mod -else -ifeq ($(ANYONDIO), ONDIO) -# use the recorder tree for now - SRC += $(wildcard recorder/*.c) - CFLAGS += -Irecorder - OUTNAME = ajbrec.ajz -else -# some kind of Neo - SRC += $(wildcard neo/*.c) - CFLAGS += -Ineo - OUTNAME = Rockbox.bin - TOOL_OPT = -neo -endif -endif +ifdef APPEXTRA + SRC += $(wildcard $(APPEXTRA)/*.c) + DIRS += $(APPEXTRA) + INCLUDES += -I$(APPEXTRA) endif -OBJS := $(OBJDIR)/lang.o $(SRC:%.c=$(OBJDIR)/%.o) +CFLAGS = -O -W -Wall -m1 -nostdlib -ffreestanding -Wstrict-prototypes \ +-fomit-frame-pointer -fschedule-insns $(INCLUDES) $(TARGET) $(DEFINES) \ +-DAPPSVERSION=\"$(VERSION)\" $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE} +OBJS := $(OBJDIR)/lang.o $(SRC:%.c=$(OBJDIR)/%.o) +SOURCES = $(SRC) LINKFILE = $(OBJDIR)/linkage.lds LINKROM = $(OBJDIR)/linkrom.lds - -ifndef OBJDIR -no_configure: - @echo "Don't run make here. Run the tools/configure script from your own build" - @echo "directory, then run make there." - @echo - @echo "More help on how to build rockbox can be found here:" - @echo "http://rockbox.haxx.se/docs/how_to_compile.html" -endif - -ifndef TOOLSDIR - TOOLSDIR=../tools -endif - MAXINFILE = $(OBJDIR)/romstart.temp MAXOUTFILE = $(OBJDIR)/romstart ifdef DEBUG -all : $(OBJDIR)/rockbox.elf rocks +all: $(OBJDIR)/rockbox.elf rocks else -all : $(OBJDIR)/$(OUTNAME) $(OBJDIR)/rockbox.ucl rocks $(ROMTARGET) +all: $(OBJDIR)/$(BINARY) $(OBJDIR)/rockbox.ucl rocks $(ROMTARGET) endif +dep: $(DEPFILE) + rocks: - $(MAKE) -C plugins/lib TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR) VERSION=$(VERSION) EXTRA_DEFINES="$(EXTRA_DEFINES)" MEM=${MEM} - $(MAKE) -C plugins TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR) VERSION=$(VERSION) EXTRA_DEFINES="$(EXTRA_DEFINES)" MEM=${MEM} + @$(MAKE) -C plugins/lib + @$(MAKE) -C plugins $(OBJDIR)/librockbox.a: - make -C $(FIRMWARE) TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR) + @$(MAKE) -C $(FIRMDIR) -# MEM should be passed on to this makefile with the chosen memory size given -# in number of MB $(LINKFILE): $(LDS) - cat $< | $(CC) -DMEMORYSIZE=$(MEM) $(INCLUDES) $(TARGET) $(DEFINES) -E -P $(ROMBUILD) - >$@ + @echo "Build LDS file" + @cat $< | $(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) $(TARGET) $(DEFINES) -E -P $(ROMBUILD) - >$@ $(LINKROM): $(ROMLDS) - cat $< | $(CC) -DMEMORYSIZE=$(MEM) $(INCLUDES) $(TARGET) $(DEFINES) -E -P $(ROMBUILD) - >$@ + @echo "Build LDS file for Rombox" + @cat $< | $(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) $(TARGET) $(DEFINES) -E -P $(ROMBUILD) - >$@ $(MAXOUTFILE): @echo '#include "config.h"' > $(MAXINFILE) @echo "ROM_START" >> $(MAXINFILE) - @cat $(MAXINFILE) | $(CC) -DMEMORYSIZE=$(MEM) $(INCLUDES) $(TARGET) $(DEFINES) -E -P $(ROMBUILD) - > $(MAXOUTFILE) + @cat $(MAXINFILE) | $(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(INCLUDES) $(TARGET) $(DEFINES) -E -P $(ROMBUILD) - > $(MAXOUTFILE) @rm $(MAXINFILE) $(OBJDIR)/rombox.elf : $(OBJS) $(LINKROM) $(OBJDIR)/librockbox.a @echo "LD rombox.elf" - @$(CC) -Os -nostdlib -o $@ $(OBJS) -L$(OBJDIR) -lrockbox -lgcc -L$(FIRMWARE) -T$(LINKROM) -Wl,-Map,$(OBJDIR)/rombox.map + @$(CC) -Os -nostdlib -o $@ $(OBJS) -L$(OBJDIR) -lrockbox -lgcc -L$(FIRMDIR) -T$(LINKROM) -Wl,-Map,$(OBJDIR)/rombox.map $(OBJDIR)/rockbox.elf : $(OBJS) $(LINKFILE) $(OBJDIR)/librockbox.a @echo "LD rockbox.elf" - @$(CC) -Os -nostdlib -o $@ $(OBJS) -L$(OBJDIR) -lrockbox -lgcc -L$(FIRMWARE) -T$(LINKFILE) -Wl,-Map,$(OBJDIR)/rockbox.map + @$(CC) -Os -nostdlib -o $@ $(OBJS) -L$(OBJDIR) -lrockbox -lgcc -L$(FIRMDIR) -T$(LINKFILE) -Wl,-Map,$(OBJDIR)/rockbox.map $(OBJDIR)/rockbox.bin : $(OBJDIR)/rockbox.elf @echo "OBJCOPY $<" @@ -164,8 +89,9 @@ $(OBJDIR)/rombox.bin : $(OBJDIR)/rombox.elf $(OBJDIR)/rockbox.asm: $(OBJDIR)/rockbox.bin $(TOOLSDIR)/sh2d -sh1 $< > $@ -$(OBJDIR)/$(OUTNAME) : $(OBJDIR)/rockbox.bin - $(TOOLSDIR)/$(TOOL) $(TOOL_OPT) $< $@ +$(OBJDIR)/$(BINARY) : $(OBJDIR)/rockbox.bin $(DEPFILE) + @echo "Build firmware file" + @$(MKFIRMWARE) $< $@ $(OBJDIR)/rockbox.ucl: $(OBJDIR)/rockbox.bin @a=`uclpack -h 2>/dev/null`; \ @@ -177,7 +103,7 @@ $(OBJDIR)/rockbox.ucl: $(OBJDIR)/rockbox.bin echo "fake" > $@; \ fi -$(OBJDIR)/rombox.ucl: $(OBJDIR)/rombox.bin $(MAXOUTFILE) +$(ARCHOSROM): $(OBJDIR)/rombox.bin $(MAXOUTFILE) @a=`uclpack -h 2>/dev/null`; \ if test -n "$$a"; then \ echo "UCLPACK rombox" ; \ @@ -205,10 +131,7 @@ $(OBJDIR)/credits.o: credits.c credits.h $(OBJDIR)/credits.raw @echo "CC $<" @$(CC) $(CFLAGS) -c $< -o $@ -$(OBJDIR)/%.o: %.c - @mkdir -p `dirname $@` - @echo "CC $<" - @$(CC) $(CFLAGS) -c $< -o $@ +include $(TOOLSDIR)/make.inc $(OBJDIR)/build.lang: lang/$(LANGUAGE).lang $(TOOLSDIR)/uplang @echo "UPLANG" @@ -222,44 +145,13 @@ $(OBJDIR)/lang.o: $(OBJDIR)/build.lang $(TOOLSDIR)/genlang clean: @echo "cleaning apps" - @-rm -f $(OBJS) $(OBJDIR)/$(OUTNAME) $(OBJDIR)/rockbox.asm \ + @-rm -f $(OBJS) $(OBJDIR)/$(BINARY) $(OBJDIR)/rockbox.asm \ $(OBJDIR)/rockbox.bin $(OBJDIR)/rockbox.elf $(OBJDIR)/*.map \ $(OBJDIR)/lang.o $(OBJDIR)/build.lang $(OBJDIR)/lang.[ch] \ $(OBJDIR)/credits.raw $(LINKFILE) $(OBJDIR)/rockbox.ucl \ $(LINKROM) $(OBJDIR)/rombox.ucl $(OBJDIR)/rombox.bin \ - $(OBJDIR)/rombox.elf $(MAXOUTFILE) - @-$(RM) -r $(OBJDIR)/$(DEPS) + $(OBJDIR)/rombox.elf $(MAXOUTFILE) $(DEPFILE) @$(MAKE) -C plugins clean + @rm -rf $(OBJDIR)/recorder $(OBJDIR)/player -DEPS:=.deps -DEPDIRS:=$(DEPS) -ifeq ($(ANYREC), RECORDER) - DEPDIRS += $(DEPS)/recorder -else -ifeq ($(TARGET), -DARCHOS_PLAYER) - DEPDIRS += $(DEPS)/player -else -ifeq ($(ANYONDIO), ONDIO) -# use the recorder tree for now - DEPDIRS += $(DEPS)/recorder -else -# some kind of Neo - DEPDIRS += $(DEPS)/neo -endif -endif -endif - -DIRS = $(subst $(DEPS),".",$(DEPDIRS)) - -tags: - @$(SHELL) -c 'for d in $(DIRS); do { etags -o $(OBJDIR)/TAGS -a $$d/*.[ch]; }; done' - -$(OBJDIR)/$(DEPS)/%.d: %.c - @$(SHELL) -c 'for d in $(DEPDIRS); do { if [ ! -d $(OBJDIR)/$$d ]; then mkdir $(OBJDIR)/$$d; fi; }; done' - @$(SHELL) -ec '$(CC) -MM $(CFLAGS) $< 2>/dev/null \ - |sed '\''s|\($*\)\.o[ :]*|$(OBJDIR)/\1.o $(<:%.c=%.d) : |g'\'' > $@; \ - [ -s $@ ] || rm -f $@' - -ifdef OBJDIR - -include $(SRC:%.c=$(OBJDIR)/$(DEPS)/%.d) -endif +-include $(DEPFILE) |