SRC_DIR := src TEST_DIR := test ifeq ($(OS),Windows_NT) EXE := .exe endif all: build build: alloy4.2.jar stack build install: mkdir -p $(to) cp -f README.md $(to)/clafer-README.md cp -f LICENSE $(to)/ cp -f CHANGES.md $(to)/clafer-CHANGES.md cp -f alloy4.2.jar $(to) cp -f ecore2clafer.jar $(to) cp `stack path --local-install-root`/bin/clafer$(EXE) $(to) # regenerate grammar, call after clafer.cf changed grammar: $(MAKE) -C $(SRC_DIR) grammar # Just like "init" but with enabled profiler # this will reinstall everything with profiling support, build clafer, and copy it to . prof: alloy4.2.jar stack build --executable-profiling --library-profiling --ghc-options="-prof -fprof-auto -auto-all -caf-all -rtsopts -osuf p_o" .PHONY: test test: cp `stack path --local-install-root`/bin/clafer$(EXE) . stack test 2>/dev/null || : # supress error message and exit code if fail $(MAKE) -C $(TEST_DIR) test generateAlloyJSHTMLDot: $(MAKE) -C $(TEST_DIR) generateAlloyJSHTMLDot diffRegressions: $(MAKE) -C $(TEST_DIR) diffRegressions reg: $(MAKE) -C $(TEST_DIR) reg .PHONY: clean clean: stack clean $(MAKE) -C $(SRC_DIR) clean $(MAKE) cleanTools $(MAKE) cleanTest .PHONY: cleanTest cleanTest: $(MAKE) -C $(TEST_DIR) clean .PHONY: cleanTools cleanTools: find . -type f -name '*.class' -print0 | xargs -0 rm -f .PHONY: tags tags: hasktags --ctags --extendedctag --ignore-close-implementation . .PHONY: codex codex: codex update mv codex.tags tags WGET_COMMAND := wget ifeq ($(OS),Windows_NT) ifeq ($(shell which wget), which: wget: unkown command) pacman -S make wget endif else UNAME_S := $(shell uname -s) ifeq ($(UNAME_S),Darwin) WGET_COMMAND := curl -O endif endif alloy4.2.jar: @if test ! -f "alloy4.2.jar"; then \ echo "[WARNING] Missing alloy4.2.jar. Downloading..."; \ $(WGET_COMMAND) http://alloy.mit.edu/alloy/downloads/alloy4.2_2015-02-22.jar; \ mv alloy4.2_2015-02-22.jar alloy4.2.jar; \ fi