diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 62 |
1 files changed, 52 insertions, 10 deletions
@@ -10,7 +10,9 @@ PYTHON = python # Settings # -IMPLS = bash c clojure cs java js make mal perl php ps python ruby +IMPLS = bash c clojure coffee cs forth go haskell java js lua make mal \ + ocaml matlab miniMAL perl php ps python r racket ruby rust \ + scala vb step0 = step0_repl step1 = step1_read_print @@ -21,21 +23,27 @@ step5 = step5_tco step6 = step6_file step7 = step7_quote step8 = step8_macros -step9 = step9_interop -stepA = stepA_more +step9 = step9_try +stepA = stepA_mal EXCLUDE_TESTS += test^bash^step5 # no stack exhaustion or completion EXCLUDE_TESTS += test^c^step5 # segfault EXCLUDE_TESTS += test^cs^step5 # fatal stack overflow fault +EXCLUDE_TESTS += test^haskell^step5 # test completes EXCLUDE_TESTS += test^make^step5 # no TCO capability/step EXCLUDE_TESTS += test^mal^step5 # no TCO capability/step +EXCLUDE_TESTS += test^go^step5 # test completes, even at 100,000 EXCLUDE_TESTS += test^php^step5 # test completes, even at 100,000 +EXCLUDE_TESTS += test^racket^step5 # test completes EXCLUDE_TESTS += test^ruby^step5 # test completes, even at 100,000 +EXCLUDE_TESTS += test^rust^step5 # no catching stack overflows +EXCLUDE_TESTS += test^ocaml^step5 # test completes, even at 1,000,000 # interop tests now implemented yet -EXCLUDE_TESTS += test^cs^step9 test^java^step9 test^mal^step9 \ - test^php^step9 test^ps^step9 test^python^step9 \ - test^ruby^step9 +EXCLUDE_TESTS += test^cs^stepA test^go^stepA test^haskell^stepA \ + test^java^stepA test^mal^stepA test^mal^step0 \ + test^php^stepA test^ps^stepA test^python^stepA \ + test^ruby^stepA test^rust^stepA test^vb^stepA EXCLUDE_PERFS = perf^mal # TODO: fix this @@ -48,35 +56,67 @@ STEP_TEST_FILES = $(strip $(wildcard $(1)/tests/$($(2)).mal) $(wildcard tests/$( bash_STEP_TO_PROG = bash/$($(1)).sh c_STEP_TO_PROG = c/$($(1)) clojure_STEP_TO_PROG = clojure/src/$($(1)).clj +coffee_STEP_TO_PROG = coffee/$($(1)).coffee cs_STEP_TO_PROG = cs/$($(1)).exe +forth_STEP_TO_PROG = forth/$($(1)).fs +go_STEP_TO_PROG = go/$($(1)) java_STEP_TO_PROG = java/src/main/java/mal/$($(1)).java +haskell_STEP_TO_PROG = haskell/$($(1)) js_STEP_TO_PROG = js/$($(1)).js +lua_STEP_TO_PROG = lua/$($(1)).lua make_STEP_TO_PROG = make/$($(1)).mk mal_STEP_TO_PROG = mal/$($(1)).mal +ocaml_STEP_TO_PROG = ocaml/$($(1)) +matlab_STEP_TO_PROG = matlab/$($(1)).m +miniMAL_STEP_TO_PROG = miniMAL/$($(1)).json perl_STEP_TO_PROG = perl/$($(1)).pl php_STEP_TO_PROG = php/$($(1)).php ps_STEP_TO_PROG = ps/$($(1)).ps python_STEP_TO_PROG = python/$($(1)).py +r_STEP_TO_PROG = r/$($(1)).r +racket_STEP_TO_PROG = racket/$($(1)).rkt ruby_STEP_TO_PROG = ruby/$($(1)).rb +rust_STEP_TO_PROG = rust/target/$($(1)) +scala_STEP_TO_PROG = scala/$($(1)).scala +vb_STEP_TO_PROG = vb/$($(1)).exe +# Needed some argument munging +COMMA = , +noop = +SPACE = $(noop) $(noop) bash_RUNSTEP = bash ../$(2) $(3) c_RUNSTEP = ../$(2) $(3) clojure_RUNSTEP = lein with-profile +$(1) trampoline run $(3) +coffee_RUNSTEP = coffee ../$(2) $(3) cs_RUNSTEP = mono ../$(2) --raw $(3) +forth_RUNSTEP = gforth ../$(2) $(3) +go_RUNSTEP = ../$(2) $(3) +haskell_RUNSTEP = ../$(2) $(3) java_RUNSTEP = mvn -quiet exec:java -Dexec.mainClass="mal.$($(1))" -Dexec.args="--raw$(if $(3), $(3),)" js_RUNSTEP = node ../$(2) $(3) +lua_RUNSTEP = ../$(2) --raw $(3) make_RUNSTEP = make -f ../$(2) $(3) mal_RUNSTEP = $(call $(MAL_IMPL)_RUNSTEP,$(1),$(call $(MAL_IMPL)_STEP_TO_PROG,stepA),../$(2),") #" -perl_RUNSTEP = perl ../$(2) $(3) +ocaml_RUNSTEP = ../$(2) $(3) +matlab_args = $(subst $(SPACE),$(COMMA),$(foreach x,$(strip $(1)),'$(x)')) +matlab_RUNSTEP = matlab -nodisplay -nosplash -nodesktop -nojvm -r "$($(1))($(call matlab_args,$(3)));quit;" +miniMAL_RUNSTEP = miniMAL ../$(2) $(3) +perl_RUNSTEP = perl ../$(2) --raw $(3) php_RUNSTEP = php ../$(2) $(3) -ps_RUNSTEP = $(4)gs -q -dNODISPLAY -- ../$(2) $(3)$(4) +ps_RUNSTEP = $(4)gs -q -I./ -dNODISPLAY -- ../$(2) $(3)$(4) python_RUNSTEP = $(PYTHON) ../$(2) $(3) +r_RUNSTEP = Rscript ../$(2) $(3) +racket_RUNSTEP = ../$(2) $(3) ruby_RUNSTEP = ruby ../$(2) $(3) +rust_RUNSTEP = ../$(2) $(3) +scala_RUNSTEP = sbt 'run-main $($(1))$(if $(3), $(3),)' +vb_RUNSTEP = mono ../$(2) --raw $(3) # Extra options to pass to runtest.py -cs_TEST_OPTS = --redirect +cs_TEST_OPTS = --mono mal_TEST_OPTS = --start-timeout 60 --test-timeout 120 +vb_TEST_OPTS = --mono # Derived lists @@ -156,5 +196,7 @@ $(IMPL_PERF): echo 'Running: $(call $(impl)_RUNSTEP,stepA,$(call $(impl)_STEP_TO_PROG,stepA),../tests/perf1.mal)'; \ $(call $(impl)_RUNSTEP,stepA,$(call $(impl)_STEP_TO_PROG,stepA),../tests/perf1.mal); \ echo 'Running: $(call $(impl)_RUNSTEP,stepA,$(call $(impl)_STEP_TO_PROG,stepA),../tests/perf2.mal)'; \ - $(call $(impl)_RUNSTEP,stepA,$(call $(impl)_STEP_TO_PROG,stepA),../tests/perf2.mal)) + $(call $(impl)_RUNSTEP,stepA,$(call $(impl)_STEP_TO_PROG,stepA),../tests/perf2.mal); \ + echo 'Running: $(call $(impl)_RUNSTEP,stepA,$(call $(impl)_STEP_TO_PROG,stepA),../tests/perf3.mal)'; \ + $(call $(impl)_RUNSTEP,stepA,$(call $(impl)_STEP_TO_PROG,stepA),../tests/perf3.mal)) |
