Files
yaze/scripts
scawful 62230fbe5c Remove Windows ARM64 build configuration and delete unused generate-vs-projects.py script
- Removed the Windows ARM64 configuration from the GitHub Actions release workflow to streamline the build process.
- Deleted the generate-vs-projects.py script as it was no longer needed for project setup, simplifying the codebase.
- Updated the OverworldEditor header to improve clarity by renaming a method parameter for better understanding.
- Refactored the Emulator class to enhance the rendering interface, improving the user experience in the emulator's GUI.
2025-09-29 20:23:17 -04:00
..

YAZE Build Scripts

This directory contains build and setup scripts for YAZE development on different platforms.

Windows Scripts

Setup Scripts

  • setup-windows-dev.ps1 - Complete Windows development environment setup (PowerShell)
  • setup-vcpkg-windows.ps1 - vcpkg setup only (PowerShell)
  • setup-vcpkg-windows.bat - vcpkg setup only (Batch)

Build Scripts

  • build-windows.ps1 - Build YAZE on Windows (PowerShell)
  • build-windows.bat - Build YAZE on Windows (Batch)

Validation Scripts

  • validate-windows-build.ps1 - Validate Windows build environment

Project Generation

  • generate-vs-projects.py - Generate Visual Studio project files (Cross-platform Python)

Windows Compiler Recommendations

⚠️ Important: MSVC vs Clang on Windows

We strongly recommend using Clang on Windows due to compatibility issues with MSVC and Abseil's int128 and type_traits features:

  • Better C++23 Support: Full support for modern C++23 features
  • Abseil Compatibility: No issues with absl::int128 and type traits
  • Cross-Platform Consistency: Same compiler across all platforms
  • Better Error Messages: More helpful diagnostic messages
  • Faster Compilation: Generally faster than MSVC

MSVC Issues:

  • C++23 Deprecation Warnings: Abseil int128 triggers numerous deprecation warnings
  • Type Traits Problems: Some Abseil type traits don't work correctly with MSVC
  • Int128 Limitations: MSVC's int128 support is incomplete
  • Build Complexity: Requires additional workarounds and flags

Compiler Setup Options

# Install LLVM/Clang via winget
winget install LLVM.LLVM

# Or download from: https://releases.llvm.org/
# Make sure to add Clang to PATH during installation

# Verify installation
clang --version

Option 2: MSVC with Workarounds

If you must use MSVC, the build system includes workarounds:

  • Abseil int128 is automatically disabled on Windows
  • C++23 deprecation warnings are silenced
  • Additional compatibility flags are applied

However, you may still encounter issues with some Abseil features.

Quick Start (Windows)

.\scripts\setup-windows-dev.ps1

Option 2: Manual Setup

# 1. Setup vcpkg
.\scripts\setup-vcpkg-windows.ps1

# 2. Generate project files
python scripts/generate-vs-projects.py

# 3. Build
.\scripts\build-windows.ps1

Option 3: Using Batch Scripts

REM Setup vcpkg
.\scripts\setup-vcpkg-windows.bat

REM Generate project files
python scripts/generate-vs-projects.py

REM Build
.\scripts\build-windows.bat

Script Options

setup-windows-dev.ps1

  • -SkipVcpkg - Skip vcpkg setup
  • -SkipVS - Skip Visual Studio check
  • -SkipBuild - Skip test build

build-windows.ps1

  • -Configuration - Build configuration (Debug, Release, RelWithDebInfo, MinSizeRel)
  • -Platform - Target platform (x64, x86, ARM64)
  • -Compiler - Compiler to use (clang, msvc, auto)
  • -Clean - Clean build directories before building
  • -Verbose - Verbose build output

build-windows.bat

  • First argument: Configuration (Debug, Release, RelWithDebInfo, MinSizeRel)
  • Second argument: Platform (x64, x86, ARM64)
  • Third argument: Compiler (clang, msvc, auto)
  • clean - Clean build directories
  • verbose - Verbose build output

Examples

# Build Release x64 with Clang (recommended)
.\scripts\build-windows.ps1 -Compiler clang

# Build Release x64 with MSVC (with workarounds)
.\scripts\build-windows.ps1 -Compiler msvc

# Build Debug x64 with Clang
.\scripts\build-windows.ps1 -Configuration Debug -Platform x64 -Compiler clang

# Build Release x86 with auto-detection
.\scripts\build-windows.ps1 -Configuration Release -Platform x86 -Compiler auto

# Clean build with Clang
.\scripts\build-windows.ps1 -Clean -Compiler clang

# Verbose build with MSVC
.\scripts\build-windows.ps1 -Verbose -Compiler msvc

# Validate environment
.\scripts\validate-windows-build.ps1
REM Build Release x64 with Clang (recommended)
.\scripts\build-windows.bat Release x64 clang

REM Build Debug x64 with MSVC
.\scripts\build-windows.bat Debug x64 msvc

REM Build Release x86 with auto-detection
.\scripts\build-windows.bat Release x86 auto

REM Clean build with Clang
.\scripts\build-windows.bat clean clang

Troubleshooting

Common Issues

  1. PowerShell Execution Policy

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    
  2. MSBuild Not Found

    • Install Visual Studio 2022 with C++ workload
    • Or add MSBuild to PATH
  3. vcpkg Issues

    • Run .\scripts\setup-vcpkg-windows.ps1 to reinstall
    • Check internet connection for dependency downloads
  4. Python Not Found

    • Install Python 3.8+ from python.org
    • Make sure Python is in PATH
  5. MSVC Compilation Errors

    • Abseil int128 errors: Use Clang instead (-Compiler clang)
    • C++23 deprecation warnings: These are silenced automatically, but Clang is cleaner
    • Type traits issues: Switch to Clang for better compatibility
    • Solution: Install Clang and use .\scripts\build-windows.ps1 -Compiler clang
  6. Clang Not Found

    • Install LLVM/Clang: winget install LLVM.LLVM
    • Or download from: https://releases.llvm.org/
    • Make sure Clang is in PATH: clang --version
  7. Compiler Detection Issues

    • Use explicit compiler selection: -Compiler clang or -Compiler msvc
    • Check available compilers: where clang and where cl

Getting Help

  1. Run validation script: .\scripts\validate-windows-build.ps1
  2. Check the Windows Development Guide
  3. Review build output for specific error messages

Other Scripts

  • create_release.sh - Create GitHub releases (Linux/macOS)
  • extract_changelog.py - Extract changelog for releases
  • quality_check.sh - Code quality checks (Linux/macOS)
  • create-macos-bundle.sh - Create macOS application bundle for releases