Files
Z80/Makefile
2026-08-23 15:47:46 +02:00

50 lines
1.1 KiB
Makefile

TARGET := out
BUILD_DIR := build
AS := sdasz80
CC := sdcc
MAKEBIN := makebin
ASFLAGS := -plosgff
CCFLAGS := -mz80 --no-std-crt0
LDFLAGS := -mz80 --no-std-crt0 --code-loc 0x0080 --data-loc 0x8000
MAKEBINFLAGS := -p
ASM_SRCS := boot.asm
ASM_BUILDS := $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SRCS)))
C_SRCS := main.c
C_BUILDS := $(addprefix $(BUILD_DIR)/,$(notdir $(C_SRCS)))
ASM_RELS := $(ASM_BUILDS:.asm=.rel)
C_RELS := $(C_BUILDS:.c=.rel)
IHX := $(BUILD_DIR)/$(TARGET).ihx
MAP := $(BUILD_DIR)/$(TARGET).map
BIN := $(BUILD_DIR)/$(TARGET).bin
LST := $(ASM_BUILDS:.asm=.lst)
SYM := $(ASM_BUILDS:.asm=.sym)
GENERATED := $(ASM_BUILDS) $(C_BUILDS) $(ASM_RELS) $(C_RELS) $(LST) $(SYM) $(IHX) $(MAP) $(BIN)
.PHONY: all clean
all: $(BIN)
$(BIN): $(IHX)
$(MAKEBIN) $(MAKEBINFLAGS) $< $@
$(IHX): $(ASM_RELS) $(C_RELS) | $(BUILD_DIR)
$(CC) $(LDFLAGS) -o $@ $(ASM_RELS) $(C_RELS)
$(BUILD_DIR)/%.rel: %.asm | $(BUILD_DIR)
$(AS) $(ASFLAGS) -o $@ $<
$(BUILD_DIR)/%.rel: %.c | $(BUILD_DIR)
$(CC) $(CCFLAGS) -c -o $@ $<
$(BUILD_DIR):
mkdir -p $@
clean:
rm -rf $(BUILD_DIR)