HarfBuzz text shaping engine
http://harfbuzz.github.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.0 KiB
75 lines
2.0 KiB
## Build & Run |
|
|
|
Depending on what area you are working in change or add `HB_DEBUG_<whatever>`. |
|
Values defined in `hb-debug.hh`. |
|
|
|
```shell |
|
# quick sanity check |
|
time (make -j4 CPPFLAGS='-DHB_DEBUG_SUBSET=100' \ |
|
&& (make -j4 -C test/api check || cat test/api/test-suite.log)) |
|
|
|
# slower sanity check |
|
time (make -j4 CPPFLAGS='-DHB_DEBUG_SUBSET=100' \ |
|
&& make -j4 -C src check \ |
|
&& make -j4 -C test/api check \ |
|
&& make -j4 -C test/subset check) |
|
|
|
# confirm you didn't break anything else |
|
time (make -j4 CPPFLAGS='-DHB_DEBUG_SUBSET=100' \ |
|
&& make -j4 check) |
|
|
|
# often catches files you didn't add, e.g. test fonts to EXTRA_DIST |
|
make distcheck |
|
``` |
|
|
|
### Run tests with asan |
|
|
|
**NOTE**: this sometimes yields harder to read results than the full fuzzer |
|
|
|
```shell |
|
# For nice symbols tell asan how to symoblize. Note that it doesn't like versioned copies like llvm-symbolizer-3.8 |
|
# export ASAN_SYMBOLIZER_PATH=path to version-less llvm-symbolizer |
|
# ex |
|
export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-3.8/bin/llvm-symbolizer |
|
|
|
./configure CC=clang CXX=clang++ CPPFLAGS=-fsanitize=address LDFLAGS=-fsanitize=address |
|
# make/run tests as usual |
|
``` |
|
|
|
### Debug with GDB |
|
|
|
``` |
|
cd ./util |
|
../libtool --mode=execute gdb --args ./hb-subset ... |
|
``` |
|
|
|
### Enable Debug Logging |
|
|
|
```shell |
|
# make clean if you previously build w/o debug logging |
|
make CPPFLAGS=-DHB_DEBUG_SUBSET=100 |
|
``` |
|
|
|
## Build and Test via CMake |
|
|
|
Note: You'll need to first install ninja-build via apt-get. |
|
|
|
```shell |
|
cd harfbuzz |
|
mkdir buid |
|
cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild && CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test |
|
``` |
|
## Test with the Fuzzer |
|
|
|
```shell |
|
# push your changs to a branch on googlefonts/harfbuzz |
|
# In a local copy of oss-fuzz, edit projects/harfbuzz/Dockerfile |
|
# Change the git clone to pull your branch |
|
|
|
# Do this periodically |
|
sudo python infra/helper.py build_image harfbuzz |
|
|
|
# Do these to update/run |
|
sudo python infra/helper.py build_fuzzers --sanitizer address harfbuzz |
|
sudo python infra/helper.py run_fuzzer harfbuzz hb-subset-fuzzer |
|
```
|
|
|