cmake_minimum_required(VERSION 3.25)
project(MaxSpinNativeWindowContracts C)
if(NOT WIN32)
 message(FATAL_ERROR "Requires native Windows")
endif()
find_package(Vulkan REQUIRED)
add_executable(window_lifetime ../tests/window_lifetime.c ../src/host_windows.c)
target_include_directories(window_lifetime PRIVATE ../src "${TOPSPIN_SDK_ROOT}/src/d3d" "${TOPSPIN_SDK_ROOT}/src" ../runtime)
target_compile_definitions(window_lifetime PRIVATE GUEST_TURN_NO_WRAPPERS)
target_link_libraries(window_lifetime PRIVATE Vulkan::Vulkan user32 advapi32)
target_link_options(window_lifetime PRIVATE -municode)
enable_testing()
add_test(NAME window_lifetime COMMAND window_lifetime)
set_tests_properties(window_lifetime PROPERTIES TIMEOUT 90)
add_executable(native_io ../tests/native_io.c ../src/host_windows.c "${TOPSPIN_FRONTEND_INCLUDE}/sprite_ui_admission.c")
target_include_directories(native_io PRIVATE ../src ../runtime "${TOPSPIN_FRONTEND_INCLUDE}" "${TOPSPIN_SDK_ROOT}/src" "${TOPSPIN_SDK_ROOT}/src/d3d")
target_compile_definitions(native_io PRIVATE GUEST_TURN_NO_WRAPPERS)
target_compile_options(native_io PRIVATE -include "${CMAKE_CURRENT_SOURCE_DIR}/../src/host_windows.h")
target_link_libraries(native_io PRIVATE Vulkan::Vulkan user32 advapi32 pthread)
add_test(NAME native_io COMMAND native_io "${TOPSPIN_NATIVE_CACHE}/sprite-ui-v1-menu")
add_executable(apu_mmio ../tests/apu_mmio.c "${TOPSPIN_SDK_ROOT}/src/apu/apu_mmio_hook.c")
target_include_directories(apu_mmio PRIVATE "${TOPSPIN_SDK_ROOT}/src/apu")
add_test(NAME apu_mmio COMMAND apu_mmio)
