def get_config(schema=None, warn_about_no_config=True): if schema is None: from setup import get_config_schema schema = get_config_schema() if (not schema.have_config() and not schema.have_global_config() and warn_about_no_config): print("*************************************************************") print("*** I have detected that you have not run configure.py.") print("*************************************************************") print("*** Additionally, no global config files were found.") print("*** I will go ahead with the default configuration.") print("*** In all likelihood, this will not work out.") print("*** ") print("*** See README_SETUP.txt for more information.") print("*** ") print("*** If the build does fail, just re-run configure.py with the") print("*** correct arguments, and then retry. Good luck!") print("*************************************************************") print("*** HIT Ctrl-C NOW IF THIS IS NOT WHAT YOU WANT") print("*************************************************************") count_down_delay(delay=10) config = expand_options(schema.read_config()) schema.update_config_from_and_modify_command_line(config, sys.argv) return config
def _run_git_command(cmd): git_error = None from subprocess import Popen, PIPE stdout = None try: popen = Popen(["git"] + cmd, stdout=PIPE) stdout, stderr = popen.communicate() if popen.returncode != 0: git_error = "git returned error code %d: %s" % (popen.returncode, stderr) except OSError: git_error = "(OS error, likely git not found)" if git_error is not None: print(DASH_SEPARATOR) print("Trouble invoking git") print(DASH_SEPARATOR) print("The package directory appears to be a git repository, but I could") print("not invoke git to check whether my submodules are up to date.") print("") print("The error was:") print(git_error) print("Hit Ctrl-C now if you'd like to think about the situation.") print(DASH_SEPARATOR) count_down_delay(delay=0) if stdout: return stdout.decode("utf-8"), git_error else: return '', "(subprocess call to git did not succeed)"
def check_pybind11(): try: import pybind11 # noqa except ImportError: print(DASH_SEPARATOR) print("Pybind11 is not installed.") print(DASH_SEPARATOR) print("Very likely, the build process after this message will fail.") print("") print("Simply press Ctrl+C and type") print("python -m pip install pybind11") print("to fix this. If you don't, the build will continue ") print("in a few seconds.") print("") print("[1] https://pybind11.readthedocs.io/en/stable/") print(DASH_SEPARATOR) from aksetup_helper import count_down_delay count_down_delay(delay=10)
def main(): from setuptools import find_packages from aksetup_helper import (hack_distutils, get_config, setup, check_pybind11, check_git_submodules, ExtensionUsingNumpy, get_pybind_include, PybindBuildExtCommand) check_pybind11() check_git_submodules() hack_distutils() conf = get_config(get_config_schema(), warn_about_no_config=False) extra_defines = {} extra_defines["PYGPU_PACKAGE"] = "pyopencl" extra_defines["PYGPU_PYOPENCL"] = "1" if conf["CL_TRACE"]: extra_defines["PYOPENCL_TRACE"] = 1 if conf["CL_ENABLE_GL"]: extra_defines["HAVE_GL"] = 1 if conf["CL_USE_SHIPPED_EXT"]: extra_defines["PYOPENCL_USE_SHIPPED_EXT"] = 1 if conf["CL_PRETEND_VERSION"]: try: major, minor = [int(x) for x in conf["CL_PRETEND_VERSION"].split(".")] extra_defines["PYOPENCL_PRETEND_CL_VERSION"] = \ 0x1000*major + 0x10 * minor except Exception: print("CL_PRETEND_VERSION must be of the form M.N, " "with two integers M and N") raise conf["EXTRA_DEFINES"] = extra_defines INCLUDE_DIRS = conf["CL_INC_DIR"] + ["pybind11/include"] # noqa: N806 ver_dic = {} version_file = open("pyopencl/version.py") try: version_file_contents = version_file.read() finally: version_file.close() exec(compile(version_file_contents, "pyopencl/version.py", 'exec'), ver_dic) try: import mako # noqa except ImportError: print(SEPARATOR) print("Mako is not installed.") print(SEPARATOR) print("That is not a problem, as most of PyOpenCL will be just fine ") print("without it. Some higher-level parts of pyopencl (such as ") print("pyopencl.reduction) will not function without the templating engine ") print("Mako [1] being installed. If you would like this functionality to ") print("work, you might want to install Mako after you finish ") print("installing PyOpenCL.") print("") print("Simply type") print("python -m pip install mako") print("either now or after the installation completes to fix this.") print("") print("[1] http://www.makotemplates.org/") print(SEPARATOR) print("Hit Ctrl-C now if you'd like to think about the situation.") print(SEPARATOR) from aksetup_helper import count_down_delay count_down_delay(delay=5) if not exists("pyopencl/compyte/dtypes.py"): print(75 * "-") print("You are missing important files from the pyopencl distribution.") print(75 * "-") print("You may have downloaded a zip or tar file from Github.") print("Those do not work, and I am unable to prevent Github from showing") print("them. Delete that file, and get an actual release file from the") print("Python package index:") print() print("https://pypi.python.org/pypi/pyopencl") sys.exit(1) setup(name="pyopencl", # metadata version=ver_dic["VERSION_TEXT"], description="Python wrapper for OpenCL", long_description=open("README.rst", "rt").read(), author="Andreas Kloeckner", author_email="*****@*****.**", license="MIT", url="http://mathema.tician.de/software/pyopencl", classifiers=[ 'Environment :: Console', 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: Other Audience', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Natural Language :: English', 'Programming Language :: C++', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Topic :: Scientific/Engineering', 'Topic :: Scientific/Engineering :: Mathematics', 'Topic :: Scientific/Engineering :: Physics', ], # build info packages=find_packages(), ext_modules=[ ExtensionUsingNumpy("pyopencl._cl", [ "src/wrap_constants.cpp", "src/wrap_cl.cpp", "src/wrap_cl_part_1.cpp", "src/wrap_cl_part_2.cpp", "src/wrap_mempool.cpp", "src/bitlog.cpp", ], include_dirs=INCLUDE_DIRS + [ get_pybind_include(), get_pybind_include(user=True) ], library_dirs=conf["CL_LIB_DIR"], libraries=conf["CL_LIBNAME"], define_macros=list(conf["EXTRA_DEFINES"].items()), extra_compile_args=conf["CXXFLAGS"], extra_link_args=conf["LDFLAGS"], language='c++', ), ], setup_requires=[ "pybind11", "numpy", ], install_requires=[ "numpy", "pytools>=2017.6", "decorator>=3.2.0", "appdirs>=1.4.0", "six>=1.9.0", # "Mako>=0.3.6", ], extras_require={ 'pocl': ["pocl_binary_distribution>=1.2"], 'oclgrind': ["oclgrind_binary_distribution>=18.3"], }, include_package_data=True, package_data={ "pyopencl": [ "cl/*.cl", "cl/*.h", "cl/pyopencl-random123/*.cl", "cl/pyopencl-random123/*.h", ] }, cmdclass={'build_ext': PybindBuildExtCommand}, zip_safe=False)
def check_git_submodules(): from os.path import isdir if not isdir(".git"): # not a git repository return if isdir("../.repo"): # assume repo is in charge and bail return stdout, git_error = _run_git_command(["submodule", "status"]) if git_error is not None: return pkg_warnings = [] lines = stdout.split("\n") for l in lines: if not l.strip(): continue status = l[0] sha, package = l[1:].split(" ", 1) if package == "bpl-subset" or ( package.startswith("boost") and package.endswith("subset")): # treated separately continue if status == "+": pkg_warnings.append("version of '%s' is not what this " "outer package wants" % package) elif status == "-": pkg_warnings.append("subpackage '%s' is not initialized" % package) elif status == " ": pass else: pkg_warnings.append("subpackage '%s' has unrecognized status '%s'" % package) if pkg_warnings: print(DASH_SEPARATOR) print("git submodules are not up-to-date or in odd state") print(DASH_SEPARATOR) print("If this makes no sense, you probably want to say") print("") print(" $ git submodule update --init") print("") print("to fetch what you are presently missing and " "move on with your life.") print("If you got this from a distributed package on the " "net, that package is") print("broken and should be fixed. Please inform whoever " "gave you this package.") print("") print("These issues were found:") for w in pkg_warnings: print(" %s" % w) print("") print("I will try to initialize the submodules for you " "after a short wait.") print(DASH_SEPARATOR) print("Hit Ctrl-C now if you'd like to think about the situation.") print(DASH_SEPARATOR) from os.path import exists if not exists(".dirty-git-ok"): count_down_delay(delay=10) stdout, git_error = _run_git_command( ["submodule", "update", "--init"]) if git_error is None: print(DASH_SEPARATOR) print("git submodules initialized successfully") print(DASH_SEPARATOR)
def main(): from setuptools import find_packages from aksetup_helper import (hack_distutils, get_config, setup, check_pybind11, check_git_submodules, NumpyExtension) check_pybind11() check_git_submodules() hack_distutils() conf = get_config(get_config_schema(), warn_about_no_config=False) extra_defines = {} extra_defines["PYGPU_PACKAGE"] = "pyopencl" extra_defines["PYGPU_PYOPENCL"] = "1" if conf["CL_TRACE"]: extra_defines["PYOPENCL_TRACE"] = 1 if conf["CL_ENABLE_GL"]: extra_defines["HAVE_GL"] = 1 if conf["CL_USE_SHIPPED_EXT"]: extra_defines["PYOPENCL_USE_SHIPPED_EXT"] = 1 if conf["CL_PRETEND_VERSION"]: try: major, minor = [int(x) for x in conf["CL_PRETEND_VERSION"].split(".")] extra_defines["PYOPENCL_PRETEND_CL_VERSION"] = \ 0x1000*major + 0x10 * minor except Exception: print("CL_PRETEND_VERSION must be of the form M.N, " "with two integers M and N") raise conf["EXTRA_DEFINES"] = extra_defines INCLUDE_DIRS = conf["CL_INC_DIR"] + ["pybind11/include"] # noqa: N806 ver_dic = {} version_file = open("pyopencl/version.py") try: version_file_contents = version_file.read() finally: version_file.close() exec(compile(version_file_contents, "pyopencl/version.py", 'exec'), ver_dic) try: import mako # noqa except ImportError: print(SEPARATOR) print("Mako is not installed.") print(SEPARATOR) print("That is not a problem, as most of PyOpenCL will be just fine ") print("without it. Some higher-level parts of pyopencl (such as ") print("pyopencl.reduction) will not function without the templating engine ") print("Mako [1] being installed. If you would like this functionality to ") print("work, you might want to install Mako after you finish ") print("installing PyOpenCL.") print("") print("Simply type") print("python -m pip install mako") print("either now or after the installation completes to fix this.") print("") print("[1] http://www.makotemplates.org/") print(SEPARATOR) print("Hit Ctrl-C now if you'd like to think about the situation.") print(SEPARATOR) from aksetup_helper import count_down_delay count_down_delay(delay=5) if not exists("pyopencl/compyte/dtypes.py"): print(75 * "-") print("You are missing important files from the pyopencl distribution.") print(75 * "-") print("You may have downloaded a zip or tar file from Github.") print("Those do not work, and I am unable to prevent Github from showing") print("them. Delete that file, and get an actual release file from the") print("Python package index:") print() print("https://pypi.python.org/pypi/pyopencl") sys.exit(1) setup(name="pyopencl", # metadata version=ver_dic["VERSION_TEXT"], description="Python wrapper for OpenCL", long_description=open("README.rst", "rt").read(), author="Andreas Kloeckner", author_email="*****@*****.**", license="MIT", url="http://mathema.tician.de/software/pyopencl", classifiers=[ 'Environment :: Console', 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: Other Audience', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Natural Language :: English', 'Programming Language :: C++', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Topic :: Scientific/Engineering', 'Topic :: Scientific/Engineering :: Mathematics', 'Topic :: Scientific/Engineering :: Physics', ], # build info packages=find_packages(), ext_modules=[ NumpyExtension("pyopencl._cl", [ "src/wrap_constants.cpp", "src/wrap_cl.cpp", "src/wrap_cl_part_1.cpp", "src/wrap_cl_part_2.cpp", "src/wrap_mempool.cpp", "src/bitlog.cpp", ], include_dirs=INCLUDE_DIRS + [ get_pybind_include(), get_pybind_include(user=True) ], library_dirs=conf["CL_LIB_DIR"], libraries=conf["CL_LIBNAME"], define_macros=list(conf["EXTRA_DEFINES"].items()), extra_compile_args=conf["CXXFLAGS"], extra_link_args=conf["LDFLAGS"], language='c++', ), ], setup_requires=[ "pybind11", "numpy", ], install_requires=[ "numpy", "pytools>=2017.6", "decorator>=3.2.0", "appdirs>=1.4.0", "six>=1.9.0", # "Mako>=0.3.6", ], include_package_data=True, package_data={ "pyopencl": [ "cl/*.cl", "cl/*.h", "cl/pyopencl-random123/*.cl", "cl/pyopencl-random123/*.h", ] }, cmdclass={'build_ext': BuildExt}, zip_safe=False)
def set_up_shipped_boost_if_requested(project_name, conf, source_path=None, boost_chrono=False): """Set up the package to use a shipped version of Boost. Return a tuple of a list of extra C files to build and extra defines to be used. :arg boost_chrono: one of *False* and ``"header_only"`` (only relevant in shipped mode) """ from os.path import exists if source_path is None: source_path = "bpl-subset/bpl_subset" if conf["USE_SHIPPED_BOOST"]: if not exists("%s/boost/version.hpp" % source_path): print(DASH_SEPARATOR) print("The shipped Boost library was not found, but " "USE_SHIPPED_BOOST is True.") print("(The files should be under %s/.)" % source_path) print(DASH_SEPARATOR) print("If you got this package from git, you probably want to do") print("") print(" $ git submodule update --init") print("") print("to fetch what you are presently missing. If you got this from") print("a distributed package on the net, that package is broken and") print("should be fixed. For now, I will turn off 'USE_SHIPPED_BOOST'") print("to try and see if the build succeeds that way, but in the long") print("run you might want to either get the missing bits or turn") print("'USE_SHIPPED_BOOST' off.") print(DASH_SEPARATOR) conf["USE_SHIPPED_BOOST"] = False count_down_delay(delay=10) if conf["USE_SHIPPED_BOOST"]: conf["BOOST_INC_DIR"] = [source_path] conf["BOOST_LIB_DIR"] = [] conf["BOOST_PYTHON_LIBNAME"] = [] conf["BOOST_THREAD_LIBNAME"] = [] from glob import glob source_files = (glob(source_path + "/libs/*/*/*/*.cpp") + glob(source_path + "/libs/*/*/*.cpp") + glob(source_path + "/libs/*/*.cpp")) # make sure next line succeeds even on Windows source_files = [f.replace("\\", "/") for f in source_files] source_files = [f for f in source_files if not f.startswith(source_path + "/libs/thread/src")] if sys.platform == "win32": source_files += glob( source_path + "/libs/thread/src/win32/*.cpp") source_files += glob( source_path + "/libs/thread/src/tss_null.cpp") else: source_files += glob( source_path + "/libs/thread/src/pthread/*.cpp") source_files = [f for f in source_files if not f.endswith("once_atomic.cpp")] from os.path import isdir main_boost_inc = source_path + "/boost" bpl_project_boost_inc = source_path + "/%sboost" % project_name if not isdir(bpl_project_boost_inc): try: from os import symlink symlink("boost", bpl_project_boost_inc) except (ImportError, OSError): from shutil import copytree print("Copying files, hang on... (do not interrupt)") copytree(main_boost_inc, bpl_project_boost_inc) defines = { # do not pick up libboost link dependency on windows "BOOST_ALL_NO_LIB": 1, "BOOST_THREAD_BUILD_DLL": 1, "BOOST_MULTI_INDEX_DISABLE_SERIALIZATION": 1, "BOOST_PYTHON_SOURCE": 1, "boost": '%sboost' % project_name, } if boost_chrono is False: defines["BOOST_THREAD_DONT_USE_CHRONO"] = 1 elif boost_chrono == "header_only": defines["BOOST_CHRONO_HEADER_ONLY"] = 1 else: raise ValueError("invalid value of 'boost_chrono'") return (source_files, defines) else: return [], {}
def main(): from setuptools import find_packages from aksetup_helper import (hack_distutils, get_config, setup, check_git_submodules) check_git_submodules() hack_distutils() conf = get_config(get_config_schema(), warn_about_no_config=False) extra_defines = {} extra_defines["PYGPU_PACKAGE"] = "pyopencl" extra_defines["PYGPU_PYOPENCL"] = "1" if conf["CL_TRACE"]: extra_defines["PYOPENCL_TRACE"] = 1 if conf["CL_ENABLE_GL"]: extra_defines["HAVE_GL"] = 1 if conf["CL_ENABLE_DEVICE_FISSION"]: extra_defines["PYOPENCL_USE_DEVICE_FISSION"] = 1 if conf["CL_PRETEND_VERSION"]: try: major, minor = [int(x) for x in conf["CL_PRETEND_VERSION"].split(".")] extra_defines["PYOPENCL_PRETEND_CL_VERSION"] = \ 0x1000*major + 0x10 * minor except: print("CL_PRETEND_VERSION must be of the form M.N, " "with two integers M and N") raise conf["EXTRA_DEFINES"] = extra_defines ver_dic = {} version_file = open("pyopencl/version.py") try: version_file_contents = version_file.read() finally: version_file.close() exec(compile(version_file_contents, "pyopencl/version.py", 'exec'), ver_dic) separator = "-"*75 try: import mako # noqa except ImportError: print(separator) print("Mako is not installed.") print(separator) print("That is not a problem, as most of PyOpenCL will be just fine ") print("without it.Some higher-level parts of pyopencl (such as ") print("pyopencl.reduction) will not function without the templating engine ") print("Mako [1] being installed. If you would like this functionality to ") print("work, you might want to install Mako after you finish ") print("installing PyOpenCL.") print("") print("[1] http://www.makotemplates.org/") print(separator) print("Hit Ctrl-C now if you'd like to think about the situation.") print(separator) from aksetup_helper import count_down_delay count_down_delay(delay=5) # {{{ write cffi build script with open("cffi_build.py.in", "rt") as f: build_script_template = f.read() format_args = {} for k, v in conf.items(): format_args[k] = repr(v) build_script = build_script_template.format(**format_args) with open("cffi_build.py", "wt") as f: f.write(build_script) # }}} setup(name="pyopencl", # metadata version=ver_dic["VERSION_TEXT"], description="Python wrapper for OpenCL", long_description=open("README.rst", "rt").read(), author="Andreas Kloeckner", author_email="*****@*****.**", license="MIT", url="http://mathema.tician.de/software/pyopencl", classifiers=[ 'Environment :: Console', 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: Other Audience', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Natural Language :: English', 'Programming Language :: C++', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Topic :: Scientific/Engineering', 'Topic :: Scientific/Engineering :: Mathematics', 'Topic :: Scientific/Engineering :: Physics', ], # build info packages=find_packages(), setup_requires=[ "numpy", "cffi>=1.1.0", ], install_requires=[ "numpy", "pytools>=2015.1.2", "pytest>=2", "decorator>=3.2.0", "cffi>=1.1.0", "appdirs>=1.4.0", "six>=1.9.0", # "Mako>=0.3.6", ], cffi_modules=["cffi_build.py:ffi"], include_package_data=True, package_data={ "pyopencl": ["cl/*.cl", "cl/*.h"] }, zip_safe=False)
def main(): from setuptools import find_packages from aksetup_helper import (hack_distutils, get_config, setup, check_git_submodules) check_git_submodules() hack_distutils() conf = get_config(get_config_schema(), warn_about_no_config=False) extra_defines = {} extra_defines["PYGPU_PACKAGE"] = "pyopencl" extra_defines["PYGPU_PYOPENCL"] = "1" if conf["CL_TRACE"]: extra_defines["PYOPENCL_TRACE"] = 1 if conf["CL_ENABLE_GL"]: extra_defines["HAVE_GL"] = 1 if conf["CL_USE_SHIPPED_EXT"]: extra_defines["PYOPENCL_USE_SHIPPED_EXT"] = 1 if conf["CL_PRETEND_VERSION"]: try: major, minor = [int(x) for x in conf["CL_PRETEND_VERSION"].split(".")] extra_defines["PYOPENCL_PRETEND_CL_VERSION"] = \ 0x1000*major + 0x10 * minor except: print("CL_PRETEND_VERSION must be of the form M.N, " "with two integers M and N") raise conf["EXTRA_DEFINES"] = extra_defines ver_dic = {} version_file = open("pyopencl/version.py") try: version_file_contents = version_file.read() finally: version_file.close() exec(compile(version_file_contents, "pyopencl/version.py", 'exec'), ver_dic) separator = "-"*75 try: import mako # noqa except ImportError: print(separator) print("Mako is not installed.") print(separator) print("That is not a problem, as most of PyOpenCL will be just fine ") print("without it. Some higher-level parts of pyopencl (such as ") print("pyopencl.reduction) will not function without the templating engine ") print("Mako [1] being installed. If you would like this functionality to ") print("work, you might want to install Mako after you finish ") print("installing PyOpenCL.") print("") print("Simply type") print("python -m pip install mako") print("either now or after the installation completes to fix this.") print("") print("[1] http://www.makotemplates.org/") print(separator) print("Hit Ctrl-C now if you'd like to think about the situation.") print(separator) from aksetup_helper import count_down_delay count_down_delay(delay=5) # {{{ write cffi build script with open("cffi_build.py.in", "rt") as f: build_script_template = f.read() format_args = {} for k, v in conf.items(): format_args[k] = repr(v) build_script = build_script_template.format(**format_args) with open("cffi_build.py", "wt") as f: f.write(build_script) # }}} setup(name="pyopencl", # metadata version=ver_dic["VERSION_TEXT"], description="Python wrapper for OpenCL", long_description=open("README.rst", "rt").read(), author="Andreas Kloeckner", author_email="*****@*****.**", license="MIT", url="http://mathema.tician.de/software/pyopencl", classifiers=[ 'Environment :: Console', 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: Other Audience', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Natural Language :: English', 'Programming Language :: C++', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Topic :: Scientific/Engineering', 'Topic :: Scientific/Engineering :: Mathematics', 'Topic :: Scientific/Engineering :: Physics', ], # build info packages=find_packages(), setup_requires=[ "numpy", "cffi>=1.1.0", ], install_requires=[ "numpy", "pytools>=2017.2", "pytest>=2", "decorator>=3.2.0", "cffi>=1.1.0", "appdirs>=1.4.0", "six>=1.9.0", # "Mako>=0.3.6", ], cffi_modules=["cffi_build.py:ffi"], include_package_data=True, package_data={ "pyopencl": [ "cl/*.cl", "cl/*.h", "cl/pyopencl-random123/*.cl", "cl/pyopencl-random123/*.h", ] }, zip_safe=False)
def main(): import glob from aksetup_helper import (hack_distutils, get_config, setup, NumpyExtension, set_up_shipped_boost_if_requested, check_git_submodules) check_git_submodules() hack_distutils() conf = get_config(get_config_schema(), warn_about_no_config=False) EXTRA_OBJECTS, EXTRA_DEFINES = set_up_shipped_boost_if_requested( "pyopencl", conf) LIBRARY_DIRS = conf["BOOST_LIB_DIR"] LIBRARIES = conf["BOOST_PYTHON_LIBNAME"] EXTRA_INCLUDE_DIRS = [] EXTRA_DEFINES["PYGPU_PACKAGE"] = "pyopencl" EXTRA_DEFINES["PYGPU_PYOPENCL"] = "1" if conf["CL_TRACE"]: EXTRA_DEFINES["PYOPENCL_TRACE"] = 1 INCLUDE_DIRS = conf["BOOST_INC_DIR"] + conf["CL_INC_DIR"] if conf["CL_ENABLE_GL"]: EXTRA_DEFINES["HAVE_GL"] = 1 if conf["CL_ENABLE_DEVICE_FISSION"]: EXTRA_DEFINES["PYOPENCL_USE_DEVICE_FISSION"] = 1 if conf["CL_PRETEND_VERSION"]: try: major, minor = [ int(x) for x in conf["CL_PRETEND_VERSION"].split(".") ] EXTRA_DEFINES[ "PYOPENCL_PRETEND_CL_VERSION"] = 0x1000 * major + 0x10 * minor except: print( "CL_PRETEND_VERSION must be of the form M.N, with two integers M and N" ) raise ver_dic = {} version_file = open("pyopencl/version.py") try: version_file_contents = version_file.read() finally: version_file.close() exec(compile(version_file_contents, "pyopencl/version.py", 'exec'), ver_dic) try: from distutils.command.build_py import build_py_2to3 as build_py except ImportError: # 2.x from distutils.command.build_py import build_py try: import mako except ImportError: print( "-------------------------------------------------------------------------" ) print("Mako is not installed.") print( "-------------------------------------------------------------------------" ) print( "That is not a problem, as most of PyOpenCL will be just fine without it." ) print( "Some higher-level parts of pyopencl (such as pyopencl.reduction)") print( "will not function without the templating engine Mako [1] being installed." ) print( "If you would like this functionality to work, you might want to install" ) print("Mako after you finish installing PyOpenCL.") print("") print("[1] http://www.makotemplates.org/") print( "-------------------------------------------------------------------------" ) print("Hit Ctrl-C now if you'd like to think about the situation.") print( "-------------------------------------------------------------------------" ) from aksetup_helper import count_down_delay count_down_delay(delay=5) might_be_cuda = False for inc_dir in conf["CL_INC_DIR"]: inc_dir = inc_dir.lower() if "nv" in inc_dir or "cuda" in inc_dir: might_be_cuda = True if might_be_cuda and conf["CL_ENABLE_DEVICE_FISSION"]: print( "-------------------------------------------------------------------------" ) print( "You might be compiling against Nvidia CUDA with device fission enabled." ) print( "-------------------------------------------------------------------------" ) print( "That is not a problem on CUDA 4.0 and newer. If you are using CUDA 3.2," ) print( "your build will break, because Nvidia shipped a broken CL header in" ) print( "in your version. The fix is to set CL_ENABLE_DEVICE_FISSION to False" ) print("in your PyOpenCL configuration.") print( "-------------------------------------------------------------------------" ) print("Hit Ctrl-C now if you'd like to think about the situation.") print( "-------------------------------------------------------------------------" ) from aksetup_helper import count_down_delay count_down_delay(delay=5) import sys if sys.version_info >= (3, ): pvt_struct_source = "src/wrapper/_pvt_struct_v3.cpp" else: pvt_struct_source = "src/wrapper/_pvt_struct_v2.cpp" setup( name="pyopencl", # metadata version=ver_dic["VERSION_TEXT"], description="Python wrapper for OpenCL", long_description=""" PyOpenCL lets you access GPUs and other massively parallel compute devices from Python. It tries to offer computing goodness in the spirit of its sister project `PyCUDA <http://mathema.tician.de/software/pycuda>`_: * Object cleanup tied to lifetime of objects. This idiom, often called `RAII <http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization>`_ in C++, makes it much easier to write correct, leak- and crash-free code. * Completeness. PyOpenCL puts the full power of OpenCL's API at your disposal, if you wish. Every obscure `get_info()` query and all CL calls are accessible. * Automatic Error Checking. All CL errors are automatically translated into Python exceptions. * Speed. PyOpenCL's base layer is written in C++, so all the niceties above are virtually free. * Helpful and complete `Documentation <http://documen.tician.de/pyopencl>`_ as well as a `Wiki <http://wiki.tiker.net/PyOpenCL>`_. * Liberal license. PyOpenCL is open-source under the `MIT license <http://en.wikipedia.org/wiki/MIT_License>`_ and free for commercial, academic, and private use. * Broad support. PyOpenCL was tested and works with Apple's, AMD's, and Nvidia's CL implementations. Like PyOpenCL? (And perhaps use it for `bitcoin <http://bitcoin.org>`_ mining?) Leave a (bitcoin) tip: 1HGPQitv27CdENBcH1bstu5B3zeqXRDwtY """, author="Andreas Kloeckner", author_email="*****@*****.**", license="MIT", url="http://mathema.tician.de/software/pyopencl", classifiers=[ 'Environment :: Console', 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: Other Audience', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Natural Language :: English', 'Programming Language :: C++', 'Programming Language :: Python', 'Programming Language :: Python :: 3', 'Topic :: Scientific/Engineering', 'Topic :: Scientific/Engineering :: Mathematics', 'Topic :: Scientific/Engineering :: Physics', ], # build info packages=["pyopencl", "pyopencl.characterize", "pyopencl.compyte"], install_requires=[ "pytools>=2011.2", "pytest>=2", "decorator>=3.2.0", # "Mako>=0.3.6", ], ext_package="pyopencl", ext_modules=[ NumpyExtension( "_cl", [ "src/wrapper/wrap_cl.cpp", "src/wrapper/wrap_cl_part_1.cpp", "src/wrapper/wrap_cl_part_2.cpp", "src/wrapper/wrap_constants.cpp", "src/wrapper/wrap_mempool.cpp", "src/wrapper/bitlog.cpp", ] + EXTRA_OBJECTS, include_dirs=INCLUDE_DIRS + EXTRA_INCLUDE_DIRS, library_dirs=LIBRARY_DIRS + conf["CL_LIB_DIR"], libraries=LIBRARIES + conf["CL_LIBNAME"], define_macros=list(EXTRA_DEFINES.items()), extra_compile_args=conf["CXXFLAGS"], extra_link_args=conf["LDFLAGS"], ), NumpyExtension( "_pvt_struct", [pvt_struct_source], extra_compile_args=conf["CXXFLAGS"], extra_link_args=conf["LDFLAGS"], ), ], data_files=[("include/pyopencl", glob.glob("src/cl/*.cl") + glob.glob("src/cl/*.h"))], # 2to3 invocation cmdclass={'build_py': build_py})
def main(): import glob from aksetup_helper import (hack_distutils, get_config, setup, NumpyExtension, set_up_shipped_boost_if_requested, check_git_submodules) check_git_submodules() hack_distutils() conf = get_config(get_config_schema(), warn_about_no_config=False) EXTRA_OBJECTS, EXTRA_DEFINES = set_up_shipped_boost_if_requested("pyopencl", conf) LIBRARY_DIRS = conf["BOOST_LIB_DIR"] LIBRARIES = conf["BOOST_PYTHON_LIBNAME"] from os.path import dirname, join, normpath EXTRA_INCLUDE_DIRS = [] EXTRA_LIBRARY_DIRS = [] EXTRA_LIBRARIES = [] EXTRA_DEFINES["PYGPU_PACKAGE"] = "pyopencl" EXTRA_DEFINES["PYGPU_PYOPENCL"] = "1" if conf["CL_TRACE"]: EXTRA_DEFINES["PYOPENCL_TRACE"] = 1 INCLUDE_DIRS = conf["BOOST_INC_DIR"] + conf["CL_INC_DIR"] ext_kwargs = dict() if conf["CL_ENABLE_GL"]: EXTRA_DEFINES["HAVE_GL"] = 1 if conf["CL_ENABLE_DEVICE_FISSION"]: EXTRA_DEFINES["PYOPENCL_USE_DEVICE_FISSION"] = 1 ver_dic = {} version_file = open("pyopencl/version.py") try: version_file_contents = version_file.read() finally: version_file.close() exec(compile(version_file_contents, "pyopencl/version.py", 'exec'), ver_dic) try: from distutils.command.build_py import build_py_2to3 as build_py except ImportError: # 2.x from distutils.command.build_py import build_py try: import mako except ImportError: print("-------------------------------------------------------------------------") print("Mako is not installed.") print("-------------------------------------------------------------------------") print("That is not a problem, as most of PyOpenCL will be just fine without it.") print("Some higher-level parts of pyopencl (pyopencl.reduction, to be precise)") print("will not function without the templating engine Mako [1] being installed.") print("If you would like this functionality to work, you might want to install") print("Mako after you finish installing PyOpenCL.") print("") print("[1] http://www.makotemplates.org/") print("-------------------------------------------------------------------------") print("Hit Ctrl-C now if you'd like to think about the situation.") print("-------------------------------------------------------------------------") from aksetup_helper import count_down_delay count_down_delay(delay=5) might_be_cuda = False for inc_dir in conf["CL_INC_DIR"]: inc_dir = inc_dir.lower() if "nv" in inc_dir or "cuda" in inc_dir: might_be_cuda = True if might_be_cuda and conf["CL_ENABLE_DEVICE_FISSION"]: print("-------------------------------------------------------------------------") print("You might be compiling against Nvidia CUDA with device fission enabled.") print("-------------------------------------------------------------------------") print("That is not a problem on CUDA 4.0 and newer. If you are using CUDA 3.2,") print("your build will break, because Nvidia shipped a broken CL header in") print("in your version. The fix is to set CL_ENABLE_DEVICE_FISSION to False") print("in your PyOpenCL configuration.") print("-------------------------------------------------------------------------") print("Hit Ctrl-C now if you'd like to think about the situation.") print("-------------------------------------------------------------------------") from aksetup_helper import count_down_delay count_down_delay(delay=5) import sys if sys.version_info >= (3,): pvt_struct_source = "src/wrapper/_pvt_struct_v3.cpp" else: pvt_struct_source = "src/wrapper/_pvt_struct_v2.cpp" setup(name="pyopencl", # metadata version=ver_dic["VERSION_TEXT"], description="Python wrapper for OpenCL", long_description=""" PyOpenCL lets you access GPUs and other massively parallel compute devices from Python. It tries to offer computing goodness in the spirit of its sister project `PyCUDA <http://mathema.tician.de/software/pycuda>`_: * Object cleanup tied to lifetime of objects. This idiom, often called `RAII <http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization>`_ in C++, makes it much easier to write correct, leak- and crash-free code. * Completeness. PyOpenCL puts the full power of OpenCL's API at your disposal, if you wish. Every obscure `get_info()` query and all CL calls are accessible. * Automatic Error Checking. All CL errors are automatically translated into Python exceptions. * Speed. PyOpenCL's base layer is written in C++, so all the niceties above are virtually free. * Helpful and complete `Documentation <http://documen.tician.de/pyopencl>`_ as well as a `Wiki <http://wiki.tiker.net/PyOpenCL>`_. * Liberal license. PyOpenCL is open-source under the `MIT license <http://en.wikipedia.org/wiki/MIT_License>`_ and free for commercial, academic, and private use. * Broad support. PyOpenCL was tested and works with Apple's, AMD's, and Nvidia's CL implementations. Like PyOpenCL? (And perhaps use it for `bitcoin <http://bitcoin.org>`_ mining?) Leave a (bitcoin) tip: 1HGPQitv27CdENBcH1bstu5B3zeqXRDwtY """, author="Andreas Kloeckner", author_email="*****@*****.**", license = "MIT", url="http://mathema.tician.de/software/pyopencl", classifiers=[ 'Environment :: Console', 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: Other Audience', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Natural Language :: English', 'Programming Language :: C++', 'Programming Language :: Python', 'Programming Language :: Python :: 3', 'Topic :: Scientific/Engineering', 'Topic :: Scientific/Engineering :: Mathematics', 'Topic :: Scientific/Engineering :: Physics', ], # build info packages=["pyopencl", "pyopencl.characterize", "pyopencl.compyte"], install_requires=[ "pytools>=2011.2", "pytest>=2", "decorator>=3.2.0", # "Mako>=0.3.6", ], ext_package="pyopencl", ext_modules=[ NumpyExtension("_cl", [ "src/wrapper/wrap_cl.cpp", "src/wrapper/wrap_cl_part_1.cpp", "src/wrapper/wrap_cl_part_2.cpp", "src/wrapper/wrap_constants.cpp", "src/wrapper/wrap_mempool.cpp", "src/wrapper/bitlog.cpp", ]+EXTRA_OBJECTS, include_dirs=INCLUDE_DIRS + EXTRA_INCLUDE_DIRS, library_dirs=LIBRARY_DIRS + conf["CL_LIB_DIR"], libraries=LIBRARIES + conf["CL_LIBNAME"], define_macros=list(EXTRA_DEFINES.items()), extra_compile_args=conf["CXXFLAGS"], extra_link_args=conf["LDFLAGS"], ), NumpyExtension("_pvt_struct", [pvt_struct_source], extra_compile_args=conf["CXXFLAGS"], extra_link_args=conf["LDFLAGS"], ), ], data_files=[ ("include/pyopencl", glob.glob("src/cl/*.cl") + glob.glob("src/cl/*.h")) ], # 2to3 invocation cmdclass={'build_py': build_py})
def main(): from aksetup_helper import ( hack_distutils, get_config, setup, NumpyExtension, set_up_shipped_boost_if_requested, check_git_submodules, ) check_git_submodules() hack_distutils() conf = get_config(get_config_schema(), warn_about_no_config=False) EXTRA_OBJECTS, EXTRA_DEFINES = set_up_shipped_boost_if_requested("pyopencl", conf) LIBRARY_DIRS = conf["BOOST_LIB_DIR"] LIBRARIES = conf["BOOST_PYTHON_LIBNAME"] EXTRA_INCLUDE_DIRS = [] EXTRA_DEFINES["PYGPU_PACKAGE"] = "pyopencl" EXTRA_DEFINES["PYGPU_PYOPENCL"] = "1" if conf["CL_TRACE"]: EXTRA_DEFINES["PYOPENCL_TRACE"] = 1 INCLUDE_DIRS = conf["BOOST_INC_DIR"] + conf["CL_INC_DIR"] if conf["CL_ENABLE_GL"]: EXTRA_DEFINES["HAVE_GL"] = 1 if conf["CL_ENABLE_DEVICE_FISSION"]: EXTRA_DEFINES["PYOPENCL_USE_DEVICE_FISSION"] = 1 if conf["CL_PRETEND_VERSION"]: try: major, minor = [int(x) for x in conf["CL_PRETEND_VERSION"].split(".")] EXTRA_DEFINES["PYOPENCL_PRETEND_CL_VERSION"] = 0x1000 * major + 0x10 * minor except: print("CL_PRETEND_VERSION must be of the form M.N, " "with two integers M and N") raise ver_dic = {} version_file = open("pyopencl/version.py") try: version_file_contents = version_file.read() finally: version_file.close() exec(compile(version_file_contents, "pyopencl/version.py", "exec"), ver_dic) SEPARATOR = "-" * 75 try: from distutils.command.build_py import build_py_2to3 as build_py except ImportError: # 2.x from distutils.command.build_py import build_py try: import mako # noqa except ImportError: print(SEPARATOR) print("Mako is not installed.") print(SEPARATOR) print("That is not a problem, as most of PyOpenCL will be just fine ") print("without it.Some higher-level parts of pyopencl (such as ") print("pyopencl.reduction) will not function without the templating engine ") print("Mako [1] being installed. If you would like this functionality to ") print("work, you might want to install Mako after you finish ") print("installing PyOpenCL.") print("") print("[1] http://www.makotemplates.org/") print(SEPARATOR) print("Hit Ctrl-C now if you'd like to think about the situation.") print(SEPARATOR) from aksetup_helper import count_down_delay count_down_delay(delay=5) might_be_cuda = False for inc_dir in conf["CL_INC_DIR"]: inc_dir = inc_dir.lower() if "nv" in inc_dir or "cuda" in inc_dir: might_be_cuda = True if might_be_cuda and conf["CL_ENABLE_DEVICE_FISSION"]: print(SEPARATOR) print("You might be compiling against Nvidia CUDA with device " "fission enabled.") print(SEPARATOR) print("That is not a problem on CUDA 4.0 and newer. If you are " "using CUDA 3.2,") print("your build will break, because Nvidia shipped a broken CL header in") print("in your version. The fix is to set CL_ENABLE_DEVICE_FISSION to False") print("in your PyOpenCL configuration.") print(SEPARATOR) print("Hit Ctrl-C now if you'd like to think about the situation.") print(SEPARATOR) from aksetup_helper import count_down_delay count_down_delay(delay=5) import sys if sys.version_info >= (3,): pvt_struct_source = "src/wrapper/_pvt_struct_v3.cpp" else: pvt_struct_source = "src/wrapper/_pvt_struct_v2.cpp" setup( name="pyopencl", # metadata version=ver_dic["VERSION_TEXT"], description="Python wrapper for OpenCL", long_description=open("README.rst", "rt").read(), author="Andreas Kloeckner", author_email="*****@*****.**", license="MIT", url="http://mathema.tician.de/software/pyopencl", classifiers=[ "Environment :: Console", "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Other Audience", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: C++", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.4", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Mathematics", "Topic :: Scientific/Engineering :: Physics", ], # build info packages=["pyopencl", "pyopencl.characterize", "pyopencl.compyte"], setup_requires=["numpy"], install_requires=[ "pytools>=2014.2", "pytest>=2", "decorator>=3.2.0", # "Mako>=0.3.6", ], ext_package="pyopencl", ext_modules=[ NumpyExtension( "_cl", [ "src/wrapper/wrap_cl.cpp", "src/wrapper/wrap_cl_part_1.cpp", "src/wrapper/wrap_cl_part_2.cpp", "src/wrapper/wrap_constants.cpp", "src/wrapper/wrap_mempool.cpp", "src/wrapper/bitlog.cpp", ] + EXTRA_OBJECTS, include_dirs=INCLUDE_DIRS + EXTRA_INCLUDE_DIRS, library_dirs=LIBRARY_DIRS + conf["CL_LIB_DIR"], libraries=LIBRARIES + conf["CL_LIBNAME"], define_macros=list(EXTRA_DEFINES.items()), extra_compile_args=conf["CXXFLAGS"], extra_link_args=conf["LDFLAGS"], ), NumpyExtension( "_pvt_struct", [pvt_struct_source], extra_compile_args=conf["CXXFLAGS"], extra_link_args=conf["LDFLAGS"] ), ], include_package_data=True, package_data={"pyopencl": ["cl/*.cl", "cl/*.h"]}, # 2to3 invocation cmdclass={"build_py": build_py}, zip_safe=False, )
def main(): from aksetup_helper import (hack_distutils, get_config, setup, NumpyExtension, set_up_shipped_boost_if_requested, check_git_submodules) check_git_submodules() hack_distutils() conf = get_config(get_config_schema(), warn_about_no_config=False) EXTRA_OBJECTS, EXTRA_DEFINES = \ set_up_shipped_boost_if_requested("pyopencl", conf) LIBRARY_DIRS = conf["BOOST_LIB_DIR"] LIBRARIES = conf["BOOST_PYTHON_LIBNAME"] EXTRA_INCLUDE_DIRS = [] EXTRA_DEFINES["PYGPU_PACKAGE"] = "pyopencl" EXTRA_DEFINES["PYGPU_PYOPENCL"] = "1" if conf["CL_TRACE"]: EXTRA_DEFINES["PYOPENCL_TRACE"] = 1 INCLUDE_DIRS = conf["BOOST_INC_DIR"] + conf["CL_INC_DIR"] if conf["CL_ENABLE_GL"]: EXTRA_DEFINES["HAVE_GL"] = 1 if conf["CL_ENABLE_DEVICE_FISSION"]: EXTRA_DEFINES["PYOPENCL_USE_DEVICE_FISSION"] = 1 if conf["CL_PRETEND_VERSION"]: try: major, minor = [ int(x) for x in conf["CL_PRETEND_VERSION"].split(".") ] EXTRA_DEFINES["PYOPENCL_PRETEND_CL_VERSION"] = \ 0x1000*major + 0x10 * minor except: print("CL_PRETEND_VERSION must be of the form M.N, " "with two integers M and N") raise ver_dic = {} version_file = open("pyopencl/version.py") try: version_file_contents = version_file.read() finally: version_file.close() exec(compile(version_file_contents, "pyopencl/version.py", 'exec'), ver_dic) SEPARATOR = "-" * 75 try: from distutils.command.build_py import build_py_2to3 as build_py except ImportError: # 2.x from distutils.command.build_py import build_py try: import mako # noqa except ImportError: print(SEPARATOR) print("Mako is not installed.") print(SEPARATOR) print("That is not a problem, as most of PyOpenCL will be just fine ") print("without it.Some higher-level parts of pyopencl (such as ") print( "pyopencl.reduction) will not function without the templating engine " ) print( "Mako [1] being installed. If you would like this functionality to " ) print("work, you might want to install Mako after you finish ") print("installing PyOpenCL.") print("") print("[1] http://www.makotemplates.org/") print(SEPARATOR) print("Hit Ctrl-C now if you'd like to think about the situation.") print(SEPARATOR) from aksetup_helper import count_down_delay count_down_delay(delay=5) might_be_cuda = False for inc_dir in conf["CL_INC_DIR"]: inc_dir = inc_dir.lower() if "nv" in inc_dir or "cuda" in inc_dir: might_be_cuda = True if might_be_cuda and conf["CL_ENABLE_DEVICE_FISSION"]: print(SEPARATOR) print("You might be compiling against Nvidia CUDA with device " "fission enabled.") print(SEPARATOR) print("That is not a problem on CUDA 4.0 and newer. If you are " "using CUDA 3.2,") print( "your build will break, because Nvidia shipped a broken CL header in" ) print( "in your version. The fix is to set CL_ENABLE_DEVICE_FISSION to False" ) print("in your PyOpenCL configuration.") print(SEPARATOR) print("Hit Ctrl-C now if you'd like to think about the situation.") print(SEPARATOR) from aksetup_helper import count_down_delay count_down_delay(delay=5) import sys if sys.version_info >= (3, ): pvt_struct_source = "src/wrapper/_pvt_struct_v3.cpp" else: pvt_struct_source = "src/wrapper/_pvt_struct_v2.cpp" setup( name="pyopencl", # metadata version=ver_dic["VERSION_TEXT"], description="Python wrapper for OpenCL", long_description=open("README.rst", "rt").read(), author="Andreas Kloeckner", author_email="*****@*****.**", license="MIT", url="http://mathema.tician.de/software/pyopencl", classifiers=[ 'Environment :: Console', 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: Other Audience', 'Intended Audience :: Science/Research', 'License :: OSI Approved :: MIT License', 'Natural Language :: English', 'Programming Language :: C++', 'Programming Language :: Python', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 2.4', 'Programming Language :: Python :: 2.5', 'Programming Language :: Python :: 2.6', 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.2', 'Programming Language :: Python :: 3.3', 'Topic :: Scientific/Engineering', 'Topic :: Scientific/Engineering :: Mathematics', 'Topic :: Scientific/Engineering :: Physics', ], # build info packages=["pyopencl", "pyopencl.characterize", "pyopencl.compyte"], install_requires=[ "pytools>=2013.5.2", "pytest>=2", "decorator>=3.2.0", # "Mako>=0.3.6", ], ext_package="pyopencl", ext_modules=[ NumpyExtension( "_cl", [ "src/wrapper/wrap_cl.cpp", "src/wrapper/wrap_cl_part_1.cpp", "src/wrapper/wrap_cl_part_2.cpp", "src/wrapper/wrap_constants.cpp", "src/wrapper/wrap_mempool.cpp", "src/wrapper/bitlog.cpp", ] + EXTRA_OBJECTS, include_dirs=INCLUDE_DIRS + EXTRA_INCLUDE_DIRS, library_dirs=LIBRARY_DIRS + conf["CL_LIB_DIR"], libraries=LIBRARIES + conf["CL_LIBNAME"], define_macros=list(EXTRA_DEFINES.items()), extra_compile_args=conf["CXXFLAGS"], extra_link_args=conf["LDFLAGS"], ), NumpyExtension( "_pvt_struct", [pvt_struct_source], extra_compile_args=conf["CXXFLAGS"], extra_link_args=conf["LDFLAGS"], ), ], include_package_data=True, package_data={"pyopencl": [ "cl/*.cl", "cl/*.h", ]}, # 2to3 invocation cmdclass={'build_py': build_py}, zip_safe=False)