Repository navigation
reference dependencies
Active contributors: Artem
The shipping library depends on Linux/glibc and zlib, plus a compatible TrueType font. Build/test/research tools are separate from runtime dependencies.
| Dependency | Why | Source |
|---|---|---|
| 64-bit Linux with glibc | Only supported platform; GNU/POSIX APIs and ELF packaging |
README.md, CMakeLists.txt, src/platform.h
|
| glibc cookie streams | Callback adapter and counted output share FILE * writing |
src/convert.c, src/pdf_write.c
|
| zlib | Flate-compressed page content and complete embedded font |
src/pdf_write.c, Makefile, CMakeLists.txt
|
| TrueType font | Fixed-repertoire metrics and embedded glyph outlines |
src/font.c, fonts/DejaVuSans.ttf
|
CMake rejects non-Linux, non-64-bit and non-glibc targets.
Make rejects non-Linux; src/platform.h also requires Linux/glibc during compilation.
musl, macOS and Windows are not supported or advertised as merely untested alternatives.
The XML parser and PDF writer are project code, not libxml2 or an external PDF engine. There is no network resolver, Java/FOP runtime, image library, shaping engine or linked subsetter. A caller can supply another compatible font, subject to the 8 MiB cap and unchanged body repertoire.
| Consumption route | zlib handling |
|---|---|
| Raw static archive | Add -lz after the archive/library |
| pkg-config shared |
pkg-config --libs ki_xml_pdf gives public library flags |
| pkg-config static | Use pkg-config --static --libs ki_xml_pdf to include Libs.private: -lz
|
| CMake static target |
ki_xml_pdf::static carries the zlib link-only dependency |
| CMake shared target | Shared library records libz as an ELF NEEDED dependency |
cmake/ki_xml_pdfConfig.cmake.in calls find_dependency(ZLIB).
zlib development files are required when building and for installed CMake discovery.
Do not copy obsolete “glibc and font only” or “no dependencies” claims.
| Tool | Use |
|---|---|
| GCC or Clang, C99 | Core library and CLI |
| GNU Make | Development/install/source targets in Makefile
|
GNU-compatible linker and ar
|
ELF version scripts/soname and static archive |
| zlib development package | Headers and link library; Debian/Ubuntu zlib1g-dev
|
| CMake 3.16+ | Out-of-tree build, CTest, install and consumers |
| pkg-config | Installed consumer discovery |
| Git, tar/gzip, SHA-256 tools | Exact-HEAD source archives and provenance |
C++ is not a core runtime requirement. A C++ compiler is required to check public-header and installed-client compatibility. The Make defaults include C99 warnings, PIC and POSIX feature macros; see Tooling.
| Tool | Evidence |
|---|---|
| Python 3 | CLI/feature/PDF/resource oracles and fixture generators; regular suites use the standard library |
| Bash and standard Unix tools | Integration, docs, installation and archive scripts |
Poppler pdfinfo, pdftotext, pdftohtml
|
Page structure/text extraction and independent reading |
Poppler pdffonts, pdftoppm
|
Embedded-font identity and actual raster ink for font/geometry/integration checks |
binutils readelf, loader ldd
|
Soname, symbol/linkage and old-binary checks |
/usr/bin/time |
Separate converter/generator/reader/oracle RSS records |
| pthreads | Independent-context C regressions |
GNU linker --wrap
|
fsync and zlib failure injection |
| DejaVu system fonts | Non-default bold-font checks in tests/font_metrics_check.py
|
For a Debian/Ubuntu check environment:
sudo apt-get install -y gcc g++ clang make cmake pkg-config zlib1g-dev \
binutils python3 time poppler-utils fonts-dejavu-coreThe repository also bundles its default font. A development system font is not a reason for installed consumers to depend on the source checkout. See Testing for exact suite membership.
.github/workflows/ci.yml uses GitHub-hosted ubuntu-latest and installs job-specific tools.
Actions are actions/checkout@v4 and actions/upload-artifact@v7.0.2.
Those are tag/version references, not immutable commit-SHA pins.
.github/workflows/release.yml additionally uses GitHub CLI to create tag-triggered releases.
The tag job does not rerun functional/resource CI.
Project source, public API and original examples use MIT under LICENSE.
fonts/DejaVuSans.copyright carries the separate Bitstream Vera/DejaVu terms.
Both build systems install the font and its notice alongside the project license.
Users supplying other fonts are responsible for their embedding/distribution rights.
Massif/Valgrind in the OSR-82 evidence is historical profiling tooling, not a converter dependency. UTF-16, table and subsetting research scripts are not runtime or ordinary Make/CMake test dependencies. No product support for those experiments follows from their presence in the source tree.
| File | Role |
|---|---|
Makefile, CMakeLists.txt
|
Required compiler/link/build dependencies |
cmake/ki_xml_pdf.pc.in, cmake/ki_xml_pdfConfig.cmake.in
|
Consumer dependency propagation |
src/platform.h |
Compile-time Linux/glibc guard |
.github/workflows/ci.yml |
Job packages and action references |
LICENSE, fonts/DejaVuSans.copyright
|
Distribution notices |
Related: Packaging, Distribution and releases.