Skip to content

Build as a statically-linked C-API extension when compiled in-tree - #34

Open
JelteF wants to merge 1 commit into
duckdb:mainfrom
JelteF:in-tree-compilation-support
Open

Build as a statically-linked C-API extension when compiled in-tree#34
JelteF wants to merge 1 commit into
duckdb:mainfrom
JelteF:in-tree-compilation-support

Conversation

@JelteF

@JelteF JelteF commented Jul 24, 2026

Copy link
Copy Markdown

When the extension is compiled as part of a DuckDB build (via duckdb_extension_load(... SOURCE_DIR ...)), DuckDB exposes its build_*_extension_capi[_unstable] helpers. Detect that and build through them, so the extension is compiled with DUCKDB_BUILD_STATIC_EXTENSION and tagged DUCKDB_EXTENSION_KIND=CAPI. That lets DuckDB's generated loader statically link and auto-register it, so a C-API extension can be linked into a DuckDB binary without a separate wrapper CMakeLists.

The standalone extension-ci-tools build path is unchanged. Stable vs unstable follows the existing DUCKDB_EXTENSION_API_VERSION_UNSTABLE / TARGET_DUCKDB_VERSION_* variables, falling back to the unstable helpers (which target the exact DuckDB being built) when neither is set, as happens for a default in-tree build.

When the extension is compiled as part of a DuckDB build (via
`duckdb_extension_load(... SOURCE_DIR ...)`), DuckDB exposes its
`build_*_extension_capi[_unstable]` helpers. Detect that and build through them, so
the extension is compiled with `DUCKDB_BUILD_STATIC_EXTENSION` and tagged
`DUCKDB_EXTENSION_KIND=CAPI`. That lets DuckDB's generated loader statically link and
auto-register it, so a C-API extension can be linked into a DuckDB binary without a
separate wrapper CMakeLists.

The standalone extension-ci-tools build path is unchanged. Stable vs unstable follows
the existing `DUCKDB_EXTENSION_API_VERSION_UNSTABLE` / `TARGET_DUCKDB_VERSION_*`
variables, falling back to the unstable helpers (which target the exact DuckDB being
built) when neither is set, as happens for a default in-tree build.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant