This repository has been archived by the owner on Dec 19, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
110 lines (90 loc) · 3.5 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
# Pattern #1 example: "example : description = Description for example target"
# Pattern #2 example: "### Example separator text
help: HELP_SCRIPT = \
if (/^([a-zA-Z0-9-\.\/]+).*?: description\s*=\s*(.+)/) { \
printf "\033[34m%-40s\033[0m %s\n", $$1, $$2 \
} elsif(/^\#\#\#\s*(.+)/) { \
printf "\033[33m>> %s\033[0m\n", $$1 \
}
.PHONY: help
help:
@perl -ne '$(HELP_SCRIPT)' $(MAKEFILE_LIST)
.PHONY: setup/darwin
setup/darwin: description = Install WASM tooling for macOS
setup/darwin:
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install WASM tooling
rustup target add wasm32-wasi
# Install WASM optimizer
cargo install wasm-opt sccache
.PHONY: build
build: description = Build all targets
build: clean build/detective build/transform build/httprequest build/kv build/inferschema build/validjson
.PHONY: build/detective
build/detective: description = Build WASM target for detective
build/detective: clean/detective
cd detective && \
cargo build --target=wasm32-wasi --release && \
wasm-opt -Os -o ../build/detective.wasm target/wasm32-wasi/release/detective.wasm
.PHONY: clean/detective
clean/detective: description = Remove detective WASM artifacts
clean/detective:
rm -rf detective/target build/detective.wasm
.PHONY: build/transform
build/transform: description = Build WASM target for transform
build/transform: clean/transform
cd transform && \
cargo build --target=wasm32-wasi --release && \
wasm-opt -Os -o ../build/transform.wasm target/wasm32-wasi/release/transform.wasm
.PHONY: clean/transform
clean/transform: description = Remove transform WASM artifacts
clean/transform:
rm -rf transform/target build/transform.wasm
.PHONY: build/httprequest
build/httprequest: description = Build WASM target for httprequest
build/httprequest: clean/httprequest
cd httprequest && \
cargo build --target=wasm32-wasi --release && \
wasm-opt -Os -o ../build/httprequest.wasm target/wasm32-wasi/release/httprequest.wasm
.PHONY: clean/httprequest
clean/httprequest: description = Remove httprequest WASM artifacts
clean/httprequest:
rm -rf httprequest/target build/httprequest.wasm
.PHONY: build/kv
build/kv: description = Build WASM target for kv
build/kv: clean/kv
cd kv && \
cargo build --target=wasm32-wasi --release && \
wasm-opt -Os -o ../build/kv.wasm target/wasm32-wasi/release/kv.wasm
.PHONY: clean/kv
clean/kv: description = Remove kv WASM artifacts
clean/kv:
rm -rf kv/target build/kv.wasm
.PHONY: build/inferschema
build/inferschema: description = Build WASM target for inferschema
build/inferschema: clean/inferschema
cd inferschema && \
cargo build --target=wasm32-wasi --release && \
wasm-opt -Os -o ../build/inferschema.wasm target/wasm32-wasi/release/inferschema.wasm
.PHONY: clean/inferschema
clean/inferschema: description = Remove inferschema WASM artifacts
clean/inferschema:
rm -rf inferschema/target build/inferschema.wasm
.PHONY: build/validjson
build/validjson: description = Build WASM target for validjson
build/validjson: clean/validjson
cd validjson && \
cargo build --target=wasm32-wasi --release && \
wasm-opt -Os -o ../build/validjson.wasm target/wasm32-wasi/release/validjson.wasm
.PHONY: clean/validjson
clean/validjson: description = Remove validjson WASM artifacts
clean/validjson:
rm -rf validjson/target build/validjson.wasm
.PHONY: clean
clean: description = Remove all build artifacts
clean: clean/detective clean/transform clean/httprequest clean/kv clean/inferschema clean/validjson
.PHONY: test
test: description = Run tests
test:
cd common && cargo test