{
  "version": 6,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 16,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "_base",
      "hidden": true,
      "description": "Base preset with common settings",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
        "YAZE_BUILD_TESTS": "ON",
        "YAZE_BUILD_APP": "ON",
        "YAZE_BUILD_LIB": "ON",
        "YAZE_BUILD_EMU": "OFF",
        "YAZE_BUILD_Z3ED": "OFF",
        "YAZE_USE_MODULAR_BUILD": "ON"
      }
    },
    {
      "name": "_unix",
      "hidden": true,
      "description": "Unix/macOS/Linux base with Makefiles",
      "generator": "Unix Makefiles",
      "binaryDir": "${sourceDir}/build",
      "condition": {
        "type": "notEquals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      }
    },
    {
      "name": "_quiet",
      "hidden": true,
      "description": "Suppress warnings (default)",
      "cacheVariables": {
        "YAZE_SUPPRESS_WARNINGS": "ON"
      }
    },
    {
      "name": "_verbose",
      "hidden": true,
      "description": "Show all warnings and extra diagnostics",
      "cacheVariables": {
        "YAZE_SUPPRESS_WARNINGS": "OFF"
      }
    },
    {
      "name": "_mac",
      "hidden": true,
      "description": "macOS base configuration",
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Darwin"
      },
      "cacheVariables": {
        "CMAKE_OSX_DEPLOYMENT_TARGET": "11.0"
      }
    },
    {
      "name": "_win",
      "hidden": true,
      "description": "Windows base configuration",
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      },
      "generator": "Visual Studio 17 2022",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/vcpkg/scripts/buildsystems/vcpkg.cmake",
        "VCPKG_MANIFEST_MODE": "ON"
      }
    },
    {
      "name": "mac-dbg",
      "displayName": "macOS Debug (ARM64)",
      "description": "macOS ARM64 debug build (warnings off)",
      "inherits": ["_base", "_unix", "_mac", "_quiet"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_OSX_ARCHITECTURES": "arm64"
      }
    },
    {
      "name": "mac-dbg-v",
      "displayName": "macOS Debug Verbose (ARM64)",
      "description": "macOS ARM64 debug build with all warnings",
      "inherits": ["_base", "_unix", "_mac", "_verbose"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_OSX_ARCHITECTURES": "arm64"
      }
    },
    {
      "name": "mac-rel",
      "displayName": "macOS Release (ARM64)",
      "description": "macOS ARM64 release build (warnings off)",
      "inherits": ["_base", "_unix", "_mac", "_quiet"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_OSX_ARCHITECTURES": "arm64",
        "YAZE_BUILD_TESTS": "OFF"
      }
    },
    {
      "name": "mac-x64",
      "displayName": "macOS Debug (x86_64)",
      "description": "macOS x86_64 debug build (warnings off)",
      "inherits": ["_base", "_mac", "_quiet"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_OSX_ARCHITECTURES": "x86_64",
        "CMAKE_OSX_DEPLOYMENT_TARGET": "10.15"
      }
    },
    {
      "name": "mac-uni",
      "displayName": "macOS Universal",
      "description": "macOS universal binary (ARM64 + x86_64)",
      "inherits": ["_base", "_mac", "_quiet"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "CMAKE_OSX_ARCHITECTURES": "arm64;x86_64",
        "CMAKE_OSX_DEPLOYMENT_TARGET": "10.15"
      }
    },
    {
      "name": "mac-dev",
      "displayName": "macOS Dev",
      "description": "macOS development with ROM tests",
      "inherits": ["_base", "_unix", "_mac", "_quiet"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_OSX_ARCHITECTURES": "arm64",
        "YAZE_ENABLE_ROM_TESTS": "ON",
        "YAZE_TEST_ROM_PATH": "${sourceDir}/zelda3.sfc"
      }
    },
    {
      "name": "mac-ai",
      "displayName": "macOS AI",
      "description": "macOS with AI agent (z3ed + JSON + gRPC + networking)",
      "inherits": "mac-dev",
      "binaryDir": "${sourceDir}/build_ai",
      "cacheVariables": {
        "Z3ED_AI": "ON",
        "YAZE_WITH_JSON": "ON",
        "YAZE_WITH_GRPC": "ON",
        "YAZE_BUILD_Z3ED": "ON",
        "YAZE_BUILD_EMU": "ON",
        "YAZE_BUILD_TESTS": "ON",
        "CMAKE_BUILD_TYPE": "Debug"
      }
    },
    {
      "name": "mac-z3ed",
      "displayName": "macOS z3ed",
      "description": "macOS z3ed CLI with agent support",
      "inherits": "mac-ai",
      "binaryDir": "${sourceDir}/build",
      "cacheVariables": {
        "Z3ED_AI": "ON",
        "YAZE_WITH_JSON": "ON",
        "YAZE_WITH_GRPC": "ON",
        "YAZE_BUILD_Z3ED": "ON",
        "YAZE_BUILD_EMU": "ON",
        "YAZE_BUILD_TESTS": "ON",
        "CMAKE_BUILD_TYPE": "Debug"
      }
    },
    {
      "name": "mac-rooms",
      "displayName": "macOS Rooms",
      "description": "macOS dungeon editor development",
      "binaryDir": "${sourceDir}/build_rooms",
      "inherits": "mac-dev",
      "cacheVariables": {
        "YAZE_BUILD_EMU": "OFF",
        "YAZE_BUILD_Z3ED": "OFF",
        "YAZE_MINIMAL_BUILD": "ON"
      }
    },
    {
      "name": "win-dbg",
      "displayName": "Windows Debug (x64)",
      "description": "Windows x64 debug build (warnings off)",
      "inherits": ["_base", "_win", "_quiet"],
      "architecture": "x64",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "VCPKG_TARGET_TRIPLET": "x64-windows"
      }
    },
    {
      "name": "win-dbg-v",
      "displayName": "Windows Debug Verbose (x64)",
      "description": "Windows x64 debug build with all warnings",
      "inherits": ["_base", "_win", "_verbose"],
      "architecture": "x64",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "VCPKG_TARGET_TRIPLET": "x64-windows"
      }
    },
    {
      "name": "win-rel",
      "displayName": "Windows Release (x64)",
      "description": "Windows x64 release build (warnings off)",
      "inherits": ["_base", "_win", "_quiet"],
      "architecture": "x64",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "VCPKG_TARGET_TRIPLET": "x64-windows",
        "YAZE_BUILD_TESTS": "OFF"
      }
    },
    {
      "name": "win-arm",
      "displayName": "Windows ARM64 Debug",
      "description": "Windows ARM64 debug build (warnings off)",
      "inherits": ["_base", "_win", "_quiet"],
      "architecture": "arm64",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "VCPKG_TARGET_TRIPLET": "arm64-windows"
      }
    },
    {
      "name": "win-arm-rel",
      "displayName": "Windows ARM64 Release",
      "description": "Windows ARM64 release build (warnings off)",
      "inherits": ["_base", "_win", "_quiet"],
      "architecture": "arm64",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release",
        "VCPKG_TARGET_TRIPLET": "arm64-windows",
        "YAZE_BUILD_TESTS": "OFF"
      }
    },
    {
      "name": "win-dev",
      "displayName": "Windows Dev",
      "description": "Windows development with ROM tests",
      "inherits": "win-dbg",
      "cacheVariables": {
        "YAZE_ENABLE_ROM_TESTS": "ON",
        "YAZE_TEST_ROM_PATH": "${sourceDir}/zelda3.sfc"
      }
    },
    {
      "name": "win-ai",
      "displayName": "1. Windows AI + z3ed",
      "description": "Windows with AI agent (z3ed + JSON + gRPC + networking)",
      "inherits": "win-dev",
      "cacheVariables": {
        "Z3ED_AI": "ON",
        "YAZE_WITH_JSON": "ON",
        "YAZE_WITH_GRPC": "ON",
        "YAZE_BUILD_Z3ED": "ON",
        "YAZE_BUILD_EMU": "ON",
        "CMAKE_CXX_COMPILER": "cl",
        "CMAKE_C_COMPILER": "cl"
      }
    },
    {
      "name": "win-z3ed",
      "displayName": "2. Windows z3ed CLI",
      "description": "Windows z3ed CLI with agent and networking support",
      "inherits": "win-ai"
    },
    {
      "name": "lin-dbg",
      "displayName": "Linux Debug",
      "description": "Linux debug build with GCC (warnings off)",
      "inherits": ["_base", "_unix", "_quiet"],
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      },
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_CXX_COMPILER": "g++",
        "CMAKE_C_COMPILER": "gcc"
      }
    },
    {
      "name": "lin-clang",
      "displayName": "Linux Clang",
      "description": "Linux debug build with Clang (warnings off)",
      "inherits": ["_base", "_unix", "_quiet"],
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      },
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_CXX_COMPILER": "clang++",
        "CMAKE_C_COMPILER": "clang"
      }
    },
    {
      "name": "ci",
      "displayName": "9. CI Build",
      "description": "Continuous integration build (no ROM tests)",
      "inherits": ["_base", "_unix", "_quiet"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "RelWithDebInfo",
        "YAZE_ENABLE_ROM_TESTS": "OFF",
        "YAZE_BUILD_TESTS": "ON"
      }
    },
    {
      "name": "asan",
      "displayName": "8. AddressSanitizer",
      "description": "Debug build with AddressSanitizer",
      "inherits": ["_base", "_unix"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_CXX_FLAGS": "-fsanitize=address -fno-omit-frame-pointer -g",
        "CMAKE_C_FLAGS": "-fsanitize=address -fno-omit-frame-pointer -g",
        "CMAKE_EXE_LINKER_FLAGS": "-fsanitize=address",
        "CMAKE_SHARED_LINKER_FLAGS": "-fsanitize=address"
      }
    },
    {
      "name": "coverage",
      "displayName": "7. Coverage",
      "description": "Debug build with code coverage",
      "inherits": ["_base", "_unix"],
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_CXX_FLAGS": "--coverage -g -O0",
        "CMAKE_C_FLAGS": "--coverage -g -O0",
        "CMAKE_EXE_LINKER_FLAGS": "--coverage"
      }
    }
  ],
  "buildPresets": [
    {
      "name": "mac-dbg",
      "configurePreset": "mac-dbg",
      "displayName": "macOS Debug",
      "jobs": 12
    },
    {
      "name": "mac-dbg-v",
      "configurePreset": "mac-dbg-v",
      "displayName": "macOS Debug Verbose",
      "jobs": 12
    },
    {
      "name": "mac-rel",
      "configurePreset": "mac-rel",
      "displayName": "macOS Release",
      "jobs": 12
    },
    {
      "name": "mac-x64",
      "configurePreset": "mac-x64",
      "displayName": "macOS x86_64",
      "jobs": 12
    },
    {
      "name": "mac-uni",
      "configurePreset": "mac-uni",
      "displayName": "macOS Universal",
      "jobs": 12
    },
    {
      "name": "mac-dev",
      "configurePreset": "mac-dev",
      "displayName": "macOS Dev",
      "jobs": 12
    },
    {
      "name": "mac-ai",
      "configurePreset": "mac-ai",
      "displayName": "macOS AI",
      "jobs": 12
    },
    {
      "name": "mac-z3ed",
      "configurePreset": "mac-z3ed",
      "displayName": "macOS z3ed",
      "jobs": 12
    },
    {
      "name": "mac-rooms",
      "configurePreset": "mac-rooms",
      "displayName": "macOS Rooms",
      "jobs": 12
    },
    {
      "name": "win-dbg",
      "configurePreset": "win-dbg",
      "displayName": "Windows Debug",
      "configuration": "Debug",
      "jobs": 12
    },
    {
      "name": "win-dbg-v",
      "configurePreset": "win-dbg-v",
      "displayName": "Windows Debug Verbose",
      "configuration": "Debug",
      "jobs": 12
    },
    {
      "name": "win-rel",
      "configurePreset": "win-rel",
      "displayName": "Windows Release",
      "configuration": "Release",
      "jobs": 12
    },
    {
      "name": "win-arm",
      "configurePreset": "win-arm",
      "displayName": "Windows ARM64",
      "configuration": "Debug",
      "jobs": 12
    },
    {
      "name": "win-arm-rel",
      "configurePreset": "win-arm-rel",
      "displayName": "Windows ARM64 Release",
      "configuration": "Release",
      "jobs": 12
    },
    {
      "name": "win-dev",
      "configurePreset": "win-dev",
      "displayName": "Windows Dev",
      "configuration": "Debug",
      "jobs": 12
    },
    {
      "name": "win-ai",
      "configurePreset": "win-ai",
      "displayName": "1. Windows AI + z3ed",
      "configuration": "Debug",
      "jobs": 12
    },
    {
      "name": "win-z3ed",
      "configurePreset": "win-z3ed",
      "displayName": "2. Windows z3ed CLI",
      "configuration": "Debug",
      "jobs": 12
    },
    {
      "name": "lin-dbg",
      "configurePreset": "lin-dbg",
      "displayName": "Linux Debug",
      "jobs": 12
    },
    {
      "name": "lin-clang",
      "configurePreset": "lin-clang",
      "displayName": "Linux Clang",
      "jobs": 12
    },
    {
      "name": "ci",
      "configurePreset": "ci",
      "displayName": "9. CI Build",
      "jobs": 12
    },
    {
      "name": "asan",
      "configurePreset": "asan",
      "displayName": "8. AddressSanitizer",
      "jobs": 12
    },
    {
      "name": "coverage",
      "configurePreset": "coverage",
      "displayName": "7. Coverage",
      "jobs": 12
    }
  ],
  "testPresets": [
    {
      "name": "stable",
      "configurePreset": "ci",
      "displayName": "Stable Tests (Release Ready)",
      "execution": {
        "noTestsAction": "error",
        "stopOnFailure": true
      },
      "filter": {
        "exclude": {
          "name": ".*(IntegrationTest|E2ERomDependentTest|ZSCustomOverworldUpgradeTest|RomIntegrationTest|ComprehensiveIntegrationTest|OverworldIntegrationTest|DungeonIntegrationTest|DungeonEditorIntegrationTest|DungeonEditorSystemIntegrationTest|DungeonObjectRendererIntegrationTest|DungeonObjectRendererMockTest|DungeonObjectRenderingTests|Tile16EditorIntegrationTest).*"
        }
      }
    },
    {
      "name": "dev",
      "configurePreset": "mac-dev",
      "displayName": "Development Tests (with ROM)",
      "execution": {
        "noTestsAction": "error",
        "stopOnFailure": false
      },
      "filter": {
        "exclude": {
          "name": ".*(E2ERomDependentTest|ZSCustomOverworldUpgradeTest).*"
        }
      }
    },
    {
      "name": "ci",
      "configurePreset": "ci",
      "displayName": "CI Tests (stable only)",
      "execution": {
        "noTestsAction": "error",
        "stopOnFailure": true
      },
      "filter": {
        "exclude": {
          "name": ".*(IntegrationTest|E2ERomDependentTest|ZSCustomOverworldUpgradeTest|RomIntegrationTest|ComprehensiveIntegrationTest|OverworldIntegrationTest|DungeonIntegrationTest|DungeonEditorIntegrationTest|DungeonEditorSystemIntegrationTest|DungeonObjectRendererIntegrationTest|DungeonObjectRendererMockTest|DungeonObjectRenderingTests|Tile16EditorIntegrationTest).*"
        }
      }
    },
    {
      "name": "unit",
      "configurePreset": "ci",
      "displayName": "Unit Tests Only",
      "filter": {
        "exclude": {
          "name": ".*(IntegrationTest|E2ERomDependentTest|ZSCustomOverworldUpgradeTest|RomIntegrationTest|ComprehensiveIntegrationTest|OverworldIntegrationTest|DungeonIntegrationTest|DungeonEditorIntegrationTest|DungeonEditorSystemIntegrationTest|DungeonObjectRendererIntegrationTest|DungeonObjectRendererMockTest|DungeonObjectRenderingTests|Tile16EditorIntegrationTest).*"
        }
      }
    },
    {
      "name": "integration",
      "configurePreset": "mac-dev",
      "displayName": "Integration Tests Only",
      "execution": {
        "noTestsAction": "error",
        "stopOnFailure": false
      },
      "filter": {
        "include": {
          "name": ".*(IntegrationTest|RomIntegrationTest|ComprehensiveIntegrationTest|OverworldIntegrationTest|DungeonIntegrationTest|DungeonEditorIntegrationTest|DungeonEditorSystemIntegrationTest|DungeonObjectRendererIntegrationTest|DungeonObjectRendererMockTest|DungeonObjectRenderingTests|Tile16EditorIntegrationTest).*"
        }
      }
    }
  ],
  "packagePresets": [
    {
      "name": "mac",
      "configurePreset": "mac-rel",
      "displayName": "macOS Package (ARM64)"
    },
    {
      "name": "mac-uni",
      "configurePreset": "mac-uni",
      "displayName": "macOS Package (Universal)"
    },
    {
      "name": "win",
      "configurePreset": "win-rel",
      "displayName": "Windows Package (x64)"
    },
    {
      "name": "win-arm",
      "configurePreset": "win-arm-rel",
      "displayName": "Windows Package (ARM64)"
    }
  ],
  "workflowPresets": [
    {
      "name": "dev",
      "displayName": "Development Workflow",
      "steps": [
        {
          "type": "configure",
          "name": "mac-dev"
        },
        {
          "type": "build",
          "name": "mac-dev"
        },
        {
          "type": "test",
          "name": "dev"
        }
      ]
    },
    {
      "name": "ci",
      "displayName": "CI Workflow",
      "steps": [
        {
          "type": "configure",
          "name": "ci"
        },
        {
          "type": "build",
          "name": "ci"
        },
        {
          "type": "test",
          "name": "ci"
        }
      ]
    },
    {
      "name": "release",
      "displayName": "Release Workflow",
      "steps": [
        {
          "type": "configure",
          "name": "mac-uni"
        },
        {
          "type": "build",
          "name": "mac-uni"
        },
        {
          "type": "package",
          "name": "mac-uni"
        }
      ]
    }
  ]
}