# WARNING: This Makefile is largely redundant with the .cabal file and will be deleted at some point.
# It has some crufty shortcuts used by the developers.
#====================================================================================================
all: runtime
#all: runtime trans
ifeq (,$(GHC))
GHC= ghc
endif
#====================================================================================================
# First, some entrypoints that help build the runtime
#====================================================================================================
# PARGHCOPTS=-feager-blackholing
default:
# This target builds CnC as precompiled modules:
# Pick default schedulers as well:
$(GHC) --make -c -cpp Intel/CncUtil.hs
$(GHC) --make -c -cpp -DCNC_SCHEDULER=2 Intel/CncPure.hs
$(GHC) --make -c -cpp -DCNC_SCHEDULER=5 Intel/Cnc.hs
runtime:
runhaskell ./Setup.hs configure
runhaskell ./Setup.hs build
@echo
# TEMP [2010.10.06] Disabling doc build
# $(MAKE) setup_doc
# $(MAKE) setup_test
setup_doc:
@echo ================================================================================
@echo Building Documentation
@echo ================================================================================
runhaskell ./Setup.hs haddock
setup_test:
@echo
@echo ================================================================================
@echo Running Test executable in the cabal distribution package
@echo ================================================================================
runhaskell ./Setup.hs test
interact:
ghci -cpp -DCNC_SCHEDULER=2 Intel/CncPure.hs
interactIO:
ghci -cpp -DCNC_SCHEDULER=5 Intel/Cnc.hs
test:
THREADS=1 ./run_all_examples.sh
longtest:
TRIALS=3 NONSTRICT=1 LONGRUN=1 THREADSETTINGS=="0 1 2 3 4 8" ./run_all_examples.sh &> /dev/stdout | tee all_tests.log
# TRIALS=3 NONSTRICT=1 LONGRUN=1 THREADSETTINGS=="0 1 2 3 4 8" ./run_all_examples.sh &> /dev/stdout | tee all_tests.log
# LONGRUN=1 THREADSETTINGS="0 1 2 3 4 8" ./run_all_tests.sh &> /dev/stdout | tee all_tests.log
# TRIALS=3 NONSTRICT=1 LONGRUN=1 THREADSETTINGS="0 1 2 3 4 6 7 8 10 11 12 16 20 24 28 32 36 38 42 46 47 48 " ./run_all_FROMPACKED.sh &> /dev/stdout | tee all_tests.log
distro: pkg
pkg:
./build_distro.sh
wc:
cloc --by-file $(FILES)
wc $(FILES)
DOCBASE=html_doc
doc:
mkdir -p $(DOCBASE)/url/Intel/
ls Intel/*.hs | xargs -i HsColour -html {} -ohtml_doc/url/{}
haddock --source-base=url/ --source-module=url/%F -o html_doc -html --optghc -cpp Intel/Cnc.hs Intel/CncPure.hs
distclean: clean
rm -rf distro_20*
pkgtest:
rm -rf dist/haskell-cnc-*
cabal sdist
(cd dist; tar xzvf haskell-cnc-*.tar.gz)
(cd dist/haskell-cnc-*/ && cabal install)
#====================================================================================================
# For benchmark test runs:
cleanrun:
rm -f uname.txt cpuinfo issue all_tests*.log results.dat
mvrun:
mkdir -p last_run
cp uname.txt cpuinfo issue all_tests*.log results.dat last_run/
UNAME=$(shell uname -n )
BENCHPACK="benchpack_$(UNAME)"
# Make a separate directory for running benchmarks.
benchpack:
mkdir -p "$(BENCHPACK)/examples/"
mkdir -p "$(BENCHPACK)/Intel/"
cp -a *big_run*.sh default_opt_settings.sh ntimes ntimes_minmedmax ntimes_binsearch.sh binsearch_throughput timeout.sh timeout.hs \
benchlist*.txt install_environment_vars.sh runcnc run_all_shared.sh run_all_examples.sh haskell_cnc.h "$(BENCHPACK)/"
cp -a Intel/*.hs "$(BENCHPACK)/Intel/"
cp -a examples/*.hs "$(BENCHPACK)/examples/"
cp -a examples/*.dat "$(BENCHPACK)/examples/"
#====================================================================================================
clean: cleanruntime cleantests
runhaskell ./Setup.hs clean
cleanruntime:
rm -f ./Intel/*.o ./Intel/*.hi Intel/*~
rm -f ./Intel/Cnc/*.o Intel/Cnc/*.hi
rm -f $(BUILDDIR)/Intel/*.o $(BUILDDIR)/Intel/*.hi
rm -f $(BUILDDIR)/Intel/Cnc/*.o $(BUILDDIR)/Intel/Cnc/*.hi
rm -f *.aux little*.log
(cd examples; $(MAKE) clean)
cleantests:
(cd tests_spec; $(MAKE) clean)
#====================================================================================================
# Prevent odd make builtin rules re: cnc.sh
.SUFFIXES: