-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
134 lines (102 loc) · 4.08 KB
/
Makefile
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# Makefile to build jarget.
#
# Rules:
#
# $ make check -> Print make file variables to check them.
#
# $ make -> Build jarget.jar app runnable with '$ scala jarget.jar' (not self-contained).
#
# $ make force -> Build jarget.jar forcing compilation without the fsc daemon.
#
# $ make sh -> Build bin/jarget - uber jar file for testing.
#
# $ make pgd-unix -> Build bin/jarget-pro - unix executable uber jar shrunk with proguard.
#
# $ make install -> Copy file bin/jarget to ~/bin/jarget or $HOME/bin/jarget
#
#
#============================ V A R I A B L E S =======================#
target := jarget.jar
#sh-guard := bin/jarget
# Name of executable uber-jar file not shrunk by proguard.
sh := bin/jarget
fatjar := bin/jarget-uber.jar
# Scala source files necessary to build the project
src := $(wildcard src/*.scala)
# Assets/assets files to be bundled with the uber-jar
assetfiles := $(wildcard assets/*)
SCALA_XML=scala-xml_2.12-1.0.6.jar
SCALA_XML_PATH=$(shell dirname $(shell dirname $(shell which scala)))/lib/$(SCALA_XML)
# Additional jar files in ./lib
jars := $(wildcard lib/*.jar)
exeloaders := exeLoaders/loaderCLI.exe exeLoaders/loaderGUI.exe
CC := fsc
#============================= R U L E S =================================#
all: $(target)
sh: $(sh) # Build uber jar embedded in shell script
pgd: $(sh-guard) # Build uber jar embedded in shell script optmized with proguard
# This rule checks make variables
check:
@echo "src = "$(src)
@echo "assetfiles = "$(assetfiles)
@echo "SCALA_XML_PATH = "$(SCALA_XML_PATH)
$(target) : $(src)
$(CC) $(src) -cp "lib/*" -d jarget.jar
bin/jarget.sh: $(target) $(assetfiles)
mkdir -p bin
cp -v $(exeloaders) assets || true
scala jarget.jar uber -scala -exe=uexe -r=./assets -o=bin/jarget.sh jarget.jar $(jars)
# bin/jarget.sh: $(target) $(assetfiles)
# mkdir -p bin
# cp -v $(exeloaders) assets || true
# scala jarget.jar uber -scala -exe=uexe -r=assets -o=bin/jarget.sh jarget.jar $(SCALA_XML_PATH)
$(fatjar):
mkdir -p bin
@# Try to copy Windows CLI and GUI Loaders
cp -v $(exeloaders) assets || true
scala jarget.jar uber -scala -r=assets -o=bin/jarget-uber.jar jarget.jar $(SCALA_XML_PATH)
# Generates files bin/jarget shrunk with proguard
#
bin/jarget-pro.jar: $(target) $(assetfiles) config.pro
mkdir -p bin
@# Try to copy Windows CLI and GUI Loaders
cp -v $(exeloaders) assets || true
@# Generate uber jar
scala jarget.jar uber -scala -r=assets -o=bin/jarget-uber.jar jarget.jar $(jars)
@# Shrink app with proguard
java -jar proguard.jar @config.pro
rm -rf bin/jarget-uber.jar
# Build Unix executable shrunk with proguard
pgd-unix: bin/jarget-pro.jar
scala jarget.jar jar-to-exe -exe=uexe bin/jarget-pro.jar bin/jarget
# Build Windows native executable loader with this program as payload.
pgd-exe: bin/jarget-pro.jar
scala jarget.jar jar-to-exe -exe=wcli bin/jarget-pro.jar bin/jarget.exe
install: bin/jarget-pro
cp -v bin/jarget-pro ~/bin/jarget
clean:
rm -rf jarget.jar bin/jarget bin/jarget-fat.jar
upload: bin/jarget
cd bin && git add jarget && git commit -a -m "Update release" && git push
doc: $(src)
scaladoc -cp .:"lib/*" $(src) -author -doc-title "Jarget - Scala/Java automation tool" -doc-version "1.0" -doc-source-url "https://github.com/caiorss/jarget" -d ./bin/docs
doc-upload: $(src) jarget.jar
scaladoc $(src) -author -doc-title "Jarget - Scala/Java automation tool" -doc-version "1.0" -doc-source-url "https://github.com/caiorss/jarget" -d ./bin/docs
cd bin && git add docs/ && git commit -a -m "Update docs" && git push
page:
cp README.html bin/index.html
cp -r -v images bin/images
cp -r -v scripts bin/scripts
cd bin && git add images scripts
cd bin && git commit -a -m "Update project website" && git push
tags: $(src)
ctags src/*.scala
# Load app in the REPL for experimentation
load: $(target)
scala -cp .:"lib":$(target)
# -------- Test Commands ----------- #
test1: jarget.jar
echo "Downloading JFreechart"
scala jarget.jar mvn-pull org.jfree/jfreechart/1.0.19
test2: jarget.jar
scala jarget.jar mvn-pull org.jmdns/jmdns/3.5.1