# ********************************************************************
# Include specifics.
# ********************************************************************

PRJ_DIR         = $(PWD)/../..
PRJ_BIN_DIR		= $(PRJ_DIR)/bin
PRJ_INC_DIR     = $(PRJ_DIR)/src/include

include $(PRJ_BIN_DIR)/$(PRJ).inc


# ********************************************************************
# VARIABLES specifics.
# ********************************************************************
XCC           = sde-gcc

CFLAGS        = -mno-gpopt -gdwarf-2 -O0 -G0 -DEJTAG -nostdlib -EL
CXXFLAGS      = $(CFLAGS) -Wa,--gdwarf2
EXTRACFLAGS   = -Wall -mips1
EXTRACXXFLAGS = $(EXTRACFLAGS) -fno-exceptions 
LDFLAGS       = -nostartfiles -L/lib -I/include -EL
LIBS          = -Tdvrboot.ld 
LD            = $(XCC)
XCXX          = $(XCC)


IMAGE_TARGET  = $(PRJ_BIN_DIR)/tmp/bootrom-new.bin
DRAM_STR      = _$(Board_DRAM_Block)x$(Board_DRAM_Number)
BIN_ARGS      = "BootImage="$(IMAGE_TARGET)

ifeq ($(Logo_Source), FLASH)
  ifeq ($(Logo_Type), NTSC)
    LOGO_TARGET     = $(PRJ_BIN_DIR)/image/$(Logo_File_Name).dat
    LOGO_STR        = _ntsc
  else
    ifeq ($(Logo_Type), PAL)
      LOGO_TARGET   = $(PRJ_BIN_DIR)/image/$(Logo_File_Name).dat
      LOGO_STR      = _pal
    endif
  endif
  BIN_ARGS          += "Logo="$(LOGO_TARGET)
endif

ifeq ($(Logo2_Source), FLASH)
  ifeq ($(Logo2_Type), NTSC)
    LOGO2_TARGET     = $(PRJ_BIN_DIR)/image/$(Logo2_File_Name).dat
    LOGO2_STR        = _ntsc
  else
    ifeq ($(Logo2_Type), PAL)
      LOGO2_TARGET   = $(PRJ_BIN_DIR)/image/$(Logo2_File_Name).dat
      LOGO2_STR      = _pal
    endif
  endif
  BIN_ARGS           += "Logo2="$(LOGO2_TARGET)
endif

ifeq ($(Logo3_Source), FLASH)
  ifeq ($(Logo3_Type), NTSC)
    LOGO3_TARGET     = $(PRJ_BIN_DIR)/image/$(Logo3_File_Name).dat
    LOGO3_STR        = _ntsc
  else
    ifeq ($(Logo3_Type), PAL)
      LOGO3_TARGET   = $(PRJ_BIN_DIR)/image/$(Logo3_File_Name).dat
      LOGO3_STR      = _pal
    endif
  endif
  BIN_ARGS           += "Logo3="$(LOGO3_TARGET)
endif


ifeq ($(Rescue_Source), FLASH)
  LINUX_BK_TARGET = $(PRJ_BIN_DIR)/image/$(Rescue_File_Name)
  RESCUE_STR      = _rsq
  BIN_ARGS        += "RescueLinux="$(LINUX_BK_TARGET)
endif

TARGET            = $(PRJ)$(DRAM_STR)$(LOGO_STR)$(RESCUE_STR).$(Param_companyID).$(Param_boardID).$(Param_version)

# ********************************************************************
# Object specifics.
# ********************************************************************

OBJECTS       = ram_boot.o util.o flashdev_p.o flashdev_s.o dvrmain.o

# ********************************************************************
# RULES specifics.
# ********************************************************************
.PHONY: all clean

all: clean b2a dvrboot

clean:
	-rm -f dvrboot.exe *.o temp ram_boot.S

b2a: $(IMAGE_TARGET)
	./bin2ascii $(BIN_ARGS) > temp
	cat rambootdummy temp > ram_boot.S

dvrboot: $(OBJECTS)
	$(LD) $(LDFLAGS) -e _ram_boot -o $@.exe $(OBJECTS) \
	$(LIBS)
	sde-objcopy -O binary  $@.exe $(TARGET).bin
	sde-objdump -S --disassemble-all $@.exe > $(TARGET).dis
	cp $(TARGET).bin qq.bin


%.o: %.c
	$(XCC) -c -o $*.o $(CFLAGS) $(EXTRACFLAGS) $< -I$(PRJ_INC_DIR)

%.o: %.cxx
	$(XCXX) -c -o $*.o $(CXXFLAGS) $(EXTRACXXFLAGS) $<

%.o: %.C
	$(XCXX) -c -o $*.o $(CXXFLAGS) $(EXTRACXXFLAGS) $<

%.o: %.cc
	$(XCXX) -c -o $*.o $(CXXFLAGS) $(EXTRACXXFLAGS) $<

%.o: %.cpp
	$(XCXX) -c -o $*.o $(CXXFLAGS) $(EXTRACXXFLAGS) $<
	
%.o: %.s
	$(XCXX) -c -o $*.o $(CXXFLAGS) $(EXTRACXXFLAGS) $<

%.o: %.S
	$(XCXX) -c -o $*.o $(CXXFLAGS) $(EXTRACXXFLAGS) $<
