Q:

How do I stop make clean executing on every build? 

First ever attempt at writing a small Makefile, but hitting a problem - how do I stop it executing make clean after every build? 
TASS64=64tass
EXOMIZER=exomizer
EXOMIZERFLAGS=sfx basic -n
VICE=/Applications/VICE/x64.app/Contents/MacOS/x64
VICEFLAGS=-sidenginemodel 1803 -keybuf "\88"
SOURCES=$(wildcard *.asm)
OBJECTS=$(SOURCES:.asm=.prg)

.PRECIOUS=Calvin.prg

all: $(TARGETS)

%.prg: %.asm
    $(TASS64) -C -a -o $@ -i $<

%: %.prg
    $(VICE) $(VICEFLAGS) $<

.PHONY: clean
clean:
    rm $(OBJECTS)

A:

I guess, it does not execute 'make clean'.  However, what may happen is that intermediate (secondary) results are deleted.  GNU Make does that by default.  To prevent make from doing so, mention those intermediate results X1, X2, ... in 
 .SECONDARY: X1 X2 ...

Or, in order to leave any secondary result in place, simply type: 
 .SECONDARY:

without any specific target.