mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-04 18:55:49 +00:00
194 lines
7.2 KiB
Python
194 lines
7.2 KiB
Python
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")
|