72 lines
1.7 KiB
Makefile
72 lines
1.7 KiB
Makefile
.SUFFIXES:
|
|
.PHONY: all clean
|
|
|
|
PYVERSION=3.10
|
|
PYPREFIX=/usr
|
|
CYTHON=cython3
|
|
CC=gcc
|
|
|
|
TESTLIST=$(shell ls *.lang0 | sed 's/.lang0//')
|
|
|
|
all: check
|
|
|
|
check: all-it0.results all-it1.results all-it2.results
|
|
! grep -v 'Success' $^
|
|
|
|
all-it0.results: $(addprefix build/,$(addsuffix .it0, $(TESTLIST)))
|
|
-rm -f $@
|
|
$(foreach test,$(TESTLIST), echo -n "$(test) " >> $@; echo "Hello" | ./build/$(test).it0 >> $@ ; echo "" >> $@ ;)
|
|
|
|
all-it1.results: $(addprefix build/,$(addsuffix .it1, $(TESTLIST)))
|
|
-rm -f $@
|
|
$(foreach test,$(TESTLIST), echo -n "$(test) " >> $@; echo "Hello" | ./build/$(test).it1 >> $@ ; echo "" >> $@ ;)
|
|
|
|
all-it2.results: $(addprefix build/,$(addsuffix .it2, $(TESTLIST)))
|
|
-rm -f $@
|
|
$(foreach test,$(TESTLIST), echo -n "$(test) " >> $@; echo "Hello" | ./build/$(test).it2 >> $@ ; echo "" >> $@ ;)
|
|
|
|
clean:
|
|
-rm -f *.results build/*.it0* build/*.it1* build/*.it2*
|
|
|
|
###
|
|
# it0
|
|
|
|
build/%.it0.py: %.lang0 ../0-lang0py/lang0py.exe
|
|
cat $< | ../0-lang0py/lang0py.exe > $@
|
|
|
|
build/%.it0.c: build/%.it0.py
|
|
$(CYTHON) -3 --embed -o $@ $^
|
|
|
|
build/%.it0.o: build/%.it0.c
|
|
$(CC) -o $@ -c $^ -I$(PYPREFIX)/include/python$(PYVERSION)
|
|
|
|
build/%.it0: build/%.it0.o
|
|
$(CC) -o $@ $^ -lpython$(PYVERSION)
|
|
|
|
###
|
|
# it1
|
|
|
|
build/%.it1.py: %.lang0 ../1-lang0py/lang0py.exe
|
|
cat $< | ../1-lang0py/lang0py.exe > $@
|
|
|
|
build/%.it1.c: build/%.it1.py
|
|
$(CYTHON) -3 --embed -o $@ $^
|
|
|
|
build/%.it1.o: build/%.it1.c
|
|
$(CC) -o $@ -c $^ -I$(PYPREFIX)/include/python$(PYVERSION)
|
|
|
|
build/%.it1: build/%.it1.o
|
|
$(CC) -o $@ $^ -lpython$(PYVERSION)
|
|
|
|
###
|
|
# it2
|
|
|
|
build/%.it2.c: %.lang0 ../2-lang0c/lang0c.exe
|
|
cat $< | ../2-lang0c/lang0c.exe > $@
|
|
|
|
build/%.it2.o: build/%.it2.c
|
|
$(CC) -o $@ -c $^ -I$(PYPREFIX)/include/python$(PYVERSION)
|
|
|
|
build/%.it2: build/%.it2.o
|
|
$(CC) -o $@ $^ -lpython$(PYVERSION)
|