summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: f8a5f10bdd95998374a57c1f628816bbc4ab3a7d (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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
cmake_minimum_required(VERSION 3.16)

project(abaddon)

set(CMAKE_CXX_STANDARD 17)

option(USE_PKGCONFIG "Use pkg-config" OFF)
option(DISABLE_MBEDTLS "Disable mbedtls" OFF)

if(NOT USE_PKGCONFIG)
	find_path(GTKMM_INCLUDE_DIRS gtkmm.h REQUIRED)
	find_library(GTKMM_LIBRARY gtkmm)
	link_libraries(${GTKMM_LIBRARY})
	include_directories(${GTKMM_INCLUDE_DIRS})

	find_path(GLIBMM_INCLUDE_DIRS glibmm.h)
	find_library(GLIBMM_LIBRARY glibmm)
	link_libraries(${GLIBMM_LIBRARY})
	include_directories(${GLIBMM_INCLUDE_DIRS})

	find_path(SIGC_INCLUDE_DIRS sigc++/sigc++.h)
	find_library(SIGC_LIBRARY sigc-2.0)
	link_libraries(${SIGC_LIBRARY})
	include_directories(${SIGC_INCLUDE_DIRS})

	find_path(GIOMM_INCLUDE_DIRS giomm.h)
	find_library(GIOMM_LIBRARY giomm)
	link_libraries(${GIOMM_LIBRARY})
	include_directories(${GIOMM_INCLUDE_DIRS})

	find_path(GDKMM_INCLUDE_DIRS gdkmm.h)
	find_library(GDKMM_LIBRARY gdkmm)
	link_libraries(${GDKMM_LIBRARY})
	include_directories(${GDKMM_INCLUDE_DIRS})

	find_path(ATKMM_INCLUDE_DIRS atkmm.h)
	find_library(ATKMM_LIBRARY atkmm)
	link_libraries(${ATKMM_LIBRARY})
	include_directories(${ATKMM_INCLUDE_DIRS})

	find_package(curl)
	find_library(CURL_LIBRARY libcurl)
	link_libraries(${CURL_LIBRARY})

	find_path(CPR_INCLUDE_DIRS cpr/cpr.h)
	find_library(CPR_LIBRARY cpr)
	include_directories(${CPR_INCLUDE_DIRS})
	link_libraries(${CPR_LIBRARY})

	find_package(zlib)
	find_library(ZLIB_LIBRARY zlib)
	include_directories(${ZLIB_INCLUDE_DIRS})
	link_libraries(${ZLIB_LIBRARY})

	if(NOT DISABLE_MBEDTLS)
		find_library(MBEDTLS_X509_LIBRARY mbedx509)
		find_library(MBEDTLS_TLS_LIBRARY mbedtls)
		find_library(MBEDTLS_CRYPTO_LIBRARY mbedcrypto)
		include_directories(${MBEDTLS_INCLUDE_DIRS})
		link_libraries(${MBEDTLS_TLS_LIBRARY})
		link_libraries(${MBEDTLS_X509_LIBRARY})
		link_libraries(${MBEDTLS_CRYPTO_LIBRARY})
	endif()

	find_package(nlohmann_json 3.2.0 REQUIRED)

	find_path(IXWEBSOCKET_INCLUDE_DIRS ixwebsocket/ixwebsocket.h)
	find_library(IXWEBSOCKET_LIBRARY ixwebsocket)
	link_libraries(${IXWEBSOCKET_LIBRARY})
	include_directories(${IXWEBSOCKET_LIBRARY}})
