This directory contains the Conan 2 recipe and vcpkg overlay port for the Ironpress C and C++ bindings. Both packages expose the same stable C ABI and header-only C++17 wrapper; they do not introduce another renderer or C++ ABI.
The recipes are validated in this repository before they are proposed to ConanCenter and the curated vcpkg registry. Until those external submissions are accepted, use these recipes from an Ironpress checkout. The public package names must not be advertised as generally available before that happens.
ConanCenter requires recipes to build from source rather than repackage
precompiled binaries. The vcpkg port follows the same model so both registries
exercise one contract. Each recipe fetches an immutable Ironpress tag, injects
the pinned workspace lockfile, and verifies both checksums before building with
--locked.
Building requires Rust 1.88 or newer on the target host. The initial recipes support native builds for Linux and macOS on x86-64 and ARM64, and Windows on x86-64. Cross-compilation is rejected instead of silently producing an artifact for an untested contract. Consumers do not need Rust after packaging.
The source policy and port structure follow the upstream guidance:
- ConanCenter sources and patches
- ConanCenter recipe structure
- vcpkg
vcpkg_from_github - vcpkg maintainer guide
Install Conan 2, detect the native profile, then create both linkage variants:
conan profile detect --force
conan create packaging/conan/all --version=1.7.0 --build=missing
conan create packaging/conan/all --version=1.7.0 --build=missing \
-o 'ironpress/*:shared=True'The canonical test_package installs each created package through CMake, then
renders a PDF from independent C and C++ consumers.
After creating the package locally, a project can resolve it with:
conan install --requires=ironpress/1.7.0 --build=missingBootstrap a vcpkg checkout and pass its path plus a native triplet to the test driver:
packaging/vcpkg/test/run.sh /path/to/vcpkg x64-linux
packaging/vcpkg/test/run.sh /path/to/vcpkg x64-linux-dynamicThe Windows workflow uses run.ps1 with the same two arguments. A project can
consume the local overlay directly:
vcpkg install ironpress --overlay-ports=packaging/vcpkg/portsBoth managers export Ironpress::C and Ironpress::CXX. Package tests compile
and run both consumers for static and shared linkage on every advertised host.
Package-manager metadata is updated only after the release tag exists, because the immutable source archive and its checksum are part of each recipe.
- Update the version in
packaging/conan/config.yml,conandata.yml, and the vcpkg manifest. - Pin the released
Cargo.lockURL and its Conan SHA-256 and vcpkg SHA-512. - Update the Conan SHA-256 and vcpkg SHA-512 from the tagged source archive.
- Run the Conan and vcpkg static and shared consumer tests.
- Let the full native CI matrix pass before opening external registry updates.
The v1.6.0 source tag predates the committed workspace lockfile, so its recipe
uses the immutable lockfile from the corresponding release merge. Starting with
v1.7.0, release tags include Cargo.lock, which remains pinned separately so
an absent or mismatched lock cannot silently produce an unlocked package.