-CC = $(CROSS_COMPILE)gcc
-CXX = $(CROSS_COMPILE)g++
-LINK = $(CROSS_COMPILE)ld
-LD = $(CROSS_COMPILE)ld
-AR = $(CROSS_COMPILE)ar
-OBJCOPY = $(CROSS_COMPILE)objcopy
-NM = $(CROSS_COMPILE)nm
+CC ?= $$(CROSS_COMPILE)gcc
+CXX ?= $$(CROSS_COMPILE)g++
+LD ?= $$(CROSS_COMPILE)ld
+ifneq ($$(filter -Wl%, $$(NXFLATLDFLAGS1)$$(NXFLATLDFLAGS2)$$(LDFLAGS)),)
+CC_LD_OPTION = -Wl,
+LD_OPTION_SEP := ,
+LD_BY_CC := 1
+LD_RAW ?= $$(CROSS_COMPILE)ld
+endif
+LD_RAW ?= $$(LD)
+AR ?= $$(CROSS_COMPILE)ar
+OBJCOPY ?= $$(CROSS_COMPILE)objcopy
+NM ?= $$(CROSS_COMPILE)nm
+
+ifeq ($$(LDSTARTGROUP),)
+LDSTARTGROUP = $$(CC_LD_OPTION)--start-group
+LDENDGROUP = $$(CC_LD_OPTION)--end-group
+endif