-
Notifications
You must be signed in to change notification settings - Fork 143
/
Copy pathMakefile
105 lines (79 loc) · 3.96 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
OUT_DIR=./dist
BROWSERS_TEST_DIR=./browsers-test
MODULES_DIR=$(OUT_DIR)/modules
MODULES_SUMO_DIR=$(OUT_DIR)/modules-sumo
BROWSERS_DIR=$(OUT_DIR)/browsers
BROWSERS_SUMO_DIR=$(OUT_DIR)/browsers-sumo
LIBSODIUM_DIR=./libsodium
LIBSODIUM_JS_DIR=$(LIBSODIUM_DIR)/libsodium-js
LIBSODIUM_JS_SUMO_DIR=$(LIBSODIUM_DIR)/libsodium-js-sumo
TERSIFY = bun run terser --mangle --compress drop_console=true,passes=3 --
BUN := bun
all: pack
@echo
@echo Standard distribution
@echo =====================
@ls -l $(MODULES_DIR)/
@echo
@echo Sumo distribution
@echo =================
@ls -l $(MODULES_SUMO_DIR)/
standard: $(MODULES_DIR)/libsodium.js $(MODULES_DIR)/libsodium-wrappers.js
@echo + Building standard distribution
sumo: $(MODULES_SUMO_DIR)/libsodium-sumo.js $(MODULES_SUMO_DIR)/libsodium-wrappers.js
@echo + Building sumo distribution
tests: browsers-tests
browsers-tests: $(LIBSODIUM_DIR)/test/default/browser/sodium_core.html
@echo + Building web browsers tests
targets: standard sumo
pack: targets
@-bun install
@echo + Packing
for i in $(MODULES_DIR)/*.js $(MODULES_SUMO_DIR)/*.js $(BROWSERS_DIR)/*.js $(BROWSERS_SUMO_DIR)/*.js; do \
echo "Packing [$$i]" ; \
$(TERSIFY) $$i > $$i.tmp && mv -f $$i.tmp $$i ; \
done
$(MODULES_DIR)/libsodium-wrappers.js: wrapper/build-wrappers.js wrapper/build-doc.js wrapper/wrap-template.js
@echo +++ Building standard/libsodium-wrappers.js
mkdir -p $(MODULES_DIR)
$(BUN) wrapper/build-wrappers.js libsodium API.md $(MODULES_DIR)/libsodium-wrappers.js
$(MODULES_SUMO_DIR)/libsodium-wrappers.js: wrapper/build-wrappers.js wrapper/build-doc.js wrapper/wrap-template.js
@echo +++ Building sumo/libsodium-wrappers.js
mkdir -p $(MODULES_SUMO_DIR)
$(BUN) wrapper/build-wrappers.js libsodium-sumo API_sumo.md $(MODULES_SUMO_DIR)/libsodium-wrappers.js
$(MODULES_DIR)/libsodium.js: wrapper/libsodium-pre.js wrapper/libsodium-post.js $(MODULES_DIR)/libsodium-wrappers.js $(LIBSODIUM_JS_DIR)/lib/libsodium.js
@echo +++ Building standard/libsodium
mkdir -p $(MODULES_DIR)
cat wrapper/libsodium-pre.js $(LIBSODIUM_JS_DIR)/lib/libsodium.js wrapper/libsodium-post.js > $(MODULES_DIR)/libsodium.js
mkdir -p $(BROWSERS_DIR)
cat $(MODULES_DIR)/libsodium.js $(MODULES_DIR)/libsodium-wrappers.js > $(BROWSERS_DIR)/sodium.js
$(MODULES_SUMO_DIR)/libsodium-sumo.js: wrapper/libsodium-pre.js wrapper/libsodium-post.js $(MODULES_SUMO_DIR)/libsodium-wrappers.js $(LIBSODIUM_JS_SUMO_DIR)/lib/libsodium.js
@echo +++ Building sumo/libsodium
mkdir -p $(MODULES_SUMO_DIR)
cat wrapper/libsodium-pre.js $(LIBSODIUM_JS_SUMO_DIR)/lib/libsodium.js wrapper/libsodium-post.js > $(MODULES_SUMO_DIR)/libsodium-sumo.js
mkdir -p $(BROWSERS_SUMO_DIR)
cat $(MODULES_SUMO_DIR)/libsodium-sumo.js $(MODULES_SUMO_DIR)/libsodium-wrappers.js > $(BROWSERS_SUMO_DIR)/sodium.js
$(LIBSODIUM_DIR)/test/default/browser/sodium_core.html: $(LIBSODIUM_DIR)/configure
cd $(LIBSODIUM_DIR) && env CPPFLAGS="-DFAVOR_PERFORMANCE" ./dist-build/emscripten.sh --browser-tests
rm -f $(LIBSODIUM_DIR)/test/default/browser/*.asm.html $(LIBSODIUM_DIR)/test/default/browser/*.asm.js
rm -fr $(BROWSERS_TEST_DIR) && cp -R $(LIBSODIUM_DIR)/test/default/browser $(BROWSERS_TEST_DIR)
$(LIBSODIUM_JS_DIR)/lib/libsodium.js: $(LIBSODIUM_DIR)/configure
cd $(LIBSODIUM_DIR) && env CPPFLAGS="-DFAVOR_PERFORMANCE" ./dist-build/emscripten.sh --standard
$(LIBSODIUM_JS_SUMO_DIR)/lib/libsodium.js: $(LIBSODIUM_DIR)/configure
cd $(LIBSODIUM_DIR) && env CPPFLAGS="-DFAVOR_PERFORMANCE" ./dist-build/emscripten.sh --sumo
$(LIBSODIUM_DIR)/configure: $(LIBSODIUM_DIR)/configure.ac
cd $(LIBSODIUM_DIR) && ./autogen.sh
$(LIBSODIUM_DIR)/configure.ac: .gitmodules
git submodule update --init --recursive
clean:
rm -f $(LIBSODIUM_DIR)/js.done $(LIBSODIUM_DIR)/js-sumo.done $(LIBSODIUM_DIR)/browser-js.done
rm -rf $(BROWSERS_TEST_DIR)
rm -fr $(LIBSODIUM_DIR)/test/default/browser
rm -rf $(LIBSODIUM_JS_DIR)
rm -rf $(LIBSODIUM_JS_SUMO_DIR)
rm -rf $(OUT_DIR)
-cd $(LIBSODIUM_DIR) && make distclean
distclean: clean
rewrap:
rm -fr $(OUT_DIR)
make