#/**************** MPEG-4 SLS Audio Decoder ***********************************
# *                                                                           *
# *                                                                           *
# ****************************************************************************/

PLTDIR_SOL   = sol
PLTDIR_LINUX = linux

PLTDIR_ALL = $(PLTDIR_SOL) $(PLTDIR_LINUX)

ifeq "$(DEBUG)" "1"
DEBUG_ = d
endif

PLTDIR_ALL_DEL = $(PLTDIR_ALL:%=%*)
ifeq "$(SYSTEM_NAME)" ""
  ifeq "$(OSTYPE)" ""
    SYSTEM_NAME = $(shell uname -s)
  else
    ifeq "$(OSTYPE)" "linux"
      SYSTEM_NAME = Linux
    endif
    ifeq "$(OSTYPE)" "linux-gnu"
      SYSTEM_NAME = Linux
    endif
    ifeq "$(OSTYPE)" "solaris"
      SYSTEM_NAME = Solaris
    endif
  endif
endif
ifeq "$(SYSTEM_NAME)" "Linux6"
  SYSTEM_NAME = Linux
endif
ifeq "$(SYSTEM_NAME)" ""
include error:\ SYSTEM_NAME\ environment\ variable\ not\ defined\ !!!
include Options:\ Linux\ Solaris\ !!!
endif
ifeq "$(SYSTEM_NAME)" "Linux"
PLTDIR = $(PLTDIR_LINUX)
endif
ifeq "$(SYSTEM_NAME)" "Solaris"
PLTDIR = $(PLTDIR_SOL)
endif

ifndef "$(OPTIM_LEV)"
OPTIM_LEV = 0
endif

ifndef "$(USE_AFSP)"
USE_AFSP = 1
endif
ifndef "$(ENABLE_RTPLAY)"
ENABLE_RTPLAY = 0
endif

ifneq "$(ENABLE_RTPLAY)" "0"
USE_AFSP = 0
OUTLIB_PATH_ADD =_RTPlay
endif

ifneq "$(USE_AFSP)" "0"
OUTLIB_PATH_ADD =_AFsp
endif


ifndef "$(DEBUG_MP4LIB)"
DEBUG_MP4LIB = 0
endif
ifndef "$(ISOMP4)"
ISOMP4 = 0
endif
ifneq "$(ISOMP4)" "0"
ISOMP4_PATH_ADD =_isomp4
endif
ifndef "$(I2R_LOSSLESS)"
I2R_LOSSLESS = 1
endif

MP4LIB       = ../mp4lib
PLTVERDIR    = $(PLTDIR)$(OUTLIB_PATH_ADD)$(ISOMP4_PATH_ADD)
PLTVERSYSDIR = $(PLTVERDIR)_O$(OPTIM_LEV)$(DEBUG_)
PLTDIRTAG    = $(PLTVERSYSDIR)/_$(SYSTEM_NAME)_
SRCDIR       = ../../dec
BINDIR       = $(PLTVERSYSDIR)/bin
MP4OBJDIR    = $(PLTVERSYSDIR)/obj_mp4
AACOBJDIR    = $(PLTVERSYSDIR)/obj_aac
CONVOBJDIR   = $(PLTVERSYSDIR)/obj_conv
LIBDIR       = $(PLTVERSYSDIR)/lib

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

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

OBJS_MP4AUDEC_ = adifdec.o decoder.o portio.o mp4dec.o

OBJS_AACDEC_ = $(OBJS_LIB_) adifdec.o decoder.o portio.o mp4dec.o

OBJS_ADIF2MP4_ = adif2mp4.o aac.o adifdec.o

OBJS_MP4AUDEC  = $(OBJS_MP4AUDEC_:%.o=$(MP4OBJDIR)/%.o)
OBJS_AACDEC    = $(OBJS_AACDEC_:%.o=$(AACOBJDIR)/%.o)
OBJS_LIB       = $(OBJS_LIB_:%.o=$(MP4OBJDIR)/%.o) $(MP4_OBJS_LIB_:%.o=$(MP4OBJDIR)/%.o)
OBJS_ADIF2MP4  = $(OBJS_ADIF2MP4_:%.o=$(CONVOBJDIR)/%.o)

