summaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
authorBryn Keller <xoltar@xoltar.org>2016-11-30 20:26:34 -0800
committerBryn Keller <xoltar@xoltar.org>2016-11-30 20:26:34 -0800
commitcdcf5f101523ca2edc497a8de559b2c538ddbd89 (patch)
tree35746cd314ccc4a95f1852da293f52228aec0b24 /setup.py
parent4463f30e17509cf28d09d4c0ec34a662c1ae9aa7 (diff)
Moved setup.py to root so that we could avoid need for symbolic link. Updated readme.rst and other files to reflect this change, added requirement for enum34 when using python 2.7. Also added explanation that the system python 2.7.10 on Mac OS X is to be avoided.
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..6d082d7
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,73 @@
+from setuptools import setup, Extension, find_packages
+from setuptools.command.build_ext import build_ext
+import sys
+import os.path
+from io import open
+
+if sys.version_info < (2, 7, 12):
+ print("Sorry, PHAT requires Python 2.7.12 or later")
+ sys.exit(1)
+
+
+ext_modules = [
+ Extension(
+ '_phat',
+ ['python/_phat.cpp'],
+ include_dirs=['include'],
+ language='c++',
+ ),
+]
+
+here = os.path.abspath(os.path.dirname(__file__))
+
+# Get the long description from the README file
+with open(os.path.join(here, 'python', 'README.rst'), encoding = 'utf8') as f:
+ long_description = f.read()
+
+class BuildExt(build_ext):
+ """A custom build extension for adding compiler-specific options."""
+ c_opts = {
+ 'msvc': ['/EHsc'],
+ 'unix': ['-std=c++11'],
+ }
+
+ if sys.platform == 'darwin':
+ c_opts['unix'] += ['-stdlib=libc++', '-mmacosx-version-min=10.7']
+
+ def build_extensions(self):
+ ct = self.compiler.compiler_type
+ opts = self.c_opts.get(ct, [])
+ import pybind11
+ for ext in self.extensions:
+ ext.extra_compile_args = opts
+ ext.include_dirs.append(pybind11.get_include())
+ ext.include_dirs.append(pybind11.get_include(user=True))
+ build_ext.build_extensions(self)
+
+requires = ['pybind11']
+
+if sys.version_info < (3,4,0):
+ requires.append('enum34')
+
+setup(
+ name='phat',
+ version='0.0.1',
+ author='Bryn Keller',
+ author_email='bryn.keller@intel.com',
+ url='https://bitbucket.org/phat-code/phat',
+ description='Python bindings for PHAT',
+ license = 'LGPL',
+ keywords='algebraic-topology PHAT distributed topology persistent-homology',
+ long_description=long_description,
+ ext_modules=ext_modules,
+ install_requires=requires,
+ cmdclass={'build_ext': BuildExt},
+ package_dir={'':'python'},
+ py_modules = ['phat'],
+ # packages = find_packages(exclude = ['doc', 'test'])
+ )
+
+
+
+
+