Skip to content

Commit d37ad95

Browse files
committed
Merge branch 'develop'
2 parents 93d8228 + d095bc2 commit d37ad95

File tree

141 files changed

+23691
-2248
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+23691
-2248
lines changed

.gitignore

+6-3
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,11 @@ ModelManifest.xml
262262
*.db
263263
*.opendb
264264

265+
# Visual Studio CMake files
266+
out/
267+
CMakeSettings.json
268+
265269
#my files
266-
/deps/
267-
/thirdparty/
270+
deps/
268271
/discord token.txt
269-
include/sleepy_discord/version\.h
272+
include/sleepy_discord/version.h

.travis.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ addons:
99
packages:
1010
- gcc-5
1111
- g++-5
12+
- cmake
13+
- libcurl4-openssl-dev
1214

1315
install:
1416
- export CXX="g++-5" CC="gcc-5";
1517

1618
script:
1719
- g++-5 --version
1820
- cd buildtools
19-
- cmake .. -DBUILD_SLEEPY_DISCORD_EXAMPLES=1
21+
- cmake .. -DSLEEPY_DISCORD_BUILD_EXAMPLES=1
2022
- make

CMakeLists.txt

+131-44
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.6)
22
project(sleepy-discord)
33

44
option(BUILD_EXAMPLES "Build examples of Sleepy Discord and all dependencies" OFF)
5-
option(BUILD_SLEEPY_DISCORD_EXAMPLES "Build examples of Sleepy Discord" OFF)
5+
option(SLEEPY_DISCORD_BUILD_EXAMPLES "Build examples of Sleepy Discord" OFF)
66
option(ONLY_SLEEPY_DISCORD "Sleepy Discord but none of the dependencies, except build in onces" OFF)
77
option(ENABLE_VOICE "Enable voice support" OFF)
88
if (NOT ONLY_SLEEPY_DISCORD)
@@ -15,9 +15,12 @@ if (NOT ONLY_SLEEPY_DISCORD)
1515
option(USE_LIBSODIUM "Use libsodium cryptography library" OFF)
1616
endif()
1717

18+
#Define a variable to use to check if this file has been executed
19+
set(SLEEPY_DISCORD_CMAKE ON)
20+
1821
#set variables based on other variables
1922
if(BUILD_EXAMPLES)
20-
set(BUILD_SLEEPY_DISCORD_EXAMPLES ON)
23+
set(SLEEPY_DISCORD_BUILD_EXAMPLES ON)
2124
endif()
2225

2326
if(ENABLE_VOICE)
@@ -29,50 +32,31 @@ if(USE_WEBSOCKETPP OR USE_UWEBSOCKETS)
2932
set(USE_ASIO ON)
3033
endif()
3134

