cmake_minimum_required(VERSION 3.21)

project(chimera-gfx VERSION 0.1.0 LANGUAGES C)

include(CTest)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

option(CHIMERA_GFX_BUILD_PS5_PROBE
       "Compile the discovery-only PS5 probe; never deploy or execute it" OFF)
option(CHIMERA_GFX_BUILD_PHASE1_VIDEOOUT_CLEAR
       "Compile the gated SDL2 VideoOut clear candidate; never deploy or run it"
       OFF)
option(CHIMERA_GFX_BUILD_PS5_MINIMAL_STARTUP
       "Build the Phase-0.5 freestanding PS5 startup audit candidate" OFF)
option(CHIMERA_GFX_BUILD_PS5_LIFECYCLE_PROBE
       "Build the Phase-0.7 firmware-9.60 controlled lifecycle probe" OFF)
option(CHIMERA_GFX_WARNINGS_AS_ERRORS "Treat project warnings as errors" ON)
option(CHIMERA_GFX_ENABLE_CLANG_TIDY "Run clang-tidy while compiling" OFF)
option(CHIMERA_GFX_RUN_BRANCH_LOCAL_HISTORICAL_VALIDATORS
       "Run validators that intentionally require their exact historical branch"
       OFF)
option(CHIMERA_GFX_REGISTER_EXTERNAL_EVIDENCE_VALIDATORS
       "Register validators requiring phase-specific sibling/evidence workspaces"
       OFF)
set(CHIMERA_GFX_PS5_ALLOWED_FIRMWARE "NONE" CACHE STRING
    "Exact firmware gate embedded in a PS5 probe build; NONE fails closed")
set(CHIMERA_GFX_PS5_PROBE_FIRMWARE_ALLOWLIST "9.60")
set(CHIMERA_GFX_PHASE1_SDL_BUILD "" CACHE PATH
    "Existing cross-compiled pinned SDL2 build used only by the Phase-1 candidate")

set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)

if(CHIMERA_GFX_BUILD_PS5_MINIMAL_STARTUP)
  message(FATAL_ERROR
    "BLOCKED: no pinned public loader caller proves stack, return, payloadout, "
    "post-return cleanup, or crash semantics; no minimal PS5 ELF may be built")
endif()

function(chimera_gfx_project_warnings target)
  if(MSVC)
    target_compile_options(${target} PRIVATE /W4)
    if(CHIMERA_GFX_WARNINGS_AS_ERRORS)
      target_compile_options(${target} PRIVATE /WX)
    endif()
  else()
    target_compile_options(${target} PRIVATE
      -Wall -Wextra -Wpedantic -Wconversion -Wshadow)
    if(CHIMERA_GFX_WARNINGS_AS_ERRORS)
      target_compile_options(${target} PRIVATE -Werror)
    endif()
  endif()
  if(CHIMERA_GFX_ENABLE_CLANG_TIDY)
    find_program(CHIMERA_GFX_CLANG_TIDY NAMES clang-tidy-18 clang-tidy REQUIRED)
    set_property(TARGET ${target} PROPERTY C_CLANG_TIDY
      "${CHIMERA_GFX_CLANG_TIDY};--config-file=${CMAKE_CURRENT_SOURCE_DIR}/.clang-tidy")
  endif()
endfunction()

function(chimera_gfx_add_external_evidence_test)
  if(CHIMERA_GFX_REGISTER_EXTERNAL_EVIDENCE_VALIDATORS)
    add_test(${ARGV})
  endif()
endfunction()

