cmake_minimum_required(VERSION 3.12)
project(wolf2009_animation_wire_checks LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(adapter "${CMAKE_CURRENT_SOURCE_DIR}/../../src/idtech4a_anim")
add_executable(wolf2009-animation-wire AnimationWireTest.cpp "${adapter}/AnimationWire.cpp")
target_include_directories(wolf2009-animation-wire PRIVATE "${adapter}")
enable_testing()
add_test(NAME wolf2009_animation_wire COMMAND wolf2009-animation-wire)
set(WOLF2009_MINIZ_SOURCE_DIR "" CACHE PATH "Optional pinned miniz source for archive checks")
set(WOLF2009_SP_BASE "" CACHE PATH "Optional owner-supplied SP/base for read-only animation checks")
if(WOLF2009_SP_BASE)
    set(core "${CMAKE_CURRENT_SOURCE_DIR}/../../src/wolf2009")
    if(WOLF2009_MINIZ_SOURCE_DIR)
        add_library(animation_source_miniz STATIC "${WOLF2009_MINIZ_SOURCE_DIR}/miniz.c")
        target_include_directories(animation_source_miniz PUBLIC "${WOLF2009_MINIZ_SOURCE_DIR}")
        set(compression animation_source_miniz)
    else()
        find_package(ZLIB REQUIRED)
        set(compression ZLIB::ZLIB)
    endif()
    add_executable(wolf2009-animation-source AnimationSourceTest.cpp "${adapter}/AnimationWire.cpp"
        "${core}/GreeterAnimation.cpp" "${core}/StreamMounts.cpp" "${core}/Archive.cpp")
    target_include_directories(wolf2009-animation-source PRIVATE "${adapter}" "${core}")
    target_link_libraries(wolf2009-animation-source PRIVATE ${compression})
    if(WOLF2009_MINIZ_SOURCE_DIR)
        target_compile_definitions(wolf2009-animation-source PRIVATE WOLF2009_USE_MINIZ)
    endif()
    add_test(NAME wolf2009_animation_source COMMAND wolf2009-animation-source --source-base "${WOLF2009_SP_BASE}")
endif()
