HUGS_PATHS = -Pabstract/:do/:game/:neutral/:op/:query/:util/: GHC_PATHS = -iabstract -ido -igame -ineutral -iop -iquery -iutil GHC_OPTS = -fallow-overlapping-instances \ -fallow-undecidable-instances \ -fglasgow-exts GHC_MEM = -M250m -K250m -H250m GHC_LIBS = -syslib data -syslib posix GHC_OPT = -O2 GHC_CMDL = $< $(GHC_PATHS) $(GHC_LIBS) $(GHC_OPTS) +RTS $(GHC_MEM) -RTS GHC_CMD = ghc --make $(GHC_OPT) $(GHC_CMDL) GHCI_CMD = ghci $(GHC_CMDL) ############################################################################### .PHONY: play run play: Play.hs hugs -98 +o +s +t -h1000000 $(HUGS_PATHS) $< gplay: Play.hs $(GHCI_CMD) Play.hs: $(wildcard */*.hs) ( echo "module Play where" \ ; for mod in $^; do echo -n "import " \ ; echo $$mod | sed 's|^.*/||;s|.hs||'; done \ ; echo "import List" ; echo "import FiniteMap" \ ; echo "import Monad"; echo "import Ratio" \ ) > $@ run: main ./$< +RTS $(GHC_MEM) -RTS main: Main.hs $(GHC_CMD) -o main ############################################################################### .PHONY: objclean bakclean clean clean: bakclean objclean rm -f main objclean: rm -f */*.{o,hi} *.{o,hi} bakclean: rm -f */*~ *