diff --git a/Builds/CMake/deps/Findlz4.cmake b/Builds/CMake/deps/Findlz4.cmake new file mode 100644 index 0000000000..642a401271 --- /dev/null +++ b/Builds/CMake/deps/Findlz4.cmake @@ -0,0 +1,22 @@ +find_package (PkgConfig REQUIRED) +pkg_search_module (lz4_PC QUIET liblz4>=1.8) + +if(static) + set(LZ4_LIB liblz4.a) +else() + set(LZ4_LIB lz4) +endif() + +find_library (lz4 + NAMES ${LZ4_LIB} + HINTS + ${lz4_PC_LIBDIR} + ${lz4_PC_LIBRARY_DIRS} + NO_DEFAULT_PATH) + +find_path (LZ4_INCLUDE_DIR + NAMES lz4.h + HINTS + ${lz4_PC_INCLUDEDIR} + ${lz4_PC_INCLUDEDIRS} + NO_DEFAULT_PATH) diff --git a/Builds/CMake/deps/Libarchive.cmake b/Builds/CMake/deps/Libarchive.cmake index 203d42b7e3..122bb17cd4 100644 --- a/Builds/CMake/deps/Libarchive.cmake +++ b/Builds/CMake/deps/Libarchive.cmake @@ -73,7 +73,7 @@ ExternalProject_Add (libarchive > TEST_COMMAND "" INSTALL_COMMAND "" - DEPENDS lz4 + DEPENDS lz4_lib BUILD_BYPRODUCTS /libarchive/${ep_lib_prefix}archive${lib_post}${ep_lib_suffix} /libarchive/${ep_lib_prefix}archive${lib_post}_d${ep_lib_suffix} diff --git a/Builds/CMake/deps/Lz4.cmake b/Builds/CMake/deps/Lz4.cmake index 2f6f0e7f64..cc3101f1cf 100644 --- a/Builds/CMake/deps/Lz4.cmake +++ b/Builds/CMake/deps/Lz4.cmake @@ -2,58 +2,77 @@ NIH dep: lz4 #]===================================================================] -ExternalProject_Add (lz4 - PREFIX ${nih_cache_path} - GIT_REPOSITORY https://github.com/lz4/lz4.git - GIT_TAG v1.8.2 - SOURCE_SUBDIR contrib/cmake_unofficial - 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_STATIC_LIBS=ON - -DBUILD_SHARED_LIBS=OFF - $<$: - "-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 $ - --target lz4_static - $<$:--parallel ${ep_procs}> - $<$: - COMMAND - ${CMAKE_COMMAND} -E copy - /$/${ep_lib_prefix}lz4$<$:_d>${ep_lib_suffix} - - > - TEST_COMMAND "" - INSTALL_COMMAND "" - BUILD_BYPRODUCTS - /${ep_lib_prefix}lz4${ep_lib_suffix} - /${ep_lib_prefix}lz4_d${ep_lib_suffix} -) -ExternalProject_Get_Property (lz4 BINARY_DIR) -ExternalProject_Get_Property (lz4 SOURCE_DIR) -if (CMAKE_VERBOSE_MAKEFILE) - print_ep_logs (lz4) -endif () add_library (lz4_lib STATIC IMPORTED GLOBAL) -file (MAKE_DIRECTORY ${SOURCE_DIR}/lz4) -set_target_properties (lz4_lib PROPERTIES - IMPORTED_LOCATION_DEBUG - ${BINARY_DIR}/${ep_lib_prefix}lz4_d${ep_lib_suffix} - IMPORTED_LOCATION_RELEASE - ${BINARY_DIR}/${ep_lib_prefix}lz4${ep_lib_suffix} - INTERFACE_INCLUDE_DIRECTORIES - ${SOURCE_DIR}/lib) + +if (NOT WIN32) + find_package(lz4) +endif() + +if(lz4) + set_target_properties (lz4_lib PROPERTIES + IMPORTED_LOCATION_DEBUG + ${lz4} + IMPORTED_LOCATION_RELEASE + ${lz4} + INTERFACE_INCLUDE_DIRECTORIES + ${LZ4_INCLUDE_DIR}) + +else() + ExternalProject_Add (lz4 + PREFIX ${nih_cache_path} + GIT_REPOSITORY https://github.com/lz4/lz4.git + GIT_TAG v1.8.2 + SOURCE_SUBDIR contrib/cmake_unofficial + 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_STATIC_LIBS=ON + -DBUILD_SHARED_LIBS=OFF + $<$: + "-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 $ + --target lz4_static + $<$:--parallel ${ep_procs}> + $<$: + COMMAND + ${CMAKE_COMMAND} -E copy + /$/${ep_lib_prefix}lz4$<$:_d>${ep_lib_suffix} + + > + TEST_COMMAND "" + INSTALL_COMMAND "" + BUILD_BYPRODUCTS + /${ep_lib_prefix}lz4${ep_lib_suffix} + /${ep_lib_prefix}lz4_d${ep_lib_suffix} + ) + ExternalProject_Get_Property (lz4 BINARY_DIR) + ExternalProject_Get_Property (lz4 SOURCE_DIR) + + file (MAKE_DIRECTORY ${SOURCE_DIR}/lz4) + set_target_properties (lz4_lib PROPERTIES + IMPORTED_LOCATION_DEBUG + ${BINARY_DIR}/${ep_lib_prefix}lz4_d${ep_lib_suffix} + IMPORTED_LOCATION_RELEASE + ${BINARY_DIR}/${ep_lib_prefix}lz4${ep_lib_suffix} + INTERFACE_INCLUDE_DIRECTORIES + ${SOURCE_DIR}/lib) + + if (CMAKE_VERBOSE_MAKEFILE) + print_ep_logs (lz4) + endif () +endif() + add_dependencies (lz4_lib lz4) target_link_libraries (ripple_libs INTERFACE lz4_lib) exclude_if_included (lz4) diff --git a/Builds/CMake/deps/Rocksdb.cmake b/Builds/CMake/deps/Rocksdb.cmake index f65edebeb5..756b65232b 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 + DEPENDS snappy lz4_lib BUILD_BYPRODUCTS /${ep_lib_prefix}rocksdb${ep_lib_suffix} /${ep_lib_prefix}rocksdb_d${ep_lib_suffix} diff --git a/CMakeLists.txt b/CMakeLists.txt index 067ccfee6e..8e4204e2cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required (VERSION 3.9.0) -list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/Builds/CMake) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/deps") -set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake ${CMAKE_MODULE_PATH}) include (CheckCXXCompilerFlag) if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.11) include (FetchContent)