35+
find_package(Git)
36+
3237
# Find and Download libraries
3338
if(AUTO_DOWNLOAD_LIBRARY)
39+
40+
if(NOT Git_FOUND)
41+
string(CONCAT GIT_NOT_FOUND_WARNING
42+
"GIT was not found, CMake list will likely fail. "
43+
"Please make sure that GIT is inside your PATH variable")
44+
message(WARNING ${GIT_NOT_FOUND_WARNING})
45+
endif()
46+
47+
#to do find librarys before downloading them
48+
3449
include(ExternalProject)
3550
include(buildtools/cmake/DownloadProject.cmake)
3651
if(USE_CPR)
3752
#to do install libssl-dev
38-
39-
#the cmake test has issues on visual studio so disable them
40-
if(NOT DEFINED BUILD_CPR_TESTS)
41-
set(BUILD_CPR_TESTS OFF CACHE BOOL "")
42-
endif()
43-
44-
set(BUILD_CURL_EXE OFF CACHE BOOL "")
45-
set(CURL_STATICLIB ON CACHE BOOL "")
46-
set(CURL_ZLIB OFF CACHE BOOL "")
47-
48-
#set what ssl library to use for curl based on OS
49-
#this fixes
50-
if(NOT DEFINED CMAKE_USE_OPENSSL)
51-
if(WIN32)
52-
set(CMAKE_USE_WINSSL ON CACHE BOOL "")
53-
set(CMAKE_USE_OPENSSL OFF CACHE BOOL "")
54-
elseif(APPLE)
55-
set(CMAKE_USE_DARWINSSL ON CACHE BOOL "")
56-
set(CMAKE_USE_OPENSSL OFF CACHE BOOL "")
57-
endif()
58-
#to do, set one for linux
59-
endif()
60-
if(NOT DEFINED USE_SYSTEM_CURL AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
61-
#using cmake to configure curl on linux has issues
62-
#so use system curl
63-
set(USE_SYSTEM_CURL ON CACHE BOOL "")
64-
set(USE_SYSTEM_CURL ON CACHE INTERNAL BOOL "")
65-
endif()
66-
6753
download_project(
6854
PROJ cpr
6955
GIT_REPOSITORY https://github.com/whoshuu/cpr.git
70-
GIT_TAG master
56+
GIT_TAG b748095
7157
SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/cpr
7258
UPDATE_DISCONNECTED 1
7359
)
74-
75-
add_subdirectory(deps/cpr)
7660
endif()
7761

7862
if(USE_ASIO)
@@ -95,10 +79,6 @@ if(AUTO_DOWNLOAD_LIBRARY)
9579
SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/websocketpp
9680
UPDATE_DISCONNECTED 1
9781
)
98-
99-
set(THREADS_PREFER_PTHREAD_FLAG ON)
100-
find_package(Threads REQUIRED)
101-
add_subdirectory(deps/websocketpp)
10282
endif()
10383

10484
if(USE_UWEBSOCKETS)
@@ -117,23 +97,21 @@ if(AUTO_DOWNLOAD_LIBRARY)
11797
#needs libtool
11898
download_project(
11999
PROJ opus
120-
GIT_REPOSITORY https://git.xiph.org/opus.git
121-
GIT_TAG master
100+
GIT_REPOSITORY https://gitlab.xiph.org/xiph/opus.git
101+
GIT_TAG 7628d844
122102
SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/opus
123103
UPDATE_DISCONNECTED 1
124104
)
125-
add_subdirectory(deps/opus)
126105
endif()
127106

