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.zip
rockbox-c6b3d38a156dd624760a8eb1bb374affd43b4f2a.tar.gz
rockbox-c6b3d38a156dd624760a8eb1bb374affd43b4f2a.tar.bz2
rockbox-c6b3d38a156dd624760a8eb1bb374affd43b4f2a.tar.xz
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 0000000..a65dc4f
--- /dev/null
+++ b/apps/codecs/codecs.make
@@ -0,0 +1,103 @@
+# __________ __ ___.
+# Open \______ \ ____ ____ | | _\_ |__ _______ ___
+# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+# \/ \/ \/ \/ \/
+# $Id: Makefile 19082 2008-11-10 23:54:24Z zagor $
+#
+
+CODECDIR = $(BUILDDIR)/apps/codecs
+CODECS_SRC := $(call preprocess, $(APPSDIR)/codecs/SOURCES)
+OTHER_SRC += $(CODECS_SRC)
+
+CODECS := $(CODECS_SRC:.c=.codec)
+CODECS := $(subst $(ROOTDIR),$(BUILDDIR),$(CODECS))
+
+# the codec helper library
+include $(APPSDIR)/codecs/lib/libcodec.make
+
+# the codec libraries
+include $(APPSDIR)/codecs/demac/libdemac.make
+include $(APPSDIR)/codecs/liba52/liba52.make
+include $(APPSDIR)/codecs/libalac/libalac.make
+include $(APPSDIR)/codecs/libasap/libasap.make
+include $(APPSDIR)/codecs/libfaad/libfaad.make
+include $(APPSDIR)/codecs/libffmpegFLAC/libffmpegFLAC.make
+include $(APPSDIR)/codecs/libm4a/libm4a.make
+include $(APPSDIR)/codecs/libmad/libmad.make
+include $(APPSDIR)/codecs/libmusepack/libmusepack.make
+include $(APPSDIR)/codecs/libspc/libspc.make
+include $(APPSDIR)/codecs/libspeex/libspeex.make
+include $(APPSDIR)/codecs/libtremor/libtremor.make
+include $(APPSDIR)/codecs/libwavpack/libwavpack.make
+include $(APPSDIR)/codecs/libwma/libwma.make
+
+# compile flags for codecs
+CODECFLAGS = $(CFLAGS) -I$(APPSDIR)/codecs -I$(APPSDIR)/codecs/lib \
+ -DCODEC
+
+CODEC_LDS := $(APPSDIR)/plugins/plugin.lds # codecs and plugins use same file
+CODECLINK_LDS := $(CODECDIR)/codec.link
+CODEC_CRT0 := $(CODECDIR)/codec_crt0.o
+
+CODECLIBS := $(DEMACLIB) $(A52LIB) $(ALACLIB) $(ASAPLIB) \
+ $(FAADLIB) $(FFMPEGFLACLIB) $(M4ALIB) $(MADLIB) $(MUSEPACKLIB) \
+ $(SPCLIB) $(SPEEXLIB) $(TREMORLIB) $(WAVPACKLIB) $(WMALIB) \
+ $(CODECLIB)
+
+$(CODECS): $(CODEC_CRT0) $(CODECLINK_LDS)
+
+$(CODECLINK_LDS): $(CODEC_LDS)
+ $(call PRINTS,PP $(@F))
+ $(call preprocess2file, $<, $@)
+
+# codec/library dependencies
+$(CODECDIR)/spc.codec : $(CODECDIR)/libspc.a
+$(CODECDIR)/mpa.codec : $(CODECDIR)/libmad.a
+$(CODECDIR)/a52.codec : $(CODECDIR)/liba52.a
+$(CODECDIR)/flac.codec : $(CODECDIR)/libffmpegFLAC.a
+$(CODECDIR)/vorbis.codec : $(CODECDIR)/libtremor.a
+$(CODECDIR)/speex.codec : $(CODECDIR)/libspeex.a
+$(CODECDIR)/mpc.codec : $(CODECDIR)/libmusepack.a
+$(CODECDIR)/wavpack.codec : $(CODECDIR)/libwavpack.a
+$(CODECDIR)/alac.codec : $(CODECDIR)/libalac.a $(CODECDIR)/libm4a.a
+$(CODECDIR)/aac.codec : $(CODECDIR)/libfaad.a $(CODECDIR)/libm4a.a
+$(CODECDIR)/shorten.codec : $(CODECDIR)/libffmpegFLAC.a
+$(CODECDIR)/ape.codec : $(CODECDIR)/libdemac.a
+$(CODECDIR)/wma.codec : $(CODECDIR)/libwma.a
+$(CODECDIR)/wavpack_enc.codec: $(CODECDIR)/libwavpack.a
+$(CODECDIR)/asap.codec : $(CODECDIR)/libasap.a
+
+$(CODECS): $(CODECLIB) # this must be last in codec dependency list
+
+# libfaad and libmusepack both contain a huffman.h file, with different
+# content. So we compile them with special command lines:
+
+# pattern rule for compiling codecs
+$(CODECDIR)/%.o: $(ROOTDIR)/apps/codecs/%.c
+ $(SILENT)mkdir -p $(dir $@)
+ $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) \
+ -I$(dir $<) $(CODECFLAGS) -c $< -o $@
+
+# pattern rule for compiling codecs
+$(CODECDIR)/%.o: $(ROOTDIR)/apps/codecs/%.S
+ $(SILENT)mkdir -p $(dir $@)
+ $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) \
+ -I$(dir $<) $(CODECFLAGS) -c $< -o $@
+
+ifdef SIMVER
+ CODECLDFLAGS = $(SHARED_FLAG) # <-- from Makefile
+else
+ CODECLDFLAGS = -T$(CODECLINK_LDS) -Wl,--gc-sections -Wl,-Map,$(CODECDIR)/$*.map
+ CODECFLAGS += -UDEBUG -DNDEBUG
+endif
+
+$(CODECDIR)/%.codec: $(CODECDIR)/%.o
+ $(call PRINTS,LD $(@F))$(CC) $(CODECFLAGS) -o $(CODECDIR)/$*.elf \
+ $(filter %.o, $^) \
+ $(filter %.a, $^) \
+ -lgcc $(CODECLDFLAGS)
+ $(call PRINTS,OC $(@F))$(OC) -O binary $(CODECDIR)/$*.elf $@
+
+