OBJECT_DIR := build/$(shell uname -s)-$(shell uname -m)
INTERFACE_DIR := build/Interface
MODULES = $(wildcard src/*.hs) \
$(wildcard src/NumericPrelude/*.hs) \
$(wildcard src/Algebra/*.hs) \
$(wildcard src/Algebra/NormedSpace/*.hs) \
$(wildcard src/Number/*.hs) \
$(wildcard src/Number/Physical/*.hs) \
$(wildcard src/Number/DimensionTerm/*.hs) \
$(wildcard src/Number/SI/*.hs) \
$(wildcard src/Number/ResidueClass/*.hs) \
$(wildcard src/Number/FixedPoint/*.hs) \
$(wildcard src/Number/Positional/*.hs) \
$(wildcard src/MathObj/*hs) \
$(wildcard src/MathObj/Permutation/*.hs) \
$(wildcard src/MathObj/Permutation/CycleList/*.hs) \
$(wildcard src/MathObj/PowerSeries/*.hs)
GHC_OPTIONS = -Wall -odir$(OBJECT_DIR) -hidir$(INTERFACE_DIR)
# names of literate modules after removing literary information
UNLIT_MODULES = $(patsubst %.lhs, %.hs, $(patsubst %.hs, , $(MODULES)))
# names of all modules without literary information
HS_MODULES = $(patsubst %.lhs, %.hs, $(MODULES))
STDINTERFACES = base/base.haddock parsec/parsec.haddock
HADDOCK_INCL = $(patsubst %, -i /usr/local/share/ghc-6.2/html/libraries/%, \
$(STDINTERFACES))
HC = ghc
HCI = ghci
.INTERMEDIATE: $(UNLIT_MODULES)
.PHONY: all doc clean build test ghci publish
all: build
clean:
-rm `find $(OBJECT_DIR) -name "*.o"`
-rm `find $(INTERFACE_DIR) -name "*.hi"`
test: build
# $(HC) -Wall -i:$(INTERFACE_DIR) -hide-package NumericPrelude -c test/Test.hs
$(HC) $(GHC_OPTIONS) -i:src:test --make -hide-package numeric-prelude -o testsuite test/Test/Run.hs
./testsuite
ghci:
$(HCI) -Wall -i:src:test +RTS -M256m -c30 -RTS test/Test.hs
ghci7:
$(HCI) -Wall -i:src:test -XCPP -DNoImplicitPrelude=RebindableSyntax +RTS -M256m -c30 -RTS test/Test.hs
ghci-gauss:
$(HCI) -Wall -i:src:test +RTS -M256m -c30 -RTS test/Test/MathObj/Gaussian/Variance.hs
ghci-compile:
$(HCI) -Wall -i:src:test +RTS -M256m -c30 -RTS -fobject-code -O -hidir=dist/build -odir=dist/build test/Test.hs
build:
-mkdir $(OBJECT_DIR)
$(HC) $(GHC_OPTIONS) -hide-package numeric-prelude --make -O $(MODULES)
doc: $(HS_MODULES)
haddock -o docs/html --dump-interface=docs/numericprelude.haddock $(HADDOCK_INCL) -h $(HS_MODULES)
%.hs: %.lhs
unlit $< $@
HASKELLORG_HTMLDIR = /home/darcs/numericprelude/docs/html
publish:
scp -r dist/doc/html/* cvs.haskell.org:$(HASKELLORG_HTMLDIR)/
#scp -r docs/html/* cvs.haskell.org:$(HASKELLORG_HTMLDIR)/
ssh cvs.haskell.org chmod -R o+r $(HASKELLORG_HTMLDIR)
#ssh cvs.haskell.org chmod o+x `find $(HASKELLORG_HTMLDIR) -type d`