#*****************************************************************************
#
# wma_pro_dec Test App Makefile
#
#*****************************************************************************
CODEC=wma10_dec

include ../../build/Makefile_test.init

INCLUDES += -I../../ghdr/$(CODEC) -I./hdr -I../../src/$(CODEC)/hdr

ifeq ($(TGT_OS),ELINUX)
 ifeq ($(TGT_CPU),ARM11)
    	ifeq ($(ALSA_TEST),1)
		CFLAGS += -DALSA
		LIBRARY += ../../common/lib/libasound.so
	endif

#	CFLAGS  +=  -DLOG_TIMING=1
 endif
endif

ifeq ($(TGT_CPU),ARM12)
    CFLAGS += -D_ARM12
endif

ifeq ($(TGT_OS),VRTX)

CFLAGS  += -D_DEBUG -DBUILD_INTEGER -D_CONSOLE -DENABLE_LPC -DENABLE_ALL_ENCOPT -DDISABLE_OPT -DBITSTREAM_CORRUPTION_ASSERTS -DWMA_DECPK_BUILD -DWMAAPI_NO_DRM -DWMAAPI_NO_DRM_STREAM -DDISABLE_UES -D_CRT_NON_CONFORMING_SWPRINTFS -D_CRT_SECURE_NO_DEPRECATE
AFLAGS += --debug --keep  --apcs=inter --memaccess=-UL41
LFLAGS += --be32 --ro_base=0x90000000

endif

ifeq ($(RAWDECODE),1)
ASF_LIB_FOLDER = /vobs/multimedia_layer/parsers/asf/lib
INCLUDES += -I$(ASF_LIB_FOLDER)/inc

C_OBJS = $(APP_DIR)/wma10_rawdec_test.o
else
#C_OBJS = $(APP_DIR)/wma10_app_test.o
C_OBJS = $(APP_DIR)/wma10_app_test_gst_api.o
endif
C_OBJS += $(APP_DIR)/wavfileexio.o

ifeq ($(TGT_OS),LERVDS)
 ifeq ($(TIME_PROFILE),1)
  C_OBJS += ../../common/c_src/profile_utils.o
 endif
 ifeq ($(MX353DS_STANDALONE),1)
	    AFLAGS += --PD "MX353DS SETL {TRUE}"
	    CFLAGS += --arm --no_unaligned_access --enum_is_int
	    LFLAGS += --scatter ../../common/asm_arm/mx35/scat_a.txt --entry 0x80080000
	    ifeq ($(LEVEL2_PAGE),1)
	    	AFLAGS += --PD "L2_TTB SETL {TRUE}"
	    endif
	    C_OBJS += ../../common/c_src/retarget.o
            ASM_OBJS += ../../common/asm_arm/mx35/initmmu.o
	    ASM_OBJS += ../../common/asm_arm/mx35/ttb.o
 endif
	ifeq ($(MX31ADS_STANDALONE),1)
	    AFLAGS += --PD "MX31ADS SETL {TRUE}"
	    CFLAGS += --arm --no_unaligned_access --enum_is_int
	    LFLAGS += --scatter ../../common/asm_arm/mx31/scat_a.txt --entry 0x80080000
	    ifeq ($(LEVEL2_PAGE),1)
	    	AFLAGS += --PD "L2_TTB SETL {TRUE}"
	    endif
	    C_OBJS += ../../common/c_src/retarget.o
            ASM_OBJS += ../../common/asm_arm/mx31/initmmu.o
	    ASM_OBJS += ../../common/asm_arm/mx31/ttb.o
	endif

	LFLAGS +=  --info sizes,totals --info libraries --info unused --symbols --map --list ./wma10_dec_arm.map

 endif

ifeq ($(TGT_OS),VRTX)

C_OBJS +=

ASM_OBJS =
ASM_OBJS +=

endif

ifeq ($(TGT_OS),ELINUX)
ifeq ($(TIME_PROFILE),1)
		CFLAGS += -DTIME_PROFILE -DTEST_PERFORMANCE  -DDISCARD_OUTPUT
		#CFLAGS += -DMEASURE_STACK_USAGE -DMEASURE_HEAP_USAGE
	endif
	CFLAGS  +=  -g -DBUILD_ELINUX -DLOG_TIMING #-D_PRINT_ALLOC_ -DPRINTF_QUERY -D_PRINT_ #-DDISCARD_OUTPUT -DMICROSOFT_API
    LFLAGS += -Wl,-Map,./wma10_dec_elinux.map
endif

ifeq ($(BUILD),UNIX)
	CFLAGS  += -g -DUNIX
endif

