path:
/config.mk
2.15 KB | 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
JAVAC ?= javac
SCALAC ?= scalac
JAR ?= jar
JAVA ?= java
SCALA ?= scala
TARGET_MAIN = myjavaprogram.Main
# Repos
MAVEN = https://repo1.maven.org/maven2
JVM_TARGET_VESRION ?= 1.8
LIB_DIR ?= out/lib
BIN_DIR ?= out/bin
ifeq ($(OS),Windows_NT)
RM = del /s /q
# TODO check whether it's working
RMDIR = rmdir /s /q
MKDIR = mkdir
else
RM = rm -rf
RMDIR = rm -rf
MKDIR = mkdir -p
endif
DOWNLOAD = curl -fLs
FINAL_PROGRAM = $(PROGRAM)-$(VERSION)
empty:=
space := $(empty) $(empty)
$(space) := $(space)
LIBS = $(wildcard $(LIB_DIR)/*.jar)
JARFILES := $(foreach DEP, $(DEPS), \
$(subst :,-,$(notdir $(DEP).jar)) \
)
pkgver = $(lastword $(subst :,$(space), $(1)))
pkgname = $(firstword $(subst :, $(space), $(1)))
maven_url = $(MAVEN)/$(call pkgname, $(1))/$(call pkgver, $(1))/$(notdir $(call pkgname, $(1)))-$(call pkgver, $(1)).jar
jarfile = $(notdir $(subst :,-, $(1))).jar
$(LIB_DIR)/%: setup
$(info > Downloading '$*' into $(LIB_DIR)/)
@$(DOWNLOAD) $(call maven_url, $*) --output "$(LIB_DIR)/$(call jarfile, $*)"
CLASSPATH := $(subst $(space),:,$(wildcard $(LIB_DIR)/*.jar))
deps: $(foreach DEP, $(DEPS), $(LIB_DIR)/$(DEP))
%.class: %.scala
$(SCALAC) $< -sourcepath $(SRC) -classpath $(CLASSPATH) -target:jvm-$(JVM_TARGET_VESRION)
DEPLOY_BIN = $(BIN_DIR)/$(FINAL_PROGRAM)
$(DEPLOY_BIN).jar: $(BIN_DIR)/$(PROGRAM).jar
$(info > Building '$(DEPLOY_BIN)')
# $(MKDIR) $(BIN_DIR)/classes
# $(foreach JARFILES, $(wildcard $(LIB_DIR)/*.jar), \
# cd $(BIN_DIR)/classes; $(JAR) xvf $(realpath $(JARFILES)) \
# )
echo "$(SCALA) -classpath "$(CLASSPATH):$(FINAL_PROGRAM).jar" $(TARGET_MAIN) $$*" > $(DEPLOY_BIN)
cd $(BIN_DIR)/classes; $(JAR) xvf $(realpath $(BIN_DIR)/$(PROGRAM)).jar
cd $(BIN_DIR)/classes && $(JAR) cvf $(realpath $(DEPLOY_BIN)).jar *
chmod +x $(DEPLOY_BIN)
$(BIN_DIR)/$(PROGRAM).jar: $(SRC)
@make setup
$(info > Building '$(BIN_DIR)/$(PROGRAM)')
@$(SCALAC) -classpath "${CLASSPATH}" $^ -d $@ -target:jvm-$(JVM_TARGET_VESRION)
@echo "$(SCALA) -classpath "$(CLASSPATH):$(PROGRAM).jar" $(TARGET_MAIN) $$*" > $(BIN_DIR)/$(PROGRAM)
@chmod +x $(BIN_DIR)/$(PROGRAM)
deploy: $(BIN_DIR)/$(PROGRAM)-$(VERSION).jar
setup:
@$(MKDIR) $(BIN_DIR)
@$(MKDIR) $(LIB_DIR)