add_subdirectory(ConcurrentQueue)
add_subdirectory(Fmt)
add_subdirectory(xxHash)
add_subdirectory(RPMalloc)
add_subdirectory(Squirrel)
add_subdirectory(SimpleIni)
add_subdirectory(TinyDir)
add_subdirectory(SAJSON)
add_subdirectory(CPR)
add_subdirectory(UTF8)
add_subdirectory(JSON)
add_subdirectory(Inja)
add_subdirectory(PUGIXML)
add_subdirectory(CivetWeb)
if (ENABLE_BUILTIN_MYSQL_C)
    set(WITH_MSI OFF CACHE INTERNAL "" FORCE)
    set(WITH_UNIT_TESTS OFF CACHE INTERNAL "" FORCE)
    set(WITH_EXTERNAL_ZLIB ON CACHE INTERNAL "" FORCE)
    set(WITH_CURL ON CACHE INTERNAL "" FORCE)
    set(WITH_SSL ON CACHE INTERNAL "" FORCE)
    add_subdirectory(MDBC)
endif()
set(BUILD_TESTING OFF CACHE INTERNAL "" FORCE)
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE)
add_subdirectory(MaxmindDB)
#set(POCO_STATIC ON CACHE INTERNAL "" FORCE)
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE)
set(ENABLE_FOUNDATION ON CACHE INTERNAL "" FORCE)
set(ENABLE_ENCODINGS ON CACHE INTERNAL "" FORCE)
set(ENABLE_ENCODINGS_COMPILER OFF CACHE INTERNAL "" FORCE)
set(ENABLE_XML ON CACHE INTERNAL "" FORCE)
set(ENABLE_JSON ON CACHE INTERNAL "" FORCE)
set(ENABLE_MONGODB OFF CACHE INTERNAL "" FORCE)
set(ENABLE_DATA_ODBC OFF CACHE INTERNAL "" FORCE)
set(ENABLE_DATA_SQLITE ON CACHE INTERNAL "" FORCE)
set(ENABLE_REDIS OFF CACHE INTERNAL "" FORCE)
set(ENABLE_PDF OFF CACHE INTERNAL "" FORCE)
set(ENABLE_UTIL ON CACHE INTERNAL "" FORCE)
set(ENABLE_NET ON CACHE INTERNAL "" FORCE)
set(ENABLE_NETSSL ON CACHE INTERNAL "" FORCE)
set(ENABLE_SEVENZIP OFF CACHE INTERNAL "" FORCE)
set(ENABLE_ZIP OFF CACHE INTERNAL "" FORCE)
set(ENABLE_CPPPARSER OFF CACHE INTERNAL "" FORCE)
set(ENABLE_POCODOC OFF CACHE INTERNAL "" FORCE)
set(ENABLE_PAGECOMPILER OFF CACHE INTERNAL "" FORCE)
set(ENABLE_PAGECOMPILER_FILE2PAGE OFF CACHE INTERNAL "" FORCE)
set(ENABLE_TESTS OFF CACHE INTERNAL "" FORCE)
set(ENABLE_ACTIVERECORD OFF CACHE INTERNAL "" FORCE)
set(ENABLE_ACTIVERECORD_COMPILER OFF CACHE INTERNAL "" FORCE)
set(POCO_UNBUNDLED OFF CACHE INTERNAL "" FORCE)
# Manualy enable some options if available
find_package(MySQL)
if(MYSQL_FOUND)
    set(ENABLE_DATA_MYSQL ON CACHE INTERNAL "" FORCE)
endif()
find_package(PostgreSQL)
if(PostgreSQL_FOUND)
    set(ENABLE_DATA_POSTGRESQL ON CACHE INTERNAL "" FORCE)
endif()
add_subdirectory(POCO)
# Windows gets stupid sometimes
if (WIN32 AND MINGW)
    target_compile_definitions(Foundation PUBLIC POCO_NO_FPENVIRONMENT=1)
endif()
# We have these on GCC
if(MINGW OR GCC)
    set(ENABLE_INTRINSICS ON CACHE INTERNAL "" FORCE)
endif()
set(BUILD_TESTS OFF CACHE INTERNAL "" FORCE)
set(BUILD_SHARED OFF CACHE INTERNAL "" FORCE)
set(BUILD_STATIC ON CACHE INTERNAL "" FORCE)
if (WIN32 OR MINGW)
    set(ZMQ_HAVE_IPC OFF CACHE INTERNAL "" FORCE)
endif()
add_subdirectory(ZMQ)
if(ENABLE_DISCORD)
    set(BUILD_TESTING OFF CACHE INTERNAL "" FORCE)
    set(BUILD_VOICE_SUPPORT OFF CACHE INTERNAL "" FORCE)
    set(DPP_INSTALL OFF CACHE INTERNAL "" FORCE)
    set(DPP_BUILD_TEST OFF CACHE INTERNAL "" FORCE)
    set(DPP_NO_VCPKG ON CACHE INTERNAL "" FORCE)
    set(DPP_CORO OFF CACHE INTERNAL "" FORCE)
    set(DPP_USE_EXTERNAL_JSON ON CACHE INTERNAL "" FORCE)
    if (WIN32 OR MINGW)
        set(BUILD_SHARED_LIBS ON CACHE INTERNAL "" FORCE)
    endif()
    add_subdirectory(DPP)
    target_link_libraries(dpp PRIVATE nlohmann_json)
    set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE)
    # We don't care about DPP warnings
    if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
        target_compile_options(dpp PRIVATE -w)
    elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
        target_compile_options(dpp PRIVATE -w)
    elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
        target_compile_options(dpp PRIVATE /w)
    endif()
endif()