ifeq ($(BUILD),ARM9LERVDS)
	CFLAGS  +=  -DARM_BUILD -DBIG_ENDIAN=0 -DLITTLE_ENDIAN=1 -DRVDS_BUILD

	CFLAGS   += -g  -fy  --loose_implicit_cast  #-Wabdfrvy #--inline --autoinline --forceinline

    	ifeq ($(TIME_PROFILE),1)
		CFLAGS += -DTIME_PROFILE_RVDS -DTEST_PERFORMANCE -DDISCARD_OUTPUT
		#CFLAGS += -DMEASURE_STACK_USAGE -DMEASURE_HEAP_USAGE
	endif

endif

ifeq ($(BUILD),ARM11LERVDS)
	CFLAGS  +=  -DARM_BUILD -DBIG_ENDIAN=0 -DLITTLE_ENDIAN=1 -DRVDS_BUILD

	CFLAGS   += -g  -fy  --loose_implicit_cast  #-Wabdfrvy #--inline --autoinline --forceinline

    	ifeq ($(TIME_PROFILE),1)
		CFLAGS += -DTIME_PROFILE_RVDS -DTEST_PERFORMANCE -DDISCARD_OUTPUT
		#CFLAGS += -DMEASURE_STACK_USAGE -DMEASURE_HEAP_USAGE
	endif

endif
ifeq ($(BUILD),ARM12LERVDS)
	CFLAGS  +=  -DARM_BUILD -DBIG_ENDIAN=0 -DLITTLE_ENDIAN=1 -DRVDS_BUILD

	CFLAGS   += -g  -fy  --loose_implicit_cast  -O3 #-Wabdfrvy #--inline --autoinline --forceinline

    	ifeq ($(TIME_PROFILE),1)
		CFLAGS += -DTIME_PROFILE_RVDS -DTEST_PERFORMANCE -DDISCARD_OUTPUT
		#CFLAGS += -DMEASURE_STACK_USAGE -DMEASURE_HEAP_USAGE
	endif

	CFLAGS  +=  -DTEST_PERFORMANCE -DxDISCARD_OUTPUT -DxARRAY_INPUT -DxWMA44K_192KBPS -DxWMA44K_320KBPS -DxWMA48K_128KBPS -DxWMA44K_32KBPS -DWMA22K_22KBPS
	LFLAGS += --map --symbols
	CFLAGS += -DMEASURE_STACK_USAGE  -DMEASURE_HEAP_USAGE #-DTIME_PROFILE_RVDS #for peak stack measurement
endif

ifeq ($(BUILD),ARM11BERVDS)
	CFLAGS  +=

	ifeq ($(TGT_ENDIAN),BIG)
		CFLAGS  +=  -DENABLE_BIG_ENDIAN
	endif

	CFLAGS   += -g  -fy  --loose_implicit_cast  #-Wabdfrvy #--inline --autoinline --forceinline
endif

ifeq ($(RAWDECODE),1)
	CFLAGS += -D_LINUX_  -DRAW_DECODER #-DASF_DEBUG


ifeq ($(BUILD),UNIX)
	CODEC_LIBRARY   = lib_wma10_dec_x86_unix.a
	PARSER_LIBARY   = libasf_parser_UNIX.a
	DRM_LIBRARY     = libwmdrm-stub_UNIX.so
	PARSER_LIB	=$(ASF_LIB_FOLDER)/$(PARSER_LIBARY)
	DRM_LIB         =$(ASF_LIB_FOLDER)/drm/$(DRM_LIBRARY)
else

ifeq ($(TIME_PROFILE),1)
CFLAGS += -DTEST_SPEED
endif
	CODEC_LIBRARY   = lib_wma10_dec_arm11_elinux.so
	PARSER_LIBARY   = libasf_parser_arm11_ELINUX.so
	DRM_LIBRARY     = libwmdrm-stub_arm11_ELINUX.so
	PARSER_LIB	=$(ASF_LIB_FOLDER)/$(PARSER_LIBARY)
	DRM_LIB         =$(ASF_LIB_FOLDER)/drm/$(DRM_LIBRARY)
endif
endif
ALL_OBJS = $(C_OBJS) $(ASM_OBJS)

ifneq   ($(TGT_OS), ELINUX)
ifeq ($(TGT_CPU), ARM12)
#ALL_OBJS +=init.o initcache.o vectors.o retarget.o
  ALL_OBJS += ../../common/c_src/retarget_Cortex.o
  ALL_OBJS += ../../common/asm_arm/Init_Cortex.o
  ALL_OBJS += ../../common/asm_arm/InitCache_Cortex.o
  ALL_OBJS += ../../common/asm_arm/Vectors.o
endif
endif

