Files
chibi-firmware/makefile

70 lines
1.7 KiB
Makefile

# Makefile for CHIBI PC-09 Firmware
.PHONY: generate all clean docs
.IGNORE: clean
.DEFAULT_GOAL := all
# ------------------------------------------------------------------------------
# Project Defaults & Folders
# ------------------------------------------------------------------------------
TARGET := boot
TARGREC := $(TARGET).s19
TARGROM := $(TARGET).bin
SRCDIR := src/
BUILDDIR := build/
GENS := $(SRCDIR)version.s $(SRCDIR)bbhash.s
SRCS := $(wildcard $(SRCDIR)*.s)
OBJS := $(patsubst $(SRCDIR)%.s,$(BUILDDIR)%.o,$(SRCS))
INCS := $(wildcard $(SRCDIR)*.inc)
# ------------------------------------------------------------------------------
# Toolchain Definitions
# ------------------------------------------------------------------------------
AS := lwasm
LD := lwlink
FIX := objcopy
ASFLAGS := -f obj
LDFLAGS := -f srec -m map.txt -s linkscript
# ------------------------------------------------------------------------------
# Rules and Phony Targets
# ------------------------------------------------------------------------------
docs: docs/*.typ
typst compile docs/buzbee.typ
all: $(TARGROM)
# Fix srec into flashable bin file
$(TARGROM): $(TARGREC)
$(FIX) -I srec -O binary $< $@
# Link objects
$(TARGREC): $(OBJS)
$(LD) $(LDFLAGS) -o $@ $^
# Assemble objects
$(OBJS): $(BUILDDIR)%.o : $(SRCDIR)%.s
-@mkdir -p $(BUILDDIR)
$(AS) $(ASFLAGS) -o $@ $<
# Pseudo target for generation step
generate: $(GENS)
# Run generation scripts
$(GENS): bbmkhash
./bbmkhash > src/bbhash.s
./genver.sh
# Build bbmkcmds, used to generate src/cmds.s
bbmkhash: bbmkhash.c
cc -o $@ $<
clean:
@echo 'Cleaning up intermediary files...'
@rm -rv $(TARGROM) $(TARGREC) map.txt $(BUILDDIR)
@rm -rv $(GENS)