-CC = $(CROSS_COMPILE)gcc
-CXX = $(CROSS_COMPILE)g++
-LINK = $(CROSS_COMPILE)ld
-AR = $(CROSS_COMPILE)ar
-OBJCOPY = $(CROSS_COMPILE)objcopy
-NM = $(CROSS_COMPILE)nm
+CROSS_COMPILE ?= $$(CROSSDEV)
+
+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
+
+NUTTXLIBES += $$(LDSTARTGROUP) $$(LDLIBS) $$(EXTRA_LIBS) $$(LDENDGROUP)
+NUTTXREGISTRY += $$(NUTTX_EXPORT)/registry
+
+TARGET_ARCH += $$(ARCHCFLAGS) $$(ARCHCPUFLAGS)
+
+OPTIMIZE ?= $$(ARCHOPTIMIZATION)
+
+CFLAGS += $$(ARCHWARNINGS)
+CXXFLAGS += $$(ARCHCXXFLAGS)
+CXXFLAGS += $$(ARCHWARNINGSXX)
+DEFAULT_INCLUDES = -isystem $$(NUTTX_EXPORT)/include
+INCLUDES +=