#-*-makefile-*-
#ifdef MPEG4V1
# Usage: gmake [<general options>] [AAC_PP=0] [SBR=0] [MPEG2=1] [PARAMETRICSTEREO=0]
#else
# USAGE: gmake [<general options>] [AAC_PP=0] [SBR=0] [PARAMETRICSTEREO=0]
#endif

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

TOTAL_PATH_ADD =
CFLAGS_DEC = -funsigned-char -ansi -pedantic -W -Wall
CFLAGS_DEC +=  -DMPEG4V1 -DUSE_AFSP -DPLOTMTV -DI2R_LOSSLESS -DVERSION2 -DWND_SHAPE_BUGFIX_FHG -DTRUNCATION_BUGFIX_FHG -DUSELIB_ISOMP4 -DBSAC
# -DUSELIB_ISOMP4


#DEFFLAGS_DEC = CFLAGS_DEC
#DEFFLAGS_DEC = -DMPEG4V1 -DUSE_AFSP -DPLOTMTV -DI2R_LOSSLESS -DVERSION2 -DBSAC -DWND_SHAPE_BUGFIX_FHG -DTRUNCATION_BUGFIX_FHG

ifneq  "$(MAKELEVEL)" "0"
override ADDONDIR = $(TOTAL_PATH_ADD)
endif

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

LIB_LIST = 
ifneq "$(USE_AFSP)" "0"
  CFLAGS_ENC += -I$(AFSP_INCLUDE_PATH)
  LIB_LIST += $(AFSP_LIBRARY_PATH)/libtsp.a
  DEFFLAGS_DEC += -DUSELIB_AFsp
   
endif

#ifneq "$(ENABLE_RTPLAY)" "0"
#  LDLIBS += -laudio
#  DEFFLAGS_DEC += -DENABLE_RTPLAY
#endif

ifeq "$(MAKELEVEL)" "0"

#changed
OBJS_AAC_QC_ENC = mc_enc.o aac_se_enc.o nok_ltp_enc.o aac_qc.o tns_enc.o ms.o is.o nok_pitch.o drc.o 
#fischejs kommt doppelt vor
#OBJS_AAC_QC_DEC = tns.o
OBJS_PSYCH   = psych.o


OBJS_BSAC_ENC = sam_bit_buffer.o sam_encode_bsac.o sam_encode_frame.o sam_encoder.o sam_faencode.o
OBJS_BSAC_DEC = bitstream.o common_m4a.o sam_bitbuffer.o sam_decode_bsac.o sam_decode_frame.o sam_decoder.o sam_fadecode.o sam_tns.o


# Some compile flag definitions:
# -DMPEG4V1 : include MPEG4 AAC extensions.
# -DSRS     : include gain control.
# -DPULSE   : include pulse coding in encoder.
#changed
#override DEFFLAGS += -DSRS -DDOUBLE_WIN -DDOLBY_MDCT -DOLD_PRED_PARAMS -DPLOTMTV

ifndef USE_AFSP
USE_AFSP=1
endif


# type "make USE=AFSP=1" to enable AFsp
ifeq "$(USE_AFSP)" "1"
override DEFFLAGS += -DUSE_AFSP
LIBS_COM += -ltsp
endif



ifndef AAC_PP
AAC_PP = 1
CFLAGS_ENC += -DSON_AAC_PP
endif
ifeq "$(AAC_PP)" "1"
#override DEF
FLAGS += -DSON_AAC_PP
OBJS_SON_AACPP_ENC = son_gc_common.o son_gc_detecter.o son_gc_etc_enc.o son_pqf.o son_gc_modifier.o son_gc_pack.o son_pqf_common.o son_gc_detectreset.o
endif


ifeq "$(USE_AFSP)" "0"
ifeq "$(ENABLE_RTPLAY)" "0"
OBJS_LIB_DEC += aiff_support.o
endif
endif


OBJS_LIB_DEC = config.o decdata.o \
	huffdec1.o huffdec2.o huffdec3.o huffinit.o hufftables.o \
	intensity.o intrins.o monopred.o stereo.o pns.o \
	lit_ll_dec.o cbac.o nok_lt_prediction.o inv_int_mdct.o \
	int_tns.o lit_ms.o int_compact_tables.o int_win_dctiv.o tns.o


OBJS_AAC_DEC  = $(OBJS_LIB_DEC) adifdec.o decoder.o portio.o mp4dec.o acod.o

OBJS_AAC_ENC = $(OBJS_AAC_QC_ENC) util.o transfo.o imdct.o lit_ll_en.o cbac_enc.o acod_enc.o lit_ms_enc.o int_mdct.o int_win_dctiv_enc.o int_tns_encoder.o int_compact_tables_enc.o aac_back_pred.o


CFLAGS_ENC += -g -DPLOTMTV
#CFLAGS += -DUSE_AFSP -DSRS -DDOUBLE_WIN -DOLD_PRED_PARAMS -DDRC -DI2R_LOSSLESS -DMPEG4V1 -DSILENCE -DMP4FF -DADTS -DUSELIB_ISOMP4-DVERSION2
CFLAGS_ENC += -DUSE_AFSP -DSRS -DDOUBLE_WIN -DDOLBY_MDCT -DOLD_PRED_PARAMS -DDRC -DI2R_LOSSLESS -DMPEG4V1 -DSILENCE -DMP4FF -DADTS -DUSELIB_ISOMP4 -DVERSION2


