generated from SKalt/rust-nix-project-template
/
Makefile
104 lines (82 loc) · 3.43 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
# FIXME: this build process is pretty convoluted. It should be simplified.
.PHONY: all help server client-js client bin tmLanguage vsix repl never test lint icon
all: bin vsix
help:
@echo "targets:"
@echo " all (default): build server and client"
@echo " server: build server"
@echo " client-js: build vscode client"
@echo " client: assemble vscode client"
@echo " vsix: package vscode extension"
@echo "environment variables:"
@echo " PROFILE: debug (default), release"
@echo " VERSION: base (default), pro"
PROFILE?=debug
# ^allowed values: debug, release
VERSION?=base
# ^allowed values: pro, base
TARGET?=x86_64-unknown-linux-gnu
# ^allowed values: whatever your `rustup target list` says
never: # used to invalidate non-phony targets (real files) that should always run
server: ./target/${PROFILE}/${VERSION}_language_server
# TODO: generate cargo build timing, bloat metrics
./target/${PROFILE}/${VERSION}_language_server: never
./scripts/build_bin.sh \
--profile=${PROFILE} \
--version=${VERSION} \
--target=${TARGET}
touch -m ./target/${PROFILE}/${VERSION}_language_server
bin: ./bin/cconvention
./bin/cconvention: ./target/${PROFILE}/${VERSION}_language_server
mkdir -p ./bin && \
cd ./bin && \
rm -f ${VERSION}_language_server && \
rm -f cconvention && \
ln -s ../target/${PROFILE}/${VERSION}_language_server ${VERSION}_language_server && \
ln -s ../target/${PROFILE}/${VERSION}_language_server cconvention
tmLanguage: ./editors/code/base/dist/tmLanguage.json
./editors/code/base/dist/tmLanguage.json: ./editors/code/base/src/tmLanguage.yaml
cd ./editors/code/base && PATH=$(shell pwd)/node_modules/.bin:${PATH} ./scripts/build_textmate.sh
./editors/code/pro/dist/tmLanguage.json: ./editors/code/base/dist/tmLanguage.json
cp ./editors/code/base/dist/tmLanguage.json ./editors/code/pro/dist/tmLanguage.json
icon: ./editors/code/base/icon.png
./editors/code/base/icon.png: \
./editors/code/base/icon.svg \
editors/code/base/pnpm-lock.yaml
cd ./editors/code/base && node ./scripts/render_base_icon.js
client-js: ./editors/code/${VERSION}/dist/main.min.common.js
./editors/code/base/dist/main.min.common.js: \
editors/code/base/pnpm-lock.yaml \
editors/code/base/src/*.ts
cd editors/code/base && ./scripts/build_js.sh
./editors/code/pro/dist/main.min.common.js: ./editors/code/base/dist/main.min.common.js
cp ./editors/code/base/dist/main.min.common.js ./editors/code/pro/dist/main.min.common.js
client: client-js tmLanguage ./editors/code/${VERSION}/dist/cconvention
./editors/code/${VERSION}/dist/cconvention: \
./target/${PROFILE}/${VERSION}_language_server
mkdir -p ./editors/code/${VERSION}/dist && \
cp ./target/${PROFILE}/${VERSION}_language_server ./editors/code/${VERSION}/dist/cconvention
vsix: ./editors/code/${VERSION}/dist/cconvention.vsix
./editors/code/${VERSION}/dist/cconvention.vsix: \
./editors/code/${VERSION}/dist/cconvention \
./editors/code/${VERSION}/dist/main.min.common.js \
./editors/code/${VERSION}/icon.png \
./editors/code/${VERSION}/dist/tmLanguage.json \
./editors/code/${VERSION}/package.json \
./scripts/build_vsix.sh
./scripts/build_vsix.sh \
--profile=${PROFILE} \
--version=${VERSION} \
--target=${TARGET}
clean-bin:
rm -f ./bin/${VERSION}_language_server
rm -f ./bin/cconvention
clean-vsix:
rm -f ./editors/code/${VERSION}/dist/cconvention.vsix
test:
cargo test --all-features
./scripts/run_checks.sh
lint:
cargo clippy --all-features
./scripts/link_check.sh
./scripts/shellcheck.sh