Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/pg83/ix/llms.txt

Use this file to discover all available pages before exploring further.

IX package recipes declare build-time host executables using the bld_tool block. The bld/ namespace contains compilers, parser generators, internationalization tools, GUI framework helpers, ELF manipulation utilities, and fake/stub tools for suppressing unwanted build-time dependencies. This page catalogs everything that package authors explicitly add to bld_tool or bld_libs — template-internal tools that are pulled in automatically (such as bld/make, bld/cmake, and bld/compiler) are not listed here.

Core Infrastructure

These tools cover the most common build-time needs across all package types.
ToolProvidesWhen to use
bld/pkg/configpkg-configWhen the build system calls pkg-config to locate libraries and their flags
bld/pythonpython3Build scripts, code generators, meson, waf, gyp
bld/perlperlBuild scripts, autotools config.sub, OpenSSL’s Configure script
bld/bashbashBuild scripts that use bash-isms ([[, arrays, and other extensions)
bld/m4m4 macro processorAutotools internals; rarely needed explicitly
Example — a package needing pkg-config and perl:
{% block bld_tool %}
bld/pkg/config
bld/perl
{% endblock %}

Parser and Lexer Generators

ToolProvidesWhen to use
bld/bisonbison (also provides yacc)Packages with .y grammar files
bld/flexflex (also provides lex)Packages with .l lexer files
bld/byaccbyaccWhen the package specifically requires Berkeley yacc rather than bison
bld/gperfgperf perfect hash generatorPackages generating perfect hash tables (glibc, glib, etc.)
bin/flex (a runtime-linked flex) is occasionally used instead of bld/flex when the package needs flex at runtime or links against libfl. Prefer bld/flex for build-time-only use.

Internationalization and Documentation

ToolProvidesWhen to use
bld/gettextmsgfmt, xgettext, msgmergePackages with .po translation files
bld/intltoolintltool-merge, intltool-updateGNOME/GTK packages with .desktop or .xml i18n
bld/texinfomakeinfoPackages that build .info documentation
bld/gtkdocgtkdoc-scan, gtkdoc-mkdbGTK/GNOME libraries that generate API documentation
bin/scdocscdoc man page generatorWayland/wlroots ecosystem man pages

Autotools Support

bld/auto/archive provides the Autoconf Archive collection of AX_* m4 macros. It is needed in bld_tool when a package extends die/c/autorehell.sh and its configure.ac references macros from the GNU Autoconf Archive — for example AX_WITH_CURSES or AX_PTHREAD. Without this tool, autoreconf generates a broken configure script.
{% block bld_tool %}
bld/auto/archive
{% endblock %}

GUI Framework Tools

ToolProvidesWhen to use
bld/waylandwayland-scannerPackages that generate C stubs from .xml Wayland protocol files
bld/glibglib-compile-schemas, glib-mkenums, glib-genmarshal, gdbus-codegenGLib/GTK code generation: schemas, enums, D-Bus bindings
bld/girg-ir-scanner, g-ir-compilerGObject Introspection typelib generation

Assembly

ToolProvidesWhen to use
bld/nasmnasm assemblerPackages with x86/x86_64 hand-written assembly (codecs, crypto, bootloaders)

Fake and Stub Tools

These packages create no-op executables that satisfy build system checks without pulling in heavy real dependencies. All of them belong in bld_tool.
ToolProvidesWhen to use
bld/fake/er(tool_name=X)A Python script named X that creates empty output filesDoc generators (asciidoctor, sphinx-build, rst2man, xsltproc) whose output is never installed
bld/fake(tool_name=X)An empty shell script named XWhen a tool is called during the build but its output is never used
bld/fakegitA no-op git commandBuilds that call git describe or git rev-parse to embed version strings
bld/fake/binutilsLLVM-backed readelf, objdump, objcopy, ar, asWhen the build expects GNU binutils but LLVM equivalents are sufficient
bld/fake/er vs bld/fake: bld/fake/er is the smarter variant — it detects -o/--output arguments and creates empty output files so that downstream install targets do not fail on missing generated files. Use bld/fake/er by default; use bld/fake only when the simpler empty-script stub is sufficient. bld/fakegit: equivalent to bld/fake(tool_name=git). Many packages call git describe during the build to embed a version string. Add bld/fakegit to bld_tool and supply the version string through a patch (for example, by writing a VERSION file or patching a version.h). Example — suppressing a documentation generator and git version lookup:
{% block bld_tool %}
bld/fake/er(tool_name=asciidoctor)
bld/fakegit
{% endblock %}
Common bld/fake/er uses:
  • bld/fake/er(tool_name=asciidoctor) — skip documentation generation (Ruby dependency)
  • bld/fake/er(tool_name=xsltproc) — skip XSLT-based doc or man page generation
  • bld/fake/er(tool_name=rst2man) — skip reStructuredText man pages
  • bld/fake/er(tool_name=sphinx-build) — skip Sphinx documentation
Before reaching for bld/fake/er, search pkgs/ for the tool name — a real bld/ package may already exist. Only fall back to a fake when the tool genuinely produces output that is never installed.

ELF and Library Manipulation

These infrastructure tools are used by templates and advanced packages that need to inspect or rewrite compiled artifacts.
ToolProvidesWhen to use
bld/librarianpatchns, listsym, findlibNamespace patching and symbol inspection of static libraries
bld/devendordevendor, devendor_c, devendor_hRemoving vendor prefixes from bundled library headers and symbols
bld/relocBinary relocation toolAdjusting RPATH/RUNPATH in installed ELF binaries
bld/dlfcndl_stubs, cut_prefixdlfcn.h compatibility stubs for static linking without libdl
bld/prependprependPrepending content to files in postinstall scripts
bld/shebangsShebang fixerRewriting #!/usr/bin/env python3 shebangs to absolute paths

Python Build Dependencies (pip/ packages)

pip/ packages provide Python modules for build-time use. They go in bld_libs, not bld_tool, because they are importable Python libraries rather than standalone executables.
PackageProvides
pip/setuptoolsPython packaging tools (setup.py support)
pip/PyYAMLYAML parser for build scripts reading .yaml configuration files
pip/MakoMako template engine (used by mesa and other code generators)
pip/jinja2Jinja2 template engine for code generation
pip/scriptsBuild script helpers
Example — mesa, which needs Mako templates and YAML during build:
{% block bld_libs %}
pip/Mako
pip/PyYAML
lib/mesa/fakes
{% endblock %}
pip/ packages are generated dynamically from PyPI metadata (see pkgs/pip/pypi.json). Any PyPI package can be referenced as pip/<PackageName> — the name must match the PyPI distribution name exactly, including case.

Build docs developers (and LLMs) love