harfbuzz / harfbuzz

HarfBuzz text shaping engine
http://harfbuzz.github.io/
Other
3.66k stars 591 forks source link

Utils aren't build and the build system (meson) doesn't give a proper reason about the "WHY" #4683

Closed TurtleWilly closed 1 month ago

TurtleWilly commented 1 month ago

I'm building the latest release version 8.4.0 of harfbuzz using meson 1.4.0 using the ninja backend. The setup and build works fine, but the utilities (hb-shape, etc.) aren't build for some reason. They do not get installed either. meson configure reports "utilities -> enabled". There's no indication why the utilities aren't build. I assume they may need another of the optional dependencies? But which one? Chafa? Glib? Ragel? Or does the meson build doesn't support the utilities yet? I'm a bit out of ideas.

$ meson setup mybuilddir \
    -Dprefix=/usr/local/silo/harfbuzz/8.4.0 \
    -Dbuildtype=release                     \
    -Dstrip=true                            \
    -Dcairo=enabled                         \
    -Dcoretext=enabled                      \
    -Dfreetype=enabled                      \
    -Dgraphite=enabled                      \
    -Dicu=enabled                           \
    -Dglib=disabled                         \
    -Dgobject=disabled                      \
    -Dintrospection=disabled                \
    -Dtests=disabled                        \
    -Dchafa=disabled                        \
    -Dc_link_args='-Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-dead_strip'
$ meson configure mybuilddir  # optional, verify setup
$ ninja -C mybuilddir
# --or-- (I tried both)
$ meson compile -C mybuilddir
The Meson build system
Version: 1.4.0
Source dir: /Volumes/Temporary/harfbuzz-8.4.0
Build dir: /Volumes/Temporary/harfbuzz-8.4.0/mybuilddir
Build type: native build
Project name: harfbuzz
Project version: 8.4.0
C compiler for the host machine: cc (clang 7.0.2 "Apple LLVM version 7.0.2 (clang-700.1.81)")
C linker for the host machine: cc ld64 253.9
C++ compiler for the host machine: c++ (clang 7.0.2 "Apple LLVM version 7.0.2 (clang-700.1.81)")
C++ linker for the host machine: c++ ld64 253.9
Host machine cpu family: x86_64
Host machine cpu: x86_64
Fetching value of define "_MSC_FULL_VER" : (undefined) 
Compiler for C++ supports link arguments -Bsymbolic-functions: YES 
Compiler for C++ supports arguments -fno-exceptions: YES 
Compiler for C++ supports arguments -fno-rtti: YES 
Compiler for C++ supports arguments -fno-threadsafe-statics: YES 
Compiler for C++ supports arguments -fvisibility-inlines-hidden: YES 
Library m found: YES
Found pkg-config: YES (/usr/local/bin/pkg-config) 0.29.2
Run-time dependency freetype2 found: YES 26.0.20
Dependency glib-2.0 skipped: feature glib disabled
Dependency gobject-2.0 skipped: feature gobject disabled
Dependency graphite2 skipped: feature graphite2 disabled
Run-time dependency graphite2 found: YES 3.0.1
Library iwasm skipped: feature wasm disabled
Run-time dependency icu-uc found: YES 73.2
Run-time dependency cairo found: YES 1.18.0
Run-time dependency cairo-ft found: YES 1.18.0
Dependency chafa skipped: feature chafa disabled
Compiler for C++ supports arguments -Wno-non-virtual-dtor: YES 
Run-time dependency appleframeworks found: YES (ApplicationServices)
Checking for type "CTFontRef" with dependency appleframeworks: YES 
Run-time dependency threads found: YES
Has header "unistd.h" : YES 
Has header "sys/mman.h" : YES 
Has header "stdbool.h" : YES 
Has header "xlocale.h" : YES 
Checking for function "atexit" : YES 
Checking for function "mprotect" : YES 
Checking for function "sysconf" : YES 
Checking for function "getpagesize" : YES 
Checking for function "mmap" : YES 
Checking for function "isatty" : YES 
Checking for function "uselocale" : NO 
Checking for function "newlocale" : NO 
Checking for function "sincosf" : NO 
Checking for function "cairo_user_font_face_set_render_color_glyph_func" with dependency cairo: YES 
Checking for function "cairo_font_options_get_custom_palette_color" with dependency cairo: YES 
Checking for function "cairo_user_scaled_font_get_foreground_source" with dependency cairo: YES 
Checking for function "FT_Get_Var_Blend_Coordinates" with dependency freetype2: YES 
Checking for function "FT_Set_Var_Blend_Coordinates" with dependency freetype2: YES 
Checking for function "FT_Done_MM_Var" with dependency freetype2: YES 
Checking for function "FT_Get_Transform" with dependency freetype2: YES 
Program gen-hb-version.py found: YES (/Volumes/Temporary/harfbuzz-8.4.0/src/gen-hb-version.py)
Configuring hb-version.h with command
Program ragel found: NO
src/meson.build:416: WARNING: You have to install ragel if you are going to develop HarfBuzz itself
Program gen-harfbuzzcc.py found: YES (/Volumes/Temporary/harfbuzz-8.4.0/src/gen-harfbuzzcc.py)
Configuring hb-features.h using configuration
Configuring hb-supported-features.h using configuration
Program gen-def.py found: YES (/Volumes/Temporary/harfbuzz-8.4.0/src/gen-def.py)
Fetching value of define "_MSC_FULL_VER" : (undefined) (cached)
Program gen-harfbuzzcc.py found: YES (/Volumes/Temporary/harfbuzz-8.4.0/src/gen-harfbuzzcc.py)
Dependency cairo found: YES 1.18.0 (cached)
src/meson.build:812: WARNING: Project targets '>= 0.55.0' but uses feature introduced in '1.3.0': fs.relative_to.
Configuring harfbuzz-config.cmake using configuration
Program gtkdoc-scan found: NO
Message: Not building documentation as gtk-doc was not found
Configuring config.h using configuration
Build targets in project: 12
WARNING: Project specifies a minimum meson_version '>= 0.55.0' but uses features which were added in newer versions:
 * 1.3.0: {'fs.relative_to'}

