diff --git a/1-lang0py/.gitignore b/1-lang0py/.gitignore index deaa674..9bb2af4 100644 --- a/1-lang0py/.gitignore +++ b/1-lang0py/.gitignore @@ -2,3 +2,4 @@ /lang0py*.exe /lang0py*.o /lang0py*.py +/lang0py*.py.tmp diff --git a/1-lang0py/Makefile b/1-lang0py/Makefile index 6d00386..6214671 100644 --- a/1-lang0py/Makefile +++ b/1-lang0py/Makefile @@ -18,18 +18,22 @@ all: lang0py.exe $(CYTHON) -3 --embed $< lang0py0.py: lang0py.lang0 $(LANG0PY) - cat $< | $(LANG0PY) > $@ + cat $< | $(LANG0PY) > $@.tmp + mv $@.tmp $@ lang0py1.py: lang0py.lang0 lang0py0.exe - cat $< | ./lang0py0.exe > $@ + cat $< | ./lang0py0.exe > $@.tmp + mv $@.tmp $@ # Cannot diff on the first iteration - platform change lang0py2.py: lang0py.lang0 lang0py1.exe - cat $< | ./lang0py1.exe > $@ + cat $< | ./lang0py1.exe > $@.tmp + mv $@.tmp $@ -diff lang0py1.py lang0py2.py lang0py.py: lang0py.lang0 lang0py2.exe - cat $< | ./lang0py2.exe > $@ + cat $< | ./lang0py2.exe > $@.tmp + mv $@.tmp $@ -diff lang0py2.py lang0py.py clean: diff --git a/2-lang0c/.gitignore b/2-lang0c/.gitignore index f7bb4b3..5f9970f 100644 --- a/2-lang0c/.gitignore +++ b/2-lang0c/.gitignore @@ -1,4 +1,5 @@ /lang0c*.c +/lang0c*.c.tmp /lang0c*.exe /lang0c*.o /lang0c*.py diff --git a/2-lang0c/Makefile b/2-lang0c/Makefile index c8ec277..0e9fe54 100644 --- a/2-lang0c/Makefile +++ b/2-lang0c/Makefile @@ -15,7 +15,8 @@ all: lang0c.exe gcc -c $< lang0c0.py: lang0c.lang0 $(LANG0PY) - cat $< | $(LANG0PY) > $@ + cat $< | $(LANG0PY) > $@.tmp + mv $@.tmp $@ lang0c0.c: lang0c0.py $(CYTHON) -3 --embed $< @@ -27,15 +28,18 @@ lang0c0.exe: lang0c0.o gcc -o $@ $< -lpython$(PYVERSION) lang0c1.c: lang0c.lang0 lang0c0.exe - cat $< | ./lang0c0.exe > $@ + cat $< | ./lang0c0.exe > $@.tmp + mv $@.tmp $@ # Cannot diff on the first iteration - platform change lang0c2.c: lang0c.lang0 lang0c1.exe - cat $< | ./lang0c1.exe > $@ + cat $< | ./lang0c1.exe > $@.tmp + mv $@.tmp $@ -diff lang0c1.c lang0c2.c lang0c.c: lang0c.lang0 lang0c2.exe - cat $< | ./lang0c2.exe > $@ + cat $< | ./lang0c2.exe > $@.tmp + mv $@.tmp $@ -diff lang0c2.c lang0c.c clean: diff --git a/tests/Makefile b/tests/Makefile index 8701ecc..510228f 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,5 +1,7 @@ .SUFFIXES: .PHONY: all clean +.PRECIOUS: build/%.it0.py build/%.it0.c +.DELETE_ON_ERROR: PYVERSION=3.10 PYPREFIX=/usr @@ -31,8 +33,12 @@ clean: ### # it0 +../0-lang0py/lang0py.exe: ../0-lang0py/lang0py.py + $(MAKE) -C ../0-lang0py + build/%.it0.py: %.lang0 ../0-lang0py/lang0py.exe - cat $< | ../0-lang0py/lang0py.exe > $@ + cat $< | ../0-lang0py/lang0py.exe > $@.tmp + mv $@.tmp $@ build/%.it0.c: build/%.it0.py $(CYTHON) -3 --embed -o $@ $^ @@ -46,8 +52,12 @@ build/%.it0: build/%.it0.o ### # it1 +../1-lang0py/lang0py.exe: ../0-lang0py/lang0py.exe ../1-lang0py/lang0py.lang0 + $(MAKE) -C ../1-lang0py + build/%.it1.py: %.lang0 ../1-lang0py/lang0py.exe - cat $< | ../1-lang0py/lang0py.exe > $@ + cat $< | ../1-lang0py/lang0py.exe > $@.tmp + mv $@.tmp $@ build/%.it1.c: build/%.it1.py $(CYTHON) -3 --embed -o $@ $^ @@ -61,8 +71,12 @@ build/%.it1: build/%.it1.o ### # it2 +../2-lang0c/lang0c.exe: ../0-lang0py/lang0py.exe ../1-lang0py/lang0py.exe ../2-lang0c/lang0c.lang0 + $(MAKE) -C ../2-lang0c + build/%.it2.c: %.lang0 ../2-lang0c/lang0c.exe - cat $< | ../2-lang0c/lang0c.exe > $@ + cat $< | ../2-lang0c/lang0c.exe > $@.tmp + mv $@.tmp $@ build/%.it2.o: build/%.it2.c $(CC) -o $@ -c $^ -I$(PYPREFIX)/include/python$(PYVERSION) diff --git a/tests/build/.gitignore b/tests/build/.gitignore index 3ee26ee..4dfaadf 100644 --- a/tests/build/.gitignore +++ b/tests/build/.gitignore @@ -2,10 +2,13 @@ /*.it0.c /*.it0.o /*.it0.py +/*.it0.py.tmp /*.it1 /*.it1.c /*.it1.o /*.it1.py +/*.it1.py.tmp /*.it2 /*.it2.c +/*.it2.c.tmp /*.it2.o