-$(1)_CC = $$($(1)_CROSS)$$(CC)
-$(1)_CXX = $$($(1)_CROSS)$$(CXX)
-$(1)_AS = $$($(1)_CROSS)$$(AS)
-$(1)_OBJCOPY = $$($(1)_CROSS)$$(OBJCOPY)
-$(1)_STRIP = $$($(1)_CROSS)$$(STRIP)
+# Debug stuff
+ifeq ($$($(1)_DEBUG),1)
+ # AVR is an harvard processor
+ # and needs debug module
+ # to be compiled in program memory
+ ifeq ($$(findstring avr, $$($(1)_PREFIX)),avr)
+ $(1)_DEBUGSRC = $(1)_PCSRC
+ else
+ $(1)_DEBUGSRC = $(1)_CSRC
+ endif
+
+ $$($(1)_DEBUGSRC) += bertos/drv/kdebug.c
+
+ # Also add formatwr.c (printf) if not already present
+ ifneq ($$(findstring formatwr.c, $$($$($(1)_DEBUGSRC))),formatwr.c)
+ $$($(1)_DEBUGSRC) += bertos/mware/formatwr.c
+ endif
+
+ # Also add hex.c (for printf) if not already present
+ ifneq ($$(findstring hex.c, $$($$($(1)_CSRC))),hex.c)
+ $$($(1)_CSRC) += bertos/mware/hex.c
+ endif
+
+ $(1)_CFLAGS += -D_DEBUG
+ $(1)_CXXFLAGS += -D_DEBUG
+else
+ $(1)_CFLAGS += -fomit-frame-pointer
+ $(1)_CXXFLAGS += -fomit-frame-pointer
+endif