PKGS := \
hjugement \
- hjugement-protocol
+ hjugement-protocol \
+ hjugement-cli
hjugement-protocol/test: TEST_FLAGS:=
-HS = $(shell find . -name '*.hs' -not -name 'HLint.hs')
+
+HS = $(shell find $(PKGS) -name '*.hs' -not -name 'HLint.hs')
cabal := $(shell find . -name '*.cabal' -print -quit)
QUICKCHECK_TESTS = 1000
QUICKCHECK_MAXSIZE = 100
TEST_FLAGS = --quickcheck-tests $(QUICKCHECK_TESTS) --quickcheck-max-size $(QUICKCHECK_MAXSIZE)
+BENCH_HTML_FLAGS = --output benchmarks/html/$(shell sed -ne 's/^version: *\(.*\)/\1/p' $p/$p.cabal).html
all: build
cd $* && stack $(STACK_FLAGS) build $(STACK_BUILD_FLAGS)
.PHONY: $(PKGS) $(foreach p,$(PKGS),$(eval $p: $p/build))
-.PHONY: $(PKGS:=/test)
test: $(PKGS:=/test)
define test
$p/test:
- ! grep -q '^Test-Suite\>' $p/$p.cabal || \
+ ! grep -iq '^Test-Suite\>' $p/$p.cabal || \
{ cd $p && stack $$(STACK_FLAGS) test --test-arguments "$$(TEST_FLAGS)" $$(STACK_TEST_FLAGS); }
endef
$(foreach p,$(PKGS),$(eval $(call test)))
--test $(GHCID_TEST) \
$(GHCID_FLAGS)
+bench: $(PKGS:=/bench)
+define bench
+$p/bench:
+ mkdir -p $p/benchmarks/html
+ ! grep -iq '^Benchmark\>' $p/$p.cabal || \
+ { cd $p && stack $$(STACK_FLAGS) bench \
+ --benchmark-arguments "$(call BENCH_HTML_FLAGS) $$(BENCH_FLAGS)" \
+ $$(STACK_BENCH_FLAGS); }
+endef
+$(foreach p,$(PKGS),$(eval $(call bench)))
+
clean: $(PKGS:=/clean)
cleaner: $(PKGS:=/cleaner)
%/clean:
HLint.hs: $(HS)
sed -i -e '/^-- BEGIN: generated hints/,/^-- END: Generated by hlint/d' HLint.hs
echo '-- BEGIN: generated hints' >> HLint.hs
- hlint $(foreach p,$(PKGS),--find $p) | grep '^'infix | sort -u >> HLint.hs
+ hlint $(foreach p,$(PKGS),--find $p) | sed -ne 's/^- infix: \(.*\)/\1/p' | sort -u >>HLint.hs
echo '-- END: generated hints' >> HLint.hs
lint: $(PKGS:=/lint) $(HS)