summaryrefslogtreecommitdiffstats
path: root/CMake/AddDependencies.cmake
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@outlook.com>2020-05-28 00:48:49 +0200
committerTiger Wang <ziwei.tiger@outlook.com>2020-07-12 23:00:07 +0200
commit2c0fc395ba95bcaa3b877b88ebd2d1ee0affff9a (patch)
tree8e3922013a79e1bb83797a55ec83eac19bf0d2ce /CMake/AddDependencies.cmake
parentMore CMake cleanup (diff)
downloadcuberite-2c0fc395ba95bcaa3b877b88ebd2d1ee0affff9a.tar
cuberite-2c0fc395ba95bcaa3b877b88ebd2d1ee0affff9a.tar.gz
cuberite-2c0fc395ba95bcaa3b877b88ebd2d1ee0affff9a.tar.bz2
cuberite-2c0fc395ba95bcaa3b877b88ebd2d1ee0affff9a.tar.lz
cuberite-2c0fc395ba95bcaa3b877b88ebd2d1ee0affff9a.tar.xz
cuberite-2c0fc395ba95bcaa3b877b88ebd2d1ee0affff9a.tar.zst
cuberite-2c0fc395ba95bcaa3b877b88ebd2d1ee0affff9a.zip
Diffstat (limited to 'CMake/AddDependencies.cmake')
-rw-r--r--CMake/AddDependencies.cmake142
1 files changed, 72 insertions, 70 deletions
diff --git a/CMake/AddDependencies.cmake b/CMake/AddDependencies.cmake
index 72eead340..ecf18dd27 100644
--- a/CMake/AddDependencies.cmake
+++ b/CMake/AddDependencies.cmake
@@ -1,81 +1,83 @@
-# 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.")
+function(build_dependencies TARGET)
+ # 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 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 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.")
+ # 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()
+ # 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()
+ # 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
-)
+ # 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(
- ${CMAKE_PROJECT_NAME} PRIVATE
- event_core
- event_extra
- fmt::fmt
- jsoncpp_lib
- lsqlite
- lua
- luaexpat
- mbedtls
- SQLiteCpp
- tolualib
- zlib
-)
+ # Link dependencies as private:
+ target_link_libraries(
+ ${TARGET} 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()
+ # 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(${CMAKE_PROJECT_NAME} PRIVATE event_pthreads)
-endif()
+ # Special case handling for libevent pthreads:
+ if(NOT WIN32)
+ target_link_libraries(${TARGET} PRIVATE event_pthreads)
+ endif()
-# Prettify jsoncpp_lib name in VS solution explorer:
-set_property(TARGET jsoncpp_lib PROPERTY PROJECT_LABEL "jsoncpp")
+ # Prettify jsoncpp_lib name in VS solution explorer:
+ set_property(TARGET jsoncpp_lib PROPERTY PROJECT_LABEL "jsoncpp")
-if (WIN32)
- add_subdirectory(lib/luaproxy)
-endif()
+ if (WIN32)
+ add_subdirectory(lib/luaproxy)
+ endif()
+endfunction()