2020-07-06 19:04:32 -04:00
function ( build_dependencies )
2020-05-27 18:48:49 -04:00
# 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." )
2020-05-21 18:52:19 -04:00
2020-05-27 18:48:49 -04:00
# 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" )
2020-05-21 18:52:19 -04:00
2020-05-27 18:48:49 -04:00
# 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" )
2020-05-21 18:52:19 -04:00
2020-05-27 18:48:49 -04:00
# Set options for mbedtls:
set ( ENABLE_PROGRAMS OFF CACHE BOOL "Build mbed TLS programs." )
set ( ENABLE_TESTING OFF CACHE BOOL "Build mbed TLS tests." )
2020-05-21 18:52:19 -04:00
2020-05-27 18:48:49 -04:00
# 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 ( )
2020-05-21 18:52:19 -04:00
2020-05-27 18:48:49 -04:00
# 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 ( )
2020-05-21 18:52:19 -04:00
2020-07-06 19:04:32 -04:00
if ( WIN32 )
add_subdirectory ( lib/luaproxy )
endif ( )
endfunction ( )
function ( link_dependencies TARGET )
2020-05-27 18:48:49 -04:00
# Add required includes:
target_include_directories (
$ { T A R G E T } S Y S T E M P R I V A T E
l i b / m b e d t l s / i n c l u d e
l i b / T C L A P / i n c l u d e
l i b # TODO fix files including zlib/x instead of x
)
2020-05-21 18:52:19 -04:00
2020-05-27 18:48:49 -04:00
# Link dependencies as private:
target_link_libraries (
$ { T A R G E T } P R I V A T E
e v e n t _ c o r e
e v e n t _ e x t r a
f m t : : f m t
j s o n c p p _ l i b
l s q l i t e
l u a
l u a e x p a t
m b e d t l s
S Q L i t e C p p
t o l u a l i b
z l i b
)
2020-05-21 18:52:19 -04:00
2020-05-27 18:48:49 -04:00
# Link process information library:
if ( WIN32 )
target_link_libraries ( ${ TARGET } PRIVATE Psapi.lib )
endif ( )
2020-05-21 18:52:19 -04:00
2020-05-27 18:48:49 -04:00
# Special case handling for libevent pthreads:
if ( NOT WIN32 )
target_link_libraries ( ${ TARGET } PRIVATE event_pthreads )
endif ( )
2020-05-21 18:52:19 -04:00
2020-05-27 18:48:49 -04:00
# Prettify jsoncpp_lib name in VS solution explorer:
set_property ( TARGET jsoncpp_lib PROPERTY PROJECT_LABEL "jsoncpp" )
endfunction ( )