# SPDX-License-Identifier: GPL-3.0-or-later
cmake_minimum_required(VERSION 3.12)
project(wolf2009_source_actor_binding_checks LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(core "${CMAKE_CURRENT_SOURCE_DIR}/../../src/wolf2009")
set(anim "${CMAKE_CURRENT_SOURCE_DIR}/../../src/idtech4a_anim")
add_library(source_actor_binding STATIC "${anim}/SourceActorBinding.cpp"
    "${core}/CompiledDeclarations.cpp" "${core}/CompiledDeclarationCatalog.cpp"
    "${core}/CompiledDeclarationNamespace.cpp" "${core}/SourceDefinitions.cpp")
target_include_directories(source_actor_binding PUBLIC "${anim}" "${core}")
if(NOT MSVC)
    target_compile_options(source_actor_binding PRIVATE -ffp-contract=off -fno-fast-math)
endif()
set(WOLF2009_MINIZ_SOURCE_DIR "" CACHE PATH "Optional existing pinned miniz directory")
if(WOLF2009_MINIZ_SOURCE_DIR)
    add_library(actor_compression STATIC "${WOLF2009_MINIZ_SOURCE_DIR}/miniz.c")
    target_include_directories(actor_compression PUBLIC "${WOLF2009_MINIZ_SOURCE_DIR}")
    target_compile_definitions(actor_compression PUBLIC WOLF2009_USE_MINIZ)
else()
    find_package(ZLIB REQUIRED)
    add_library(actor_compression INTERFACE)
    target_link_libraries(actor_compression INTERFACE ZLIB::ZLIB)
endif()
add_library(actor_archives STATIC "${core}/Archive.cpp" "${core}/ZipArchive.cpp")
target_include_directories(actor_archives PUBLIC "${core}")
target_link_libraries(actor_archives PUBLIC actor_compression)
add_executable(wolf2009-source-actor-binding SourceActorBindingTest.cpp)
target_link_libraries(wolf2009-source-actor-binding PRIVATE source_actor_binding actor_archives)
enable_testing()
add_test(NAME wolf2009_source_actor_binding_synthetic COMMAND wolf2009-source-actor-binding --self-test)
set(WOLF2009_SOURCE_ACTOR_SP_BASE "" CACHE PATH "Optional owner-supplied original SP/base")
if(WOLF2009_SOURCE_ACTOR_SP_BASE)
    add_test(NAME wolf2009_source_actor_binding_original COMMAND wolf2009-source-actor-binding --source-base "${WOLF2009_SOURCE_ACTOR_SP_BASE}")
endif()
