-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
87 lines (74 loc) · 2.68 KB
/
Makefile
File metadata and controls
87 lines (74 loc) · 2.68 KB
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
.PHONY: all clean link link-hellwave link-librequake deps engine maps assets upload update
VITE_CDN_URL_PATTERN ?= https://hw-assets-{shard}.quakeshack.dev/assets/{filename}
VITE_SIGNALING_URL ?= wss://master.quakeshack.dev/signaling
S3_BUCKET ?=
S3_ENDPOINT_URL ?=
S3_PREFIX ?=
all: assets
# install dependencies
deps:
cd engine && npm ci
# make sure we link everything into the right place
link: link-hellwave link-librequake
link-hellwave:
cd engine/source/game && ln -sfnv ../../../hellwave-game hellwave
cd engine/data && ln -sfnv ../../hellwave-data hellwave
link-librequake:
cd engine/data && ln -sfnv ../../librequake-data librequake
# build the engine (games need to be linked first)
engine: deps link
cd engine && \
VITE_GAME_DIR=hellwave \
VITE_CDN_URL_PATTERN="$(VITE_CDN_URL_PATTERN)" \
VITE_SIGNALING_URL="$(VITE_SIGNALING_URL)" \
VITE_PRESERVE_SYMLINKS=true \
npm run build:production
# bake hellwave maps
maps: link
make -w -C engine/data/hellwave \
DEDICATED="node --preserve-symlinks --preserve-symlinks-main ../engine/dedicated.mjs" \
TOOLS_DIR=../tools/ericw-tools \
BASEDIR=../librequake \
all
# clean up built files
clean:
rm -rf dist/
# merge all assets together with the compiled engine into dist/
assets: engine maps
rm -rf dist/assets/
mkdir -p dist/assets/maps/
rsync -av --delete engine/dist/browser/ dist/
rsync -av engine/data/librequake/gfx dist/assets/
rsync -av engine/data/librequake/progs dist/assets/
rsync -av engine/data/librequake/music dist/assets/
rsync -av engine/data/librequake/sound dist/assets/
rsync -av engine/data/librequake/gfx.wad dist/assets/
rsync -av engine/data/librequake/maps/b_*.bsp dist/assets/maps/
rsync -av engine/data/id1/*.cfg dist/assets/
rsync -av engine/data/hellwave/autoexec.cfg dist/assets/
rsync -av engine/data/hellwave/better-quake.rc dist/assets/
rsync -av engine/data/hellwave/client.cfg dist/assets/
rsync -av engine/data/hellwave/default.cfg dist/assets/
rsync -av engine/data/hellwave/server.cfg dist/assets/
rsync -av engine/data/hellwave/gfx dist/assets/
rsync -av engine/data/hellwave/sound dist/assets/
rsync -av engine/data/hellwave/textures dist/assets/
rsync -av \
--include='*.bsp' \
--include='*.nav' \
--include='*.lit' \
--include='*.qsmat.json' \
--exclude='*' \
engine/data/hellwave/maps/ dist/assets/maps/
# upload to R2
upload:
@test -n "$(S3_BUCKET)" || (echo "S3_BUCKET is required" >&2; exit 1)
aws s3 sync \
--exclude '*.git*' \
--exclude '*.log' \
--delete \
$(if $(strip $(S3_ENDPOINT_URL)),--endpoint-url "$(S3_ENDPOINT_URL)") \
dist/ s3://$(S3_BUCKET)$(if $(strip $(S3_PREFIX)),/$(S3_PREFIX))/
update:
git submodule update --init --recursive --remote
git add -A