chore(vendor): vendor DuckDB v1.1.3 + CMake target DuckDB::DuckDB

cpp/vendor/duckdb/ con:
- include/duckdb.h         (C API, versionado)
- download_duckdb.sh       (descarga libs precompiladas para linux/windows)
- .gitignore               (libduckdb.so, duckdb.dll, duckdb.lib, libduckdb_static.a)
- README.md

cpp/CMakeLists.txt anade target INTERFACE 'duckdb_vendored' (alias
DuckDB::DuckDB) que las apps enlazan con target_link_libraries.
duckdb_copy_runtime(<target>) copia la lib runtime al lado del exe en
build time. Primer consumidor: graph_explorer (issue 0010).
This commit is contained in:
2026-05-01 01:25:09 +02:00
parent 1af0cf6132
commit f0cb5bce24
5 changed files with 4276 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
linux/libduckdb.so
linux/libduckdb_static.a
windows/duckdb.dll
windows/duckdb.lib
+31
View File
@@ -0,0 +1,31 @@
# DuckDB vendor
DuckDB v1.1.3 (C API) usado por `cpp/functions/duck/` y por apps como
`graph_explorer` (issue 0010 — nodo Table).
## Estructura
```
duckdb/
include/duckdb.h # C API (versionado)
linux/libduckdb.so # gitignored — bajar con download_duckdb.sh
windows/duckdb.dll # gitignored — bajar con download_duckdb.sh
windows/duckdb.lib # gitignored — bajar con download_duckdb.sh
download_duckdb.sh # script de descarga
```
## Setup primera vez
```bash
cd cpp/vendor/duckdb
./download_duckdb.sh # ambas plataformas
./download_duckdb.sh linux # solo lo que vayas a usar
```
## CMake
`cpp/CMakeLists.txt` define el target `duckdb_vendored` (alias `DuckDB::DuckDB`)
que las apps pueden enlazar con `target_link_libraries(<app> PRIVATE DuckDB::DuckDB)`.
El runtime requiere `libduckdb.so` (linux) o `duckdb.dll` (windows) en el
mismo directorio del exe — la regla CMake hace la copia automatica al build.
+46
View File
@@ -0,0 +1,46 @@
#!/usr/bin/env bash
# Descarga las libs precompiladas de DuckDB para linux y windows en
# cpp/vendor/duckdb/{linux,windows}/. El header duckdb.h vive en include/
# y SI esta versionado.
#
# Uso:
# ./download_duckdb.sh # ambas plataformas
# ./download_duckdb.sh linux # solo linux
# ./download_duckdb.sh windows # solo windows
set -euo pipefail
VERSION="v1.1.3"
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TMP="$(mktemp -d)"
trap "rm -rf $TMP" EXIT
target="${1:-all}"
dl_linux() {
echo "[duckdb] downloading linux libs..."
curl -sL -o "$TMP/lin.zip" \
"https://github.com/duckdb/duckdb/releases/download/${VERSION}/libduckdb-linux-amd64.zip"
mkdir -p "$HERE/linux"
unzip -o "$TMP/lin.zip" -d "$TMP/lin/" > /dev/null
cp "$TMP/lin/libduckdb.so" "$HERE/linux/"
echo "[duckdb] -> $HERE/linux/libduckdb.so ($(du -h "$HERE/linux/libduckdb.so" | cut -f1))"
}
dl_windows() {
echo "[duckdb] downloading windows libs..."
curl -sL -o "$TMP/win.zip" \
"https://github.com/duckdb/duckdb/releases/download/${VERSION}/libduckdb-windows-amd64.zip"
mkdir -p "$HERE/windows"
unzip -o "$TMP/win.zip" -d "$TMP/win/" > /dev/null
cp "$TMP/win/duckdb.dll" "$HERE/windows/"
cp "$TMP/win/duckdb.lib" "$HERE/windows/"
echo "[duckdb] -> $HERE/windows/duckdb.dll ($(du -h "$HERE/windows/duckdb.dll" | cut -f1))"
}
case "$target" in
linux) dl_linux ;;
windows) dl_windows ;;
all) dl_linux; dl_windows ;;
*) echo "Uso: $0 [linux|windows|all]"; exit 1 ;;
esac
+4162
View File
File diff suppressed because it is too large Load Diff