Files
yaze/scripts/setup-windows-dev.ps1
scawful 50bf1f9d71 Enhance Windows build scripts for improved functionality and user experience
- Refactored batch and PowerShell build scripts to streamline argument parsing and enhance error handling.
- Added support for cleaning build directories and improved feedback for missing dependencies.
- Updated project file generation logic to handle missing configuration files more gracefully.
- Introduced a new validation script to ensure the build environment is correctly set up before building.
- Removed obsolete setup scripts to simplify the repository structure.
2025-09-28 00:47:16 -04:00

193 lines
6.1 KiB
PowerShell

# YAZE Windows Development Setup Script
# This script sets up a complete Windows development environment for YAZE
param(
[switch]$SkipVcpkg,
[switch]$SkipVS,
[switch]$SkipBuild
)
# Set error handling
$ErrorActionPreference = "Continue"
# Colors for output
$Colors = @{
Success = "Green"
Warning = "Yellow"
Error = "Red"
Info = "Cyan"
White = "White"
}
function Write-Status {
param([string]$Message, [string]$Color = "White")
Write-Host $Message -ForegroundColor $Colors[$Color]
}
function Test-Command {
param([string]$Command)
try {
$null = Get-Command $Command -ErrorAction Stop
return $true
} catch {
return $false
}
}
function Test-VisualStudio {
$vsWhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
if (Test-Path $vsWhere) {
$vsInstall = & $vsWhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
if ($vsInstall) {
$msbuildPath = Join-Path $vsInstall "MSBuild\Current\Bin\MSBuild.exe"
if (Test-Path $msbuildPath) {
return $true
}
}
}
return $false
}
# Main script
Write-Status "========================================" "Info"
Write-Status "YAZE Windows Development Setup" "Info"
Write-Status "========================================" "Info"
# Check if we're in the right directory
if (-not (Test-Path "YAZE.sln")) {
Write-Status "ERROR: YAZE.sln not found. Please run this script from the project root directory." "Error"
exit 1
}
Write-Status "✓ Found YAZE project files" "Success"
# Check Visual Studio
if (-not $SkipVS) {
Write-Status "Checking Visual Studio..." "Warning"
if (Test-VisualStudio) {
Write-Status "✓ Visual Studio 2022 with C++ workload found" "Success"
} else {
Write-Status "⚠ Visual Studio 2022 with C++ workload not found" "Warning"
Write-Status "Please install Visual Studio 2022 with 'Desktop development with C++' workload" "Info"
}
} else {
Write-Status "Skipping Visual Studio check" "Warning"
}
# Check Git
Write-Status "Checking Git..." "Warning"
if (Test-Command "git") {
$gitVersion = & git --version
Write-Status "✓ Git found: $gitVersion" "Success"
} else {
Write-Status "⚠ Git not found" "Warning"
Write-Status "Please install Git for Windows from: https://git-scm.com/download/win" "Info"
}
# Check Python
Write-Status "Checking Python..." "Warning"
if (Test-Command "python") {
$pythonVersion = & python --version
Write-Status "✓ Python found: $pythonVersion" "Success"
} else {
Write-Status "⚠ Python not found" "Warning"
Write-Status "Please install Python 3.8+ from: https://www.python.org/downloads/" "Info"
}
# Setup vcpkg
if (-not $SkipVcpkg) {
Write-Status "Setting up vcpkg..." "Warning"
# Clone vcpkg if needed
if (-not (Test-Path "vcpkg")) {
if (Test-Command "git") {
Write-Status "Cloning vcpkg..." "Warning"
& git clone https://github.com/Microsoft/vcpkg.git vcpkg
if ($LASTEXITCODE -eq 0) {
Write-Status "✓ vcpkg cloned successfully" "Success"
} else {
Write-Status "✗ Failed to clone vcpkg" "Error"
exit 1
}
} else {
Write-Status "✗ Git is required to clone vcpkg" "Error"
exit 1
}
} else {
Write-Status "✓ vcpkg directory already exists" "Success"
}
# Bootstrap vcpkg
$vcpkgExe = "vcpkg\vcpkg.exe"
if (-not (Test-Path $vcpkgExe)) {
Write-Status "Bootstrapping vcpkg..." "Warning"
Push-Location vcpkg
& .\bootstrap-vcpkg.bat
if ($LASTEXITCODE -eq 0) {
Write-Status "✓ vcpkg bootstrapped successfully" "Success"
} else {
Write-Status "✗ Failed to bootstrap vcpkg" "Error"
Pop-Location
exit 1
}
Pop-Location
} else {
Write-Status "✓ vcpkg already bootstrapped" "Success"
}
# Install dependencies
Write-Status "Installing dependencies..." "Warning"
& $vcpkgExe install --triplet x64-windows
if ($LASTEXITCODE -eq 0) {
Write-Status "✓ Dependencies installed successfully" "Success"
} else {
Write-Status "⚠ Some dependencies may not have installed correctly" "Warning"
}
} else {
Write-Status "Skipping vcpkg setup" "Warning"
}
# Generate project files
Write-Status "Generating Visual Studio project files..." "Warning"
if (Test-Command "python") {
& python scripts/generate-vs-projects.py
if ($LASTEXITCODE -eq 0) {
Write-Status "✓ Project files generated successfully" "Success"
} else {
Write-Status "⚠ Failed to generate project files" "Warning"
}
} else {
Write-Status "⚠ Python required to generate project files" "Warning"
}
# Test build
if (-not $SkipBuild) {
Write-Status "Testing build..." "Warning"
if (Test-Path "scripts\build-windows.ps1") {
& .\scripts\build-windows.ps1 -Configuration Release -Platform x64
if ($LASTEXITCODE -eq 0) {
Write-Status "✓ Test build successful" "Success"
} else {
Write-Status "⚠ Test build failed, but setup is complete" "Warning"
}
} else {
Write-Status "⚠ Build script not found" "Warning"
}
} else {
Write-Status "Skipping test build" "Warning"
}
# Final instructions
Write-Status "========================================" "Info"
Write-Status "✓ YAZE Windows development setup complete!" "Success"
Write-Status "========================================" "Info"
Write-Status ""
Write-Status "Next steps:" "Warning"
Write-Status "1. Open YAZE.sln in Visual Studio 2022" "White"
Write-Status "2. Select configuration (Debug/Release) and platform (x64/x86/ARM64)" "White"
Write-Status "3. Build the solution (Ctrl+Shift+B)" "White"
Write-Status ""
Write-Status "Or use command line:" "Warning"
Write-Status " .\scripts\build-windows.ps1 -Configuration Release -Platform x64" "White"
Write-Status ""
Write-Status "For more information, see docs/windows-development-guide.md" "Info"