diff --git a/CMakeLists.txt b/CMakeLists.txt index 116fa9a1..b8c4aef2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,6 +7,25 @@ if(POLICY CMP0091) cmake_policy(SET CMP0091 NEW) endif() +# Set additional policies to handle submodule compatibility +if(POLICY CMP0048) + cmake_policy(SET CMP0048 NEW) +endif() +if(POLICY CMP0077) + cmake_policy(SET CMP0077 NEW) +endif() +if(POLICY CMP0091) + cmake_policy(SET CMP0091 NEW) +endif() + +# Suppress deprecation warnings from submodules +set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "Suppress deprecation warnings") + +# Handle pthread issues on Windows +if(WIN32) + set(THREADS_PREFER_PTHREAD_FLAG OFF) +endif() + project(yaze VERSION 0.3.1 DESCRIPTION "Yet Another Zelda3 Editor" LANGUAGES CXX C) diff --git a/scripts/generate-vs-projects.bat b/scripts/generate-vs-projects.bat index be7abcc2..31223841 100644 --- a/scripts/generate-vs-projects.bat +++ b/scripts/generate-vs-projects.bat @@ -124,7 +124,7 @@ if exist "%VCPKG_PATH%" ( ) REM Build CMake command -set CMAKE_ARGS=-B "%BUILD_DIR%" -G "Visual Studio 17 2022" -A %ARCHITECTURE% -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 +set CMAKE_ARGS=-B "%BUILD_DIR%" -G "Visual Studio 17 2022" -A %ARCHITECTURE% -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DCMAKE_POLICY_VERSION_MAXIMUM=3.28 -DCMAKE_WARN_DEPRECATED=OFF -DABSL_PROPAGATE_CXX_STD=ON -DTHREADS_PREFER_PTHREAD_FLAG=OFF -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 "%USE_VCPKG%"=="true" ( set CMAKE_ARGS=%CMAKE_ARGS% -DCMAKE_TOOLCHAIN_FILE="%VCPKG_PATH%" -DVCPKG_TARGET_TRIPLET=%ARCHITECTURE%-windows -DVCPKG_MANIFEST_MODE=ON diff --git a/scripts/generate-vs-projects.ps1 b/scripts/generate-vs-projects.ps1 index b05e5cdd..f5510277 100644 --- a/scripts/generate-vs-projects.ps1 +++ b/scripts/generate-vs-projects.ps1 @@ -136,6 +136,11 @@ $CmakeArgs = @( "-G", "`"$Generator`"", $ArchFlag, "-DCMAKE_BUILD_TYPE=$Configuration", + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5", + "-DCMAKE_POLICY_VERSION_MAXIMUM=3.28", + "-DCMAKE_WARN_DEPRECATED=OFF", + "-DABSL_PROPAGATE_CXX_STD=ON", + "-DTHREADS_PREFER_PTHREAD_FLAG=OFF", "-DYAZE_BUILD_TESTS=ON", "-DYAZE_BUILD_APP=ON", "-DYAZE_BUILD_LIB=ON", diff --git a/scripts/test-cmake-config.ps1 b/scripts/test-cmake-config.ps1 new file mode 100644 index 00000000..9cd56072 --- /dev/null +++ b/scripts/test-cmake-config.ps1 @@ -0,0 +1,89 @@ +# Test CMake configuration for YAZE +# This script tests if CMake can configure the project without errors + +param( + [string]$Architecture = "x64", + [switch]$Clean = $false +) + +Write-Host "Testing CMake configuration for YAZE..." -ForegroundColor Green + +# Check if we're on Windows +if ($env:OS -ne "Windows_NT") { + Write-Host "This script is designed for Windows only." -ForegroundColor Red + exit 1 +} + +# Check if CMake is available +$cmakePath = Get-Command cmake -ErrorAction SilentlyContinue +if (-not $cmakePath) { + Write-Host "CMake not found. Please run setup-windows-dev.ps1 first." -ForegroundColor Red + exit 1 +} + +Write-Host "CMake found: $($cmakePath.Source)" -ForegroundColor Green + +# Set up paths +$SourceDir = Split-Path -Parent $PSScriptRoot +$TestBuildDir = Join-Path $SourceDir "build-test" + +Write-Host "Source directory: $SourceDir" -ForegroundColor Cyan +Write-Host "Test build directory: $TestBuildDir" -ForegroundColor Cyan + +# Clean test build directory if requested +if ($Clean -and (Test-Path $TestBuildDir)) { + Write-Host "Cleaning test build directory..." -ForegroundColor Yellow + Remove-Item -Recurse -Force $TestBuildDir +} + +# Create test build directory +if (-not (Test-Path $TestBuildDir)) { + New-Item -ItemType Directory -Path $TestBuildDir | Out-Null +} + +# Test CMake configuration with minimal settings +Write-Host "Testing CMake configuration..." -ForegroundColor Yellow + +$TestArgs = @( + "-B", $TestBuildDir, + "-G", "Visual Studio 17 2022", + "-A", $Architecture, + "-DCMAKE_BUILD_TYPE=Debug", + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5", + "-DCMAKE_POLICY_VERSION_MAXIMUM=3.28", + "-DCMAKE_WARN_DEPRECATED=OFF", + "-DABSL_PROPAGATE_CXX_STD=ON", + "-DTHREADS_PREFER_PTHREAD_FLAG=OFF", + "-DYAZE_BUILD_TESTS=OFF", + "-DYAZE_BUILD_APP=ON", + "-DYAZE_BUILD_LIB=OFF", + "-DYAZE_BUILD_EMU=OFF", + "-DYAZE_BUILD_Z3ED=OFF", + "-DYAZE_ENABLE_ROM_TESTS=OFF", + "-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF", + "-DYAZE_ENABLE_UI_TESTS=OFF", + "-DYAZE_INSTALL_LIB=OFF", + "-DYAZE_MINIMAL_BUILD=ON" +) + +Write-Host "CMake command: cmake $($TestArgs -join ' ') $SourceDir" -ForegroundColor Gray + +& cmake @TestArgs $SourceDir + +if ($LASTEXITCODE -eq 0) { + Write-Host "✅ CMake configuration test PASSED!" -ForegroundColor Green + Write-Host "The project can be configured successfully." -ForegroundColor Green + + # Clean up test build directory + if (Test-Path $TestBuildDir) { + Remove-Item -Recurse -Force $TestBuildDir + Write-Host "Test build directory cleaned up." -ForegroundColor Gray + } + + Write-Host "`nYou can now run the full project generation script:" -ForegroundColor Cyan + Write-Host ".\scripts\generate-vs-projects.ps1" -ForegroundColor White +} else { + Write-Host "❌ CMake configuration test FAILED!" -ForegroundColor Red + Write-Host "Please check the error messages above." -ForegroundColor Red + exit 1 +}