-OFLAGS := -fno-gcse\
- -fno-gcse-lm\
- -fno-cse-follow-jumps\
- -fno-cse-skip-blocks\
- -fno-optimize-strlen\
- -fno-inline-functions-called-once \
- -fno-inline-functions \
- -fno-inline-small-functions \
- -fno-indirect-inlining
-
-CFLAGS := -std=gnu99 -ffreestanding $(O) $(OFLAGS) $(W) $(ARCH_OPT)
-LDFLAGS := -ffreestanding $(O) -nostdlib -lgcc
+OFLAGS := -fno-omit-frame-pointer \
+ -finline-small-functions
+
+CFLAGS := -std=gnu99 $(OFLAGS) $(W) -g
+
+ifeq ($(MODE),debug)
+ O := -Og
+else
+ O := -O2
+endif
+
+CFLAGS += $(O)
+
+LDFLAGS := $(O)