#################################################################################
# makefile template
# lines with # suffix need to be modified for each instance
# with object file directory
#################################################################################

#################config information
                     #pc, arm
PLATFORM = arm
                     #yes, no
NEED_GDB = no
                     #exe, sharelib, staticlib
BUILD = sharelib

#################directory settings
                     #-I./mod1 -I./mod2
INCDIR = -I./hdr/ -I ../dut_hdr -I./../../../ghdr 
                     #source directories
SRCDIR0 = ./src/
SRCDIR1 = #./wrapper/c
SRCDIR2 = 
                     #share object directory: -L/home/chenfei/work/myshareobject
SODIR = -lm
BINDIR = ../bin
OBJDIR = obj
LIB_DIR=./../../../src/MPEG4_dec

#CPYDIR = /nfsroot/xianzhong/home/H264
#CPYDIR = /nfsroot/larry/ROOTFS/home/DecTester

#################target related
                     #target name
NAME = DutDecMPG4-1.7
SUFFIX = 
ifeq ($(BUILD),exe)
BIN =    $(BINDIR)/$(NAME)$(SUFFIX).exe
endif
ifeq ($(BUILD),sharelib)
BIN =    $(BINDIR)/lib$(NAME)$(SUFFIX).so
endif
ifeq ($(BUILD),staticlib)
BIN =    $(BINDIR)/lib$(NAME)$(SUFFIX).a
endif
ifeq ($(BUILD),ARM11LERVDS)
BIN =    $(BINDIR)/lib$(NAME)$(SUFFIX).a
endif
#################program compile options
                     #-DDBG=1
CPL_DEFINE = -D__OPTIMISE_TIME --debug  -O0 -DADS -D_ARM11_=1 -DUSE_ASM=1 -DOS_VRTX  -DVRTXMC -DDPB_FIX -D_FSL_VTS -DOUTPUT_BUFFER_CHANGES
ifeq ($(PLATFORM),arm)
CPL_DEFINE += -DTGT_CPU_ARM11
endif
ifeq ($(PLATFORM),pc)
CPL_DEFINE += -DTGT_CPU_X86
endif

#################compiler options
                     #//-I$(INCDIR)
FLAGS = $(INCDIR)
ifeq ($(BUILD),ARM11LERVDS)
FLAGS +=  -D__USE_LARGEFILE64 -D _FILE_OFFSET_BITS=64
else
FLAGS +=  -ffloat-store -Wall -D__USE_LARGEFILE64 -D _FILE_OFFSET_BITS=64
endif
FLAGS += -w      #suppress warnings
FLAGS += -O3     #optimization level
ifeq ($(NEED_GDB),yes)
FLAGS += -g
endif

#################link options
#ifeq ($(BUILD),exe)
                 #libraries: -l, such as -lm
LIBS = 
#endif

#################compile tools
ifeq ($(PLATFORM),arm)
ifeq ($(BUILD),ARM11LERVDS)
  TOOLS_DIR = /opt/montavista/mobilinux/devkit/arm/v6_vfp_le/bin
  CC = armcc
  AS = armas
  LD = armld		
  AR = armar
else
  TOOLS_DIR = /opt/montavista/mobilinux/devkit/arm/v6_vfp_le/bin
  CC = $(TOOLS_DIR)/arm_v6_vfp_le-gcc
  AS = $(TOOLS_DIR)/arm_v6_vfp_le-as
  LD = $(TOOLS_DIR)/arm_v6_vfp_le-ld		
  AR = $(TOOLS_DIR)/arm_v6_vfp_le-ar
endif 
  
else
  CC = gcc
  AS = as
  LD = ld
  AR = ar
endif

#################generate objectives
SRC0 =   $(wildcard $(SRCDIR0)/*.c)
SRC1 =   $(wildcard $(SRCDIR1)/*.c)
SRC2 =   $(wildcard $(SRCDIR2)/*.c)
OBJ =    $(SRC0:$(SRCDIR0)/%.c=$(OBJDIR)/%.o$(SUFFIX)) $(SRC1:$(SRCDIR1)/%.c=$(OBJDIR)/%.o$(SUFFIX))  \
         $(SRC2:$(SRCDIR2)/%.c=$(OBJDIR)/%.o$(SUFFIX))

#########################  targets start here  ##########################################
all: makedir bin copylib

debug:
	@echo '"$(OBJ)"'

makedir:
	@echo
	@echo "Create directory..."
	mkdir -p $(BINDIR)
	mkdir -p $(OBJDIR)
	@echo

clean:
	@echo remove all objects and bin file
	@rm -f $(OBJDIR)/*
	@rm -f $(BIN)

bin:    $(OBJ)
	@echo
ifeq ($(BUILD), staticlib)
	@echo 'creating static lib "$(BIN)"'
	@$(AR) rc $(BIN) $(OBJ)
endif
ifeq ($(BUILD), ARM11LERVDS)
	@echo 'creating RVDS lib "$(BIN)"'
	@echo '"$(AR)"    "$(BIN)"   "$(OBJ)"'
	@$(AR) -rc $(BIN) $(OBJ) $(LIB_DIR)/lib_MPEG4_dec_arm11_lervds.a
endif

ifeq ($(BUILD), sharelib)
	@echo 'creating share lib "$(BIN)"'
	@$(CC) -s -shared -fPIC -o $(BIN) $(OBJ) $(LIB_DIR)/lib_MPEG4_dec_arm11_elinux.a
endif
ifeq ($(BUILD), exe)
	@echo 'creating exe binary "$(BIN)"'
	@$(CC) -o $(BIN) $(OBJ) $(LIBS) lib_MPEG4_dec_arm11_elinux.a
endif

$(OBJDIR)/%.o$(SUFFIX): $(SRCDIR0)/%.c
	@echo 'compiling object file "$(CC) $@" ...'
	@$(CC) -c -o $@ $(FLAGS) $(CPL_DEFINE) $<
	
$(OBJDIR)/%.o$(SUFFIX): $(SRCDIR1)/%.c
	@echo 'compiling object file "$(CC) $@" ...'
	@$(CC) -c -o $@ $(FLAGS) $(CPL_DEFINE) $<

$(OBJDIR)/%.o$(SUFFIX): $(SRCDIR2)/%.c
	@echo 'compiling object file "$(CC) $@" ...'
	@$(CC) -c -o $@ $(FLAGS) $(CPL_DEFINE) $<

copylib:
	@echo '... done'
	@echo