MP4_OBJS_ALL = $(OBJS_LIB) $(OBJS_MP4AUDEC)
AAC_OBJS_ALL = $(OBJS_AACDEC)
CONV_OBJS_ALL = $(OBJS_ADIF2MP4)
OBJS_ALL = $(MP4_OBJS_ALL) $(AAC_OBJS_ALL) $(OBJS_ADIF2MP4)

# -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. 

DEFS = -DMPEG4V1 -DUSE_AFSP -DPLOTMTV -DI2R_LOSSLESS

ifeq "$(MAKE_CC)" "insure"
CC      = insure
else
CC      = gcc
endif

LD      = $(CC)
AR      = ar
CFLAGS  += -O$(OPTIM_LEV) -funsigned-char -ansi -pedantic -W -Wall $(DEFS) -I. -I$(SRCDIR)
ifeq "$(DEBUG)" "1"
CFLAGS += -g
LDFLAGS+= -g
endif
ifeq "$(OPTIM_LEV)" "3"
CFLAGS += -funroll-loops
endif

# AMM*PATH the generic search path for all library stuff
# e.g. AMM_INCLUDE_PATH=path1:path2:path3
ifdef AMM_INCLUDE_PATH
CFLAGS += $(addprefix -I,$(subst :, ,$(AMM_INCLUDE_PATH)))
vpath %.h $(AMM_INCLUDE_PATH)
endif
ifdef AMM_LIBRARY_PATH
LDLIBS += $(addprefix -L,$(subst :, ,$(AMM_LIBRARY_PATH)))
vpath %.a $(AMM_LIBRARY_PATH)
endif

LIB_LIST =
ifneq "$(USE_AFSP)" "0"
ifndef AMM_LIBRARY_PATH
  CFLAGS  += -I$(AFSP_INCLUDE_PATH)
  LIB_LIST += $(AFSP_LIBRARY_PATH)/libtsp.a
else
  LDLIBS  += -ltsp
endif
DEFS    += -DUSELIB_AFsp
endif

ifneq "$(ENABLE_RTPLAY)" "0"
ifndef AMM_LIBRARY_PATH
include error:\ AMM_LIBRARY_PATH\ environment\ variable\ not\ defined\ !!!
else
  LDLIBS  += -laudio
  DEFS    += -DENABLE_RTPLAY
endif
endif


MP4SED = sed 's@$*.o@$(MP4OBJDIR)/$*.o $(MP4OBJDIR)/$*.d@g'
AACSED = sed 's@$*.o@$(AACOBJDIR)/$*.o $(AACOBJDIR)/$*.d@g'
CONVSED = sed 's@$*.o@$(CONVOBJDIR)/$*.o $(CONVOBJDIR)/$*.d@g'

ALL_BIN = AAZ_dec

ifeq "$(ISOMP4)" "1"
ALL_BIN += mp4audec_mc adif2mp4
MP4_LIBS = $(LIBDIR)/libisoaac.a
DEFS += -DUSELIB_ISOMP4

CFLAGS  += -I$(MP4LIB)/$(PLTDIR) -I$(MP4LIB)/src

ifeq "$(DEBUG_MP4LIB)" "0" 
  ifndef AMM_LIBRARY_PATH  
    MP4_LIBS += $(MP4LIB)/$(PLTDIR)/libisomp4/libisomp4.a
 else
    LDLIBS  += -lisomp4
  endif
else
MP4_LIBS += $(MP4LIB)/$(PLTDIR)/libisomp4_debug/libisomp4.a
endif
endif

LINK =  @echo building $@ ... && $(LD) $(LDFLAGS) -o $@ $^ -lm $(LDLIBS)

MP4_DEPS_ALL = $(MP4_OBJS_ALL:%.o=%.d)
AAC_DEPS_ALL = $(AAC_OBJS_ALL:%.o=%.d)
CONV_DEPS_ALL = $(CONV_OBJS_ALL:%.o=%.d)
DEPS_ALL = $(MP4_DEPS_ALL) $(AAC_DEPS_ALL)

