config ?= release PONYC ?= ponyc PACKAGE := ponycheck GET_DEPENDENCIES_WITH := corral fetch CLEAN_DEPENDENCIES_WITH := corral clean COMPILE_WITH := corral run -- $(PONYC) BUILD_DIR ?= build/$(config) SRC_DIR ?= $(PACKAGE) EXAMPLES_DIR := examples tests_binary := $(BUILD_DIR)/$(PACKAGE) docs_dir := build/$(PACKAGE)-docs ifdef config ifeq (,$(filter $(config),debug release)) $(error Unknown configuration "$(config)") endif endif ifeq ($(config),release) PONYC = $(COMPILE_WITH) else PONYC = $(COMPILE_WITH) --debug endif SOURCE_FILES := $(shell find $(SRC_DIR) -name *.pony) EXAMPLES_SOURCE_FILES := $(shell find $(EXAMPLES_DIR) -name *.pony) EXAMPLES_BINARY := $(BUILD_DIR)/examples test: unit-tests build-examples run-examples unit-tests: $(tests_binary) $^ --exclude=integration --sequential $(tests_binary): $(SOURCE_FILES) | $(BUILD_DIR) $(GET_DEPENDENCIES_WITH) $(PONYC) -o $(BUILD_DIR) $(SRC_DIR) build-examples: $(EXAMPLES_BINARY) run-examples: $(EXAMPLES_BINARY) $^ $(EXAMPLES_BINARY): $(BUILD_DIR)/%: $(SOURCE_FILES) $(EXAMPLES_SOURCE_FILES) | $(BUILD_DIR) $(GET_DEPENDENCIES_WITH) $(PONYC) -o $(BUILD_DIR) -b examples $(EXAMPLES_DIR) clean: $(CLEAN_DEPENDENCIES_WITH) rm -rf $(BUILD_DIR) $(docs_dir): $(SOURCE_FILES) rm -rf $(docs_dir) $(GET_DEPENDENCIES_WITH) $(PONYC) --docs-public --pass=docs --output build $(SRC_DIR) docs: $(docs_dir) .coverage: mkdir -p .coverage coverage: .coverage $(tests_binary) kcov --include-pattern="$(SRC_DIR)" --exclude-pattern="*/test/*.pony,*/_test.pony" .coverage $(tests_binary) TAGS: ctags --recurse=yes $(SRC_DIR) all: test $(BUILD_DIR): mkdir -p $(BUILD_DIR) .PHONY: all build-examples clean TAGS test