use tabs for Makefile
[jackhill/mal.git] / Makefile
index 6433e44..eb810be 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -61,10 +61,12 @@ DEFERRABLE=1
 OPTIONAL=1
 
 # Extra implementation specific options to pass to runtest.py
+logo_TEST_OPTS = --start-timeout 60 --test-timeout 120
 mal_TEST_OPTS = --start-timeout 60 --test-timeout 120
 miniMAL_TEST_OPTS = --start-timeout 60 --test-timeout 120
 plpgsql_TEST_OPTS = --start-timeout 60 --test-timeout 180
 plsql_TEST_OPTS = --start-timeout 120 --test-timeout 120
+perl6_TEST_OPTS = --test-timeout=60
 
 DOCKERIZE=
 
@@ -75,11 +77,12 @@ DOCKERIZE =
 # Settings
 #
 
-IMPLS = ada awk bash c d clojure coffee cpp crystal cs erlang elisp \
-       elixir es6 factor forth fsharp go groovy guile haskell haxe \
-       io java julia js kotlin lua make mal ocaml matlab miniMAL \
-       nim objc objpascal perl php plpgsql plsql ps python r racket \
-       rpython ruby rust scala swift swift3 tcl vb vhdl vimscript
+IMPLS = ada awk bash basic c d chuck clojure coffee clisp cpp crystal cs dart \
+       erlang elisp elixir es6 factor forth fsharp go groovy guile haskell \
+       haxe io java julia js kotlin logo lua make mal ocaml matlab miniMAL \
+       nim objc objpascal perl perl6 php pil plpgsql plsql powershell ps \
+       python r racket rpython ruby rust scala swift swift3 tcl vb vhdl \
+       vimscript
 
 step0 = step0_repl
 step1 = step1_read_print
@@ -106,11 +109,14 @@ regress_step9 = $(regress_step8) step9
 regress_stepA = $(regress_step9) stepA
 
 test_EXCLUDES += test^bash^step5   # never completes at 10,000
+test_EXCLUDES += test^basic^step5  # too slow, and limited to ints of 2^16
+test_EXCLUDES += test^logo^step5   # too slow for 10,000
 test_EXCLUDES += test^make^step5   # no TCO capability (iteration or recursion)
 test_EXCLUDES += test^mal^step5    # host impl dependent
 test_EXCLUDES += test^matlab^step5 # never completes at 10,000
 test_EXCLUDES += test^plpgsql^step5 # too slow for 10,000
 test_EXCLUDES += test^plsql^step5  # too slow for 10,000
+test_EXCLUDES += test^powershell^step5  # too slow for 10,000
 
 perf_EXCLUDES = mal  # TODO: fix this
 
@@ -141,13 +147,17 @@ STEP_TEST_FILES = $(strip $(wildcard \
 ada_STEP_TO_PROG =     ada/$($(1))
 awk_STEP_TO_PROG =     awk/$($(1)).awk
 bash_STEP_TO_PROG =    bash/$($(1)).sh
+basic_STEP_TO_PROG =   basic/$($(1)).bas
 c_STEP_TO_PROG =       c/$($(1))
 d_STEP_TO_PROG =       d/$($(1))
+chuck_STEP_TO_PROG =   chuck/$($(1)).ck
 clojure_STEP_TO_PROG = clojure/target/$($(1)).jar
 coffee_STEP_TO_PROG =  coffee/$($(1)).coffee
+clisp_STEP_TO_PROG = clisp/$($(1)).fas
 cpp_STEP_TO_PROG =     cpp/$($(1))
 crystal_STEP_TO_PROG = crystal/$($(1))
 cs_STEP_TO_PROG =      cs/$($(1)).exe
+dart_STEP_TO_PROG =    dart/$($(1)).dart
 elisp_STEP_TO_PROG =   elisp/$($(1)).el
 elixir_STEP_TO_PROG =  elixir/lib/mix/tasks/$($(1)).ex
 erlang_STEP_TO_PROG =  erlang/$($(1))
@@ -174,9 +184,12 @@ nim_STEP_TO_PROG =     nim/$($(1))
 objc_STEP_TO_PROG =    objc/$($(1))
 objpascal_STEP_TO_PROG = objpascal/$($(1))
 perl_STEP_TO_PROG =    perl/$($(1)).pl
+perl6_STEP_TO_PROG =   perl6/$($(1)).pl
 php_STEP_TO_PROG =     php/$($(1)).php
+pil_STEP_TO_PROG =     pil/$($(1)).l
 plpgsql_STEP_TO_PROG = plpgsql/$($(1)).sql
 plsql_STEP_TO_PROG =   plsql/$($(1)).sql
+powershell_STEP_TO_PROG =  powershell/$($(1)).ps1
 ps_STEP_TO_PROG =      ps/$($(1)).ps
 python_STEP_TO_PROG =  python/$($(1)).py
 r_STEP_TO_PROG =       r/$($(1)).r
@@ -216,7 +229,7 @@ get_build_prefix = $(if $(strip $(DOCKERIZE)),docker run -it --rm -u $(shell id
 # Returns a command prefix (docker command and environment variables)
 # necessary to launch the given impl and step
 get_run_prefix = $(strip $(if $(strip $(DOCKERIZE)),\
-    docker run -e STEP=$($2) \
+    docker run -e STEP=$($2) -e MAL_IMPL=$(MAL_IMPL) \
     -it --rm -u $(shell id -u) \
     -v $(dir $(abspath $(lastword $(MAKEFILE_LIST)))):/mal \
     -w /mal/$(call actual_impl,$(1)) \
@@ -225,7 +238,7 @@ get_run_prefix = $(strip $(if $(strip $(DOCKERIZE)),\
     $(foreach env,$(3),-e $(env)) \
     $(call impl_to_image,$(call actual_impl,$(1))) \
     ,\
-    env STEP=$($2) \
+    env STEP=$($2) MAL_IMPL=$(MAL_IMPL) \
     $(if $(filter haxe,$(1)),HAXE_MODE=$(HAXE_MODE),) \
     $(if $(filter factor,$(1)),FACTOR_ROOTS=$(FACTOR_ROOTS),) \
     $(3)))
@@ -233,7 +246,7 @@ get_run_prefix = $(strip $(if $(strip $(DOCKERIZE)),\
 # Takes impl and step
 # Returns the runtest command prefix (with runtest options) for testing the given step
 get_runtest_cmd = $(call get_run_prefix,$(1),$(2),$(if $(filter cs fsharp tcl vb,$(1)),RAW=1,)) \
-                   ../runtest.py $(TEST_OPTS) $(opt_DEFERRABLE) $(opt_OPTIONAL) $(call $(1)_TEST_OPTS)
+                   ../runtest.py $(opt_DEFERRABLE) $(opt_OPTIONAL) $(call $(1)_TEST_OPTS) $(TEST_OPTS)
 
 # Takes impl and step
 # Returns the runtest command prefix (with runtest options) for testing the given step
@@ -242,6 +255,8 @@ get_argvtest_cmd = $(call get_run_prefix,$(1),$(2)) ../run_argv_test.sh
 vimscript_TEST_OPTS = --test-timeout 30
 ifeq ($(MAL_IMPL),vimscript)
 mal_TEST_OPTS = --start-timeout 60 --test-timeout 180
+else ifeq ($(MAL_IMPL),powershell)
+mal_TEST_OPTS = --start-timeout 60 --test-timeout 180
 endif
 
 # Derived lists