1
0
Fork 0
forked from len0rd/rockbox
foxbox/apps/Makefile
Daniel Stenberg ae03eec5db MEM should be passed in to this make, setting the size of the DRAM in MB.
We now preprocess the .lds file to allow macros/#ifdef etc and we now set
the DRAM size using a define. In combination with the recent configure fix,
this should allow us to build 8MB versions "out of the box".

The 'dist' target was removed.

'archos' was replaced with 'rockbox' in all the temporary file names when
building/linking. Plain cosmetic change.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3345 a1c6a512-1295-4272-9138-f99709370657
2003-02-26 09:16:48 +00:00

140 lines
3.9 KiB
Makefile

# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id$
#
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)
AFLAGS += -small -relax
# Check if this is a kind of Recorder
ANYREC = $(findstring RECORDER, $(TARGET))
ifndef MEM
# if MEM is not set, assume 2MB
MEM=2
endif
ifdef DEBUG
DEFINES := -DDEBUG
CFLAGS += -g
LDS := $(FIRMWARE)/gdb.lds
else
LDS := $(FIRMWARE)/app.lds
endif
SRC := $(wildcard *.c)
ifeq ($(TARGET), -DARCHOS_FMRECORDER)
SCRAMBLE_OPT = -fm
endif
ifeq ($(ANYREC), RECORDER)
SRC += $(wildcard recorder/*.c)
CFLAGS += -Irecorder
OUTNAME = ajbrec.ajz
else
SRC += $(wildcard player/*.c)
CFLAGS += -Iplayer
OUTNAME = archos.mod
endif
OBJS := $(OBJDIR)/lang.o $(SRC:%.c=$(OBJDIR)/%.o)
LINKFILE = $(OBJDIR)/linkage.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
all : $(OBJDIR)/$(OUTNAME)
$(OBJDIR)/librockbox.a:
make -C $(FIRMWARE) TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR)
# MEM should be passed on to this makefile with the chosen memory size given
# in number of MB
$(LINKFILE): $(LDS)
cat $< | $(CC) -DMEMORYSIZE=$(MEM) -E -P - >$@
$(OBJDIR)/rockbox.elf : $(OBJS) $(LINKFILE) $(OBJDIR)/librockbox.a
$(CC) -Os -nostdlib -o $(OBJDIR)/rockbox.elf $(OBJS) -L$(OBJDIR) -lrockbox -lgcc -L$(FIRMWARE) -T$(LINKFILE) -Wl,-Map,$(OBJDIR)/rockbox.map
$(OBJDIR)/rockbox.bin : $(OBJDIR)/rockbox.elf
$(OC) -O binary $(OBJDIR)/rockbox.elf $(OBJDIR)/rockbox.bin
$(OBJDIR)/rockbox.asm: $(OBJDIR)/rockbox.bin
../tools/sh2d -sh1 $(OBJDIR)/rockbox.bin > $(OBJDIR)/rockbox.asm
$(OBJDIR)/$(OUTNAME) : $(OBJDIR)/rockbox.bin
../tools/scramble $(SCRAMBLE_OPT) $(OBJDIR)/rockbox.bin $(OBJDIR)/$(OUTNAME)
$(OBJDIR)/credits.raw: $(DOCSDIR)/CREDITS
perl credits.pl < $< > $@
$(OBJDIR)/credits.o: credits.c credits.h $(OBJDIR)/credits.raw
@mkdir -p `dirname $@`
$(CC) $(CFLAGS) -c $< -o $@
$(OBJDIR)/%.o: %.c
@mkdir -p `dirname $@`
$(CC) $(CFLAGS) -c $< -o $@
$(OBJDIR)/build.lang: lang/$(LANGUAGE).lang ../tools/uplang
perl ../tools/uplang lang/english.lang $< > $@
$(OBJDIR)/lang.o: $(OBJDIR)/build.lang ../tools/genlang
perl -s ../tools/genlang -p=$(OBJDIR)/lang $<
$(CC) $(CFLAGS) -c $(OBJDIR)/lang.c -o $@
clean:
-rm -f $(OBJS) $(OBJDIR)/$(OUTNAME) $(OBJDIR)/rockbox.asm \
$(OBJDIR)/rockbox.bin $(OBJDIR)/rockbox.elf $(OBJDIR)/rockbox.map \
$(OBJDIR)/lang.o $(OBJDIR)/build.lang $(OBJDIR)/lang.[ch] \
$(OBJDIR)/credits.raw $(LINKFILE)
-$(RM) -r $(OBJDIR)/$(DEPS)
DEPS:=.deps
DEPDIRS:=$(DEPS)
ifeq ($(ANYREC), RECORDER)
DEPDIRS += $(DEPS)/recorder
else
DEPDIRS += $(DEPS)/player
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'
@echo "Updating dependencies for $(OBJDIR)/$<"
@$(SHELL) -ec '$(CC) -MM $(CFLAGS) $< \
|sed '\''s|\($*\)\.o[ :]*|$(OBJDIR)/\1.o $(<:%.c=%.d) : |g'\'' > $@; \
[ -s $@ ] || rm -f $@'
ifdef OBJDIR
-include $(SRC:%.c=$(OBJDIR)/$(DEPS)/%.d)
endif