.PHONY: all allafsp makedirs $(ALL_BIN) clean cleanafsp clobber clobber_allsys

all: $(ALL_BIN)     

allafsp:
	$(MAKE) USE_AFSP=0 all
	$(MAKE) USE_AFSP=1 all

$(PLTDIRTAG) :
	@echo "*****" making directories
	-mkdir -p $(MP4OBJDIR)
	-mkdir -p $(AACOBJDIR)
	-mkdir -p $(CONVOBJDIR)
	-mkdir -p $(LIBDIR)
	-mkdir -p $(BINDIR)
	touch $@

makedirs : $(PLTDIRTAG)

$(MP4_OBJS_ALL): $(MP4OBJDIR)/%.o: $(SRCDIR)/%.c $(MP4OBJDIR)/%.d
	@echo making $@ ... 
	@$(CC) -c $(CFLAGS) -DMPEG4V1 $< -o $@

$(AAC_OBJS_ALL): $(AACOBJDIR)/%.o: $(SRCDIR)/%.c $(AACOBJDIR)/%.d
	@echo making $@ ...
	@$(CC) -c $(CFLAGS) $< -o $@

$(CONV_OBJS_ALL): $(CONVOBJDIR)/%.o: $(SRCDIR)/%.c $(CONVOBJDIR)/%.d
	@echo making $@ ...
	@$(CC) -c $(CFLAGS) -DMPEG4V1 -DADIF2MP4 $< -o $@

$(MP4_DEPS_ALL): $(PLTDIRTAG)
$(MP4_DEPS_ALL): $(MP4OBJDIR)/%.d: $(SRCDIR)/%.c
	@echo making $@ ...
	@$(CC) -MM $(CFLAGS) $< | $(MP4SED) > $@

$(AAC_DEPS_ALL): $(PLTDIRTAG)
$(AAC_DEPS_ALL): $(AACOBJDIR)/%.d: $(SRCDIR)/%.c
	@echo making $@ ...
	@$(CC) -MM $(CFLAGS) $< | $(AACSED) > $@

$(CONV_DEPS_ALL): $(PLTDIRTAG)
$(CONV_DEPS_ALL): $(CONVOBJDIR)/%.d: $(SRCDIR)/%.c
	@echo making $@ ...
	@$(CC) -MM $(CFLAGS) $< | $(CONVSED) > $@

ifeq "$(INCLDEP)" "1"
-include $(MP4OBJDIR)/*.d
-include $(AACOBJDIR)/*.d
-include $(CONVOBJDIR)/*.d
endif

$(ALL_BIN):
	@$(MAKE) INCLDEP=1 USE_AFSP=$(USE_AFSP) $(BINDIR)/$@

$(BINDIR)/mp4audec_mc: $(OBJS_MP4AUDEC) $(MP4_LIBS) $(LIB_LIST)
	$(LINK)

$(BINDIR)/AAZ_dec: $(OBJS_AACDEC) $(LIB_LIST)
	$(LINK)

libisoaac.a: $(OBJS_LIB)
	@$(MAKE) INCLDEP=1 USE_AFSP=$(USE_AFSP) $(LIBDIR)/$@

$(LIBDIR)/libisoaac.a: $(OBJS_LIB)
	@echo building $@ ...
	@$(AR) -r $@ $^

ifeq "$(ISOMP4)" "1"

$(BINDIR)/adif2mp4: $(OBJS_ADIF2MP4) $(MP4_LIBS)
	$(LINK)

endif

clean: 
	@echo DEFS="$(DEFS)" 
	rm -f $(MP4OBJDIR)/* $(AACOBJDIR)/* $(CONVOBJDIR)/*

cleanafsp:
	$(MAKE) USE_AFSP=0 clean
	$(MAKE) USE_AFSP=1 clean

clobber:
	rm -rf $(PLTVERSYSDIR)

clobberafsp:
	$(MAKE) USE_AFSP=0 clobber
	$(MAKE) USE_AFSP=1 clobber

clobber_allsys:
	rm -rf $(PLTDIR_ALL_DEL)




