if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
  cmake_minimum_required(VERSION 3.22)
  project(tacextract LANGUAGES CXX)
endif()

include("${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/CompilerWarnings.cmake")
if(NOT TARGET ShenmueDKStatic)
  add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/../../libs/ShenmueDK" "${CMAKE_CURRENT_BINARY_DIR}/shendk" EXCLUDE_FROM_ALL)
endif()
find_package(jsoncpp CONFIG QUIET)
if(NOT TARGET JsonCpp::JsonCpp AND NOT TARGET jsoncpp_static AND NOT TARGET jsoncpp_lib)
  include(FetchContent)
  set(JSONCPP_WITH_TESTS OFF CACHE BOOL "" FORCE)
  set(JSONCPP_WITH_POST_BUILD_UNITTEST OFF CACHE BOOL "" FORCE)
  set(JSONCPP_WITH_EXAMPLE OFF CACHE BOOL "" FORCE)
  set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
  FetchContent_Declare(jsoncpp
    GIT_REPOSITORY https://github.com/open-source-parsers/jsoncpp.git
    GIT_TAG 1.9.6
    GIT_SHALLOW TRUE)
  FetchContent_MakeAvailable(jsoncpp)
endif()
if(TARGET JsonCpp::JsonCpp)
  set(ARCHIVE_JSONCPP_TARGET JsonCpp::JsonCpp)
elseif(TARGET jsoncpp_static)
  set(ARCHIVE_JSONCPP_TARGET jsoncpp_static)
else()
  set(ARCHIVE_JSONCPP_TARGET jsoncpp_lib)
endif()

add_executable(tacextract extract.cpp ../../src/common/archive_data.cpp)
target_compile_features(tacextract PRIVATE cxx_std_20)
target_include_directories(tacextract PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../../src")
target_link_libraries(tacextract PRIVATE ShenmueDKStatic ${ARCHIVE_JSONCPP_TARGET})
if(WIN32)
  target_compile_definitions(tacextract PRIVATE NOMINMAX)
endif()
shenmue_set_project_warnings(tacextract)
