Files
NebulaBrowser/build.sh
T
andrew 96cf0d9763 Add macOS build helper script
Adds a root-level `build.sh` for configuring and building Nebula Browser with CMake on macOS, including clean and configure-only modes. Also removes an unused `Trim` helper from the extension manager.
2026-07-13 11:53:47 +12:00

72 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Build Nebula Browser (macOS).
# Usage:
# ./build.sh - configure + Release build
# ./build.sh Debug - configure + Debug build
# ./build.sh Release - configure + Release build
# ./build.sh configure - configure only
# ./build.sh clean - remove the build folder
cd "$(dirname "$0")"
if [[ "${1:-}" == "clean" ]]; then
echo "Removing build/ ..."
rm -rf build
echo "Done."
exit 0
fi
CONFIG="Release"
case "${1:-}" in
Debug|debug) CONFIG="Debug" ;;
Release|release) CONFIG="Release" ;;
esac
if [[ ! -f "thirdparty/cef/cmake/FindCEF.cmake" ]]; then
echo "ERROR: CEF not found at thirdparty/cef/"
echo "Download a macOS CEF standard binary distribution and extract it"
echo "so that thirdparty/cef/cmake/FindCEF.cmake exists."
exit 1
fi
case "$(uname -m)" in
arm64) PROJECT_ARCH="arm64" ;;
x86_64) PROJECT_ARCH="x86_64" ;;
*)
echo "ERROR: Unsupported architecture: $(uname -m)"
exit 1
;;
esac
echo "Configuring CMake (arch=$PROJECT_ARCH, config=$CONFIG)..."
cmake -B build \
-DPROJECT_ARCH="$PROJECT_ARCH" \
-DCMAKE_BUILD_TYPE="$CONFIG" \
|| { echo "Configure failed."; exit 1; }
if [[ "${1:-}" == "configure" ]]; then
echo "Configure complete."
exit 0
fi
echo "Building $CONFIG..."
cmake --build build --config "$CONFIG" \
|| { echo "Build failed."; exit 1; }
APP_PATH=""
for candidate in "build/$CONFIG/NebulaBrowser.app" "build/NebulaBrowser.app"; do
if [[ -d "$candidate" ]]; then
APP_PATH="$candidate"
break
fi
done
echo ""
if [[ -n "$APP_PATH" ]]; then
echo "Build succeeded: $APP_PATH"
else
echo "Build succeeded (app bundle location may vary under build/)"
fi