cmake_minimum_required(VERSION 3.16)
project(NESRecompExternalRomGateSelftest C CXX)

set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(external_rom_gate_selftest
    external_rom_gate_selftest.cpp
    ../../runner/src/mod_runtime.cpp
    ../../runner/src/crc32.c
)
target_include_directories(external_rom_gate_selftest PRIVATE
    ../../runner/include
)
if(MSVC)
    target_compile_options(external_rom_gate_selftest PRIVATE /utf-8)
endif()

enable_testing()
add_test(NAME external_rom_gate_selftest COMMAND external_rom_gate_selftest)

set(RECOMP_UI_ROOT "" CACHE PATH "Optional recomp-ui checkout for launcher provider tests")
if(RECOMP_UI_ROOT)
    add_executable(feature_constraints_selftest feature_constraints_selftest.cpp
        ../../runner/src/mod_runtime.cpp ../../runner/src/crc32.c)
    target_include_directories(feature_constraints_selftest PRIVATE ../../runner/include "${RECOMP_UI_ROOT}/src")
    target_compile_definitions(feature_constraints_selftest PRIVATE RECOMP_LAUNCHER)
    add_test(NAME feature_constraints_selftest COMMAND feature_constraints_selftest)
    add_executable(hd_pack_selftest hd_pack_selftest.cpp
        ../../runner/src/mod_runtime.cpp ../../runner/src/crc32.c)
    target_include_directories(hd_pack_selftest PRIVATE ../../runner/include "${RECOMP_UI_ROOT}/src")
    target_compile_definitions(hd_pack_selftest PRIVATE RECOMP_LAUNCHER)
    add_test(NAME hd_pack_selftest COMMAND hd_pack_selftest)
endif()
