TOOL_DIR = tools UNAME := $(shell uname | tr "A-Z" "a-z") ifeq ($(UNAME), darwin) ONAME := $(shell uname -s | tr "A-Z" "a-z") else ONAME := $(shell uname -o | tr "A-Z" "a-z") endif MNAME := $(shell uname -m | tr "A-Z" "a-z") ifeq ($(UNAME), linux) ifeq ($(MNAME), i686) LIB := x86-linux/libminisatprover* endif ifeq ($(MNAME), x86_64) # amd64 is a nickname for x86_64 LIB := amd64-linux/libminisatprover* endif endif ifeq ($(UNAME), windows) ifeq ($(MNAME), i686) LIB := x86-windows/minisatprover* endif ifeq ($(MNAME), x86_64) LIB := x86-windows/minisatprover* endif endif ifeq ($(basename $(UNAME)), mingw32_nt-6) ifeq ($(MNAME), i686) LIB := x86-windows/minisatprover* endif ifeq ($(MNAME), x86_64) LIB := x86-windows/minisatprover* endif endif ifeq ($(ONAME), cygwin) ifeq ($(MNAME), i686) LIB := x86-windows/minisatprover* endif ifeq ($(MNAME), x86_64) LIB := x86-windows/minisatprover* endif endif ifeq ($(UNAME), darwin) ifeq ($(MNAME), i686) LIB := x86-mac/libminisatprover* endif ifeq ($(MNAME), x86_64) LIB := x86-mac/libminisatprover* endif WGET_COMMAND := curl -O else WGET_COMMAND := wget endif # Calling `make` should only build all: alloyIG.jar lib build # Calling `make install to=` should only install install: mkdir -p $(to) mkdir -p $(to)/lib mkdir -p $(to)/tools cp -f lib/*minisatprover* $(to)/lib cp -f tools/alloy4.jar $(to)/tools cp -f alloyIG.jar $(to) cp -f LICENSE $(to)/ cp -f CHANGES.md $(to)/claferIG-CHANGES.md cp -f README.md $(to)/claferIG-README.md cp -f -R IDEs $(to) cabal install --bindir=$(to) --ghc-option="-O" # Removes current build and makes a clean new one (Don't use if starting from scratch!) cleanEnv: make clean ghc-pkg unregister claferIG rm `which claferIG` make # this takes the version from the .cabal file. Need to run install first to produce Paths_claferIG.hs newVersion: ghc -isrc src/dateVer.hs dist/build/autogen/Paths_claferIG.hs -outputdir dist/build --make -o dateVer ./dateVer > src/Language/Clafer/IG/Version.hs # Build takes less time. For ease of development. build: alloyIG.jar cabal install --only-dependencies cabal configure cabal build alloyIG.jar: src/manifest src/org/clafer/ig/AlloyIG.java src/manifest src/org/clafer/ig/Util.java src/org/clafer/ig/AlloyIGException.java src/edu/mit/csail/sdg/alloy4compiler/parser/AlloyCompiler.java $(MAKE) -C $(TOOL_DIR) mkdir -p dist/javabuild javac -source 1.6 -target 1.6 -cp "tools/alloy4.jar" -d dist/javabuild src/org/clafer/ig/AlloyIG.java src/org/clafer/ig/Util.java src/org/clafer/ig/AlloyIGException.java src/edu/mit/csail/sdg/alloy4compiler/parser/AlloyCompiler.java jar cfm alloyIG.jar src/manifest -C dist/javabuild org/clafer/ig/ -C dist/javabuild edu lib: @if [[ "$(basename $(UNAME))"=="mingw32_nt-6" && -z "$(shell which unzip)" ]] ; then \ mingw-get install msys-unzip-bin; \ fi @if test -z $(LIB); then \ echo "[WARNING] Did not find a minisat prover binary suitable for your system. You may need to build the binary yourself."; \ else \ unzip tools/alloy4.jar $(LIB) -d lib; \ chmod +x lib/$(LIB); \ cp lib/$(LIB) lib; \ fi test: # Only test a subset of the suite. The other cases do not work yet. cabal configure --enable-tests cabal build mkdir dist/build/test-suite/lib cp alloyIG.jar dist/build/test-suite/lib cabal test ./claferIG --all=4 -s dist/run test/suite/backquoted.cfr ./claferIG --all=4 -s dist/run test/suite/BobsTeam.cfr ./claferIG --all=4 -s dist/run test/suite/inconsistent.cfr ./claferIG --all=4 -s dist/run test/suite/PersonFingers.cfr ./claferIG --all=4 -s dist/run test/suite/waitingLine.cfr ./claferIG --all=4 -s dist/run test/suite/subclaferCardinality.cfr clean: rm -rf dist rm -f alloyIG.jar rm -f claferIG rm -rf lib rm -f dateVer*