harfbuzz 8.4.0

  Directories
    prefix                    : /usr/local/silo/harfbuzz/8.4.0
    bindir                    : bin
    libdir                    : lib
    includedir                : include
    datadir                   : share
    cmakepackagedir           : lib/cmake

  Unicode callbacks (you want at least one)
    Builtin                   : YES
    Glib                      : NO
    ICU                       : YES

  Font callbacks (the more the merrier)
    Builtin                   : YES
    FreeType                  : YES

  Dependencies used for command-line utilities
    Cairo                     : YES
    Chafa                     : NO

  Additional shapers
    Graphite2                 : YES
    WebAssembly (experimental): NO

  Platform shapers (not normally needed)
    CoreText                  : YES
    DirectWrite (experimental): NO
    GDI/Uniscribe             : NO

  Other features
    Documentation             : NO
    GObject bindings          : NO
    Cairo integration         : YES
    Introspection             : NO
    Experimental APIs         : NO

  Testing
    Tests                     : NO
    Benchmark                 : NO

  User defined options
    buildtype                 : release
    prefix                    : /usr/local/silo/harfbuzz/8.4.0
    strip                     : true
    c_link_args               : -Wl,-headerpad_max_install_names -Wl,-dead_strip_dylibs -Wl,-dead_strip
    cairo                     : enabled
    chafa                     : disabled
    coretext                  : enabled
    freetype                  : enabled
    glib                      : disabled
    gobject                   : disabled
    graphite                  : enabled
    icu                       : enabled
    introspection             : disabled
    tests                     : disabled

Found ninja-1.11.1 at /usr/local/bin/ninja

(Note: same happens with a vanilla meson mybuilddir build: no utilities. 😢)

The build system somehow should give a clear indication that the build of the utilities is skipped, and also give the reason why it is skipped.