diff --git a/pyproject.toml b/pyproject.toml index 6d1b4c5b6fb56a63069147e3a1de922ce71a45d8..9bf40cd00cfc8a38437479ea4fefd065fa1e9602 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,3 @@ [build-system] -requires = ["setuptools", "wheel", "cython"] +requires = ["setuptools", "wheel", "cython", "pkgconfig"] build-backend = "setuptools.build_meta" diff --git a/setup.py b/setup.py index 239230572951fb365839336656163513d0bea586..2450eefc0b9ad9797dbf421cfb3f823e507c8b82 100644 --- a/setup.py +++ b/setup.py @@ -1,9 +1,13 @@ #!/usr/bin/env python3 +import os import platform -import setuptools import sys +import pkgconfig +from Cython.Build import cythonize +from pkgconfig import PackageNotFoundError +from setuptools import Extension, setup extra_compile_args = [ '-std=c++11', @@ -21,22 +25,31 @@ if platform.system() == 'Darwin': if sys.version_info < (3 , 0): raise Exception("python-rocksdb requires Python 3.x") -setuptools.setup( - ext_modules=[ - setuptools.Extension( - 'rocksdb._rocksdb', - [ - 'rocksdb/_rocksdb.pyx', - ], - extra_compile_args=extra_compile_args, - language='c++', - libraries=[ - 'rocksdb', - 'snappy', - 'bz2', - 'z', - 'lz4', - ], - ), +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]), )