cmake_minimum_required(VERSION 3.20)
project(serious_sam_manual_tests C)
set(XBOXRECOMP_DIR "${CMAKE_CURRENT_LIST_DIR}/../../xboxrecomp_ss" CACHE PATH "Runtime headers")
add_executable(fence_submit_test fence_submit_test.c ../src/recomp_manual.c)
add_executable(stream_close_test stream_close_test.c ../src/recomp_manual.c)
add_executable(dsound_idle_test dsound_idle_test.c ../src/recomp_manual.c)
add_executable(menu_present_test menu_present_test.c ../src/recomp_manual.c)
add_executable(pc_controls_test pc_controls_test.c)
target_link_libraries(pc_controls_test PRIVATE user32)
foreach(test_target fence_submit_test stream_close_test dsound_idle_test menu_present_test)
target_sources(${test_target} PRIVATE pc_controls_stubs.c)
endforeach()
foreach(test_target fence_submit_test stream_close_test dsound_idle_test menu_present_test pc_controls_test)
target_include_directories(${test_target} PRIVATE "${XBOXRECOMP_DIR}/include" "${XBOXRECOMP_DIR}/src")
foreach(module kernel d3d audio input apu nv2a)
    target_include_directories(${test_target} PRIVATE "${XBOXRECOMP_DIR}/src/${module}")
endforeach()
endforeach()
enable_testing()
add_test(NAME fence_submit COMMAND fence_submit_test)
add_test(NAME stream_close COMMAND stream_close_test)
add_test(NAME dsound_idle COMMAND dsound_idle_test)
add_test(NAME menu_present COMMAND menu_present_test)
add_test(NAME pc_controls COMMAND pc_controls_test)
add_executable(pc_settings_test pc_settings_test.c)
add_test(NAME pc_settings COMMAND pc_settings_test)

find_package(Python3 REQUIRED COMPONENTS Interpreter)
set(SAM_GEN "${CMAKE_CURRENT_LIST_DIR}/../src/recomp/gen")
execute_process(COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_LIST_DIR}/extract_menu_animation.py"
    "${SAM_GEN}/recomp_0001.c" "${CMAKE_CURRENT_BINARY_DIR}/sam_menu_animation.inc"
    COMMAND_ERROR_IS_FATAL ANY)
target_include_directories(pc_controls_test PRIVATE "${SAM_GEN}" "${CMAKE_CURRENT_BINARY_DIR}")
execute_process(COMMAND "${Python3_EXECUTABLE}" "${CMAKE_CURRENT_LIST_DIR}/extract_lightmap_mask.py"
    "${SAM_GEN}/recomp_0054.c" "${CMAKE_CURRENT_BINARY_DIR}/sam_lightmap_mask.inc"
    COMMAND_ERROR_IS_FATAL ANY)
add_executable(lightmap_mask_test lightmap_mask_test.c)
target_include_directories(lightmap_mask_test PRIVATE "${SAM_GEN}" "${CMAKE_CURRENT_BINARY_DIR}")
add_test(NAME lightmap_mask COMMAND lightmap_mask_test)
