
# ********************************************************************
# Directories specifics.
# ********************************************************************

VERSION        = $(Param_companyID).$(Param_boardID).$(Param_version)

RESET_DIS      = $(TMP_DIR)/reset-$(VERSION).dis
RESET_ELF      = $(TMP_DIR)/reset-$(VERSION).elf
RESET_MAP      = $(TMP_DIR)/reset-$(VERSION).map
RESET_REC      = $(TMP_DIR)/reset-$(VERSION).rec

BOOTROM_EL_DIS = $(TMP_DIR)/bootrom_el-$(VERSION).dis
BOOTROM_EL_ELF = $(TMP_DIR)/bootrom_el-$(VERSION).elf
BOOTROM_EL_MAP = $(TMP_DIR)/bootrom_el-$(VERSION).map
BOOTROM_EL_REC = $(TMP_DIR)/bootrom_el-$(VERSION).rec

BOOTROM     = bootrom-$(VERSION)
BOOTROM_BIN = $(TMP_DIR)/bootrom-$(VERSION).bin
BOOTROM_REC = $(TMP_DIR)/bootrom-$(VERSION).rec
BOOTROM_NEW = bootrom-new.bin

LINKOUT_FMAT   = -oformat elf32-littlemips

RESET_OBJ           = reset.o
RESET_LINK_SCRIPT   = link.xn

ALL_OBJ             = $(notdir $(wildcard $(OBJ_DIR)/*.o))
BOOTROM_OBJ         = $(filter-out $(RESET_OBJ), $(ALL_OBJ))
BOOTROM_LINK_SCRIPT = link_el.xn


CONFIGCONV_SCRIPT   = configconv.pl
SRECCONV_SCRIPT     = srecconv.pl
SRECCONV_OPTS       = -ES B -EB B -A 29

LOGO_CHANGER_DIR    = $(TOOLS_DIR)/logo_changer
LOGO_CHANGER        = $(LOGO_CHANGER_DIR)/logo_changer.exe
LOGO_BMP_PATH       = $(IMAGE_DIR)/$(Logo_File_Name)
LOGO_DAT_PATH       = $(IMAGE_DIR)/$(Logo_File_Name).dat
LOGO_INF_PATH       = $(IMAGE_DIR)/$(Logo_File_Name).inf

LOGO2_BMP_PATH      = $(IMAGE_DIR)/$(Logo2_File_Name)
LOGO2_DAT_PATH      = $(IMAGE_DIR)/$(Logo2_File_Name).dat
LOGO2_INF_PATH      = $(IMAGE_DIR)/$(Logo2_File_Name).inf

LOGO3_BMP_PATH      = $(IMAGE_DIR)/$(Logo3_File_Name)
LOGO3_DAT_PATH      = $(IMAGE_DIR)/$(Logo3_File_Name).dat
LOGO3_INF_PATH      = $(IMAGE_DIR)/$(Logo3_File_Name).inf

# ********************************************************************
# make selection specifics.
# ********************************************************************

prj: clean configconv modules int dis flash_image 


clean:
	$(RM) $(OBJ_DIR)/* $(TMP_DIR)/*


configconv: logo1 logo2 logo3
	$(PERL) $(SCRIPT_DIR)/$(CONFIGCONV_SCRIPT) \
		$(INCLUDE_DIR)/project_config.h \
		$(BIN_DIR)/$(PRJ).inc \
		$(IMAGE_DIR)/$(Logo_File_Name).inf \
		$(IMAGE_DIR)/$(Logo2_File_Name).inf \
		$(IMAGE_DIR)/$(Logo3_File_Name).inf 

logo1: 
	$(LOGO_CHANGER) $(LOGO_BMP_PATH) $(LOGO_DAT_PATH) $(LOGO_INF_PATH)

logo2: 
	$(LOGO_CHANGER) $(LOGO2_BMP_PATH) $(LOGO2_DAT_PATH) $(LOGO2_INF_PATH)

logo3: 
	$(LOGO_CHANGER) $(LOGO3_BMP_PATH) $(LOGO3_DAT_PATH) $(LOGO3_INF_PATH)


modules: \
	LIB \
	LZMA \
	PLATFORM \
	ENV \
	IO \
	LOGO_DISP \
	MAIN \
	NET \
	SHELL \
	SHELL_PROD \
	COMMANDS \
	SYSCON \
	SYSENV \
	ETH \
	FLASH \
	IDE \
	ISO9660 \
	RS232 \
	RTC \
	TIMER \
	VFD \
	GPIO \
	FS \
	USB


int:
	$(CD) $(OBJ_DIR); \
		$(LD) -T $(LINK_DIR)/$(RESET_LINK_SCRIPT) -o $(RESET_ELF) -Map $(RESET_MAP) $(LINKOUT_FMAT) $(RESET_OBJ)
	$(OBJCOPY) -O srec $(RESET_ELF) $(RESET_REC)
	
	$(OBJCOPY) --add-section .patternimg=$(IMAGE_DIR)/pattern.img $(OBJ_DIR)/bootload.o
	$(OBJCOPY) --add-section .isrvideoimg=$(IMAGE_DIR)/isr_video.img $(OBJ_DIR)/bootload.o
	$(OBJCOPY) --add-section .rosbootvectorimg=$(IMAGE_DIR)/ros_bootvector.img $(OBJ_DIR)/bootload.o
	$(OBJCOPY) --add-section .start_patternimg=$(IMAGE_DIR)/start_pattern.img $(OBJ_DIR)/bootload.o
	
	$(CD) $(OBJ_DIR); \
		$(LD) -T $(LINK_DIR)/$(BOOTROM_LINK_SCRIPT) -o $(BOOTROM_EL_ELF) -Map $(BOOTROM_EL_MAP) $(LINKOUT_FMAT) $(BOOTROM_OBJ)
	$(OBJCOPY) -O srec $(BOOTROM_EL_ELF) $(BOOTROM_EL_REC)
	
	$(CAT) $(IMAGE_DIR)/tmp_little $(RESET_REC) $(IMAGE_DIR)/tmp_little $(BOOTROM_EL_REC) > $(BOOTROM_REC)
	$(CD) $(TMP_DIR);\
		$(PERL) $(SCRIPT_DIR)/$(SRECCONV_SCRIPT) $(SRECCONV_OPTS) ./$(BOOTROM);\
		$(CP) $(BOOTROM_BIN) $(BOOTROM_NEW)


dis:
	$(OBJDUMP) -S --disassemble-all $(RESET_ELF) > $(RESET_DIS)
	$(OBJDUMP) -S --disassemble-all $(BOOTROM_EL_ELF) > $(BOOTROM_EL_DIS)


flash_image:
	$(CD) $(FLASH_IMAGE_MAKER_DIR);\
	make PRJ=$(PRJ) clean;\
	make PRJ=$(PRJ) b2a;\
	make PRJ=$(PRJ) dvrboot








# ********************************************************************
# Include specifics.
# ********************************************************************
include general.inc
include apps.inc
include drivers.inc
include platform.inc
include users.inc

include $(PRJ).inc
