-CFLAGS := -std=gnu99 -ffreestanding $(O) $(OFLAGS) $(W) $(ARCH_OPT)
-LDFLAGS := -ffreestanding $(O) -nostdlib -lgcc
+CFLAGS := $(ARCH_OPT) -std=gnu99 $(OFLAGS) $(W)
+
+ifeq ($(BUILD_MODE),debug)
+ O = -Og
+ CFLAGS += -g
+endif
+
+CFLAGS += $(O) $(STRIP_OSDEP_CC)
+
+LDFLAGS := $(ARCH_OPT) $(O) $(STRIP_OSDEP_LD)