Skip to content
Snippets Groups Projects
setup.py 1.25 KiB
#!/usr/bin/env python3

import os
import platform
import sys

import pkgconfig
from Cython.Build import cythonize
from pkgconfig import PackageNotFoundError
from setuptools import Extension, setup

extra_compile_args = [
    '-std=c++17',
    '-O3',
    '-Wall',
    '-Wextra',
    '-Wconversion',
    '-fno-strict-aliasing',
    '-fno-rtti',
]

if platform.system() == 'Darwin':
    extra_compile_args += ['-mmacosx-version-min=10.7', '-stdlib=libc++']

if sys.version_info < (3 , 0):
    raise Exception("python-rocksdb requires Python 3.x")

rocksdb_extension = Extension(
    'rocksdb._rocksdb',
    [
        'rocksdb/_rocksdb.pyx',
    ],
    extra_compile_args=extra_compile_args,
    language='c++',
    libraries=['rocksdb'],
)

try:
    pkgconfig.configure_extension(rocksdb_extension, "rocksdb")
except PackageNotFoundError:
    include_path = os.environ.get("INCLUDE_PATH")
    library_path = os.environ.get("LIBRARY_PATH")

    rocksdb_extension.include_dirs += include_path.split(os.pathsep) if include_path else []
    rocksdb_extension.library_dirs += library_path.split(os.pathsep) if library_path else []
    rocksdb_extension.libraries += [
        'snappy',
        'bz2',
        'z',
        'lz4',
    ]

setup(
    ext_modules=cythonize([rocksdb_extension]),
)