else()
	find_package(PkgConfig)
	
	set(BUILD_CPR_TESTS OFF)
	set(BUILD_CPR_TESTS_SSL OFF)

	include(FetchContent)
	FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/whoshuu/cpr.git)
	FetchContent_MakeAvailable(cpr)
	include_directories(${CPR_INCLUDE_DIRS})
	link_libraries(cpr::cpr)

	pkg_check_modules(NLOHMANN_JSON REQUIRED nlohmann_json)
	include_directories(${NLOHMANN_JSON_INCLUDE_DIRS})

	pkg_check_modules(GTKMM REQUIRED gtkmm-3.0)
	link_directories(${GTKMM_LIBRARY_DIRS})
	include_directories(${GTKMM_INCLUDE_DIRS})

	pkg_check_modules(ATKMM REQUIRED atkmm-1.6)
	link_directories(${ATKMM_LIBRARY_DIRS})
	include_directories(${ATKMM_INCLUDE_DIRS})

	pkg_check_modules(GDKMM REQUIRED gdkmm-3.0)
	link_directories(${GDKMM_LIBRARY_DIRS})
	include_directories(${GDKMM_INCLUDE_DIRS})

	pkg_check_modules(GIOMM REQUIRED giomm-2.4)
	link_directories(${GIOMM_LIBRARY_DIRS})
	include_directories(${GIOMM_INCLUDE_DIRS})

	pkg_check_modules(SIGC REQUIRED sigc++-2.0)
	link_directories(${SIGC_LIBRARY_DIRS})
	include_directories(${SIGC_INCLUDE_DIRS})

	pkg_check_modules(GLIBMM REQUIRED glibmm-2.4)
	link_directories(${GLIBMM_LIBRARY_DIRS})
	include_directories(${GLIBMM_INCLUDE_DIRS})

	set(USE_TLS TRUE)
	set(USE_OPEN_SSL TRUE)
	add_subdirectory(thirdparty/IXWebSocket)
	include_directories("thirdparty/IXWebSocket")
	link_libraries(ixwebsocket)

	include_directories("thirdparty/simpleini")
endif()

if(mingw)
	link_libraries(ws2_32 wsock2)
endif()

add_executable(abaddon
	abaddon.hpp
	util.hpp
	settings.hpp
	settings.cpp
	abaddon.cpp
	filecache.hpp
	filecache.cpp
	imgmanager.hpp
	imgmanager.cpp
	components/channels.hpp
	components/channels.cpp
	components/chatmessage.hpp
	components/chatmessage.cpp
	components/chatwindow.hpp
	components/chatwindow.cpp
	components/memberlist.hpp
	components/memberlist.cpp
	dialogs/editmessage.hpp
	dialogs/editmessage.cpp
	dialogs/joinguild.hpp
	dialogs/joinguild.cpp
	dialogs/token.hpp
	dialogs/token.cpp
	discord/discord.hpp
	discord/discord.cpp
	discord/http.hpp
	discord/http.cpp
	discord/objects.hpp
	discord/objects.cpp
	discord/store.hpp
	discord/store.cpp
	discord/websocket.hpp
	discord/websocket.cpp
	discord/user.hpp
	discord/snowflake.hpp
	discord/snowflake.cpp
	discord/user.cpp
	discord/json.hpp
	discord/role.hpp
	discord/role.cpp
	discord/member.hpp
	discord/member.cpp
	discord/channel.hpp
	discord/channel.cpp
	discord/guild.hpp
	discord/guild.cpp
	discord/usersettings.hpp
	discord/usersettings.cpp
	discord/message.hpp
	discord/message.cpp
	discord/invite.hpp
	discord/invite.cpp
	discord/permissions.hpp
	discord/permissions.cpp
	discord/emoji.hpp
	discord/emoji.cpp
	windows/mainwindow.hpp
	windows/mainwindow.cpp
)
target_link_libraries(abaddon ${GTKMM_LIBRARIES})
target_link_libraries(abaddon ${GDKMM_LIBRARIES})
target_link_libraries(abaddon ${GLIBMM_LIBRARIES})
target_link_libraries(abaddon ${SIGC_LIBRARIES})
target_link_libraries(abaddon ${ATKMM_LIBRARIES})
target_link_libraries(abaddon ${GIOMM_LIBRARIES})