diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a2e9a18 --- /dev/null +++ b/Makefile @@ -0,0 +1,74 @@ +JAVA ?= java +JAVAC ?= javac +JAR ?= jar +JAVADOC ?= javadoc + +VERSION := 0.1.0 +MAIN_CLASS := is.cep.cepis.Main +TEST_RUNNER := is.cep.cepis.TestRunner + +SRC_DIR := src/main/java +TEST_SRC_DIR := src/test/java +BUILD_DIR := build +CLASSES_DIR := $(BUILD_DIR)/classes +TEST_CLASSES_DIR := $(BUILD_DIR)/test-classes +DOCS_DIR := $(BUILD_DIR)/docs +JAR_FILE := $(BUILD_DIR)/cepis-$(VERSION).jar +SOURCES_JAR := $(BUILD_DIR)/cepis-$(VERSION)-sources.jar + +SOURCES := $(shell find $(SRC_DIR) -name '*.java') +TEST_SOURCES := $(shell find $(TEST_SRC_DIR) -name '*.java') + +JAVAC_FLAGS := --release 17 -encoding UTF-8 -Xlint:all +JAVA_FLAGS := -Dfile.encoding=UTF-8 + +.DEFAULT_GOAL := help +.PHONY: help test lint build docs check clean + +help: + @echo 'Targets:' + @echo ' test compile and run the suite against a local HTTP server' + @echo ' lint javac -Xlint:all -Werror + javadoc doclint (read-only)' + @echo ' build the jar into $(BUILD_DIR)' + @echo ' docs the API documentation into $(DOCS_DIR)' + @echo ' check lint + test + build, in that order' + @echo ' clean remove $(BUILD_DIR)' + @echo + @echo 'The JDK ships no formatter, so there is no format target.' + @echo 'Nothing to install first: the library and the suite have no dependencies.' + +$(BUILD_DIR)/.classes: $(SOURCES) + @mkdir -p $(CLASSES_DIR) + $(JAVAC) $(JAVAC_FLAGS) -d $(CLASSES_DIR) $(SOURCES) + @touch $@ + +$(BUILD_DIR)/.test-classes: $(BUILD_DIR)/.classes $(TEST_SOURCES) + @mkdir -p $(TEST_CLASSES_DIR) + $(JAVAC) $(JAVAC_FLAGS) -cp $(CLASSES_DIR) -d $(TEST_CLASSES_DIR) $(TEST_SOURCES) + @touch $@ + +test: $(BUILD_DIR)/.test-classes + $(JAVA) $(JAVA_FLAGS) -cp $(CLASSES_DIR):$(TEST_CLASSES_DIR) $(TEST_RUNNER) + +lint: + @mkdir -p $(BUILD_DIR)/lint + $(JAVAC) $(JAVAC_FLAGS) -Werror -d $(BUILD_DIR)/lint $(SOURCES) + $(JAVAC) $(JAVAC_FLAGS) -Werror -cp $(BUILD_DIR)/lint -d $(BUILD_DIR)/lint $(TEST_SOURCES) + $(JAVADOC) -quiet -Xdoclint:all,-missing -Werror --release 17 -encoding UTF-8 \ + -d $(BUILD_DIR)/lint-docs $(SOURCES) + +build: $(JAR_FILE) $(SOURCES_JAR) + +$(JAR_FILE): $(BUILD_DIR)/.classes + $(JAR) --create --file $@ --main-class $(MAIN_CLASS) -C $(CLASSES_DIR) . + +$(SOURCES_JAR): $(SOURCES) + $(JAR) --create --file $@ -C $(SRC_DIR) . + +docs: $(SOURCES) + $(JAVADOC) -quiet --release 17 -encoding UTF-8 -d $(DOCS_DIR) $(SOURCES) + +check: lint test build + +clean: + rm -rf $(BUILD_DIR) |