Restructure and refactor makefiles
- Allow rebuilds without rebuilding everything By detecting changes everywhere that matters (flags, objects and headers). - Add progress bar - Fully clean everything when clean goal is used
This commit is contained in:
@@ -5,12 +5,16 @@ endif
|
||||
include $(DEVKITARM)/base_rules
|
||||
|
||||
TARGET := libsys_minerva
|
||||
BUILD := ../../build/$(TARGET)
|
||||
OUTPUT := ../../output
|
||||
BUILDDIR := ../../build/$(TARGET)
|
||||
OUTPUTDIR := ../../output
|
||||
BDKDIR := bdk
|
||||
BDKINC := -I../../$(BDKDIR)
|
||||
|
||||
OBJS = $(addprefix $(BUILD)/,\
|
||||
# Track compiler flags
|
||||
TRACK_CFLAGS = $(BUILDDIR)/.cflags
|
||||
TRACK_LDFLAGS = $(BUILDDIR)/.ldflags
|
||||
|
||||
OBJS = $(addprefix $(BUILDDIR)/,\
|
||||
sys_sdrammtc.o \
|
||||
)
|
||||
|
||||
@@ -18,17 +22,21 @@ ARCH := -march=armv4t -mtune=arm7tdmi -mthumb-interwork
|
||||
CFLAGS = $(ARCH) -O2 -nostdlib -fpie -ffunction-sections -fdata-sections -fomit-frame-pointer -std=gnu11 -Wall -Wsign-compare $(CUSTOMDEFINES)
|
||||
LDFLAGS = $(ARCH) -fpie -pie -nostartfiles -lgcc
|
||||
|
||||
.PHONY: clean all
|
||||
.PHONY: all
|
||||
|
||||
all: $(TARGET).bso
|
||||
$(BUILD)/%.o: ./%.c
|
||||
@mkdir -p "$(BUILD)"
|
||||
@$(CC) $(CFLAGS) $(BDKINC) -c $< -o $@
|
||||
$(BUILDDIR)/%.o: ./%.c $(TRACK_CFLAGS)
|
||||
@mkdir -p "$(BUILDDIR)"
|
||||
@$(CC) $(CFLAGS) $(BDKINC) -MMD -MP -c $< -o $@
|
||||
|
||||
$(TARGET).bso: $(OBJS)
|
||||
@$(CC) $(LDFLAGS) -e minerva_entry $^ -o $(OUTPUT)/$(TARGET).bso
|
||||
@$(STRIP) -g $(OUTPUT)/$(TARGET).bso
|
||||
@echo -e "-------------\nBuilt module: "$(TARGET)".bso\n-------------"
|
||||
$(TARGET).bso: $(OBJS) $(TRACK_LDFLAGS)
|
||||
@$(CC) $(LDFLAGS) -e minerva_entry $(OBJS) -o $(OUTPUTDIR)/$(TARGET).bso
|
||||
@$(STRIP) -g $(OUTPUTDIR)/$(TARGET).bso
|
||||
@echo "Built module: "$(TARGET)".bso"
|
||||
|
||||
clean:
|
||||
@rm -rf $(OUTPUT)/$(TARGET).bso
|
||||
# Non objects change detectors.
|
||||
$(TRACK_CFLAGS): $(BUILDDIR)
|
||||
@echo '$(CFLAGS)' | cmp -s - $@ || echo '$(CFLAGS)' > $@
|
||||
$(TRACK_LDFLAGS): $(BUILDDIR)
|
||||
@echo '$(LDFLAGS)' | cmp -s - $@ || echo '$(LDFLAGS)' > $@
|
||||
-include $(OBJS:.o=.d)
|
||||
|
||||
Reference in New Issue
Block a user