mirror of
https://github.com/cc65/cc65.git
synced 2024-10-31 20:06:11 +00:00
8216bf1d6a
main() is encountered. Define this symbol in the startup code. This will automatically force linking of the startup code which can then reside inside the standard library as any other object file. git-svn-id: svn://svn.cc65.org/cc65/trunk@3988 b7a2c559-68d2-44c3-8de9-860c34a00d81
160 lines
3.9 KiB
Makefile
160 lines
3.9 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 this
|
|
# source tree, otherwise use the "official" directories.
|
|
ifeq "$(wildcard ../src)" ""
|
|
# No source tree
|
|
CLIB = $(SYS).lib
|
|
CL = cl65
|
|
CC = cc65
|
|
AS = ca65
|
|
LD = ld65
|
|
|
|
else
|
|
# Samples is part of a complete source tree
|
|
CLIB = ../libsrc/$(SYS).lib
|
|
CL = ../src/cl65/cl65
|
|
CC = ../src/cc65/cc65
|
|
AS = ../src/ca65/ca65
|
|
LD = ../src/ld65/ld65
|
|
export CC65_INC = ../include
|
|
endif
|
|
|
|
# This one comes with VICE
|
|
C1541 = c1541
|
|
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Generic rules
|
|
|
|
.c.o:
|
|
@echo $<
|
|
@$(CC) -Oirs -T --forget-inc-paths --codesize 500 -g -t $(SYS) -I../include/ $<
|
|
@$(AS) $(basename $<).s
|
|
|
|
.s.o:
|
|
@echo $<
|
|
@$(AS) $(basename $<).s
|
|
|
|
|
|
# --------------------------------------------------------------------------
|
|
# List of executables. This list could be made target dependent by checking
|
|
# $(SYS).
|
|
|
|
EXELIST = ascii \
|
|
diodemo \
|
|
fire \
|
|
gunzip65 \
|
|
hello \
|
|
mousedemo \
|
|
nachtm \
|
|
plasma \
|
|
sieve \
|
|
tgidemo
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Rules how to make each one of the binaries
|
|
|
|
.PHONY: all
|
|
all: $(EXELIST)
|
|
|
|
ascii: ascii.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^
|
|
|
|
diodemo: diodemo.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^
|
|
|
|
fire: fire.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^
|
|
|
|
gunzip65: gunzip65.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^
|
|
|
|
hello: hello.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^
|
|
|
|
# The Apple machines need the start address adjusted for the mandelbrot demo
|
|
ifeq "$(SYS)" "apple2"
|
|
mandelbrot: mandelbrot.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^
|
|
else
|
|
ifeq "$(SYS)" "apple2enh"
|
|
mandelbrot: mandelbrot.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^
|
|
else
|
|
mandelbrot: mandelbrot.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^
|
|
endif
|
|
endif
|
|
|
|
# The Apple ][ needs the start address adjusted for the mousedemo
|
|
ifeq "$(SYS)" "apple2"
|
|
mousedemo: mousedemo.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^
|
|
else
|
|
mousedemo: mousedemo.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^
|
|
endif
|
|
|
|
nachtm: nachtm.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -Ln $(basename $@).lbl -o $@ $^
|
|
|
|
plasma: plasma.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^
|
|
|
|
sieve: sieve.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^
|
|
|
|
# The Apple machines need the start address adjusted for the tgidemo
|
|
ifeq "$(SYS)" "apple2"
|
|
tgidemo: tgidemo.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^
|
|
else
|
|
ifeq "$(SYS)" "apple2enh"
|
|
tgidemo: tgidemo.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^
|
|
else
|
|
tgidemo: tgidemo.o $(CLIB)
|
|
@$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^
|
|
endif
|
|
endif
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Rule to make a disk with all samples. Needs the c1541 program that comes
|
|
# with the VICE emulator.
|
|
|
|
.PHONY: disk
|
|
disk: samples.d64
|
|
|
|
samples.d64: all
|
|
@$(C1541) -format samples,AA d64 $@ > /dev/null
|
|
@for exe in $(EXELIST); do\
|
|
$(C1541) -attach $@ -write $$exe > /dev/null;\
|
|
done;\
|
|
for tgi in ../libsrc/$(SYS)*.tgi; do\
|
|
$(C1541) -attach $@ -write $$tgi > /dev/null;\
|
|
done;
|
|
|
|
# --------------------------------------------------------------------------
|
|
# Cleanup rules
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
$(RM) *~ *.map *.o *.s *.lbl
|
|
|
|
.PHONY: zap
|
|
zap: clean
|
|
$(RM) $(EXELIST) samples.d64
|
|
|
|
|
|
|
|
|