if(CHIMERA_GFX_BUILD_PS5_LIFECYCLE_PROBE)
  if(NOT PS5)
    message(FATAL_ERROR
      "The lifecycle probe requires the public PS5 Payload SDK toolchain")
  endif()
  if(NOT CHIMERA_GFX_PS5_ALLOWED_FIRMWARE STREQUAL "9.60")
    message(FATAL_ERROR
      "The lifecycle probe is build-allowlisted only for exact firmware 9.60")
  endif()

  add_executable(chimera-gfx-lifecycle-probe
    samples/lifecycle_probe/main.c)
  target_compile_definitions(chimera-gfx-lifecycle-probe PRIVATE
    "CHIMERA_GFX_PS5_ALLOWED_FIRMWARE=\"9.60\""
    "CHIMERA_GFX_LIFECYCLE_BUILD_ID=\"phase07-fw960-v1\"")
  target_link_options(chimera-gfx-lifecycle-probe PRIVATE
    "-nodefaultlibs"
    "-Wl,-Map,chimera-gfx-lifecycle-probe.map")
  target_link_libraries(chimera-gfx-lifecycle-probe PRIVATE
    c
    kernel_web
    SceLibcInternal)
  set_target_properties(chimera-gfx-lifecycle-probe PROPERTIES
    OUTPUT_NAME "chimera-gfx-lifecycle-probe.elf")
  chimera_gfx_project_warnings(chimera-gfx-lifecycle-probe)
endif()

add_library(chimera-gfx STATIC
  src/core/context.c
  src/core/resources.c
  src/core/status.c
  src/backends/mock/mock_backend.c
  src/backends/ps5/ps5_backend.c)
add_library(chimera-gfx::chimera-gfx ALIAS chimera-gfx)
target_include_directories(chimera-gfx
  PUBLIC
    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
    $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
chimera_gfx_project_warnings(chimera-gfx)

add_library(chimera-gfx-probe-logic STATIC
  src/backends/ps5/probe_logic.c)
target_include_directories(chimera-gfx-probe-logic
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}/include
    ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/ps5)
target_link_libraries(chimera-gfx-probe-logic PUBLIC chimera-gfx)
chimera_gfx_project_warnings(chimera-gfx-probe-logic)

add_library(chimera-gfx-firmware-gate STATIC
  src/backends/ps5/firmware_gate.c)
target_include_directories(chimera-gfx-firmware-gate PUBLIC
  ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/ps5)
set_target_properties(chimera-gfx-firmware-gate PROPERTIES
  INTERPROCEDURAL_OPTIMIZATION FALSE)
chimera_gfx_project_warnings(chimera-gfx-firmware-gate)

add_library(chimera-gfx-retroarch-scaffold STATIC
  adapters/retroarch/retroarch_adapter.c)
