From 3c6e8087f17b582336162247c89931470b6ae858 Mon Sep 17 00:00:00 2001 From: uz Date: Mon, 28 Sep 2009 19:22:02 +0000 Subject: [PATCH] Improved Makefile by Greg King. git-svn-id: svn://svn.cc65.org/cc65/trunk@4258 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- samples/Makefile | 102 ++++++++++++++++++++++++++--------------------- 1 file changed, 56 insertions(+), 46 deletions(-) diff --git a/samples/Makefile b/samples/Makefile index cd8079a2c..44276154d 100644 --- a/samples/Makefile +++ b/samples/Makefile @@ -8,24 +8,43 @@ 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. +# 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 -CLIB = $(SYS).lib +MOUS = /usr/lib/cc65/mou/$(SYS)*.mou +TGI = /usr/lib/cc65/tgi/$(SYS)*.tgi +ifneq "$(wildcard /usr/local/lib/cc65)" "" +MOUS = /usr/local/lib/cc65/mou/$(SYS)*.mou +TGI = /usr/local/lib/cc65/tgi/$(SYS)*.tgi +endif +ifdef CC65_HOME +MOUS = $(CC65_HOME)/mou/$(SYS)*.mou +TGI = $(CC65_HOME)/tgi/$(SYS)*.tgi +endif +CLIB = --lib $(SYS).lib CL = cl65 CC = cc65 AS = ca65 LD = ld65 else -# Samples is part of a complete source tree +# "samples/" is a part of a complete source tree. +CA65_INC = ../asminc +CC65_INC = ../include +LD65_CFG = ../src/ld65/cfg +LD65_LIB = ../libsrc +LD65_OBJ = ../libsrc +MOUS = ../libsrc/$(SYS)*.mou +TGI = ../libsrc/$(SYS)*.tgi CLIB = ../libsrc/$(SYS).lib CL = ../src/cl65/cl65 CC = ../src/cc65/cc65 AS = ../src/ca65/ca65 LD = ../src/ld65/ld65 -export CC65_INC = ../include + +MY_INC = --forget-inc-paths -I . -I $(CC65_INC) +MY_ASM = --forget-inc-paths -I . -I $(CA65_INC) endif # This one comes with VICE @@ -37,12 +56,15 @@ C1541 = c1541 .c.o: @echo $< - @$(CC) -Oirs -T --forget-inc-paths --codesize 500 -g -t $(SYS) -I../include/ $< + @$(CC) $(MY_INC) -Oirs --codesize 500 -T -g -t $(SYS) $< @$(AS) $(basename $<).s .s.o: @echo $< - @$(AS) $(basename $<).s + @$(AS) $(MY_ASM) -t $(SYS) $< + +.o: + @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ $(CLIB) # -------------------------------------------------------------------------- @@ -54,6 +76,7 @@ EXELIST = ascii \ fire \ gunzip65 \ hello \ + mandelbrot \ mousedemo \ nachtm \ plasma \ @@ -66,64 +89,53 @@ EXELIST = ascii \ .PHONY: all all: $(EXELIST) -ascii: ascii.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ +ascii: ascii.o -diodemo: diodemo.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ +diodemo: diodemo.o -fire: fire.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ +fire: fire.o -gunzip65: gunzip65.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ +gunzip65: gunzip65.o -hello: hello.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ +hello: hello.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 $@ $^ +mandelbrot: mandelbrot.o + @$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^ $(CLIB) else ifeq "$(SYS)" "apple2enh" -mandelbrot: mandelbrot.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^ +mandelbrot: mandelbrot.o + @$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^ $(CLIB) else -mandelbrot: mandelbrot.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ +mandelbrot: mandelbrot.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 $@ $^ +mousedemo: mousedemo.o + @$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^ $(CLIB) else -mousedemo: mousedemo.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ +mousedemo: mousedemo.o endif -nachtm: nachtm.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -Ln $(basename $@).lbl -o $@ $^ +nachtm: nachtm.o -plasma: plasma.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ +plasma: plasma.o -sieve: sieve.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ +sieve: sieve.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 $@ $^ +tgidemo: tgidemo.o + @$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^ $(CLIB) else ifeq "$(SYS)" "apple2enh" -tgidemo: tgidemo.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^ +tgidemo: tgidemo.o + @$(LD) -t $(SYS) -m $(basename $@).map --start-addr 0x4000 -o $@ $^ $(CLIB) else -tgidemo: tgidemo.o $(CLIB) - @$(LD) -t $(SYS) -m $(basename $@).map -o $@ $^ +tgidemo: tgidemo.o endif endif @@ -137,11 +149,11 @@ 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; + $(C1541) -attach $@ -write $$exe > /dev/null || exit $$?;\ + done + @for mod in $(TGI) $(MOUS); do\ + $(C1541) -attach $@ -write $$mod > /dev/null || exit $$?;\ + done # -------------------------------------------------------------------------- # Cleanup rules @@ -155,5 +167,3 @@ zap: clean $(RM) $(EXELIST) samples.d64 - - -- 2.39.5