.DEFAULT_GOAL = all
.PHONY: all clean

OPTIM = 0

ifdef VERBOSE
Q =
E = @ :
else
Q = @
E = @ echo
endif

-include programs.make

programs.make: programs on_programs_changed
	$(E) "GEN $@"
	$(Q) ./on_programs_changed

programs:
	$(E) "GEN $@"
	$(Q) echo 84 | xargs -n 1 echo >$@

all: 84_stable $(programs)

clean:
	$(E) CLEAN
	$(Q) rm -f programs.make *.o *.c.d 84_stable $(programs) $(programs:%=%.c)

support.o: support.c
	$(E) "CC  $@"
	$(Q) $(CC) -std=gnu11 -static -fno-stack-protector -O2 -I. -c $< -Wall

$(programs:%=%.c): 84_stable
	$(E) "84  $@"
	$(Q) ./84_stable $(@:%.c=%)

$(programs) 84_stable: support.o
	$(E) "CC  $@"
	$(Q) $(CC) -std=gnu11 -static -s -fno-stack-protector -nostdlib -Wl,--build-id=none \
		-O$(OPTIM) -I. -o $@ $@.c support.o \
		-Wno-unused-variable -Wno-unused-function -Wno-unused-value

84_stable: 84_stable.c

-include *.c.d