Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
*.wasm
hb.js
.DS_Store
hb.mjs
hbjs.mjs
.DS_Store
25 changes: 22 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,15 @@ HB_LDFLAGS = \
-s ALLOW_TABLE_GROWTH \
-lexports.js

HB_ESM_LDFLAGS = \
-s EXPORT_ES6=1

HB_SRCS = harfbuzz/src/harfbuzz.cc
HB_DEPS = config-override.h hb.symbols em.runtime
HB_TARGET = hb.js
HB_ESM_TARGET = hb.mjs
HBJS_SRCS = hbjs.js
HBJS_ESM_TARGET = hbjs.mjs

HB_SUBSET_CXXFLAGS = \
$(COMMON_CXXFLAGS) \
Expand All @@ -47,12 +53,16 @@ HB_SUBSET_SRCS = harfbuzz/src/harfbuzz-subset.cc
HB_SUBSET_DEPS = config-override-subset.h hb-subset.symbols
HB_SUBSET_TARGET = hb-subset.wasm

.PHONY: all clean hb hb-subset test
.PHONY: all clean hb hb-esm hbjs-esm hb-subset test

all: hb hb-subset
all: hb hb-subset hb-esm hbjs-esm

hb: $(HB_TARGET)

hb-esm: ${HB_ESM_TARGET}

hbjs-esm: ${HBJS_ESM_TARGET}

hb-subset: $(HB_SUBSET_TARGET)

test: all
Expand All @@ -62,9 +72,18 @@ $(HB_TARGET): $(HB_SRCS) $(HB_DEPS)
echo " CXX $@"
$(CXX) $(HB_CXXFLAGS) $(HB_LDFLAGS) -o $@ $(HB_SRCS)

$(HB_ESM_TARGET): $(HB_SRCS) $(HB_DEPS)
echo " CXX $@"
$(CXX) $(HB_CXXFLAGS) $(HB_LDFLAGS) ${HB_ESM_LDFLAGS} -o $@ $(HB_SRCS)

$(HBJS_ESM_TARGET): ${HBJS_SRCS}
echo " GEN $@"
perl -0777 -pe 's/try\s*\{[^}]*module\.exports[^}]*\}\s*catch\s*\(e\)\s*\{\s*\}//g' $< > $@
echo 'export default hbjs;' >> $@

$(HB_SUBSET_TARGET): $(HB_SUBSET_SRCS) $(HB_SUBSET_DEPS)
echo " CXX $@"
$(CXX) $(HB_SUBSET_CXXFLAGS) $(HB_SUBSET_LDFLAGS) -o $@ $(HB_SUBSET_SRCS)

clean:
rm -f $(HB_TARGET) $(HB_SUBSET_TARGET) hb.wasm
rm -f $(HB_TARGET) $(HB_SUBSET_TARGET) $(HB_ESM_TARGET) $(HBJS_ESM) hb.wasm
16 changes: 16 additions & 0 deletions harfbuzz.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import hbjs from './hbjs.mjs';
import hb from './hb.mjs';
const wasmURL = new URL('./hb.wasm', import.meta.url);

async function getHarfbuzz() {
function locateFile(/*path, prefix*/) {
return wasmURL.toString();
}
const Module = await hb({locateFile});
const hbjsInstance = hbjs(Module);
// Add Module for low level api access.
hbjsInstance.Module = Module;
return hbjsInstance;
}

export default getHarfbuzz;