diff options
Diffstat (limited to 'setup.py')
-rw-r--r--[-rwxr-xr-x] | setup.py | 138 |
1 files changed, 70 insertions, 68 deletions
@@ -1,21 +1,18 @@ #!/usr/bin/env python -from setuptools import setup, find_packages -from codecs import open -from os import path -from setuptools.extension import Extension -from Cython.Build import cythonize -import numpy -import re import os -import sys +import re import subprocess +import sys -here = path.abspath(path.dirname(__file__)) +from setuptools import find_packages, setup +from setuptools.extension import Extension +import numpy +from Cython.Build import cythonize -os.environ["CC"] = "g++" -os.environ["CXX"] = "g++" +sys.path.append(os.path.join("ot", "helpers")) +from openmp_helpers import check_openmp_support # dirty but working __version__ = re.search( @@ -24,74 +21,79 @@ __version__ = re.search( # The beautiful part is, I don't even need to check exceptions here. # If something messes up, let the build process fail noisy, BEFORE my release! -# thanks Pipy for handling markdown now +# thanks PyPI for handling markdown now ROOT = os.path.abspath(os.path.dirname(__file__)) - with open(os.path.join(ROOT, 'README.md'), encoding="utf-8") as f: README = f.read() -opt_arg = ["-O3"] - # clean cython output is clean is called if 'clean' in sys.argv[1:]: if os.path.isfile('ot/lp/emd_wrap.cpp'): os.remove('ot/lp/emd_wrap.cpp') - # add platform dependant optional compilation argument +openmp_supported, flags = check_openmp_support() +compile_args = ["/O2" if sys.platform == "win32" else "-O3"] +link_args = [] + +if openmp_supported: + compile_args += flags + ["/DOMP" if sys.platform == 'win32' else "-DOMP"] + link_args += flags + if sys.platform.startswith('darwin'): - opt_arg.append("-stdlib=libc++") + compile_args.append("-stdlib=libc++") sdk_path = subprocess.check_output(['xcrun', '--show-sdk-path']) os.environ['CFLAGS'] = '-isysroot "{}"'.format(sdk_path.rstrip().decode("utf-8")) -setup(name='POT', - version=__version__, - description='Python Optimal Transport Library', - long_description=README, - long_description_content_type='text/markdown', - author=u'Remi Flamary, Nicolas Courty', - author_email='remi.flamary@gmail.com, ncourty@gmail.com', - url='https://github.com/PythonOT/POT', - packages=find_packages(), - ext_modules=cythonize(Extension( - "ot.lp.emd_wrap", # the extension name - sources=["ot/lp/emd_wrap.pyx", "ot/lp/EMD_wrapper.cpp"], # the Cython source and - # additional C++ source files - language="c++", # generate and compile C++ code, - include_dirs=[numpy.get_include(), os.path.join(ROOT, 'ot/lp')], - extra_compile_args=opt_arg - )), - platforms=['linux', 'macosx', 'windows'], - download_url='https://github.com/PythonOT/POT/archive/{}.tar.gz'.format(__version__), - license='MIT', - scripts=[], - data_files=[], - requires=["numpy", "scipy", "cython"], - setup_requires=["numpy>=1.16", "scipy>=1.0", "cython>=0.23"], - install_requires=["numpy>=1.16", "scipy>=1.0", "cython>=0.23"], - classifiers=[ - 'Development Status :: 5 - Production/Stable', - 'Intended Audience :: Developers', - 'Intended Audience :: Education', - 'Intended Audience :: Science/Research', - 'License :: OSI Approved :: MIT License', - 'Environment :: Console', - 'Operating System :: OS Independent', - 'Operating System :: MacOS', - 'Operating System :: POSIX', - 'Programming Language :: Python', - 'Programming Language :: C++', - 'Programming Language :: C', - 'Programming Language :: Cython', - 'Topic :: Utilities', - 'Topic :: Scientific/Engineering :: Artificial Intelligence', - 'Topic :: Scientific/Engineering :: Mathematics', - 'Topic :: Scientific/Engineering :: Information Analysis', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - ] - ) +setup( + name='POT', + version=__version__, + description='Python Optimal Transport Library', + long_description=README, + long_description_content_type='text/markdown', + author=u'Remi Flamary, Nicolas Courty', + author_email='remi.flamary@gmail.com, ncourty@gmail.com', + url='https://github.com/PythonOT/POT', + packages=find_packages(), + ext_modules=cythonize(Extension( + name="ot.lp.emd_wrap", + sources=["ot/lp/emd_wrap.pyx", "ot/lp/EMD_wrapper.cpp"], # cython/c++ src files + language="c++", + include_dirs=[numpy.get_include(), os.path.join(ROOT, 'ot/lp')], + extra_compile_args=compile_args, + extra_link_args=link_args + )), + platforms=['linux', 'macosx', 'windows'], + download_url='https://github.com/PythonOT/POT/archive/{}.tar.gz'.format(__version__), + license='MIT', + scripts=[], + data_files=[], + setup_requires=["numpy>=1.16", "cython>=0.23"], + install_requires=["numpy>=1.16", "scipy>=1.0"], + classifiers=[ + 'Development Status :: 5 - Production/Stable', + 'Intended Audience :: Developers', + 'Intended Audience :: Education', + 'Intended Audience :: Science/Research', + 'License :: OSI Approved :: MIT License', + 'Environment :: Console', + 'Operating System :: OS Independent', + 'Operating System :: POSIX :: Linux', + 'Operating System :: MacOS', + 'Operating System :: POSIX', + 'Operating System :: Microsoft :: Windows', + 'Programming Language :: Python', + 'Programming Language :: C++', + 'Programming Language :: C', + 'Programming Language :: Cython', + 'Topic :: Utilities', + 'Topic :: Scientific/Engineering :: Artificial Intelligence', + 'Topic :: Scientific/Engineering :: Mathematics', + 'Topic :: Scientific/Engineering :: Information Analysis', + 'Programming Language :: Python :: 3', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + ] +) |