From 9bd470f2c7e8a19b6213076c8fd4d8b1b0b3eb5b Mon Sep 17 00:00:00 2001 From: Mo Morsi Date: Wed, 30 Oct 2019 12:17:35 -0400 Subject: [PATCH] Search for sqlite3 before vendoring --- Builds/CMake/deps/Findsqlite.cmake | 22 +++++ Builds/CMake/deps/Soci.cmake | 2 +- Builds/CMake/deps/Sqlite.cmake | 136 +++++++++++++++++------------ 3 files changed, 101 insertions(+), 59 deletions(-) create mode 100644 Builds/CMake/deps/Findsqlite.cmake diff --git a/Builds/CMake/deps/Findsqlite.cmake b/Builds/CMake/deps/Findsqlite.cmake new file mode 100644 index 000000000..377f4555b --- /dev/null +++ b/Builds/CMake/deps/Findsqlite.cmake @@ -0,0 +1,22 @@ +find_package (PkgConfig REQUIRED) +pkg_search_module (sqlite_PC QUIET sqlite3>=3.26.0) + +if(static) + set(SQLITE_LIB libsqlite3.a) +else() + set(SQLITE_LIB sqlite3.so) +endif() + +find_library (sqlite3 + NAMES ${SQLITE_LIB} + HINTS + ${sqlite_PC_LIBDIR} + ${sqlite_PC_LIBRARY_DIRS} + NO_DEFAULT_PATH) + +find_path (SQLITE_INCLUDE_DIR + NAMES sqlite3.h + HINTS + ${sqlite_PC_INCLUDEDIR} + ${sqlite_PC_INCLUDEDIRS} + NO_DEFAULT_PATH) diff --git a/Builds/CMake/deps/Soci.cmake b/Builds/CMake/deps/Soci.cmake index 8eaac17e4..1378d8fd1 100644 --- a/Builds/CMake/deps/Soci.cmake +++ b/Builds/CMake/deps/Soci.cmake @@ -86,7 +86,7 @@ ExternalProject_Add (soci > TEST_COMMAND "" INSTALL_COMMAND "" - DEPENDS sqlite3 + DEPENDS sqlite BUILD_BYPRODUCTS /lib/${soci_lib_pre}soci_core${soci_lib_post}${ep_lib_suffix} /lib/${soci_lib_pre}soci_core${soci_lib_post}_d${ep_lib_suffix} diff --git a/Builds/CMake/deps/Sqlite.cmake b/Builds/CMake/deps/Sqlite.cmake index ef8c8825a..be2a7904e 100644 --- a/Builds/CMake/deps/Sqlite.cmake +++ b/Builds/CMake/deps/Sqlite.cmake @@ -2,66 +2,86 @@ NIH dep: sqlite #]===================================================================] -ExternalProject_Add (sqlite3 - PREFIX ${nih_cache_path} - # sqlite doesn't use git, but it provides versioned tarballs - URL https://www.sqlite.org/2018/sqlite-amalgamation-3260000.zip - # ^^^ version is apparent in the URL: 3260000 => 3.26.0 - URL_HASH SHA256=de5dcab133aa339a4cf9e97c40aa6062570086d6085d8f9ad7bc6ddf8a52096e - # we wrote a very simple CMake file to build sqlite - # so that's what we copy here so that we can build with - # CMake. sqlite doesn't generally provided a build system - # for the single amalgamation source file. - PATCH_COMMAND - ${CMAKE_COMMAND} -E copy_if_different - ${CMAKE_SOURCE_DIR}/Builds/CMake/CMake_sqlite3.txt - /CMakeLists.txt - CMAKE_ARGS - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - $<$:-DCMAKE_VERBOSE_MAKEFILE=ON> - -DCMAKE_DEBUG_POSTFIX=_d - $<$>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}> - $<$: - "-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP" - "-DCMAKE_C_FLAGS_DEBUG=-MTd" - "-DCMAKE_C_FLAGS_RELEASE=-MT" - > - LOG_BUILD ON - LOG_CONFIGURE ON - BUILD_COMMAND - ${CMAKE_COMMAND} - --build . - --config $ - $<$:--parallel ${ep_procs}> - $<$: - COMMAND - ${CMAKE_COMMAND} -E copy - /$/${ep_lib_prefix}sqlite3$<$:_d>${ep_lib_suffix} - - > - TEST_COMMAND "" - INSTALL_COMMAND "" - BUILD_BYPRODUCTS - /${ep_lib_prefix}sqlite3${ep_lib_suffix} - /${ep_lib_prefix}sqlite3_d${ep_lib_suffix} -) -ExternalProject_Get_Property (sqlite3 BINARY_DIR) -ExternalProject_Get_Property (sqlite3 SOURCE_DIR) -if (CMAKE_VERBOSE_MAKEFILE) - print_ep_logs (sqlite3) -endif () add_library (sqlite STATIC IMPORTED GLOBAL) -set_target_properties (sqlite PROPERTIES - IMPORTED_LOCATION_DEBUG - ${BINARY_DIR}/${ep_lib_prefix}sqlite3_d${ep_lib_suffix} - IMPORTED_LOCATION_RELEASE - ${BINARY_DIR}/${ep_lib_prefix}sqlite3${ep_lib_suffix} - INTERFACE_INCLUDE_DIRECTORIES - ${SOURCE_DIR}) -add_dependencies (sqlite sqlite3) + +if (NOT WIN32) + find_package(sqlite) +endif() + + +if(sqlite3) + set_target_properties (sqlite PROPERTIES + IMPORTED_LOCATION_DEBUG + ${sqlite3} + IMPORTED_LOCATION_RELEASE + ${sqlite3} + INTERFACE_INCLUDE_DIRECTORIES + ${SQLITE_INCLUDE_DIR}) + +else() + ExternalProject_Add (sqlite3 + PREFIX ${nih_cache_path} + # sqlite doesn't use git, but it provides versioned tarballs + URL https://www.sqlite.org/2018/sqlite-amalgamation-3260000.zip + # ^^^ version is apparent in the URL: 3260000 => 3.26.0 + URL_HASH SHA256=de5dcab133aa339a4cf9e97c40aa6062570086d6085d8f9ad7bc6ddf8a52096e + # we wrote a very simple CMake file to build sqlite + # so that's what we copy here so that we can build with + # CMake. sqlite doesn't generally provided a build system + # for the single amalgamation source file. + PATCH_COMMAND + ${CMAKE_COMMAND} -E copy_if_different + ${CMAKE_SOURCE_DIR}/Builds/CMake/CMake_sqlite3.txt + /CMakeLists.txt + CMAKE_ARGS + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + $<$:-DCMAKE_VERBOSE_MAKEFILE=ON> + -DCMAKE_DEBUG_POSTFIX=_d + $<$>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}> + $<$: + "-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP" + "-DCMAKE_C_FLAGS_DEBUG=-MTd" + "-DCMAKE_C_FLAGS_RELEASE=-MT" + > + LOG_BUILD ON + LOG_CONFIGURE ON + BUILD_COMMAND + ${CMAKE_COMMAND} + --build . + --config $ + $<$:--parallel ${ep_procs}> + $<$: + COMMAND + ${CMAKE_COMMAND} -E copy + /$/${ep_lib_prefix}sqlite3$<$:_d>${ep_lib_suffix} + + > + TEST_COMMAND "" + INSTALL_COMMAND "" + BUILD_BYPRODUCTS + /${ep_lib_prefix}sqlite3${ep_lib_suffix} + /${ep_lib_prefix}sqlite3_d${ep_lib_suffix} + ) + ExternalProject_Get_Property (sqlite3 BINARY_DIR) + ExternalProject_Get_Property (sqlite3 SOURCE_DIR) + if (CMAKE_VERBOSE_MAKEFILE) + print_ep_logs (sqlite3) + endif () + + set_target_properties (sqlite PROPERTIES + IMPORTED_LOCATION_DEBUG + ${BINARY_DIR}/${ep_lib_prefix}sqlite3_d${ep_lib_suffix} + IMPORTED_LOCATION_RELEASE + ${BINARY_DIR}/${ep_lib_prefix}sqlite3${ep_lib_suffix} + INTERFACE_INCLUDE_DIRECTORIES + ${SOURCE_DIR}) + + add_dependencies (sqlite sqlite3) + exclude_if_included (sqlite3) +endif() + target_link_libraries (sqlite INTERFACE $<$>:dl>) target_link_libraries (ripple_libs INTERFACE sqlite) -exclude_if_included (sqlite3) exclude_if_included (sqlite) set(sqlite_BINARY_DIR ${BINARY_DIR})