summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/codecs.make
diff options
context:
space:
mode:
authorSean Bartell <wingedtachikoma@gmail.com>2011-06-25 21:32:25 -0400
committerNils Wallménius <nils@rockbox.org>2012-04-25 22:13:20 +0200
commitf40bfc9267b13b54e6379dfe7539447662879d24 (patch)
tree9b20069d5e62809ff434061ad730096836f916f2 /lib/rbcodec/codecs/codecs.make
parenta0009907de7a0107d49040d8a180f140e2eff299 (diff)
downloadrockbox-f40bfc9267b13b54e6379dfe7539447662879d24.zip
rockbox-f40bfc9267b13b54e6379dfe7539447662879d24.tar.gz
rockbox-f40bfc9267b13b54e6379dfe7539447662879d24.tar.bz2
rockbox-f40bfc9267b13b54e6379dfe7539447662879d24.tar.xz
Add codecs to librbcodec.
Change-Id: Id7f4717d51ed02d67cb9f9cb3c0ada4a81843f97 Reviewed-on: http://gerrit.rockbox.org/137 Reviewed-by: Nils Wallménius <nils@rockbox.org> Tested-by: Nils Wallménius <nils@rockbox.org>
Diffstat (limited to 'lib/rbcodec/codecs/codecs.make')
-rw-r--r--lib/rbcodec/codecs/codecs.make206
1 files changed, 206 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/codecs.make b/lib/rbcodec/codecs/codecs.make
new file mode 100644
index 0000000..919aef2
--- /dev/null
+++ b/lib/rbcodec/codecs/codecs.make
@@ -0,0 +1,206 @@
+# __________ __ ___.
+# Open \______ \ ____ ____ | | _\_ |__ _______ ___
+# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+# \/ \/ \/ \/ \/
+# $Id$
+#
+
+CODECDIR = $(RBCODEC_BLD)/codecs
+CODECS_SRC := $(call preprocess, $(RBCODECLIB_DIR)/codecs/SOURCES)
+OTHER_SRC += $(CODECS_SRC)
+
+CODECS := $(CODECS_SRC:.c=.codec)
+CODECS := $(subst $(RBCODECLIB_DIR),$(RBCODEC_BLD),$(CODECS))
+
+# the codec helper library
+include $(RBCODECLIB_DIR)/codecs/lib/libcodec.make
+OTHER_INC += -I$(RBCODECLIB_DIR)/codecs/lib
+
+# extra libraries
+CODEC_LIBS := $(EXTRA_LIBS) $(CODECLIB)
+
+# the codec libraries
+include $(RBCODECLIB_DIR)/codecs/demac/libdemac.make
+include $(RBCODECLIB_DIR)/codecs/liba52/liba52.make
+include $(RBCODECLIB_DIR)/codecs/libalac/libalac.make
+include $(RBCODECLIB_DIR)/codecs/libasap/libasap.make
+include $(RBCODECLIB_DIR)/codecs/libasf/libasf.make
+include $(RBCODECLIB_DIR)/codecs/libfaad/libfaad.make
+include $(RBCODECLIB_DIR)/codecs/libffmpegFLAC/libffmpegFLAC.make
+include $(RBCODECLIB_DIR)/codecs/libm4a/libm4a.make
+include $(RBCODECLIB_DIR)/codecs/libmad/libmad.make
+include $(RBCODECLIB_DIR)/codecs/libmusepack/libmusepack.make
+include $(RBCODECLIB_DIR)/codecs/libspc/libspc.make
+include $(RBCODECLIB_DIR)/codecs/libspeex/libspeex.make
+include $(RBCODECLIB_DIR)/codecs/libtremor/libtremor.make
+include $(RBCODECLIB_DIR)/codecs/libwavpack/libwavpack.make
+include $(RBCODECLIB_DIR)/codecs/libwma/libwma.make
+include $(RBCODECLIB_DIR)/codecs/libwmapro/libwmapro.make
+include $(RBCODECLIB_DIR)/codecs/libcook/libcook.make
+include $(RBCODECLIB_DIR)/codecs/librm/librm.make
+include $(RBCODECLIB_DIR)/codecs/libatrac/libatrac.make
+include $(RBCODECLIB_DIR)/codecs/libpcm/libpcm.make
+include $(RBCODECLIB_DIR)/codecs/libtta/libtta.make
+include $(RBCODECLIB_DIR)/codecs/libgme/libay.make
+include $(RBCODECLIB_DIR)/codecs/libgme/libgbs.make
+include $(RBCODECLIB_DIR)/codecs/libgme/libhes.make
+include $(RBCODECLIB_DIR)/codecs/libgme/libnsf.make
+include $(RBCODECLIB_DIR)/codecs/libgme/libsgc.make
+include $(RBCODECLIB_DIR)/codecs/libgme/libvgm.make
+include $(RBCODECLIB_DIR)/codecs/libgme/libkss.make
+include $(RBCODECLIB_DIR)/codecs/libgme/libemu2413.make
+
+# compile flags for codecs
+CODECFLAGS = $(CFLAGS) $(RBCODEC_CFLAGS) -fstrict-aliasing \
+ -I$(RBCODECLIB_DIR)/codecs -I$(RBCODECLIB_DIR)/codecs/lib -DCODEC
+
+# set CODECFLAGS per codec lib, since gcc takes the last -Ox and the last
+# in a -ffoo -fno-foo pair, there is no need to filter them out
+$(A52LIB) : CODECFLAGS += -O1
+$(ALACLIB) : CODECFLAGS += -O1
+$(ASAPLIB) : CODECFLAGS += -O1
+$(ASFLIB) : CODECFLAGS += -O2
+$(ATRACLIB) : CODECFLAGS += -O1
+$(AYLIB) : CODECFLAGS += -O2
+$(COOKLIB): CODECFLAGS += -O1
+$(DEMACLIB) : CODECFLAGS += -O3
+$(FAADLIB) : CODECFLAGS += -O2
+$(FFMPEGFLACLIB) : CODECFLAGS += -O2
+$(GBSLIB) : CODECFLAGS += -O2
+$(HESLIB) : CODECFLAGS += -O2
+$(KSSLIB) : CODECFLAGS += -O2
+$(M4ALIB) : CODECFLAGS += -O3
+$(MUSEPACKLIB) : CODECFLAGS += -O1
+$(NSFLIB) : CODECFLAGS += -O2
+$(PCMSLIB) : CODECFLAGS += -O1
+$(RMLIB) : CODECFLAGS += -O3
+$(SGCLIB) : CODECFLAGS += -O2
+$(SPCLIB) : CODECFLAGS += -O1
+$(TREMORLIB) : CODECFLAGS += -O2
+$(TTALIB) : CODECFLAGS += -O2
+$(VGMLIB) : CODECFLAGS += -O2
+$(EMU2413LIB) : CODECFLAGS += -O3
+$(WAVPACKLIB) : CODECFLAGS += -O1
+$(WMALIB) : CODECFLAGS += -O2
+$(WMAPROLIB) : CODECFLAGS += -O1
+$(WMAVOICELIB) : CODECFLAGS += -O1
+
+# fine-tuning of CODECFLAGS per cpu arch
+ifeq ($(ARCH),arch_arm)
+ # redo per arm generation
+ $(ALACLIB) : CODECFLAGS += -O2
+ $(AYLIB) : CODECFLAGS += -O1
+ $(GBSLIB) : CODECFLAGS += -O1
+ $(HESLIB) : CODECFLAGS += -O1
+ $(KSSLIB) : CODECFLAGS += -O1
+ $(NSFLIB) : CODECFLAGS += -O1
+ $(SGCLIB) : CODECFLAGS += -O1
+ $(VGMLIB) : CODECFLAGS += -O1
+ $(EMU2413LIB) : CODECFLAGS += -O3
+ $(WAVPACKLIB) : CODECFLAGS += -O3
+else ifeq ($(ARCH),arch_m68k)
+ $(A52LIB) : CODECFLAGS += -O2
+ $(ASFLIB) : CODECFLAGS += -O3
+ $(ATRACLIB) : CODECFLAGS += -O2
+ $(COOKLIB): CODECFLAGS += -O2
+ $(DEMACLIB) : CODECFLAGS += -O2
+ $(SPCLIB) : CODECFLAGS += -O3
+ $(WMAPROLIB) : CODECFLAGS += -O3
+ $(WMAVOICELIB) : CODECFLAGS += -O2
+endif
+
+ifeq ($(MEMORYSIZE),2)
+ $(ASFLIB) : CODECFLAGS += -Os
+ $(WMALIB) : CODECFLAGS += -Os
+endif
+
+ifndef APP_TYPE
+ CONFIGFILE := $(FIRMDIR)/export/config/$(MODELNAME).h
+ CODEC_LDS := $(APPSDIR)/plugins/plugin.lds # codecs and plugins use same file
+ CODECLINK_LDS := $(CODECDIR)/codec.link
+endif
+
+CODEC_CRT0 := $(CODECDIR)/codec_crt0.o
+
+$(CODECS): $(CODEC_CRT0) $(CODECLINK_LDS)
+
+$(CODECLINK_LDS): $(CODEC_LDS) $(CONFIGFILE)
+ $(call PRINTS,PP $(@F))
+ $(shell mkdir -p $(dir $@))
+ $(call preprocess2file, $<, $@, -DCODEC)
+
+# 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-pre.map : $(CODECDIR)/libdemac-pre.a
+$(CODECDIR)/ape.codec : $(CODECDIR)/libdemac.a
+$(CODECDIR)/wma.codec : $(CODECDIR)/libwma.a $(CODECDIR)/libasf.a
+$(CODECDIR)/wmapro.codec : $(CODECDIR)/libwmapro.a $(CODECDIR)/libasf.a
+$(CODECDIR)/wavpack_enc.codec: $(CODECDIR)/libwavpack.a
+$(CODECDIR)/asap.codec : $(CODECDIR)/libasap.a
+$(CODECDIR)/cook.codec : $(CODECDIR)/libcook.a $(CODECDIR)/librm.a
+$(CODECDIR)/raac.codec : $(CODECDIR)/libfaad.a $(CODECDIR)/librm.a
+$(CODECDIR)/a52_rm.codec : $(CODECDIR)/liba52.a $(CODECDIR)/librm.a
+$(CODECDIR)/atrac3_rm.codec : $(CODECDIR)/libatrac.a $(CODECDIR)/librm.a
+$(CODECDIR)/atrac3_oma.codec : $(CODECDIR)/libatrac.a
+$(CODECDIR)/aiff.codec : $(CODECDIR)/libpcm.a
+$(CODECDIR)/wav.codec : $(CODECDIR)/libpcm.a
+$(CODECDIR)/smaf.codec : $(CODECDIR)/libpcm.a
+$(CODECDIR)/au.codec : $(CODECDIR)/libpcm.a
+$(CODECDIR)/vox.codec : $(CODECDIR)/libpcm.a
+$(CODECDIR)/wav64.codec : $(CODECDIR)/libpcm.a
+$(CODECDIR)/tta.codec : $(CODECDIR)/libtta.a
+$(CODECDIR)/ay.codec : $(CODECDIR)/libay.a
+$(CODECDIR)/gbs.codec : $(CODECDIR)/libgbs.a
+$(CODECDIR)/hes.codec : $(CODECDIR)/libhes.a
+$(CODECDIR)/nsf.codec : $(CODECDIR)/libnsf.a $(CODECDIR)/libemu2413.a
+$(CODECDIR)/sgc.codec : $(CODECDIR)/libsgc.a $(CODECDIR)/libemu2413.a
+$(CODECDIR)/vgm.codec : $(CODECDIR)/libvgm.a $(CODECDIR)/libemu2413.a
+$(CODECDIR)/kss.codec : $(CODECDIR)/libkss.a $(CODECDIR)/libemu2413.a
+
+$(CODECS): $(CODEC_LIBS) # this must be last in codec dependency list
+
+# pattern rule for compiling codecs
+$(CODECDIR)/%.o: $(RBCODECLIB_DIR)/codecs/%.c
+ $(SILENT)mkdir -p $(dir $@)
+ $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) \
+ -I$(dir $<) $(CODECFLAGS) -c $< -o $@
+
+# pattern rule for compiling codecs
+$(CODECDIR)/%.o: $(RBCODECLIB_DIR)/codecs/%.S
+ $(SILENT)mkdir -p $(dir $@)
+ $(call PRINTS,CC $(subst $(ROOTDIR)/,,$<))$(CC) \
+ -I$(dir $<) $(CODECFLAGS) $(ASMFLAGS) -c $< -o $@
+
+ifdef APP_TYPE
+ CODECLDFLAGS = $(SHARED_LDFLAG) -Wl,--gc-sections -Wl,-Map,$(CODECDIR)/$*.map
+ CODECFLAGS += $(SHARED_CFLAGS) # <-- from Makefile
+else
+ CODECLDFLAGS = -T$(CODECLINK_LDS) -Wl,--gc-sections -Wl,-Map,$(CODECDIR)/$*.map
+ CODECFLAGS += -UDEBUG -DNDEBUG
+endif
+CODECLDFLAGS += $(GLOBAL_LDOPTS)
+
+$(CODECDIR)/%-pre.map: $(CODEC_CRT0) $(CODECLINK_LDS) $(CODECDIR)/%.o $(CODECS_LIBS)
+ $(call PRINTS,LD $(@F))$(CC) $(CODECFLAGS) -o $(CODECDIR)/$*-pre.elf \
+ $(filter %.o, $^) \
+ $(filter-out $(CODECLIB),$(filter %.a, $+)) $(CODECLIB) \
+ -lgcc $(subst .map,-pre.map,$(CODECLDFLAGS))
+
+$(CODECDIR)/%.codec: $(CODECDIR)/%.o
+ $(call PRINTS,LD $(@F))$(CC) $(CODECFLAGS) -o $(CODECDIR)/$*.elf \
+ $(filter %.o, $^) \
+ $(filter %.a, $+) \
+ -lgcc $(CODECLDFLAGS)
+ $(SILENT)$(call objcopy,$(CODECDIR)/$*.elf,$@)