CABALVERSION:=$(shell grep -Po "(?<=^Version: ).*" BNFC.cabal) VERSION:=$(CABALVERSION) RELEASEDIR=dist/releases/$(VERSION) MACBUILDER=grammaticalframework.org all: build build: cabal configure && cabal build install: cabal install clean: cabal clean .PHONY: all build install clean release: $(RELEASEDIR)/bnfc-$(VERSION).tar.gz \ $(RELEASEDIR)/bnfc-$(VERSION)-mac.gz # Commane line aliases release-source: $(RELEASEDIR)/bnfc-$(VERSION).tar.gz release-linux: $(RELEASEDIR)/bnfc-$(VERSION)-linux.gz release-mac: $(RELEASEDIR)/bnfc-$(VERSION)-mac.gz release-win: $(RELEASEDIR)/bnfc-$(VERSION)-win.exe .PHONY: release release-source release-linux release-mac release-win $(RELEASEDIR): mkdir -p $@ $(RELEASEDIR)/bnfc-$(VERSION).tar.gz: | $(RELEASEDIR) cabal configure cabal sdist mv dist/BNFC-$(CABALVERSION).tar.gz $@ $(RELEASEDIR)/bnfc-$(VERSION)-linux.gz: $(RELEASEDIR)/bnfc-$(VERSION).tar.gz $(eval TMPDIR=$(shell mktemp -d)) $(eval CURDIR=$(shell pwd)) tar xf $< -C $(TMPDIR) ls $(TMPDIR) rm -rf $(TMPDIR) $(RELEASEDIR)/bnfc-$(VERSION)-mac.gz: $(RELEASEDIR)/bnfc-$(VERSION).tar.gz scp $< $(MACBUILDER): ssh $(MACBUILDER) "\ [ -d 'BNFC-$(CABALVERSION)' ] && rm -rf 'BNFC-$(CABALVERSION)'; \ tar xf bnfc-$(VERSION).tar.gz; \ cd BNFC-$(CABALVERSION); \ cabal configure && cabal build; \ gzip -c dist/build/bnfc/bnfc > ../bnfc-$(VERSION)-mac.gz" scp $(MACBUILDER):bnfc-$(VERSION)-mac.gz $@