|
1 | 1 | #!/usr/bin/env python |
2 | | -# Copyright (c) 2017-2019, Intel Corporation |
| 2 | +# Copyright (c) 2017-2022, Intel Corporation |
3 | 3 | # |
4 | 4 | # Redistribution and use in source and binary forms, with or without |
5 | 5 | # modification, are permitted provided that the following conditions are met: |
|
24 | 24 | # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
25 | 25 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | 26 |
|
27 | | -from __future__ import division, print_function, absolute_import |
28 | | - |
29 | 27 | import os |
30 | 28 | import sys |
31 | 29 | import io |
32 | 30 | import re |
| 31 | +from os.path import join |
| 32 | +import Cython.Build |
| 33 | +from setuptools import setup, Extension |
| 34 | +import numpy as np |
| 35 | + |
33 | 36 |
|
34 | 37 | with io.open('mkl_random/_version.py', 'rt', encoding='utf8') as f: |
35 | 38 | version = re.search(r'__version__ = \'(.*?)\'', f.read()).group(1) |
|
39 | 42 |
|
40 | 43 | VERSION = version |
41 | 44 |
|
42 | | -CLASSIFIERS = "" |
43 | | - |
44 | | -def configuration(parent_package='',top_path=None): |
45 | | - from numpy.distutils.misc_util import Configuration |
46 | | - |
47 | | - config = Configuration(None, parent_package, top_path) |
48 | | - config.set_options(ignore_setup_xxx_py=True, |
49 | | - assume_default_configuration=True, |
50 | | - delegate_options_to_subpackages=True, |
51 | | - quiet=False) |
52 | | - |
53 | | - config.add_subpackage('mkl_random') |
54 | | - |
55 | | - config.version = VERSION |
56 | | - |
57 | | - return config |
58 | | - |
59 | | - |
60 | | -from distutils.command.sdist import sdist |
61 | | -def setup_package(): |
62 | | - src_path = os.path.dirname(os.path.abspath(sys.argv[0])) |
63 | | - old_path = os.getcwd() |
64 | | - os.chdir(src_path) |
65 | | - sys.path.insert(0, src_path) |
66 | | - |
67 | | - from setuptools import setup |
68 | | - from numpy.distutils.core import setup |
69 | | - metadata = dict( |
70 | | - name = 'mkl_random', |
71 | | - maintainer = "Intel Corp.", |
72 | | - maintainer_email = "scripting@intel.com", |
73 | | - description = "NumPy-based Python interface to Intel (R) MKL Random Number Generation functionality", |
74 | | - long_description = long_description, |
75 | | - long_description_content_type="text/markdown", |
76 | | - url = "http://github.com/IntelPython/mkl_random", |
77 | | - author = "Intel Corporation", |
78 | | - download_url = "http://github.com/IntelPython/mkl_random", |
79 | | - license = 'BSD', |
80 | | - classifiers = [_f for _f in CLASSIFIERS.split('\n') if _f], |
81 | | - platforms = ["Windows", "Linux", "Mac OS-X"], |
82 | | - test_suite = 'nose.collector', |
83 | | - python_requires = '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*', |
84 | | - install_requires=['numpy'], |
85 | | - configuration = configuration |
86 | | - ) |
87 | | - |
88 | | - try: |
89 | | - setup(**metadata) |
90 | | - finally: |
91 | | - del sys.path[0] |
92 | | - os.chdir(old_path) |
93 | | - |
94 | | - return None |
95 | | - |
96 | | -if __name__ == '__main__': |
97 | | - setup_package() |
| 45 | +CLASSIFIERS = CLASSIFIERS = """\ |
| 46 | +Development Status :: 5 - Production/Stable |
| 47 | +Intended Audience :: Science/Research |
| 48 | +Intended Audience :: Developers |
| 49 | +License :: OSI Approved |
| 50 | +Programming Language :: C |
| 51 | +Programming Language :: Python |
| 52 | +Programming Language :: Python :: 3 |
| 53 | +Programming Language :: Python :: 3.7 |
| 54 | +Programming Language :: Python :: 3.8 |
| 55 | +Programming Language :: Python :: 3.9 |
| 56 | +Programming Language :: Python :: 3.10 |
| 57 | +Programming Language :: Python :: Implementation :: CPython |
| 58 | +Topic :: Software Development |
| 59 | +Topic :: Scientific/Engineering |
| 60 | +Operating System :: Microsoft :: Windows |
| 61 | +Operating System :: POSIX |
| 62 | +Operating System :: Unix |
| 63 | +Operating System :: MacOS |
| 64 | +""" |
| 65 | + |
| 66 | + |
| 67 | +def extensions(): |
| 68 | + mkl_root = os.environ.get('MKLROOT', None) |
| 69 | + if mkl_root: |
| 70 | + mkl_info = { |
| 71 | + 'include_dirs': [join(mkl_root, 'include')], |
| 72 | + 'library_dirs': [join(mkl_root, 'lib'), join(mkl_root, 'lib', 'intel64')], |
| 73 | + 'libraries': ['mkl_rt'] |
| 74 | + } |
| 75 | + else: |
| 76 | + try: |
| 77 | + mkl_info = get_info('mkl') |
| 78 | + except: |
| 79 | + mkl_info = dict() |
| 80 | + |
| 81 | + mkl_include_dirs = mkl_info.get('include_dirs', []) |
| 82 | + mkl_library_dirs = mkl_info.get('library_dirs', []) |
| 83 | + mkl_libraries = mkl_info.get('libraries', ['mkl_rt']) |
| 84 | + |
| 85 | + libs = mkl_libraries |
| 86 | + lib_dirs = mkl_library_dirs |
| 87 | + |
| 88 | + if sys.platform == 'win32': |
| 89 | + libs.append('Advapi32') |
| 90 | + |
| 91 | + Q = '/Q' if sys.platform.startswith('win') or sys.platform == 'cygwin' else '-' |
| 92 | + eca = [Q + "std=c++11"] |
| 93 | + if sys.platform == "linux": |
| 94 | + eca.extend(["-Wno-unused-but-set-variable", "-Wno-unused-function"]) |
| 95 | + |
| 96 | + defs = [('_FILE_OFFSET_BITS', '64'), |
| 97 | + ('_LARGEFILE_SOURCE', '1'), |
| 98 | + ('_LARGEFILE64_SOURCE', '1')] |
| 99 | + |
| 100 | + exts = [ |
| 101 | + Extension( |
| 102 | + "mkl_random.mklrand", |
| 103 | + [ |
| 104 | + os.path.join("mkl_random", "mklrand.pyx"), |
| 105 | + os.path.join("mkl_random", "src", "mkl_distributions.cpp"), |
| 106 | + os.path.join("mkl_random", "src", "randomkit.c"), |
| 107 | + ], |
| 108 | + depends = [ |
| 109 | + os.path.join("mkl_random", "src", "mkl_distributions.hpp"), |
| 110 | + os.path.join("mkl_random", "src", "randomkit.h"), |
| 111 | + os.path.join("mkl_random", "src", "numpy.pxd") |
| 112 | + ], |
| 113 | + include_dirs = [os.path.join("mkl_random", "src"), np.get_include()] + mkl_include_dirs, |
| 114 | + libraries = libs, |
| 115 | + library_dirs = lib_dirs, |
| 116 | + extra_compile_args = eca + [ |
| 117 | + # "-ggdb", "-O0", "-Wall", "-Wextra", |
| 118 | + ], |
| 119 | + define_macros=defs + [("NDEBUG",None),], # [("DEBUG", None),] |
| 120 | + language="c++" |
| 121 | + ) |
| 122 | + ] |
| 123 | + |
| 124 | + return exts |
| 125 | + |
| 126 | + |
| 127 | +setup( |
| 128 | + name = "mkl_random", |
| 129 | + maintainer = "Intel Corp.", |
| 130 | + maintainer_email = "scripting@intel.com", |
| 131 | + description = "NumPy-based Python interface to Intel (R) MKL Random Number Generation functionality", |
| 132 | + version = version, |
| 133 | + include_package_data=True, |
| 134 | + ext_modules=extensions(), |
| 135 | + cmdclass={'build_ext': Cython.Build.build_ext}, |
| 136 | + zip_safe=False, |
| 137 | + long_description = long_description, |
| 138 | + long_description_content_type="text/markdown", |
| 139 | + url = "http://github.com/IntelPython/mkl_random", |
| 140 | + author = "Intel Corporation", |
| 141 | + download_url = "http://github.com/IntelPython/mkl_random", |
| 142 | + license = "BSD", |
| 143 | + classifiers = [_f for _f in CLASSIFIERS.split('\n') if _f], |
| 144 | + platforms = ["Windows", "Linux", "Mac OS-X"], |
| 145 | + test_suite = "pytest", |
| 146 | + python_requires = '>=3.7', |
| 147 | + setup_requires=["Cython",], |
| 148 | + install_requires = ["numpy >=1.16"], |
| 149 | + keywords=["MKL", "VSL", "true randomness", "pseudorandomness", |
| 150 | + "Philox", "MT-19937", "SFMT-19937", "MT-2203", "ARS-5", |
| 151 | + "R-250", "MCG-31",], |
| 152 | +) |
0 commit comments