forked from plok/katla
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
140 lines (116 loc) · 5.17 KB
/
Copy pathCMakeLists.txt
File metadata and controls
140 lines (116 loc) · 5.17 KB
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
cmake_minimum_required(VERSION 3.10)
project(katla)
include(cmake/cmake-common.txt)
IF (PROJECT_IS_TOP_LEVEL)
include(cmake/cmake-warnings.txt)
ENDIF()
find_package(Threads REQUIRED)
option(USE_SYSTEM_GSL "Use system GSL library" OFF)
option(USE_SYSTEM_LIBWEBSOCKETS "use system libwebsockets" OFF) # using included libwebsockets as system version on ubuntu 1804 is too old
option(USE_SYSTEM_LIBUV "use system libuv" OFF)
option(USE_SYSTEM_OPENCV "use system opencv" ON)
set(BUILD_KATLA_UV_DEFAULT ON)
set(BUILD_KATLA_SQLITE_DEFAULT ON)
set(BUILD_KATLA_IMAGE_DEFAULT ON)
set(BUILD_KATLA_MQTT_DEFAULT ON)
set(BUILD_KATLA_DART_DEFAULT ON)
set(BUILD_KATLA_WEBSOCKETS_DEFAULT OFF) # still experimental
IF (WIN32)
set(BUILD_KATLA_UV_DEFAULT OFF) # TODO build error
set(BUILD_KATLA_SQLITE_DEFAULT OFF) # TODO sqlite currenly only on installed in linux ci
set(BUILD_KATLA_IMAGE_DEFAULT OFF) # TODO opencv currenly only on installed in linux ci
set(BUILD_KATLA_MQTT_DEFAULT OFF) # TODO mosquitto currenly only on installed in linux ci
set(BUILD_KATLA_DART_DEFAULT OFF) # TODO depends on katla-image
ENDIF()
IF (APPLE)
set(BUILD_KATLA_SQLITE_DEFAULT OFF) # TODO sqlite currenly only on installed in linux ci
set(BUILD_KATLA_IMAGE_DEFAULT OFF) # TODO opencv currenly only on installed in linux ci
set(BUILD_KATLA_MQTT_DEFAULT OFF) # TODO mosquitto currenly only on installed in linux ci
set(BUILD_KATLA_DART_DEFAULT OFF) # TODO depends on katla-image
ENDIF()
option(BUILD_KATLA_UV "Build uv module" BUILD_KATLA_UV_DEFAULT)
option(BUILD_KATLA_SQLITE "Build sqlite module" BUILD_KATLA_SQLITE_DEFAULT)
option(BUILD_KATLA_IMAGE "Build image module" BUILD_KATLA_IMAGE_DEFAULT)
option(BUILD_KATLA_MQTT "Build mqtt module" BUILD_KATLA_MQTT_DEFAULT)
option(BUILD_KATLA_DART "Build dart module" BUILD_KATLA_DART_DEFAULT)
option(BUILD_KATLA_WEBSOCKETS "Build websockets module" BUILD_KATLA_WEBSOCKETS_DEFAULT)
option(BUILD_GMOCK "Builds the googlemock subproject" OFF)
option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" OFF)
add_subdirectory(external/googletest)
IF (NOT WIN32 AND NOT APPLE)
target_compile_options(gtest PRIVATE -Wno-error=maybe-uninitialized -Wno-maybe-uninitialized)
ENDIF()
add_subdirectory(external/fmt)
IF(USE_SYSTEM_GSL)
find_package(GSL REQUIRED)
add_library(Microsoft.GSL::GSL ALIAS GSL::gsl)
ELSE()
add_subdirectory(external/gsl)
include_directories(external/gsl/include)
ENDIF()
add_subdirectory(core)
IF (NOT WIN32 AND NOT APPLE) # currently only posix tests are defined
add_subdirectory(core/unit-tests)
ENDIF()
IF(BUILD_KATLA_UV)
IF(USE_SYSTEM_LIBWEBSOCKETS)
find_package(Uv REQUIRED)
ELSE()
add_subdirectory(external/libuv)
IF (NOT WIN32 AND NOT APPLE)
target_compile_options(uv PRIVATE -Wno-sign-compare -Wno-error=sign-compare)
target_compile_options(uv_a PRIVATE -Wno-sign-compare -Wno-error=sign-compare)
ENDIF()
ENDIF()
add_subdirectory(core-uv)
add_subdirectory(core-uv/unit-tests)
ENDIF()
IF(BUILD_KATLA_WEBSOCKETS)
IF(USE_SYSTEM_LIBWEBSOCKETS)
find_package(Websockets REQUIRED)
ELSE()
option(LWS_WITH_STATIC "Build the static version of the library" OFF)
option(LWS_WITH_SSL "Include SSL support (defaults to OpenSSL or similar, mbedTLS if LWS_WITH_MBEDTLS is set)" OFF)
option(LWS_WITHOUT_TESTAPPS "Don't build the libwebsocket-test-apps" ON)
option(LWS_WITHOUT_TEST_SERVER "Don't build the test server" ON)
option(LWS_WITHOUT_TEST_SERVER_EXTPOLL "Don't build the test server version that uses external poll" ON)
option(LWS_WITHOUT_TEST_PING "Don't build the ping test application" ON)
option(LWS_WITHOUT_TEST_CLIENT "Don't build the client test application" ON)
option(LWS_WITH_SHARED "Build the shared version of the library" ON)
SET(POP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
SET(BUILD_SHARED_LIBS TRUE)
add_subdirectory(external/libwebsockets)
IF (NOT WIN32 AND NOT APPLE)
target_compile_options(websockets_shared PRIVATE -Wno-error=shadow)
ENDIF()
target_include_directories(websockets_shared INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/external/libwebsockets/include/>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/external/libwebsockets/include/libwebsockets>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/external/libwebsockets>
)
SET(BUILD_SHARED_LIBS ${POP_BUILD_SHARED_LIBS})
ENDIF()
add_subdirectory(websockets)
add_subdirectory(websockets/tests/integration)
ENDIF()
IF(BUILD_KATLA_SQLITE)
find_package(SQLite3 REQUIRED)
add_subdirectory(sqlite)
add_subdirectory(sqlite/unit-tests)
ENDIF()
IF(BUILD_KATLA_MQTT)
add_subdirectory(mqtt)
add_subdirectory(mqtt/unit-tests)
ENDIF()
IF (BUILD_KATLA_IMAGE)
if(${USE_SYSTEM_OPENCV})
find_package(OpenCV REQUIRED)
endif(${USE_SYSTEM_OPENCV})
add_definitions(-DKATLA_USE_OPENCV)
add_subdirectory(image)
add_subdirectory(image/unit-tests)
ENDIF()
IF (BUILD_KATLA_DART)
add_definitions(-DKATLA_USE_DART)
add_subdirectory(dart)
ENDIF()