#-*-makefile-*-
# Usage: gmake [<general options>] [LOW_POWER_MPS=1] 

include ../general/makefile.cfg
-include ../general/makefile.cfg-local
-include makefile.cfg
-include makefile.cfg-local


ISOMP4 = 1
TOTAL_PATH_ADD += isomp4

# LOW POWER MPEG SURROUND
ifdef LOW_POWER_MPS
PARTIALLY_COMPLEX = 1
LOW_POWER_SBR = 1
endif


ifndef SPATIAL_EMBED_STUDY_ON
SPATIAL_EMBED_STUDY_ON=1
endif

ifndef SPATIALAUDIO
SPATIALAUDIO=1
endif


ifndef PARTIALLY_COMPLEX
PARTIALLY_COMPLEX = 0
endif

ifndef HRTF_DYNAMIC_UPDATE
HRTF_DYNAMIC_UPDATE = 1
endif

ifneq "$(PARTIALLY_COMPLEX)" "0"
TOTAL_PATH_ADD += lpmps
endif


ifndef SBR
SBR=1
endif

ifneq "$(SBR)" "0"
TOTAL_PATH_ADD += sbr
endif

ifndef LOW_POWER_SBR
LOW_POWER_SBR=0
endif

ifneq "$(LOW_POWER_SBR)" "0"
TOTAL_PATH_ADD += lp
endif

ifndef PARAMETRICSTEREO
PARAMETRICSTEREO=1
endif

ifneq "$(PARAMETRICSTEREO)" "0"
TOTAL_PATH_ADD += ps
endif

ifneq  "$(MAKELEVEL)" "0"
override ADDONDIR = $(TOTAL_PATH_ADD)
override DEFFLAGS   += -DMPEG4V1
ifdef LOW_POWER_MPS
override MODULELIBS += -lmp4mcdec_lp
else
override MODULELIBS += -lmp4mcdec
endif
endif # ifneq  "$(MAKELEVEL)" "0"


# -include ../general/makefile.all spread in file
include ../general/makefile.platform
include ../general/makefile.rules

ifeq "$(MAKELEVEL)" "0"

# Common
OBJS = bitinput.o config.o coupling.o diagnose.o drc.o \
       huffdec1.o huffdec2.o huffdec3.o huffinit.o hufftables.o \
       intensity.o intrins.o monopred.o stereo.o tns.o


# + DOLBY imdct
OBJS += adifdec.o block.o dolby_adapt.o transfo.o

# + SONY gain control
OBJS += gc_unpac.o gc_compensate.o gc_common.o \
        gc_pqf_common.o gc_ipqf.o gc.o gc_mdct_common.o gc_imdct.o


# + Coding Technologies SBR
ifeq "$(SBR)" "1"
OBJS += ct_envcalc.o ct_envdec.o ct_envextr.o ct_freqsca.o ct_hfgen.o \
        ct_sbrbitb.o ct_sbrcrc.o ct_sbrdec.o ct_sbrdecoder.o ct_polyphase.o
ifeq "$(PARAMETRICSTEREO)" "1"
OBJS += ct_psdec.o   # Parametric Stereo
endif
endif


OBJS_AACDEC    = decoder.o audioout.o
OBJS_LIB       = $(OBJS)
AAC_OBJS_ALL   = $(OBJS_LIB) $(OBJS_AACDEC)

OBJS_ADIF2MP4  = adif2mp4.o bitoutput.o
CONV_OBJS_ALL  = $(OBJS_ADIF2MP4)

# + LTP + PNS
MP4_OBJS_LIB   = nok_lt_prediction.o pns.o
OBJS_MP4AUDEC  = $(OBJS_AACDEC)
MP4_OBJS_ALL   = $(OBJS_LIB) $(MP4_OBJS_LIB) $(OBJS_MP4AUDEC)


