summaryrefslogtreecommitdiffstats
path: root/CMake/AddDependencies.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'CMake/AddDependencies.cmake')
-rw-r--r--CMake/AddDependencies.cmake81
1 files changed, 81 insertions, 0 deletions
diff --git a/CMake/AddDependencies.cmake b/CMake/AddDependencies.cmake
new file mode 100644
index 000000000..72eead340
--- /dev/null
+++ b/CMake/AddDependencies.cmake
@@ -0,0 +1,81 @@
+# Set options for SQLiteCpp, disable all their tests and lints:
+set(SQLITECPP_RUN_CPPLINT OFF CACHE BOOL "Run cpplint.py tool for Google C++ StyleGuide.")
+set(SQLITECPP_RUN_CPPCHECK OFF CACHE BOOL "Run cppcheck C++ static analysis tool.")
+set(SQLITECPP_RUN_DOXYGEN OFF CACHE BOOL "Run Doxygen C++ documentation tool.")
+set(SQLITECPP_BUILD_EXAMPLES OFF CACHE BOOL "Build examples.")
+set(SQLITECPP_BUILD_TESTS OFF CACHE BOOL "Build and run tests.")
+set(SQLITECPP_INTERNAL_SQLITE ON CACHE BOOL "Add the internal SQLite3 source to the project.")
+set(SQLITE_ENABLE_COLUMN_METADATA OFF CACHE BOOL "Enable Column::getColumnOriginName(). Require support from sqlite3 library.")
+
+# Set options for LibEvent, disable all their tests and benchmarks:
+set(EVENT__DISABLE_OPENSSL YES CACHE BOOL "Disable OpenSSL in LibEvent")
+set(EVENT__DISABLE_BENCHMARK YES CACHE BOOL "Disable LibEvent benchmarks")
+set(EVENT__DISABLE_TESTS YES CACHE BOOL "Disable LibEvent tests")
+set(EVENT__DISABLE_REGRESS YES CACHE BOOL "Disable LibEvent regression tests")
+set(EVENT__DISABLE_SAMPLES YES CACHE BOOL "Disable LibEvent samples")
+set(EVENT__LIBRARY_TYPE "STATIC" CACHE STRING "Use static LibEvent libraries")
+
+# Set options for JsonCPP, disabling all of their tests:
+set(JSONCPP_WITH_TESTS OFF CACHE BOOL "Compile and (for jsoncpp_check) run JsonCpp test executables")
+set(JSONCPP_WITH_POST_BUILD_UNITTEST OFF CACHE BOOL "Automatically run unit-tests as a post build step")
+set(JSONCPP_WITH_PKGCONFIG_SUPPORT OFF CACHE BOOL "Generate and install .pc files")
+
+# Set options for mbedtls:
+set(ENABLE_PROGRAMS OFF CACHE BOOL "Build mbed TLS programs.")
+set(ENABLE_TESTING OFF CACHE BOOL "Build mbed TLS tests.")
+
+# Enumerate all submodule libraries
+# SQLiteCpp needs to be included before sqlite so the lsqlite target is available:
+set(DEPENDENCIES expat fmt jsoncpp libevent lua luaexpat mbedtls SQLiteCpp sqlite tolua++ zlib)
+foreach(DEPENDENCY ${DEPENDENCIES})
+ # Check that the libraries are present:
+ if (NOT EXISTS "${PROJECT_SOURCE_DIR}/lib/${DEPENDENCY}/CMakeLists.txt")
+ message(FATAL_ERROR "${DEPENDENCY} is missing in folder lib/${DEPENDENCY}. Have you initialized and updated the submodules / downloaded the extra libraries?")
+ endif()
+
+ # Include all the libraries
+ # We use EXCLUDE_FROM_ALL so that only the explicit dependencies are compiled
+ # (mbedTLS also has test and example programs in their CMakeLists.txt, we don't want those):
+ add_subdirectory("lib/${DEPENDENCY}" EXCLUDE_FROM_ALL)
+endforeach()
+
+# Add required includes:
+target_include_directories(
+ ${CMAKE_PROJECT_NAME} SYSTEM PRIVATE
+ lib/mbedtls/include
+ lib/TCLAP/include
+ lib # TODO fix files including zlib/x instead of x
+)
+
+# Link dependencies as private:
+target_link_libraries(
+ ${CMAKE_PROJECT_NAME} PRIVATE
+ event_core
+ event_extra
+ fmt::fmt
+ jsoncpp_lib
+ lsqlite
+ lua
+ luaexpat
+ mbedtls
+ SQLiteCpp
+ tolualib
+ zlib
+)
+
+# Link process information library:
+if (WIN32)
+ target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Psapi.lib)
+endif()
+
+# Special case handling for libevent pthreads:
+if(NOT WIN32)
+ target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE event_pthreads)
+endif()
+
+# Prettify jsoncpp_lib name in VS solution explorer:
+set_property(TARGET jsoncpp_lib PROPERTY PROJECT_LABEL "jsoncpp")
+
+if (WIN32)
+ add_subdirectory(lib/luaproxy)
+endif()