# SPDX-License-Identifier: GPL-3.0-or-later
cmake_minimum_required(VERSION 3.16)
project(wolf2009_source_map_bodies LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(core "${CMAKE_CURRENT_SOURCE_DIR}/../../src/wolf2009")
add_library(source_map_bodies STATIC "${core}/SourceMapBodies.cpp" "${core}/Entities.cpp")
target_include_directories(source_map_bodies PUBLIC "${core}")
set(WOLF2009_MINIZ_SOURCE_DIR "" CACHE PATH "Optional existing pinned miniz source")
if(WOLF2009_MINIZ_SOURCE_DIR)
    add_library(map_bodies_compression STATIC "${WOLF2009_MINIZ_SOURCE_DIR}/miniz.c")
    target_include_directories(map_bodies_compression PUBLIC "${WOLF2009_MINIZ_SOURCE_DIR}")
    target_compile_definitions(map_bodies_compression PUBLIC WOLF2009_USE_MINIZ)
else()
    find_package(ZLIB REQUIRED)
    add_library(map_bodies_compression INTERFACE)
    target_link_libraries(map_bodies_compression INTERFACE ZLIB::ZLIB)
endif()
add_library(map_bodies_archives STATIC "${core}/Archive.cpp")
target_include_directories(map_bodies_archives PUBLIC "${core}")
target_link_libraries(map_bodies_archives PUBLIC map_bodies_compression)
add_executable(wolf2009-source-map-bodies SourceMapBodiesTest.cpp)
target_include_directories(wolf2009-source-map-bodies PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/..")
target_link_libraries(wolf2009-source-map-bodies PRIVATE source_map_bodies map_bodies_archives)
enable_testing()
add_test(NAME source_map_bodies_synthetic COMMAND wolf2009-source-map-bodies --self-test)
set(WOLF2009_SOURCE_MAP_BODIES_MPK "" CACHE FILEPATH "Optional owner-supplied original map MPK")
if(WOLF2009_SOURCE_MAP_BODIES_MPK)
    add_test(NAME source_map_bodies_original COMMAND wolf2009-source-map-bodies --source-map "${WOLF2009_SOURCE_MAP_BODIES_MPK}")
endif()