128-
if(USE_LIBSODIUM)
107+
if(USE_LIBSODIUM AND NOT WIN32)
129108
download_project(
130109
PROJ libsodium
131110
GIT_REPOSITORY https://github.com/jedisct1/libsodium.git
132111
GIT_TAG stable
133112
SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/libsodium
134113
UPDATE_DISCONNECTED 1
135114
)
136-
#I would like use libsodium_BINARY_DIR as the BINARY_DIR but for some reason, that doesn't work
137115
ExternalProject_Add(libsodium-make
138116
SOURCE_DIR "${libsodium_SOURCE_DIR}"
139117
BINARY_DIR "${libsodium_BINARY_DIR}"
@@ -144,10 +122,119 @@ if(AUTO_DOWNLOAD_LIBRARY)
144122
TEST_COMMAND ""
145123
)
146124
endif()
125+
else()
126+
if(USE_CPR)
127+
set(cpr_SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/cpr)
128+
endif()
129+
if(USE_ASIO)
130+
set(asio_SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/asio)
131+
endif()
132+
if(USE_WEBSOCKETPP)
133+
set(websocketpp_SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/websocketpp)
134+
endif()
135+
if(USE_UWEBSOCKETS)
136+
set(uwebsockets_SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/uwebsockets)
137+
endif()
138+
if(USE_LIBOPUS)
139+
set(opus_SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/opus)
140+
endif()
141+
if(USE_LIBSODIUM AND NOT WIN32)
142+
set(libsodium_SOURCE_DIR ${PROJECT_SOURCE_DIR}/deps/libsodium)
143+
endif()
144+
endif()
145+
146+
# Configure libraries
147+
if(USE_CPR)
148+
#the cmake test has issues on visual studio so disable them
149+
if(NOT DEFINED BUILD_CPR_TESTS)
150+
set(BUILD_CPR_TESTS OFF CACHE BOOL "")
151+
endif()
152+
153+
set(BUILD_CURL_EXE OFF CACHE BOOL "")
154+
set(CURL_STATICLIB ON CACHE BOOL "")
155+
set(CURL_ZLIB OFF CACHE BOOL "")
156+
157+
#set what ssl library to use for curl based on OS
158+
#this fixes
159+
if(NOT DEFINED CMAKE_USE_OPENSSL)
160+
if(WIN32)
161+
set(CMAKE_USE_WINSSL ON CACHE BOOL "")
162+
set(CMAKE_USE_OPENSSL OFF CACHE BOOL "")
163+
elseif(APPLE)
164+
set(CMAKE_USE_DARWINSSL ON CACHE BOOL "")
165+
set(CMAKE_USE_OPENSSL OFF CACHE BOOL "")
166+
elseif(UNIX)
167+
set(CMAKE_USE_OPENSSL OFF CACHE BOOL "")
168+
endif()
169+
endif()
170+
if(NOT DEFINED USE_SYSTEM_CURL AND ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
171+
#using cmake to configure curl on linux has issues
172+
#so use system curl
173+
set(USE_SYSTEM_CURL ON CACHE BOOL "")
174+
endif()
175+
176+
add_subdirectory(deps/cpr)
177+
endif()
178+
179+
if(USE_WEBSOCKETPP)
180+
set(THREADS_PREFER_PTHREAD_FLAG ON)
181+
find_package(Threads REQUIRED)
182+
add_subdirectory(deps/websocketpp)
183+
endif()
184+
185+
if(USE_LIBOPUS)
186+
add_subdirectory(deps/opus)
187+
endif()
188+
189+
# Get Version Info
190+
if(Git_FOUND)
191+
execute_process(
192+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
193+
COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD
194+
OUTPUT_VARIABLE SLEEPY_DISCORD_VERSION_BUILD
195+
OUTPUT_STRIP_TRAILING_WHITESPACE
196+
)
197+
execute_process(
198+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
199+
COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
200+
OUTPUT_VARIABLE SLEEPY_DISCORD_VERSION_BRANCH
201+
OUTPUT_STRIP_TRAILING_WHITESPACE
202+
)
203+
execute_process(
204+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
205+
COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
206+
OUTPUT_VARIABLE SLEEPY_DISCORD_VERSION_HASH
207+
OUTPUT_STRIP_TRAILING_WHITESPACE
208+
)
209+
if (SLEEPY_DISCORD_VERSION_BRANCH STREQUAL "master")
210+
set(SLEEPY_DISCORD_VERSION_IS_MASTER "1")
211+
else()
212+
set(SLEEPY_DISCORD_VERSION_IS_MASTER "0")
213+
endif()
214+
execute_process(
215+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
216+
COMMAND ${GIT_EXECUTABLE} describe --always --long --dirty
217+
OUTPUT_VARIABLE SLEEPY_DISCORD_VERSION_DESCRIPTION
218+
OUTPUT_STRIP_TRAILING_WHITESPACE
219+
)
220+
if(
221+
NOT SLEEPY_DISCORD_VERSION_DESCRIPTION STREQUAL ""
222+
)
223+
set(SLEEPY_DISCORD_VERSION_DESCRIPTION_CONCAT " ")
224+
else()
225+
set(SLEEPY_DISCORD_VERSION_DESCRIPTION_CONCAT "")
226+
endif()
227+
configure_file(
228+
"${PROJECT_SOURCE_DIR}/include/sleepy_discord/version.h.in"
229+
"${PROJECT_SOURCE_DIR}/include/sleepy_discord/version.h"
230+
)
147231
endif()
148232

149233
# Add Subdirectories
150234
add_subdirectory(sleepy_discord)
151-
if (BUILD_SLEEPY_DISCORD_EXAMPLES)
235+
if (SLEEPY_DISCORD_BUILD_EXAMPLES)
152236
add_subdirectory(examples/hello)
237+
if (ENABLE_VOICE)
238+
add_subdirectory(examples/sound-player)
239+
endif()
153240
endif()

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Just for the novelty of using a C++ library for Discord. I would also love for t
2222

2323
# Example
2424
```cpp
25-
#include "sleepy_discord/websocketpp_websocket.h"
25+
#include "sleepy_discord/sleepy_discord.h"
2626

2727
class MyClientClass : public SleepyDiscord::DiscordClient {
2828
public:
@@ -34,7 +34,7 @@ public:
3434
};
3535

3636
int main() {
37-
MyClientClass client("token", 2);
37+
myClientClass client("token", SleepyDiscord::USER_CONTROLED_THREADS);
3838
client.run();
3939
}
4040
```

azure-pipelines.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ variables:
1212
buildConfiguration: 'Release'
1313

1414
steps:
15-
#Do both 32 bit and 64 bit
15+
#To Do: Do both 32 bit and 64 bit
1616

1717
- script: |
1818
git clone https://github.com/Microsoft/vcpkg.git

buildtools/Makefile.3ds

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ TARGET := sleepy_discord
2727
SOURCES := ../sleepy_discord
2828

2929
DATA := data
30-
INCLUDES := ../sleepy_discord/IncludeNonexistent
30+
INCLUDES := ../sleepy_discord ../sleepy_discord/IncludeNonexistent
3131

3232
#---------------------------------------------------------------------------------
3333
# options for code generation

examples/hello/CMakeLists.txt

+7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
cmake_minimum_required (VERSION 3.6)
2+
project(hello-example)
3+
4+
if(NOT SLEEPY_DISCORD_CMAKE)
5+
add_subdirectory(../../ ${CMAKE_CURRENT_BINARY_DIR}/sleepy-discord)
6+
endif()
7+
18
add_executable(hello-example
29
example0.cpp
310
)

examples/hello/example0.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
/*If you are using uWebSockets,
2-
remember to change this to uwebsockets_websocket.h*/
3-
#include "sleepy_discord/websocketpp_websocket.h"
1+
#include "sleepy_discord/sleepy_discord.h"
42

53
class MyClientClass : public SleepyDiscord::DiscordClient {
64
public:
@@ -12,6 +10,6 @@ class MyClientClass : public SleepyDiscord::DiscordClient {
1210
};
1311

1412
int main() {
15-
MyClientClass client("token", 2);
13+
MyClientClass client("token", SleepyDiscord::USER_CONTROLED_THREADS);
1614
client.run();
1715
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
cmake_minimum_required (VERSION 3.6)
2+
project(rock-paper-scissors)
3+
4+
add_executable(rock-paper-scissors main.cpp)
5+
6+
add_subdirectory(../../ ${CMAKE_CURRENT_BINARY_DIR}/sleepy-discord)
7+
target_link_libraries(rock-paper-scissors sleepy-discord)

examples/rock-paper-scissors/main.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
#include "sleepy_discord/websocketpp_websocket.h"
1+
#include "sleepy_discord/sleepy_discord.h"
2+
#include <list>
3+
#include <iostream>
4+
#include <memory>
25

36
class GameClient : public SleepyDiscord::DiscordClient {
47
private:
@@ -126,6 +129,9 @@ class GameClient : public SleepyDiscord::DiscordClient {
126129

127130
int main() {
128131
srand(static_cast<unsigned int>(time(0))); //create seed to make random numbers
129-
GameClient client("Your Token Goes Here", 2);
132+
GameClient client("Your Token Goes Here", SleepyDiscord::USER_CONTROLED_THREADS);
133+
client.setIntents({
134+
SleepyDiscord::Intent::SERVER_MESSAGES,
135+
SleepyDiscord::Intent::DIRECT_MESSAGES });
130136
client.run();
131137
}

0 commit comments

Comments
 (0)