# -DBIGDECODER
#  Enabling this option builds an AAC Decoder that can handle up
#  to 48 channels of audio. This is required for stream L8, S15, S16.

override DEFFLAGS = -DNEW_ADTS -DWRITE_NEW_ADTS -DDRC -DBIGDECODER

ifeq "$(SPATIAL_EMBED_STUDY_ON)" "1"
override DEFFLAGS += -DSPATIAL_EMBED_STUDY_ON
endif	

ifeq "$(PARTIALLY_COMPLEX)" "1"
override DEFFLAGS += -DPARTIALLY_COMPLEX
endif	

ifeq "$(HRTF_DYNAMIC_UPDATE)" "1"
override DEFFLAGS += -DHRTF_DYNAMIC_UPDATE
endif	

ifeq "$(SBR)" "1"
override DEFFLAGS += -DCT_SBR

ifeq "$(LOW_POWER_SBR)" "1"
override DEFFLAGS += -DLOW_POWER_SBR
endif

ifeq "$(PARAMETRICSTEREO)" "1"
override DEFFLAGS += -DPARAMETRICSTEREO
endif

ifeq "$(SPATIALAUDIO)" "1"
override DEFFLAGS += -DSPATIALAUDIO
override INCL += -I../mp4spatialdec/src
endif

endif

ifeq "$(TORTURE_TEST)" "1" 
override DEFFLAGS += -DARITHMETIC_TORTURE_TEST
endif

ifeq "$(PNS_NONDETERMINISTIC_RANDOM)" "1" 
override DEFFLAGS += -DPNS_NONDETERMINISTIC_RANDOM
endif

ifeq "$(SPATIALAUDIO)" "1"
ifdef LOW_POWER_MPS
COMLIBS  += -lspatialdec_lp
else
COMLIBS  += -lspatialdec
endif
endif

ifdef LOW_POWER_MPS
ALL_BIN   = mp4spatialdec_lp
MP4_LIBS  = libmp4mcdec_lp.a
else
ALL_BIN   = mp4spatialdec
MP4_LIBS  = libmp4mcdec.a
endif


SRCDIRS = src
OPTIONS = $(MFLAGS) SRCDIRS="$(SRCDIRS)" USE_AFSP=$(USE_AFSP) COMLIBS="$(COMLIBS)" EXTERNLIBS="$(EXTERNLIBS)" DEFFLAGS="$(DEFFLAGS)" LIBS="$(LIBS)" INCL="$(INCL)" INCLDEP=1

.PHONY: all $(ALL_BIN) $(MP4_LIBS) clean

all: $(ALL_BIN)

mp4spatialdec:  $(MP4_LIBS)
	@$(MAKE) $(OPTIONS) TARGET=$@ OBJS="$(OBJS_MP4AUDEC)" binary

mp4spatialdec_lp: $(MP4_LIBS)
	@$(MAKE) $(OPTIONS) TARGET=$@ OBJS="$(OBJS_MP4AUDEC)" binary

libmp4mcdec.a:
	@$(MAKE) $(OPTIONS) TARGET=$@ OBJS="$(OBJS_LIB) $(MP4_OBJS_LIB)" library

libmp4mcdec_lp.a:
	@$(MAKE) $(OPTIONS) TARGET=$@ OBJS="$(OBJS_LIB) $(MP4_OBJS_LIB)" library


clean:
ifdef LOW_POWER_MPS
	@$(MAKE) TARGET="mp4spatialdec_lp libmp4mcdec_lp.a" OBJS="$(MP4_OBJS_ALL)"  clean_mode
else
	@$(MAKE) TARGET="mp4spatialdec libmp4mcdec.a" OBJS="$(MP4_OBJS_ALL)"  clean_mode
endif

else # ifeq "$(MAKELEVEL)" "0"

clean_mode:
	@$(MAKE) TARGET="$(TARGET)" OBJS="$(OBJS)" clean

endif # ifeq "$(MAKELEVEL)" "0"
