Skip to content

Commit 56aa9eb

Browse files
Try parallel builds
1 parent f474de6 commit 56aa9eb

4 files changed

Lines changed: 46 additions & 5 deletions

File tree

AGENTS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,9 @@ Updates to ./build.sh and ./build.cmd should be accompanied by updates to this f
107107
./build.sh clean-all # Full clean (C++ + Rust targets)
108108
```
109109

110+
The build scripts pass an explicit job count to `cmake --build --parallel`. Set
111+
`CMAKE_BUILD_PARALLEL_LEVEL` to override the default detected logical CPU count.
112+
110113
**Requirements:** CMake 3.20+, C++17, Rust toolchain (cargo), protoc. On macOS: `brew install cmake ninja protobuf abseil spdlog`. On Linux: see the CI workflow for apt packages.
111114

112115
### SDK Packaging

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ Using build scripts:
8686
.\build.cmd release-all # Build Release with tests + examples
8787
```
8888

89+
The build scripts pass an explicit job count to `cmake --build --parallel`. Set
90+
`CMAKE_BUILD_PARALLEL_LEVEL` to override the default detected logical CPU count.
91+
8992
### Windows build using cmake/vcpkg
9093
```bash
9194
cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE="$PWD/vcpkg/scripts/buildsystems/vcpkg.cmake" # Generate Makefiles in build folder

build.cmd

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ set "BUILD_TYPE=Release"
77
set "PRESET=windows-release"
88
set "LIVEKIT_VERSION="
99
set "CMAKE_EXTRA_ARGS="
10+
set "BUILD_PARALLEL_JOBS="
1011

1112
REM ============================================================
1213
REM Auto-detect LIBCLANG_PATH if not already set
@@ -214,8 +215,17 @@ if errorlevel 1 (
214215
goto build_only
215216

216217
:build_only
217-
echo ==^> Building (%BUILD_TYPE%)...
218-
cmake --build "%BUILD_DIR%" --config %BUILD_TYPE%
218+
if not defined BUILD_PARALLEL_JOBS (
219+
if defined CMAKE_BUILD_PARALLEL_LEVEL (
220+
set "BUILD_PARALLEL_JOBS=%CMAKE_BUILD_PARALLEL_LEVEL%"
221+
) else if defined NUMBER_OF_PROCESSORS (
222+
set "BUILD_PARALLEL_JOBS=%NUMBER_OF_PROCESSORS%"
223+
) else (
224+
set "BUILD_PARALLEL_JOBS=2"
225+
)
226+
)
227+
echo ==^> Building (%BUILD_TYPE%) with %BUILD_PARALLEL_JOBS% parallel jobs...
228+
cmake --build "%BUILD_DIR%" --config %BUILD_TYPE% --parallel "%BUILD_PARALLEL_JOBS%"
219229
if errorlevel 1 (
220230
echo Build failed!
221231
exit /b 1

build.sh

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,14 +161,39 @@ configure() {
161161
fi
162162
}
163163

164+
detect_parallel_jobs() {
165+
if [[ -n "${CMAKE_BUILD_PARALLEL_LEVEL:-}" ]]; then
166+
echo "${CMAKE_BUILD_PARALLEL_LEVEL}"
167+
return
168+
fi
169+
170+
local jobs=""
171+
if command -v getconf >/dev/null 2>&1; then
172+
jobs="$(getconf _NPROCESSORS_ONLN 2>/dev/null || true)"
173+
fi
174+
if [[ -z "${jobs}" || ! "${jobs}" =~ ^[0-9]+$ || "${jobs}" -lt 1 ]]; then
175+
if command -v sysctl >/dev/null 2>&1; then
176+
jobs="$(sysctl -n hw.ncpu 2>/dev/null || true)"
177+
fi
178+
fi
179+
if [[ -z "${jobs}" || ! "${jobs}" =~ ^[0-9]+$ || "${jobs}" -lt 1 ]]; then
180+
jobs="2"
181+
fi
182+
183+
echo "${jobs}"
184+
}
185+
164186
build() {
165-
echo "==> Building (${BUILD_TYPE})..."
187+
local parallel_jobs
188+
parallel_jobs="$(detect_parallel_jobs)"
189+
190+
echo "==> Building (${BUILD_TYPE}) with ${parallel_jobs} parallel jobs..."
166191
if [[ -n "${PRESET}" ]] && [[ -f "${PROJECT_ROOT}/CMakePresets.json" ]]; then
167192
# Use preset build if available
168-
cmake --build --preset "${PRESET}"
193+
cmake --build --preset "${PRESET}" --parallel "${parallel_jobs}"
169194
else
170195
# Fallback to traditional build
171-
cmake --build "${BUILD_DIR}"
196+
cmake --build "${BUILD_DIR}" --parallel "${parallel_jobs}"
172197
fi
173198
}
174199

0 commit comments

Comments
 (0)