include header.mk # # ------------------------------------------------------------------------ # Our parallel make rule # .PHONY: all $(DIRS) all: boot start $(DIRS) @echo "nobench run finished at "`date` > finished.txt $(MAKE) publish $(DIRS): boot start $(MAKE) --directory=$@ .PHONY: start start: boot @echo "nobench run started at "`date` > start.txt ./bin/versions ghc ghc-asm ghc-old ghci hugs nhc98 yhc hbc jhc-grin > versions.db # # Do a single test only, useful when concentrating optimisation effort... # $(patsubst %, %/$(shell basename %), ${DIRS}): boot @echo "nobench run started at "`date` > bench.results @./bin/versions $(COMPILERS) >> bench.results @./bin/versions $(COMPILERS) > versions.db @./bin/arch >> bench.results @( cd `dirname $@` ; $(MAKE) ) | tee bench.log @echo "nobench run finished at "`date` >> bench.results # # ------------------------------------------------------------------------ # generating initial test data # # all scripts SCRIPTS=bin/versions \ bin/gen-report \ bin/timeout \ bin/bench \ bin/sumcol-gen \ bin/fasta-gen # all data files to generate DATAS=imaginary/sumcol/sumcol.input \ spectral/sorting/sorting.input \ real/rsa/rsa.input \ spectral/regex-dna/regex-dna.input \ spectral/k-nucleotide/k-nucleotide.input \ spectral/reverse-complement/reverse-complement.input \ imaginary/jl_rsa/jl_rsa.stdin # # ------------------------------------------------------------------------ # Getting started # .PHONY: boot boot: $(DATAS) bin/gen-report bin/bench bin/timeout bin/versions chmod +x bin/arch # # build system scripts # bin/versions: bin/versions.hs cd bin && $(GHC) -O versions.hs -o versions bin/timeout: bin/timeout.hs cd bin && $(GHC) -O -threaded -o timeout timeout.hs --make bin/bench: bin/bench.hs cd bin && $(GHC) -O -o bench bench.hs --make bin/gen-report: bin/gen-report.hs cd bin && $(GHC) -O --make -o gen-report gen-report.hs # # data generating scripts # bin/sumcol-gen: bin/sumcol-gen.hs cd bin && $(GHC) -O -o sumcol-gen sumcol-gen.hs bin/fasta-gen: bin/fasta-gen.hs cd bin && $(GHC) -O -o fasta-gen fasta-gen.hs # # particular data file generation rules # # around 100M (!!) imaginary/sumcol/sumcol.input: bin/sumcol-gen bin/sumcol-gen 20000000 > imaginary/sumcol/sumcol.input imaginary/jl_rsa/jl_rsa.stdin: bin/fasta-gen bin/fasta-gen 10000 > imaginary/jl_rsa/jl_rsa.stdin real/rsa/rsa.input: bin/fasta-gen bin/fasta-gen 2500 > real/rsa/rsa.input spectral/regex-dna/regex-dna.input: bin/fasta-gen bin/fasta-gen 250000 > spectral/regex-dna/regex-dna.input spectral/k-nucleotide/k-nucleotide.input: bin/fasta-gen bin/fasta-gen 250000 > spectral/k-nucleotide/k-nucleotide.input spectral/reverse-complement/reverse-complement.input: bin/fasta-gen bin/fasta-gen 500000 > spectral/reverse-complement/reverse-complement.input spectral/sorting/sorting.input: head -5000 $(WORDS) > spectral/sorting/sorting.input # # ------------------------------------------------------------------------ # Generating rules # # publish results.html:: find $(DIRS) -name '*.db' | xargs bin/gen-report > results.html # # ------------------------------------------------------------------------ # Publishing # .PHONY: publish publish: results.html @if [ "$(PUBLISH)" = "YES" ] ; then $(PUBLISH_CMD); else echo "Not publishing" ; fi # # ------------------------------------------------------------------------ # Cleaning # # Note this is a recursive make call. It jumps down into a test # directory, runs 'make clean', which runs the 'clean' target in # footer.mk # clean: find . -name '*.o' -exec rm -f {} \; find . -name '*.hi' -exec rm -f {} \; for t in $(DIRS) ; do ( cd $$t ; $(MAKE) clean ) ; done rm -f bench.* *~ cd bin && rm -f bench timeout sumcol-gen fasta-gen *.hi *.o *~