target_include_directories(chimera-gfx-retroarch-scaffold PUBLIC
  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
target_link_libraries(chimera-gfx-retroarch-scaffold PUBLIC chimera-gfx)
chimera_gfx_project_warnings(chimera-gfx-retroarch-scaffold)

add_library(chimera-gfx-sdl2-scaffold STATIC
  adapters/sdl2/sdl2_adapter.c)
target_include_directories(chimera-gfx-sdl2-scaffold PUBLIC
  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
target_link_libraries(chimera-gfx-sdl2-scaffold PUBLIC chimera-gfx)
chimera_gfx_project_warnings(chimera-gfx-sdl2-scaffold)

if(CHIMERA_GFX_BUILD_PS5_PROBE)
  if(NOT PS5)
    message(FATAL_ERROR
      "CHIMERA_GFX_BUILD_PS5_PROBE requires the public PS5 Payload SDK toolchain")
  endif()
  if(NOT CHIMERA_GFX_PS5_ALLOWED_FIRMWARE STREQUAL "NONE" AND
     NOT CHIMERA_GFX_PS5_ALLOWED_FIRMWARE IN_LIST
         CHIMERA_GFX_PS5_PROBE_FIRMWARE_ALLOWLIST)
    message(FATAL_ERROR
      "Probe firmware is not in the reviewed exact allowlist: 9.60")
  endif()

  add_executable(chimera-gfx-capability-probe
    samples/capability_probe/main.c
    src/backends/ps5/probe_platform.c)
  target_include_directories(chimera-gfx-capability-probe PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/ps5)
  target_link_libraries(chimera-gfx-capability-probe PRIVATE
    chimera-gfx
    chimera-gfx-probe-logic
    chimera-gfx-firmware-gate)
  target_compile_definitions(chimera-gfx-capability-probe PRIVATE
    "CHIMERA_GFX_PS5_ALLOWED_FIRMWARE=\"${CHIMERA_GFX_PS5_ALLOWED_FIRMWARE}\"")
  set_target_properties(chimera-gfx-capability-probe PROPERTIES
    OUTPUT_NAME "chimera-gfx-capability-probe.elf")
  chimera_gfx_project_warnings(chimera-gfx-capability-probe)
endif()

if(CHIMERA_GFX_BUILD_PHASE1_VIDEOOUT_CLEAR)
  if(NOT PS5)
    message(FATAL_ERROR
      "The Phase-1 VideoOut candidate requires the public PS5 toolchain")
  endif()
  if(NOT CHIMERA_GFX_PS5_ALLOWED_FIRMWARE MATCHES "^[A-Za-z0-9._-]+$")
    message(FATAL_ERROR "Firmware gate contains unsupported characters")
  endif()
  if(NOT CHIMERA_GFX_PS5_ALLOWED_FIRMWARE STREQUAL "NONE")
    message(FATAL_ERROR
      "The Phase-1 VideoOut candidate must remain fail-closed at NONE")
  endif()
  if(NOT IS_ABSOLUTE "${CHIMERA_GFX_PHASE1_SDL_BUILD}")
    message(FATAL_ERROR "CHIMERA_GFX_PHASE1_SDL_BUILD must be absolute")
  endif()
  if(NOT EXISTS "${CHIMERA_GFX_PHASE1_SDL_BUILD}/libSDL2.a")
    message(FATAL_ERROR "Pinned static SDL2 build was not found")
  endif()

  add_library(chimera-gfx-phase1-sdl2 STATIC IMPORTED)
  set_target_properties(chimera-gfx-phase1-sdl2 PROPERTIES
    IMPORTED_LOCATION "${CHIMERA_GFX_PHASE1_SDL_BUILD}/libSDL2.a"
    INTERFACE_INCLUDE_DIRECTORIES
      "${CHIMERA_GFX_PHASE1_SDL_BUILD}/include;${CHIMERA_GFX_PHASE1_SDL_BUILD}/include/SDL2;${CHIMERA_GFX_PHASE1_SDL_BUILD}/include-config-release;${CHIMERA_GFX_PHASE1_SDL_BUILD}/include-config-release/SDL2")

  add_executable(chimera-gfx-phase1-videoout-clear
    samples/phase1_videoout_clear/main.c)
  target_link_libraries(chimera-gfx-phase1-videoout-clear PRIVATE
    chimera-gfx-firmware-gate
    chimera-gfx-phase1-sdl2
    SceSystemService
    SceVideoOut)
  target_compile_definitions(chimera-gfx-phase1-videoout-clear PRIVATE
    "CHIMERA_GFX_PS5_ALLOWED_FIRMWARE=\"${CHIMERA_GFX_PS5_ALLOWED_FIRMWARE}\"")
  set_target_properties(chimera-gfx-phase1-videoout-clear PROPERTIES
    OUTPUT_NAME "chimera-gfx-phase1-videoout-clear.elf")
  chimera_gfx_project_warnings(chimera-gfx-phase1-videoout-clear)
endif()

if(BUILD_TESTING AND NOT CMAKE_CROSSCOMPILING)
  find_package(Python3 3.10 REQUIRED COMPONENTS Interpreter)
  find_program(CHIMERA_GFX_CLANG_FORMAT NAMES clang-format-18 clang-format)

  add_executable(chimera-gfx-core-tests tests/test_core.c)
  target_link_libraries(chimera-gfx-core-tests PRIVATE chimera-gfx)
  chimera_gfx_project_warnings(chimera-gfx-core-tests)
  add_test(NAME core_api COMMAND chimera-gfx-core-tests)

  add_executable(chimera-gfx-probe-tests tests/test_probe.c)
  target_link_libraries(chimera-gfx-probe-tests PRIVATE chimera-gfx-probe-logic)
  chimera_gfx_project_warnings(chimera-gfx-probe-tests)
  add_test(NAME probe_logic COMMAND chimera-gfx-probe-tests)

  add_executable(chimera-gfx-mock-integration-tests
    tests/test_mock_integration.c)
  target_link_libraries(chimera-gfx-mock-integration-tests PRIVATE chimera-gfx)
  chimera_gfx_project_warnings(chimera-gfx-mock-integration-tests)
  add_test(NAME mock_integration COMMAND chimera-gfx-mock-integration-tests)

  add_executable(chimera-gfx-adapter-scaffold-tests
    tests/test_adapters.c)
  target_link_libraries(chimera-gfx-adapter-scaffold-tests PRIVATE
    chimera-gfx-retroarch-scaffold
    chimera-gfx-sdl2-scaffold)
  chimera_gfx_project_warnings(chimera-gfx-adapter-scaffold-tests)
  add_test(NAME adapter_scaffolds COMMAND chimera-gfx-adapter-scaffold-tests)

  add_executable(chimera-gfx-firmware-gate-tests
    tests/test_firmware_gate.c)
  target_link_libraries(chimera-gfx-firmware-gate-tests PRIVATE
    chimera-gfx-firmware-gate)
  chimera_gfx_project_warnings(chimera-gfx-firmware-gate-tests)
  add_test(NAME firmware_gate COMMAND chimera-gfx-firmware-gate-tests)

  add_test(NAME generated_probe_symbols
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/generate_probe_symbols.py
      --manifest ${CMAKE_CURRENT_SOURCE_DIR}/manifests/ps5_gnm_symbols.json
      --output ${CMAKE_CURRENT_SOURCE_DIR}/src/backends/ps5/generated_probe_symbols.inc
      --check)
  add_test(NAME manifest_policy
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/verify_manifests.py
      --locks ${CMAKE_CURRENT_SOURCE_DIR}/manifests/upstreams.lock.json
      --symbols ${CMAKE_CURRENT_SOURCE_DIR}/manifests/ps5_gnm_symbols.json
      --sbom ${CMAKE_CURRENT_SOURCE_DIR}/manifests/sbom.spdx.json
      --artifact-schema
        ${CMAKE_CURRENT_SOURCE_DIR}/manifests/artifact-manifest.schema.json
      --denylist-schema
        ${CMAKE_CURRENT_SOURCE_DIR}/manifests/artifact-denylist.schema.json
      --denylist
        ${CMAKE_CURRENT_SOURCE_DIR}/manifests/artifact-denylist.json
      --runtime-profile-schema
        ${CMAKE_CURRENT_SOURCE_DIR}/manifests/controlled-runtime-profile.schema.json
      --runtime-profile
        ${CMAKE_CURRENT_SOURCE_DIR}/manifests/runtime/controlled-ps5-runtime-profile.json
      --phase06-audit
        ${CMAKE_CURRENT_SOURCE_DIR}/manifests/runtime/phase-0.6-loader-runtime-audit.json
      --phase07-audit
        ${CMAKE_CURRENT_SOURCE_DIR}/manifests/runtime/phase-0.7-offline-audit.json
      --phase07-proof
        ${CMAKE_CURRENT_SOURCE_DIR}/manifests/runtime/phase-0.7-kernelwrite-proof-matrix.json)
  add_test(NAME artifact_manifest_tools
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_manifest_tools.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME artifact_audit_logic
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_artifact_audit.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME artifact_execution_policy
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_execution_policy.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME minimal_startup_build_block
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_minimal_startup_block.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --cmake ${CMAKE_COMMAND}
      --compiler ${CMAKE_C_COMPILER})
  add_test(NAME phase05_audit_records
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase05_audit.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase06_loader_audit_records
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase06_audit.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase07_offline_audit_records
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase07_audit.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase08_read_only_preflight_records
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase08_preflight.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase08_remediation_records
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase08_remediation.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase09_anti_brick_design
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase09_transaction.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME phase09b_observer_audit
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase09b_observer_audit.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase09c_protocol
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase09c_protocol.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME phase09c_feasibility
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase09c_feasibility.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  if(CHIMERA_GFX_RUN_BRANCH_LOCAL_HISTORICAL_VALIDATORS)
    add_test(NAME phase09d_readback
      COMMAND ${Python3_EXECUTABLE}
        ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase09d_readback.py
        --root ${CMAKE_CURRENT_SOURCE_DIR})
    add_test(NAME phase09e_bootstrap_validation
      COMMAND ${Python3_EXECUTABLE}
        ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_phase09e_bootstrap.py
        --root ${CMAKE_CURRENT_SOURCE_DIR})
    add_test(NAME phase09er_provenance_validation
      COMMAND ${Python3_EXECUTABLE}
        ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_phase09er_provenance.py
        --root ${CMAKE_CURRENT_SOURCE_DIR})
    add_test(NAME phase09er2_correlation_validation
      COMMAND ${Python3_EXECUTABLE}
        ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_phase09er2_correlation.py
        --root ${CMAKE_CURRENT_SOURCE_DIR})
  endif()
  add_test(NAME phase09e_bootstrap_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase09e_bootstrap.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase09er_provenance_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase09er_provenance.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase09er2_correlation_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase09er2_correlation.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase09er2_siecaf_parser
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_siecaf_header_parser.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10a_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10a.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10a_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10a.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10b_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10b.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10b_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10b.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10d_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10d.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10d_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10d.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10e_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10e.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10e_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10e.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10f_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10f.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10f_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10f.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10g_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10g.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10g_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10g.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10g_result_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10g_result.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10g_result_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10g_result.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10h_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10h.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10h_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10h.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10h_result_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10h_result.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10h_result_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10h_result.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10i_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10i.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10i_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10i.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10j_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10j.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10j_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10j.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10k_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10k.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch)
  add_test(NAME retroarch_phase10k_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10k.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10l_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10l.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch)
  add_test(NAME retroarch_phase10l_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10l.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10m_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10m.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch)
  add_test(NAME retroarch_phase10m_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10m.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10n_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10n.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch)
  add_test(NAME retroarch_phase10n_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10n.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10o_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10o.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch)
  add_test(NAME retroarch_phase10o_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10o.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10p_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10p.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch
      --sdk-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/sdk
      --sdl-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/SDL)
  add_test(NAME retroarch_phase10p_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10p.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10q_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10q.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --sdk-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/sdk
      --sdl-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/SDL)
  add_test(NAME retroarch_phase10q_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10q.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10r_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10r.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch
      --sdk-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/sdk
      --sdl-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/SDL
      --elfldr-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-elfldr
      --manager-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-ps5-payload-manager
      --pacbrew-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/pacbrew-repo)
  add_test(NAME retroarch_phase10r_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10r.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10s_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10s.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --shsrv-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv
      --shsrv-v07-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv-v0.7
      --pacbrew-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/pacbrew-repo)
  add_test(NAME retroarch_phase10s_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10s.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10t_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10t.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --shsrv-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv
      --shsrv-v07-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv-v0.7)
  add_test(NAME retroarch_phase10t_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10t.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10t_shsrv_transcript
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10t_shsrv_transcript.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10u_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10u.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --shsrv-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv
      --shsrv-v07-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv-v0.7
      --pacbrew-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/pacbrew-repo)
  add_test(NAME retroarch_phase10u_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10u.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10v_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10v.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10v_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10v.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10v_shsrv_collector_model
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10v_shsrv_collector_model.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10w_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10w.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10w_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10w.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10w_shsrv_client_policy
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10w_shsrv_client_policy.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10x_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10x.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --shsrv-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv)
  add_test(NAME retroarch_phase10x_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10x.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10x_inactive_transport
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10x_inactive_transport.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10y_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10y.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --shsrv-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv)
  add_test(NAME retroarch_phase10y_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10y.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10y_shsrv_framing_model
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10y_shsrv_framing_model.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10z_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10z.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10z_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10z.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10z_passive_batch_contract
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10z_passive_batch_contract.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10aa_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10aa.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10aa_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10aa.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10aa_offline_fake_batch
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10aa_offline_fake_batch.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ab_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ab.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ab_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ab.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ab_nonblocking_trace_model
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ab_nonblocking_trace_model.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ac_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ac.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ac_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ac.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ac_dormant_adapter
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ac_dormant_adapter.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ad_activation_contract
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ad_activation_contract.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ad_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ad.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ad_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ad.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10ae_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ae.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --shsrv-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv
      --shsrv-v07-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv-v0.7)
  add_test(NAME retroarch_phase10ae_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ae.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10af_bigapp_lifecycle_model
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10af_bigapp_lifecycle_model.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10af_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10af.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10af_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10af.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ag_bounded_elf
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ag_bounded_elf.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ag_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ag.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ag_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ag.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ah_dynamic_contract
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ah_dynamic_contract.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10ah_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ah.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --shsrv-v07-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv-v0.7
      --sdk-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/sdk)
  add_test(NAME retroarch_phase10ah_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ah.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ai_mapping_model
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ai_mapping_model.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ai_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ai.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ai_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ai.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10aj_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10aj.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --shsrv-v07-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv-v0.7
      --hardened-elfldr-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-elfldr)
  add_test(NAME retroarch_phase10aj_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10aj.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ak_hybrid_composition
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ak_hybrid_composition.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ak_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ak.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ak_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ak.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10al_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10al.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --sdk-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/sdk)
  add_test(NAME retroarch_phase10al_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10al.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10am_bounded_copy_model
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10am_bounded_copy_model.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10am_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10am.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10am_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10am.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10an_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10an.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --hardened-elfldr-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-elfldr)
  add_test(NAME retroarch_phase10an_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10an.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ao_worker_supervisor_model
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ao_worker_supervisor_model.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ao_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ao.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ao_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ao.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10ap_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ap.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --sdk-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/sdk
      --shsrv-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv-v0.7)
  add_test(NAME retroarch_phase10ap_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ap.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10aq_worker_result_record
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10aq_worker_result_record.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10aq_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10aq.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10aq_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10aq.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ar_result_channel_model
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ar_result_channel_model.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ar_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ar.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ar_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ar.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10as_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10as.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --sdk-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/sdk
      --shsrv-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv-v0.7)
  add_test(NAME retroarch_phase10as_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10as.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10at_fd_deadline_model
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10at_fd_deadline_model.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10at_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10at.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10at_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10at.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10au_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10au.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --sdk-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/sdk
      --shsrv-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv-v0.7)
  add_test(NAME retroarch_phase10au_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10au.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10av_launch_context_canary
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10av_launch_context_canary.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10av_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10av.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10av_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10av.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10aw_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10aw.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch
      --shsrv-root ${CMAKE_CURRENT_SOURCE_DIR}/work/upstream/shsrv-v0.7)
  add_test(NAME retroarch_phase10aw_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10aw.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ax_canary_protocol_model
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ax_canary_protocol_model.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ax_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ax.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ax_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ax.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10ay_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ay.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch)
  add_test(NAME retroarch_phase10ay_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ay.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10az_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10az.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch-phase10az)
  add_test(NAME retroarch_phase10az_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10az.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10ba_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10ba.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch-phase10az)
  add_test(NAME retroarch_phase10ba_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ba.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10bb_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10bb.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch-phase10az)
  add_test(NAME retroarch_phase10bb_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bb.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bc_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bc.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  chimera_gfx_add_external_evidence_test(NAME retroarch_phase10bd_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10bd.py
      --root ${CMAKE_CURRENT_SOURCE_DIR}
      --retroarch-root ${CMAKE_CURRENT_SOURCE_DIR}/../chimera-retroarch-phase10az)
  add_test(NAME retroarch_phase10bd_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bd.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10be_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10be.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bf_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bf.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bg_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bg.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bh_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bh.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bi_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bi.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bj_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bj.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bk_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bk.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bl_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bl.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bm_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bm.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bn_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bn.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bo_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bo.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bp_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bp.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bq_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bq.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10br_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10br.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bs_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bs.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bt_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bt.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bu_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bu.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bv_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bv.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bw_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bw.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bx_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bx.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10by_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10by.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10bz_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10bz.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ca_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ca.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cb_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cb.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cc_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cc.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cd_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cd.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ce_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ce.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cf_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cf.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cg_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cg.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ch_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ch.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ci_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ci.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cj_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cj.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ck_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ck.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cl_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cl.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cm_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cm.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cn_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cn.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10co_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10co.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cp_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cp.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cq_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cq.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cr_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cr.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cs_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cs.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ct_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ct.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cu_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cu.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cv_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cv.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cw_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cw.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cx_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cx.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cy_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cy.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10cz_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10cz.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10db_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10db.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10dc_bigapp_gate_contract
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10dc_bigapp_gate_contract.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10dc_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10dc.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10dc_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10dc.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10dd_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10dd.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10de_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10de.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10df_title_observer_contract
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10df_title_observer_contract.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10df_validation
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/validate_retroarch_phase10df.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10df_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10df.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10dg_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10dg.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10dh_snapshot_query
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10dh_snapshot_query.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10di_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10di.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10dj_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10dj.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10dk_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10dk.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10dl_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10dl.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10dm_snapshot_protocol
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10dm_snapshot_protocol.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10dm_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10dm.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10dn_snapshot_receiver
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10dn_snapshot_receiver.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10dn_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10dn.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10dz_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10dz.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10ea_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10ea.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME retroarch_phase10eb_guardrails
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_retroarch_phase10eb.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10do_one_shot_snapshot_runner
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10do_one_shot_snapshot_runner.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10dq_inventory_protocol
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10dq_inventory_protocol.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10dr_inventory_runner
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10dr_inventory_runner.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10ds_metadata_protocol
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10ds_metadata_protocol.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10dt_metadata_runner
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10dt_metadata_runner.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10dv_package_stat_runner
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10dv_package_stat_runner.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase10dx_package_readback_runner
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tests/test_phase10dx_package_readback_runner.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME phase0_safety_audit
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/audit_phase0_safety.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  add_test(NAME repository_secret_scan
    COMMAND ${Python3_EXECUTABLE}
      ${CMAKE_CURRENT_SOURCE_DIR}/tools/scan_secrets.py
      --root ${CMAKE_CURRENT_SOURCE_DIR})
  if(CHIMERA_GFX_CLANG_FORMAT)
    add_test(NAME source_format
      COMMAND ${Python3_EXECUTABLE}
        ${CMAKE_CURRENT_SOURCE_DIR}/tools/check_format.py
        --root ${CMAKE_CURRENT_SOURCE_DIR}
        --clang-format ${CHIMERA_GFX_CLANG_FORMAT})
  endif()
endif()

install(TARGETS
    chimera-gfx
    chimera-gfx-retroarch-scaffold
    chimera-gfx-sdl2-scaffold
  EXPORT chimera-gfx-targets
  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT chimera-gfx-targets
  FILE chimera-gfx-targets.cmake
  NAMESPACE chimera-gfx::
  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/chimera-gfx)

configure_package_config_file(
  cmake/chimera-gfx-config.cmake.in
  ${CMAKE_CURRENT_BINARY_DIR}/chimera-gfx-config.cmake
  INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/chimera-gfx)
write_basic_package_version_file(
  ${CMAKE_CURRENT_BINARY_DIR}/chimera-gfx-config-version.cmake
  COMPATIBILITY SameMinorVersion)
install(FILES
  ${CMAKE_CURRENT_BINARY_DIR}/chimera-gfx-config.cmake
  ${CMAKE_CURRENT_BINARY_DIR}/chimera-gfx-config-version.cmake
  DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/chimera-gfx)
