# Generate Visual Studio project files for YAZE # This script creates proper Visual Studio solution and project files param( [string]$Configuration = "Debug", [string]$Architecture = "x64", [switch]$Clean = $false ) # Validate architecture parameter $ValidArchitectures = @("x64", "x86", "ARM64") if ($Architecture -notin $ValidArchitectures) { Write-Host "Invalid architecture: $Architecture" -ForegroundColor Red Write-Host "Valid architectures: $($ValidArchitectures -join ', ')" -ForegroundColor Yellow exit 1 } Write-Host "Generating Visual Studio project files for YAZE..." -ForegroundColor Green # Check if we're on Windows if ($env:OS -ne "Windows_NT") { Write-Host "This script is designed for Windows. Use CMake presets on other platforms." -ForegroundColor Yellow Write-Host "Available presets:" -ForegroundColor Cyan Write-Host " - windows-debug" -ForegroundColor Gray Write-Host " - windows-release" -ForegroundColor Gray Write-Host " - windows-dev" -ForegroundColor Gray exit 1 } # Set up paths $SourceDir = Split-Path -Parent $PSScriptRoot $BuildDir = Join-Path $SourceDir "build-vs" Write-Host "Source directory: $SourceDir" -ForegroundColor Cyan Write-Host "Build directory: $BuildDir" -ForegroundColor Cyan # Clean build directory if requested if ($Clean -and (Test-Path $BuildDir)) { Write-Host "Cleaning build directory..." -ForegroundColor Yellow Remove-Item -Recurse -Force $BuildDir } # Create build directory if (-not (Test-Path $BuildDir)) { New-Item -ItemType Directory -Path $BuildDir | Out-Null } # Check if vcpkg is available $VcpkgPath = Join-Path $SourceDir "vcpkg\scripts\buildsystems\vcpkg.cmake" $UseVcpkg = Test-Path $VcpkgPath if ($UseVcpkg) { Write-Host "Using vcpkg toolchain: $VcpkgPath" -ForegroundColor Green } else { Write-Host "vcpkg not found, using system libraries" -ForegroundColor Yellow } # Determine generator and architecture $Generator = "Visual Studio 17 2022" $ArchFlag = if ($Architecture -eq "x64") { "-A x64" } else { "-A Win32" } # Build CMake command $CmakeArgs = @( "-B", $BuildDir, "-G", "`"$Generator`"", $ArchFlag, "-DCMAKE_BUILD_TYPE=$Configuration", "-DYAZE_BUILD_TESTS=ON", "-DYAZE_BUILD_APP=ON", "-DYAZE_BUILD_LIB=ON", "-DYAZE_BUILD_EMU=ON", "-DYAZE_BUILD_Z3ED=ON", "-DYAZE_ENABLE_ROM_TESTS=OFF", "-DYAZE_ENABLE_EXPERIMENTAL_TESTS=ON", "-DYAZE_ENABLE_UI_TESTS=ON", "-DYAZE_INSTALL_LIB=OFF" ) if ($UseVcpkg) { $CmakeArgs += @( "-DCMAKE_TOOLCHAIN_FILE=`"$VcpkgPath`"", "-DVCPKG_TARGET_TRIPLET=$Architecture-windows", "-DVCPKG_MANIFEST_MODE=ON" ) } # Run CMake configuration Write-Host "Configuring CMake..." -ForegroundColor Yellow Write-Host "Command: cmake $($CmakeArgs -join ' ')" -ForegroundColor Gray & cmake @CmakeArgs $SourceDir if ($LASTEXITCODE -ne 0) { Write-Host "CMake configuration failed!" -ForegroundColor Red exit 1 } # Check if solution file was created $SolutionFile = Join-Path $BuildDir "YAZE.sln" if (Test-Path $SolutionFile) { Write-Host "✅ Visual Studio solution created: $SolutionFile" -ForegroundColor Green # Copy solution file to root directory for convenience $RootSolutionFile = Join-Path $SourceDir "YAZE.sln" Copy-Item $SolutionFile $RootSolutionFile -Force Write-Host "✅ Solution file copied to root directory" -ForegroundColor Green # Open solution in Visual Studio if available if (Get-Command "devenv" -ErrorAction SilentlyContinue) { Write-Host "Opening solution in Visual Studio..." -ForegroundColor Yellow & devenv $RootSolutionFile } elseif (Get-Command "code" -ErrorAction SilentlyContinue) { Write-Host "Opening solution in VS Code..." -ForegroundColor Yellow & code $RootSolutionFile } else { Write-Host "Visual Studio solution ready: $RootSolutionFile" -ForegroundColor Cyan } } else { Write-Host "❌ Solution file not created. Check CMake output for errors." -ForegroundColor Red exit 1 } Write-Host "" Write-Host "🎉 Visual Studio project generation complete!" -ForegroundColor Green Write-Host "" Write-Host "Next steps:" -ForegroundColor Cyan Write-Host "1. Open YAZE.sln in Visual Studio" -ForegroundColor White Write-Host "2. Select configuration: $Configuration" -ForegroundColor White Write-Host "3. Select platform: $Architecture" -ForegroundColor White Write-Host "4. Build the solution (Ctrl+Shift+B)" -ForegroundColor White Write-Host "" Write-Host "Available configurations:" -ForegroundColor Cyan Write-Host " - Debug (with debugging symbols)" -ForegroundColor Gray Write-Host " - Release (optimized)" -ForegroundColor Gray Write-Host " - RelWithDebInfo (optimized with debug info)" -ForegroundColor Gray Write-Host " - MinSizeRel (minimum size)" -ForegroundColor Gray Write-Host "" Write-Host "Available architectures:" -ForegroundColor Cyan Write-Host " - x64 (64-bit Intel/AMD)" -ForegroundColor Gray Write-Host " - x86 (32-bit Intel/AMD)" -ForegroundColor Gray Write-Host " - ARM64 (64-bit ARM)" -ForegroundColor Gray