# Bob Language - Build Guide This guide describes how to build the Bob language interpreter using CMake + Ninja across different platforms. ## ๐Ÿš€ Quick Start ### Prerequisites - **CMake** 3.20 or later - **Ninja** build system - **C++17** compatible compiler ### Platform-Specific Setup #### ๐ŸŽ macOS ```bash # Install via Homebrew brew install cmake ninja # Or via MacPorts sudo port install cmake ninja ``` #### ๐Ÿง Linux **Ubuntu/Debian:** ```bash sudo apt update sudo apt install cmake ninja-build build-essential ``` **RHEL/CentOS/Fedora:** ```bash # RHEL/CentOS sudo yum install cmake ninja-build gcc-c++ # Fedora sudo dnf install cmake ninja-build gcc-c++ ``` **Arch Linux:** ```bash sudo pacman -S cmake ninja gcc ``` #### ๐ŸชŸ Windows **Option 1: Visual Studio (Recommended)** - Install Visual Studio 2019+ with C++ workload - Install CMake via Visual Studio Installer - Install Ninja: `winget install Ninja-build.Ninja` **Option 2: MSYS2/MinGW** ```bash # In MSYS2 terminal pacman -S mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja mingw-w64-x86_64-gcc ``` **Option 3: Chocolatey** ```powershell # In Administrator PowerShell choco install cmake ninja visualstudio2022buildtools ``` ## ๐Ÿ”จ Build Commands ### Standard Build **Release Build (Optimized):** ```bash cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release ninja -C build ``` **Debug Build (Development):** ```bash cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Debug ninja -C build ``` ### Platform-Specific Examples #### macOS/Linux ```bash # Configure and build cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release ninja -C build # Run interpreter ./build/bin/bob # Run test suite ./build/bin/bob test_bob_language.bob # Run with custom script ./build/bin/bob your_script.bob ``` #### Windows (PowerShell/CMD) ```powershell # Configure and build cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release ninja -C build # Run interpreter .\build\bin\bob.exe # Run test suite .\build\bin\bob.exe test_bob_language.bob # Run with custom script .\build\bin\bob.exe your_script.bob ``` #### Windows (MSYS2/Git Bash) ```bash # Same as macOS/Linux cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release ninja -C build ./build/bin/bob.exe test_bob_language.bob ``` ## ๐Ÿงช Testing ### Automated Testing **All Platforms:** ```bash # Build first ninja -C build # Run tests via CTest cd build ctest --output-on-failure # Or run tests verbosely ctest --verbose ``` **Windows PowerShell:** ```powershell ninja -C build cd build ctest --output-on-failure ``` ### Manual Testing **Interactive Mode:** ```bash # Unix-like systems ./build/bin/bob # Windows .\build\bin\bob.exe ``` **Script Execution:** ```bash # Unix-like systems ./build/bin/bob examples/hello.bob # Windows .\build\bin\bob.exe examples\hello.bob ``` ## โšก Performance **CMake + Ninja** provides fast, cross-platform builds with excellent incremental compilation. ## ๐Ÿ”ง Advanced Configuration ### Custom Install Location **Unix-like:** ```bash cmake -G Ninja -B build \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/opt/bob ninja -C build install ``` **Windows:** ```powershell cmake -G Ninja -B build ` -DCMAKE_BUILD_TYPE=Release ` -DCMAKE_INSTALL_PREFIX="C:\Program Files\Bob" ninja -C build install ``` ### Compiler Selection **GCC:** ```bash cmake -G Ninja -B build \ -DCMAKE_CXX_COMPILER=g++ \ -DCMAKE_BUILD_TYPE=Release ``` **Clang:** ```bash cmake -G Ninja -B build \ -DCMAKE_CXX_COMPILER=clang++ \ -DCMAKE_BUILD_TYPE=Release ``` **MSVC (Windows):** ```powershell cmake -G Ninja -B build ` -DCMAKE_CXX_COMPILER=cl ` -DCMAKE_BUILD_TYPE=Release ``` ## ๐Ÿ› Troubleshooting ### Common Issues **CMake not found:** - **macOS**: `brew install cmake` - **Ubuntu**: `sudo apt install cmake` - **Windows**: Install via Visual Studio or winget **Ninja not found:** - **macOS**: `brew install ninja` - **Ubuntu**: `sudo apt install ninja-build` - **Windows**: `winget install Ninja-build.Ninja` **Compiler errors:** - Ensure C++17 compiler is installed - **Linux**: `sudo apt install build-essential` - **Windows**: Install Visual Studio Build Tools **Permission denied (Windows):** - Run PowerShell as Administrator for system-wide installs ### Build Cache Issues **Clean build:** ```bash # Remove build directory rm -rf build # Unix-like rmdir /s build # Windows CMD Remove-Item -Recurse build # PowerShell # Reconfigure cmake -G Ninja -B build -DCMAKE_BUILD_TYPE=Release ninja -C build ```