# SPDX-License-Identifier: GPL-3.0-or-later
cmake_minimum_required(VERSION 3.12)
project(wolf2009_spline_clip_checks LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(core "${CMAKE_CURRENT_SOURCE_DIR}/../../src/wolf2009")
add_library(wolf2009_spline_clip STATIC "${core}/SplineClipData.cpp" "${core}/SplineTransformCodec.cpp")
target_include_directories(wolf2009_spline_clip PUBLIC "${core}")
if(NOT MSVC)
    target_compile_options(wolf2009_spline_clip PRIVATE -ffp-contract=off -fno-fast-math)
endif()
add_executable(wolf2009-spline-clip SplineClipDataTest.cpp)
target_link_libraries(wolf2009-spline-clip PRIVATE wolf2009_spline_clip)
enable_testing()
add_test(NAME wolf2009_spline_clip_synthetic COMMAND wolf2009-spline-clip)
set(WOLF2009_SPLINE_CLIP_SOURCE_BASE "" CACHE PATH "Optional owner's read-only SP/base")
set(WOLF2009_MINIZ_SOURCE_DIR "" CACHE PATH "Optional existing pinned miniz source directory")
if(WOLF2009_SPLINE_CLIP_SOURCE_BASE)
    if(WOLF2009_MINIZ_SOURCE_DIR)
        add_library(spline_clip_miniz STATIC "${WOLF2009_MINIZ_SOURCE_DIR}/miniz.c")
        target_include_directories(spline_clip_miniz PUBLIC "${WOLF2009_MINIZ_SOURCE_DIR}")
        set(compression spline_clip_miniz)
    else()
        find_package(ZLIB REQUIRED)
        set(compression ZLIB::ZLIB)
    endif()
    add_executable(wolf2009-spline-clip-source SourceCompatibility.cpp
        "${core}/StreamMounts.cpp" "${core}/Archive.cpp" "${core}/GreeterAnimation.cpp")
    target_link_libraries(wolf2009-spline-clip-source PRIVATE wolf2009_spline_clip ${compression})
    if(WOLF2009_MINIZ_SOURCE_DIR)
        target_compile_definitions(wolf2009-spline-clip-source PRIVATE WOLF2009_USE_MINIZ)
    endif()
    add_test(NAME wolf2009_spline_clip_source COMMAND wolf2009-spline-clip-source
        --source-base "${WOLF2009_SPLINE_CLIP_SOURCE_BASE}")
endif()
