feat: establish reproducible FreeCAD web compatibility baseline
This commit is contained in:
49
scripts/build-camotics-native.sh
Normal file
49
scripts/build-camotics-native.sh
Normal file
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
repo_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
||||
camotics_dir="$repo_root/CAMotics"
|
||||
cbang_dir="$repo_root/.cache/camotics-native/cbang"
|
||||
cbang_revision="9b6672a0e2b800a909d799ffa3ab46774cf171b8"
|
||||
jobs=${CAMOTICS_BUILD_JOBS:-$(nproc)}
|
||||
|
||||
test -f "$camotics_dir/SConstruct"
|
||||
command -v git >/dev/null
|
||||
command -v scons >/dev/null
|
||||
command -v qmake >/dev/null
|
||||
command -v moc >/dev/null
|
||||
command -v uic >/dev/null
|
||||
command -v lrelease >/dev/null
|
||||
command -v pkg-config >/dev/null
|
||||
python3 -c 'import six' >/dev/null
|
||||
test -f /usr/include/v8/v8.h
|
||||
pkg-config --exists Qt5Core Qt5Gui Qt5Widgets Qt5OpenGL Qt5Network Qt5WebSockets
|
||||
|
||||
if [[ ! -d "$cbang_dir/.git" ]]; then
|
||||
mkdir -p "$(dirname "$cbang_dir")"
|
||||
git clone --filter=blob:none https://github.com/CauldronDevelopmentLLC/cbang.git "$cbang_dir"
|
||||
fi
|
||||
current_revision=$(git -C "$cbang_dir" rev-parse HEAD)
|
||||
if [[ "$current_revision" != "$cbang_revision" ]]; then
|
||||
git -C "$cbang_dir" fetch --depth=1 origin "$cbang_revision"
|
||||
git -C "$cbang_dir" checkout --detach "$cbang_revision"
|
||||
fi
|
||||
test "$(git -C "$cbang_dir" rev-parse HEAD)" = "$cbang_revision"
|
||||
test -z "$(git -C "$cbang_dir" status --porcelain)"
|
||||
|
||||
export QT_SELECT=qt5
|
||||
export CBANG_HOME="$cbang_dir"
|
||||
|
||||
# The Debian V8 package is built without pointer compression. Keep C! and the
|
||||
# CAMotics embedder on the same ABI instead of relying on the host default.
|
||||
cbang_build_marker="$repo_root/.cache/camotics-native/cbang-build-v8-noptr-cxx17"
|
||||
if [[ ! -f "$cbang_build_marker" || "$(<"$cbang_build_marker")" != "$cbang_revision" || ! -f "$cbang_dir/lib/libcbang.a" ]]; then
|
||||
scons -C "$cbang_dir" strict=0 cxxstd=c++17 v8_compress_pointers=0 -j "$jobs"
|
||||
printf '%s\n' "$cbang_revision" > "$cbang_build_marker"
|
||||
fi
|
||||
scons -C "$camotics_dir" strict=0 cxxstd=c++17 v8_compress_pointers=0 \
|
||||
with_gui=1 with_tpl=1 camotics tplang gcodetool planner camsim build/camotics.so -j "$jobs"
|
||||
|
||||
"$camotics_dir/camotics" --version
|
||||
"$camotics_dir/tplang" --version
|
||||
sha256sum "$camotics_dir/camotics" "$camotics_dir/tplang"
|
||||
Reference in New Issue
Block a user