2018-07-29 20:10:11 +03:00
|
|
|
BIN ?= bin
|
|
|
|
CABAL ?= cabal
|
|
|
|
DIST ?= dist
|
|
|
|
EMPTY ?= .make
|
|
|
|
PROJECT_NAME ?= rollbar-hs
|
|
|
|
STACK ?= stack
|
|
|
|
STACK_WORK ?= .stack-work
|
|
|
|
VERBOSITY ?= warn
|
2018-07-27 15:03:47 +03:00
|
|
|
|
|
|
|
CABAL_FILE := $(PROJECT_NAME).cabal
|
2018-07-29 22:19:06 +03:00
|
|
|
DOC_TEST := $(DIST)/build/doc-test/doc-test
|
2018-07-25 09:07:03 +03:00
|
|
|
GHCID := $(BIN)/ghcid
|
2018-07-29 20:10:11 +03:00
|
|
|
STACK_FLAGS := --verbosity $(VERBOSITY)
|
2018-07-25 09:07:03 +03:00
|
|
|
|
2018-07-29 22:26:42 +03:00
|
|
|
.DEFAULT_GOAL := build
|
2018-07-25 09:07:03 +03:00
|
|
|
|
2018-07-29 20:10:11 +03:00
|
|
|
$(BIN) $(DIST) $(EMPTY):
|
2018-07-27 15:03:47 +03:00
|
|
|
mkdir -p $@
|
2018-07-25 09:07:03 +03:00
|
|
|
|
2018-07-29 20:10:11 +03:00
|
|
|
$(CABAL_FILE): package.yaml
|
2018-07-27 15:03:47 +03:00
|
|
|
# `stack` has no way to run `hpack` directly.
|
|
|
|
# We can run `hpack` indirectly with little overhead.
|
2018-07-29 20:10:11 +03:00
|
|
|
$(STACK) $(STACK_FLAGS) build --dry-run
|
2018-07-27 15:03:47 +03:00
|
|
|
|
2018-07-29 23:07:43 +03:00
|
|
|
$(DOC_TEST):
|
|
|
|
rm -f $(EMPTY)/build
|
|
|
|
$(MAKE) $(EMPTY)/build
|
2018-07-29 22:19:06 +03:00
|
|
|
|
|
|
|
$(EMPTY)/build: $(EMPTY)/stack-setup README.md Setup.hs package.yaml stack.yaml src/**/*.hs test/**/*.hs | $(DIST)
|
2018-07-29 20:10:11 +03:00
|
|
|
$(STACK) $(STACK_FLAGS) build --no-run-tests --test
|
2018-07-29 23:07:43 +03:00
|
|
|
cp -R $$($(STACK) $(STACK_FLAGS) path --dist-dir)/build $(DIST)
|
2018-07-29 22:19:06 +03:00
|
|
|
touch $@
|
|
|
|
|
|
|
|
$(EMPTY)/stack-setup: | $(EMPTY)
|
|
|
|
$(STACK) $(STACK_FLAGS) setup
|
|
|
|
touch $@
|
|
|
|
|
|
|
|
$(GHCID): $(EMPTY)/stack-setup | $(BIN)
|
|
|
|
$(STACK) $(STACK_FLAGS) install ghcid --local-bin-path $(BIN)
|
2018-07-25 09:07:03 +03:00
|
|
|
|
2018-07-29 22:26:42 +03:00
|
|
|
.PHONT: build
|
|
|
|
build: $(EMPTY)/build
|
|
|
|
|
2018-07-27 15:03:47 +03:00
|
|
|
.PHONY: cabal-check
|
|
|
|
cabal-check: $(CABAL_FILE)
|
|
|
|
$(CABAL) check
|
|
|
|
|
2018-07-25 09:07:03 +03:00
|
|
|
.PHONY: clean
|
|
|
|
clean:
|
2018-07-27 15:03:47 +03:00
|
|
|
rm -f $(CABAL_FILE)
|
|
|
|
rm -fr $(BIN)
|
|
|
|
rm -fr $(DIST)
|
|
|
|
rm -fr $(EMPTY)
|
2018-07-25 09:07:03 +03:00
|
|
|
rm -fr $(STACK_WORK)
|
|
|
|
|
2018-07-27 15:03:47 +03:00
|
|
|
.PHONY: sdist
|
|
|
|
sdist: cabal-check | $(DIST)
|
|
|
|
$(CABAL) sdist
|
|
|
|
|
2018-07-25 09:07:03 +03:00
|
|
|
.PHONY: test
|
2018-07-29 23:07:43 +03:00
|
|
|
test: $(EMPTY)/build test-doc-test
|
|
|
|
|
|
|
|
.PHONY: test-doc-test
|
|
|
|
test-doc-test: $(DOC_TEST)
|
|
|
|
$<
|
2018-07-25 09:07:03 +03:00
|
|
|
|
2018-07-27 15:03:47 +03:00
|
|
|
.PHONY: upload-hackage
|
|
|
|
upload-hackage: sdist
|
|
|
|
@ $(CABAL) upload $(DIST)/$(PROJECT_NAME)-*.tar.gz
|
|
|
|
|
2018-07-25 09:07:03 +03:00
|
|
|
.PHONY: watch
|
|
|
|
watch: $(GHCID)
|
|
|
|
$(GHCID)
|