1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-26 05:29:30 +00:00
cc65/samples/Makefile
Oliver Schmidt d455263e66 Don'r presume that the C64 is the only target.
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.
2016-06-01 19:46:02 +02:00

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.?