diff options
author | Vincent Ambo <mail@tazj.in> | 2020-07-15T07·20+0100 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2020-07-15T07·23+0100 |
commit | 1213b086a1015a662ab7ebd658f784534fd3116a (patch) | |
tree | d3bc8f3b7f40b8b60f0ef6fbd649cf765f4fdfb6 /third_party/immer/setup.py | |
parent | 1390827b9ea1e04bc9863e48930bfd16db3b716e (diff) | |
parent | 7f19d641647ac4ef313ed88d6b5c140983ce5436 (diff) |
merge(3p/immer): Subtree merge at 'ad3e3556d' as 'third_party/immer' r/1299
Change-Id: I9636a41ad44b4218293833fd3e9456d9b07c731b
Diffstat (limited to 'third_party/immer/setup.py')
-rw-r--r-- | third_party/immer/setup.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/third_party/immer/setup.py b/third_party/immer/setup.py new file mode 100644 index 000000000000..98c08449bcc3 --- /dev/null +++ b/third_party/immer/setup.py @@ -0,0 +1,68 @@ + +# immer: immutable data structures for C++ +# Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente +# +# This software is distributed under the Boost Software License, Version 1.0. +# See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt + +## + +import os +import re +import sys +import platform +import subprocess + +from distutils.version import LooseVersion +from setuptools import setup, Extension +from setuptools.command.build_ext import build_ext + +class CMakeExtension(Extension): + def __init__(self, name, sourcedir=''): + Extension.__init__(self, name, sources=[]) + self.sourcedir = os.path.abspath(sourcedir) + +class CMakeBuild(build_ext): + + def run(self): + try: + subprocess.check_output(['cmake', '--version']) + except OSError: + raise RuntimeError( + "CMake must be installed to build the following extensions: " + + ", ".join(e.name for e in self.extensions)) + for ext in self.extensions: + self.build_extension(ext) + + def build_extension(self, ext): + extdir = os.path.abspath(os.path.dirname( + self.get_ext_fullpath(ext.name))) + cfg = 'Debug' if self.debug else 'Release' + if not os.path.exists(self.build_temp): + os.makedirs(self.build_temp) + subprocess.check_call([ + 'cmake', ext.sourcedir, + '-DCMAKE_BUILD_TYPE=' + cfg, + '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=' + extdir, + '-DPYTHON_EXECUTABLE=' + sys.executable, + '-DDISABLE_WERROR=1', + ], cwd=self.build_temp) + subprocess.check_call([ + 'cmake', '--build', '.', + '--config', cfg, + '--target', 'python', + ], cwd=self.build_temp) + +setup( + name='immer', + version='0.0.0', + author='Juan Pedro Bolivar Puente', + author_email='raskolnikov@gnu.org', + description='Efficient immutable data structures', + long_description='', + packages=['immer'], + package_dir={'': 'extra/python'}, + ext_modules=[CMakeExtension('immer_python_module', sourcedir='.')], + cmdclass=dict(build_ext=CMakeBuild), + zip_safe=False, +) |