blob: b60602b6eb9770ce14d6b576915a3686a780e9db (
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
## Parameters ##################################################################
SRC_DIR ?= ${CURDIR}/src
BIN_DIR ?= ${CURDIR}/bin
LIB_DIR ?= ${CURDIR}/../../lib
TMP_DIR ?= /tmp/tonkadir-json/
TARGET ?= tonkadur_json_export_lib.jar
STANDALONE ?= tonkadur_json_export_standalone.jar
#### Where to get the missing Jar files.
JAR_SOURCE ?= "https://noot-noot.org/jar_dist/"
#### Binaries
###### JAR binary
JAR ?= jar
###### JRE binary
JAVA ?= java
###### JDK binary
JAVAC ?= javac
###### JSON-SIMPLE
JSON_SIMPLE_JAR ?= $(LIB_DIR)/json-simple-1.1.1.jar
TONKADUR_CORE_JAR ?= $(LIB_DIR)/tonkadur_core_standalone.jar
##### Downloader
DOWNLOADER ?= wget
## Parameters Sanity Check #####################################################
ifeq ($(strip $(JAVA)),)
$(error No Java executable defined as parameter.)
endif
ifeq ($(strip $(JAVAC)),)
$(error No Java compiler defined as parameter.)
endif
ifeq ($(strip $(JSON_SIMPLE_JAR)),)
$(error No JSON_SIMPLE_JAR defined as parameter.)
endif
ifeq ($(strip $(TONKADUR_CORE_JAR)),)
$(error No TONKADUR_CORE_JAR defined as parameter.)
endif
## Java Config #################################################################
ifeq ($(strip $(CLASSPATH)),)
CLASSPATH = "$(SRC_DIR):$(BIN_DIR):$(JSON_SIMPLE_JAR):$(TONKADUR_CORE_JAR)"
else
CLASSPATH = "$(CLASSPATH):$(SRC_DIR):$(BIN_DIR):$(JSON_SIMPLE_JAR):$(TONKADUR_CORE_JAR)"
endif
MANIFEST ?= $(SRC_DIR)/Manifest.txt
## Makefile Magic ##############################################################
JAVA_NAMED_FILES = $(shell find $(SRC_DIR) -iname \*.java)
JAVA_SOURCES = $(JAVA_NAMED_FILES)
CLASSES = $(patsubst $(SRC_DIR)/%.java,$(BIN_DIR)/%.class,$(JAVA_SOURCES))
## Makefile Rules ##############################################################
$(STANDALONE): $(TMP_DIR) $(TARGET) $(JSON_SIMPLE_JAR) $(TONKADUR_CORE_JAR)
unzip -d $(TMP_DIR) -uo $(TARGET)
unzip -d $(TMP_DIR) -uo $(TONKADUR_CORE_JAR)
unzip -d $(TMP_DIR) -uo $(JSON_SIMPLE_JAR)
$(JAR) -cvfmn $@ $(MANIFEST) -C $(TMP_DIR) .
$(TARGET): $(JAVA_SOURCES) $(CLASSES) $(MANIFEST)
rm -f $(TARGET) $(INSTALL_DIR)/$@
$(JAR) cf $@ -C $(BIN_DIR) .
clean:
rm -rf $(BIN_DIR)/*
rm -rf $(STANDALONE) $(TARGET)
rm -rf $(LIB_DIR)/$(STANDALONE)
# Pattern rules can be used to generate multiple target in a single action.
$(CLASSES): $(BIN_DIR)/%.class: $(SRC_DIR)/%.java $(BIN_DIR) $(JSON_SIMPLE_JAR) $(TONKADUR_CORE_JAR)
$(JAVAC) -cp $(CLASSPATH) -d $(BIN_DIR) $<
%.jar:
$(MAKE) $(LIB_DIR)
echo "Attempting to download missing jar '$@'..."
cd $(LIB_DIR); $(DOWNLOADER) "$(JAR_SOURCE)/$(notdir $@)"
$(TMP_DIR):
mkdir -p $@
$(LIB_DIR):
mkdir -p $@
$(BIN_DIR):
mkdir -p $@
##### For my private use...
publish: $(STANDALONE)
scp $^ dreamhost:~/noot-noot/jar_dist/
|