# ******************************************************************************
# (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)

LIBPATH    =

ifeq ($(TYP_CC),ARM_GCC)

LinkObjectFiles : $(FILES_TMP_OBJ) $(FILES_LD)
	@$(GNUECHO) +++ linking application: $(FILE_BIN_NAME).$(SUFFIX_ABS)
	@-$(LD) $(LDFLAGS) $(FILES_TMP_OBJ) -Wl,-T$(FILES_LD),-Map,$(FILE_BIN_NAME).map -o $(FILE_BIN_NAME).$(SUFFIX_ABS)
	@-$(GNUECHO) +++ creating hex module: $(FILE_BIN_NAME).$(SUFFIX_HEX)
	@-$(OBJCOPY) -O ihex $(FILE_BIN_NAME).$(SUFFIX_ABS) $(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
	@-$(GNUECHO) +++ generating assembly list file: $(FILE_BIN_NAME).lss
	@-$(OBJDUMP) -h -S $(FILE_BIN_NAME).$(SUFFIX_ABS) > $(FILE_BIN_NAME).lss
	@$(GNUECHO) +++ end link

endif

ifeq ($(TYP_CC),ARM_AXN)

LinkObjectFiles : $(FILES_TMP_OBJ) $(FILES_LD)
	@$(GNUECHO) +++ linking application to AXIVION *.ir-file: $(FILE_BIN_NAME).$(SUFFIX_ABS)
	@-$(LD) $(LDFLAGS) $(FILES_TMP_OBJ) -Wl,-T$(FILES_LD),-Map,$(FILE_BIN_NAME).map -o $(FILE_BIN_NAME).$(SUFFIX_ABS)
	@-$(GNUECHO) +++ creating hex module: $(FILE_BIN_NAME).$(SUFFIX_HEX)
	@-$(GNUECHO) +++ creating hex module: disabled for AXIVION
	@-$(GNUECHO) +++ generating map files: $(FILE_BIN_NAME)_MemoryOD.map and $(FILE_BIN_NAME)_MemoryNM.map
	@-$(GNUECHO) +++ generating map files: disabled for AXIVION
	@-$(GNUECHO) +++ generating assembly list file: $(FILE_BIN_NAME).lss
	@-$(GNUECHO) +++ generating assembly list file: disabled for AXIVION
	@$(GNUECHO) +++ Dump content of AXIVION *.ir-file: $(FILE_BIN_NAME).$(SUFFIX_ABS)
	@-$(IRDUMP) -m $(FILE_BIN_NAME).$(SUFFIX_ABS)
	@$(GNUECHO) +++ end link

endif
