BNFC-2.5.0: Makefile
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 $@