xref: /aosp_15_r20/external/skia/third_party/harfbuzz/README (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker#!/bin/sh
2*c8dee2aaSAndroid Build Coastguard Worker# Some of HarfBuzz's headers are created at build time using the Ragel
3*c8dee2aaSAndroid Build Coastguard Worker# State Machine Compiler.  To reduce complex dependencies, I pre-built
4*c8dee2aaSAndroid Build Coastguard Worker# these files:
5*c8dee2aaSAndroid Build Coastguard Worker#     hb-buffer-deserialize-json.hh
6*c8dee2aaSAndroid Build Coastguard Worker#     hb-buffer-deserialize-text.hh
7*c8dee2aaSAndroid Build Coastguard Worker#     hb-ot-shape-complex-indic-machine.hh
8*c8dee2aaSAndroid Build Coastguard Worker#     hb-ot-shape-complex-myanmar-machine.hh
9*c8dee2aaSAndroid Build Coastguard Worker#     hb-ot-shape-complex-use-machine.hh
10*c8dee2aaSAndroid Build Coastguard Worker# from these sources:
11*c8dee2aaSAndroid Build Coastguard Worker#     ../externals/harfbuzz/src/hb-buffer-deserialize-json.rl
12*c8dee2aaSAndroid Build Coastguard Worker#     ../externals/harfbuzz/src/hb-buffer-deserialize-text.rl
13*c8dee2aaSAndroid Build Coastguard Worker#     ../externals/harfbuzz/src/hb-ot-shape-complex-indic-machine.rl
14*c8dee2aaSAndroid Build Coastguard Worker#     ../externals/harfbuzz/src/hb-ot-shape-complex-myanmar-machine.rl
15*c8dee2aaSAndroid Build Coastguard Worker#     ../externals/harfbuzz/src/hb-ot-shape-complex-use-machine.rl
16*c8dee2aaSAndroid Build Coastguard Worker#
17*c8dee2aaSAndroid Build Coastguard Worker# The files in this directory are created by installing the
18*c8dee2aaSAndroid Build Coastguard Worker# prerequiste packages, checking out a new version of HarfBuzz, doing
19*c8dee2aaSAndroid Build Coastguard Worker# `./autogen.sh && ./configure && make`, then copying the
20*c8dee2aaSAndroid Build Coastguard Worker# autogenerated .h and .hh files to this directory.
21*c8dee2aaSAndroid Build Coastguard Worker#
22*c8dee2aaSAndroid Build Coastguard Worker# These files are now checked into the git repository and the HarfBuzz
23*c8dee2aaSAndroid Build Coastguard Worker# maintainers keep them up to date by using the build rules in the HarfBuzz
24*c8dee2aaSAndroid Build Coastguard Worker# build. As a result this step is no longer necessary, but if we need to
25*c8dee2aaSAndroid Build Coastguard Worker# regenerate these files ourselves, this is how to do it.
26*c8dee2aaSAndroid Build Coastguard Worker
27*c8dee2aaSAndroid Build Coastguard Workerset -e
28*c8dee2aaSAndroid Build Coastguard Workerset -x
29*c8dee2aaSAndroid Build Coastguard Workerfor package in automake  libtool pkg-config ragel gtk-doc-tools; do
30*c8dee2aaSAndroid Build Coastguard Worker    if ! ( dpkg-query -W -f'${Status}' "$package" 2>/dev/null | \
31*c8dee2aaSAndroid Build Coastguard Worker        grep -q "ok installed" ); then
32*c8dee2aaSAndroid Build Coastguard Worker        sudo apt-get install "$package"
33*c8dee2aaSAndroid Build Coastguard Worker    fi
34*c8dee2aaSAndroid Build Coastguard Workerdone
35*c8dee2aaSAndroid Build Coastguard Workercd "$(dirname "$0")/../externals/harfbuzz"
36*c8dee2aaSAndroid Build Coastguard Worker./autogen.sh
37*c8dee2aaSAndroid Build Coastguard Worker./configure
38*c8dee2aaSAndroid Build Coastguard Workermake -j4
39*c8dee2aaSAndroid Build Coastguard Workercp src/hb-version.h ../../harfbuzz/
40*c8dee2aaSAndroid Build Coastguard Workerfor RAGEL_FILE in src/*.rl; do
41*c8dee2aaSAndroid Build Coastguard Worker    BUILT_HEADER="src/$(basename "$RAGEL_FILE" '.rl').hh"
42*c8dee2aaSAndroid Build Coastguard Worker    if [ -f "$BUILT_HEADER" ]; then
43*c8dee2aaSAndroid Build Coastguard Worker        cp -v "$BUILT_HEADER" ../../harfbuzz/
44*c8dee2aaSAndroid Build Coastguard Worker    fi
45*c8dee2aaSAndroid Build Coastguard Workerdone
46*c8dee2aaSAndroid Build Coastguard Workergit clean -fxd
47