From 530f1939d609d1a26b916e460bf3caca17c7e132 Mon Sep 17 00:00:00 2001 From: Mo Morsi Date: Wed, 30 Oct 2019 01:45:48 -0400 Subject: [PATCH] Search for system snappy before vendoring --- Builds/CMake/deps/Findsnappy.cmake | 22 ++++++ Builds/CMake/deps/Rocksdb.cmake | 2 +- Builds/CMake/deps/Snappy.cmake | 117 +++++++++++++++++------------ 3 files changed, 90 insertions(+), 51 deletions(-) create mode 100644 Builds/CMake/deps/Findsnappy.cmake diff --git a/Builds/CMake/deps/Findsnappy.cmake b/Builds/CMake/deps/Findsnappy.cmake new file mode 100644 index 000000000..1292b3e4a --- /dev/null +++ b/Builds/CMake/deps/Findsnappy.cmake @@ -0,0 +1,22 @@ +find_package (PkgConfig REQUIRED) +pkg_search_module (snappy_PC QUIET snappy>=1.1.7) + +if(static) + set(SNAPPY_LIB libsnappy.a) +else() + set(SNAPPY_LIB libsnappy.so) +endif() + +find_library (snappy + NAMES ${SNAPPY_LIB} + HINTS + ${snappy_PC_LIBDIR} + ${snappy_PC_LIBRARY_DIRS} + NO_DEFAULT_PATH) + +find_path (SNAPPY_INCLUDE_DIR + NAMES snappy.h + HINTS + ${snappy_PC_INCLUDEDIR} + ${snappy_PC_INCLUDEDIRS} + NO_DEFAULT_PATH) diff --git a/Builds/CMake/deps/Rocksdb.cmake b/Builds/CMake/deps/Rocksdb.cmake index 756b65232..5cfebd7d5 100644 --- a/Builds/CMake/deps/Rocksdb.cmake +++ b/Builds/CMake/deps/Rocksdb.cmake @@ -84,7 +84,7 @@ ExternalProject_Add (rocksdb LIST_SEPARATOR :: TEST_COMMAND "" INSTALL_COMMAND "" - DEPENDS snappy lz4_lib + DEPENDS snappy_lib lz4_lib BUILD_BYPRODUCTS /${ep_lib_prefix}rocksdb${ep_lib_suffix} /${ep_lib_prefix}rocksdb_d${ep_lib_suffix} diff --git a/Builds/CMake/deps/Snappy.cmake b/Builds/CMake/deps/Snappy.cmake index 73eeed27c..e31bd28f9 100644 --- a/Builds/CMake/deps/Snappy.cmake +++ b/Builds/CMake/deps/Snappy.cmake @@ -2,57 +2,74 @@ NIH dep: snappy #]===================================================================] -ExternalProject_Add (snappy - PREFIX ${nih_cache_path} - GIT_REPOSITORY https://github.com/google/snappy.git - GIT_TAG 1.1.7 - 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}> - -DBUILD_SHARED_LIBS=OFF - -DCMAKE_POSITION_INDEPENDENT_CODE=ON - -DSNAPPY_BUILD_TESTS=OFF - $<$: - "-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -EHa -MP" - "-DCMAKE_CXX_FLAGS_DEBUG=-MTd" - "-DCMAKE_CXX_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}snappy$<$:_d>${ep_lib_suffix} - - > - TEST_COMMAND "" - INSTALL_COMMAND "" - BUILD_BYPRODUCTS - /${ep_lib_prefix}snappy${ep_lib_suffix} - /${ep_lib_prefix}snappy_d${ep_lib_suffix} -) -ExternalProject_Get_Property (snappy BINARY_DIR) -ExternalProject_Get_Property (snappy SOURCE_DIR) -if (CMAKE_VERBOSE_MAKEFILE) - print_ep_logs (snappy) -endif () add_library (snappy_lib STATIC IMPORTED GLOBAL) -file (MAKE_DIRECTORY ${SOURCE_DIR}/snappy) -set_target_properties (snappy_lib PROPERTIES - IMPORTED_LOCATION_DEBUG - ${BINARY_DIR}/${ep_lib_prefix}snappy_d${ep_lib_suffix} - IMPORTED_LOCATION_RELEASE - ${BINARY_DIR}/${ep_lib_prefix}snappy${ep_lib_suffix} - INTERFACE_INCLUDE_DIRECTORIES - "${SOURCE_DIR};${BINARY_DIR}") + +if (NOT WIN32) + find_package(snappy) +endif() + +if(snappy) + set_target_properties (snappy_lib PROPERTIES + IMPORTED_LOCATION_DEBUG + ${snappy} + IMPORTED_LOCATION_RELEASE + ${snappy} + INTERFACE_INCLUDE_DIRECTORIES + ${SNAPPY_INCLUDE_DIR}) + +else() + ExternalProject_Add (snappy + PREFIX ${nih_cache_path} + GIT_REPOSITORY https://github.com/google/snappy.git + GIT_TAG 1.1.7 + 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}> + -DBUILD_SHARED_LIBS=OFF + -DCMAKE_POSITION_INDEPENDENT_CODE=ON + -DSNAPPY_BUILD_TESTS=OFF + $<$: + "-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -EHa -MP" + "-DCMAKE_CXX_FLAGS_DEBUG=-MTd" + "-DCMAKE_CXX_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}snappy$<$:_d>${ep_lib_suffix} + + > + TEST_COMMAND "" + INSTALL_COMMAND "" + BUILD_BYPRODUCTS + /${ep_lib_prefix}snappy${ep_lib_suffix} + /${ep_lib_prefix}snappy_d${ep_lib_suffix} + ) + ExternalProject_Get_Property (snappy BINARY_DIR) + ExternalProject_Get_Property (snappy SOURCE_DIR) + if (CMAKE_VERBOSE_MAKEFILE) + print_ep_logs (snappy) + endif () + file (MAKE_DIRECTORY ${SOURCE_DIR}/snappy) + set_target_properties (snappy_lib PROPERTIES + IMPORTED_LOCATION_DEBUG + ${BINARY_DIR}/${ep_lib_prefix}snappy_d${ep_lib_suffix} + IMPORTED_LOCATION_RELEASE + ${BINARY_DIR}/${ep_lib_prefix}snappy${ep_lib_suffix} + INTERFACE_INCLUDE_DIRECTORIES + "${SOURCE_DIR};${BINARY_DIR}") +endif() + add_dependencies (snappy_lib snappy) target_link_libraries (ripple_libs INTERFACE snappy_lib) exclude_if_included (snappy)