-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
109 lines (95 loc) · 3.13 KB
/
Makefile
File metadata and controls
109 lines (95 loc) · 3.13 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
.PHONY: install_base install_deps build_docs build test run help all default
# Extract arguments for build_docs
ifeq (build_docs,$(firstword $(MAKECMDGOALS)))
DOCS_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
ifneq ($(DOCS_ARGS),)
DOCS_DIR := $(word 1,$(DOCS_ARGS))
$(eval $(DOCS_DIR):;@:)
else
DOCS_DIR := docs
endif
else
DOCS_DIR := docs
endif
# Extract arguments for build
ifeq (build,$(firstword $(MAKECMDGOALS)))
BUILD_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
ifneq ($(BUILD_ARGS),)
BIN_DIR := $(word 1,$(BUILD_ARGS))
$(eval $(BIN_DIR):;@:)
else
BIN_DIR := bin
endif
else
BIN_DIR := bin
endif
# Extract arguments for run
ifeq (run,$(firstword $(MAKECMDGOALS)))
RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
$(eval $(RUN_ARGS):;@:)
endif
default: help
all: help
install_base:
@echo "Installing Java runtime..."
@if [ "$$(uname)" = "Darwin" ]; then \
brew install openjdk; \
elif [ -f /etc/debian_version ]; then \
sudo apt-get update && sudo apt-get install -y default-jdk; \
elif [ -f /etc/redhat-release ]; then \
sudo yum install -y java-11-openjdk-devel; \
elif [ -f /etc/freebsd-update.conf ]; then \
sudo pkg install -y openjdk11; \
else \
echo "Please install a Java JDK manually."; \
fi
install_deps:
@echo "Dependencies already in lib/"
build_docs:
@echo "Building API docs to $(DOCS_DIR)..."
@mkdir -p "$(DOCS_DIR)"
@find src/main/java -name "*.java" > doc_sources.txt
javadoc -d "$(DOCS_DIR)" -cp "lib/*:src/main/java" @doc_sources.txt
@rm -f doc_sources.txt
build:
@echo "Building CLI to $(BIN_DIR)..."
@mkdir -p "$(BIN_DIR)"
@find src/main/java -name "*.java" > sources.txt
javac -d "$(BIN_DIR)" -cp "lib/*:src/main/java" @sources.txt
@rm -f sources.txt
test:
@echo "Running tests..."
@find src/main/java src/test/java -name "*.java" > sources.txt
javac -cp "lib/*:src/main/java:src/test/java" @sources.txt
java -cp "lib/*:src/main/java:src/test/java" TestRunner
@rm -f sources.txt
run:
@if [ ! -f "$(BIN_DIR)/cli/Main.class" ]; then \
$(MAKE) build BIN_DIR="$(BIN_DIR)"; \
fi
java -cp "lib/*:$(BIN_DIR)" cli.Main $(RUN_ARGS)
help:
@echo "Available targets:"
@echo " install_base : install language runtime (Java JDK)"
@echo " install_deps : install local dependencies"
@echo " build_docs : build the API docs (e.g. make build_docs [path])"
@echo " build : build the CLI binary (e.g. make build [path])"
@echo " test : run tests locally"
@echo " run : run the CLI (e.g. make run [args...])"
@echo " build_wasm : build WASM variant (Not implemented)"
@echo " build_docker : build Docker images"
@echo " run_docker : run Docker images"
@echo " help : show this help text"
@echo " all : show this help text"
build_wasm:
@echo "Building WASM variant..."
bash build_wasm.sh
mkdir -p bin
cp target/wasm/cdd-java.js* bin/ || true
build_docker:
@echo "Building docker images..."
docker build -t cdd-java-alpine -f alpine.Dockerfile .
docker build -t cdd-java-debian -f debian.Dockerfile .
run_docker:
@echo "Testing docker images..."
python3 test_docker.py