diff options
author | Daniel Stenberg <daniel@haxx.se> | 2004-09-22 08:58:50 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2004-09-22 08:58:50 +0000 |
commit | fc1e925c16c417f08453509926b1186baa0c6228 (patch) | |
tree | b9ed06d3a23cca7aeb98573efac23f751c19665e | |
parent | ceceba6d3b835e9e8abe9d3ba117f876a848a3df (diff) |
Rearranged makefiles again to move platform-specific stuff from the Makefiles
to either the configure script or to be ifdefed in the sources.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@5103 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | apps/Makefile | 186 | ||||
-rw-r--r-- | apps/plugins/Makefile | 51 | ||||
-rw-r--r-- | apps/plugins/lib/Makefile | 74 | ||||
-rw-r--r-- | firmware/Makefile | 81 | ||||
-rwxr-xr-x | tools/configure | 271 | ||||
-rw-r--r-- | tools/convbdf.c | 4 | ||||
-rw-r--r-- | tools/make.inc | 21 | ||||
-rw-r--r-- | uisimulator/x11/Makefile | 47 |
8 files changed, 282 insertions, 453 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) diff --git a/apps/plugins/Makefile b/apps/plugins/Makefile index ded54e8a4b..6eb51df5d3 100644 --- a/apps/plugins/Makefile +++ b/apps/plugins/Makefile @@ -7,46 +7,27 @@ # $Id$ # -CC = sh-elf-gcc -OC = sh-elf-objcopy - -FIRMWARE = ../../firmware - -# Check if this is a kind of Recorder -ANYREC = $(findstring RECORDER, $(TARGET)) - -# Check if this is an Ondio model -ANYONDIO = $(findstring ONDIO, $(TARGET)) - -INCLUDES = -I$(FIRMWARE)/include -I$(FIRMWARE)/export -I$(FIRMWARE)/common \ --I$(FIRMWARE)/drivers -I.. -Ilib +INCLUDES = -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I$(FIRMDIR)/common \ +-I$(FIRMDIR)/drivers -I$(APPSDIR) -Ilib CFLAGS = -O -W -Wall -m1 -nostdlib -ffreestanding -Wstrict-prototypes \ -$(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEM} -DPLUGIN +$(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE} -DPLUGIN -ifeq ($(ANYREC), RECORDER) -INCLUDES += -I../recorder -endif -ifeq ($(ANYONDIO), ONDIO) -# use the recorder tree for now -INCLUDES += -I../recorder +ifdef APPEXTRA + INCLUDES += -I$(APPSDIR)/$(APPEXTRA) endif LDS := plugin.lds LINKFILE := $(OBJDIR)/pluginlink.lds +DEPFILE = $(OBJDIR)/dep-plugins SRC := $(wildcard *.c) ROCKS := $(SRC:%.c=$(OBJDIR)/%.rock) +SOURCES = $(SRC) +ELFS := $(SRC:%.c=$(OBJDIR)/%.elf) +OBJS := $(SRC:%.c=$(OBJDIR)/%.o) +DIRS = . -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 - -$(OBJDIR)/%.elf: $(OBJDIR)/%.o $(LINKFILE) $(OBJDIR)/libplugin.a +$(OBJDIR)/%.elf: $(OBJDIR)/%.o $(LINKFILE) $(OBJDIR)/libplugin.a $(DEPFILE) @echo "LD $@" @$(CC) -O -nostdlib -o $@ $< -L$(OBJDIR) -lplugin -lgcc -T$(LINKFILE) -Wl,-Map,$(OBJDIR)/$*.map @@ -54,9 +35,7 @@ $(OBJDIR)/%.rock : $(OBJDIR)/%.elf @echo "OBJCOPY $<" @$(OC) -O binary $< $@ -$(OBJDIR)/%.o: %.c ../plugin.h Makefile - @echo "CC $<" - @$(CC) $(CFLAGS) -c $< -o $@ +include $(TOOLSDIR)/make.inc ifeq ($(ANYONDIO), ONDIO) all: @@ -68,15 +47,15 @@ endif $(OBJDIR)/libplugin.a: @echo "MAKE in lib" - @$(MAKE) -C lib TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR) VERSION=$(VERSION) EXTRA_DEFINES="$(EXTRA_DEFINES)" MEM=${MEM} + @$(MAKE) -C lib TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR) VERSION=$(VERSION) EXTRA_DEFINES="$(EXTRA_DEFINES)" MEM=${MEMORYSIZE} # MEM should be passed on to this makefile with the chosen memory size given # in number of MB $(LINKFILE): $(LDS) @echo "build $@" - @$(CC) -DMEMORYSIZE=$(MEM) $(DEFINES) -x c -E -P $< >$@ + @$(CC) -DMEMORYSIZE=$(MEMORYSIZE) $(DEFINES) -x c -E -P $< >$@ clean: @echo "cleaning plugins" - @-rm -f $(ROCKS) $(LINKFILE) $(OBJDIR)/*.rock + @rm -f $(ROCKS) $(LINKFILE) $(OBJDIR)/*.rock $(DEPFILE) $(ELFS) $(OBJS) @$(MAKE) -C lib clean diff --git a/apps/plugins/lib/Makefile b/apps/plugins/lib/Makefile index 45de4b32e9..8b2eccfb50 100644 --- a/apps/plugins/lib/Makefile +++ b/apps/plugins/lib/Makefile @@ -7,42 +7,18 @@ # $Id$ # -CC = sh-elf-gcc -LD = sh-elf-ld -AR = sh-elf-ar -AS = sh-elf-as -OC = sh-elf-objcopy - -FIRMWARE = ../../../firmware - -# Check if this is a kind of Recorder -ANYREC = $(findstring RECORDER, $(TARGET)) - -# Check if this is an Ondio model -ANYONDIO = $(findstring ONDIO, $(TARGET)) - # ../.. for the plugin.h in the apps dir # .. for stuff in the plugins dir # . for stuff in the pluginlib dir -INCLUDES=-I../.. -I.. -I. -I$(FIRMWARE)/include -I$(FIRMWARE)/export \ - -I$(FIRMWARE)/common -I$(FIRMWARE)/drivers +INCLUDES=-I$(APPSDIR) -I.. -I. -I$(FIRMDIR)/include -I$(FIRMDIR)/export \ + -I$(FIRMDIR)/common -I$(FIRMDIR)/drivers -ifeq ($(ANYREC), RECORDER) -INCLUDES += -I../../recorder +ifdef APPEXTRA +INCLUDES += -I$(APPSDIR)/$(APPEXTRA) endif -ifeq ($(ANYONDIO), ONDIO) -# use the recorder tree for now -INCLUDES += -I../../recorder -endif - CFLAGS = -W -Wall -O -m1 -nostdlib -ffreestanding -Wstrict-prototypes \ -$(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEM} - -ifndef MEM - # if MEM is not set, assume 2MB - MEM=2 -endif +$(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE} ifdef DEBUG CFLAGS += -g -DDEBUG @@ -51,51 +27,25 @@ CFLAGS += -fomit-frame-pointer -fschedule-insns endif SRC := $(wildcard *.c) - +SOURCES = $(SRC) OBJS := $(SRC:%.c=$(OBJDIR)/%.o) -DEPS:=.deps -DEPDIRS:=$(DEPS) - -DIRS = $(subst $(DEPS),".",$(DEPDIRS)) +DEPFILE = $(OBJDIR)/dep-pluginlib +DIRS = . OUTPUT = $(OBJDIR)/libplugin.a -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: $(OUTPUT) - @echo "lib done" $(OUTPUT): $(OBJS) @echo "AR $@" - @$(AR) ruv $@ $+ >/dev/null - -$(OBJDIR)/%.o: %.c - @mkdir -p `dirname $@` - @echo "CC $<" - @$(CC) $(CFLAGS) -c $< -o $@ + @$(AR) ruv $@ $+ >/dev/null 2>&1 -tags: - @$(SHELL) -c 'for d in $(DIRS); do { etags -o $(OBJDIR)/TAGS -a $$d/*.[ch]; }; done' +include $(TOOLSDIR)/make.inc clean: @echo "cleaning lib" - @rm -f $(OBJS) $(OUTPUT) - @rm -rf $(OBJDIR)/$(DEPS) + @rm -f $(OBJS) $(OUTPUT) $(DEPFILE) -$(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 $@' +-include $(DEPFILE) -ifdef OBJDIR - -include $(SRC:%.c=$(OBJDIR)/$(DEPS)/%.d) -endif diff --git a/firmware/Makefile b/firmware/Makefile index 31353d4357..d21f85a622 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -7,20 +7,10 @@ # $Id$ # -CC = sh-elf-gcc -LD = sh-elf-ld -AR = sh-elf-ar -AS = sh-elf-as -OC = sh-elf-objcopy +INCLUDES=-Iinclude -I$(FIRMDIR) -Iexport -Icommon -Idrivers -INCLUDES=-Iinclude -I. -Iexport -Icommon -Idrivers - -CFLAGS = -W -Wall -O -m1 -nostdlib -ffreestanding -Wstrict-prototypes $(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEM} - -ifndef MEM - # if MEM is not set, assume 2MB - MEM=2 -endif +CFLAGS = -W -Wall -O -m1 -nostdlib -ffreestanding -Wstrict-prototypes \ +$(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEMORYSIZE} ifdef DEBUG CFLAGS += -g -DDEBUG @@ -30,61 +20,29 @@ endif SRC := $(wildcard drivers/*.c common/*.c *.c) SRC_S := $(wildcard drivers/*.S common/*.S *.S) - -OBJS := $(SRC:%.c=$(OBJDIR)/%.o) $(SRC_S:%.S=$(OBJDIR)/%.o) -DEPS:=.deps -DEPDIRS:=$(DEPS) $(DEPS)/drivers $(DEPS)/common $(DEPS)/malloc - -DIRS = $(subst $(DEPS),".",$(DEPDIRS)) - +SOURCES = $(SRC) $(SRC_S) +OBJS := $(SRC:%.c=$(OBJDIR)/%.o) $(SRC_S:%.S=$(OBJDIR)/%.o) $(OBJDIR)/sysfont.o +DIRS:=. drivers common OUTPUT = $(OBJDIR)/librockbox.a - -ifeq (RECORDER,$(findstring RECORDER, $(CFLAGS))) - OBJS += $(OBJDIR)/sysfont.o -endif -ifeq (ONDIO,$(findstring ONDIO, $(CFLAGS))) - OBJS += $(OBJDIR)/sysfont.o -endif - -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 +DEPFILE = $(OBJDIR)/dep-firmware all: $(TOOLSDIR)/convbdf $(OUTPUT) $(EXTRA_TARGETS) +dep: $(DEPFILE) + $(TOOLSDIR)/convbdf: $(MAKE) -C $(TOOLSDIR) -$(OUTPUT): $(OBJS) +$(OUTPUT): $(OBJS) $(DEPFILE) @echo "AR $@" - @$(AR) ruv $@ $+ >/dev/null - -$(OBJDIR)/%.o: %.c - @mkdir -p `dirname $@` - @echo "CC $<" - @$(CC) $(CFLAGS) -c $< -o $@ + @$(AR) ruv $@ $+ >/dev/null 2>&1 -$(OBJDIR)/%.o: %.S - @mkdir -p `dirname $@` - @echo "CC $<" - @$(CC) $(CFLAGS) -c $< -o $@ - -tags: - @$(SHELL) -c 'for d in $(DIRS); do { etags -o $(OBJDIR)/TAGS -a $$d/*.[ch]; }; done' +include $(TOOLSDIR)/make.inc clean: @echo "cleaning firmware" - @rm -f $(OBJS) $(OUTPUT) $(OBJDIR)/sysfont.c - @rm -rf $(OBJDIR)/$(DEPS) + @rm -f $(OBJS) $(OUTPUT) $(OBJDIR)/sysfont.c $(DEPFILE) + @rm -rf $(OBJDIR)/drivers $(OBJDIR)/common # Special targets $(OBJDIR)/thread.o: thread.c export/thread.h @@ -97,13 +55,4 @@ $(OBJDIR)/sysfont.o: fonts/clR6x8.bdf @echo "CC sysfont.c" @$(CC) $(CFLAGS) -c $(OBJDIR)/sysfont.c -o $@ -$(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) diff --git a/tools/configure b/tools/configure index 7fea1f2311..f868c528ba 100755 --- a/tools/configure +++ b/tools/configure @@ -17,6 +17,22 @@ input() { echo $response } +shcc () { + CC=sh-elf-gcc + LD=sh-elf-ld + AR=sh-elf-ar + AS=sh-elf-as + OC=sh-elf-objcopy +} + +coldfirecc () { + CC=m68k-elf-gcc + LD=m68k-elf-ld + AR=m68k-elf-ar + AS=m68k-elf-as + OC=m68k-elf-objcopy +} + whichsim () { if [ -z "$simver" ]; then @@ -56,32 +72,36 @@ sed > Makefile \ <<EOF ## Automaticly generated. http://rockbox.haxx.se -ARCHOS=@ARCHOS@ -ROOTDIR=@ROOTDIR@ -SIMDIR=\$(ROOTDIR)/uisimulator/@SIMVER@ -TOOLSDIR=\$(ROOTDIR)/tools -DEBUG=@DEBUG@ -KEYPAD=@KEYPAD@ -THISDIR="@PWD@" -SIMVER=@SIMVER@ -TARGET=@TARGET@ -LANGUAGE=@LANGUAGE@ -VERSION=\$(shell date +%y%m%d-%H%M) +export ARCHOS=@ARCHOS@ +export ROOTDIR=@ROOTDIR@ +export FIRMDIR=\$(ROOTDIR)/firmware +export APPSDIR=\$(ROOTDIR)/apps +export TOOLSDIR=\$(ROOTDIR)/tools +export DOCSDIR=\$(ROOTDIR)/docs +export APPSDIR=@ROOTDIR@/apps +export SIMDIR=\$(ROOTDIR)/uisimulator/@SIMVER@ +export DEBUG=@DEBUG@ +export KEYPAD=@KEYPAD@ +export OBJDIR=@PWD@ +export SIMVER=@SIMVER@ +export TARGET=@TARGET@ +export LANGUAGE=@LANGUAGE@ +export VERSION=\$(shell date +%y%m%d-%H%M) .PHONY: all: sim sim: - \$(MAKE) -C \$(SIMDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) VERSION=\$(VERSION) LANGUAGE=\$(LANGUAGE) + \$(MAKE) -C \$(SIMDIR) clean: - \$(MAKE) -C \$(SIMDIR) OBJDIR=\$(THISDIR) clean + \$(MAKE) -C \$(SIMDIR) clean rm -rf rockbox.zip tags: @rm -f TAGS - make -C \$(SIMDIR) OBJDIR=\$(THISDIR) tags + make -C \$(SIMDIR) tags zip: \$(TOOLSDIR)/buildzip.pl -r "\$(ROOTDIR)" sim\$(TARGET) @@ -169,25 +189,8 @@ fi pwd=`pwd`; if [ "$target" = "update" ]; then - update="1" - target="" - if [ -f Makefile ]; then - if { grep "^## Auto" Makefile >/dev/null 2>&1 ; } then - echo "Existing generated Makefile found. Getting defaults from it." - archos=`grep "^ARCHOS=" Makefile | cut -d= -f2-` - debug=`grep "^DEBUG=" Makefile | cut -d= -f2-` - language=`grep "^LANGUAGE=" Makefile | cut -d= -f2-` - memory=`grep "^MEMORYSIZE=" Makefile | cut -d= -f2-` - rootdir=`grep "^ROOTDIR=" Makefile | cut -d= -f2-` - target=`grep "^TARGET=" Makefile | cut -d= -f2-` - - if [ "$debug" = "SIMULATOR=1" ]; then - simulator="yes" - keypad=`grep "^KEYPAD=" Makefile | cut -d= -f2-` - simver=`grep "^SIMVER=" Makefile | cut -d= -f2-` - fi - fi - fi + echo "configure update is unfortunately no longer supported" + exit else echo "This script will setup your Rockbox build environment." @@ -196,6 +199,42 @@ echo "" fi +if [ -z "$rootdir" ]; then + ################################################################## + # Figure out where the source code root is! + # + + firmfile="crt0.S" # a file to check for in the firmware root dir + + for dir in . .. ../.. ../rockbox*; do + if [ -f $dir/firmware/$firmfile ]; then + rootdir=$dir + break + fi + done + + if [ -z "$rootdir" ]; then + echo "This script couldn't find your source code root directory. Please enter the" + echo "full path to the source code directory here:" + + firmdir=`input` + fi + + ##################################################################### + # Convert the possibly relative directory name to an absolute version + # + now=`pwd` + cd $rootdir + rootdir=`pwd` + + echo "Using this source code root directory:" + echo $rootdir + echo "" + + # cd back to the build dir + cd $now +fi + if [ -z "$archos" ]; then ################################################################## @@ -219,37 +258,72 @@ if [ -z "$archos" ]; then 1) archos="player" target="-DARCHOS_PLAYER" + shcc + tool="scramble" + output="archos.mod" + appextra="player" + archosrom="" + ;; + + *) + archos="recorder" + target="-DARCHOS_RECORDER" + shcc + tool="scramble" + output="ajbrec.ajz" + appextra="recorder" + archosrom="$pwd/rombox.ucl" ;; 3) archos="fmrecorder" target="-DARCHOS_FMRECORDER" + shcc + tool="scramble -fm" + output="ajbrec.ajz" + appextra="recorder" + archosrom="$pwd/rombox.ucl" ;; 4) archos="recorderv2" target="-DARCHOS_RECORDERV2" + shcc + tool="scramble -v2" + output="ajbrec.ajz" + appextra="recorder" + archosrom="$pwd/rombox.ucl" ;; 7) archos="ondiosp" target="-DARCHOS_ONDIOSP" + shcc + tool="scramble -osp" + output="ajbrec.ajz" + appextra="recorder" + archosrom="" ;; 8) archos="ondiofm" target="-DARCHOS_ONDIOFM" + shcc + tool="scramble -ofm" + output="ajbrec.ajz" + appextra="recorder" + archosrom="" ;; 9) archos="h100" target="-DIRIVER_H100" memory=32 # always - ;; - - *) - archos="recorder" - target="-DARCHOS_RECORDER" + coldfirecc + tool="not-written-yet" + output="rockbox.iriver" + appextra="" + archosrom="" ;; esac @@ -287,59 +361,23 @@ if [ -z "$debug" ]; then case $option in [Ss]) - debug="SIMULATOR=1" + debug="1" simulator="yes" echo "Simulator build selected" whichsim ;; [Dd]) - debug="DEBUG=1" + debug="1" echo "Debug build selected" ;; *) - debug="NODEBUG=1" + debug="" echo "Normal build selected" ;; esac fi -if [ -z "$rootdir" ]; then - ################################################################## - # Figure out where the source code root is! - # - - firmfile="crt0.S" # a file to check for in the firmware root dir - - for dir in . .. ../.. ../rockbox*; do - if [ -f $dir/firmware/$firmfile ]; then - rootdir=$dir - break - fi - done - - if [ -z "$rootdir" ]; then - echo "This script couldn't find your source code root directory. Please enter the" - echo "full path to the source code directory here:" - - firmdir=`input` - fi - - ##################################################################### - # Convert the possibly relative directory name to an absolute version - # - now=`pwd` - cd $rootdir - rootdir=`pwd` - - echo "Using this source code root directory:" - echo $rootdir - echo "" - - # cd back to the build dir - cd $now -fi - if [ -z "$language" ]; then @@ -369,50 +407,57 @@ sed > Makefile \ -e "s,@ARCHOS@,${archos},g" \ -e "s,@LANGUAGE@,${language},g" \ -e "s,@PWD@,${pwd},g" \ + -e "s,@CC@,${CC},g" \ + -e "s,@LD@,${LD},g" \ + -e "s,@AR@,${AR},g" \ + -e "s,@AS@,${AS},g" \ + -e "s,@OC@,${OC},g" \ + -e "s,@TOOL@,${tool},g" \ + -e "s,@OUTPUT@,${output},g" \ + -e "s,@APPEXTRA@,${appextra},g" \ + -e "s,@ARCHOSROM@,${archosrom},g" \ <<EOF ## Automaticly generated. http://rockbox.haxx.se -ROOTDIR=@ROOTDIR@ -FIRMDIR=\$(ROOTDIR)/firmware -APPSDIR=\$(ROOTDIR)/apps -TOOLSDIR=\$(ROOTDIR)/tools -DEBUG=@DEBUG@ -ARCHOS=@ARCHOS@ -TARGET=@TARGET@ -THISDIR="@PWD@" -LANGUAGE=@LANGUAGE@ -MEMORYSIZE=@MEMORY@ -VERSION=\$(shell date +%y%m%d-%H%M) - -.PHONY: firmware apps - -all: firmware apps - -firmware: - \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) \$(DEBUG) OBJDIR=\$(THISDIR) MEM=\$(MEMORYSIZE) TOOLSDIR=\$(TOOLSDIR) - -apps: - \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) \$(DEBUG) OBJDIR=\$(THISDIR) VERSION=\$(VERSION) LANGUAGE=\$(LANGUAGE) MEM=\$(MEMORYSIZE) TOOLSDIR=\$(TOOLSDIR) - -clean-firmware: - \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) clean - -clean-apps: - \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) clean +export ROOTDIR=@ROOTDIR@ +export FIRMDIR=\$(ROOTDIR)/firmware +export APPSDIR=\$(ROOTDIR)/apps +export TOOLSDIR=\$(ROOTDIR)/tools +export DOCSDIR=\$(ROOTDIR)/docs +export DEBUG=@DEBUG@ +export ARCHOS=@ARCHOS@ +export ARCHOSROM=@ARCHOSROM@ +export TARGET=@TARGET@ +export OBJDIR=@PWD@ +export LANGUAGE=@LANGUAGE@ +export MEMORYSIZE=@MEMORY@ +export VERSION=\$(shell date +%y%m%d-%H%M) +export MKFIRMWARE=\$(TOOLSDIR)/@TOOL@ +export BINARY=@OUTPUT@ +export APPEXTRA=@APPEXTRA@ +export CC=@CC@ +export LD=@LD@ +export AR=@AR@ +export AS=@AS@ +export OC=@OC@ + +.PHONY: all clean tags zip + +all: + @\$(MAKE) -C \$(FIRMDIR) + @\$(MAKE) -C \$(APPSDIR) clean: - \$(MAKE) clean-firmware clean-apps - rm -f rockbox.zip - -tags-firmware: - \$(MAKE) -C \$(FIRMDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) tags - -tags-apps: - \$(MAKE) -C \$(APPSDIR) TARGET=\$(TARGET) OBJDIR=\$(THISDIR) tags + @\$(MAKE) -C \$(FIRMDIR) clean + @\$(MAKE) -C \$(APPSDIR) clean + @rm -f rockbox.zip TAGS tags: @rm -f TAGS - \$(MAKE) tags-firmware tags-apps + \$(MAKE) -C \$(FIRMDIR) tags + \$(MAKE) -C \$(APPSDIR) tags + \$(MAKE) -C \$(APPSDIR)/plugins tags + \$(MAKE) -C \$(APPSDIR)/plugins/lib tags zip: \$(TOOLSDIR)/buildzip.pl -r "\$(ROOTDIR)" \$(TARGET) diff --git a/tools/convbdf.c b/tools/convbdf.c index 16af43f3b8..0bb2d07c44 100644 --- a/tools/convbdf.c +++ b/tools/convbdf.c @@ -773,6 +773,7 @@ int gen_c_source(struct font* pf, char *path) char hdr1[] = { "/* Generated by convbdf on %s. */\n" "#include \"font.h\"\n" + "#ifdef HAVE_LCD_BITMAP\n" "\n" "/* Font information:\n" " name: %s\n" @@ -946,7 +947,8 @@ int gen_c_source(struct font* pf, char *path) " %s /* offset */\n" " %s\n" " %d, /* defaultchar */\n" - "};\n", + "};\n" + "#endif /* HAVE_LCD_BITMAP */\n", pf->maxwidth, pf->height, pf->ascent, pf->firstchar, diff --git a/tools/make.inc b/tools/make.inc new file mode 100644 index 0000000000..f83be7990a --- /dev/null +++ b/tools/make.inc @@ -0,0 +1,21 @@ +$(OBJDIR)/%.o: %.c + @mkdir -p `dirname $@` + @echo "CC $<" + @$(CC) $(CFLAGS) -c $< -o $@ + +$(OBJDIR)/%.o: %.S + @mkdir -p `dirname $@` + @echo "CC $<" + @$(CC) $(CFLAGS) -c $< -o $@ + +$(DEPFILE): $(SOURCES) + @rm -f $(DEPFILE) + @(for each in $(SOURCES); do \ + obj=`echo $$each | sed -e 's/\.c/.o/'`; \ + $(CC) -MM -MT "$(OBJDIR)/$$obj.o" $(CFLAGS) $$each >> $(DEPFILE) 2>/dev/null; \ + done ) + +tags: + @(for d in $(DIRS); do \ + etags -o $(OBJDIR)/TAGS -a $$d/*.[ch]; \ + done) diff --git a/uisimulator/x11/Makefile b/uisimulator/x11/Makefile index 2bc2cba267..da3dcce380 100644 --- a/uisimulator/x11/Makefile +++ b/uisimulator/x11/Makefile @@ -17,10 +17,9 @@ # ############################################################################ -APPDIR = ../../apps -RECDIR = $(APPDIR)/recorder -PLAYDIR = $(APPDIR)/player -PLUGINDIR = $(APPDIR)/plugins +RECDIR = $(APPSDIR)/recorder +PLAYDIR = $(APPSDIR)/player +PLUGINDIR = $(APPSDIR)/plugins SIMCOMMON = ../common ISONDIO := $(findstring ONDIO, $(TARGET)) @@ -31,17 +30,14 @@ else MACHINEDIR = $(RECDIR) endif -PREVAPPDIR= .. -FIRMWAREDIR = ../../firmware +PREVAPPSDIR= .. # build some sources from these dirs -DRIVERS = $(FIRMWAREDIR)/drivers -COMMON = $(FIRMWAREDIR)/common +DRIVERS = $(FIRMDIR)/drivers +COMMON = $(FIRMDIR)/common # include here: -EXPORT = $(FIRMWAREDIR)/export -TOOLSDIR = ../../tools -DOCSDIR = ../../docs +EXPORT = $(FIRMDIR)/export RM = rm -f DEBUG = -g @@ -55,20 +51,16 @@ no_configure: @echo "http://rockbox.haxx.se/docs/how_to_compile.html" endif -LANGUAGE = english - -TARGET = $(OBJDIR)/rockboxui - DEFINES := -DHAVE_CONFIG_H -DGETTIMEOFDAY_TWO_ARGS -DSIMULATOR \ $(TARGET) -DAPPSVERSION=\"$(VERSION)\" $(EXTRA_DEFINES) # Use this for simulator-only files -INCLUDES = -I. -I$(EXPORT) -I$(APPDIR) -I$(MACHINEDIR) -I$(SIMCOMMON) -I$(OBJDIR) -I$(PLUGINDIR)/lib +INCLUDES = -I. -I$(EXPORT) -I$(APPSDIR) -I$(MACHINEDIR) -I$(SIMCOMMON) -I$(OBJDIR) -I$(PLUGINDIR)/lib # The true Rockbox Applications should use this include path: APPINCLUDES = $(INCLUDES) -SRCDIRS = . $(DRIVERS) $(FIRMWAREDIR)/export $(APPDIR) $(MACHINEDIR) +SRCDIRS = . $(DRIVERS) $(FIRMDIR)/export $(APPSDIR) $(MACHINEDIR) # The true Rockbox Applications should use this include path: APPINCLUDES = $(INCLUDES) @@ -164,26 +156,26 @@ clean: ################## Specific dependencies ################## $(OBJDIR)/credits.raw: $(DOCSDIR)/CREDITS - perl $(APPDIR)/credits.pl < $< > $@ + perl $(APPSDIR)/credits.pl < $< > $@ $(OBJDIR)/uisw32-res.o: uisw32.rc $(WINDRES) -i $< -o $@ -$(OBJDIR)/credits.o: $(APPDIR)/credits.c $(APPDIR)/credits.h $(OBJDIR)/credits.raw +$(OBJDIR)/credits.o: $(APPSDIR)/credits.c $(APPSDIR)/credits.h $(OBJDIR)/credits.raw $(OBJDIR)/thread.o: ./thread.c -$(OBJDIR)/plugin.o: $(APPDIR)/plugin.c -$(OBJDIR)/build.lang: $(APPDIR)/lang/$(LANGUAGE).lang +$(OBJDIR)/plugin.o: $(APPSDIR)/plugin.c +$(OBJDIR)/build.lang: $(APPSDIR)/lang/$(LANGUAGE).lang @echo "UPLANG" - @perl $(TOOLSDIR)/uplang $(APPDIR)/lang/english.lang $< > $@ + @perl $(TOOLSDIR)/uplang $(APPSDIR)/lang/english.lang $< > $@ $(OBJDIR)/lang.o: $(OBJDIR)/build.lang @echo GENLANG @perl -s $(TOOLSDIR)/genlang -p=$(OBJDIR)/lang $< @echo "CC lang.c" - @$(CC) $(CFLAGS) -c $(OBJDIR)/lang.c -o $@ + $(CC) $(CFLAGS) -c $(OBJDIR)/lang.c -o $@ -$(OBJDIR)/sysfont.o: $(FIRMWAREDIR)/fonts/clR6x8.bdf +$(OBJDIR)/sysfont.o: $(FIRMDIR)/fonts/clR6x8.bdf @echo CC $< @$(TOOLSDIR)/convbdf -c -o $(OBJDIR)/sysfont.c $< @$(CC) $(APPCFLAGS) -c $(OBJDIR)/sysfont.c -o $@ @@ -197,7 +189,7 @@ $(OBJDIR)/%.o: $(PLUGINDIR)/lib/%.c @echo CC $< @$(CC) $(CFLAGS) -DPLUGIN -c $< -o $@ -$(OBJDIR)/%.rock: $(APPDIR)/plugins/%.c $(APPDIR)/plugin.h +$(OBJDIR)/%.rock: $(APPSDIR)/plugins/%.c $(APPSDIR)/plugin.h @echo CC $< @$(CC) $(APPCFLAGS) -DPLUGIN -L$(OBJDIR) -lplugin -shared $< -o $@ @chmod -x $@ @@ -219,7 +211,7 @@ $(OBJDIR)/%.o: $(DRIVERS)/%.c @echo CC $< @$(CC) $(APPCFLAGS) -c $< -o $@ -$(OBJDIR)/%.o: $(FIRMWAREDIR)/%.c +$(OBJDIR)/%.o: $(FIRMDIR)/%.c @echo CC $< @$(CC) $(APPCFLAGS) -c $< -o $@ @@ -227,7 +219,7 @@ $(OBJDIR)/%.o: $(COMMON)/%.c @echo CC $< @$(CC) $(APPCFLAGS) -c $< -o $@ -$(OBJDIR)/%.o: $(APPDIR)/%.c +$(OBJDIR)/%.o: $(APPSDIR)/%.c @echo CC $< @$(CC) $(APPCFLAGS) -c $< -o $@ @@ -239,7 +231,6 @@ $(DEPS)/%.d: %.c @$(SHELL) -c 'if [ ! -d $(DEPS) ]; then \ echo Creating the dependency directory: $(DEPS); \ mkdir -p $(DEPS); fi' - @echo "Updating Dependencies for $<" @$(SHELL) -ec '$(CC) -MM $(CFLAGS) $< \ |sed '\''s|\($*\)\.o[ :]*|$(OBJDIR)/\1.o $(<:%.c=%.d) : |g'\'' > $@; \ [ -s $@ ] || rm -f $@' |