cmake_minimum_required(VERSION 3.16)
project(wolf2009_source_sound_checks LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(core "${CMAKE_CURRENT_SOURCE_DIR}/../../src/wolf2009")
set(WOLF2009_MINIZ_SOURCE_DIR "" CACHE PATH "Optional existing pinned miniz source")
set(WOLF2009_SOURCE_SOUND_GLOBAL_DECLS "" CACHE FILEPATH "Optional owner-provided global compiled declarations")
set(WOLF2009_SOURCE_SOUND_TRAINYARD_MPK "" CACHE FILEPATH "Optional owner-provided trainyard map")
add_library(source_sound_inputs STATIC "${core}/SourceSound.cpp" "${core}/CompiledDeclarations.cpp"
    "${core}/CompiledDeclarationCatalog.cpp" "${core}/Archive.cpp")
target_include_directories(source_sound_inputs PUBLIC "${core}")
if(WOLF2009_MINIZ_SOURCE_DIR)
    add_library(source_sound_miniz STATIC "${WOLF2009_MINIZ_SOURCE_DIR}/miniz.c")
    target_include_directories(source_sound_inputs PRIVATE "${WOLF2009_MINIZ_SOURCE_DIR}")
    target_compile_definitions(source_sound_inputs PRIVATE WOLF2009_USE_MINIZ)
    target_link_libraries(source_sound_inputs PUBLIC source_sound_miniz)
else()
    find_package(ZLIB REQUIRED)
    target_link_libraries(source_sound_inputs PUBLIC ZLIB::ZLIB)
endif()
add_executable(wolf2009-source-sound SourceSoundTest.cpp)
target_link_libraries(wolf2009-source-sound PRIVATE source_sound_inputs)
enable_testing()
add_test(NAME source_sound_synthetic COMMAND wolf2009-source-sound --self-test)
if(WOLF2009_SOURCE_SOUND_GLOBAL_DECLS)
    add_test(NAME source_sound_original_player COMMAND wolf2009-source-sound --source-global-decls "${WOLF2009_SOURCE_SOUND_GLOBAL_DECLS}")
endif()
if(WOLF2009_SOURCE_SOUND_TRAINYARD_MPK)
    add_test(NAME source_sound_original_world COMMAND wolf2009-source-sound --source-map "${WOLF2009_SOURCE_SOUND_TRAINYARD_MPK}")
endif()
