blob: 2e9309990ea6421217ba4e8cb0e8e08939a13497 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
JAVA ?= java
JAVAC ?= javac
JAR ?= jar
JAVADOC ?= javadoc
VERSION := 0.2.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)
|