From 7a3e097f860878902c3ce4fb517428485eec6831 Mon Sep 17 00:00:00 2001 From: Yingchun Lai Date: Thu, 30 Nov 2023 00:29:27 +0800 Subject: [PATCH] Build snappy in the project --- cmake_modules/BaseFunctions.cmake | 2 +- cmake_modules/FindSnappy.cmake | 38 +++++++++++++++++++++++++++++++ thirdparty/CMakeLists.txt | 27 ++++++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 cmake_modules/FindSnappy.cmake diff --git a/cmake_modules/BaseFunctions.cmake b/cmake_modules/BaseFunctions.cmake index 1882353c83..27994adf50 100644 --- a/cmake_modules/BaseFunctions.cmake +++ b/cmake_modules/BaseFunctions.cmake @@ -332,7 +332,7 @@ function(dsn_setup_thirdparty_libs) message(WARNING "Cannot find RocksDB depends cmake modules path, might not find snappy, zstd, lz4") endif() list(APPEND CMAKE_MODULE_PATH "${ROCKSDB_DEPENDS_MODULE_PATH}") - find_package(snappy) + find_package(Snappy REQUIRED) find_package(zstd) find_package(lz4) if(USE_JEMALLOC) diff --git a/cmake_modules/FindSnappy.cmake b/cmake_modules/FindSnappy.cmake new file mode 100644 index 0000000000..239b7c92b4 --- /dev/null +++ b/cmake_modules/FindSnappy.cmake @@ -0,0 +1,38 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +# - Find SNAPPY (snappy.h, libsnappy.a, libsnappy.so, and libsnappy.so.1) +# This module defines +# SNAPPY_INCLUDE_DIR, directory containing headers +# SNAPPY_SHARED_LIB, path to snappy's shared library +# SNAPPY_STATIC_LIB, path to snappy's static library +# SNAPPY_FOUND, whether snappy has been found + +find_path(SNAPPY_INCLUDE_DIR snappy.h + # make sure we don't accidentally pick up a different version + NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH) +find_library(SNAPPY_SHARED_LIB snappy + NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH) +find_library(SNAPPY_STATIC_LIB libsnappy.a + NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Snappy REQUIRED_VARS + SNAPPY_SHARED_LIB SNAPPY_STATIC_LIB SNAPPY_INCLUDE_DIR) diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt index e95e24f83e..409131ab5a 100644 --- a/thirdparty/CMakeLists.txt +++ b/thirdparty/CMakeLists.txt @@ -361,6 +361,33 @@ ExternalProject_Add(jemalloc DOWNLOAD_NO_PROGRESS true ) +set(SNAPPY_OPTIONS + -DCMAKE_INSTALL_PREFIX=${TP_OUTPUT} + -DBUILD_SHARED_LIBS=ON + -DSNAPPY_BUILD_TESTS=OFF + -DSNAPPY_BUILD_BENCHMARKS=OFF + -DSNAPPY_FUZZING_BUILD=OFF + -DSNAPPY_INSTALL=ON) +execute_process(COMMAND arch OUTPUT_VARIABLE ARCH_NAME OUTPUT_STRIP_TRAILING_WHITESPACE) +message(STATUS "ARCH_NAME = ${ARCH_NAME}") +if (ARCH_NAME EQUAL "x86_64") + set(SNAPPY_OPTIONS + ${SNAPPY_OPTIONS} + -DSNAPPY_REQUIRE_AVX=ON + -DSNAPPY_REQUIRE_AVX2=ON) +endif () +ExternalProject_Add(snappy + URL ${OSS_URL_PREFIX}/snappy-1.1.10.tar.gz + https://github.com/google/snappy/archive/refs/tags/1.1.10.tar.gz + URL_MD5 70153395ebe6d72febe2cf2e40026a44 + PATCH_COMMAND "" + CMAKE_ARGS ${SNAPPY_OPTIONS} + BUILD_COMMAND make -j${PARALLEL} + INSTALL_COMMAND make install + DOWNLOAD_EXTRACT_TIMESTAMP true + DOWNLOAD_NO_PROGRESS true +) + option(ROCKSDB_PORTABLE "Minimum CPU arch to support, or 0 = current CPU, 1 = baseline CPU" 0) set(ROCKSDB_OPTIONS -DFAIL_ON_WARNINGS=OFF