# ******************************************************************************
# (C) Automotive-Lighting Reutlingen GmbH  -  ALRT/EEG
#     Tuebinger Strasse 123, 72762 Reutlingen, Germany
# ******************************************************************************

# ------------------------------------------------------------------------------
# file   CustVarBuild_070_Link.gmk
#
# \brief customer variant type build type make linker step
#
# ------------------------------------------------------------------------------

# ------------------------------------------------------------------------------
# Define local tools for converting and extracting symbols from ELF to M51 for RDM.
# ------------------------------------------------------------------------------

AL_ELF_TO_RDM_NAME    = ALElfToRdm.exe
AL_ELF_TO_RDM         = $(PATH_TOOLS_AL)/ALElfToRdm/$(AL_ELF_TO_RDM_NAME)

ifeq ($(OS),Windows_NT)
AL_ELF_TO_RDM_OBJDUMP = $(PATH_TOOLS_AL)/ALElfToRdm/arm-none-eabi-objdump.exe
else
AL_ELF_TO_RDM_OBJDUMP = arm-none-eabi-objdump
endif

# ------------------------------------------------------------------------------
# Link object files for target
# ------------------------------------------------------------------------------

FILES_LD   = $(ENV_MAKE_CUST_VAR)/$(TYP_PRJ)_$(TYP_VAR)_$(TYP_CC)_LinkerScript.$(SUFFIX_LDF)

FILES_LD  := $(FILES_LD) 

LIBPATH    = $(PATH_SRC_TARGET_LINK)/liba/$(TYP_CC)      \
             $(PATH_SRC_THIRD_PARTY)/Src_GLIWA/T1/lib      

RULE_TO_LINK_APPLICATION = $(LD) $(LDFLAGS) $(FILES_LD) $(addprefix -L,$(LIBPATH)) @$(LINK_OBJECTS_FILE) -ldsfxp -o $(FILE_BIN_NAME).$(SUFFIX_ABS) -lt1base -lt1cont -lt1delay -lt1flex -lt1mod -lt1scope             

LinkObjectFiles : $(FILES_TMP_OBJ) $(FILES_LD)
	@$(GNUECHO) +++ linking application: $(FILE_BIN_NAME).$(SUFFIX_ABS)
	@$(GNUECHO) $(RULE_TO_LINK_APPLICATION)
	@-$(RULE_TO_LINK_APPLICATION)
	@-$(GNUECHO) +++ creating hex module: $(FILE_BIN_NAME).$(SUFFIX_HEX)
	@-$(OBJCOPY) -h -hex386 $(FILE_BIN_NAME).$(SUFFIX_ABS) -o $(FILE_BIN_NAME).$(SUFFIX_HEX)
	@-$(GNUECHO) +++ generating map files: $(FILE_BIN_NAME)_MemoryOD.map and $(FILE_BIN_NAME)_MemoryNM.map
	@-$(OBJDUMP) -h $(FILE_BIN_NAME).$(SUFFIX_ABS) > $(FILE_BIN_NAME)_MemoryOD.map
	@-$(NM) -n -S $(FILE_BIN_NAME).$(SUFFIX_ABS) > $(FILE_BIN_NAME)_MemoryNM.map
ifeq ($(TYP_SPECIAL_BUILD_OR_REBUILD),TYP_SPECIAL_BUILD_OR_REBUILD_DEVELOPER)
else
	@-$(GNUECHO) +++ generating assembly list file: $(FILE_BIN_NAME).lss
	@-$(OBJDUMP) -h -S $(FILE_BIN_NAME).$(SUFFIX_ABS) > $(FILE_BIN_NAME).lss
	@-$(GNUECHO) +++ generating object information with readelf: $(FILE_BIN_NAME)_readelf.txt
	@-$(READELF) --all --headers -wip $(FILE_BIN_NAME).$(SUFFIX_ABS) > $(FILE_BIN_NAME)_readelf.txt > NUL  2> NUL
endif
	@-$(GNUECHO) +++ Creating batch file for making RDM symbols $(PATH_BIN_NAME)/$(basename $(AL_ELF_TO_RDM_NAME)).bat
	@if exist $(subst /,\,$(AL_ELF_TO_RDM)) copy $(subst /,\,$(AL_ELF_TO_RDM)) $(subst /,\,$(PATH_BIN_NAME)) > NUL  2> NUL
	@if exist $(subst /,\,$(AL_ELF_TO_RDM_OBJDUMP)) copy $(subst /,\,$(AL_ELF_TO_RDM_OBJDUMP)) $(subst /,\,$(PATH_BIN_NAME)) > NUL  2> NUL
	@$(GNUECHO) cd $(DQUOTE)$(subst /,\\,$(PATH_BIN_NAME))$(DQUOTE)            >  $(subst /,\,$(PATH_BIN_NAME)/$(basename $(AL_ELF_TO_RDM_NAME))).bat
	@$(GNUECHO) $(AL_ELF_TO_RDM_NAME) $(notdir $(FILE_BIN_NAME).$(SUFFIX_ABS)) >> $(subst /,\,$(PATH_BIN_NAME)/$(basename $(AL_ELF_TO_RDM_NAME))).bat
ifeq ($(TYP_SPECIAL_BUILD_OR_REBUILD),TYP_SPECIAL_BUILD_OR_REBUILD_DEVELOPER)
else
ifeq ($(TYP_SPECIAL_BUILD_OR_REBUILD),TYP_SPECIAL_BUILD_OR_REBUILD_DELIVERY)
	@-$(GNUECHO) +++ Creating RDM symbols from $(FILE_BIN_NAME).$(SUFFIX_ABS) to $(FILE_BIN_NAME)_Rdm.m51
	@if exist $(subst /,\,$(PATH_BIN_NAME)/$(basename $(AL_ELF_TO_RDM_NAME))).bat $(subst /,\,$(PATH_BIN_NAME)/$(basename $(AL_ELF_TO_RDM_NAME))).bat
endif
endif
#	@-$(GNUECHO) +++ Creating target link DSFxp library
#	@-$(AR) $(FILES_TARGET_LINK_OBJ) -archive -o $(PATH_TMP_NAME_OBJ)/libdsfxp.a
	@$(GNUECHO) +++ end link
