mirror of
				https://github.com/Xahau/xahaud.git
				synced 2025-11-04 02:35:48 +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")
 |