89 lines
3.8 KiB
CMake
89 lines
3.8 KiB
CMake
function(build_dependencies)
|
|
# Set options for SQLiteCpp, disable all their lints and other features we don't need:
|
|
set(SQLITE_ENABLE_COLUMN_METADATA OFF CACHE BOOL "Enable Column::getColumnOriginName(). Require support from sqlite3 library.")
|
|
set(SQLITE_ENABLE_JSON1 OFF CACHE BOOL "Enable JSON1 extension when building internal sqlite3 library.")
|
|
set(SQLITECPP_INCLUDE_SCRIPT OFF CACHE BOOL "Include config & script files.")
|
|
set(SQLITECPP_RUN_CPPCHECK OFF CACHE BOOL "Run cppcheck C++ static analysis tool.")
|
|
set(SQLITECPP_RUN_CPPLINT OFF CACHE BOOL "Run cpplint.py tool for Google C++ StyleGuide.")
|
|
set(SQLITECPP_USE_STACK_PROTECTION OFF CACHE BOOL "USE Stack Protection hardening.")
|
|
set(SQLITECPP_USE_STATIC_RUNTIME OFF CACHE BOOL "Use MSVC static runtime (default for internal googletest).")
|
|
|
|
# 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(JSONCPP_WITH_CMAKE_PACKAGE OFF CACHE BOOL "Generate and install cmake package files")
|
|
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build jsoncpp_lib as a shared library.")
|
|
set(BUILD_OBJECT_LIBS OFF CACHE BOOL "Build jsoncpp_lib as a object library.")
|
|
|
|
# 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 libdeflate libevent lua luaexpat mbedtls SQLiteCpp sqlite tolua++)
|
|
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()
|
|
|
|
if (WIN32)
|
|
add_subdirectory(lib/luaproxy)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(link_dependencies TARGET)
|
|
# Add required includes:
|
|
target_include_directories(
|
|
${TARGET} 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(
|
|
${TARGET} PRIVATE
|
|
event_core
|
|
event_extra
|
|
fmt::fmt
|
|
jsoncpp_static
|
|
libdeflate
|
|
lsqlite
|
|
lualib
|
|
luaexpat
|
|
mbedtls
|
|
SQLiteCpp
|
|
tolualib
|
|
)
|
|
|
|
# Link process information library:
|
|
if (WIN32)
|
|
target_link_libraries(${TARGET} PRIVATE Psapi.lib)
|
|
endif()
|
|
|
|
# Special case handling for libevent pthreads:
|
|
if(NOT WIN32)
|
|
target_link_libraries(${TARGET} PRIVATE event_pthreads)
|
|
endif()
|
|
|
|
# Prettify jsoncpp_static name in VS solution explorer:
|
|
set_property(TARGET jsoncpp_static PROPERTY PROJECT_LABEL "jsoncpp")
|
|
endfunction()
|