mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-19 01:55:48 +00:00
Add Conan Building For Development (#432)
This commit is contained in:
193
external/rocksdb/conanfile.py
vendored
Normal file
193
external/rocksdb/conanfile.py
vendored
Normal file
@@ -0,0 +1,193 @@
|
||||
import os
|
||||
import shutil
|
||||
from conans import ConanFile, CMake
|
||||
from conan.tools import microsoft as ms
|
||||
|
||||
class RocksDB(ConanFile):
|
||||
name = 'rocksdb'
|
||||
version = '6.27.3'
|
||||
|
||||
license = ('GPL-2.0-only', 'Apache-2.0')
|
||||
url = 'https://github.com/conan-io/conan-center-index'
|
||||
description = 'A library that provides an embeddable, persistent key-value store for fast storage'
|
||||
topics = ('rocksdb', 'database', 'leveldb', 'facebook', 'key-value')
|
||||
|
||||
settings = 'os', 'compiler', 'build_type', 'arch'
|
||||
options = {
|
||||
'enable_sse': [False, 'sse42', 'avx2'],
|
||||
'fPIC': [True, False],
|
||||
'lite': [True, False],
|
||||
'shared': [True, False],
|
||||
'use_rtti': [True, False],
|
||||
'with_gflags': [True, False],
|
||||
'with_jemalloc': [True, False],
|
||||
'with_lz4': [True, False],
|
||||
'with_snappy': [True, False],
|
||||
'with_tbb': [True, False],
|
||||
'with_zlib': [True, False],
|
||||
'with_zstd': [True, False],
|
||||
}
|
||||
default_options = {
|
||||
'enable_sse': False,
|
||||
'fPIC': True,
|
||||
'lite': False,
|
||||
'shared': False,
|
||||
'use_rtti': False,
|
||||
'with_gflags': False,
|
||||
'with_jemalloc': False,
|
||||
'with_lz4': False,
|
||||
'with_snappy': False,
|
||||
'with_tbb': False,
|
||||
'with_zlib': False,
|
||||
'with_zstd': False,
|
||||
}
|
||||
|
||||
def requirements(self):
|
||||
if self.options.with_gflags:
|
||||
self.requires('gflags/2.2.2')
|
||||
if self.options.with_jemalloc:
|
||||
self.requires('jemalloc/5.2.1')
|
||||
if self.options.with_lz4:
|
||||
self.requires('lz4/1.9.3')
|
||||
if self.options.with_snappy:
|
||||
self.requires('snappy/1.1.9')
|
||||
if self.options.with_tbb:
|
||||
self.requires('onetbb/2020.3')
|
||||
if self.options.with_zlib:
|
||||
self.requires('zlib/1.2.11')
|
||||
if self.options.with_zstd:
|
||||
self.requires('zstd/1.5.2')
|
||||
|
||||
def config_options(self):
|
||||
if self.settings.os == 'Windows':
|
||||
del self.options.fPIC
|
||||
|
||||
def configure(self):
|
||||
if self.options.shared:
|
||||
del self.options.fPIC
|
||||
|
||||
generators = 'cmake', 'cmake_find_package'
|
||||
|
||||
scm = {
|
||||
'type': 'git',
|
||||
'url': 'https://github.com/facebook/rocksdb.git',
|
||||
'revision': 'v6.27.3',
|
||||
}
|
||||
|
||||
exports_sources = 'thirdparty.inc'
|
||||
# For out-of-source build.
|
||||
no_copy_source = True
|
||||
|
||||
_cmake = None
|
||||
|
||||
def _configure_cmake(self):
|
||||
if self._cmake:
|
||||
return
|
||||
|
||||
self._cmake = CMake(self)
|
||||
|
||||
self._cmake.definitions['CMAKE_POSITION_INDEPENDENT_CODE'] = True
|
||||
|
||||
self._cmake.definitions['DISABLE_STALL_NOTIF'] = False
|
||||
self._cmake.definitions['FAIL_ON_WARNINGS'] = False
|
||||
self._cmake.definitions['OPTDBG'] = True
|
||||
self._cmake.definitions['WITH_TESTS'] = False
|
||||
self._cmake.definitions['WITH_TOOLS'] = False
|
||||
|
||||
self._cmake.definitions['WITH_GFLAGS'] = self.options.with_gflags
|
||||
self._cmake.definitions['WITH_JEMALLOC'] = self.options.with_jemalloc
|
||||
self._cmake.definitions['WITH_LZ4'] = self.options.with_lz4
|
||||
self._cmake.definitions['WITH_SNAPPY'] = self.options.with_snappy
|
||||
self._cmake.definitions['WITH_TBB'] = self.options.with_tbb
|
||||
self._cmake.definitions['WITH_ZLIB'] = self.options.with_zlib
|
||||
self._cmake.definitions['WITH_ZSTD'] = self.options.with_zstd
|
||||
|
||||
self._cmake.definitions['USE_RTTI'] = self.options.use_rtti
|
||||
self._cmake.definitions['ROCKSDB_LITE'] = self.options.lite
|
||||
self._cmake.definitions['ROCKSDB_INSTALL_ON_WINDOWS'] = (
|
||||
self.settings.os == 'Windows'
|
||||
)
|
||||
|
||||
if not self.options.enable_sse:
|
||||
self._cmake.definitions['PORTABLE'] = True
|
||||
self._cmake.definitions['FORCE_SSE42'] = False
|
||||
elif self.options.enable_sse == 'sse42':
|
||||
self._cmake.definitions['PORTABLE'] = True
|
||||
self._cmake.definitions['FORCE_SSE42'] = True
|
||||
elif self.options.enable_sse == 'avx2':
|
||||
self._cmake.definitions['PORTABLE'] = False
|
||||
self._cmake.definitions['FORCE_SSE42'] = False
|
||||
|
||||
self._cmake.definitions['WITH_ASAN'] = False
|
||||
self._cmake.definitions['WITH_BZ2'] = False
|
||||
self._cmake.definitions['WITH_JNI'] = False
|
||||
self._cmake.definitions['WITH_LIBRADOS'] = False
|
||||
if ms.is_msvc(self):
|
||||
self._cmake.definitions['WITH_MD_LIBRARY'] = (
|
||||
ms.msvc_runtime_flag(self).startswith('MD')
|
||||
)
|
||||
self._cmake.definitions['WITH_RUNTIME_DEBUG'] = (
|
||||
ms.msvc_runtime_flag(self).endswith('d')
|
||||
)
|
||||
self._cmake.definitions['WITH_NUMA'] = False
|
||||
self._cmake.definitions['WITH_TSAN'] = False
|
||||
self._cmake.definitions['WITH_UBSAN'] = False
|
||||
self._cmake.definitions['WITH_WINDOWS_UTF8_FILENAMES'] = False
|
||||
self._cmake.definitions['WITH_XPRESS'] = False
|
||||
self._cmake.definitions['WITH_FALLOCATE'] = True
|
||||
|
||||
|
||||
def build(self):
|
||||
if ms.is_msvc(self):
|
||||
file = os.path.join(
|
||||
self.recipe_folder, '..', 'export_source', 'thirdparty.inc'
|
||||
)
|
||||
shutil.copy(file, self.build_folder)
|
||||
self._configure_cmake()
|
||||
self._cmake.configure()
|
||||
self._cmake.build()
|
||||
|
||||
def package(self):
|
||||
self._configure_cmake()
|
||||
self._cmake.install()
|
||||
|
||||
def package_info(self):
|
||||
self.cpp_info.filenames['cmake_find_package'] = 'RocksDB'
|
||||
self.cpp_info.filenames['cmake_find_package_multi'] = 'RocksDB'
|
||||
self.cpp_info.set_property('cmake_file_name', 'RocksDB')
|
||||
|
||||
self.cpp_info.names['cmake_find_package'] = 'RocksDB'
|
||||
self.cpp_info.names['cmake_find_package_multi'] = 'RocksDB'
|
||||
|
||||
self.cpp_info.components['librocksdb'].names['cmake_find_package'] = 'rocksdb'
|
||||
self.cpp_info.components['librocksdb'].names['cmake_find_package_multi'] = 'rocksdb'
|
||||
self.cpp_info.components['librocksdb'].set_property(
|
||||
'cmake_target_name', 'RocksDB::rocksdb'
|
||||
)
|
||||
|
||||
self.cpp_info.components['librocksdb'].libs = ['rocksdb']
|
||||
|
||||
if self.settings.os == "Windows":
|
||||
self.cpp_info.components["librocksdb"].system_libs = ["shlwapi", "rpcrt4"]
|
||||
if self.options.shared:
|
||||
self.cpp_info.components["librocksdb"].defines = ["ROCKSDB_DLL"]
|
||||
elif self.settings.os in ["Linux", "FreeBSD"]:
|
||||
self.cpp_info.components["librocksdb"].system_libs = ["pthread", "m"]
|
||||
|
||||
if self.options.lite:
|
||||
self.cpp_info.components["librocksdb"].defines.append("ROCKSDB_LITE")
|
||||
|
||||
if self.options.with_gflags:
|
||||
self.cpp_info.components["librocksdb"].requires.append("gflags::gflags")
|
||||
if self.options.with_jemalloc:
|
||||
self.cpp_info.components["librocksdb"].requires.append("jemalloc::jemalloc")
|
||||
if self.options.with_lz4:
|
||||
self.cpp_info.components["librocksdb"].requires.append("lz4::lz4")
|
||||
if self.options.with_snappy:
|
||||
self.cpp_info.components["librocksdb"].requires.append("snappy::snappy")
|
||||
if self.options.with_tbb:
|
||||
self.cpp_info.components["librocksdb"].requires.append("onetbb::onetbb")
|
||||
if self.options.with_zlib:
|
||||
self.cpp_info.components["librocksdb"].requires.append("zlib::zlib")
|
||||
if self.options.with_zstd:
|
||||
self.cpp_info.components["librocksdb"].requires.append("zstd::zstd")
|
||||
62
external/rocksdb/thirdparty.inc
vendored
Normal file
62
external/rocksdb/thirdparty.inc
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
if(WITH_GFLAGS)
|
||||
# Config with namespace available since gflags 2.2.2
|
||||
find_package(gflags REQUIRED)
|
||||
set(GFLAGS_LIB gflags::gflags)
|
||||
list(APPEND THIRDPARTY_LIBS ${GFLAGS_LIB})
|
||||
add_definitions(-DGFLAGS=1)
|
||||
endif()
|
||||
|
||||
if(WITH_SNAPPY)
|
||||
find_package(Snappy REQUIRED)
|
||||
add_definitions(-DSNAPPY)
|
||||
list(APPEND THIRDPARTY_LIBS Snappy::snappy)
|
||||
endif()
|
||||
|
||||
if(WITH_LZ4)
|
||||
find_package(lz4 REQUIRED)
|
||||
add_definitions(-DLZ4)
|
||||
list(APPEND THIRDPARTY_LIBS lz4::lz4)
|
||||
endif()
|
||||
|
||||
if(WITH_ZLIB)
|
||||
find_package(ZLIB REQUIRED)
|
||||
add_definitions(-DZLIB)
|
||||
list(APPEND THIRDPARTY_LIBS ZLIB::ZLIB)
|
||||
endif()
|
||||
|
||||
option(WITH_BZ2 "build with bzip2" OFF)
|
||||
if(WITH_BZ2)
|
||||
find_package(BZip2 REQUIRED)
|
||||
add_definitions(-DBZIP2)
|
||||
list(APPEND THIRDPARTY_LIBS BZip2::BZip2)
|
||||
endif()
|
||||
|
||||
if(WITH_ZSTD)
|
||||
find_package(zstd REQUIRED)
|
||||
add_definitions(-DZSTD)
|
||||
list(APPEND THIRDPARTY_LIBS zstd::zstd)
|
||||
endif()
|
||||
|
||||
# ================================================== XPRESS ==================================================
|
||||
# This makes use of built-in Windows API, no additional includes, links to a system lib
|
||||
|
||||
if(WITH_XPRESS)
|
||||
message(STATUS "XPRESS is enabled")
|
||||
add_definitions(-DXPRESS)
|
||||
# We are using the implementation provided by the system
|
||||
list(APPEND SYSTEM_LIBS Cabinet.lib)
|
||||
else()
|
||||
message(STATUS "XPRESS is disabled")
|
||||
endif()
|
||||
|
||||
# ================================================== JEMALLOC ==================================================
|
||||
if(WITH_JEMALLOC)
|
||||
message(STATUS "JEMALLOC library is enabled")
|
||||
add_definitions(-DROCKSDB_JEMALLOC -DJEMALLOC_EXPORT= -DJEMALLOC_NO_RENAME)
|
||||
list(APPEND THIRDPARTY_LIBS jemalloc::jemalloc)
|
||||
set(ARTIFACT_SUFFIX "_je")
|
||||
|
||||
else ()
|
||||
set(ARTIFACT_SUFFIX "")
|
||||
message(STATUS "JEMALLOC library is disabled")
|
||||
endif ()
|
||||
Reference in New Issue
Block a user