summaryrefslogtreecommitdiff
path: root/bot/CMakeLists.txt
blob: 18307e5656301eff68fcb042bb576e0884509dba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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)

# 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
    z
    opus
    zmq
)

# Include directories
target_include_directories(${PROJECT_NAME} PRIVATE
    ${DPP_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()