summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorMurilo Ijanc <[email protected]>2026-07-26 12:20:42 -0300
committerMurilo Ijanc <[email protected]>2026-07-26 12:20:42 -0300
commit329f679cd359bcab92adf3366cf17711836d0c79 (patch)
tree68f956deb2e0d5c3a25da20260ee3c0678a64cd6 /Makefile
downloadjava-17e590eb67054a2cab9a32afc3fd032b18fc8964.tar.gz
Initial importv0.1.0
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile74
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)