50 lines
1.1 KiB
Makefile
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)
|