summaryrefslogtreecommitdiff
path: root/bot/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'bot/CMakeLists.txt')
-rw-r--r--bot/CMakeLists.txt78
1 files changed, 78 insertions, 0 deletions
diff --git a/bot/CMakeLists.txt b/bot/CMakeLists.txt
new file mode 100644
index 0000000..5fef1c3
--- /dev/null
+++ b/bot/CMakeLists.txt
@@ -0,0 +1,78 @@
+cmake_minimum_required(VERSION 3.15)
+project(discord-bot VERSION 1.0 DESCRIPTION "A Discord bot using DPP library")
+
+# Required for DPP and modern C++ features
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+# Find required dependencies
+find_package(OpenSSL REQUIRED)
+find_package(ZLIB REQUIRED)
+
+# Configure DPP library (assuming you have it installed via Nix)
+find_package(dpp REQUIRED
+ HINTS ${DPP_INCLUDE_DIR} # Add path if needed: /nix/store/.../include
+)
+file(GLOB_RECURSE SRC_FILES
+ include/*.cpp
+ include/*.hpp
+)
+# Add executable
+add_executable(${PROJECT_NAME}
+ src/main.cpp
+ ${SRC_FILES}
+ # Add other source files here
+)
+
+
+# Link libraries with proper dependencies
+target_link_libraries(${PROJECT_NAME} PRIVATE
+ dpp
+ OpenSSL::SSL
+ OpenSSL::Crypto
+ ZLIB::ZLIB
+ pthread # Required for DPP's threading
+)
+
+# Include directories
+target_include_directories(${PROJECT_NAME} PRIVATE
+ ${DPP_INCLUDE_DIRS}
+ ${OPENSSL_INCLUDE_DIR}
+ ${Sodium_INCLUDE_DIRS}
+)
+
+# macOS ARM64 specific fixes
+if(APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
+ target_compile_options(${PROJECT_NAME} PRIVATE
+ -arch arm64
+ -I/opt/homebrew/opt/openssl/include # If using Homebrew
+ )
+ target_link_options(${PROJECT_NAME} PRIVATE
+ -arch arm64
+ -L/opt/homebrew/opt/openssl/lib # If using Homebrew
+ )
+elseif(APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
+ target_compile_options(${PROJECT_NAME} PRIVATE
+ -arch x86_64
+ -I/opt/homebrew/opt/openssl/include # If using Homebrew
+ )
+ target_link_options(${PROJECT_NAME} PRIVATE
+ -arch x86_64
+ -L/opt/homebrew/opt/openssl/lib # If using Homebrew
+ )
+elseif(UNIX AND NOT APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
+ target_compile_options(${PROJECT_NAME} PRIVATE
+ -m64
+ )
+ target_link_options(${PROJECT_NAME} PRIVATE
+ -m64
+ )
+elseif(UNIX AND NOT APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
+ target_compile_options(${PROJECT_NAME} PRIVATE
+ -marm
+ )
+ target_link_options(${PROJECT_NAME} PRIVATE
+ -marm
+ )
+endif()