2 # Open \______ \ ____ ____ | | _\_ |__ _______ ___
3 # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4 # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5 # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 # $@ is the name to the left of the colon
11 # $> is the first name to the right of the colon
21 FIRMWARE
:= ..
/firmware
24 INCLUDES
= -I
$(FIRMWARE
)/include -I
$(FIRMWARE
)/export -I.
-I
$(OBJDIR
)
26 CFLAGS
= -O
-W
-Wall
-m1
-nostdlib
-ffreestanding
-Wstrict-prototypes \
27 -fomit-frame-pointer
-fschedule-insns
$(INCLUDES
) $(TARGET
) $(DEFINES
) \
28 -DAPPSVERSION
=\"$(VERSION
)\" $(EXTRA_DEFINES
) -DMEM
=${MEM} -DPLUGIN
=1
29 AFLAGS
+= -small
-relax
31 # Check if this is a kind of Recorder
32 ANYREC
= $(findstring RECORDER
, $(TARGET
))
38 # if MEM is not set, assume 2MB
42 LDS
:= $(FIRMWARE
)/app.lds
49 SRC
:= $(wildcard *.c
)
51 ifeq ($(TARGET
), -DARCHOS_FMRECORDER
)
54 ifeq ($(TARGET
), -DARCHOS_RECORDERV2
)
58 ifeq ($(ANYREC
), RECORDER
)
59 SRC
+= $(wildcard recorder
/*.c
)
63 ifeq ($(TARGET
), -DARCHOS_PLAYER
)
64 SRC
+= $(wildcard player
/*.c
)
69 SRC
+= $(wildcard neo
/*.c
)
76 OBJS
:= $(OBJDIR
)/lang.o
$(SRC
:%.c
=$(OBJDIR
)/%.o
)
78 LINKFILE
= $(OBJDIR
)/linkage.lds
82 @echo
"Don't run make here. Run the tools/configure script from your own build"
83 @echo
"directory, then run make there."
85 @echo
"More help on how to build rockbox can be found here:"
86 @echo
"http://rockbox.haxx.se/docs/how_to_compile.html"
94 all : $(OBJDIR
)/rockbox.elf rocks
96 all : $(OBJDIR
)/$(OUTNAME
) $(OBJDIR
)/rockbox.ucl rocks
100 $(MAKE
) -C plugins TARGET
=$(TARGET
) DEBUG
=$(DEBUG
) OBJDIR
=$(OBJDIR
) VERSION
=$(VERSION
) EXTRA_DEFINES
="$(EXTRA_DEFINES)" MEM
=${MEM}
102 $(OBJDIR
)/librockbox.a
:
103 make
-C
$(FIRMWARE
) TARGET
=$(TARGET
) DEBUG
=$(DEBUG
) OBJDIR
=$(OBJDIR
)
105 # MEM should be passed on to this makefile with the chosen memory size given
108 cat
$< |
$(CC
) -DMEMORYSIZE
=$(MEM
) $(INCLUDES
) $(TARGET
) $(DEFINES
) -E
-P
- >$@
110 $(OBJDIR
)/rockbox.elf
: $(OBJS
) $(LINKFILE
) $(OBJDIR
)/librockbox.a
111 $(CC
) -Os
-nostdlib
-o
$@
$(OBJS
) -L
$(OBJDIR
) -lrockbox
-lgcc
-L
$(FIRMWARE
) -T
$(LINKFILE
) -Wl
,-Map
,$(OBJDIR
)/rockbox.map
113 $(OBJDIR
)/rockbox.bin
: $(OBJDIR
)/rockbox.elf
114 $(OC
) -O binary
$< $@
116 $(OBJDIR
)/rockbox.asm
: $(OBJDIR
)/rockbox.bin
117 $(TOOLSDIR
)/sh2d
-sh1
$< > $@
119 $(OBJDIR
)/$(OUTNAME
) : $(OBJDIR
)/rockbox.bin
120 $(TOOLSDIR
)/$(TOOL
) $(TOOL_OPT
) $< $@
122 $(OBJDIR
)/rockbox.ucl
: $(OBJDIR
)/rockbox.bin
123 @a
=`uclpack -h 2>/dev/null`; \
124 if
test -n
"$$a"; then \
125 echo uclpack
--best
--2e
$< $@
; \
126 uclpack
--best
--2e
$< $@
>/dev
/null
2>&1; \
128 echo
"no uclpack command found, makes a fake UCL file"; \
132 $(OBJDIR
)/credits.raw
: $(DOCSDIR
)/CREDITS
133 perl credits.pl
< $< > $@
135 $(OBJDIR
)/credits.o
: credits.c credits.h
$(OBJDIR
)/credits.raw
136 @mkdir
-p
`dirname $@`
137 $(CC
) $(CFLAGS
) -c
$< -o
$@
140 @mkdir
-p
`dirname $@`
141 $(CC
) $(CFLAGS
) -c
$< -o
$@
143 $(OBJDIR
)/build.lang
: lang
/$(LANGUAGE
).lang
$(TOOLSDIR
)/uplang
144 perl
$(TOOLSDIR
)/uplang lang
/english.lang
$< > $@
146 $(OBJDIR
)/lang.o
: $(OBJDIR
)/build.lang
$(TOOLSDIR
)/genlang
147 perl
-s
$(TOOLSDIR
)/genlang
-p
=$(OBJDIR
)/lang
$<
148 $(CC
) $(CFLAGS
) -c
$(OBJDIR
)/lang.c
-o
$@
151 -rm -f
$(OBJS
) $(OBJDIR
)/$(OUTNAME
) $(OBJDIR
)/rockbox.asm \
152 $(OBJDIR
)/rockbox.bin
$(OBJDIR
)/rockbox.elf
$(OBJDIR
)/*.map \
153 $(OBJDIR
)/lang.o
$(OBJDIR
)/build.lang
$(OBJDIR
)/lang.
[ch
] \
154 $(OBJDIR
)/credits.raw
$(LINKFILE
) $(OBJDIR
)/rockbox.ucl
155 -$(RM
) -r
$(OBJDIR
)/$(DEPS
)
156 $(MAKE
) -C plugins
clean
160 ifeq ($(ANYREC
), RECORDER
)
161 DEPDIRS
+= $(DEPS
)/recorder
163 ifeq ($(TARGET
), -DARCHOS_PLAYER
)
164 DEPDIRS
+= $(DEPS
)/player
167 DEPDIRS
+= $(DEPS
)/neo
171 DIRS
= $(subst $(DEPS
),".",$(DEPDIRS
))
174 @
$(SHELL
) -c
'for d in $(DIRS); do { etags -o $(OBJDIR)/TAGS -a $$d/*.[ch]; }; done'
176 $(OBJDIR
)/$(DEPS
)/%.d
: %.c
177 @
$(SHELL
) -c
'for d in $(DEPDIRS); do { if [ ! -d $(OBJDIR)/$$d ]; then mkdir $(OBJDIR)/$$d; fi; }; done'
178 @echo
"Updating dependencies for $(OBJDIR)/$<"
179 @
$(SHELL
) -ec
'$(CC) -MM $(CFLAGS) $< \
180 |sed '\''s|\($*\)\.o[ :]*|$(OBJDIR)/\1.o $(<:%.c=%.d) : |g'\'' > $@; \
181 [ -s $@ ] || rm -f $@'
184 -include $(SRC
:%.c
=$(OBJDIR
)/$(DEPS
)/%.d
)