2 # Open \______ \ ____ ____ | | _\_ |__ _______ ___
3 # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4 # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5 # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
16 INCLUDES
=-Iinclude
-I.
-Icommon
-Idrivers
20 CFLAGS
= -W
-Wall
-O
-m1
-nostdlib
-ffreestanding
-Wstrict-prototypes
$(INCLUDES
) $(TARGET
) $(EXTRA_DEFINES
)
25 CFLAGS
+= -fomit-frame-pointer
-fschedule-insns
28 SRC
:= $(wildcard drivers
/*.c common
/*.c
*.c
)
30 OBJS
:= $(SRC
:%.c
=$(OBJDIR
)/%.o
) $(OBJDIR
)/crt0.o
$(OBJDIR
)/bitswap.o
32 DEPDIRS
:=$(DEPS
) $(DEPS
)/drivers
$(DEPS
)/common
$(DEPS
)/malloc
34 DIRS
= $(subst $(DEPS
),".",$(DEPDIRS
))
36 OUTPUT
= $(OBJDIR
)/librockbox.a
38 ifeq (RECORDER
,$(findstring RECORDER
, $(CFLAGS
)))
39 OBJS
+= $(OBJDIR
)/sysfont.o
44 @echo
"Don't run make here. Run the tools/configure script from your own build"
45 @echo
"directory, then run make there."
47 @echo
"More help on how to build rockbox can be found here:"
48 @echo
"http://rockbox.haxx.se/docs/how_to_compile.html"
51 all: $(OUTPUT
) $(EXTRA_TARGETS
)
57 @mkdir
-p
`dirname $@`
58 $(CC
) $(CFLAGS
) -c
$< -o
$@
61 @mkdir
-p
`dirname $@`
62 $(CC
) $(CFLAGS
) -c
$< -o
$@
65 @
$(SHELL
) -c
'for d in $(DIRS); do { etags -o $(OBJDIR)/TAGS -a $$d/*.[ch]; }; done'
68 rm -f
$(OBJS
) $(OUTPUT
) $(OBJDIR
)/sysfont.c
69 rm -rf
$(OBJDIR
)/$(DEPS
)
72 $(OBJDIR
)/thread.o
: thread.c thread.h
73 $(CC
) -c
-O
-fomit-frame-pointer
$(CFLAGS
) $< -o
$@
75 $(OBJDIR
)/sysfont.o
: fonts
/clR6x8.bdf
76 $(TOOLSDIR
)/convbdf
-c
-o
$(OBJDIR
)/sysfont.c
$<
77 $(CC
) $(CFLAGS
) -c
$(OBJDIR
)/sysfont.c
-o
$@
79 $(OBJDIR
)/$(DEPS
)/%.d
: %.c
80 @
$(SHELL
) -c
'for d in $(DEPDIRS); do { if [ ! -d $(OBJDIR)/$$d ]; then mkdir $(OBJDIR)/$$d; fi; }; done'
81 @echo
"Updating dependencies for $<"
82 @
$(SHELL
) -ec
'$(CC) -MM $(CFLAGS) $< \
83 |sed '\''s|\($*\)\.o[ :]*|$(OBJDIR)/\1.o $(<:%.c=%.d) : |g'\'' > $@; \
84 [ -s $@ ] || rm -f $@'
87 -include $(SRC
:%.c
=$(OBJDIR
)/$(DEPS
)/%.d
)