203 lines
3.9 KiB
Makefile
203 lines
3.9 KiB
Makefile
|
|
ifeq ($(PLATFORM),)
|
|
_PLATFORM_ = c64
|
|
else ifeq ($(PLATFORM),c116)
|
|
_PLATFORM_ = c16
|
|
else ifeq ($(PLATFORM),plus4)
|
|
_PLATFORM_ = c16
|
|
else
|
|
_PLATFORM_ = $(PLATFORM)
|
|
endif
|
|
|
|
ifeq ($(NO_VICE),)
|
|
NO_VICE = 0
|
|
endif
|
|
|
|
|
|
ifneq ($(_PLATFORM_),c64)
|
|
ifneq ($(_PLATFORM_),c128)
|
|
ifneq ($(_PLATFORM_),c16)
|
|
$(error invalid platform $(_PLATFORM_) specified)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
|
|
ARCH = $(shell uname | tr "[a-z]" "[A-Z]" | tr -c -d "[A-Z]")
|
|
|
|
ifneq ($(findstring CYGWINNT,$(ARCH)),)
|
|
ifeq (CYGWINNT,$(ARCH))
|
|
ARCH = WIN32
|
|
else
|
|
ARCH = WIN64
|
|
endif
|
|
endif
|
|
ifneq ($(findstring DARWIN,$(ARCH)),)
|
|
ARCH = MACOSX
|
|
endif
|
|
|
|
|
|
ifeq ($(_PLATFORM_),c16)
|
|
ifneq ($(NO_VICE),0)
|
|
ifneq ($(findstring WIN,$(ARCH)),)
|
|
USE_PLUS4EMU = 0
|
|
USE_YAPE = 1
|
|
else
|
|
USE_PLUS4EMU = 1
|
|
USE_YAPE = 0
|
|
endif
|
|
else
|
|
USE_PLUS4EMU = 0
|
|
USE_YAPE = 0
|
|
endif
|
|
else
|
|
USE_PLUS4EMU = 0
|
|
USE_YAPE = 0
|
|
endif
|
|
|
|
|
|
ifeq ($(_PLATFORM_),c16)
|
|
ifeq ($(ARCH),MACOSX)
|
|
# MacOSX, these programs must be installed as applications
|
|
VICE = xplus4
|
|
PLUS4EMU = open /Applications/plus4emu.app --args
|
|
else
|
|
VICE = xplus4
|
|
PLUS4EMU = plus4emu
|
|
ifeq ($(ARCH),WIN64)
|
|
YAPE = YapeWin64
|
|
else
|
|
YAPE = Yape
|
|
endif
|
|
endif
|
|
else
|
|
ifeq ($(_PLATFORM_),c128)
|
|
VICE = x128
|
|
USE_VICE = 1
|
|
else
|
|
VICE = x64
|
|
USE_VICE = 1
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(USE_VICE),1)
|
|
EMU = $(VICE) -drive8type 1541 -drive9type 0 -autostart
|
|
EMU71 = $(VICE) -drive8type 1571 -drive9type 0 -autostart
|
|
else
|
|
EMU = $(PLUS4EMU) -disk
|
|
endif
|
|
|
|
|
|
ECHO = echo
|
|
PRINTF = printf
|
|
|
|
AS = cl65
|
|
LD = ld65
|
|
C1541 = c1541
|
|
CC1541 = ../../tools/cc1541/cc1541
|
|
|
|
MKDIR = mkdir -p
|
|
RM = rm -f
|
|
ifeq ($(ARCH),MACOSX)
|
|
RMDIR = rmdir # XXX TODO xargs to remove .DS_Store
|
|
else
|
|
RMDIR = rmdir
|
|
endif
|
|
CAT = cat
|
|
|
|
|
|
.PHONY: default loader assemble diskimage run clean distclean wipe
|
|
.PHONY: tellarch
|
|
|
|
|
|
BUILDDIR = ../../build
|
|
INTERMDIR = ../../build/intermediate
|
|
LOADER_SRC = ../../src
|
|
LOADER = $(BUILDDIR)/loader-$(_PLATFORM_).prg
|
|
|
|
RESOURCESDIR = ../resources
|
|
|
|
NAME = minexample
|
|
|
|
SOURCE = $(NAME).s
|
|
LOADERCFG = loaderconfig.inc
|
|
ASSEMBLE = $(INTERMDIR)/$(NAME)-uncompressed-$(_PLATFORM_).prg
|
|
DISKIMAGE = $(BUILDDIR)/$(NAME)-$(_PLATFORM_).d64
|
|
|
|
AS_FLAGS = -Wa -I../../../shared -I ../../include -u __EXEHDR__
|
|
|
|
|
|
default: diskimage
|
|
|
|
|
|
tellarch:
|
|
@$(ECHO) $(ARCH)
|
|
|
|
|
|
loader: $(LOADER)
|
|
|
|
$(LOADER): $(LOADERCFG)
|
|
make -C $(LOADER_SRC) EXTCONFIGPATH=../samples/$(NAME) PLATFORM=$(_PLATFORM_) INSTALL=1800 RESIDENT=0F00 ZP=02 prg
|
|
|
|
$(CC1541):
|
|
make -C $(LOADER_SRC) cc1541
|
|
|
|
assemble: $(ASSEMBLE)
|
|
|
|
$(ASSEMBLE): $(SOURCE) $(LOADER) $(LOADERCFG)
|
|
$(MKDIR) $(BUILDDIR)
|
|
$(MKDIR) $(INTERMDIR)
|
|
ifeq ($(_PLATFORM_),c64)
|
|
$(AS) $(AS_FLAGS) -C c64-asm.cfg -Wa -DPLATFORM=64 -o $@ $<
|
|
else ifeq ($(_PLATFORM_),c128)
|
|
$(AS) $(AS_FLAGS) -t c128 -Wa -DPLATFORM=128 -o $@ $<
|
|
else
|
|
$(AS) $(AS_FLAGS) -t c16 -Wa -DPLATFORM=16 -o $@ $<
|
|
endif
|
|
|
|
|
|
diskimage: $(DISKIMAGE)
|
|
|
|
$(DISKIMAGE): $(ASSEMBLE) $(CC1541)
|
|
$(RM) $@
|
|
$(CC1541) -n "ys2 intro" -i test \
|
|
-f $(NAME) -w $< \
|
|
-f "sid" -w use_this_sid.bin \
|
|
-f "badguy" -w badguy.zx0.prg \
|
|
-f "font" -w font.bin \
|
|
-f "scrmap" -w tilemap.bin.lz \
|
|
-f "intrbmp" -w title_320-prepared.zx0.prg \
|
|
-f "tower" -w tower.zx0.prg \
|
|
-f "towerbm" -w tower_beam.zx0.prg \
|
|
-f "field" -w field.zx0.prg \
|
|
$@
|
|
|
|
|
|
ifneq ($(USE_YAPE),0)
|
|
run: $(DISKIMAGE)
|
|
$(YAPE) "..\..\build\$^"
|
|
else
|
|
run: $(DISKIMAGE)
|
|
$(EMU) $(realpath $^)
|
|
|
|
run71: $(DISKIMAGE)
|
|
$(EMU71) $(realpath $^)
|
|
endif
|
|
|
|
$(INTERMDIR)/%.prg: $(RESOURCESDIR)/%.bin
|
|
$(PRINTF) '\000\140' | $(CAT) - $? > $@ # octal 140 = hex 60
|
|
|
|
|
|
clean:
|
|
-$(RM) *.o $(ASSEMBLE) $(DISKIMAGE)
|
|
-$(RM) -rf $(INTERMDIR)
|
|
-$(RM) $(BUILDDIR)/loader-c64.prg
|
|
-$(RM) $(BUILDDIR)/loader-c128.prg
|
|
-$(RM) $(BUILDDIR)/loader-c16.prg
|
|
-$(RMDIR) $(BUILDDIR)
|
|
|
|
distclean:
|
|
-$(MAKE) -C $(LOADER_SRC) clean
|
|
|
|
wipe: distclean clean
|