2 # Open \______ \ ____ ____ | | _\_ |__ _______ ___
3 # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4 # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5 # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 INCLUDES
= -I
$(FIRMDIR
)/include -I
$(FIRMDIR
)/export -I.
-I
$(BUILDDIR
) \
11 -I
$(BUILDDIR
)/bitmaps
-I
$(OBJDIR
)
13 DEPFILE
= $(OBJDIR
)/dep-apps
14 LDS
:= $(FIRMDIR
)/app.lds
15 ROMLDS
:= $(FIRMDIR
)/rom.lds
25 # Set up the bitmap libraries
28 ifneq ($(strip $(BMP2RB_MONO
)),)
29 BITMAPLIBS
+= $(BUILDDIR
)/libbitmapsmono.a
30 LINKBITMAPS
+= -lbitmapsmono
32 ifneq ($(strip $(BMP2RB_NATIVE
)),)
33 BITMAPLIBS
+= $(BUILDDIR
)/libbitmapsnative.a
34 LINKBITMAPS
+= -lbitmapsnative
36 ifneq ($(strip $(BMP2RB_REMOTEMONO
)),)
37 BITMAPLIBS
+= $(BUILDDIR
)/libbitmapsremotemono.a
38 LINKBITMAPS
+= -lbitmapsremotemono
40 ifneq ($(strip $(BMP2RB_REMOTENATIVE
)),)
41 BITMAPLIBS
+= $(BUILDDIR
)/libbitmapsremotenative.a
42 LINKBITMAPS
+= -lbitmapsremotenative
45 # This sets up 'SRC' based on the files mentioned in SOURCES
46 include $(TOOLSDIR
)/makesrc.inc
53 DIRS
+= $(subst :, ,$(APPEXTRA
))
54 INCLUDES
+= $(patsubst %,-I
%,$(subst :, ,$(APPEXTRA
)))
57 CFLAGS
= $(INCLUDES
) $(GCCOPTS
) $(TARGET
) $(DEFINES
) -DTARGET_ID
=$(TARGET_ID
) \
58 -DAPPSVERSION
=\"$(VERSION
)\" $(EXTRA_DEFINES
) -DMEM
=${MEMORYSIZE}
60 OBJS2
:= $(OBJDIR
)/lang.o
$(patsubst %.c
, $(OBJDIR
)/%.o
, $(SRC
))
61 OBJS
= $(patsubst %.S
, $(OBJDIR
)/%.o
, $(OBJS2
))
63 LINKFILE
= $(OBJDIR
)/linkage.lds
64 LINKROM
= $(OBJDIR
)/linkrom.lds
65 MAXINFILE
= $(OBJDIR
)/romstart.temp
66 MAXOUTFILE
= $(OBJDIR
)/romstart
68 LIBROCKBOX
= $(BUILDDIR
)/librockbox.a
73 all: $(BUILDDIR
)/$(BINARY
) $(CODECS
) $(ROCKS
)
76 # regular target build
79 REALBIN
= $(OBJDIR
)/rockbox.elf
81 # this is not needed to get built when doing debug builds
82 REALBIN
= $(BUILDDIR
)/$(BINARY
)
85 all: $(REALBIN
) $(FLASHFILE
) $(CODECS
) $(ROCKS
) $(ARCHOSROM
)
88 $(DEPFILE
): $(BITMAPLIBS
)
93 @
$(MAKE
) -C codecs
/lib OBJDIR
=$(OBJDIR
)/codecs
/lib
94 @
$(MAKE
) -C codecs OBJDIR
=$(OBJDIR
)/codecs
97 @
$(MAKE
) -C bitmaps OBJDIR
=$(OBJDIR
)/bitmaps
99 $(BITMAPLIBS
): build-bitmaps
102 @
$(MAKE
) -C plugins
/lib OBJDIR
=$(OBJDIR
)/plugins
/lib
103 @
$(MAKE
) -C plugins OBJDIR
=$(OBJDIR
)/plugins
106 @echo
"Build LDS file"
107 @cat
$< |
$(CC
) -DLOADADDRESS
=$(LOADADDRESS
) -DMEMORYSIZE
=$(MEMORYSIZE
) $(INCLUDES
) $(TARGET
) $(DEFINES
) -E
-P
$(ROMBUILD
) - >$@
109 $(LINKROM
): $(ROMLDS
)
110 @echo
"Build LDS file for Rombox"
111 @cat
$< |
$(CC
) -DMEMORYSIZE
=$(MEMORYSIZE
) $(INCLUDES
) $(TARGET
) $(DEFINES
) -E
-P
$(ROMBUILD
) - >$@
114 @echo
'#include "config.h"' > $(MAXINFILE
)
115 @echo
"ROM_START" >> $(MAXINFILE
)
116 @cat
$(MAXINFILE
) |
$(CC
) -DMEMORYSIZE
=$(MEMORYSIZE
) $(INCLUDES
) $(TARGET
) $(DEFINES
) -E
-P
$(ROMBUILD
) - > $(MAXOUTFILE
)
119 $(OBJDIR
)/rombox.elf
: $(OBJS
) $(LINKROM
) $(DEPFILE
) $(LIBROCKBOX
) $(BITMAPLIBS
)
120 @echo
"LD rombox.elf"
121 @
$(CC
) $(GCCOPTS
) -Os
-nostdlib
-o
$@
$(OBJS
) -L
$(BUILDDIR
) -lrockbox
-lgcc
$(LINKBITMAPS
) -L
$(BUILDDIR
)/firmware
-T
$(LINKROM
) -Wl
,-Map
,$(OBJDIR
)/rombox.map
125 $(OBJDIR
)/rockbox.elf
: $(OBJS
) $(LINKFILE
) $(DEPFILE
) $(LIBROCKBOX
) $(BITMAPLIBS
)
126 @echo
"LD rockbox.elf"
127 @
$(CC
) $(GCCOPTS
) -Os
-nostdlib
-o
$@
$(OBJS
) -L
$(BUILDDIR
)/firmware
-L
$(BUILDDIR
) -lrockbox
$(LINKBITMAPS
) -lgcc
-T
$(LINKFILE
) -Wl
,-Map
,$(OBJDIR
)/rockbox.map
129 $(OBJDIR
)/rockbox.bin
: $(OBJDIR
)/rockbox.elf
130 @echo
"OBJCOPY "`basename $@`
131 @
$(OC
) -O binary
$< $@
133 $(OBJDIR
)/rombox.bin
: $(OBJDIR
)/rombox.elf
134 @echo
"OBJCOPY "`basename $@`
135 @
$(OC
) -O binary
$< $@
137 $(OBJDIR
)/rockbox.asm
: $(OBJDIR
)/rockbox.bin
138 $(TOOLSDIR
)/sh2d
-sh1
$< > $@
141 # If there's a flashfile defined for this target (rockbox.ucl for Archos
142 # models) Then check if the mkfirmware script fails, as then it is (likely)
143 # because the image is too big and we need to create a compressed image
146 $(BUILDDIR
)/$(BINARY
) : $(OBJDIR
)/rockbox.bin
$(FLASHFILE
)
147 @echo
"Build firmware file"
148 $(SILENT
)($(MKFIRMWARE
) $< $@
; \
150 if
test -n
"$(FLASHFILE)"; then \
151 if
test "$$stat" -ne
0; then \
152 echo
"Image too big, making a compressed version!"; \
153 $(MAKE
) -C
$(FIRMDIR
)/decompressor OBJDIR
=$(BUILDDIR
)/firmware
/decompressor
; \
154 $(MKFIRMWARE
) $(BUILDDIR
)/firmware
/decompressor
/compressed.bin
$@
; \
159 # this is a simulator build
161 ifeq ($(SIMVER
), win32
)
162 # OK, this is ugly but we need it on the link line to make it do right
163 EXTRAOBJ
= $(BUILDDIR
)/sim
/uisw32-res.o
168 $(BUILDDIR
)/$(BINARY
) : $(OBJS
) $(DEPFILE
) $(BUILDDIR
)/libsim.a \
169 $(BUILDDIR
)/libcomsim.a
$(LIBROCKBOX
) $(BITMAPLIBS
)
171 $(SILENT
)$(CC
) $(GCCOPTS
) -o
$@
$(OBJS
) -L
$(BUILDDIR
) -lrockbox
-lsim
-lcomsim
$(LINKBITMAPS
) $(LDOPTS
) $(EXTRAOBJ
) -Wl
,-Map
,$(OBJDIR
)/rockbox.map
175 $(BUILDDIR
)/rockbox.ucl
: $(OBJDIR
)/rockbox.bin
176 $(SILENT
)(echo
"UCLPACK rockbox" ; \
177 $(TOOLSDIR
)/uclpack
--best
--2e
$< $@
>/dev
/null
2>&1;)
179 $(BUILDDIR
)/rombox.ucl
: $(OBJDIR
)/rombox.bin
$(MAXOUTFILE
)
180 $(SILENT
)(echo
"UCLPACK rombox" ; \
181 $(TOOLSDIR
)/uclpack
--none
$< $@
>/dev
/null
2>&1; \
182 perl
$(TOOLSDIR
)/romsizetest.pl
`cat $(MAXOUTFILE)` $<; \
183 if
test $$?
-ne
0; then \
184 echo
"removing UCL file again, making it a fake one"; \
188 include $(TOOLSDIR
)/make.inc
190 $(OBJDIR
)/build.lang
: lang
/$(LANGUAGE
).lang
$(TOOLSDIR
)/uplang
192 @mkdir
-p
`dirname $@`
193 @perl
$(TOOLSDIR
)/uplang lang
/english.lang
$< > $@
195 $(OBJDIR
)/lang.o
: $(OBJDIR
)/build.lang
$(TOOLSDIR
)/genlang
197 @mkdir
-p
`dirname $@`
198 @perl
-s
$(TOOLSDIR
)/genlang
-p
=$(BUILDDIR
)/lang
$<
200 @
$(CC
) $(CFLAGS
) -c
$(BUILDDIR
)/lang.c
-o
$@
203 @echo
"cleaning apps"
204 @
-rm -f
$(OBJS
) $(BUILDDIR
)/$(BINARY
) $(OBJDIR
)/rockbox.asm \
205 $(OBJDIR
)/rockbox.bin
$(OBJDIR
)/rockbox.elf
$(OBJDIR
)/*.map \
206 $(OBJDIR
)/lang.o
$(OBJDIR
)/build.lang
$(BUILDDIR
)/lang.
[ch
] \
207 $(LINKFILE
) $(BUILDDIR
)/rockbox.ucl
$(LINKROM
) \
208 $(BUILDDIR
)/rombox.ucl
$(OBJDIR
)/rombox.bin
$(OBJDIR
)/rombox.elf \
209 $(MAXOUTFILE
) $(DEPFILE
)
210 @
$(MAKE
) -C bitmaps
/mono
clean OBJDIR
=$(OBJDIR
)/bitmaps
/mono
211 @
$(MAKE
) -C bitmaps
/native
clean OBJDIR
=$(OBJDIR
)/bitmaps
/native
212 @
$(MAKE
) -C bitmaps
/remote_mono
clean OBJDIR
=$(OBJDIR
)/bitmaps
/remote_mono
213 @
$(MAKE
) -C bitmaps
/remote_native
clean OBJDIR
=$(OBJDIR
)/bitmaps
/remote_native
214 @
$(MAKE
) -C plugins
clean OBJDIR
=$(OBJDIR
)/plugins
215 @
$(MAKE
) -C codecs
clean OBJDIR
=$(OBJDIR
)/codecs
216 @
rm -rf
$(OBJDIR
)/recorder
$(OBJDIR
)/player
217 @
rm -rf
$(BUILDDIR
)/bitmaps
219 @
$(MAKE
) -C
$(SIMDIR
) clean
222 ifneq ($(MAKECMDGOALS
),clean)