all: LIBRARY_COPY TEST_$(TGT_CPU)_$(TGT_OS)
	@echo "--- Build-all done for library $(CODEC) ---"

LIBRARY_COPY:
ifndef DBG
 ifeq ($(LIB_TYPE),STATIC)
	cp $(LIB_DIR)/lib_$(CODEC)_$(TGT_CPU_BIN)_$(TGT_OS_BIN).a  ./
 else
	cp $(LIB_DIR)/lib_$(CODEC)_$(TGT_CPU_BIN)_$(TGT_OS_BIN).so ./
 endif
endif


#Build the library
TEST_ARM12_LERVDS:	$(ALL_OBJS) $(LIBRARY)
		$(LN) -o $(PROGRAM) $(LFLAGS) $(ALL_OBJS) $(LIBRARY)
TEST_ARM11_LERVDS:	$(ALL_OBJS) $(LIBRARY)
		$(LN) -o $(PROGRAM) $(LFLAGS) $(ALL_OBJS) $(LIBRARY)
TEST_ARM9_LERVDS:	$(ALL_OBJS) $(LIBRARY)
		$(LN) --feedback unused.txt -o $(PROGRAM) $(LFLAGS) $(ALL_OBJS) $(LIBRARY)

TEST_ARM11_BERVDS:	$(ALL_OBJS) $(LIBRARY)
		$(LN) -o $(PROGRAM) $(LFLAGS) $(ALL_OBJS) $(LIBRARY)

TEST_ARM11_VRTX:
	@echo "--- Build not supporting for library $(CODEC) ---"w

ifneq ($(RAWDECODE),1)
TEST_ARM11_ELINUX: $(ALL_OBJS) $(subst $(LIB_DIR)/,,$(LIBRARY))
		$(LN) -Wl,-x -o $(PROGRAM) $(LFLAGS) $(ALL_OBJS) $(subst $(LIB_DIR)/,,$(LIBRARY))
TEST_ARM12_ELINUX: $(ALL_OBJS) $(subst $(LIB_DIR)/,,$(LIBRARY))
		$(LN) -Wl,-x -o $(PROGRAM) $(LFLAGS) $(ALL_OBJS) $(subst $(LIB_DIR)/,,$(LIBRARY))
else
TEST_ARM11_ELINUX: $(ALL_OBJS) $(LIBRARY) $(PARSER_LIB) $(DRM_LIB)
		cp $(LIBRARY) .
		cp $(PARSER_LIB) .
		cp $(DRM_LIB) .
		$(LN) -Wl, -x  -o $(PROGRAM) $(LFLAGS)  $(ALL_OBJS)  ./$(DRM_LIBRARY) ./$(PARSER_LIBARY)  ./$(CODEC_LIBRARY)  -lgcc -lm
TEST_ARM12_ELINUX: $(ALL_OBJS) $(LIBRARY) $(PARSER_LIB) $(DRM_LIB)
		cp $(LIBRARY) .
		cp $(PARSER_LIB) .
		cp $(DRM_LIB) .
		$(LN) -Wl, -x  -o $(PROGRAM) $(LFLAGS)  $(ALL_OBJS)  ./$(DRM_LIBRARY) ./$(PARSER_LIBARY)  ./$(CODEC_LIBRARY)  -lgcc -lm
endif


TEST_ARM9_ELINUX: $(ALL_OBJS) $(subst ../../src/$(CODEC)/,,$(LIBRARY))
		$(LN) -Wl,-x -o $(PROGRAM) $(LFLAGS) $(ALL_OBJS)$(subst ../../src/$(CODEC)/,,$(LIBRARY))


ifneq ($(RAWDECODE),1)
TEST_X86_UNIX	:$(ALL_OBJS) $(LIBRARY)
		$(LN) -o $(PROGRAM) $(LFLAGS) $(ALL_OBJS) $(LIBRARY)
else

TEST_X86_UNIX	:$(ALL_OBJS) $(LIBRARY) $(PARSER_LIB) $(DRM_LIB)
		cp $(LIBRARY) .
		cp $(PARSER_LIB) .
		cp $(DRM_LIB) .
		$(LN)  -o $(PROGRAM) $(LFLAGS)  $(ALL_OBJS)  ./$(DRM_LIBRARY) ./$(PARSER_LIBARY)  ./$(CODEC_LIBRARY)  -lgcc -lm
endif


%.o: %.c
	$(CC) -W $(CFLAGS) $(INCLUDES)  -c  -o $@ $<

%.o: %.s
	$(AS) $(AFLAGS) -o $@ $<


clean:
	rm -f $(ALL_OBJS) $(PROGRAM) *.map





