-
Notifications
You must be signed in to change notification settings - Fork 46
Expand file tree
/
Copy pathMakefile
More file actions
90 lines (69 loc) · 2.02 KB
/
Makefile
File metadata and controls
90 lines (69 loc) · 2.02 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
88
89
90
MAKEFLAGS += -s
CXX = em++
COMMON_CXXFLAGS = \
-std=c++11 \
-fno-exceptions \
-fno-rtti \
-fno-threadsafe-statics \
-fvisibility-inlines-hidden \
-Oz \
-I. \
-DHB_TINY \
-DHB_USE_INTERNAL_QSORT \
-DHB_EXPERIMENTAL_API
HARFBUZZ_CXXFLAGS = \
$(COMMON_CXXFLAGS) \
-flto \
-DHB_CONFIG_OVERRIDE_H=\"config-override.h\"
HARFBUZZ_LDFLAGS = \
--no-entry \
-s MODULARIZE \
-s EXPORT_ES6 \
-s EXPORT_NAME=createHarfBuzz \
-s EXPORTED_FUNCTIONS=@harfbuzz.symbols \
-s EXPORTED_RUNTIME_METHODS=@em.runtime \
-s INITIAL_MEMORY=256KB \
-s ALLOW_MEMORY_GROWTH \
-s ALLOW_TABLE_GROWTH \
-lexports.js
HARFBUZZ_SRCS = harfbuzz/src/harfbuzz.cc
HARFBUZZ_DEPS = config-override.h harfbuzz.symbols em.runtime
HARFBUZZ_TARGET = dist/harfbuzz.js
HARFBUZZ_SUBSET_CXXFLAGS = \
$(COMMON_CXXFLAGS) \
-DHB_CONFIG_OVERRIDE_LAST_H=\"config-override-subset.h\"
HARFBUZZ_SUBSET_LDFLAGS = \
--no-entry \
-s EXPORTED_FUNCTIONS=@harfbuzz-subset.symbols \
-s INITIAL_MEMORY=65MB
HARFBUZZ_SUBSET_SRCS = harfbuzz/src/harfbuzz-subset.cc
HARFBUZZ_SUBSET_DEPS = config-override-subset.h harfbuzz-subset.symbols
HARFBUZZ_SUBSET_TARGET = dist/harfbuzz-subset.wasm
.PHONY: all clean harfbuzz harfbuzz-subset test typecheck format doc
all: harfbuzz harfbuzz-subset node_modules
npx tsdown
harfbuzz: $(HARFBUZZ_TARGET)
harfbuzz-subset: $(HARFBUZZ_SUBSET_TARGET)
$(HARFBUZZ_TARGET): $(HARFBUZZ_SRCS) $(HARFBUZZ_DEPS) | dist
echo " CXX $@"
$(CXX) $(HARFBUZZ_CXXFLAGS) $(HARFBUZZ_LDFLAGS) -o $@ $(HARFBUZZ_SRCS)
$(HARFBUZZ_SUBSET_TARGET): $(HARFBUZZ_SUBSET_SRCS) $(HARFBUZZ_SUBSET_DEPS) | dist
echo " CXX $@"
$(CXX) $(HARFBUZZ_SUBSET_CXXFLAGS) $(HARFBUZZ_SUBSET_LDFLAGS) -o $@ $(HARFBUZZ_SUBSET_SRCS)
dist:
mkdir -p $@
node_modules: package.json
npm install --ignore-scripts
touch $@
typecheck: all
npx tsc --noEmit
format: node_modules
npx prettier --check .
test: all typecheck format
npx vitest run --dir test
node examples/harfbuzz.example.node.js
node examples/harfbuzz-subset.example.node.js
doc: node_modules
npx typedoc
clean:
rm -rf dist