Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
296 changes: 0 additions & 296 deletions .github/workflows/rebuild_native_libs.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ win64svc/cmake-build-debug
win64svc/build
win64svc/CMakeCache.txt
win64svc/cmake-build-release
core/src/main/resources/io/questdb/client/bin/linux/libasm.a
core/src/main/resources/io/questdb/client/bin/
core/questdb/client/bin-local
core/cmake-build-debug
core/cmake-build-debug-coverage
Expand All @@ -29,4 +29,4 @@ core/CMakeCache.txt
**/build
**/CMakeFiles
.envrc
.vscode
.vscode
26 changes: 22 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,25 @@ Full release procedure, one-time setup, and failure handling: [artifacts/release

### Building Native Libraries

The client includes native libraries (C/C++ and assembly) for performance-critical operations. Pre-built binaries are included in the repository, but you can rebuild them locally if needed.
The client includes native libraries (C/C++ and assembly) for performance-critical operations. Native binaries are
built on demand by Maven and packaged into the client jar under `io/questdb/client/bin/<platform>/`.

For normal local development, initialize submodules once and run Maven:

```bash
git submodule update --init --recursive
mvn -pl core package
```

Maven builds the current platform's native library during `generate-resources`. To skip the native build explicitly,
use `-Dquestdb.client.native.skip=true`.

Release builds still use `-P include-native-artifacts`: CI builds each supported platform, stages the results under
`core/target/native-libs`, and Maven copies those staged binaries into the released jar.

For IntelliJ, add `core/native/intellij_triggers.xml` as an Ant build file and configure the
`questdb-client-native-build` target to run before compilation. This mirrors the command-line Maven native build for
IDE test runs.

#### Prerequisites

Expand All @@ -279,7 +297,7 @@ brew install cmake nasm
# Set deployment target
export MACOSX_DEPLOYMENT_TARGET=13.0

# Build native library
# Build native library directly with CMake
cd core
cmake -B cmake-build-release -DCMAKE_BUILD_TYPE=Release
cmake --build cmake-build-release --config Release
Expand All @@ -291,7 +309,7 @@ cmake --build cmake-build-release --config Release
# Install build tools (Debian/Ubuntu)
sudo apt-get install cmake nasm build-essential

# Build native library
# Build native library directly with CMake
cd core
cmake -DCMAKE_BUILD_TYPE=Release -B cmake-build-release -S.
cmake --build cmake-build-release --config Release
Expand Down Expand Up @@ -326,7 +344,7 @@ cmake --build cmake-build-release-win64 --config Release

#### Native Library Output Locations

Built libraries are placed in the resources directory for each platform:
Direct CMake builds place libraries in the development resources directory:

```
core/target/classes/io/questdb/client/bin-local/
Expand Down
Loading
Loading