Refactor Visual Studio solution and project files for improved organization and support
- Removed obsolete project entries from the solution file to streamline structure. - Updated YAZE project configuration to enable vcpkg integration and multi-architecture support. - Enhanced build scripts for Windows, including automated setup and testing processes. - Added new documentation for Windows development setup and build instructions.
This commit is contained in:
8
.github/workflows/build-windows-fallback.yml
vendored
8
.github/workflows/build-windows-fallback.yml
vendored
@@ -39,11 +39,11 @@ jobs:
|
|||||||
runVcpkgInstall: true
|
runVcpkgInstall: true
|
||||||
vcpkgJsonGlob: '**/vcpkg.json'
|
vcpkgJsonGlob: '**/vcpkg.json'
|
||||||
vcpkgDirectory: '${{ github.workspace }}/vcpkg'
|
vcpkgDirectory: '${{ github.workspace }}/vcpkg'
|
||||||
vcpkgTriplet: '${{ inputs.platform }}-windows'
|
|
||||||
vcpkgArguments: '--x-install-root="${{ github.workspace }}/vcpkg_installed"'
|
|
||||||
env:
|
env:
|
||||||
VCPKG_FORCE_SYSTEM_BINARIES: 1
|
VCPKG_FORCE_SYSTEM_BINARIES: 1
|
||||||
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||||
|
VCPKG_DEFAULT_TRIPLET: '${{ inputs.platform }}-windows'
|
||||||
|
VCPKG_INSTALL_OPTIONS: '--x-install-root="${{ github.workspace }}/vcpkg_installed"'
|
||||||
|
|
||||||
# Fallback to newer baseline if primary fails
|
# Fallback to newer baseline if primary fails
|
||||||
- name: Set up vcpkg (Fallback)
|
- name: Set up vcpkg (Fallback)
|
||||||
@@ -54,11 +54,11 @@ jobs:
|
|||||||
runVcpkgInstall: true
|
runVcpkgInstall: true
|
||||||
vcpkgJsonGlob: '**/vcpkg.json.backup'
|
vcpkgJsonGlob: '**/vcpkg.json.backup'
|
||||||
vcpkgDirectory: '${{ github.workspace }}/vcpkg'
|
vcpkgDirectory: '${{ github.workspace }}/vcpkg'
|
||||||
vcpkgTriplet: '${{ inputs.platform }}-windows'
|
|
||||||
vcpkgArguments: '--x-install-root="${{ github.workspace }}/vcpkg_installed"'
|
|
||||||
env:
|
env:
|
||||||
VCPKG_FORCE_SYSTEM_BINARIES: 1
|
VCPKG_FORCE_SYSTEM_BINARIES: 1
|
||||||
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||||
|
VCPKG_DEFAULT_TRIPLET: '${{ inputs.platform }}-windows'
|
||||||
|
VCPKG_INSTALL_OPTIONS: '--x-install-root="${{ github.workspace }}/vcpkg_installed"'
|
||||||
|
|
||||||
# Fallback to manual dependency installation if both vcpkg attempts fail
|
# Fallback to manual dependency installation if both vcpkg attempts fail
|
||||||
- name: Install dependencies manually
|
- name: Install dependencies manually
|
||||||
|
|||||||
730
.github/workflows/release-complex.yml
vendored
Normal file
730
.github/workflows/release-complex.yml
vendored
Normal file
@@ -0,0 +1,730 @@
|
|||||||
|
name: Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v[0-9]+.[0-9]+.[0-9]+'
|
||||||
|
- 'v[0-9]+.[0-9]+.[0-9]+-*'
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
description: 'Release tag (must start with v and follow semantic versioning)'
|
||||||
|
required: true
|
||||||
|
default: 'v0.3.0'
|
||||||
|
type: string
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILD_TYPE: Release
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
validate-and-prepare:
|
||||||
|
name: Validate Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
tag_name: ${{ steps.validate.outputs.tag_name }}
|
||||||
|
release_notes: ${{ steps.notes.outputs.content }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Validate tag format
|
||||||
|
id: validate
|
||||||
|
run: |
|
||||||
|
# Debug information
|
||||||
|
echo "Event name: ${{ github.event_name }}"
|
||||||
|
echo "Ref: ${{ github.ref }}"
|
||||||
|
echo "Ref name: ${{ github.ref_name }}"
|
||||||
|
echo "Ref type: ${{ github.ref_type }}"
|
||||||
|
|
||||||
|
# Determine the tag based on trigger type
|
||||||
|
if [[ "${{ github.event_name }}" == "push" ]]; then
|
||||||
|
if [[ "${{ github.ref_type }}" != "tag" ]]; then
|
||||||
|
echo "❌ Error: Release workflow triggered by push to ${{ github.ref_type }} '${{ github.ref_name }}'"
|
||||||
|
echo "This workflow should only be triggered by pushing version tags (v1.2.3)"
|
||||||
|
echo "Use: git tag v0.3.0 && git push origin v0.3.0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
TAG="${{ github.ref_name }}"
|
||||||
|
elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
||||||
|
TAG="${{ github.event.inputs.tag }}"
|
||||||
|
if [[ -z "$TAG" ]]; then
|
||||||
|
echo "❌ Error: No tag specified for manual workflow dispatch"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "❌ Error: Unsupported event type: ${{ github.event_name }}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Validating tag: $TAG"
|
||||||
|
|
||||||
|
# Check if tag follows semantic versioning pattern
|
||||||
|
if [[ ! "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-.*)?$ ]]; then
|
||||||
|
echo "❌ Error: Tag '$TAG' does not follow semantic versioning format (v1.2.3 or v1.2.3-beta)"
|
||||||
|
echo "Valid examples: v0.3.0, v1.0.0, v2.1.3-beta, v1.0.0-rc1"
|
||||||
|
echo ""
|
||||||
|
echo "To create a proper release:"
|
||||||
|
echo "1. Use the helper script: ./scripts/create_release.sh 0.3.0"
|
||||||
|
echo "2. Or manually: git tag v0.3.0 && git push origin v0.3.0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✅ Tag format is valid: $TAG"
|
||||||
|
echo "VALIDATED_TAG=$TAG" >> $GITHUB_ENV
|
||||||
|
echo "tag_name=$TAG" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Generate release notes
|
||||||
|
id: release_notes
|
||||||
|
run: |
|
||||||
|
# Extract release version from validated tag
|
||||||
|
VERSION="${VALIDATED_TAG}"
|
||||||
|
VERSION_NUM=$(echo "$VERSION" | sed 's/^v//')
|
||||||
|
|
||||||
|
# Generate release notes using the dedicated script
|
||||||
|
echo "Extracting changelog for version: $VERSION_NUM"
|
||||||
|
if python3 scripts/extract_changelog.py "$VERSION_NUM" > release_notes.md; then
|
||||||
|
echo "Changelog extracted successfully"
|
||||||
|
echo "Release notes content:"
|
||||||
|
cat release_notes.md
|
||||||
|
else
|
||||||
|
echo "Failed to extract changelog, creating default release notes"
|
||||||
|
echo "# Yaze $VERSION Release Notes\n\nPlease see the full changelog at docs/C1-changelog.md" > release_notes.md
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Store release notes
|
||||||
|
id: notes
|
||||||
|
run: |
|
||||||
|
# Store release notes content for later use
|
||||||
|
echo "content<<EOF" >> $GITHUB_OUTPUT
|
||||||
|
cat release_notes.md >> $GITHUB_OUTPUT
|
||||||
|
echo "EOF" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
build-release:
|
||||||
|
name: Build Release
|
||||||
|
needs: validate-and-prepare
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- name: "Windows x64"
|
||||||
|
os: windows-2022
|
||||||
|
vcpkg_triplet: x64-windows
|
||||||
|
cmake_generator: "Visual Studio 17 2022"
|
||||||
|
cmake_generator_platform: x64
|
||||||
|
artifact_name: "yaze-windows-x64"
|
||||||
|
artifact_path: "build/bin/Release/"
|
||||||
|
package_cmd: |
|
||||||
|
mkdir -p package
|
||||||
|
cp -r build/bin/Release/* package/ 2>/dev/null || echo "No Release binaries found, trying Debug..."
|
||||||
|
cp -r build/bin/Debug/* package/ 2>/dev/null || echo "No Debug binaries found"
|
||||||
|
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
||||||
|
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
||||||
|
cd package && zip -r ../yaze-windows-x64.zip *
|
||||||
|
|
||||||
|
- name: "Windows x86"
|
||||||
|
os: windows-2022
|
||||||
|
vcpkg_triplet: x86-windows
|
||||||
|
cmake_generator: "Visual Studio 17 2022"
|
||||||
|
cmake_generator_platform: Win32
|
||||||
|
artifact_name: "yaze-windows-x86"
|
||||||
|
artifact_path: "build/bin/Release/"
|
||||||
|
package_cmd: |
|
||||||
|
mkdir -p package
|
||||||
|
cp -r build/bin/Release/* package/ 2>/dev/null || echo "No Release binaries found, trying Debug..."
|
||||||
|
cp -r build/bin/Debug/* package/ 2>/dev/null || echo "No Debug binaries found"
|
||||||
|
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
||||||
|
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
||||||
|
cd package && zip -r ../yaze-windows-x86.zip *
|
||||||
|
|
||||||
|
- name: "Windows ARM64"
|
||||||
|
os: windows-2022
|
||||||
|
vcpkg_triplet: arm64-windows
|
||||||
|
cmake_generator: "Visual Studio 17 2022"
|
||||||
|
cmake_generator_platform: ARM64
|
||||||
|
artifact_name: "yaze-windows-arm64"
|
||||||
|
artifact_path: "build/bin/Release/"
|
||||||
|
package_cmd: |
|
||||||
|
mkdir -p package
|
||||||
|
cp -r build/bin/Release/* package/ 2>/dev/null || echo "No Release binaries found, trying Debug..."
|
||||||
|
cp -r build/bin/Debug/* package/ 2>/dev/null || echo "No Debug binaries found"
|
||||||
|
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
||||||
|
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
||||||
|
cd package && zip -r ../yaze-windows-arm64.zip *
|
||||||
|
|
||||||
|
- name: "macOS Universal"
|
||||||
|
os: macos-14
|
||||||
|
vcpkg_triplet: arm64-osx
|
||||||
|
artifact_name: "yaze-macos"
|
||||||
|
artifact_path: "build/bin/"
|
||||||
|
package_cmd: |
|
||||||
|
# Debug: List what was actually built
|
||||||
|
echo "Contents of build/bin/:"
|
||||||
|
ls -la build/bin/ || echo "build/bin/ does not exist"
|
||||||
|
|
||||||
|
# Check if we have a bundle or standalone executable
|
||||||
|
if [ -d "build/bin/yaze.app" ]; then
|
||||||
|
echo "Found macOS bundle, using it directly"
|
||||||
|
# Use the existing bundle and just update it
|
||||||
|
cp -r build/bin/yaze.app ./Yaze.app
|
||||||
|
# Add additional resources to the bundle
|
||||||
|
cp -r assets "Yaze.app/Contents/Resources/" 2>/dev/null || echo "assets directory not found"
|
||||||
|
# Update Info.plist with correct version
|
||||||
|
if [ -f "cmake/yaze.plist.in" ]; then
|
||||||
|
VERSION_NUM=$(echo "${{ needs.validate-and-prepare.outputs.tag_name }}" | sed 's/^v//')
|
||||||
|
sed "s/@yaze_VERSION@/$VERSION_NUM/g" cmake/yaze.plist.in > "Yaze.app/Contents/Info.plist"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "No bundle found, creating manual bundle"
|
||||||
|
# Create bundle structure manually
|
||||||
|
mkdir -p "Yaze.app/Contents/MacOS"
|
||||||
|
mkdir -p "Yaze.app/Contents/Resources"
|
||||||
|
cp build/bin/yaze "Yaze.app/Contents/MacOS/"
|
||||||
|
cp -r assets "Yaze.app/Contents/Resources/" 2>/dev/null || echo "assets directory not found"
|
||||||
|
# Create Info.plist with correct version
|
||||||
|
if [ -f "cmake/yaze.plist.in" ]; then
|
||||||
|
VERSION_NUM=$(echo "${{ needs.validate-and-prepare.outputs.tag_name }}" | sed 's/^v//')
|
||||||
|
sed "s/@yaze_VERSION@/$VERSION_NUM/g" cmake/yaze.plist.in > "Yaze.app/Contents/Info.plist"
|
||||||
|
else
|
||||||
|
# Create a basic Info.plist
|
||||||
|
VERSION_NUM=$(echo "${{ needs.validate-and-prepare.outputs.tag_name }}" | sed 's/^v//')
|
||||||
|
cat > "Yaze.app/Contents/Info.plist" <<EOF
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>yaze</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.yaze.editor</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>Yaze</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>$VERSION_NUM</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>$VERSION_NUM</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create DMG
|
||||||
|
mkdir dmg_staging
|
||||||
|
cp -r Yaze.app dmg_staging/
|
||||||
|
cp LICENSE dmg_staging/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md dmg_staging/ 2>/dev/null || echo "README.md not found"
|
||||||
|
cp -r docs dmg_staging/ 2>/dev/null || echo "docs directory not found"
|
||||||
|
hdiutil create -srcfolder dmg_staging -format UDZO -volname "Yaze ${{ needs.validate-and-prepare.outputs.tag_name }}" yaze-macos.dmg
|
||||||
|
|
||||||
|
- name: "Linux x64"
|
||||||
|
os: ubuntu-22.04
|
||||||
|
artifact_name: "yaze-linux-x64"
|
||||||
|
artifact_path: "build/bin/"
|
||||||
|
package_cmd: |
|
||||||
|
mkdir package
|
||||||
|
cp build/bin/yaze package/
|
||||||
|
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
||||||
|
cp -r docs package/ 2>/dev/null || echo "docs directory not found"
|
||||||
|
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
||||||
|
tar -czf yaze-linux-x64.tar.gz -C package .
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
# Clean up any potential vcpkg issues (Windows only)
|
||||||
|
- name: Clean vcpkg state (Windows)
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
Write-Host "Cleaning up any existing vcpkg state..."
|
||||||
|
if (Test-Path "vcpkg") {
|
||||||
|
Remove-Item -Recurse -Force "vcpkg" -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
if (Test-Path "vcpkg_installed") {
|
||||||
|
Remove-Item -Recurse -Force "vcpkg_installed" -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
Write-Host "Cleanup completed"
|
||||||
|
|
||||||
|
# Platform-specific dependency installation
|
||||||
|
- name: Install Linux dependencies
|
||||||
|
if: runner.os == 'Linux'
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y \
|
||||||
|
build-essential \
|
||||||
|
ninja-build \
|
||||||
|
pkg-config \
|
||||||
|
libglew-dev \
|
||||||
|
libxext-dev \
|
||||||
|
libwavpack-dev \
|
||||||
|
libabsl-dev \
|
||||||
|
libboost-all-dev \
|
||||||
|
libpng-dev \
|
||||||
|
python3-dev \
|
||||||
|
libpython3-dev \
|
||||||
|
libasound2-dev \
|
||||||
|
libpulse-dev \
|
||||||
|
libx11-dev \
|
||||||
|
libxrandr-dev \
|
||||||
|
libxcursor-dev \
|
||||||
|
libxinerama-dev \
|
||||||
|
libxi-dev
|
||||||
|
|
||||||
|
- name: Install macOS dependencies
|
||||||
|
if: runner.os == 'macOS'
|
||||||
|
run: |
|
||||||
|
# Install Homebrew dependencies needed for UI tests and full builds
|
||||||
|
brew install pkg-config libpng boost abseil ninja gtk+3
|
||||||
|
|
||||||
|
- name: Setup build environment
|
||||||
|
run: |
|
||||||
|
echo "Using streamlined release build configuration for all platforms"
|
||||||
|
echo "Linux/macOS: UI tests enabled with full dependency support"
|
||||||
|
echo "Windows: Full build with vcpkg integration for proper releases"
|
||||||
|
echo "All platforms: Emulator and developer tools disabled for clean releases"
|
||||||
|
|
||||||
|
# Configure CMake
|
||||||
|
- name: Configure CMake (Linux/macOS)
|
||||||
|
if: runner.os != 'Windows'
|
||||||
|
run: |
|
||||||
|
cmake -B build \
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
|
||||||
|
-DCMAKE_POLICY_VERSION_MINIMUM=3.16 \
|
||||||
|
-DYAZE_BUILD_TESTS=OFF \
|
||||||
|
-DYAZE_BUILD_EMU=OFF \
|
||||||
|
-DYAZE_BUILD_Z3ED=OFF \
|
||||||
|
-DYAZE_ENABLE_UI_TESTS=ON \
|
||||||
|
-DYAZE_ENABLE_ROM_TESTS=OFF \
|
||||||
|
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF \
|
||||||
|
-DYAZE_INSTALL_LIB=OFF \
|
||||||
|
-DYAZE_MINIMAL_BUILD=OFF \
|
||||||
|
-GNinja
|
||||||
|
|
||||||
|
# Set up vcpkg for Windows builds with fallback
|
||||||
|
- name: Set up vcpkg (Windows)
|
||||||
|
id: vcpkg_setup
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
uses: lukka/run-vcpkg@v11
|
||||||
|
continue-on-error: true
|
||||||
|
with:
|
||||||
|
vcpkgGitCommitId: 'c8696863d371ab7f46e213d8f5ca923c4aef2a00'
|
||||||
|
runVcpkgInstall: true
|
||||||
|
vcpkgJsonGlob: '**/vcpkg.json'
|
||||||
|
vcpkgDirectory: '${{ github.workspace }}/vcpkg'
|
||||||
|
env:
|
||||||
|
VCPKG_FORCE_SYSTEM_BINARIES: 1
|
||||||
|
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||||
|
VCPKG_DISABLE_METRICS: 1
|
||||||
|
VCPKG_DEFAULT_TRIPLET: ${{ matrix.vcpkg_triplet }}
|
||||||
|
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
|
||||||
|
|
||||||
|
# Debug vcpkg failure (Windows only)
|
||||||
|
- name: Debug vcpkg failure (Windows)
|
||||||
|
if: runner.os == 'Windows' && steps.vcpkg_setup.outcome == 'failure'
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
Write-Host "=== vcpkg Setup Failed - Debug Information ===" -ForegroundColor Red
|
||||||
|
Write-Host "vcpkg directory exists: $(Test-Path 'vcpkg')"
|
||||||
|
Write-Host "vcpkg_installed directory exists: $(Test-Path 'vcpkg_installed')"
|
||||||
|
if (Test-Path "vcpkg") {
|
||||||
|
Write-Host "vcpkg directory contents:"
|
||||||
|
Get-ChildItem "vcpkg" | Select-Object -First 10
|
||||||
|
}
|
||||||
|
Write-Host "Git status:"
|
||||||
|
git status --porcelain
|
||||||
|
Write-Host "=============================================" -ForegroundColor Red
|
||||||
|
|
||||||
|
# Fallback: Install dependencies manually if vcpkg fails
|
||||||
|
- name: Install dependencies manually (Windows fallback)
|
||||||
|
if: runner.os == 'Windows' && steps.vcpkg_setup.outcome == 'failure'
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
Write-Host "vcpkg setup failed, installing dependencies manually..."
|
||||||
|
|
||||||
|
# Install Chocolatey if not present
|
||||||
|
if (-not (Get-Command choco -ErrorAction SilentlyContinue)) {
|
||||||
|
Write-Host "Installing Chocolatey..."
|
||||||
|
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||||
|
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
||||||
|
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install basic build tools and dependencies
|
||||||
|
Write-Host "Installing build tools and dependencies..."
|
||||||
|
try {
|
||||||
|
choco install -y cmake ninja git python3
|
||||||
|
Write-Host "Successfully installed build tools via Chocolatey"
|
||||||
|
} catch {
|
||||||
|
Write-Host "Chocolatey installation failed, trying individual packages..."
|
||||||
|
choco install -y cmake || Write-Host "CMake installation failed"
|
||||||
|
choco install -y ninja || Write-Host "Ninja installation failed"
|
||||||
|
choco install -y git || Write-Host "Git installation failed"
|
||||||
|
choco install -y python3 || Write-Host "Python3 installation failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set up basic development environment
|
||||||
|
Write-Host "Setting up basic development environment..."
|
||||||
|
$env:Path += ";C:\Program Files\Git\bin"
|
||||||
|
|
||||||
|
# Verify installations
|
||||||
|
Write-Host "Verifying installations..."
|
||||||
|
cmake --version
|
||||||
|
ninja --version
|
||||||
|
git --version
|
||||||
|
|
||||||
|
# Set environment variable to indicate minimal build
|
||||||
|
echo "YAZE_MINIMAL_BUILD=ON" >> $env:GITHUB_ENV
|
||||||
|
echo "VCPKG_AVAILABLE=false" >> $env:GITHUB_ENV
|
||||||
|
|
||||||
|
Write-Host "Manual dependency installation completed"
|
||||||
|
Write-Host "Build will proceed with minimal configuration (no vcpkg dependencies)"
|
||||||
|
|
||||||
|
# Set vcpkg availability flag when vcpkg succeeds
|
||||||
|
- name: Set vcpkg availability flag
|
||||||
|
if: runner.os == 'Windows' && steps.vcpkg_setup.outcome == 'success'
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "VCPKG_AVAILABLE=true" >> $env:GITHUB_ENV
|
||||||
|
Write-Host "vcpkg setup successful"
|
||||||
|
|
||||||
|
- name: Configure CMake (Windows)
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
Write-Host "Configuring CMake for Windows build..."
|
||||||
|
|
||||||
|
# Check if vcpkg is available
|
||||||
|
if (Test-Path "${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" -and $env:VCPKG_AVAILABLE -ne "false") {
|
||||||
|
Write-Host "Using vcpkg toolchain..."
|
||||||
|
cmake -B build `
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} `
|
||||||
|
-DCMAKE_POLICY_VERSION_MINIMUM=3.16 `
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" `
|
||||||
|
-DYAZE_BUILD_TESTS=OFF `
|
||||||
|
-DYAZE_BUILD_EMU=OFF `
|
||||||
|
-DYAZE_BUILD_Z3ED=OFF `
|
||||||
|
-DYAZE_ENABLE_ROM_TESTS=OFF `
|
||||||
|
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF `
|
||||||
|
-DYAZE_INSTALL_LIB=OFF `
|
||||||
|
-DYAZE_MINIMAL_BUILD=OFF `
|
||||||
|
-G "${{ matrix.cmake_generator }}" `
|
||||||
|
-A ${{ matrix.cmake_generator_platform }}
|
||||||
|
} else {
|
||||||
|
Write-Host "Using minimal build configuration (vcpkg not available)..."
|
||||||
|
cmake -B build `
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} `
|
||||||
|
-DCMAKE_POLICY_VERSION_MINIMUM=3.16 `
|
||||||
|
-DYAZE_BUILD_TESTS=OFF `
|
||||||
|
-DYAZE_BUILD_EMU=OFF `
|
||||||
|
-DYAZE_BUILD_Z3ED=OFF `
|
||||||
|
-DYAZE_ENABLE_ROM_TESTS=OFF `
|
||||||
|
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF `
|
||||||
|
-DYAZE_INSTALL_LIB=OFF `
|
||||||
|
-DYAZE_MINIMAL_BUILD=ON `
|
||||||
|
-G "${{ matrix.cmake_generator }}" `
|
||||||
|
-A ${{ matrix.cmake_generator_platform }}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "CMake configuration completed successfully"
|
||||||
|
|
||||||
|
# Verify CMake configuration (Windows only)
|
||||||
|
- name: Verify CMake configuration (Windows)
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
Write-Host "Verifying CMake configuration..."
|
||||||
|
if (Test-Path "build/CMakeCache.txt") {
|
||||||
|
Write-Host "✓ CMakeCache.txt found"
|
||||||
|
Write-Host "Build type: $(Select-String -Path 'build/CMakeCache.txt' -Pattern 'CMAKE_BUILD_TYPE' | ForEach-Object { $_.Line.Split('=')[1] })"
|
||||||
|
Write-Host "Minimal build: $(Select-String -Path 'build/CMakeCache.txt' -Pattern 'YAZE_MINIMAL_BUILD' | ForEach-Object { $_.Line.Split('=')[1] })"
|
||||||
|
} else {
|
||||||
|
Write-Error "CMakeCache.txt not found - CMake configuration failed!"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Build
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
echo "Building YAZE for ${{ matrix.name }}..."
|
||||||
|
cmake --build build --config ${{ env.BUILD_TYPE }} --parallel
|
||||||
|
echo "Build completed successfully!"
|
||||||
|
|
||||||
|
# Validate Visual Studio project builds (Windows only)
|
||||||
|
# Generate yaze_config.h for Visual Studio builds
|
||||||
|
- name: Generate yaze_config.h
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$version = "${{ needs.validate-and-prepare.outputs.tag_name }}" -replace '^v', ''
|
||||||
|
$versionParts = $version -split '\.'
|
||||||
|
$major = if ($versionParts.Length -gt 0) { $versionParts[0] } else { "0" }
|
||||||
|
$minor = if ($versionParts.Length -gt 1) { $versionParts[1] } else { "0" }
|
||||||
|
$patch = if ($versionParts.Length -gt 2) { $versionParts[2] -split '-' | Select-Object -First 1 } else { "0" }
|
||||||
|
|
||||||
|
Write-Host "Generating yaze_config.h with version: $major.$minor.$patch"
|
||||||
|
Copy-Item "src\yaze_config.h.in" "yaze_config.h"
|
||||||
|
(Get-Content 'yaze_config.h') -replace '@yaze_VERSION_MAJOR@', $major -replace '@yaze_VERSION_MINOR@', $minor -replace '@yaze_VERSION_PATCH@', $patch | Set-Content 'yaze_config.h'
|
||||||
|
Write-Host "Generated yaze_config.h:"
|
||||||
|
Get-Content 'yaze_config.h'
|
||||||
|
|
||||||
|
- name: Validate Visual Studio Project Build
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
Write-Host "Validating Visual Studio Project Build" -ForegroundColor Cyan
|
||||||
|
Write-Host "Platform: ${{ matrix.cmake_generator_platform }}" -ForegroundColor Yellow
|
||||||
|
Write-Host "Configuration: ${{ env.BUILD_TYPE }}" -ForegroundColor Yellow
|
||||||
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
|
||||||
|
# Check if we're in the right directory
|
||||||
|
if (-not (Test-Path "yaze.sln")) {
|
||||||
|
Write-Error "yaze.sln not found. Please run this script from the project root directory."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "✓ yaze.sln found" -ForegroundColor Green
|
||||||
|
|
||||||
|
# Build using MSBuild
|
||||||
|
Write-Host "Building with MSBuild..." -ForegroundColor Yellow
|
||||||
|
$msbuildArgs = @(
|
||||||
|
"yaze.sln"
|
||||||
|
"/p:Configuration=${{ env.BUILD_TYPE }}"
|
||||||
|
"/p:Platform=${{ matrix.cmake_generator_platform }}"
|
||||||
|
"/p:VcpkgEnabled=true"
|
||||||
|
"/p:VcpkgManifestInstall=true"
|
||||||
|
"/m" # Multi-processor build
|
||||||
|
"/verbosity:minimal"
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Host "MSBuild command: msbuild $($msbuildArgs -join ' ')" -ForegroundColor Gray
|
||||||
|
& msbuild @msbuildArgs
|
||||||
|
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
Write-Error "MSBuild failed with exit code $LASTEXITCODE"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "✓ Visual Studio build completed successfully" -ForegroundColor Green
|
||||||
|
|
||||||
|
# Verify executable was created
|
||||||
|
$exePath = "build\bin\${{ env.BUILD_TYPE }}\yaze.exe"
|
||||||
|
if (-not (Test-Path $exePath)) {
|
||||||
|
Write-Error "Executable not found at expected path: $exePath"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "✓ Executable created: $exePath" -ForegroundColor Green
|
||||||
|
|
||||||
|
# Test that the executable runs (basic test)
|
||||||
|
Write-Host "Testing executable startup..." -ForegroundColor Yellow
|
||||||
|
$testResult = & $exePath --help 2>&1
|
||||||
|
$exitCode = $LASTEXITCODE
|
||||||
|
|
||||||
|
# Check if it's the test main or app main
|
||||||
|
if ($testResult -match "Google Test" -or $testResult -match "gtest") {
|
||||||
|
Write-Error "Executable is running test main instead of app main!"
|
||||||
|
Write-Host "Output: $testResult" -ForegroundColor Red
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "✓ Executable runs correctly (exit code: $exitCode)" -ForegroundColor Green
|
||||||
|
|
||||||
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
Write-Host "✓ Visual Studio build validation PASSED" -ForegroundColor Green
|
||||||
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
|
||||||
|
# Test executable functionality (Windows)
|
||||||
|
- name: Test executable functionality (Windows)
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
# Debug: List build directory contents
|
||||||
|
Write-Host "Build directory contents:" -ForegroundColor Cyan
|
||||||
|
if (Test-Path "build") {
|
||||||
|
Get-ChildItem -Recurse build -Name | Select-Object -First 20
|
||||||
|
} else {
|
||||||
|
Write-Host "build directory does not exist" -ForegroundColor Red
|
||||||
|
}
|
||||||
|
|
||||||
|
# Determine executable path for Windows
|
||||||
|
$exePath = "build\bin\${{ env.BUILD_TYPE }}\yaze.exe"
|
||||||
|
|
||||||
|
if (Test-Path $exePath) {
|
||||||
|
Write-Host "✓ Executable found: $exePath" -ForegroundColor Green
|
||||||
|
|
||||||
|
# Test that it's not the test main
|
||||||
|
$testResult = & $exePath --help 2>&1
|
||||||
|
$exitCode = $LASTEXITCODE
|
||||||
|
|
||||||
|
if ($testResult -match "Google Test" -or $testResult -match "gtest") {
|
||||||
|
Write-Error "Executable is running test main instead of app main!"
|
||||||
|
Write-Host "Output: $testResult" -ForegroundColor Red
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "✓ Executable runs correctly (exit code: $exitCode)" -ForegroundColor Green
|
||||||
|
|
||||||
|
# Display file info
|
||||||
|
$exeInfo = Get-Item $exePath
|
||||||
|
Write-Host "Executable size: $([math]::Round($exeInfo.Length / 1MB, 2)) MB" -ForegroundColor Cyan
|
||||||
|
} else {
|
||||||
|
Write-Error "Executable not found at: $exePath"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Test executable functionality (macOS)
|
||||||
|
- name: Test executable functionality (macOS)
|
||||||
|
if: runner.os == 'macOS'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Build directory contents:"
|
||||||
|
if [ -d "build" ]; then
|
||||||
|
find build -name "*.app" -o -name "yaze" | head -10
|
||||||
|
else
|
||||||
|
echo "build directory does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determine executable path for macOS
|
||||||
|
exePath="build/bin/yaze.app/Contents/MacOS/yaze"
|
||||||
|
|
||||||
|
if [ -f "$exePath" ]; then
|
||||||
|
echo "✓ Executable found: $exePath"
|
||||||
|
|
||||||
|
# Test that it's not the test main
|
||||||
|
testResult=$($exePath --help 2>&1 || true)
|
||||||
|
exitCode=$?
|
||||||
|
|
||||||
|
if echo "$testResult" | grep -q "Google Test\|gtest"; then
|
||||||
|
echo "ERROR: Executable is running test main instead of app main!"
|
||||||
|
echo "Output: $testResult"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✓ Executable runs correctly (exit code: $exitCode)"
|
||||||
|
|
||||||
|
# Display file info
|
||||||
|
fileSize=$(stat -f%z "$exePath")
|
||||||
|
fileSizeMB=$(echo "scale=2; $fileSize / 1024 / 1024" | bc -l)
|
||||||
|
echo "Executable size: ${fileSizeMB} MB"
|
||||||
|
else
|
||||||
|
echo "ERROR: Executable not found at: $exePath"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Test executable functionality (Linux)
|
||||||
|
- name: Test executable functionality (Linux)
|
||||||
|
if: runner.os == 'Linux'
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Build directory contents:"
|
||||||
|
if [ -d "build" ]; then
|
||||||
|
find build -type f -name "yaze" | head -10
|
||||||
|
else
|
||||||
|
echo "build directory does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Determine executable path for Linux
|
||||||
|
exePath="build/bin/yaze"
|
||||||
|
|
||||||
|
if [ -f "$exePath" ]; then
|
||||||
|
echo "✓ Executable found: $exePath"
|
||||||
|
|
||||||
|
# Test that it's not the test main
|
||||||
|
testResult=$($exePath --help 2>&1 || true)
|
||||||
|
exitCode=$?
|
||||||
|
|
||||||
|
if echo "$testResult" | grep -q "Google Test\|gtest"; then
|
||||||
|
echo "ERROR: Executable is running test main instead of app main!"
|
||||||
|
echo "Output: $testResult"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✓ Executable runs correctly (exit code: $exitCode)"
|
||||||
|
|
||||||
|
# Display file info
|
||||||
|
fileSize=$(stat -c%s "$exePath")
|
||||||
|
fileSizeMB=$(echo "scale=2; $fileSize / 1024 / 1024" | bc -l)
|
||||||
|
echo "Executable size: ${fileSizeMB} MB"
|
||||||
|
else
|
||||||
|
echo "ERROR: Executable not found at: $exePath"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Verify build artifacts
|
||||||
|
- name: Verify build artifacts
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "Verifying build artifacts for ${{ matrix.name }}..."
|
||||||
|
if [ -d "build/bin" ]; then
|
||||||
|
echo "Build directory contents:"
|
||||||
|
find build/bin -type f -name "yaze*" -o -name "*.exe" -o -name "*.app" | head -10
|
||||||
|
else
|
||||||
|
echo "ERROR: build/bin directory not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Package
|
||||||
|
- name: Package
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
echo "Packaging for ${{ matrix.name }}..."
|
||||||
|
${{ matrix.package_cmd }}
|
||||||
|
echo "Packaging completed successfully!"
|
||||||
|
|
||||||
|
# Create release with artifacts (will create release if it doesn't exist)
|
||||||
|
- name: Upload to Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag_name: ${{ needs.validate-and-prepare.outputs.tag_name }}
|
||||||
|
name: Yaze ${{ needs.validate-and-prepare.outputs.tag_name }}
|
||||||
|
body: ${{ needs.validate-and-prepare.outputs.release_notes }}
|
||||||
|
draft: false
|
||||||
|
prerelease: ${{ contains(needs.validate-and-prepare.outputs.tag_name, 'beta') || contains(needs.validate-and-prepare.outputs.tag_name, 'alpha') || contains(needs.validate-and-prepare.outputs.tag_name, 'rc') }}
|
||||||
|
files: |
|
||||||
|
${{ matrix.artifact_name }}.*
|
||||||
|
fail_on_unmatched_files: false
|
||||||
|
|
||||||
|
publish-packages:
|
||||||
|
name: Publish Packages
|
||||||
|
needs: [validate-and-prepare, build-release]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: success()
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Update release status
|
||||||
|
run: |
|
||||||
|
echo "Release has been published successfully"
|
||||||
|
echo "All build artifacts have been uploaded"
|
||||||
|
|
||||||
|
- name: Announce release
|
||||||
|
run: |
|
||||||
|
echo "🎉 Yaze ${{ needs.validate-and-prepare.outputs.tag_name }} has been released!"
|
||||||
|
echo "📦 Packages are now available for download"
|
||||||
|
echo "🔗 Release URL: https://github.com/${{ github.repository }}/releases/tag/${{ needs.validate-and-prepare.outputs.tag_name }}"
|
||||||
387
.github/workflows/release-simplified.yml
vendored
Normal file
387
.github/workflows/release-simplified.yml
vendored
Normal file
@@ -0,0 +1,387 @@
|
|||||||
|
name: Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v[0-9]+.[0-9]+.[0-9]+'
|
||||||
|
- 'v[0-9]+.[0-9]+.[0-9]+-*'
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
description: 'Release tag (must start with v and follow semantic versioning)'
|
||||||
|
required: true
|
||||||
|
default: 'v0.3.0'
|
||||||
|
type: string
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILD_TYPE: Release
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
validate-and-prepare:
|
||||||
|
name: Validate Release
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
tag_name: ${{ steps.validate.outputs.tag_name }}
|
||||||
|
release_notes: ${{ steps.notes.outputs.content }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Validate tag format
|
||||||
|
id: validate
|
||||||
|
run: |
|
||||||
|
# Determine the tag based on trigger type
|
||||||
|
if [[ "${{ github.event_name }}" == "push" ]]; then
|
||||||
|
if [[ "${{ github.ref_type }}" != "tag" ]]; then
|
||||||
|
echo "❌ Error: Release workflow triggered by push to ${{ github.ref_type }} '${{ github.ref_name }}'"
|
||||||
|
echo "This workflow should only be triggered by pushing version tags (v1.2.3)"
|
||||||
|
echo "Use: git tag v0.3.0 && git push origin v0.3.0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
TAG="${{ github.ref_name }}"
|
||||||
|
elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
||||||
|
TAG="${{ github.event.inputs.tag }}"
|
||||||
|
if [[ -z "$TAG" ]]; then
|
||||||
|
echo "❌ Error: No tag specified for manual workflow dispatch"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "❌ Error: Unsupported event type: ${{ github.event_name }}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Validating tag: $TAG"
|
||||||
|
|
||||||
|
# Check if tag follows semantic versioning pattern
|
||||||
|
if [[ ! "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-.*)?$ ]]; then
|
||||||
|
echo "❌ Error: Tag '$TAG' does not follow semantic versioning format (v1.2.3 or v1.2.3-beta)"
|
||||||
|
echo "Valid examples: v0.3.0, v1.0.0, v2.1.3-beta, v1.0.0-rc1"
|
||||||
|
echo ""
|
||||||
|
echo "To create a proper release:"
|
||||||
|
echo "1. Use the helper script: ./scripts/create_release.sh 0.3.0"
|
||||||
|
echo "2. Or manually: git tag v0.3.0 && git push origin v0.3.0"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✅ Tag format is valid: $TAG"
|
||||||
|
echo "VALIDATED_TAG=$TAG" >> $GITHUB_ENV
|
||||||
|
echo "tag_name=$TAG" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Generate release notes
|
||||||
|
id: release_notes
|
||||||
|
run: |
|
||||||
|
# Extract release version from validated tag
|
||||||
|
VERSION="${VALIDATED_TAG}"
|
||||||
|
VERSION_NUM=$(echo "$VERSION" | sed 's/^v//')
|
||||||
|
|
||||||
|
# Generate release notes using the dedicated script
|
||||||
|
echo "Extracting changelog for version: $VERSION_NUM"
|
||||||
|
if python3 scripts/extract_changelog.py "$VERSION_NUM" > release_notes.md; then
|
||||||
|
echo "Changelog extracted successfully"
|
||||||
|
echo "Release notes content:"
|
||||||
|
cat release_notes.md
|
||||||
|
else
|
||||||
|
echo "Failed to extract changelog, creating default release notes"
|
||||||
|
echo "# Yaze $VERSION Release Notes\n\nPlease see the full changelog at docs/C1-changelog.md" > release_notes.md
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Store release notes
|
||||||
|
id: notes
|
||||||
|
run: |
|
||||||
|
# Store release notes content for later use
|
||||||
|
echo "content<<EOF" >> $GITHUB_OUTPUT
|
||||||
|
cat release_notes.md >> $GITHUB_OUTPUT
|
||||||
|
echo "EOF" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
build-release:
|
||||||
|
name: Build Release
|
||||||
|
needs: validate-and-prepare
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- name: "Windows x64"
|
||||||
|
os: windows-2022
|
||||||
|
vcpkg_triplet: x64-windows
|
||||||
|
cmake_generator: "Visual Studio 17 2022"
|
||||||
|
cmake_generator_platform: x64
|
||||||
|
artifact_name: "yaze-windows-x64"
|
||||||
|
|
||||||
|
- name: "Windows x86"
|
||||||
|
os: windows-2022
|
||||||
|
vcpkg_triplet: x86-windows
|
||||||
|
cmake_generator: "Visual Studio 17 2022"
|
||||||
|
cmake_generator_platform: Win32
|
||||||
|
artifact_name: "yaze-windows-x86"
|
||||||
|
|
||||||
|
- name: "Windows ARM64"
|
||||||
|
os: windows-2022
|
||||||
|
vcpkg_triplet: arm64-windows
|
||||||
|
cmake_generator: "Visual Studio 17 2022"
|
||||||
|
cmake_generator_platform: ARM64
|
||||||
|
artifact_name: "yaze-windows-arm64"
|
||||||
|
|
||||||
|
- name: "macOS Universal"
|
||||||
|
os: macos-14
|
||||||
|
vcpkg_triplet: arm64-osx
|
||||||
|
artifact_name: "yaze-macos"
|
||||||
|
|
||||||
|
- name: "Linux x64"
|
||||||
|
os: ubuntu-22.04
|
||||||
|
artifact_name: "yaze-linux-x64"
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
# Platform-specific dependency installation
|
||||||
|
- name: Install Linux dependencies
|
||||||
|
if: runner.os == 'Linux'
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install -y \
|
||||||
|
build-essential \
|
||||||
|
ninja-build \
|
||||||
|
pkg-config \
|
||||||
|
libglew-dev \
|
||||||
|
libxext-dev \
|
||||||
|
libwavpack-dev \
|
||||||
|
libabsl-dev \
|
||||||
|
libboost-all-dev \
|
||||||
|
libpng-dev \
|
||||||
|
python3-dev \
|
||||||
|
libpython3-dev \
|
||||||
|
libasound2-dev \
|
||||||
|
libpulse-dev \
|
||||||
|
libx11-dev \
|
||||||
|
libxrandr-dev \
|
||||||
|
libxcursor-dev \
|
||||||
|
libxinerama-dev \
|
||||||
|
libxi-dev
|
||||||
|
|
||||||
|
- name: Install macOS dependencies
|
||||||
|
if: runner.os == 'macOS'
|
||||||
|
run: |
|
||||||
|
# Install Homebrew dependencies needed for UI tests and full builds
|
||||||
|
brew install pkg-config libpng boost abseil ninja gtk+3
|
||||||
|
|
||||||
|
# Set up vcpkg for Windows builds
|
||||||
|
- name: Set up vcpkg (Windows)
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
uses: lukka/run-vcpkg@v11
|
||||||
|
with:
|
||||||
|
vcpkgGitCommitId: 'c8696863d371ab7f46e213d8f5ca923c4aef2a00'
|
||||||
|
runVcpkgInstall: true
|
||||||
|
vcpkgJsonGlob: '**/vcpkg.json'
|
||||||
|
vcpkgDirectory: '${{ github.workspace }}/vcpkg'
|
||||||
|
env:
|
||||||
|
VCPKG_FORCE_SYSTEM_BINARIES: 1
|
||||||
|
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||||
|
VCPKG_DISABLE_METRICS: 1
|
||||||
|
VCPKG_DEFAULT_TRIPLET: ${{ matrix.vcpkg_triplet }}
|
||||||
|
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
|
||||||
|
|
||||||
|
# Configure CMake
|
||||||
|
- name: Configure CMake (Linux/macOS)
|
||||||
|
if: runner.os != 'Windows'
|
||||||
|
run: |
|
||||||
|
cmake -B build \
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
|
||||||
|
-DCMAKE_POLICY_VERSION_MINIMUM=3.16 \
|
||||||
|
-DYAZE_BUILD_TESTS=OFF \
|
||||||
|
-DYAZE_BUILD_EMU=OFF \
|
||||||
|
-DYAZE_BUILD_Z3ED=OFF \
|
||||||
|
-DYAZE_ENABLE_UI_TESTS=ON \
|
||||||
|
-DYAZE_ENABLE_ROM_TESTS=OFF \
|
||||||
|
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF \
|
||||||
|
-DYAZE_INSTALL_LIB=OFF \
|
||||||
|
-DYAZE_MINIMAL_BUILD=OFF \
|
||||||
|
-GNinja
|
||||||
|
|
||||||
|
- name: Configure CMake (Windows)
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
Write-Host "Configuring CMake for Windows build..."
|
||||||
|
|
||||||
|
# Use vcpkg toolchain
|
||||||
|
cmake -B build `
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} `
|
||||||
|
-DCMAKE_POLICY_VERSION_MINIMUM=3.16 `
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" `
|
||||||
|
-DYAZE_BUILD_TESTS=OFF `
|
||||||
|
-DYAZE_BUILD_EMU=OFF `
|
||||||
|
-DYAZE_BUILD_Z3ED=OFF `
|
||||||
|
-DYAZE_ENABLE_ROM_TESTS=OFF `
|
||||||
|
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF `
|
||||||
|
-DYAZE_INSTALL_LIB=OFF `
|
||||||
|
-DYAZE_MINIMAL_BUILD=OFF `
|
||||||
|
-G "${{ matrix.cmake_generator }}" `
|
||||||
|
-A ${{ matrix.cmake_generator_platform }}
|
||||||
|
|
||||||
|
Write-Host "CMake configuration completed successfully"
|
||||||
|
|
||||||
|
# Build
|
||||||
|
- name: Build
|
||||||
|
run: |
|
||||||
|
echo "Building YAZE for ${{ matrix.name }}..."
|
||||||
|
cmake --build build --config ${{ env.BUILD_TYPE }} --parallel
|
||||||
|
echo "Build completed successfully!"
|
||||||
|
|
||||||
|
# Test executable functionality
|
||||||
|
- name: Test executable functionality
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Testing executable for ${{ matrix.name }}..."
|
||||||
|
|
||||||
|
# Determine executable path based on platform
|
||||||
|
if [[ "${{ runner.os }}" == "Windows" ]]; then
|
||||||
|
exePath="build/bin/${{ env.BUILD_TYPE }}/yaze.exe"
|
||||||
|
elif [[ "${{ runner.os }}" == "macOS" ]]; then
|
||||||
|
exePath="build/bin/yaze.app/Contents/MacOS/yaze"
|
||||||
|
else
|
||||||
|
exePath="build/bin/yaze"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$exePath" ]; then
|
||||||
|
echo "✓ Executable found: $exePath"
|
||||||
|
|
||||||
|
# Test that it's not the test main
|
||||||
|
testResult=$($exePath --help 2>&1 || true)
|
||||||
|
exitCode=$?
|
||||||
|
|
||||||
|
if echo "$testResult" | grep -q "Google Test\|gtest"; then
|
||||||
|
echo "ERROR: Executable is running test main instead of app main!"
|
||||||
|
echo "Output: $testResult"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "✓ Executable runs correctly (exit code: $exitCode)"
|
||||||
|
|
||||||
|
# Display file info
|
||||||
|
if [[ "${{ runner.os }}" == "Windows" ]]; then
|
||||||
|
fileSize=$(stat -c%s "$exePath" 2>/dev/null || echo "0")
|
||||||
|
else
|
||||||
|
fileSize=$(stat -f%z "$exePath" 2>/dev/null || stat -c%s "$exePath" 2>/dev/null || echo "0")
|
||||||
|
fi
|
||||||
|
fileSizeMB=$(echo "scale=2; $fileSize / 1024 / 1024" | bc -l 2>/dev/null || echo "0")
|
||||||
|
echo "Executable size: ${fileSizeMB} MB"
|
||||||
|
else
|
||||||
|
echo "ERROR: Executable not found at: $exePath"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Package
|
||||||
|
- name: Package
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
set -e
|
||||||
|
echo "Packaging for ${{ matrix.name }}..."
|
||||||
|
|
||||||
|
if [[ "${{ runner.os }}" == "Windows" ]]; then
|
||||||
|
# Windows packaging
|
||||||
|
mkdir -p package
|
||||||
|
cp -r build/bin/${{ env.BUILD_TYPE }}/* package/ 2>/dev/null || echo "No Release binaries found, trying Debug..."
|
||||||
|
cp -r build/bin/Debug/* package/ 2>/dev/null || echo "No Debug binaries found"
|
||||||
|
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
||||||
|
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
||||||
|
cd package && zip -r ../${{ matrix.artifact_name }}.zip *
|
||||||
|
|
||||||
|
elif [[ "${{ runner.os }}" == "macOS" ]]; then
|
||||||
|
# macOS packaging
|
||||||
|
if [ -d "build/bin/yaze.app" ]; then
|
||||||
|
echo "Found macOS bundle, using it directly"
|
||||||
|
cp -r build/bin/yaze.app ./Yaze.app
|
||||||
|
# Add additional resources to the bundle
|
||||||
|
cp -r assets "Yaze.app/Contents/Resources/" 2>/dev/null || echo "assets directory not found"
|
||||||
|
# Update Info.plist with correct version
|
||||||
|
if [ -f "cmake/yaze.plist.in" ]; then
|
||||||
|
VERSION_NUM=$(echo "${{ needs.validate-and-prepare.outputs.tag_name }}" | sed 's/^v//')
|
||||||
|
sed "s/@yaze_VERSION@/$VERSION_NUM/g" cmake/yaze.plist.in > "Yaze.app/Contents/Info.plist"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "No bundle found, creating manual bundle"
|
||||||
|
mkdir -p "Yaze.app/Contents/MacOS"
|
||||||
|
mkdir -p "Yaze.app/Contents/Resources"
|
||||||
|
cp build/bin/yaze "Yaze.app/Contents/MacOS/"
|
||||||
|
cp -r assets "Yaze.app/Contents/Resources/" 2>/dev/null || echo "assets directory not found"
|
||||||
|
# Create Info.plist with correct version
|
||||||
|
VERSION_NUM=$(echo "${{ needs.validate-and-prepare.outputs.tag_name }}" | sed 's/^v//')
|
||||||
|
cat > "Yaze.app/Contents/Info.plist" <<EOF
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>yaze</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.yaze.editor</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>Yaze</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>$VERSION_NUM</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>$VERSION_NUM</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create DMG
|
||||||
|
mkdir dmg_staging
|
||||||
|
cp -r Yaze.app dmg_staging/
|
||||||
|
cp LICENSE dmg_staging/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md dmg_staging/ 2>/dev/null || echo "README.md not found"
|
||||||
|
cp -r docs dmg_staging/ 2>/dev/null || echo "docs directory not found"
|
||||||
|
hdiutil create -srcfolder dmg_staging -format UDZO -volname "Yaze ${{ needs.validate-and-prepare.outputs.tag_name }}" ${{ matrix.artifact_name }}.dmg
|
||||||
|
|
||||||
|
else
|
||||||
|
# Linux packaging
|
||||||
|
mkdir package
|
||||||
|
cp build/bin/yaze package/
|
||||||
|
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
||||||
|
cp -r docs package/ 2>/dev/null || echo "docs directory not found"
|
||||||
|
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
||||||
|
tar -czf ${{ matrix.artifact_name }}.tar.gz -C package .
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Packaging completed successfully!"
|
||||||
|
|
||||||
|
# Create release with artifacts
|
||||||
|
- name: Upload to Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag_name: ${{ needs.validate-and-prepare.outputs.tag_name }}
|
||||||
|
name: Yaze ${{ needs.validate-and-prepare.outputs.tag_name }}
|
||||||
|
body: ${{ needs.validate-and-prepare.outputs.release_notes }}
|
||||||
|
draft: false
|
||||||
|
prerelease: ${{ contains(needs.validate-and-prepare.outputs.tag_name, 'beta') || contains(needs.validate-and-prepare.outputs.tag_name, 'alpha') || contains(needs.validate-and-prepare.outputs.tag_name, 'rc') }}
|
||||||
|
files: |
|
||||||
|
${{ matrix.artifact_name }}.*
|
||||||
|
|
||||||
|
publish-packages:
|
||||||
|
name: Publish Packages
|
||||||
|
needs: [validate-and-prepare, build-release]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: success()
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Announce release
|
||||||
|
run: |
|
||||||
|
echo "🎉 Yaze ${{ needs.validate-and-prepare.outputs.tag_name }} has been released!"
|
||||||
|
echo "📦 Packages are now available for download"
|
||||||
|
echo "🔗 Release URL: https://github.com/${{ github.repository }}/releases/tag/${{ needs.validate-and-prepare.outputs.tag_name }}"
|
||||||
613
.github/workflows/release.yml
vendored
613
.github/workflows/release.yml
vendored
@@ -28,12 +28,6 @@ jobs:
|
|||||||
- name: Validate tag format
|
- name: Validate tag format
|
||||||
id: validate
|
id: validate
|
||||||
run: |
|
run: |
|
||||||
# Debug information
|
|
||||||
echo "Event name: ${{ github.event_name }}"
|
|
||||||
echo "Ref: ${{ github.ref }}"
|
|
||||||
echo "Ref name: ${{ github.ref_name }}"
|
|
||||||
echo "Ref type: ${{ github.ref_type }}"
|
|
||||||
|
|
||||||
# Determine the tag based on trigger type
|
# Determine the tag based on trigger type
|
||||||
if [[ "${{ github.event_name }}" == "push" ]]; then
|
if [[ "${{ github.event_name }}" == "push" ]]; then
|
||||||
if [[ "${{ github.ref_type }}" != "tag" ]]; then
|
if [[ "${{ github.ref_type }}" != "tag" ]]; then
|
||||||
@@ -114,15 +108,6 @@ jobs:
|
|||||||
cmake_generator: "Visual Studio 17 2022"
|
cmake_generator: "Visual Studio 17 2022"
|
||||||
cmake_generator_platform: x64
|
cmake_generator_platform: x64
|
||||||
artifact_name: "yaze-windows-x64"
|
artifact_name: "yaze-windows-x64"
|
||||||
artifact_path: "build/bin/Release/"
|
|
||||||
package_cmd: |
|
|
||||||
mkdir -p package
|
|
||||||
cp -r build/bin/Release/* package/ 2>/dev/null || echo "No Release binaries found, trying Debug..."
|
|
||||||
cp -r build/bin/Debug/* package/ 2>/dev/null || echo "No Debug binaries found"
|
|
||||||
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
|
||||||
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
|
||||||
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
|
||||||
cd package && zip -r ../yaze-windows-x64.zip *
|
|
||||||
|
|
||||||
- name: "Windows x86"
|
- name: "Windows x86"
|
||||||
os: windows-2022
|
os: windows-2022
|
||||||
@@ -130,15 +115,6 @@ jobs:
|
|||||||
cmake_generator: "Visual Studio 17 2022"
|
cmake_generator: "Visual Studio 17 2022"
|
||||||
cmake_generator_platform: Win32
|
cmake_generator_platform: Win32
|
||||||
artifact_name: "yaze-windows-x86"
|
artifact_name: "yaze-windows-x86"
|
||||||
artifact_path: "build/bin/Release/"
|
|
||||||
package_cmd: |
|
|
||||||
mkdir -p package
|
|
||||||
cp -r build/bin/Release/* package/ 2>/dev/null || echo "No Release binaries found, trying Debug..."
|
|
||||||
cp -r build/bin/Debug/* package/ 2>/dev/null || echo "No Debug binaries found"
|
|
||||||
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
|
||||||
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
|
||||||
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
|
||||||
cd package && zip -r ../yaze-windows-x86.zip *
|
|
||||||
|
|
||||||
- name: "Windows ARM64"
|
- name: "Windows ARM64"
|
||||||
os: windows-2022
|
os: windows-2022
|
||||||
@@ -146,95 +122,15 @@ jobs:
|
|||||||
cmake_generator: "Visual Studio 17 2022"
|
cmake_generator: "Visual Studio 17 2022"
|
||||||
cmake_generator_platform: ARM64
|
cmake_generator_platform: ARM64
|
||||||
artifact_name: "yaze-windows-arm64"
|
artifact_name: "yaze-windows-arm64"
|
||||||
artifact_path: "build/bin/Release/"
|
|
||||||
package_cmd: |
|
|
||||||
mkdir -p package
|
|
||||||
cp -r build/bin/Release/* package/ 2>/dev/null || echo "No Release binaries found, trying Debug..."
|
|
||||||
cp -r build/bin/Debug/* package/ 2>/dev/null || echo "No Debug binaries found"
|
|
||||||
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
|
||||||
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
|
||||||
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
|
||||||
cd package && zip -r ../yaze-windows-arm64.zip *
|
|
||||||
|
|
||||||
- name: "macOS Universal"
|
- name: "macOS Universal"
|
||||||
os: macos-14
|
os: macos-14
|
||||||
vcpkg_triplet: arm64-osx
|
vcpkg_triplet: arm64-osx
|
||||||
artifact_name: "yaze-macos"
|
artifact_name: "yaze-macos"
|
||||||
artifact_path: "build/bin/"
|
|
||||||
package_cmd: |
|
|
||||||
# Debug: List what was actually built
|
|
||||||
echo "Contents of build/bin/:"
|
|
||||||
ls -la build/bin/ || echo "build/bin/ does not exist"
|
|
||||||
|
|
||||||
# Check if we have a bundle or standalone executable
|
|
||||||
if [ -d "build/bin/yaze.app" ]; then
|
|
||||||
echo "Found macOS bundle, using it directly"
|
|
||||||
# Use the existing bundle and just update it
|
|
||||||
cp -r build/bin/yaze.app ./Yaze.app
|
|
||||||
# Add additional resources to the bundle
|
|
||||||
cp -r assets "Yaze.app/Contents/Resources/" 2>/dev/null || echo "assets directory not found"
|
|
||||||
# Update Info.plist with correct version
|
|
||||||
if [ -f "cmake/yaze.plist.in" ]; then
|
|
||||||
VERSION_NUM=$(echo "${{ needs.validate-and-prepare.outputs.tag_name }}" | sed 's/^v//')
|
|
||||||
sed "s/@yaze_VERSION@/$VERSION_NUM/g" cmake/yaze.plist.in > "Yaze.app/Contents/Info.plist"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "No bundle found, creating manual bundle"
|
|
||||||
# Create bundle structure manually
|
|
||||||
mkdir -p "Yaze.app/Contents/MacOS"
|
|
||||||
mkdir -p "Yaze.app/Contents/Resources"
|
|
||||||
cp build/bin/yaze "Yaze.app/Contents/MacOS/"
|
|
||||||
cp -r assets "Yaze.app/Contents/Resources/" 2>/dev/null || echo "assets directory not found"
|
|
||||||
# Create Info.plist with correct version
|
|
||||||
if [ -f "cmake/yaze.plist.in" ]; then
|
|
||||||
VERSION_NUM=$(echo "${{ needs.validate-and-prepare.outputs.tag_name }}" | sed 's/^v//')
|
|
||||||
sed "s/@yaze_VERSION@/$VERSION_NUM/g" cmake/yaze.plist.in > "Yaze.app/Contents/Info.plist"
|
|
||||||
else
|
|
||||||
# Create a basic Info.plist
|
|
||||||
VERSION_NUM=$(echo "${{ needs.validate-and-prepare.outputs.tag_name }}" | sed 's/^v//')
|
|
||||||
cat > "Yaze.app/Contents/Info.plist" <<EOF
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>CFBundleExecutable</key>
|
|
||||||
<string>yaze</string>
|
|
||||||
<key>CFBundleIdentifier</key>
|
|
||||||
<string>com.yaze.editor</string>
|
|
||||||
<key>CFBundleName</key>
|
|
||||||
<string>Yaze</string>
|
|
||||||
<key>CFBundleVersion</key>
|
|
||||||
<string>$VERSION_NUM</string>
|
|
||||||
<key>CFBundleShortVersionString</key>
|
|
||||||
<string>$VERSION_NUM</string>
|
|
||||||
<key>CFBundlePackageType</key>
|
|
||||||
<string>APPL</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create DMG
|
|
||||||
mkdir dmg_staging
|
|
||||||
cp -r Yaze.app dmg_staging/
|
|
||||||
cp LICENSE dmg_staging/ 2>/dev/null || echo "LICENSE not found"
|
|
||||||
cp README.md dmg_staging/ 2>/dev/null || echo "README.md not found"
|
|
||||||
cp -r docs dmg_staging/ 2>/dev/null || echo "docs directory not found"
|
|
||||||
hdiutil create -srcfolder dmg_staging -format UDZO -volname "Yaze ${{ needs.validate-and-prepare.outputs.tag_name }}" yaze-macos.dmg
|
|
||||||
|
|
||||||
- name: "Linux x64"
|
- name: "Linux x64"
|
||||||
os: ubuntu-22.04
|
os: ubuntu-22.04
|
||||||
artifact_name: "yaze-linux-x64"
|
artifact_name: "yaze-linux-x64"
|
||||||
artifact_path: "build/bin/"
|
|
||||||
package_cmd: |
|
|
||||||
mkdir package
|
|
||||||
cp build/bin/yaze package/
|
|
||||||
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
|
||||||
cp -r docs package/ 2>/dev/null || echo "docs directory not found"
|
|
||||||
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
|
||||||
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
|
||||||
tar -czf yaze-linux-x64.tar.gz -C package .
|
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
@@ -244,20 +140,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
# Clean up any potential vcpkg issues (Windows only)
|
|
||||||
- name: Clean vcpkg state (Windows)
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
Write-Host "Cleaning up any existing vcpkg state..."
|
|
||||||
if (Test-Path "vcpkg") {
|
|
||||||
Remove-Item -Recurse -Force "vcpkg" -ErrorAction SilentlyContinue
|
|
||||||
}
|
|
||||||
if (Test-Path "vcpkg_installed") {
|
|
||||||
Remove-Item -Recurse -Force "vcpkg_installed" -ErrorAction SilentlyContinue
|
|
||||||
}
|
|
||||||
Write-Host "Cleanup completed"
|
|
||||||
|
|
||||||
# Platform-specific dependency installation
|
# Platform-specific dependency installation
|
||||||
- name: Install Linux dependencies
|
- name: Install Linux dependencies
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
@@ -289,12 +171,21 @@ jobs:
|
|||||||
# Install Homebrew dependencies needed for UI tests and full builds
|
# Install Homebrew dependencies needed for UI tests and full builds
|
||||||
brew install pkg-config libpng boost abseil ninja gtk+3
|
brew install pkg-config libpng boost abseil ninja gtk+3
|
||||||
|
|
||||||
- name: Setup build environment
|
# Set up vcpkg for Windows builds
|
||||||
run: |
|
- name: Set up vcpkg (Windows)
|
||||||
echo "Using streamlined release build configuration for all platforms"
|
if: runner.os == 'Windows'
|
||||||
echo "Linux/macOS: UI tests enabled with full dependency support"
|
uses: lukka/run-vcpkg@v11
|
||||||
echo "Windows: Full build with vcpkg integration for proper releases"
|
with:
|
||||||
echo "All platforms: Emulator and developer tools disabled for clean releases"
|
vcpkgGitCommitId: 'c8696863d371ab7f46e213d8f5ca923c4aef2a00'
|
||||||
|
runVcpkgInstall: true
|
||||||
|
vcpkgJsonGlob: '**/vcpkg.json'
|
||||||
|
vcpkgDirectory: '${{ github.workspace }}/vcpkg'
|
||||||
|
env:
|
||||||
|
VCPKG_FORCE_SYSTEM_BINARIES: 1
|
||||||
|
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
||||||
|
VCPKG_DISABLE_METRICS: 1
|
||||||
|
VCPKG_DEFAULT_TRIPLET: ${{ matrix.vcpkg_triplet }}
|
||||||
|
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
|
||||||
|
|
||||||
# Configure CMake
|
# Configure CMake
|
||||||
- name: Configure CMake (Linux/macOS)
|
- name: Configure CMake (Linux/macOS)
|
||||||
@@ -313,148 +204,29 @@ jobs:
|
|||||||
-DYAZE_MINIMAL_BUILD=OFF \
|
-DYAZE_MINIMAL_BUILD=OFF \
|
||||||
-GNinja
|
-GNinja
|
||||||
|
|
||||||
# Set up vcpkg for Windows builds with fallback
|
|
||||||
- name: Set up vcpkg (Windows)
|
|
||||||
id: vcpkg_setup
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
uses: lukka/run-vcpkg@v11
|
|
||||||
continue-on-error: true
|
|
||||||
with:
|
|
||||||
vcpkgGitCommitId: 'c8696863d371ab7f46e213d8f5ca923c4aef2a00'
|
|
||||||
runVcpkgInstall: true
|
|
||||||
vcpkgJsonGlob: '**/vcpkg.json'
|
|
||||||
vcpkgDirectory: '${{ github.workspace }}/vcpkg'
|
|
||||||
env:
|
|
||||||
VCPKG_FORCE_SYSTEM_BINARIES: 1
|
|
||||||
VCPKG_BINARY_SOURCES: "clear;x-gha,readwrite"
|
|
||||||
VCPKG_DISABLE_METRICS: 1
|
|
||||||
VCPKG_DEFAULT_TRIPLET: ${{ matrix.vcpkg_triplet }}
|
|
||||||
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
|
|
||||||
|
|
||||||
# Debug vcpkg failure (Windows only)
|
|
||||||
- name: Debug vcpkg failure (Windows)
|
|
||||||
if: runner.os == 'Windows' && steps.vcpkg_setup.outcome == 'failure'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
Write-Host "=== vcpkg Setup Failed - Debug Information ===" -ForegroundColor Red
|
|
||||||
Write-Host "vcpkg directory exists: $(Test-Path 'vcpkg')"
|
|
||||||
Write-Host "vcpkg_installed directory exists: $(Test-Path 'vcpkg_installed')"
|
|
||||||
if (Test-Path "vcpkg") {
|
|
||||||
Write-Host "vcpkg directory contents:"
|
|
||||||
Get-ChildItem "vcpkg" | Select-Object -First 10
|
|
||||||
}
|
|
||||||
Write-Host "Git status:"
|
|
||||||
git status --porcelain
|
|
||||||
Write-Host "=============================================" -ForegroundColor Red
|
|
||||||
|
|
||||||
# Fallback: Install dependencies manually if vcpkg fails
|
|
||||||
- name: Install dependencies manually (Windows fallback)
|
|
||||||
if: runner.os == 'Windows' && steps.vcpkg_setup.outcome == 'failure'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
Write-Host "vcpkg setup failed, installing dependencies manually..."
|
|
||||||
|
|
||||||
# Install Chocolatey if not present
|
|
||||||
if (-not (Get-Command choco -ErrorAction SilentlyContinue)) {
|
|
||||||
Write-Host "Installing Chocolatey..."
|
|
||||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
|
||||||
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
|
||||||
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
|
|
||||||
}
|
|
||||||
|
|
||||||
# Install basic build tools and dependencies
|
|
||||||
Write-Host "Installing build tools and dependencies..."
|
|
||||||
try {
|
|
||||||
choco install -y cmake ninja git python3
|
|
||||||
Write-Host "Successfully installed build tools via Chocolatey"
|
|
||||||
} catch {
|
|
||||||
Write-Host "Chocolatey installation failed, trying individual packages..."
|
|
||||||
choco install -y cmake || Write-Host "CMake installation failed"
|
|
||||||
choco install -y ninja || Write-Host "Ninja installation failed"
|
|
||||||
choco install -y git || Write-Host "Git installation failed"
|
|
||||||
choco install -y python3 || Write-Host "Python3 installation failed"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Set up basic development environment
|
|
||||||
Write-Host "Setting up basic development environment..."
|
|
||||||
$env:Path += ";C:\Program Files\Git\bin"
|
|
||||||
|
|
||||||
# Verify installations
|
|
||||||
Write-Host "Verifying installations..."
|
|
||||||
cmake --version
|
|
||||||
ninja --version
|
|
||||||
git --version
|
|
||||||
|
|
||||||
# Set environment variable to indicate minimal build
|
|
||||||
echo "YAZE_MINIMAL_BUILD=ON" >> $env:GITHUB_ENV
|
|
||||||
echo "VCPKG_AVAILABLE=false" >> $env:GITHUB_ENV
|
|
||||||
|
|
||||||
Write-Host "Manual dependency installation completed"
|
|
||||||
Write-Host "Build will proceed with minimal configuration (no vcpkg dependencies)"
|
|
||||||
|
|
||||||
# Set vcpkg availability flag when vcpkg succeeds
|
|
||||||
- name: Set vcpkg availability flag
|
|
||||||
if: runner.os == 'Windows' && steps.vcpkg_setup.outcome == 'success'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
echo "VCPKG_AVAILABLE=true" >> $env:GITHUB_ENV
|
|
||||||
Write-Host "vcpkg setup successful"
|
|
||||||
|
|
||||||
- name: Configure CMake (Windows)
|
- name: Configure CMake (Windows)
|
||||||
if: runner.os == 'Windows'
|
if: runner.os == 'Windows'
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
Write-Host "Configuring CMake for Windows build..."
|
Write-Host "Configuring CMake for Windows build..."
|
||||||
|
|
||||||
# Check if vcpkg is available
|
# Use vcpkg toolchain
|
||||||
if (Test-Path "${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" -and $env:VCPKG_AVAILABLE -ne "false") {
|
cmake -B build `
|
||||||
Write-Host "Using vcpkg toolchain..."
|
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} `
|
||||||
cmake -B build `
|
-DCMAKE_POLICY_VERSION_MINIMUM=3.16 `
|
||||||
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} `
|
-DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" `
|
||||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.16 `
|
-DYAZE_BUILD_TESTS=OFF `
|
||||||
-DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" `
|
-DYAZE_BUILD_EMU=OFF `
|
||||||
-DYAZE_BUILD_TESTS=OFF `
|
-DYAZE_BUILD_Z3ED=OFF `
|
||||||
-DYAZE_BUILD_EMU=OFF `
|
-DYAZE_ENABLE_ROM_TESTS=OFF `
|
||||||
-DYAZE_BUILD_Z3ED=OFF `
|
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF `
|
||||||
-DYAZE_ENABLE_ROM_TESTS=OFF `
|
-DYAZE_INSTALL_LIB=OFF `
|
||||||
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF `
|
-DYAZE_MINIMAL_BUILD=OFF `
|
||||||
-DYAZE_INSTALL_LIB=OFF `
|
-G "${{ matrix.cmake_generator }}" `
|
||||||
-DYAZE_MINIMAL_BUILD=OFF `
|
-A ${{ matrix.cmake_generator_platform }}
|
||||||
-G "${{ matrix.cmake_generator }}" `
|
|
||||||
-A ${{ matrix.cmake_generator_platform }}
|
|
||||||
} else {
|
|
||||||
Write-Host "Using minimal build configuration (vcpkg not available)..."
|
|
||||||
cmake -B build `
|
|
||||||
-DCMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} `
|
|
||||||
-DCMAKE_POLICY_VERSION_MINIMUM=3.16 `
|
|
||||||
-DYAZE_BUILD_TESTS=OFF `
|
|
||||||
-DYAZE_BUILD_EMU=OFF `
|
|
||||||
-DYAZE_BUILD_Z3ED=OFF `
|
|
||||||
-DYAZE_ENABLE_ROM_TESTS=OFF `
|
|
||||||
-DYAZE_ENABLE_EXPERIMENTAL_TESTS=OFF `
|
|
||||||
-DYAZE_INSTALL_LIB=OFF `
|
|
||||||
-DYAZE_MINIMAL_BUILD=ON `
|
|
||||||
-G "${{ matrix.cmake_generator }}" `
|
|
||||||
-A ${{ matrix.cmake_generator_platform }}
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "CMake configuration completed successfully"
|
Write-Host "CMake configuration completed successfully"
|
||||||
|
|
||||||
# Verify CMake configuration (Windows only)
|
|
||||||
- name: Verify CMake configuration (Windows)
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
Write-Host "Verifying CMake configuration..."
|
|
||||||
if (Test-Path "build/CMakeCache.txt") {
|
|
||||||
Write-Host "✓ CMakeCache.txt found"
|
|
||||||
Write-Host "Build type: $(Select-String -Path 'build/CMakeCache.txt' -Pattern 'CMAKE_BUILD_TYPE' | ForEach-Object { $_.Line.Split('=')[1] })"
|
|
||||||
Write-Host "Minimal build: $(Select-String -Path 'build/CMakeCache.txt' -Pattern 'YAZE_MINIMAL_BUILD' | ForEach-Object { $_.Line.Split('=')[1] })"
|
|
||||||
} else {
|
|
||||||
Write-Error "CMakeCache.txt not found - CMake configuration failed!"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Build
|
# Build
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
@@ -462,228 +234,48 @@ jobs:
|
|||||||
cmake --build build --config ${{ env.BUILD_TYPE }} --parallel
|
cmake --build build --config ${{ env.BUILD_TYPE }} --parallel
|
||||||
echo "Build completed successfully!"
|
echo "Build completed successfully!"
|
||||||
|
|
||||||
# Validate Visual Studio project builds (Windows only)
|
# Test executable functionality
|
||||||
# Generate yaze_config.h for Visual Studio builds
|
- name: Test executable functionality
|
||||||
- name: Generate yaze_config.h
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
$version = "${{ needs.validate-and-prepare.outputs.tag_name }}" -replace '^v', ''
|
|
||||||
$versionParts = $version -split '\.'
|
|
||||||
$major = if ($versionParts.Length -gt 0) { $versionParts[0] } else { "0" }
|
|
||||||
$minor = if ($versionParts.Length -gt 1) { $versionParts[1] } else { "0" }
|
|
||||||
$patch = if ($versionParts.Length -gt 2) { $versionParts[2] -split '-' | Select-Object -First 1 } else { "0" }
|
|
||||||
|
|
||||||
Write-Host "Generating yaze_config.h with version: $major.$minor.$patch"
|
|
||||||
Copy-Item "src\yaze_config.h.in" "yaze_config.h"
|
|
||||||
(Get-Content 'yaze_config.h') -replace '@yaze_VERSION_MAJOR@', $major -replace '@yaze_VERSION_MINOR@', $minor -replace '@yaze_VERSION_PATCH@', $patch | Set-Content 'yaze_config.h'
|
|
||||||
Write-Host "Generated yaze_config.h:"
|
|
||||||
Get-Content 'yaze_config.h'
|
|
||||||
|
|
||||||
- name: Validate Visual Studio Project Build
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
|
|
||||||
Write-Host "========================================" -ForegroundColor Cyan
|
|
||||||
Write-Host "Validating Visual Studio Project Build" -ForegroundColor Cyan
|
|
||||||
Write-Host "Platform: ${{ matrix.cmake_generator_platform }}" -ForegroundColor Yellow
|
|
||||||
Write-Host "Configuration: ${{ env.BUILD_TYPE }}" -ForegroundColor Yellow
|
|
||||||
Write-Host "========================================" -ForegroundColor Cyan
|
|
||||||
|
|
||||||
# Check if we're in the right directory
|
|
||||||
if (-not (Test-Path "yaze.sln")) {
|
|
||||||
Write-Error "yaze.sln not found. Please run this script from the project root directory."
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "✓ yaze.sln found" -ForegroundColor Green
|
|
||||||
|
|
||||||
# Build using MSBuild
|
|
||||||
Write-Host "Building with MSBuild..." -ForegroundColor Yellow
|
|
||||||
$msbuildArgs = @(
|
|
||||||
"yaze.sln"
|
|
||||||
"/p:Configuration=${{ env.BUILD_TYPE }}"
|
|
||||||
"/p:Platform=${{ matrix.cmake_generator_platform }}"
|
|
||||||
"/p:VcpkgEnabled=true"
|
|
||||||
"/p:VcpkgManifestInstall=true"
|
|
||||||
"/m" # Multi-processor build
|
|
||||||
"/verbosity:minimal"
|
|
||||||
)
|
|
||||||
|
|
||||||
Write-Host "MSBuild command: msbuild $($msbuildArgs -join ' ')" -ForegroundColor Gray
|
|
||||||
& msbuild @msbuildArgs
|
|
||||||
|
|
||||||
if ($LASTEXITCODE -ne 0) {
|
|
||||||
Write-Error "MSBuild failed with exit code $LASTEXITCODE"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "✓ Visual Studio build completed successfully" -ForegroundColor Green
|
|
||||||
|
|
||||||
# Verify executable was created
|
|
||||||
$exePath = "build\bin\${{ env.BUILD_TYPE }}\yaze.exe"
|
|
||||||
if (-not (Test-Path $exePath)) {
|
|
||||||
Write-Error "Executable not found at expected path: $exePath"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "✓ Executable created: $exePath" -ForegroundColor Green
|
|
||||||
|
|
||||||
# Test that the executable runs (basic test)
|
|
||||||
Write-Host "Testing executable startup..." -ForegroundColor Yellow
|
|
||||||
$testResult = & $exePath --help 2>&1
|
|
||||||
$exitCode = $LASTEXITCODE
|
|
||||||
|
|
||||||
# Check if it's the test main or app main
|
|
||||||
if ($testResult -match "Google Test" -or $testResult -match "gtest") {
|
|
||||||
Write-Error "Executable is running test main instead of app main!"
|
|
||||||
Write-Host "Output: $testResult" -ForegroundColor Red
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "✓ Executable runs correctly (exit code: $exitCode)" -ForegroundColor Green
|
|
||||||
|
|
||||||
Write-Host "========================================" -ForegroundColor Cyan
|
|
||||||
Write-Host "✓ Visual Studio build validation PASSED" -ForegroundColor Green
|
|
||||||
Write-Host "========================================" -ForegroundColor Cyan
|
|
||||||
|
|
||||||
# Test executable functionality (Windows)
|
|
||||||
- name: Test executable functionality (Windows)
|
|
||||||
if: runner.os == 'Windows'
|
|
||||||
shell: pwsh
|
|
||||||
run: |
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
|
|
||||||
# Debug: List build directory contents
|
|
||||||
Write-Host "Build directory contents:" -ForegroundColor Cyan
|
|
||||||
if (Test-Path "build") {
|
|
||||||
Get-ChildItem -Recurse build -Name | Select-Object -First 20
|
|
||||||
} else {
|
|
||||||
Write-Host "build directory does not exist" -ForegroundColor Red
|
|
||||||
}
|
|
||||||
|
|
||||||
# Determine executable path for Windows
|
|
||||||
$exePath = "build\bin\${{ env.BUILD_TYPE }}\yaze.exe"
|
|
||||||
|
|
||||||
if (Test-Path $exePath) {
|
|
||||||
Write-Host "✓ Executable found: $exePath" -ForegroundColor Green
|
|
||||||
|
|
||||||
# Test that it's not the test main
|
|
||||||
$testResult = & $exePath --help 2>&1
|
|
||||||
$exitCode = $LASTEXITCODE
|
|
||||||
|
|
||||||
if ($testResult -match "Google Test" -or $testResult -match "gtest") {
|
|
||||||
Write-Error "Executable is running test main instead of app main!"
|
|
||||||
Write-Host "Output: $testResult" -ForegroundColor Red
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host "✓ Executable runs correctly (exit code: $exitCode)" -ForegroundColor Green
|
|
||||||
|
|
||||||
# Display file info
|
|
||||||
$exeInfo = Get-Item $exePath
|
|
||||||
Write-Host "Executable size: $([math]::Round($exeInfo.Length / 1MB, 2)) MB" -ForegroundColor Cyan
|
|
||||||
} else {
|
|
||||||
Write-Error "Executable not found at: $exePath"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Test executable functionality (macOS)
|
|
||||||
- name: Test executable functionality (macOS)
|
|
||||||
if: runner.os == 'macOS'
|
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "Build directory contents:"
|
echo "Testing executable for ${{ matrix.name }}..."
|
||||||
if [ -d "build" ]; then
|
|
||||||
find build -name "*.app" -o -name "yaze" | head -10
|
|
||||||
else
|
|
||||||
echo "build directory does not exist"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Determine executable path for macOS
|
# Determine executable path based on platform
|
||||||
exePath="build/bin/yaze.app/Contents/MacOS/yaze"
|
if [[ "${{ runner.os }}" == "Windows" ]]; then
|
||||||
|
exePath="build/bin/${{ env.BUILD_TYPE }}/yaze.exe"
|
||||||
|
elif [[ "${{ runner.os }}" == "macOS" ]]; then
|
||||||
|
exePath="build/bin/yaze.app/Contents/MacOS/yaze"
|
||||||
|
else
|
||||||
|
exePath="build/bin/yaze"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -f "$exePath" ]; then
|
if [ -f "$exePath" ]; then
|
||||||
echo "✓ Executable found: $exePath"
|
echo "✓ Executable found: $exePath"
|
||||||
|
|
||||||
# Test that it's not the test main
|
# Test that it's not the test main
|
||||||
testResult=$($exePath --help 2>&1 || true)
|
testResult=$($exePath --help 2>&1 || true)
|
||||||
exitCode=$?
|
exitCode=$?
|
||||||
|
|
||||||
if echo "$testResult" | grep -q "Google Test\|gtest"; then
|
if echo "$testResult" | grep -q "Google Test\|gtest"; then
|
||||||
echo "ERROR: Executable is running test main instead of app main!"
|
echo "ERROR: Executable is running test main instead of app main!"
|
||||||
echo "Output: $testResult"
|
echo "Output: $testResult"
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✓ Executable runs correctly (exit code: $exitCode)"
|
|
||||||
|
|
||||||
# Display file info
|
|
||||||
fileSize=$(stat -f%z "$exePath")
|
|
||||||
fileSizeMB=$(echo "scale=2; $fileSize / 1024 / 1024" | bc -l)
|
|
||||||
echo "Executable size: ${fileSizeMB} MB"
|
|
||||||
else
|
|
||||||
echo "ERROR: Executable not found at: $exePath"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Test executable functionality (Linux)
|
echo "✓ Executable runs correctly (exit code: $exitCode)"
|
||||||
- name: Test executable functionality (Linux)
|
|
||||||
if: runner.os == 'Linux'
|
# Display file info
|
||||||
shell: bash
|
if [[ "${{ runner.os }}" == "Windows" ]]; then
|
||||||
run: |
|
fileSize=$(stat -c%s "$exePath" 2>/dev/null || echo "0")
|
||||||
set -e
|
else
|
||||||
|
fileSize=$(stat -f%z "$exePath" 2>/dev/null || stat -c%s "$exePath" 2>/dev/null || echo "0")
|
||||||
echo "Build directory contents:"
|
fi
|
||||||
if [ -d "build" ]; then
|
fileSizeMB=$(echo "scale=2; $fileSize / 1024 / 1024" | bc -l 2>/dev/null || echo "0")
|
||||||
find build -type f -name "yaze" | head -10
|
echo "Executable size: ${fileSizeMB} MB"
|
||||||
else
|
else
|
||||||
echo "build directory does not exist"
|
echo "ERROR: Executable not found at: $exePath"
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Determine executable path for Linux
|
|
||||||
exePath="build/bin/yaze"
|
|
||||||
|
|
||||||
if [ -f "$exePath" ]; then
|
|
||||||
echo "✓ Executable found: $exePath"
|
|
||||||
|
|
||||||
# Test that it's not the test main
|
|
||||||
testResult=$($exePath --help 2>&1 || true)
|
|
||||||
exitCode=$?
|
|
||||||
|
|
||||||
if echo "$testResult" | grep -q "Google Test\|gtest"; then
|
|
||||||
echo "ERROR: Executable is running test main instead of app main!"
|
|
||||||
echo "Output: $testResult"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "✓ Executable runs correctly (exit code: $exitCode)"
|
|
||||||
|
|
||||||
# Display file info
|
|
||||||
fileSize=$(stat -c%s "$exePath")
|
|
||||||
fileSizeMB=$(echo "scale=2; $fileSize / 1024 / 1024" | bc -l)
|
|
||||||
echo "Executable size: ${fileSizeMB} MB"
|
|
||||||
else
|
|
||||||
echo "ERROR: Executable not found at: $exePath"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Verify build artifacts
|
|
||||||
- name: Verify build artifacts
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
echo "Verifying build artifacts for ${{ matrix.name }}..."
|
|
||||||
if [ -d "build/bin" ]; then
|
|
||||||
echo "Build directory contents:"
|
|
||||||
find build/bin -type f -name "yaze*" -o -name "*.exe" -o -name "*.app" | head -10
|
|
||||||
else
|
|
||||||
echo "ERROR: build/bin directory not found!"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -693,10 +285,81 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
set -e
|
set -e
|
||||||
echo "Packaging for ${{ matrix.name }}..."
|
echo "Packaging for ${{ matrix.name }}..."
|
||||||
${{ matrix.package_cmd }}
|
|
||||||
|
if [[ "${{ runner.os }}" == "Windows" ]]; then
|
||||||
|
# Windows packaging
|
||||||
|
mkdir -p package
|
||||||
|
cp -r build/bin/${{ env.BUILD_TYPE }}/* package/ 2>/dev/null || echo "No Release binaries found, trying Debug..."
|
||||||
|
cp -r build/bin/Debug/* package/ 2>/dev/null || echo "No Debug binaries found"
|
||||||
|
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
||||||
|
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
||||||
|
cd package && zip -r ../${{ matrix.artifact_name }}.zip *
|
||||||
|
|
||||||
|
elif [[ "${{ runner.os }}" == "macOS" ]]; then
|
||||||
|
# macOS packaging
|
||||||
|
if [ -d "build/bin/yaze.app" ]; then
|
||||||
|
echo "Found macOS bundle, using it directly"
|
||||||
|
cp -r build/bin/yaze.app ./Yaze.app
|
||||||
|
# Add additional resources to the bundle
|
||||||
|
cp -r assets "Yaze.app/Contents/Resources/" 2>/dev/null || echo "assets directory not found"
|
||||||
|
# Update Info.plist with correct version
|
||||||
|
if [ -f "cmake/yaze.plist.in" ]; then
|
||||||
|
VERSION_NUM=$(echo "${{ needs.validate-and-prepare.outputs.tag_name }}" | sed 's/^v//')
|
||||||
|
sed "s/@yaze_VERSION@/$VERSION_NUM/g" cmake/yaze.plist.in > "Yaze.app/Contents/Info.plist"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "No bundle found, creating manual bundle"
|
||||||
|
mkdir -p "Yaze.app/Contents/MacOS"
|
||||||
|
mkdir -p "Yaze.app/Contents/Resources"
|
||||||
|
cp build/bin/yaze "Yaze.app/Contents/MacOS/"
|
||||||
|
cp -r assets "Yaze.app/Contents/Resources/" 2>/dev/null || echo "assets directory not found"
|
||||||
|
# Create Info.plist with correct version
|
||||||
|
VERSION_NUM=$(echo "${{ needs.validate-and-prepare.outputs.tag_name }}" | sed 's/^v//')
|
||||||
|
cat > "Yaze.app/Contents/Info.plist" <<EOF
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>yaze</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.yaze.editor</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>Yaze</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>$VERSION_NUM</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>$VERSION_NUM</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create DMG
|
||||||
|
mkdir dmg_staging
|
||||||
|
cp -r Yaze.app dmg_staging/
|
||||||
|
cp LICENSE dmg_staging/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md dmg_staging/ 2>/dev/null || echo "README.md not found"
|
||||||
|
cp -r docs dmg_staging/ 2>/dev/null || echo "docs directory not found"
|
||||||
|
hdiutil create -srcfolder dmg_staging -format UDZO -volname "Yaze ${{ needs.validate-and-prepare.outputs.tag_name }}" ${{ matrix.artifact_name }}.dmg
|
||||||
|
|
||||||
|
else
|
||||||
|
# Linux packaging
|
||||||
|
mkdir package
|
||||||
|
cp build/bin/yaze package/
|
||||||
|
cp -r assets package/ 2>/dev/null || echo "assets directory not found"
|
||||||
|
cp -r docs package/ 2>/dev/null || echo "docs directory not found"
|
||||||
|
cp LICENSE package/ 2>/dev/null || echo "LICENSE not found"
|
||||||
|
cp README.md package/ 2>/dev/null || echo "README.md not found"
|
||||||
|
tar -czf ${{ matrix.artifact_name }}.tar.gz -C package .
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Packaging completed successfully!"
|
echo "Packaging completed successfully!"
|
||||||
|
|
||||||
# Create release with artifacts (will create release if it doesn't exist)
|
# Create release with artifacts
|
||||||
- name: Upload to Release
|
- name: Upload to Release
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
env:
|
env:
|
||||||
@@ -709,7 +372,6 @@ jobs:
|
|||||||
prerelease: ${{ contains(needs.validate-and-prepare.outputs.tag_name, 'beta') || contains(needs.validate-and-prepare.outputs.tag_name, 'alpha') || contains(needs.validate-and-prepare.outputs.tag_name, 'rc') }}
|
prerelease: ${{ contains(needs.validate-and-prepare.outputs.tag_name, 'beta') || contains(needs.validate-and-prepare.outputs.tag_name, 'alpha') || contains(needs.validate-and-prepare.outputs.tag_name, 'rc') }}
|
||||||
files: |
|
files: |
|
||||||
${{ matrix.artifact_name }}.*
|
${{ matrix.artifact_name }}.*
|
||||||
fail_on_unmatched_files: false
|
|
||||||
|
|
||||||
publish-packages:
|
publish-packages:
|
||||||
name: Publish Packages
|
name: Publish Packages
|
||||||
@@ -718,11 +380,6 @@ jobs:
|
|||||||
if: success()
|
if: success()
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Update release status
|
|
||||||
run: |
|
|
||||||
echo "Release has been published successfully"
|
|
||||||
echo "All build artifacts have been uploaded"
|
|
||||||
|
|
||||||
- name: Announce release
|
- name: Announce release
|
||||||
run: |
|
run: |
|
||||||
echo "🎉 Yaze ${{ needs.validate-and-prepare.outputs.tag_name }} has been released!"
|
echo "🎉 Yaze ${{ needs.validate-and-prepare.outputs.tag_name }} has been released!"
|
||||||
|
|||||||
323
docs/windows-development-guide.md
Normal file
323
docs/windows-development-guide.md
Normal file
@@ -0,0 +1,323 @@
|
|||||||
|
# Windows Development Guide for YAZE
|
||||||
|
|
||||||
|
This guide will help you set up a Windows development environment for YAZE and build the project successfully.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
### Required Software
|
||||||
|
|
||||||
|
1. **Visual Studio 2022** (Community, Professional, or Enterprise)
|
||||||
|
- Download from: https://visualstudio.microsoft.com/downloads/
|
||||||
|
- Required workloads:
|
||||||
|
- Desktop development with C++
|
||||||
|
- Game development with C++ (optional, for additional tools)
|
||||||
|
|
||||||
|
2. **Git for Windows**
|
||||||
|
- Download from: https://git-scm.com/download/win
|
||||||
|
- Use default installation options
|
||||||
|
|
||||||
|
3. **Python 3.8 or later**
|
||||||
|
- Download from: https://www.python.org/downloads/
|
||||||
|
- Make sure to check "Add Python to PATH" during installation
|
||||||
|
|
||||||
|
### Optional Software
|
||||||
|
|
||||||
|
- **PowerShell 7** (recommended for better script support)
|
||||||
|
- **Windows Terminal** (for better terminal experience)
|
||||||
|
|
||||||
|
## Quick Setup
|
||||||
|
|
||||||
|
### Automated Setup
|
||||||
|
|
||||||
|
The easiest way to get started is to use our automated setup script:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# Run from the YAZE project root directory
|
||||||
|
.\scripts\setup-windows-dev.ps1
|
||||||
|
```
|
||||||
|
|
||||||
|
This script will:
|
||||||
|
- Check for required software
|
||||||
|
- Set up vcpkg
|
||||||
|
- Install dependencies
|
||||||
|
- Generate Visual Studio project files
|
||||||
|
- Perform a test build
|
||||||
|
|
||||||
|
### Manual Setup
|
||||||
|
|
||||||
|
If you prefer to set up manually or the automated script fails:
|
||||||
|
|
||||||
|
#### 1. Clone the Repository
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/your-username/yaze.git
|
||||||
|
cd yaze
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. Set up vcpkg
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone vcpkg
|
||||||
|
git clone https://github.com/Microsoft/vcpkg.git vcpkg
|
||||||
|
|
||||||
|
# Bootstrap vcpkg
|
||||||
|
cd vcpkg
|
||||||
|
.\bootstrap-vcpkg.bat
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
.\vcpkg\vcpkg.exe install --triplet x64-windows
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. Generate Visual Studio Project Files
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/generate-vs-projects.py
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4. Build the Project
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Using PowerShell script (recommended)
|
||||||
|
.\scripts\build-windows.ps1 -Configuration Release -Platform x64
|
||||||
|
|
||||||
|
# Or using batch script
|
||||||
|
.\scripts\build-windows.bat Release x64
|
||||||
|
|
||||||
|
# Or using Visual Studio
|
||||||
|
# Open YAZE.sln in Visual Studio 2022 and build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building the Project
|
||||||
|
|
||||||
|
### Using Visual Studio
|
||||||
|
|
||||||
|
1. Open `YAZE.sln` in Visual Studio 2022
|
||||||
|
2. Select your desired configuration:
|
||||||
|
- **Debug**: For development and debugging
|
||||||
|
- **Release**: For optimized builds
|
||||||
|
- **RelWithDebInfo**: Release with debug information
|
||||||
|
- **MinSizeRel**: Minimal size release
|
||||||
|
3. Select your platform:
|
||||||
|
- **x64**: 64-bit (recommended)
|
||||||
|
- **x86**: 32-bit
|
||||||
|
- **ARM64**: ARM64 (if supported)
|
||||||
|
4. Build the solution (Ctrl+Shift+B)
|
||||||
|
|
||||||
|
### Using Command Line
|
||||||
|
|
||||||
|
#### PowerShell Script (Recommended)
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# Build Release x64 (default)
|
||||||
|
.\scripts\build-windows.ps1
|
||||||
|
|
||||||
|
# Build Debug x64
|
||||||
|
.\scripts\build-windows.ps1 -Configuration Debug -Platform x64
|
||||||
|
|
||||||
|
# Build Release x86
|
||||||
|
.\scripts\build-windows.ps1 -Configuration Release -Platform x86
|
||||||
|
|
||||||
|
# Clean build
|
||||||
|
.\scripts\build-windows.ps1 -Clean
|
||||||
|
|
||||||
|
# Verbose output
|
||||||
|
.\scripts\build-windows.ps1 -Verbose
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Batch Script
|
||||||
|
|
||||||
|
```batch
|
||||||
|
REM Build Release x64 (default)
|
||||||
|
.\scripts\build-windows.bat
|
||||||
|
|
||||||
|
REM Build Debug x64
|
||||||
|
.\scripts\build-windows.bat Debug x64
|
||||||
|
|
||||||
|
REM Build Release x86
|
||||||
|
.\scripts\build-windows.bat Release x86
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Direct MSBuild
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build Release x64
|
||||||
|
msbuild YAZE.sln /p:Configuration=Release /p:Platform=x64 /p:VcpkgEnabled=true /p:VcpkgManifestInstall=true /m
|
||||||
|
|
||||||
|
# Build Debug x64
|
||||||
|
msbuild YAZE.sln /p:Configuration=Debug /p:Platform=x64 /p:VcpkgEnabled=true /p:VcpkgManifestInstall=true /m
|
||||||
|
```
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
yaze/
|
||||||
|
├── YAZE.sln # Visual Studio solution file
|
||||||
|
├── YAZE.vcxproj # Visual Studio project file
|
||||||
|
├── vcpkg.json # vcpkg dependencies
|
||||||
|
├── scripts/ # Build and setup scripts
|
||||||
|
│ ├── build-windows.ps1 # PowerShell build script
|
||||||
|
│ ├── build-windows.bat # Batch build script
|
||||||
|
│ ├── setup-windows-dev.ps1 # Setup script
|
||||||
|
│ └── generate-vs-projects.py # Project generator
|
||||||
|
├── src/ # Source code
|
||||||
|
├── incl/ # Public headers
|
||||||
|
├── assets/ # Game assets
|
||||||
|
└── docs/ # Documentation
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
|
||||||
|
#### 1. MSBuild Not Found
|
||||||
|
|
||||||
|
**Error**: `'msbuild' is not recognized as an internal or external command`
|
||||||
|
|
||||||
|
**Solution**:
|
||||||
|
- Install Visual Studio 2022 with C++ workload
|
||||||
|
- Or add MSBuild to your PATH:
|
||||||
|
```bash
|
||||||
|
# Add to PATH (adjust path as needed)
|
||||||
|
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. vcpkg Integration Issues
|
||||||
|
|
||||||
|
**Error**: `vcpkg.json not found` or dependency resolution fails
|
||||||
|
|
||||||
|
**Solution**:
|
||||||
|
- Ensure vcpkg is properly set up:
|
||||||
|
```bash
|
||||||
|
.\scripts\setup-windows-dev.ps1
|
||||||
|
```
|
||||||
|
- Or manually set up vcpkg as described in the manual setup section
|
||||||
|
|
||||||
|
#### 3. Python Script Execution Policy
|
||||||
|
|
||||||
|
**Error**: `execution of scripts is disabled on this system`
|
||||||
|
|
||||||
|
**Solution**:
|
||||||
|
```powershell
|
||||||
|
# Run as Administrator
|
||||||
|
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4. Missing Dependencies
|
||||||
|
|
||||||
|
**Error**: Linker errors about missing libraries
|
||||||
|
|
||||||
|
**Solution**:
|
||||||
|
- Ensure all dependencies are installed via vcpkg:
|
||||||
|
```bash
|
||||||
|
.\vcpkg\vcpkg.exe install --triplet x64-windows
|
||||||
|
```
|
||||||
|
- Regenerate project files:
|
||||||
|
```bash
|
||||||
|
python scripts/generate-vs-projects.py
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 5. Build Failures
|
||||||
|
|
||||||
|
**Error**: Compilation or linking errors
|
||||||
|
|
||||||
|
**Solution**:
|
||||||
|
- Clean and rebuild:
|
||||||
|
```powershell
|
||||||
|
.\scripts\build-windows.ps1 -Clean
|
||||||
|
```
|
||||||
|
- Check that all source files are included in the project
|
||||||
|
- Verify that include paths are correct
|
||||||
|
|
||||||
|
### Getting Help
|
||||||
|
|
||||||
|
If you encounter issues not covered here:
|
||||||
|
|
||||||
|
1. Check the [main build instructions](02-build-instructions.md)
|
||||||
|
2. Review the [troubleshooting section](02-build-instructions.md#troubleshooting)
|
||||||
|
3. Check the [GitHub Issues](https://github.com/your-username/yaze/issues)
|
||||||
|
4. Create a new issue with:
|
||||||
|
- Your Windows version
|
||||||
|
- Visual Studio version
|
||||||
|
- Complete error message
|
||||||
|
- Steps to reproduce
|
||||||
|
|
||||||
|
## Development Workflow
|
||||||
|
|
||||||
|
### Making Changes
|
||||||
|
|
||||||
|
1. Make your changes to the source code
|
||||||
|
2. Build the project:
|
||||||
|
```powershell
|
||||||
|
.\scripts\build-windows.ps1 -Configuration Debug -Platform x64
|
||||||
|
```
|
||||||
|
3. Test your changes
|
||||||
|
4. If adding new source files, regenerate project files:
|
||||||
|
```bash
|
||||||
|
python scripts/generate-vs-projects.py
|
||||||
|
```
|
||||||
|
|
||||||
|
### Debugging
|
||||||
|
|
||||||
|
1. Set breakpoints in Visual Studio
|
||||||
|
2. Build in Debug configuration
|
||||||
|
3. Run with debugger (F5)
|
||||||
|
4. Use Visual Studio's debugging tools
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
1. Build the project
|
||||||
|
2. Run the executable:
|
||||||
|
```bash
|
||||||
|
.\build\bin\Debug\yaze.exe
|
||||||
|
```
|
||||||
|
3. Test with a ROM file:
|
||||||
|
```bash
|
||||||
|
.\build\bin\Debug\yaze.exe --rom_file=path\to\your\rom.sfc
|
||||||
|
```
|
||||||
|
|
||||||
|
## Performance Tips
|
||||||
|
|
||||||
|
### Build Performance
|
||||||
|
|
||||||
|
- Use the `/m` flag for parallel builds
|
||||||
|
- Use SSD storage for better I/O performance
|
||||||
|
- Exclude build directories from antivirus scanning
|
||||||
|
- Use Release configuration for final builds
|
||||||
|
|
||||||
|
### Development Performance
|
||||||
|
|
||||||
|
- Use Debug configuration for development
|
||||||
|
- Use incremental builds (default in Visual Studio)
|
||||||
|
- Use RelWithDebInfo for performance testing with debug info
|
||||||
|
|
||||||
|
## Advanced Configuration
|
||||||
|
|
||||||
|
### Custom Build Configurations
|
||||||
|
|
||||||
|
You can create custom build configurations by modifying the Visual Studio project file or using CMake directly.
|
||||||
|
|
||||||
|
### Cross-Platform Development
|
||||||
|
|
||||||
|
While this guide focuses on Windows, YAZE also supports:
|
||||||
|
- Linux (Ubuntu/Debian)
|
||||||
|
- macOS
|
||||||
|
|
||||||
|
See the main build instructions for other platforms.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
When contributing to YAZE on Windows:
|
||||||
|
|
||||||
|
1. Follow the [coding standards](B1-contributing.md)
|
||||||
|
2. Test your changes on Windows
|
||||||
|
3. Ensure the build scripts still work
|
||||||
|
4. Update documentation if needed
|
||||||
|
5. Submit a pull request
|
||||||
|
|
||||||
|
## Additional Resources
|
||||||
|
|
||||||
|
- [Visual Studio Documentation](https://docs.microsoft.com/en-us/visualstudio/)
|
||||||
|
- [vcpkg Documentation](https://vcpkg.readthedocs.io/)
|
||||||
|
- [CMake Documentation](https://cmake.org/documentation/)
|
||||||
|
- [YAZE API Reference](04-api-reference.md)
|
||||||
129
scripts/build-windows.bat
Normal file
129
scripts/build-windows.bat
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
@echo off
|
||||||
|
REM Simple Windows build script for YAZE
|
||||||
|
REM This script sets up the environment and builds the project using Visual Studio
|
||||||
|
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
|
echo ========================================
|
||||||
|
echo YAZE Windows Build Script
|
||||||
|
echo ========================================
|
||||||
|
|
||||||
|
REM Check if we're in the right directory
|
||||||
|
if not exist "YAZE.sln" (
|
||||||
|
echo ERROR: YAZE.sln not found. Please run this script from the project root directory.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ✓ YAZE.sln found
|
||||||
|
|
||||||
|
REM Check for Visual Studio
|
||||||
|
echo Checking for Visual Studio...
|
||||||
|
where msbuild >nul 2>&1
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ERROR: MSBuild not found. Please install Visual Studio 2022 or later.
|
||||||
|
echo Make sure to install the C++ development workload.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ✓ MSBuild found
|
||||||
|
|
||||||
|
REM Check for vcpkg
|
||||||
|
echo Checking for vcpkg...
|
||||||
|
if not exist "vcpkg.json" (
|
||||||
|
echo ERROR: vcpkg.json not found. Please ensure vcpkg is properly configured.
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ✓ vcpkg.json found
|
||||||
|
|
||||||
|
REM Set up environment variables
|
||||||
|
echo Setting up build environment...
|
||||||
|
set BUILD_CONFIG=Release
|
||||||
|
set BUILD_PLATFORM=x64
|
||||||
|
|
||||||
|
REM Allow user to override configuration
|
||||||
|
if "%1" neq "" set BUILD_CONFIG=%1
|
||||||
|
if "%2" neq "" set BUILD_PLATFORM=%2
|
||||||
|
|
||||||
|
echo Build Configuration: %BUILD_CONFIG%
|
||||||
|
echo Build Platform: %BUILD_PLATFORM%
|
||||||
|
|
||||||
|
REM Create build directories
|
||||||
|
echo Creating build directories...
|
||||||
|
if not exist "build" mkdir build
|
||||||
|
if not exist "build\bin" mkdir build\bin
|
||||||
|
if not exist "build\obj" mkdir build\obj
|
||||||
|
|
||||||
|
REM Generate yaze_config.h if it doesn't exist
|
||||||
|
if not exist "yaze_config.h" (
|
||||||
|
echo Generating yaze_config.h...
|
||||||
|
copy "src\yaze_config.h.in" "yaze_config.h" >nul
|
||||||
|
powershell -Command "(Get-Content 'yaze_config.h') -replace '@yaze_VERSION_MAJOR@', '0' -replace '@yaze_VERSION_MINOR@', '3' -replace '@yaze_VERSION_PATCH@', '1' | Set-Content 'yaze_config.h'"
|
||||||
|
echo ✓ Generated yaze_config.h
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Build using MSBuild
|
||||||
|
echo Building with MSBuild...
|
||||||
|
echo Command: msbuild YAZE.sln /p:Configuration=%BUILD_CONFIG% /p:Platform=%BUILD_PLATFORM% /p:VcpkgEnabled=true /p:VcpkgManifestInstall=true /m /verbosity:minimal
|
||||||
|
|
||||||
|
msbuild YAZE.sln /p:Configuration=%BUILD_CONFIG% /p:Platform=%BUILD_PLATFORM% /p:VcpkgEnabled=true /p:VcpkgManifestInstall=true /m /verbosity:minimal
|
||||||
|
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ERROR: Build failed with exit code %errorlevel%
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ✓ Build completed successfully
|
||||||
|
|
||||||
|
REM Verify executable was created
|
||||||
|
set EXE_PATH=build\bin\%BUILD_CONFIG%\yaze.exe
|
||||||
|
if not exist "%EXE_PATH%" (
|
||||||
|
echo ERROR: Executable not found at expected path: %EXE_PATH%
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ✓ Executable created: %EXE_PATH%
|
||||||
|
|
||||||
|
REM Test that the executable runs (basic test)
|
||||||
|
echo Testing executable startup...
|
||||||
|
"%EXE_PATH%" --help >nul 2>&1
|
||||||
|
set EXIT_CODE=%errorlevel%
|
||||||
|
|
||||||
|
REM Check if it's the test main or app main
|
||||||
|
"%EXE_PATH%" --help 2>&1 | findstr /i "Google Test" >nul
|
||||||
|
if %errorlevel% equ 0 (
|
||||||
|
echo ERROR: Executable is running test main instead of app main!
|
||||||
|
pause
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo ✓ Executable runs correctly (exit code: %EXIT_CODE%)
|
||||||
|
|
||||||
|
REM Display file info
|
||||||
|
for %%A in ("%EXE_PATH%") do set FILE_SIZE=%%~zA
|
||||||
|
set /a FILE_SIZE_MB=%FILE_SIZE% / 1024 / 1024
|
||||||
|
echo Executable size: %FILE_SIZE_MB% MB
|
||||||
|
|
||||||
|
echo ========================================
|
||||||
|
echo ✓ YAZE Windows build completed successfully!
|
||||||
|
echo ========================================
|
||||||
|
echo.
|
||||||
|
echo Build Configuration: %BUILD_CONFIG%
|
||||||
|
echo Build Platform: %BUILD_PLATFORM%
|
||||||
|
echo Executable: %EXE_PATH%
|
||||||
|
echo.
|
||||||
|
echo To run YAZE:
|
||||||
|
echo %EXE_PATH%
|
||||||
|
echo.
|
||||||
|
echo To build other configurations:
|
||||||
|
echo %~nx0 Debug x64
|
||||||
|
echo %~nx0 Release x86
|
||||||
|
echo %~nx0 RelWithDebInfo ARM64
|
||||||
|
echo.
|
||||||
|
|
||||||
|
pause
|
||||||
168
scripts/build-windows.ps1
Normal file
168
scripts/build-windows.ps1
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
# PowerShell script to build YAZE on Windows
|
||||||
|
# This script sets up the environment and builds the project using Visual Studio
|
||||||
|
|
||||||
|
param(
|
||||||
|
[string]$Configuration = "Release",
|
||||||
|
[string]$Platform = "x64",
|
||||||
|
[switch]$Clean = $false,
|
||||||
|
[switch]$Verbose = $false
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
Write-Host "YAZE Windows Build Script" -ForegroundColor Cyan
|
||||||
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
|
||||||
|
# Check if we're in the right directory
|
||||||
|
if (-not (Test-Path "YAZE.sln")) {
|
||||||
|
Write-Error "YAZE.sln not found. Please run this script from the project root directory."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "✓ YAZE.sln found" -ForegroundColor Green
|
||||||
|
|
||||||
|
# Check for Visual Studio
|
||||||
|
Write-Host "Checking for Visual Studio..." -ForegroundColor Yellow
|
||||||
|
try {
|
||||||
|
$msbuildPath = Get-Command msbuild -ErrorAction Stop
|
||||||
|
Write-Host "✓ MSBuild found at: $($msbuildPath.Source)" -ForegroundColor Green
|
||||||
|
} catch {
|
||||||
|
Write-Error "MSBuild not found. Please install Visual Studio 2022 or later with the C++ development workload."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for vcpkg
|
||||||
|
Write-Host "Checking for vcpkg..." -ForegroundColor Yellow
|
||||||
|
if (-not (Test-Path "vcpkg.json")) {
|
||||||
|
Write-Error "vcpkg.json not found. Please ensure vcpkg is properly configured."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "✓ vcpkg.json found" -ForegroundColor Green
|
||||||
|
|
||||||
|
# Display build configuration
|
||||||
|
Write-Host "Build Configuration: $Configuration" -ForegroundColor Yellow
|
||||||
|
Write-Host "Build Platform: $Platform" -ForegroundColor Yellow
|
||||||
|
|
||||||
|
# Create build directories
|
||||||
|
Write-Host "Creating build directories..." -ForegroundColor Yellow
|
||||||
|
$directories = @("build", "build\bin", "build\obj")
|
||||||
|
foreach ($dir in $directories) {
|
||||||
|
if (-not (Test-Path $dir)) {
|
||||||
|
New-Item -ItemType Directory -Path $dir -Force | Out-Null
|
||||||
|
Write-Host "✓ Created directory: $dir" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clean build if requested
|
||||||
|
if ($Clean) {
|
||||||
|
Write-Host "Cleaning build directories..." -ForegroundColor Yellow
|
||||||
|
if (Test-Path "build\bin") {
|
||||||
|
Remove-Item -Recurse -Force "build\bin\*" -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
if (Test-Path "build\obj") {
|
||||||
|
Remove-Item -Recurse -Force "build\obj\*" -ErrorAction SilentlyContinue
|
||||||
|
}
|
||||||
|
Write-Host "✓ Build directories cleaned" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generate yaze_config.h if it doesn't exist
|
||||||
|
if (-not (Test-Path "yaze_config.h")) {
|
||||||
|
Write-Host "Generating yaze_config.h..." -ForegroundColor Yellow
|
||||||
|
if (Test-Path "src\yaze_config.h.in") {
|
||||||
|
Copy-Item "src\yaze_config.h.in" "yaze_config.h"
|
||||||
|
(Get-Content 'yaze_config.h') -replace '@yaze_VERSION_MAJOR@', '0' -replace '@yaze_VERSION_MINOR@', '3' -replace '@yaze_VERSION_PATCH@', '1' | Set-Content 'yaze_config.h'
|
||||||
|
Write-Host "✓ Generated yaze_config.h" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
Write-Warning "yaze_config.h.in not found, creating basic config"
|
||||||
|
@"
|
||||||
|
// yaze config file
|
||||||
|
#define YAZE_VERSION_MAJOR 0
|
||||||
|
#define YAZE_VERSION_MINOR 3
|
||||||
|
#define YAZE_VERSION_PATCH 1
|
||||||
|
"@ | Out-File -FilePath "yaze_config.h" -Encoding UTF8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Build using MSBuild
|
||||||
|
Write-Host "Building with MSBuild..." -ForegroundColor Yellow
|
||||||
|
|
||||||
|
$msbuildArgs = @(
|
||||||
|
"YAZE.sln"
|
||||||
|
"/p:Configuration=$Configuration"
|
||||||
|
"/p:Platform=$Platform"
|
||||||
|
"/p:VcpkgEnabled=true"
|
||||||
|
"/p:VcpkgManifestInstall=true"
|
||||||
|
"/m" # Multi-processor build
|
||||||
|
)
|
||||||
|
|
||||||
|
if ($Verbose) {
|
||||||
|
$msbuildArgs += "/verbosity:detailed"
|
||||||
|
} else {
|
||||||
|
$msbuildArgs += "/verbosity:minimal"
|
||||||
|
}
|
||||||
|
|
||||||
|
$msbuildCommand = "msbuild $($msbuildArgs -join ' ')"
|
||||||
|
Write-Host "Command: $msbuildCommand" -ForegroundColor Gray
|
||||||
|
|
||||||
|
try {
|
||||||
|
& msbuild @msbuildArgs
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
throw "MSBuild failed with exit code $LASTEXITCODE"
|
||||||
|
}
|
||||||
|
Write-Host "✓ Build completed successfully" -ForegroundColor Green
|
||||||
|
} catch {
|
||||||
|
Write-Error "Build failed: $_"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Verify executable was created
|
||||||
|
$exePath = "build\bin\$Configuration\yaze.exe"
|
||||||
|
if (-not (Test-Path $exePath)) {
|
||||||
|
Write-Error "Executable not found at expected path: $exePath"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "✓ Executable created: $exePath" -ForegroundColor Green
|
||||||
|
|
||||||
|
# Test that the executable runs (basic test)
|
||||||
|
Write-Host "Testing executable startup..." -ForegroundColor Yellow
|
||||||
|
try {
|
||||||
|
$testResult = & $exePath --help 2>&1
|
||||||
|
$exitCode = $LASTEXITCODE
|
||||||
|
|
||||||
|
# Check if it's the test main or app main
|
||||||
|
if ($testResult -match "Google Test|gtest") {
|
||||||
|
Write-Error "Executable is running test main instead of app main!"
|
||||||
|
Write-Host "Output: $testResult" -ForegroundColor Red
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "✓ Executable runs correctly (exit code: $exitCode)" -ForegroundColor Green
|
||||||
|
} catch {
|
||||||
|
Write-Warning "Could not test executable: $_"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Display file info
|
||||||
|
$exeInfo = Get-Item $exePath
|
||||||
|
$fileSizeMB = [math]::Round($exeInfo.Length / 1MB, 2)
|
||||||
|
Write-Host "Executable size: $fileSizeMB MB" -ForegroundColor Cyan
|
||||||
|
|
||||||
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
Write-Host "✓ YAZE Windows build completed successfully!" -ForegroundColor Green
|
||||||
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "Build Configuration: $Configuration" -ForegroundColor White
|
||||||
|
Write-Host "Build Platform: $Platform" -ForegroundColor White
|
||||||
|
Write-Host "Executable: $exePath" -ForegroundColor White
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "To run YAZE:" -ForegroundColor Yellow
|
||||||
|
Write-Host " $exePath" -ForegroundColor White
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "To build other configurations:" -ForegroundColor Yellow
|
||||||
|
Write-Host " .\scripts\build-windows.ps1 -Configuration Debug -Platform x64" -ForegroundColor White
|
||||||
|
Write-Host " .\scripts\build-windows.ps1 -Configuration Release -Platform x86" -ForegroundColor White
|
||||||
|
Write-Host " .\scripts\build-windows.ps1 -Configuration RelWithDebInfo -Platform ARM64" -ForegroundColor White
|
||||||
|
Write-Host " .\scripts\build-windows.ps1 -Clean" -ForegroundColor White
|
||||||
|
Write-Host ""
|
||||||
533
scripts/generate-vs-projects-fixed.ps1
Normal file
533
scripts/generate-vs-projects-fixed.ps1
Normal file
@@ -0,0 +1,533 @@
|
|||||||
|
# PowerShell script to generate proper Visual Studio project files for YAZE
|
||||||
|
# This script creates a comprehensive .vcxproj file with all necessary source files
|
||||||
|
|
||||||
|
param(
|
||||||
|
[string]$ProjectRoot = ".",
|
||||||
|
[string]$OutputDir = "."
|
||||||
|
)
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
Write-Host "Generating Visual Studio project files for YAZE..." -ForegroundColor Green
|
||||||
|
|
||||||
|
# Source file lists (from CMake files)
|
||||||
|
$AppCoreSrc = @(
|
||||||
|
"app/core/controller.cc",
|
||||||
|
"app/emu/emulator.cc",
|
||||||
|
"app/core/project.cc",
|
||||||
|
"app/core/window.cc",
|
||||||
|
"app/core/asar_wrapper.cc",
|
||||||
|
"app/core/platform/font_loader.cc",
|
||||||
|
"app/core/platform/clipboard.cc",
|
||||||
|
"app/core/platform/file_dialog.cc"
|
||||||
|
)
|
||||||
|
|
||||||
|
$AppEmuSrc = @(
|
||||||
|
"app/emu/audio/apu.cc",
|
||||||
|
"app/emu/audio/spc700.cc",
|
||||||
|
"app/emu/audio/dsp.cc",
|
||||||
|
"app/emu/audio/internal/addressing.cc",
|
||||||
|
"app/emu/audio/internal/instructions.cc",
|
||||||
|
"app/emu/cpu/internal/addressing.cc",
|
||||||
|
"app/emu/cpu/internal/instructions.cc",
|
||||||
|
"app/emu/cpu/cpu.cc",
|
||||||
|
"app/emu/video/ppu.cc",
|
||||||
|
"app/emu/memory/dma.cc",
|
||||||
|
"app/emu/memory/memory.cc",
|
||||||
|
"app/emu/snes.cc"
|
||||||
|
)
|
||||||
|
|
||||||
|
$AppEditorSrc = @(
|
||||||
|
"app/editor/editor_manager.cc",
|
||||||
|
"app/editor/dungeon/dungeon_editor.cc",
|
||||||
|
"app/editor/dungeon/dungeon_room_selector.cc",
|
||||||
|
"app/editor/dungeon/dungeon_canvas_viewer.cc",
|
||||||
|
"app/editor/dungeon/dungeon_object_selector.cc",
|
||||||
|
"app/editor/dungeon/dungeon_toolset.cc",
|
||||||
|
"app/editor/dungeon/dungeon_object_interaction.cc",
|
||||||
|
"app/editor/dungeon/dungeon_renderer.cc",
|
||||||
|
"app/editor/dungeon/dungeon_room_loader.cc",
|
||||||
|
"app/editor/dungeon/dungeon_usage_tracker.cc",
|
||||||
|
"app/editor/overworld/overworld_editor.cc",
|
||||||
|
"app/editor/overworld/overworld_editor_manager.cc",
|
||||||
|
"app/editor/sprite/sprite_editor.cc",
|
||||||
|
"app/editor/music/music_editor.cc",
|
||||||
|
"app/editor/message/message_editor.cc",
|
||||||
|
"app/editor/message/message_data.cc",
|
||||||
|
"app/editor/message/message_preview.cc",
|
||||||
|
"app/editor/code/assembly_editor.cc",
|
||||||
|
"app/editor/graphics/screen_editor.cc",
|
||||||
|
"app/editor/graphics/graphics_editor.cc",
|
||||||
|
"app/editor/graphics/palette_editor.cc",
|
||||||
|
"app/editor/overworld/tile16_editor.cc",
|
||||||
|
"app/editor/overworld/map_properties.cc",
|
||||||
|
"app/editor/graphics/gfx_group_editor.cc",
|
||||||
|
"app/editor/overworld/entity.cc",
|
||||||
|
"app/editor/system/settings_editor.cc",
|
||||||
|
"app/editor/system/command_manager.cc",
|
||||||
|
"app/editor/system/extension_manager.cc",
|
||||||
|
"app/editor/system/shortcut_manager.cc",
|
||||||
|
"app/editor/system/popup_manager.cc",
|
||||||
|
"app/test/test_manager.cc"
|
||||||
|
)
|
||||||
|
|
||||||
|
$AppGfxSrc = @(
|
||||||
|
"app/gfx/arena.cc",
|
||||||
|
"app/gfx/background_buffer.cc",
|
||||||
|
"app/gfx/bitmap.cc",
|
||||||
|
"app/gfx/compression.cc",
|
||||||
|
"app/gfx/scad_format.cc",
|
||||||
|
"app/gfx/snes_palette.cc",
|
||||||
|
"app/gfx/snes_tile.cc",
|
||||||
|
"app/gfx/snes_color.cc",
|
||||||
|
"app/gfx/tilemap.cc"
|
||||||
|
)
|
||||||
|
|
||||||
|
$AppZelda3Src = @(
|
||||||
|
"app/zelda3/hyrule_magic.cc",
|
||||||
|
"app/zelda3/overworld/overworld_map.cc",
|
||||||
|
"app/zelda3/overworld/overworld.cc",
|
||||||
|
"app/zelda3/screen/inventory.cc",
|
||||||
|
"app/zelda3/screen/title_screen.cc",
|
||||||
|
"app/zelda3/screen/dungeon_map.cc",
|
||||||
|
"app/zelda3/sprite/sprite.cc",
|
||||||
|
"app/zelda3/sprite/sprite_builder.cc",
|
||||||
|
"app/zelda3/music/tracker.cc",
|
||||||
|
"app/zelda3/dungeon/room.cc",
|
||||||
|
"app/zelda3/dungeon/room_object.cc",
|
||||||
|
"app/zelda3/dungeon/object_parser.cc",
|
||||||
|
"app/zelda3/dungeon/object_renderer.cc",
|
||||||
|
"app/zelda3/dungeon/room_layout.cc",
|
||||||
|
"app/zelda3/dungeon/dungeon_editor_system.cc",
|
||||||
|
"app/zelda3/dungeon/dungeon_object_editor.cc"
|
||||||
|
)
|
||||||
|
|
||||||
|
$GuiSrc = @(
|
||||||
|
"app/gui/modules/asset_browser.cc",
|
||||||
|
"app/gui/modules/text_editor.cc",
|
||||||
|
"app/gui/canvas.cc",
|
||||||
|
"app/gui/canvas_utils.cc",
|
||||||
|
"app/gui/enhanced_palette_editor.cc",
|
||||||
|
"app/gui/input.cc",
|
||||||
|
"app/gui/style.cc",
|
||||||
|
"app/gui/color.cc",
|
||||||
|
"app/gui/zeml.cc",
|
||||||
|
"app/gui/theme_manager.cc",
|
||||||
|
"app/gui/background_renderer.cc"
|
||||||
|
)
|
||||||
|
|
||||||
|
$UtilSrc = @(
|
||||||
|
"util/bps.cc",
|
||||||
|
"util/flag.cc",
|
||||||
|
"util/hex.cc"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Combine all source files
|
||||||
|
$AllSourceFiles = @(
|
||||||
|
"yaze.cc",
|
||||||
|
"app/main.cc",
|
||||||
|
"app/rom.cc"
|
||||||
|
) + $AppCoreSrc + $AppEmuSrc + $AppEditorSrc + $AppGfxSrc + $AppZelda3Src + $GuiSrc + $UtilSrc
|
||||||
|
|
||||||
|
# Header files
|
||||||
|
$HeaderFiles = @(
|
||||||
|
"incl/yaze.h",
|
||||||
|
"incl/zelda.h",
|
||||||
|
"src/yaze_config.h.in"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Generate the .vcxproj file
|
||||||
|
$VcxprojContent = @"
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x86">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x86">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="RelWithDebInfo|x64">
|
||||||
|
<Configuration>RelWithDebInfo</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="RelWithDebInfo|x86">
|
||||||
|
<Configuration>RelWithDebInfo</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="RelWithDebInfo|ARM64">
|
||||||
|
<Configuration>RelWithDebInfo</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="MinSizeRel|x64">
|
||||||
|
<Configuration>MinSizeRel</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="MinSizeRel|x86">
|
||||||
|
<Configuration>MinSizeRel</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="MinSizeRel|ARM64">
|
||||||
|
<Configuration>MinSizeRel</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>17.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{B2C3D4E5-F6G7-8901-BCDE-F23456789012}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>YAZE</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
<ProjectName>YAZE</ProjectName>
|
||||||
|
<VcpkgEnabled>true</VcpkgEnabled>
|
||||||
|
<VcpkgManifestInstall>true</VcpkgManifestInstall>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="`$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Debug|x86'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Release|x86'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='RelWithDebInfo|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='RelWithDebInfo|x86'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='RelWithDebInfo|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='MinSizeRel|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='MinSizeRel|x86'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='MinSizeRel|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="`$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='Debug|x86'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='Debug|ARM64'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='Release|x86'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='Release|ARM64'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='RelWithDebInfo|x64'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='RelWithDebInfo|x86'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='RelWithDebInfo|ARM64'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='MinSizeRel|x64'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='MinSizeRel|x86'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'`$(Configuration)|`$(Platform)'=='MinSizeRel|ARM64'">
|
||||||
|
<Import Project="`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props" Condition="exists('`$(UserRootDir)\Microsoft.Cpp.`$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Debug|x86'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Debug|ARM64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Release|x86'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='Release|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='RelWithDebInfo|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='RelWithDebInfo|x86'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='RelWithDebInfo|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='MinSizeRel|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='MinSizeRel|x86'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'`$(Configuration)|`$(Platform)'=='MinSizeRel|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>`$(SolutionDir)build\bin\`$(Configuration)\</OutDir>
|
||||||
|
<IntDir>`$(SolutionDir)build\obj\`$(Configuration)\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
"@
|
||||||
|
|
||||||
|
# Add compiler and linker settings for all configurations
|
||||||
|
$Configurations = @("Debug", "Release", "RelWithDebInfo", "MinSizeRel")
|
||||||
|
$Platforms = @("x64", "x86", "ARM64")
|
||||||
|
|
||||||
|
foreach ($Config in $Configurations) {
|
||||||
|
foreach ($Platform in $Platforms) {
|
||||||
|
$IsDebug = ($Config -eq "Debug")
|
||||||
|
$DebugFlags = if ($IsDebug) { "_DEBUG;_CONSOLE;%(PreprocessorDefinitions)" } else { "NDEBUG;_CONSOLE;%(PreprocessorDefinitions)" }
|
||||||
|
$LinkIncremental = if ($IsDebug) { "true" } else { "false" }
|
||||||
|
$GenerateDebugInfo = if ($Config -eq "MinSizeRel") { "false" } else { "true" }
|
||||||
|
|
||||||
|
$VcxprojContent += @"
|
||||||
|
|
||||||
|
<ItemDefinitionGroup Condition="'`$(Configuration)|`$(Platform)'=='$Config|$Platform'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>$DebugFlags</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>`$(ProjectDir)src;`$(ProjectDir)incl;`$(ProjectDir)src\lib;`$(ProjectDir)src\lib\asar\src;`$(ProjectDir)src\lib\asar\src\asar;`$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;`$(ProjectDir)src\lib\imgui;`$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreaded$($IsDebug ? "Debug" : "")DLL</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>$GenerateDebugInfo</GenerateDebugInformation>
|
||||||
|
<EnableCOMDATFolding>$($IsDebug ? "false" : "true")</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>$($IsDebug ? "false" : "true")</OptimizeReferences>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
"@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add source files
|
||||||
|
$VcxprojContent += @"
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
"@
|
||||||
|
|
||||||
|
foreach ($Header in $HeaderFiles) {
|
||||||
|
$VcxprojContent += " <ClInclude Include=`"$Header`" />`n"
|
||||||
|
}
|
||||||
|
|
||||||
|
$VcxprojContent += @"
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
"@
|
||||||
|
|
||||||
|
foreach ($Source in $AllSourceFiles) {
|
||||||
|
$VcxprojContent += " <ClCompile Include=`"src\$Source`" />`n"
|
||||||
|
}
|
||||||
|
|
||||||
|
$VcxprojContent += @"
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="CMakeLists.txt" />
|
||||||
|
<None Include="CMakePresets.json" />
|
||||||
|
<None Include="vcpkg.json" />
|
||||||
|
<None Include="README.md" />
|
||||||
|
<None Include="LICENSE" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="`$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
|
"@
|
||||||
|
|
||||||
|
# Write the .vcxproj file
|
||||||
|
$VcxprojPath = Join-Path $OutputDir "YAZE.vcxproj"
|
||||||
|
$VcxprojContent | Out-File -FilePath $VcxprojPath -Encoding UTF8
|
||||||
|
|
||||||
|
Write-Host "Generated: $VcxprojPath" -ForegroundColor Green
|
||||||
|
|
||||||
|
# Generate a simple solution file
|
||||||
|
$SolutionContent = @"
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.0.31903.59
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "YAZE", "YAZE.vcxproj", "{B2C3D4E5-F6G7-8901-BCDE-F23456789012}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Debug|ARM64 = Debug|ARM64
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
Release|ARM64 = Release|ARM64
|
||||||
|
RelWithDebInfo|x64 = RelWithDebInfo|x64
|
||||||
|
RelWithDebInfo|x86 = RelWithDebInfo|x86
|
||||||
|
RelWithDebInfo|ARM64 = RelWithDebInfo|ARM64
|
||||||
|
MinSizeRel|x64 = MinSizeRel|x64
|
||||||
|
MinSizeRel|x86 = MinSizeRel|x86
|
||||||
|
MinSizeRel|ARM64 = MinSizeRel|ARM64
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x64.Build.0 = Release|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x86.Build.0 = Release|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|ARM64.Build.0 = RelWithDebInfo|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x86.Build.0 = MinSizeRel|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|ARM64.ActiveCfg = MinSizeRel|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|ARM64.Build.0 = MinSizeRel|ARM64
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
|
"@
|
||||||
|
|
||||||
|
$SolutionPath = Join-Path $OutputDir "YAZE.sln"
|
||||||
|
$SolutionContent | Out-File -FilePath $SolutionPath -Encoding UTF8
|
||||||
|
|
||||||
|
Write-Host "Generated: $SolutionPath" -ForegroundColor Green
|
||||||
|
Write-Host "Visual Studio project files generated successfully!" -ForegroundColor Green
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "To build:" -ForegroundColor Yellow
|
||||||
|
Write-Host "1. Open YAZE.sln in Visual Studio 2022" -ForegroundColor White
|
||||||
|
Write-Host "2. Ensure vcpkg is installed and configured" -ForegroundColor White
|
||||||
|
Write-Host "3. Select your desired configuration (Debug/Release) and platform (x64/x86/ARM64)" -ForegroundColor White
|
||||||
|
Write-Host "4. Build the solution (Ctrl+Shift+B)" -ForegroundColor White
|
||||||
540
scripts/generate-vs-projects.py
Normal file
540
scripts/generate-vs-projects.py
Normal file
@@ -0,0 +1,540 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
Python script to generate proper Visual Studio project files for YAZE
|
||||||
|
This script creates a comprehensive .vcxproj file with all necessary source files
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
def generate_vcxproj():
|
||||||
|
"""Generate the YAZE.vcxproj file with all source files"""
|
||||||
|
|
||||||
|
# Source file lists (from CMake files)
|
||||||
|
app_core_src = [
|
||||||
|
"app/core/controller.cc",
|
||||||
|
"app/emu/emulator.cc",
|
||||||
|
"app/core/project.cc",
|
||||||
|
"app/core/window.cc",
|
||||||
|
"app/core/asar_wrapper.cc",
|
||||||
|
"app/core/platform/font_loader.cc",
|
||||||
|
"app/core/platform/clipboard.cc",
|
||||||
|
"app/core/platform/file_dialog.cc"
|
||||||
|
]
|
||||||
|
|
||||||
|
app_emu_src = [
|
||||||
|
"app/emu/audio/apu.cc",
|
||||||
|
"app/emu/audio/spc700.cc",
|
||||||
|
"app/emu/audio/dsp.cc",
|
||||||
|
"app/emu/audio/internal/addressing.cc",
|
||||||
|
"app/emu/audio/internal/instructions.cc",
|
||||||
|
"app/emu/cpu/internal/addressing.cc",
|
||||||
|
"app/emu/cpu/internal/instructions.cc",
|
||||||
|
"app/emu/cpu/cpu.cc",
|
||||||
|
"app/emu/video/ppu.cc",
|
||||||
|
"app/emu/memory/dma.cc",
|
||||||
|
"app/emu/memory/memory.cc",
|
||||||
|
"app/emu/snes.cc"
|
||||||
|
]
|
||||||
|
|
||||||
|
app_editor_src = [
|
||||||
|
"app/editor/editor_manager.cc",
|
||||||
|
"app/editor/dungeon/dungeon_editor.cc",
|
||||||
|
"app/editor/dungeon/dungeon_room_selector.cc",
|
||||||
|
"app/editor/dungeon/dungeon_canvas_viewer.cc",
|
||||||
|
"app/editor/dungeon/dungeon_object_selector.cc",
|
||||||
|
"app/editor/dungeon/dungeon_toolset.cc",
|
||||||
|
"app/editor/dungeon/dungeon_object_interaction.cc",
|
||||||
|
"app/editor/dungeon/dungeon_renderer.cc",
|
||||||
|
"app/editor/dungeon/dungeon_room_loader.cc",
|
||||||
|
"app/editor/dungeon/dungeon_usage_tracker.cc",
|
||||||
|
"app/editor/overworld/overworld_editor.cc",
|
||||||
|
"app/editor/overworld/overworld_editor_manager.cc",
|
||||||
|
"app/editor/sprite/sprite_editor.cc",
|
||||||
|
"app/editor/music/music_editor.cc",
|
||||||
|
"app/editor/message/message_editor.cc",
|
||||||
|
"app/editor/message/message_data.cc",
|
||||||
|
"app/editor/message/message_preview.cc",
|
||||||
|
"app/editor/code/assembly_editor.cc",
|
||||||
|
"app/editor/graphics/screen_editor.cc",
|
||||||
|
"app/editor/graphics/graphics_editor.cc",
|
||||||
|
"app/editor/graphics/palette_editor.cc",
|
||||||
|
"app/editor/overworld/tile16_editor.cc",
|
||||||
|
"app/editor/overworld/map_properties.cc",
|
||||||
|
"app/editor/graphics/gfx_group_editor.cc",
|
||||||
|
"app/editor/overworld/entity.cc",
|
||||||
|
"app/editor/system/settings_editor.cc",
|
||||||
|
"app/editor/system/command_manager.cc",
|
||||||
|
"app/editor/system/extension_manager.cc",
|
||||||
|
"app/editor/system/shortcut_manager.cc",
|
||||||
|
"app/editor/system/popup_manager.cc",
|
||||||
|
"app/test/test_manager.cc"
|
||||||
|
]
|
||||||
|
|
||||||
|
app_gfx_src = [
|
||||||
|
"app/gfx/arena.cc",
|
||||||
|
"app/gfx/background_buffer.cc",
|
||||||
|
"app/gfx/bitmap.cc",
|
||||||
|
"app/gfx/compression.cc",
|
||||||
|
"app/gfx/scad_format.cc",
|
||||||
|
"app/gfx/snes_palette.cc",
|
||||||
|
"app/gfx/snes_tile.cc",
|
||||||
|
"app/gfx/snes_color.cc",
|
||||||
|
"app/gfx/tilemap.cc"
|
||||||
|
]
|
||||||
|
|
||||||
|
app_zelda3_src = [
|
||||||
|
"app/zelda3/hyrule_magic.cc",
|
||||||
|
"app/zelda3/overworld/overworld_map.cc",
|
||||||
|
"app/zelda3/overworld/overworld.cc",
|
||||||
|
"app/zelda3/screen/inventory.cc",
|
||||||
|
"app/zelda3/screen/title_screen.cc",
|
||||||
|
"app/zelda3/screen/dungeon_map.cc",
|
||||||
|
"app/zelda3/sprite/sprite.cc",
|
||||||
|
"app/zelda3/sprite/sprite_builder.cc",
|
||||||
|
"app/zelda3/music/tracker.cc",
|
||||||
|
"app/zelda3/dungeon/room.cc",
|
||||||
|
"app/zelda3/dungeon/room_object.cc",
|
||||||
|
"app/zelda3/dungeon/object_parser.cc",
|
||||||
|
"app/zelda3/dungeon/object_renderer.cc",
|
||||||
|
"app/zelda3/dungeon/room_layout.cc",
|
||||||
|
"app/zelda3/dungeon/dungeon_editor_system.cc",
|
||||||
|
"app/zelda3/dungeon/dungeon_object_editor.cc"
|
||||||
|
]
|
||||||
|
|
||||||
|
gui_src = [
|
||||||
|
"app/gui/modules/asset_browser.cc",
|
||||||
|
"app/gui/modules/text_editor.cc",
|
||||||
|
"app/gui/canvas.cc",
|
||||||
|
"app/gui/canvas_utils.cc",
|
||||||
|
"app/gui/enhanced_palette_editor.cc",
|
||||||
|
"app/gui/input.cc",
|
||||||
|
"app/gui/style.cc",
|
||||||
|
"app/gui/color.cc",
|
||||||
|
"app/gui/zeml.cc",
|
||||||
|
"app/gui/theme_manager.cc",
|
||||||
|
"app/gui/background_renderer.cc"
|
||||||
|
]
|
||||||
|
|
||||||
|
util_src = [
|
||||||
|
"util/bps.cc",
|
||||||
|
"util/flag.cc",
|
||||||
|
"util/hex.cc"
|
||||||
|
]
|
||||||
|
|
||||||
|
# Combine all source files
|
||||||
|
all_source_files = (
|
||||||
|
["yaze.cc", "app/main.cc", "app/rom.cc"] +
|
||||||
|
app_core_src + app_emu_src + app_editor_src +
|
||||||
|
app_gfx_src + app_zelda3_src + gui_src + util_src
|
||||||
|
)
|
||||||
|
|
||||||
|
# Header files
|
||||||
|
header_files = [
|
||||||
|
"incl/yaze.h",
|
||||||
|
"incl/zelda.h",
|
||||||
|
"src/yaze_config.h.in"
|
||||||
|
]
|
||||||
|
|
||||||
|
# Generate the .vcxproj file content
|
||||||
|
vcxproj_content = '''<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="17.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x86">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|ARM64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x86">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|ARM64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="RelWithDebInfo|x64">
|
||||||
|
<Configuration>RelWithDebInfo</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="RelWithDebInfo|x86">
|
||||||
|
<Configuration>RelWithDebInfo</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="RelWithDebInfo|ARM64">
|
||||||
|
<Configuration>RelWithDebInfo</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="MinSizeRel|x64">
|
||||||
|
<Configuration>MinSizeRel</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="MinSizeRel|x86">
|
||||||
|
<Configuration>MinSizeRel</Configuration>
|
||||||
|
<Platform>x86</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="MinSizeRel|ARM64">
|
||||||
|
<Configuration>MinSizeRel</Configuration>
|
||||||
|
<Platform>ARM64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>17.0</VCProjectVersion>
|
||||||
|
<ProjectGuid>{B2C3D4E5-F6G7-8901-BCDE-F23456789012}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>YAZE</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
<ProjectName>YAZE</ProjectName>
|
||||||
|
<VcpkgEnabled>true</VcpkgEnabled>
|
||||||
|
<VcpkgManifestInstall>true</VcpkgManifestInstall>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x86'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x86'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|ARM64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x86'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x86'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|ARM64'">
|
||||||
|
<Import Project="$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x86'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x86'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|ARM64'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OutDir>$(SolutionDir)build\\bin\\$(Configuration)\\</OutDir>
|
||||||
|
<IntDir>$(SolutionDir)build\\obj\\$(Configuration)\\</IntDir>
|
||||||
|
</PropertyGroup>'''
|
||||||
|
|
||||||
|
# Add compiler and linker settings for all configurations
|
||||||
|
configurations = ["Debug", "Release", "RelWithDebInfo", "MinSizeRel"]
|
||||||
|
platforms = ["x64", "x86", "ARM64"]
|
||||||
|
|
||||||
|
for config in configurations:
|
||||||
|
for platform in platforms:
|
||||||
|
is_debug = (config == "Debug")
|
||||||
|
debug_flags = "_DEBUG;_CONSOLE;%(PreprocessorDefinitions)" if is_debug else "NDEBUG;_CONSOLE;%(PreprocessorDefinitions)"
|
||||||
|
link_incremental = "true" if is_debug else "false"
|
||||||
|
generate_debug_info = "false" if config == "MinSizeRel" else "true"
|
||||||
|
|
||||||
|
vcxproj_content += f'''
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='{config}|{platform}'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>{debug_flags}</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\\lib;$(ProjectDir)src\\lib\\asar\\src;$(ProjectDir)src\\lib\\asar\\src\\asar;$(ProjectDir)src\\lib\\asar\\src\\asar-dll-bindings\\c;$(ProjectDir)src\\lib\\imgui;$(ProjectDir)src\\lib\\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreaded{"Debug" if is_debug else ""}DLL</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>{generate_debug_info}</GenerateDebugInformation>
|
||||||
|
<EnableCOMDATFolding>{"false" if is_debug else "true"}</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>{"false" if is_debug else "true"}</OptimizeReferences>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>'''
|
||||||
|
|
||||||
|
# Add source files
|
||||||
|
vcxproj_content += '''
|
||||||
|
<ItemGroup>
|
||||||
|
'''
|
||||||
|
for header in header_files:
|
||||||
|
vcxproj_content += f' <ClInclude Include="{header}" />\n'
|
||||||
|
|
||||||
|
vcxproj_content += ''' </ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
'''
|
||||||
|
for source in all_source_files:
|
||||||
|
vcxproj_content += f' <ClCompile Include="src\\{source}" />\n'
|
||||||
|
|
||||||
|
vcxproj_content += ''' </ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="CMakeLists.txt" />
|
||||||
|
<None Include="CMakePresets.json" />
|
||||||
|
<None Include="vcpkg.json" />
|
||||||
|
<None Include="README.md" />
|
||||||
|
<None Include="LICENSE" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>'''
|
||||||
|
|
||||||
|
return vcxproj_content
|
||||||
|
|
||||||
|
def generate_solution():
|
||||||
|
"""Generate the YAZE.sln file"""
|
||||||
|
return '''Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.0.31903.59
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "YAZE", "YAZE.vcxproj", "{B2C3D4E5-F6G7-8901-BCDE-F23456789012}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Debug|ARM64 = Debug|ARM64
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
Release|ARM64 = Release|ARM64
|
||||||
|
RelWithDebInfo|x64 = RelWithDebInfo|x64
|
||||||
|
RelWithDebInfo|x86 = RelWithDebInfo|x86
|
||||||
|
RelWithDebInfo|ARM64 = RelWithDebInfo|ARM64
|
||||||
|
MinSizeRel|x64 = MinSizeRel|x64
|
||||||
|
MinSizeRel|x86 = MinSizeRel|x86
|
||||||
|
MinSizeRel|ARM64 = MinSizeRel|ARM64
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|ARM64.ActiveCfg = Debug|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Debug|ARM64.Build.0 = Debug|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x64.Build.0 = Release|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|x86.Build.0 = Release|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|ARM64.ActiveCfg = Release|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.Release|ARM64.Build.0 = Release|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x64.ActiveCfg = RelWithDebInfo|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x64.Build.0 = RelWithDebInfo|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x86.ActiveCfg = RelWithDebInfo|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|x86.Build.0 = RelWithDebInfo|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|ARM64.ActiveCfg = RelWithDebInfo|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.RelWithDebInfo|ARM64.Build.0 = RelWithDebInfo|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x64.ActiveCfg = MinSizeRel|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x64.Build.0 = MinSizeRel|x64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x86.ActiveCfg = MinSizeRel|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|x86.Build.0 = MinSizeRel|x86
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|ARM64.ActiveCfg = MinSizeRel|ARM64
|
||||||
|
{B2C3D4E5-F6G7-8901-BCDE-F23456789012}.MinSizeRel|ARM64.Build.0 = MinSizeRel|ARM64
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal'''
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""Main function to generate Visual Studio project files"""
|
||||||
|
print("Generating Visual Studio project files for YAZE...")
|
||||||
|
|
||||||
|
# Get the project root directory
|
||||||
|
script_dir = Path(__file__).parent
|
||||||
|
project_root = script_dir.parent
|
||||||
|
|
||||||
|
# Generate .vcxproj file
|
||||||
|
vcxproj_content = generate_vcxproj()
|
||||||
|
vcxproj_path = project_root / "YAZE.vcxproj"
|
||||||
|
|
||||||
|
with open(vcxproj_path, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(vcxproj_content)
|
||||||
|
|
||||||
|
print(f"Generated: {vcxproj_path}")
|
||||||
|
|
||||||
|
# Generate .sln file
|
||||||
|
solution_content = generate_solution()
|
||||||
|
solution_path = project_root / "YAZE.sln"
|
||||||
|
|
||||||
|
with open(solution_path, 'w', encoding='utf-8') as f:
|
||||||
|
f.write(solution_content)
|
||||||
|
|
||||||
|
print(f"Generated: {solution_path}")
|
||||||
|
|
||||||
|
print("Visual Studio project files generated successfully!")
|
||||||
|
print("")
|
||||||
|
print("To build:")
|
||||||
|
print("1. Open YAZE.sln in Visual Studio 2022")
|
||||||
|
print("2. Ensure vcpkg is installed and configured")
|
||||||
|
print("3. Select your desired configuration (Debug/Release) and platform (x64/x86/ARM64)")
|
||||||
|
print("4. Build the solution (Ctrl+Shift+B)")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -1,115 +1,180 @@
|
|||||||
# Setup script for Windows development environment
|
# PowerShell script to set up Windows development environment for YAZE
|
||||||
# This script installs the necessary tools for YAZE development on Windows
|
# This script helps developers get started with building YAZE on Windows
|
||||||
|
|
||||||
param(
|
param(
|
||||||
[switch]$Force = $false
|
[switch]$SkipVcpkg = $false,
|
||||||
|
[switch]$SkipVS = $false
|
||||||
)
|
)
|
||||||
|
|
||||||
Write-Host "Setting up Windows development environment for YAZE..." -ForegroundColor Green
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
# Check if we're on Windows
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
if ($env:OS -ne "Windows_NT") {
|
Write-Host "YAZE Windows Development Setup" -ForegroundColor Cyan
|
||||||
Write-Host "This script is designed for Windows only." -ForegroundColor Red
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
|
||||||
|
# Check if we're in the right directory
|
||||||
|
if (-not (Test-Path "YAZE.sln")) {
|
||||||
|
Write-Error "YAZE.sln not found. Please run this script from the project root directory."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check if running as administrator
|
Write-Host "✓ Found YAZE project files" -ForegroundColor Green
|
||||||
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
|
|
||||||
if (-not $isAdmin) {
|
|
||||||
Write-Host "This script requires administrator privileges to install software." -ForegroundColor Yellow
|
|
||||||
Write-Host "Please run PowerShell as Administrator and try again." -ForegroundColor Yellow
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Install Chocolatey if not present
|
|
||||||
if (-not (Get-Command choco -ErrorAction SilentlyContinue)) {
|
|
||||||
Write-Host "Installing Chocolatey package manager..." -ForegroundColor Yellow
|
|
||||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
|
||||||
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
|
||||||
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
|
|
||||||
|
|
||||||
# Refresh environment variables
|
|
||||||
$env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User")
|
|
||||||
|
|
||||||
Write-Host "Chocolatey installed successfully" -ForegroundColor Green
|
|
||||||
} else {
|
|
||||||
Write-Host "Chocolatey already installed" -ForegroundColor Green
|
|
||||||
}
|
|
||||||
|
|
||||||
# Install required tools
|
|
||||||
$tools = @(
|
|
||||||
@{Name="cmake"; Description="CMake build system"},
|
|
||||||
@{Name="git"; Description="Git version control"},
|
|
||||||
@{Name="ninja"; Description="Ninja build system"},
|
|
||||||
@{Name="python3"; Description="Python 3 for scripts"}
|
|
||||||
)
|
|
||||||
|
|
||||||
foreach ($tool in $tools) {
|
|
||||||
Write-Host "Checking $($tool.Description)..." -ForegroundColor Cyan
|
|
||||||
|
|
||||||
$installed = $false
|
|
||||||
if ($tool.Name -eq "cmake") {
|
|
||||||
$installed = Get-Command cmake -ErrorAction SilentlyContinue
|
|
||||||
} elseif ($tool.Name -eq "git") {
|
|
||||||
$installed = Get-Command git -ErrorAction SilentlyContinue
|
|
||||||
} elseif ($tool.Name -eq "ninja") {
|
|
||||||
$installed = Get-Command ninja -ErrorAction SilentlyContinue
|
|
||||||
} elseif ($tool.Name -eq "python3") {
|
|
||||||
$installed = Get-Command python3 -ErrorAction SilentlyContinue
|
|
||||||
}
|
|
||||||
|
|
||||||
if (-not $installed -or $Force) {
|
|
||||||
Write-Host "Installing $($tool.Description)..." -ForegroundColor Yellow
|
|
||||||
choco install -y $tool.Name
|
|
||||||
if ($LASTEXITCODE -eq 0) {
|
|
||||||
Write-Host "$($tool.Description) installed successfully" -ForegroundColor Green
|
|
||||||
} else {
|
|
||||||
Write-Host "Failed to install $($tool.Description)" -ForegroundColor Red
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Write-Host "$($tool.Description) already installed" -ForegroundColor Green
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Refresh environment variables
|
|
||||||
$env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User")
|
|
||||||
|
|
||||||
# Verify installations
|
|
||||||
Write-Host "`nVerifying installations..." -ForegroundColor Cyan
|
|
||||||
|
|
||||||
$toolsToVerify = @("cmake", "git", "ninja", "python3")
|
|
||||||
foreach ($tool in $toolsToVerify) {
|
|
||||||
$path = Get-Command $tool -ErrorAction SilentlyContinue
|
|
||||||
if ($path) {
|
|
||||||
Write-Host "✓ $tool found at: $($path.Source)" -ForegroundColor Green
|
|
||||||
} else {
|
|
||||||
Write-Host "✗ $tool not found" -ForegroundColor Red
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check for Visual Studio
|
# Check for Visual Studio
|
||||||
Write-Host "`nChecking for Visual Studio..." -ForegroundColor Cyan
|
if (-not $SkipVS) {
|
||||||
$vsWhere = Get-Command "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -ErrorAction SilentlyContinue
|
Write-Host "Checking for Visual Studio..." -ForegroundColor Yellow
|
||||||
if (-not $vsWhere) {
|
|
||||||
$vsWhere = Get-Command vswhere -ErrorAction SilentlyContinue
|
$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 ($vsWhere) {
|
if ($vsInstall) {
|
||||||
$vsInstallPath = & $vsWhere.Source -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath
|
Write-Host "✓ Visual Studio found at: $vsInstall" -ForegroundColor Green
|
||||||
if ($vsInstallPath) {
|
|
||||||
Write-Host "✓ Visual Studio found at: $vsInstallPath" -ForegroundColor Green
|
# Check for MSBuild
|
||||||
|
$msbuildPath = Join-Path $vsInstall "MSBuild\Current\Bin\MSBuild.exe"
|
||||||
|
if (Test-Path $msbuildPath) {
|
||||||
|
Write-Host "✓ MSBuild found" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
Write-Warning "MSBuild not found. Please ensure C++ development workload is installed."
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Warning "Visual Studio 2022 with C++ workload not found."
|
||||||
|
Write-Host "Please install Visual Studio 2022 with the following workloads:" -ForegroundColor Yellow
|
||||||
|
Write-Host " - Desktop development with C++" -ForegroundColor White
|
||||||
|
Write-Host " - Game development with C++" -ForegroundColor White
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Write-Host "✗ Visual Studio 2022 with C++ workload not found" -ForegroundColor Red
|
Write-Warning "Visual Studio Installer not found. Please install Visual Studio 2022."
|
||||||
Write-Host "Please install Visual Studio 2022 with the 'Desktop development with C++' workload" -ForegroundColor Yellow
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Write-Host "✗ vswhere not found - cannot detect Visual Studio" -ForegroundColor Red
|
Write-Host "Skipping Visual Studio check" -ForegroundColor Yellow
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "`n🎉 Windows development environment setup complete!" -ForegroundColor Green
|
# Check for Git
|
||||||
Write-Host "`nNext steps:" -ForegroundColor Cyan
|
Write-Host "Checking for Git..." -ForegroundColor Yellow
|
||||||
Write-Host "1. Run the Visual Studio project generation script:" -ForegroundColor White
|
try {
|
||||||
Write-Host " .\scripts\generate-vs-projects.ps1" -ForegroundColor Gray
|
$gitVersion = & git --version 2>$null
|
||||||
Write-Host "2. Or use CMake presets:" -ForegroundColor White
|
if ($LASTEXITCODE -eq 0) {
|
||||||
Write-Host " cmake --preset windows-debug" -ForegroundColor Gray
|
Write-Host "✓ Git found: $gitVersion" -ForegroundColor Green
|
||||||
Write-Host "3. Open YAZE.sln in Visual Studio and build" -ForegroundColor White
|
} else {
|
||||||
|
throw "Git not found"
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
Write-Warning "Git not found. Please install Git for Windows."
|
||||||
|
Write-Host "Download from: https://git-scm.com/download/win" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check for Python
|
||||||
|
Write-Host "Checking for Python..." -ForegroundColor Yellow
|
||||||
|
try {
|
||||||
|
$pythonVersion = & python --version 2>$null
|
||||||
|
if ($LASTEXITCODE -eq 0) {
|
||||||
|
Write-Host "✓ Python found: $pythonVersion" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
throw "Python not found"
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
Write-Warning "Python not found. Please install Python 3.8 or later."
|
||||||
|
Write-Host "Download from: https://www.python.org/downloads/" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set up vcpkg
|
||||||
|
if (-not $SkipVcpkg) {
|
||||||
|
Write-Host "Setting up vcpkg..." -ForegroundColor Yellow
|
||||||
|
|
||||||
|
if (-not (Test-Path "vcpkg")) {
|
||||||
|
Write-Host "Cloning vcpkg..." -ForegroundColor Yellow
|
||||||
|
try {
|
||||||
|
& git clone https://github.com/Microsoft/vcpkg.git vcpkg
|
||||||
|
if ($LASTEXITCODE -eq 0) {
|
||||||
|
Write-Host "✓ vcpkg cloned successfully" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
throw "Failed to clone vcpkg"
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
Write-Error "Failed to clone vcpkg: $_"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host "✓ vcpkg directory already exists" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
|
||||||
|
# Bootstrap vcpkg
|
||||||
|
$vcpkgExe = "vcpkg\vcpkg.exe"
|
||||||
|
if (-not (Test-Path $vcpkgExe)) {
|
||||||
|
Write-Host "Bootstrapping vcpkg..." -ForegroundColor Yellow
|
||||||
|
try {
|
||||||
|
Push-Location vcpkg
|
||||||
|
& .\bootstrap-vcpkg.bat
|
||||||
|
if ($LASTEXITCODE -eq 0) {
|
||||||
|
Write-Host "✓ vcpkg bootstrapped successfully" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
throw "Failed to bootstrap vcpkg"
|
||||||
|
}
|
||||||
|
Pop-Location
|
||||||
|
} catch {
|
||||||
|
Pop-Location
|
||||||
|
Write-Error "Failed to bootstrap vcpkg: $_"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host "✓ vcpkg already bootstrapped" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
Write-Host "Installing dependencies with vcpkg..." -ForegroundColor Yellow
|
||||||
|
try {
|
||||||
|
& $vcpkgExe install --triplet x64-windows
|
||||||
|
if ($LASTEXITCODE -eq 0) {
|
||||||
|
Write-Host "✓ Dependencies installed successfully" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
Write-Warning "Some dependencies may not have installed correctly"
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
Write-Warning "Failed to install dependencies: $_"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host "Skipping vcpkg setup" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generate Visual Studio project files
|
||||||
|
Write-Host "Generating Visual Studio project files..." -ForegroundColor Yellow
|
||||||
|
try {
|
||||||
|
& python scripts/generate-vs-projects.py
|
||||||
|
if ($LASTEXITCODE -eq 0) {
|
||||||
|
Write-Host "✓ Visual Studio project files generated" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
throw "Failed to generate project files"
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
Write-Warning "Failed to generate project files: $_"
|
||||||
|
Write-Host "You can manually run: python scripts/generate-vs-projects.py" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
|
||||||
|
# Test build
|
||||||
|
Write-Host "Testing build..." -ForegroundColor Yellow
|
||||||
|
try {
|
||||||
|
& .\scripts\build-windows.ps1 -Configuration Release -Platform x64
|
||||||
|
if ($LASTEXITCODE -eq 0) {
|
||||||
|
Write-Host "✓ Test build successful" -ForegroundColor Green
|
||||||
|
} else {
|
||||||
|
Write-Warning "Test build failed, but setup is complete"
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
Write-Warning "Test build failed: $_"
|
||||||
|
Write-Host "You can manually run: .\scripts\build-windows.ps1" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
Write-Host "✓ YAZE Windows development setup complete!" -ForegroundColor Green
|
||||||
|
Write-Host "========================================" -ForegroundColor Cyan
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "Next steps:" -ForegroundColor Yellow
|
||||||
|
Write-Host "1. Open YAZE.sln in Visual Studio 2022" -ForegroundColor White
|
||||||
|
Write-Host "2. Select your desired configuration (Debug/Release) and platform (x64/x86/ARM64)" -ForegroundColor White
|
||||||
|
Write-Host "3. Build the solution (Ctrl+Shift+B)" -ForegroundColor White
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "Or use the command line:" -ForegroundColor Yellow
|
||||||
|
Write-Host " .\scripts\build-windows.ps1 -Configuration Release -Platform x64" -ForegroundColor White
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "For more information, see docs/02-build-instructions.md" -ForegroundColor Yellow
|
||||||
91
yaze.sln
91
yaze.sln
@@ -2,88 +2,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.0.31903.59
|
VisualStudioVersion = 17.0.31903.59
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FOLDER-GUID-ROOT}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
CMakeLists.txt = CMakeLists.txt
|
|
||||||
CMakePresets.json = CMakePresets.json
|
|
||||||
vcpkg.json = vcpkg.json
|
|
||||||
README.md = README.md
|
|
||||||
LICENSE = LICENSE
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Documentation", "Documentation", "{FOLDER-GUID-DOCS}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
docs\index.md = docs\index.md
|
|
||||||
docs\01-getting-started.md = docs\01-getting-started.md
|
|
||||||
docs\02-build-instructions.md = docs\02-build-instructions.md
|
|
||||||
docs\03-asar-integration.md = docs\03-asar-integration.md
|
|
||||||
docs\04-api-reference.md = docs\04-api-reference.md
|
|
||||||
docs\A1-testing-guide.md = docs\A1-testing-guide.md
|
|
||||||
docs\B1-contributing.md = docs\B1-contributing.md
|
|
||||||
docs\B2-platform-compatibility.md = docs\B2-platform-compatibility.md
|
|
||||||
docs\B3-build-presets.md = docs\B3-build-presets.md
|
|
||||||
docs\C1-changelog.md = docs\C1-changelog.md
|
|
||||||
docs\D1-roadmap.md = docs\D1-roadmap.md
|
|
||||||
docs\E1-asm-style-guide.md = docs\E1-asm-style-guide.md
|
|
||||||
docs\E2-dungeon-editor-guide.md = docs\E2-dungeon-editor-guide.md
|
|
||||||
docs\E3-dungeon-editor-design.md = docs\E3-dungeon-editor-design.md
|
|
||||||
docs\E4-dungeon-editor-refactoring.md = docs\E4-dungeon-editor-refactoring.md
|
|
||||||
docs\E5-dungeon-object-system.md = docs\E5-dungeon-object-system.md
|
|
||||||
docs\F1-overworld-loading.md = docs\F1-overworld-loading.md
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Scripts", "Scripts", "{FOLDER-GUID-SCRIPTS}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
scripts\create_release.sh = scripts\create_release.sh
|
|
||||||
scripts\extract_changelog.py = scripts\extract_changelog.py
|
|
||||||
scripts\generate-vs-projects.ps1 = scripts\generate-vs-projects.ps1
|
|
||||||
scripts\generate-vs-projects.bat = scripts\generate-vs-projects.bat
|
|
||||||
scripts\setup-vcpkg-windows.ps1 = scripts\setup-vcpkg-windows.ps1
|
|
||||||
scripts\setup-vcpkg-windows.bat = scripts\setup-vcpkg-windows.bat
|
|
||||||
scripts\quality_check.sh = scripts\quality_check.sh
|
|
||||||
scripts\test_asar_integration.py = scripts\test_asar_integration.py
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Assets", "Assets", "{FOLDER-GUID-ASSETS}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
assets\themes\yaze_classic.theme = assets\themes\yaze_classic.theme
|
|
||||||
assets\themes\cyberpunk.theme = assets\themes\cyberpunk.theme
|
|
||||||
assets\themes\sunset.theme = assets\themes\sunset.theme
|
|
||||||
assets\themes\forest.theme = assets\themes\forest.theme
|
|
||||||
assets\themes\midnight.theme = assets\themes\midnight.theme
|
|
||||||
assets\layouts\ow_toolset.zeml = assets\layouts\ow_toolset.zeml
|
|
||||||
assets\yaze.icns = assets\yaze.icns
|
|
||||||
assets\yaze.png = assets\yaze.png
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Headers", "Headers", "{FOLDER-GUID-HEADERS}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
incl\yaze.h = incl\yaze.h
|
|
||||||
incl\zelda.h = incl\zelda.h
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CMake", "CMake", "{FOLDER-GUID-CMAKE}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
cmake\absl.cmake = cmake\absl.cmake
|
|
||||||
cmake\asar.cmake = cmake\asar.cmake
|
|
||||||
cmake\grpc.cmake = cmake\grpc.cmake
|
|
||||||
cmake\gtest.cmake = cmake\gtest.cmake
|
|
||||||
cmake\imgui.cmake = cmake\imgui.cmake
|
|
||||||
cmake\mingw64.cmake = cmake\mingw64.cmake
|
|
||||||
cmake\packaging.cmake = cmake\packaging.cmake
|
|
||||||
cmake\sdl2.cmake = cmake\sdl2.cmake
|
|
||||||
cmake\vcpkg.cmake = cmake\vcpkg.cmake
|
|
||||||
cmake\yaze.desktop.in = cmake\yaze.desktop.in
|
|
||||||
cmake\yaze.plist.in = cmake\yaze.plist.in
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GitHub Actions", "GitHub Actions", "{FOLDER-GUID-GITHUB}"
|
|
||||||
ProjectSection(SolutionItems) = preProject
|
|
||||||
.github\workflows\ci.yml = .github\workflows\ci.yml
|
|
||||||
.github\workflows\release.yml = .github\workflows\release.yml
|
|
||||||
.github\workflows\doxy.yml = .github\workflows\doxy.yml
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "YAZE", "YAZE.vcxproj", "{B2C3D4E5-F6G7-8901-BCDE-F23456789012}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "YAZE", "YAZE.vcxproj", "{B2C3D4E5-F6G7-8901-BCDE-F23456789012}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
@@ -133,13 +51,4 @@ Global
|
|||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
|
SolutionGuid = {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
|
||||||
{B2C3D4E5-F6G7-8901-BCDE-F23456789012} = {FOLDER-GUID-ROOT}
|
|
||||||
{FOLDER-GUID-DOCS} = {FOLDER-GUID-ROOT}
|
|
||||||
{FOLDER-GUID-SCRIPTS} = {FOLDER-GUID-ROOT}
|
|
||||||
{FOLDER-GUID-ASSETS} = {FOLDER-GUID-ROOT}
|
|
||||||
{FOLDER-GUID-HEADERS} = {FOLDER-GUID-ROOT}
|
|
||||||
{FOLDER-GUID-CMAKE} = {FOLDER-GUID-ROOT}
|
|
||||||
{FOLDER-GUID-GITHUB} = {FOLDER-GUID-ROOT}
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
EndGlobal
|
||||||
271
yaze.vcxproj
271
yaze.vcxproj
@@ -57,6 +57,8 @@
|
|||||||
<RootNamespace>YAZE</RootNamespace>
|
<RootNamespace>YAZE</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
<ProjectName>YAZE</ProjectName>
|
<ProjectName>YAZE</ProjectName>
|
||||||
|
<VcpkgEnabled>true</VcpkgEnabled>
|
||||||
|
<VcpkgManifestInstall>true</VcpkgManifestInstall>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
@@ -248,11 +250,17 @@
|
|||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableCOMDATFolding>false</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>false</OptimizeReferences>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
|
||||||
@@ -261,11 +269,17 @@
|
|||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableCOMDATFolding>false</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>false</OptimizeReferences>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||||
@@ -274,173 +288,289 @@
|
|||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableCOMDATFolding>false</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>false</OptimizeReferences>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x86'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|x86'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|ARM64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='RelWithDebInfo|ARM64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x86'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|x86'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|ARM64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='MinSizeRel|ARM64'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<SDLCheck>true</SDLCheck>
|
<SDLCheck>true</SDLCheck>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<ConformanceMode>true</ConformanceMode>
|
<ConformanceMode>true</ConformanceMode>
|
||||||
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
<AdditionalIncludeDirectories>$(ProjectDir)src;$(ProjectDir)incl;$(ProjectDir)src\lib;$(ProjectDir)src\lib\asar\src;$(ProjectDir)src\lib\asar\src\asar;$(ProjectDir)src\lib\asar\src\asar-dll-bindings\c;$(ProjectDir)src\lib\imgui;$(ProjectDir)src\lib\imgui_test_engine;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<LanguageStandard>stdcpp23</LanguageStandard>
|
||||||
|
<BigObj>true</BigObj>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Console</SubSystem>
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="incl\yaze.h" />
|
<ClInclude Include="incl/yaze.h" />
|
||||||
<ClInclude Include="incl\zelda.h" />
|
<ClInclude Include="incl/zelda.h" />
|
||||||
<ClInclude Include="src\yaze_config.h.in" />
|
<ClInclude Include="src/yaze_config.h.in" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\yaze.cc" />
|
<ClCompile Include="src\yaze.cc" />
|
||||||
|
<ClCompile Include="src\app/main.cc" />
|
||||||
|
<ClCompile Include="src\app/rom.cc" />
|
||||||
|
<ClCompile Include="src\app/core/controller.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/emulator.cc" />
|
||||||
|
<ClCompile Include="src\app/core/project.cc" />
|
||||||
|
<ClCompile Include="src\app/core/window.cc" />
|
||||||
|
<ClCompile Include="src\app/core/asar_wrapper.cc" />
|
||||||
|
<ClCompile Include="src\app/core/platform/font_loader.cc" />
|
||||||
|
<ClCompile Include="src\app/core/platform/clipboard.cc" />
|
||||||
|
<ClCompile Include="src\app/core/platform/file_dialog.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/audio/apu.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/audio/spc700.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/audio/dsp.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/audio/internal/addressing.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/audio/internal/instructions.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/cpu/internal/addressing.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/cpu/internal/instructions.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/cpu/cpu.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/video/ppu.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/memory/dma.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/memory/memory.cc" />
|
||||||
|
<ClCompile Include="src\app/emu/snes.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/editor_manager.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/dungeon/dungeon_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/dungeon/dungeon_room_selector.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/dungeon/dungeon_canvas_viewer.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/dungeon/dungeon_object_selector.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/dungeon/dungeon_toolset.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/dungeon/dungeon_object_interaction.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/dungeon/dungeon_renderer.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/dungeon/dungeon_room_loader.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/dungeon/dungeon_usage_tracker.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/overworld/overworld_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/overworld/overworld_editor_manager.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/sprite/sprite_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/music/music_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/message/message_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/message/message_data.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/message/message_preview.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/code/assembly_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/graphics/screen_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/graphics/graphics_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/graphics/palette_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/overworld/tile16_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/overworld/map_properties.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/graphics/gfx_group_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/overworld/entity.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/system/settings_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/system/command_manager.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/system/extension_manager.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/system/shortcut_manager.cc" />
|
||||||
|
<ClCompile Include="src\app/editor/system/popup_manager.cc" />
|
||||||
|
<ClCompile Include="src\app/test/test_manager.cc" />
|
||||||
|
<ClCompile Include="src\app/gfx/arena.cc" />
|
||||||
|
<ClCompile Include="src\app/gfx/background_buffer.cc" />
|
||||||
|
<ClCompile Include="src\app/gfx/bitmap.cc" />
|
||||||
|
<ClCompile Include="src\app/gfx/compression.cc" />
|
||||||
|
<ClCompile Include="src\app/gfx/scad_format.cc" />
|
||||||
|
<ClCompile Include="src\app/gfx/snes_palette.cc" />
|
||||||
|
<ClCompile Include="src\app/gfx/snes_tile.cc" />
|
||||||
|
<ClCompile Include="src\app/gfx/snes_color.cc" />
|
||||||
|
<ClCompile Include="src\app/gfx/tilemap.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/hyrule_magic.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/overworld/overworld_map.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/overworld/overworld.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/screen/inventory.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/screen/title_screen.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/screen/dungeon_map.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/sprite/sprite.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/sprite/sprite_builder.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/music/tracker.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/dungeon/room.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/dungeon/room_object.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/dungeon/object_parser.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/dungeon/object_renderer.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/dungeon/room_layout.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/dungeon/dungeon_editor_system.cc" />
|
||||||
|
<ClCompile Include="src\app/zelda3/dungeon/dungeon_object_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/modules/asset_browser.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/modules/text_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/canvas.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/canvas_utils.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/enhanced_palette_editor.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/input.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/style.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/color.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/zeml.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/theme_manager.cc" />
|
||||||
|
<ClCompile Include="src\app/gui/background_renderer.cc" />
|
||||||
|
<ClCompile Include="src\util/bps.cc" />
|
||||||
|
<ClCompile Include="src\util/flag.cc" />
|
||||||
|
<ClCompile Include="src\util/hex.cc" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="CMakeLists.txt" />
|
<None Include="CMakeLists.txt" />
|
||||||
@@ -449,63 +579,6 @@
|
|||||||
<None Include="README.md" />
|
<None Include="README.md" />
|
||||||
<None Include="LICENSE" />
|
<None Include="LICENSE" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<Text Include="docs\index.md" />
|
|
||||||
<Text Include="docs\01-getting-started.md" />
|
|
||||||
<Text Include="docs\02-build-instructions.md" />
|
|
||||||
<Text Include="docs\03-asar-integration.md" />
|
|
||||||
<Text Include="docs\04-api-reference.md" />
|
|
||||||
<Text Include="docs\A1-testing-guide.md" />
|
|
||||||
<Text Include="docs\B1-contributing.md" />
|
|
||||||
<Text Include="docs\B2-platform-compatibility.md" />
|
|
||||||
<Text Include="docs\B3-build-presets.md" />
|
|
||||||
<Text Include="docs\C1-changelog.md" />
|
|
||||||
<Text Include="docs\D1-roadmap.md" />
|
|
||||||
<Text Include="docs\E1-asm-style-guide.md" />
|
|
||||||
<Text Include="docs\E2-dungeon-editor-guide.md" />
|
|
||||||
<Text Include="docs\E3-dungeon-editor-design.md" />
|
|
||||||
<Text Include="docs\E4-dungeon-editor-refactoring.md" />
|
|
||||||
<Text Include="docs\E5-dungeon-object-system.md" />
|
|
||||||
<Text Include="docs\F1-overworld-loading.md" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Text Include="scripts\create_release.sh" />
|
|
||||||
<Text Include="scripts\extract_changelog.py" />
|
|
||||||
<Text Include="scripts\generate-vs-projects.ps1" />
|
|
||||||
<Text Include="scripts\generate-vs-projects.bat" />
|
|
||||||
<Text Include="scripts\setup-vcpkg-windows.ps1" />
|
|
||||||
<Text Include="scripts\setup-vs-windows.bat" />
|
|
||||||
<Text Include="scripts\quality_check.sh" />
|
|
||||||
<Text Include="scripts\test_asar_integration.py" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Text Include="assets\themes\yaze_classic.theme" />
|
|
||||||
<Text Include="assets\themes\cyberpunk.theme" />
|
|
||||||
<Text Include="assets\themes\sunset.theme" />
|
|
||||||
<Text Include="assets\themes\forest.theme" />
|
|
||||||
<Text Include="assets\themes\midnight.theme" />
|
|
||||||
<Text Include="assets\layouts\ow_toolset.zeml" />
|
|
||||||
<Text Include="assets\yaze.icns" />
|
|
||||||
<Text Include="assets\yaze.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Text Include="cmake\absl.cmake" />
|
|
||||||
<Text Include="cmake\asar.cmake" />
|
|
||||||
<Text Include="cmake\grpc.cmake" />
|
|
||||||
<Text Include="cmake\gtest.cmake" />
|
|
||||||
<Text Include="cmake\imgui.cmake" />
|
|
||||||
<Text Include="cmake\mingw64.cmake" />
|
|
||||||
<Text Include="cmake\packaging.cmake" />
|
|
||||||
<Text Include="cmake\sdl2.cmake" />
|
|
||||||
<Text Include="cmake\vcpkg.cmake" />
|
|
||||||
<Text Include="cmake\yaze.desktop.in" />
|
|
||||||
<Text Include="cmake\yaze.plist.in" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Text Include=".github\workflows\ci.yml" />
|
|
||||||
<Text Include=".github\workflows\release.yml" />
|
|
||||||
<Text Include=".github\workflows\doxy.yml" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user