CFLAGS_ENC += -DBSAC

OBJS_MP4_DEC = MP4moviewrapper_dec.o
OBJS_MP4_ENC = MP4moviewrapper_enc.o

TARGETS = sls_enc sls_dec bst_truncation

# enc_tf.o
#OBJS_ENC_TF = $(OBJS_AAC_ENC) enc_tf.o $(OBJS_T2F_ENC) $(OBJS_AAC_QC) $(OBJS_LTP) $(OBJS_PSYCH) $(OBJS_VQ_ENC) $(OBJS_SON_AACPP_ENC) $(OBJS_MOT_QC) $(OBJS_CT_SBR)
#LIBS_ENC_TF = $(LIBS_T2F_ENC) $(LIBS_VQ) $(LIBS_SON_AACPP_ENC)

OBJS_ENC_TF = enc_tf.o $(OBJS_AAC_ENC) $(OBJS_BSAC_ENC) $(OBJS_T2F_ENC)  $(OBJS_AAC_QC) $(OBJS_PSYCH) $(OBJS_VQ_ENC) $(OBJS_SON_AACPP_ENC) $(OBJS_MOT_QC) 
LIBS_ENC_TF = $(LIBS_T2F_ENC) $(LIBS_VQ) $(LIBS_SON_AACPP_ENC)

OBJS_ENC = common.o cmdline.o bitstream_enc.o audio.o austream.o encoder.o $(OBJS_ENC_TF) $(OBJS_MP4_ENC)
LIBS_ENC = $(LIBS_ENC_PAR) $(LIBS_ENC_LPC) $(LIBS_ENC_TF) 

OBJS_DEC = $(OBJS_BSAC_DEC) $(OBJS_AAC_DEC) $(OBJS_MP4_DEC)
LIBS_DEC = $(LIBS_ENC_PAR) $(LIBS_ENC_LPC) $(LIBS_ENC_TF)  

OBJS_BST_Truncation = BstTruncation.o

SRCDIRS_BST_Truncation = ./src_bst_truncation


SRCDIRS_ENC = ./src_enc/ ./src_enc_bsac/ ./src_enc_mp4/ 

SRCDIRS_DEC = ./src_dec/ ./src_dec_bsac/ ./src_dec_mp4/

#OPTIONS_ENC = $(MFLAGS) SRCDIRS="$(SRCDIRS_ENC) $(SRCDIRS_COM)" LIBS="$(LIBS_ENC)" DEFFLAGS="$(DEFFLAGS)" CFLAGS="$(CFLAGS)" INCLDEP=1

OPTIONS_BST_Truncation = SRCDIRS="$(SRCDIRS_BST_Truncation)" INCLDEP=1
OPTIONS_ENC = SRCDIRS="$(SRCDIRS_ENC) $(SRCDIRS_COM)" LIBS="$(LIBS_ENC)" DEFFLAGS="$(DEFFLAGS)" CFLAGS="$(CFLAGS_ENC)" INCLDEP=1
OPTIONS_DEC = SRCDIRS="$(SRCDIRS_DEC) $(SRCDIRS_COM)" LIBS="$(LIBS_DEC)" DEFFLAGS="$(DEFFLAGS_DEC)" CFLAGS="$(CFLAGS_DEC)" INCLDEP=1 

.PHONY: all clean

all: $(TARGETS)

#sls_enc :
#	@$(MAKE) $(OPTIONS) TARGET=$@ OBJS="$(OBJS_ENC)" LIBS="$(LIBS_ENC)" COMLIBS="$(LIBS_COM)" ENCODE=1 binary

sls_enc :
	@$(MAKE) $(OPTIONS_ENC) TARGET=$@ OBJS="$(OBJS_ENC)" LIBS="$(LIBS_ENC)" binary

sls_dec :
	@$(MAKE) $(OPTIONS_DEC) TARGET=$@ OBJS="$(OBJS_DEC)" LIBS="$(LIBS_DEC)" binary

bst_truncation :
	@$(MAKE) $(OPTIONS_BST_Truncation) TARGET=$@ OBJS="$(OBJS_BST_Truncation)" binary

#clean :
#        @$(MAKE) ADDONDIR="$(ADDONDIR)" TARGET=$@   OBJS="$(OBJS_ENC)"  $@
clean :
	@$(MAKE) ADDONDIR="$(ADDONDIR)" TARGET=sls_enc   OBJS="$(OBJS_ENC)" ENCODE=1  $@
	@$(MAKE) ADDONDIR="$(ADDONDIR)" TARGET=sls_dec   OBJS="$(OBJS_DEC)"           $@
	@$(MAKE) ADDONDIR="$(ADDONDIR)" TARGET=bst_truncation   OBJS="$(OBJS_BST_Truncation)"           $@

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