70 lines
1.7 KiB
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)
|