SRC_DIR := src TEST_DIR := test TOOL_DIR := tools ifeq ($(OS),Windows_NT) else UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Darwin) MAC_USR_LIB := --extra-lib-dir=/opt/local/lib --extra-include-dir=/opt/local/include/ endif endif all: build init: cabal sandbox init --sandbox=../.clafertools-cabal-sandbox # Uncomment to use Haskell LTS in the sandbox # wget http://www.stackage.org/snapshot/lts-1.4/cabal.config # mv cabal.config ../.clafertools-cabal-sandbox # the constraint is there to prevent installing utf8-string-1 which conflicts with gitit, which requires utf8-string <= 0.3.8. cabal install --only-dependencies $(MAC_USR_LIB) --enable-tests --constraint="utf8-string==0.3.8" build: $(MAKE) -C $(TOOL_DIR) cabal configure cabal build install: mkdir -p $(to) mkdir -p $(to)/tools cp -f README.md $(to)/clafer-README.md cp -f LICENSE $(to)/ cp -f CHANGES.md $(to)/clafer-CHANGES.md cp -f tools/alloy4.2.jar $(to)/tools cp -f tools/XsdCheck.class $(to)/tools cp -f tools/ecore2clafer.jar $(to)/tools cabal install --bindir=$(to) $(GPLK_LIBS_INCLUDES) $(MAC_USR_LIB) --ghc-option="-O2" # Removes current build and makes a clean new one (Don't use if starting from scratch!) cleanEnv: make clean ghc-pkg unregister clafer --package-db=../.clafertools-cabal-sandbox/x86_64-windows-ghc-7.8.3 rm `which clafer` make # regenerate grammar, call after clafer.cf changed grammar: $(MAKE) -C $(SRC_DIR) grammar # build Schema.hs from ClaferIG.xsd, call after .xsd changed Schema.hs: $(MAKE) -C $(SRC_DIR) Schema.hs # build Css.hs from clafer.css, call after .css changed Css.hs: $(MAKE) -C $(SRC_DIR) Css.hs # Just like "init" but with enabled profiler # this will reinstall everything with profiling support, build clafer, and copy it to . prof: rm -rf ../.clafertools-cabal-sandbox cabal sandbox init --sandbox=../.clafertools-cabal-sandbox cabal install --only-dependencies $(MAC_USR_LIB) --enable-tests -p --enable-executable-profiling --enable-library-profiling $(MAKE) -C $(TOOL_DIR) cabal configure -p --enable-executable-profiling --enable-library-profiling cabal build --ghc-options="-prof -fprof-auto -auto-all -caf-all -rtsopts -osuf p_o" .PHONY : test test: cabal test $(MAKE) -C $(TEST_DIR) test generateAlloyJSPythonXMLXHTMLDot: $(MAKE) -C $(TEST_DIR) generateAlloyJSPythonXMLXHTMLDot diffRegressions: $(MAKE) -C $(TEST_DIR) diffRegressions reg: $(MAKE) -C $(TEST_DIR) reg clean: rm -f clafer cabal clean $(MAKE) -C $(SRC_DIR) clean $(MAKE) -C $(TOOL_DIR) clean $(MAKE) cleanTest cleanTest: $(MAKE) -C $(TEST_DIR) clean tags: hasktags --ctags --extendedctag .