162 lines
4.1 KiB
Shell
162 lines
4.1 KiB
Shell
|
|
#!/bin/bash
|
||
|
|
#
|
||
|
|
# KiCad Wasm Port - Build Script
|
||
|
|
#
|
||
|
|
# This script builds KiCad with optional dependencies disabled.
|
||
|
|
#
|
||
|
|
|
||
|
|
set -e
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||
|
|
KICAD_DIR="$PROJECT_ROOT/kicad"
|
||
|
|
BUILD_DIR="$PROJECT_ROOT/build"
|
||
|
|
CMAKE_MODULE_PATH="$PROJECT_ROOT/cmake"
|
||
|
|
STUBS_DIR="$PROJECT_ROOT/stubs/include"
|
||
|
|
|
||
|
|
# Default options
|
||
|
|
USE_CURL="${KICAD_USE_CURL:-OFF}"
|
||
|
|
USE_GIT="${KICAD_USE_GIT:-OFF}"
|
||
|
|
USE_OCC="${KICAD_USE_OCC:-OFF}"
|
||
|
|
USE_NGSPICE="${KICAD_USE_NGSPICE:-OFF}"
|
||
|
|
BUILD_TYPE="${CMAKE_BUILD_TYPE:-Release}"
|
||
|
|
PARALLEL_JOBS="${PARALLEL_JOBS:-$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 4)}"
|
||
|
|
|
||
|
|
show_help() {
|
||
|
|
echo "KiCad Wasm Port - Build Script"
|
||
|
|
echo ""
|
||
|
|
echo "Usage: $0 [options]"
|
||
|
|
echo ""
|
||
|
|
echo "Options:"
|
||
|
|
echo " --with-curl Enable CURL (network features)"
|
||
|
|
echo " --with-git Enable libgit2 (git integration)"
|
||
|
|
echo " --with-occ Enable OpenCASCADE (STEP/3D)"
|
||
|
|
echo " --with-ngspice Enable ngspice (SPICE simulation)"
|
||
|
|
echo " --debug Build in Debug mode"
|
||
|
|
echo " --clean Clean build directory first"
|
||
|
|
echo " -j N Number of parallel jobs (default: $PARALLEL_JOBS)"
|
||
|
|
echo " --configure-only Only run cmake, don't build"
|
||
|
|
echo " -h, --help Show this help"
|
||
|
|
echo ""
|
||
|
|
echo "Environment variables:"
|
||
|
|
echo " KICAD_USE_CURL=ON|OFF (default: OFF)"
|
||
|
|
echo " KICAD_USE_GIT=ON|OFF (default: OFF)"
|
||
|
|
echo " KICAD_USE_OCC=ON|OFF (default: OFF)"
|
||
|
|
echo " KICAD_USE_NGSPICE=ON|OFF (default: OFF)"
|
||
|
|
echo " CMAKE_BUILD_TYPE=Release|Debug"
|
||
|
|
echo ""
|
||
|
|
}
|
||
|
|
|
||
|
|
CLEAN_BUILD=0
|
||
|
|
CONFIGURE_ONLY=0
|
||
|
|
|
||
|
|
# Parse arguments
|
||
|
|
while [[ $# -gt 0 ]]; do
|
||
|
|
case $1 in
|
||
|
|
--with-curl)
|
||
|
|
USE_CURL=ON
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
--with-git)
|
||
|
|
USE_GIT=ON
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
--with-occ)
|
||
|
|
USE_OCC=ON
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
--with-ngspice)
|
||
|
|
USE_NGSPICE=ON
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
--debug)
|
||
|
|
BUILD_TYPE=Debug
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
--clean)
|
||
|
|
CLEAN_BUILD=1
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
-j)
|
||
|
|
PARALLEL_JOBS="$2"
|
||
|
|
shift 2
|
||
|
|
;;
|
||
|
|
--configure-only)
|
||
|
|
CONFIGURE_ONLY=1
|
||
|
|
shift
|
||
|
|
;;
|
||
|
|
-h|--help)
|
||
|
|
show_help
|
||
|
|
exit 0
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
echo "Unknown option: $1"
|
||
|
|
show_help
|
||
|
|
exit 1
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
done
|
||
|
|
|
||
|
|
echo "=== KiCad Wasm Port - Build ==="
|
||
|
|
echo ""
|
||
|
|
echo "Configuration:"
|
||
|
|
echo " Build type: $BUILD_TYPE"
|
||
|
|
echo " CURL: $USE_CURL"
|
||
|
|
echo " Git: $USE_GIT"
|
||
|
|
echo " OpenCASCADE: $USE_OCC"
|
||
|
|
echo " ngspice: $USE_NGSPICE"
|
||
|
|
echo " Parallel jobs: $PARALLEL_JOBS"
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Check if kicad exists
|
||
|
|
if [ ! -f "$KICAD_DIR/CMakeLists.txt" ]; then
|
||
|
|
echo "Error: KiCad source not found at $KICAD_DIR"
|
||
|
|
echo "Run: git submodule update --init --recursive"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Clean if requested
|
||
|
|
if [ $CLEAN_BUILD -eq 1 ] && [ -d "$BUILD_DIR" ]; then
|
||
|
|
echo "Cleaning build directory..."
|
||
|
|
rm -rf "$BUILD_DIR"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Create build directory
|
||
|
|
mkdir -p "$BUILD_DIR"
|
||
|
|
cd "$BUILD_DIR"
|
||
|
|
|
||
|
|
# Additional include paths for stubs
|
||
|
|
EXTRA_INCLUDES=""
|
||
|
|
if [ "$USE_CURL" = "OFF" ] || [ "$USE_GIT" = "OFF" ]; then
|
||
|
|
EXTRA_INCLUDES="-DCMAKE_CXX_FLAGS=-I$STUBS_DIR"
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Configure
|
||
|
|
echo "Running CMake..."
|
||
|
|
cmake "$KICAD_DIR" \
|
||
|
|
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
|
||
|
|
-DCMAKE_MODULE_PATH="$CMAKE_MODULE_PATH" \
|
||
|
|
-DKICAD_USE_CURL="$USE_CURL" \
|
||
|
|
-DKICAD_USE_GIT="$USE_GIT" \
|
||
|
|
-DKICAD_USE_OCC="$USE_OCC" \
|
||
|
|
-DKICAD_USE_NGSPICE="$USE_NGSPICE" \
|
||
|
|
-DKICAD_SCRIPTING_WXPYTHON=OFF \
|
||
|
|
-DKICAD_BUILD_QA_TESTS=OFF \
|
||
|
|
-DKICAD_BUILD_I18N=OFF \
|
||
|
|
$EXTRA_INCLUDES
|
||
|
|
|
||
|
|
if [ $CONFIGURE_ONLY -eq 1 ]; then
|
||
|
|
echo ""
|
||
|
|
echo "Configuration complete. Run 'make -j$PARALLEL_JOBS' in $BUILD_DIR to build."
|
||
|
|
exit 0
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Build
|
||
|
|
echo ""
|
||
|
|
echo "Building..."
|
||
|
|
cmake --build . --parallel "$PARALLEL_JOBS"
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "=== Build Complete ==="
|
||
|
|
echo ""
|
||
|
|
echo "Binaries are in: $BUILD_DIR"
|