From d605cf11dcdee537ea1b2514819bb160bb8e2667 Mon Sep 17 00:00:00 2001 From: gered Date: Sat, 1 Feb 2025 17:06:06 -0500 Subject: [PATCH] add new Makefile i am really not a big fan of the current "Makefile in each directory" build system in this project. sorry. i don't have any C256 devices, so i've not kept anything for them in this new Makefile. to the best of my knowledge, you can't get any of these devices anymore anyway, so i don't particular care. sorry again. --- Makefile | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..27744ad --- /dev/null +++ b/Makefile @@ -0,0 +1,133 @@ +################################################################################ + +ifeq ($(strip $(CALYPSI_65816_ROOT)),) +$(error "Please set CALYPSI_65816_ROOT in your environment!") +endif + +################################################################################ + +TARGET = toolbox +TARGET_RAM = $(TARGET)_ram +TARGET_ROM = $(TARGET)_rom + +# just the default, can override +UNIT = F256K + +SRCS_BASE = boot.c \ + log.c \ + memory.c \ + proc.c \ + ring_buffer.c \ + simpleio.c \ + sys_general.c \ + timers.c \ + toolbox.c \ + utilities.c \ + dev/block.c \ + dev/channel.c \ + dev/console.c \ + dev/fsys.c \ + dev/sprites.c \ + dev/tiles.c \ + dev/txt_screen.c \ + dev/rtc.c \ + dev/uart.c \ + snd/codec_c256.c \ + snd/psg.c \ + snd/sid.c \ + fatfs/ff.c \ + fatfs/ffsystem.c \ + fatfs/ffunicode.c + +SRCS_BASE_F256 = cartridge.c \ + dev/txt_f256.c \ + dev/kbd_f256.c \ + dev/indicators_c256.c \ + dev/interrupts_f256.c \ + dev/sdc_f256.c \ + dev/iec.c \ + fatfs/toolbox_bdev.c \ + C256/extras.s \ + C256/f256-cstartup.s \ + C256/iecll.s \ + C256/interrupts.s \ + C256/io_stubs.c \ + C256/jumptable.s + +SRCS_DEBUGGER = $(DEBUGGER)/agent.c $(DEBUGGER)/c256-uart.c $(DEBUGGER)/low_level_WDC65816.s + +ifeq ($(UNIT),F256) + SRCS_FOR_UNIT = $(SRCS_BASE_F256) dev/kbd_f256jr.c + CFLAGS_FOR_UNIT = -DMODEL=2 -DCPU=255 --target=f256 + LDFLAGS_FOR_UNIT_ROM = src/C256/f256-flash.scm --cstartup=f256 + LDFLAGS_FOR_UNIT_RAM = src/C256/f256-ld_lc.scm --cstartup=f256 +else ifeq ($(UNIT),F256JR2) + SRCS_FOR_UNIT = $(SRCS_BASE_F256) dev/kbd_f256jr.c + CFLAGS_FOR_UNIT = -DMODEL=35 -DCPU=255 --target=f256 + LDFLAGS_FOR_UNIT_ROM = src/C256/f256k2-flash.scm --cstartup=f256 + LDFLAGS_FOR_UNIT_RAM = src/C256/f256-ld_lc.scm --cstartup=f256 +else ifeq ($(UNIT),F256K) + SRCS_FOR_UNIT = $(SRCS_BASE_F256) dev/kbd_f256k.c + CFLAGS_FOR_UNIT = -DMODEL=18 -DCPU=255 --target=f256 + LDFLAGS_FOR_UNIT_ROM = src/C256/f256-flash.scm --cstartup=f256 + LDFLAGS_FOR_UNIT_RAM = src/C256/f256-ld_lc.scm --cstartup=f256 +else ifeq ($(UNIT),F256K2) + SRCS_FOR_UNIT = $(SRCS_BASE_F256) dev/kbd_f256k.c + CFLAGS_FOR_UNIT = -DMODEL=17 -DCPU=255 --target=f256 + LDFLAGS_FOR_UNIT_ROM = src/C256/f256k2-flash.scm --cstartup=f256 + LDFLAGS_FOR_UNIT_RAM = src/C256/f256-ld_lc.scm --cstartup=f256 +else + $(error "Unrecognized UNIT: $(UNIT)") +endif + +SRC_DIR = src +SRC_FILES = $(addprefix $(SRC_DIR)/, $(SRCS_BASE) $(SRCS_FOR_UNIT)) +INCLUDE_DIRS = $(SRC_DIR) $(SRC_DIR)/include $(CALYPSI_65816_ROOT)/include +INCLUDES = $(foreach dir,$(INCLUDE_DIRS),-I$(dir)) + +OBJ_DIR = obj +OBJ_FILES = $(addprefix $(OBJ_DIR)/, $(addsuffix .o, $(SRC_FILES))) + +DEPS_DIR = $(OBJ_DIR) +DEPENDS = $(OBJ_FILES:.o=.d) + +CFLAGS = --code-model=large --data-model=large --list-file=$@.lst $(INCLUDES) $(CFLAGS_FOR_UNIT) +AFLAGS = --code-model=large --data-model=large $(INCLUDES) + +LDFLAGS_FOR_ROM = --rom-code $(LDFLAGS_FOR_UNIT_ROM) +LDFLAGS_FOR_RAM = $(LDFLAGS_FOR_UNIT_RAM) + +CC = cc65816 +AS = as65816 +LD = ln65816 + +.PHONY: clean debug + +all: $(TARGET_ROM).s37 $(TARGET_RAM).s37 + +clean: + rm -f *.s37 + rm -f *.lst + rm -rf $(OBJ_DIR) + +debug: + $(info SRC_FILES is $(SRC_FILES)) + $(info OBJ_FILES is $(OBJ_FILES)) + +$(TARGET_ROM).s37: $(OBJ_FILES) + $(LD) -o $@ $^ $(LDFLAGS_FOR_ROM) --output-format=s37 --list-file=$@.lst + +$(TARGET_RAM).s37: $(OBJ_FILES) + $(LD) -o $@ $^ $(LDFLAGS_FOR_RAM) --output-format=s37 --list-file=$@.lst + +$(OBJ_DIR)/%.c.o: %.c + @mkdir -p $(dir $@) + $(CC) -MMD -MP -MF$(DEPS_DIR)/$*.d $(CFLAGS) -o $@ $< + +$(OBJ_DIR)/%.s.o: %.s + @mkdir -p $(dir $@) + $(AS) $(AFLAGS) -o $@ $< + +-include $(DEPENDS) + +