6502-OS/Makefile

64 lines
1.4 KiB
Makefile

ROM = ../rom.bin
SPI = ../spi.bin
OBJ_DIR = build
SRC_DIRS = . programs system util
# VASM = ~/6502/vasm6502
ASM = ca65
ASMFLAGS = -g --cpu 65C02 $(foreach srcdir, $(SRC_DIRS), -I $(srcdir))
LD = ld65
LDFLAGS = -C linker.conf --obj-path $(OBJ_DIR) -Ln labels
SRC = $(wildcard *.s65) $(wildcard */*.s65)
OBJ = $($(notdir SRC):%.s65=$(OBJ_DIR)/%.o)
OBJ_DIRS = $(OBJ_DIR) $(foreach dir_,$(SRC_DIRS),$(OBJ_DIR)/$(dir_))
DEP = $(wildcard $(OBJ_DIR)/*/*.d)
# DEPENDS = $(shell $(VASM) -depend=make $(MAIN))
-include $(DEP)
.PHONY: default test clean print spi
.DEFAULT_GOAL = default
FMT_MESSAGE="\e[1;34m%s\e[0m %s\n"
FMT_ASM="\e[1;34mAssembling\e[0m: \e[34m%s\e[39m from %s\e[0m\n"
FMT_VAR="\e[1;35m%s\e[0m: %s\n"
test: ../test.bin
print:
@printf $(FMT_VAR) "ASMFLAGS" "$(ASMFLAGS)"
@printf $(FMT_VAR) "LDFLAGS" "$(LDFLAGS)"
@printf $(FMT_VAR) "SRC" "$(SRC)"
@printf $(FMT_VAR) "OBJ" "$(OBJ)"
default: $(ROM) $(SPI)
spi: default
./../ad-spi/spi-transfer -f $(SPI)
$(OBJ_DIRS):
mkdir -p $@
$(SPI) $(ROM): $(OBJ) linker.conf
@printf $(FMT_MESSAGE) "Linking" "$@"
$(LD) $(LDFLAGS) $(OBJ) -o $@
../test.bin: $(OBJ_DIR)/test.o
$(LD) $(LDFLAGS) $< -o $@
$(OBJ_DIR)/%.o: %.s65 | $(OBJ_DIRS)
@printf $(FMT_ASM) "$@" "$<"
$(ASM) $(ASMFLAGS) --create-dep $(patsubst %.o,%.d,$@) $< -o $@
clean:
rm -r $(OBJ_DIR)
rm $(ROM)
rm $(SPI)
docs:
doxygen .doxygen_config