BareGit
include(FetchContent)

# Declare transitive content first because FetchContent uses the first
# declaration it encounters. This keeps every dependency on a floating branch.
FetchContent_Declare(
    httplib
    GIT_REPOSITORY https://github.com/yhirose/cpp-httplib.git
    GIT_TAG master
    GIT_SHALLOW TRUE
)
FetchContent_Declare(
    json
    GIT_REPOSITORY https://github.com/nlohmann/json.git
    GIT_TAG develop
    GIT_SHALLOW TRUE
)
FetchContent_Declare(
    uni-algo
    GIT_REPOSITORY https://github.com/uni-algo/uni-algo.git
    GIT_TAG main
    GIT_SHALLOW TRUE
)

FetchContent_Declare(
    libmw
    GIT_REPOSITORY https://github.com/MetroWind/libmw.git
    GIT_TAG master
    GIT_SHALLOW TRUE
)
FetchContent_Declare(
    macrodown
    GIT_REPOSITORY https://git.xeno.darksair.org/macrodown.git
    GIT_TAG master
    GIT_SHALLOW TRUE
)
FetchContent_Declare(
    tomlplusplus
    GIT_REPOSITORY https://github.com/marzer/tomlplusplus.git
    GIT_TAG master
    GIT_SHALLOW TRUE
)
FetchContent_Declare(
    inja
    GIT_REPOSITORY https://github.com/pantor/inja.git
    GIT_TAG main
    GIT_SHALLOW TRUE
)
FetchContent_Declare(
    spdlog
    GIT_REPOSITORY https://github.com/gabime/spdlog.git
    GIT_TAG v1.x
    GIT_SHALLOW TRUE
)
FetchContent_Declare(
    googletest
    GIT_REPOSITORY https://github.com/google/googletest.git
    GIT_TAG main
    GIT_SHALLOW TRUE
)

set(LIBMW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(LIBMW_BUILD_URL ON CACHE BOOL "" FORCE)
set(LIBMW_BUILD_SQLITE ON CACHE BOOL "" FORCE)
set(LIBMW_BUILD_HTTP_SERVER ON CACHE BOOL "" FORCE)
set(LIBMW_BUILD_CRYPTO ON CACHE BOOL "" FORCE)

set(INJA_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(INJA_EXPORT OFF CACHE BOOL "" FORCE)
set(INJA_INSTALL OFF CACHE BOOL "" FORCE)
set(INJA_USE_EMBEDDED_JSON OFF CACHE BOOL "" FORCE)

set(SPDLOG_BUILD_EXAMPLE OFF CACHE BOOL "" FORCE)
set(SPDLOG_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(SPDLOG_INSTALL OFF CACHE BOOL "" FORCE)
set(SPDLOG_USE_STD_FORMAT ON CACHE BOOL "" FORCE)

FetchContent_MakeAvailable(
    spdlog
    json
    uni-algo
    libmw
    macrodown
    tomlplusplus
    inja
)

if(CARD_COLLECTION_BUILD_TESTS)
    set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
    FetchContent_MakeAvailable(googletest)
endif()

find_package(
    ImageMagick 7 REQUIRED
    COMPONENTS Magick++ MagickWand MagickCore
)