mirror of
https://github.com/cc65/cc65.git
synced 2025-01-07 13:29:45 +00:00
d455263e66
Other targets have disks too and if at some point some one is interested enough to add support for disk creation for other targets too then 'disk' is no good goal name for a C64 disk.
180 lines
4.6 KiB
Makefile
180 lines
4.6 KiB
Makefile
#
|
|
# Makefile for cc65 samples
|
|
#
|
|
# This Makefile requires GNU make
|
|
#
|
|
|
|
# Enter the target system here
|
|
SYS = c64
|
|
|
|
# Determine the path to the executables and libraries. If the samples
|
|
# directory is part of a complete source tree, use the stuff from that
|
|
# source tree; otherwise, use the "install" directories.
|
|
ifeq "$(wildcard ../src)" ""
|
|
# No source tree
|
|
installdir = /usr/lib/cc65
|
|
ifneq "$(wildcard /usr/local/lib/cc65)" ""
|
|
installdir = /usr/local/lib/cc65
|
|
endif
|
|
ifneq "$(wildcard /opt/local/share/cc65)" ""
|
|
installdir = /opt/local/share/cc65
|
|
endif
|
|
ifdef CC65_HOME
|
|
installdir = $(CC65_HOME)
|
|
endif
|
|
|
|
MOUS = $(installdir)/target/$(SYS)/drv/mou/$(SYS)*.mou
|
|
TGI = $(installdir)/target/$(SYS)/drv/tgi/$(SYS)*.tgi
|
|
CLIB = --lib $(SYS).lib
|
|
CL = cl65
|
|
CC = cc65
|
|
AS = ca65
|
|
LD = ld65
|
|
|
|
else
|
|
# "samples/" is a part of a complete source tree.
|
|
export CC65_HOME := $(abspath ..)
|
|
MOUS = ../target/$(SYS)/drv/mou/$(SYS)*.mou
|
|
TGI = ../target/$(SYS)/drv/tgi/$(SYS)*.tgi
|
|
CLIB = ../lib/$(SYS).lib
|
|
CL = ../bin/cl65
|
|
CC = ../bin/cc65
|
|
AS = ../bin/ca65
|
|
LD = ../bin/ld65
|
|
endif
|
|
|
|
# This one comes with VICE
|
|
C1541 = c1541
|
|
|
|
# --------------------------------------------------------------------------
|
|
# System-dependent settings
|
|
|
|
# The Apple machines need the start address adjusted when using TGI
|
|
LDFLAGS_mandelbrot_apple2 = --start-addr 0x4000
|
|
LDFLAGS_tgidemo_apple2 = --start-addr 0x4000
|
|
LDFLAGS_mandelbrot_apple2enh = --start-addr 0x4000
|
|
LDFLAGS_tgidemo_apple2enh = --start-addr 0x4000
|
|
|
|
# The Apple ][ needs the start address adjusted for the mousetest
|
|
LDFLAGS_mousetest_apple2 = --start-addr 0x4000
|
|
|
|
# The atarixl target needs the start address adjusted when using TGI
|
|
LDFLAGS_mandelbrot_atarixl = --start-addr 0x4000
|
|
LDFLAGS_tgidemo_atarixl = --start-addr 0x4000
|
|
|
|
# The atari target needs to reserve some memory when using TGI
|
|
LDFLAGS_mandelbrot_atari = -D __RESERVED_MEMORY__=0x2000
|
|
LDFLAGS_tgidemo_atari = -D __RESERVED_MEMORY__=0x2000
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Generic rules
|
|
|
|
%: %.c
|
|
%: %.s
|
|
|
|
.c.o:
|
|
@echo $<
|
|
@$(CC) $(CFLAGS) -Oirs --codesize 500 -T -g -t $(SYS) $<
|
|
@$(AS) $(<:.c=.s)
|
|
|
|
.s.o:
|
|
@echo $<
|
|
@$(AS) $(AFLAGS) -t $(SYS) $<
|
|
|
|
.PRECIOUS: %.o
|
|
|
|
.o:
|
|
@$(LD) $(LDFLAGS_$(@F)_$(SYS)) -o $@ -t $(SYS) -m $@.map $^ $(CLIB)
|
|
|
|
# --------------------------------------------------------------------------
|
|
# List of executables. This list could be made target-dependent by checking
|
|
# $(SYS).
|
|
|
|
EXELIST = ascii \
|
|
diodemo \
|
|
enumdevdir \
|
|
fire \
|
|
gunzip65 \
|
|
hello \
|
|
mandelbrot \
|
|
mousetest \
|
|
multdemo \
|
|
nachtm \
|
|
ovrldemo \
|
|
plasma \
|
|
sieve \
|
|
tgidemo
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Rules to make the binaries
|
|
|
|
.PHONY: all samples
|
|
all:
|
|
|
|
samples: $(EXELIST)
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Overlay rules. Overlays need special ld65 configuration files. Also, the
|
|
# overlay file-names are shortenned to fit the Atari's 8.3-character limit.
|
|
|
|
multdemo: multidemo.o
|
|
@$(LD) -o $@ -C $(SYS)-overlay.cfg -m $@.map $^ $(CLIB)
|
|
|
|
ovrldemo: overlaydemo.o
|
|
@$(LD) -o $@ -C $(SYS)-overlay.cfg -m $@.map $^ $(CLIB)
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Rule to make a CBM disk with all samples. Needs the c1541 program that comes
|
|
# with the VICE emulator.
|
|
|
|
.PHONY: d64
|
|
d64: samples.d64
|
|
|
|
samples.d64: samples
|
|
@$(C1541) -format samples,AA d64 $@ > /dev/null
|
|
@for exe in $(EXELIST); do\
|
|
$(C1541) -attach $@ -write $$exe > /dev/null || exit $$?;\
|
|
done
|
|
@for mod in $(TGI) $(MOUS); do\
|
|
$(C1541) -attach $@ -write $$mod > /dev/null || exit $$?;\
|
|
done
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Installation rules
|
|
|
|
INSTALL = install
|
|
samplesdir = $(prefix)/share/cc65
|
|
.PHONY: install
|
|
install:
|
|
$(if $(prefix),,$(error variable `prefix' must be set))
|
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)
|
|
$(INSTALL) -d $(DESTDIR)$(samplesdir)/geos
|
|
$(INSTALL) -d $$(DESTDIR)$(samplesdir)/tutorial
|
|
$(INSTALL) -m0644 *.* $(DESTDIR)$(samplesdir)
|
|
$(INSTALL) -m0644 README $(DESTDIR)$(samplesdir)
|
|
$(INSTALL) -m0644 Makefile $(DESTDIR)$(samplesdir)
|
|
$(INSTALL) -m0644 geos/*.* $(DESTDIR)$(samplesdir)/geos
|
|
$(INSTALL) -m0644 tutorial/*.* $(DESTDIR)$(samplesdir)/tutorial
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Packaging rules
|
|
|
|
.PHONY: zip
|
|
zip:
|
|
@cd .. && zip -r cc65 samples/
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Clean-up rules
|
|
|
|
.PHONY: mostlyclean
|
|
mostlyclean:
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
$(RM) *.map *.o *.s *.lbl
|
|
|
|
.PHONY: zap
|
|
zap: clean
|
|
$(RM) $(EXELIST) samples.d64
|
|
$(RM) multdemo.? ovrldemo.?
|