CC ?= cc CFLAGS ?= -O2 -Wall -Wextra LDFLAGS ?= TARGET := flowlog .PHONY: all clean test inria bench tar .PHONY: quad quad-wam quad-wamvm quad-trace quad-itrace quad-tpl quad-scryer .PHONY: inria-wamvm-vmonly QUAD_FILE ?= QUAD_GOAL_FILES = ${.TARGETS:M*_quad.pl} .PHONY: ${QUAD_GOAL_FILES} ${QUAD_GOAL_FILES}: @: all: $(TARGET) $(TARGET): flowlog.c $(CC) $(CFLAGS) -pthread flowlog.c -lm $(LDFLAGS) -o $@ test: all @bash tests/run.sh inria: all @bash tests/run_inria_suite.sh bench: all @bash bench/run.sh # WAMVM conformance lock-in: require that the ISO suite runs fully in the # bytecode VM (no fallback to `wam`). This is stricter than `inria`. inria-wamvm-vmonly: all @FLOWLOG_ENGINE=wamvm FLOWLOG_PARALLEL_PROFILE=off FLOWLOG_WAMVM_REQUIRE_VM=1 \ bash tests/run_inria_suite.sh clean: rm -f $(TARGET) rm -fr ./build rm -fr ./results rm -f ./*.core tar: clean rm -f flowlog.tar.gz cd .. && tar --uid=0 --gid=0 --uname=root --gname=root -czvf flowlog/flowlog.tar.gz flowlog quad: all @bash tests/quad.sh ./flowlog --parallel-profile iso --engine tree -- ${QUAD_FILE} ${QUAD_GOAL_FILES} quad-wam: all @bash tests/quad.sh ./flowlog --parallel-profile iso --engine wam -- ${QUAD_FILE} ${QUAD_GOAL_FILES} quad-wamvm: all @bash tests/quad.sh ./flowlog --parallel-profile iso --engine wamvm -- ${QUAD_FILE} ${QUAD_GOAL_FILES} quad-trace: all @bash tests/quad.sh ./flowlog --trace --parallel-profile iso --engine tree -- ${QUAD_FILE} ${QUAD_GOAL_FILES} quad-itrace: all @bash tests/quad.sh ./flowlog --itrace --parallel-profile iso --engine tree -- ${QUAD_FILE} ${QUAD_GOAL_FILES} quad-tpl: @bash tests/quad.sh tpl -- ${QUAD_FILE} ${QUAD_GOAL_FILES} quad-scryer: @bash tests/quad.sh scryer-prolog -- ${QUAD_FILE} ${QUAD_GOAL_FILES}