summaryrefslogtreecommitdiff
path: root/apps/codecs/codecs.make
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2008-11-20 11:27:31 +0000
committerBjörn Stenberg <bjorn@haxx.se>2008-11-20 11:27:31 +0000
commitc6b3d38a156dd624760a8eb1bb374affd43b4f2a (patch)
tree493eba929e2396d86cf4f077709aa09fe172cd35 /apps/codecs/codecs.make
parentf66c30346783a400a029bedcd60ab67c81c34a07 (diff)
downloadrockbox-c6b3d38a156dd624760a8eb1bb374affd43b4f2a.tar.gz
rockbox-c6b3d38a156dd624760a8eb1bb374affd43b4f2a.zip
New makefile solution: A single invocation of 'make' to build the entire tree. Fully controlled dependencies give faster and more correct recompiles.
Many #include lines adjusted to conform to the new standards. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19146 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/codecs.make')
-rw-r--r--apps/codecs/codecs.make103
1 files changed, 103 insertions, 0 deletions
diff --git a/apps/codecs/codecs.make b/apps/codecs/codecs.make
new file mode 100644
index 0000000000..a65dc4f67e
--- /dev/null
+++ b/apps/codecs/codecs.make
@@ -0,0 +1,103 @@
1# __________ __ ___.
2# Open \______ \ ____ ____ | | _\_ |__ _______ ___
3# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/
7# $Id: Makefile 19082 2008-11-10 23:54:24Z zagor $
8#
9
10CODECDIR = $(BUILDDIR)/apps/codecs
11CODECS_SRC := $(call preprocess, $(APPSDIR)/codecs/SOURCES)
12OTHER_SRC += $(CODECS_SRC)
13
14CODECS := $(CODECS_SRC:.c=.codec)
15CODECS := $(subst $(ROOTDIR),$(BUILDDIR),$(CODECS))
16
17# the codec helper library
18include $(APPSDIR)/codecs/lib/libcodec.make
19
20# the codec libraries
21include $(APPSDIR)/codecs/demac/libdemac.make
22include $(APPSDIR)/codecs/liba52/liba52.make
23include $(APPSDIR)/codecs/libalac/libalac.make
24include $(APPSDIR)/codecs/libasap/libasap.make
25include $(APPSDIR)/codecs/libfaad/libfaad.make
26include $(APPSDIR)/codecs/libffmpegFLAC/libffmpegFLAC.make
27include $(APPSDIR)/codecs/libm4a/libm4a.make
28include $(APPSDIR)/codecs/libmad/libmad.make
29include $(APPSDIR)/codecs/libmusepack/libmusepack.make
30include $(APPSDIR)/codecs/libspc/libspc.make
31include $(APPSDIR)/codecs/libspeex/libspeex.make
32include $(APPSDIR)/codecs/libtremor/libtremor.make
33include $(APPSDIR)/codecs/libwavpack/libwavpack.make
34include $(APPSDIR)/codecs/libwma/libwma.make
35
36# compile flags for codecs
37CODECFLAGS = $(CFLAGS) -I$(APPSDIR)/codecs -I$(APPSDIR)/codecs/lib \
38 -DCODEC
39
40CODEC_LDS := $(APPSDIR)/plugins/plugin.lds # codecs and plugins use same file
41CODECLINK_LDS := $(CODECDIR)/codec.link
42CODEC_CRT0 := $(CODECDIR)/codec_crt0.o
43
44CODECLIBS := $(DEMACLIB) $(A52LIB) $(ALACLIB) $(ASAPLIB) \
45 $(FAADLIB) $(FFMPEGFLACLIB) $(M4ALIB) $(MADLIB) $(MUSEPACKLIB) \
46 $(SPCLIB) $(SPEEXLIB) $(TREMORLIB) $(WAVPACKLIB) $(WMALIB) \
47 $(CODECLIB)
48
49$(CODECS): $(CODEC_CRT0) $(CODECLINK_LDS)
50
51$(CODECLINK_LDS): $(CODEC_LDS)
52 $(call PRINTS,PP $(@F))
53 $(call preprocess2file, $<, $@)
54
55# codec/library dependencies
56$(CODECDIR)/spc.codec : $(CODECDIR)/libspc.a
57$(CODECDIR)/mpa.codec : $(CODECDIR)/libmad.a
58$(CODECDIR)/a52.codec : $(CODECDIR)/liba52.a
59$(CODECDIR)/flac.codec : $(CODECDIR)/libffmpegFLAC.a
60$(CODECDIR)/vorbis.codec : $(CODECDIR)/libtremor.a
61$(CODECDIR)/speex.codec : $(CODECDIR)/libspeex.a
62$(CODECDIR)/mpc.codec : $(CODECDIR)/libmusepack.a
63$(CODECDIR)/wavpack.codec : $(CODECDIR)/libwavpack.a
64$(CODECDIR)/alac.codec : $(CODECDIR)/libalac.a $(CODECDIR)/libm4a.a
65$(CODECDIR)/aac.codec : $(CODECDIR)/libfaad.a $(CODECDIR)/libm4a.a
66$(CODECDIR)/shorten.codec : $(CODECDIR)/libffmpegFLAC.a
67$(CODECDIR)/ape.codec : $(CODECDIR)/libdemac.a
68$(CODECDIR)/wma.codec : $(CODECDIR)/libwma.a
69$(CODECDIR)/wavpack_enc.codec: $(CODECDIR)/libwavpack.a
70$(CODECDIR)/asap.codec : $(CODECDIR)/libasap.a
71
72$(CODECS): $(CODECLIB) # this must be last in codec dependency list
73
74# libfaad and libmusepack both contain a huffman.h file, with different
75# content. So we compile them with special command lines:
76
77# pattern rule for compiling codecs
78$(CODECDIR)/%.o: $(ROOTDIR)/apps/codecs/%.c
79 $(SILENT)mkdir -p $(dir $@)
80 $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) \
81 -I$(dir $<) $(CODECFLAGS) -c $< -o $@
82
83# pattern rule for compiling codecs
84$(CODECDIR)/%.o: $(ROOTDIR)/apps/codecs/%.S
85 $(SILENT)mkdir -p $(dir $@)
86 $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) \
87 -I$(dir $<) $(CODECFLAGS) -c $< -o $@
88
89ifdef SIMVER
90 CODECLDFLAGS = $(SHARED_FLAG) # <-- from Makefile
91else
92 CODECLDFLAGS = -T$(CODECLINK_LDS) -Wl,--gc-sections -Wl,-Map,$(CODECDIR)/$*.map
93 CODECFLAGS += -UDEBUG -DNDEBUG
94endif
95
96$(CODECDIR)/%.codec: $(CODECDIR)/%.o
97 $(call PRINTS,LD $(@F))$(CC) $(CODECFLAGS) -o $(CODECDIR)/$*.elf \
98 $(filter %.o, $^) \
99 $(filter %.a, $^) \
100 -lgcc $(CODECLDFLAGS)
101 $(call PRINTS,OC $(@F))$(OC) -O binary $(CODECDIR)/$*.elf $@
102
103