cmake_minimum_required(VERSION 3.28)
project(dppbots)
set(CMAKE_CXX_STANDARD 23)

set(CMAKE_POLICY_VERSION_MINIMUM 3.5)

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

file(GLOB REQUIRED_CMAKE_FILES
    "${CMAKE_CURRENT_SOURCE_DIR}/cmake/*.cmake.required"
)
foreach(cmake_file ${REQUIRED_CMAKE_FILES})
    include(${cmake_file})
endforeach()

include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/opus.cmake")
file(GLOB CMAKE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/cmake/*.cmake")
foreach(cmake_file ${CMAKE_FILES})
    include(${cmake_file})
endforeach()

if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Windows")
    target_compile_options(dpp PRIVATE -fpermissive)
endif ()

set(CMAKE_FOLDER "00-project")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/00_project")

set(CMAKE_FOLDER "01-basics")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/01_first_bot")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/02_embeds")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/03_private_messages")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/04_adding_files")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/05_webhooks")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/06_callbacks")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/07_cache")
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/01_basics/08_listening_to_messages")
