{ "info": { "author": "J.Goutin", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development :: Build Tools" ], "description": "[![Build Status](https://travis-ci.org/JGoutin/compilertools.svg?branch=master)](https://travis-ci.org/JGoutin/compilertools)\n[![Build status](https://ci.appveyor.com/api/projects/status/khsf4rjrjo78xcmm?svg=true)](https://ci.appveyor.com/project/JGoutin/compilertools)\n[![codecov](https://codecov.io/gh/JGoutin/compilertools/branch/master/graph/badge.svg)](https://codecov.io/gh/JGoutin/compilertools)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/f56d272d071b4674abe1547c33d18aeb)](https://www.codacy.com/app/ginnungagap/compilertools?utm_source=github.com&utm_medium=referral&utm_content=JGoutin/compilertools&utm_campaign=Badge_Grade)\n[![Documentation Status](https://readthedocs.org/projects/compilertools/badge/?version=latest)](http://compilertools.readthedocs.io/en/latest/?badge=latest)\n[![PyPI](https://img.shields.io/pypi/v/compilertools.svg)](https://pypi.org/project/compilertools)\n\nPython uses the Wheel format for simplified package distribution. However,\nit does not allow to distribute packages optimized for each machine but highly compatible ones.\nThe user must compile the package himself to take advantage of optimization like SIMD (SSE, AVX, FMA, ...).\n\nCompilertools allows to work around this problem and distribute optimized packages for several machines while keeping\nthe simplicity of Wheel. It works in the background and has been created with the aim of being easy to use.\nPackage maintainer requires only to import it at runtime and buildtime. Everything is transparent for the end user.\n\nIts secondary objective is also to help the package maintainer to optimally compile its package with multiple compilers\nby configuring options for him.\n\nDocumentation:\n--------------\n[**Compilertools Documentation**](http://compilertools.readthedocs.io)\n\n\nFeatures:\n---------\n\n* Compiles and distributes optimized binaries for a variety of machines in a single Wheel package.\n* Helps to build optimized package from sources for current machine.\n* Handles automatically compiling and linking options for a variety of compilers.\n* Autodetects openMP, OpenACC or Intel Cilk Plus in source code and automatically sets related compiling and linking\n options.\n* Support extra compiling options like fast math.\n* Provides build time settings for package maintainer to tweak compilation.\n* Provides API for getting information on current machine CPU.\n* Lightweight pure Python module with no dependency that use lazy import and evaluation as possible.\n\nHow that works ?\n================\n\nCompilertools dynamically sets link options and compile options depending on the currently used compiler and targeted\narchitecture.\n\nThis avoid to have to specify compiler specific options in sources or setup files.\n\nMulti-architecture optimized compilation for distribution\n---------------------------------------------------------\n\n**At build time:**\n\nCompilertools helps to make optimized \".so\"/\".pyd\" for each architecture and name files with tagged suffixes :\n\nExample:\n\n* *module.avx2.cp36-win_amd64.pyd* -> Optimized variant for AVX2 SIMD Extensions\n* *module.avx.cp36-win_amd64.pyd* -> Optimized variant for AVX SIMD Extensions\n* *module.cp36-win_amd64.pyd* -> Classic highly-compatible variant\n\nThese optimized files are packaged in the same wheel when distributing (Don't need to create a wheel by variant).\n\nRequirement:\n\n* Import ``compilertools.build`` before build module normally.\n* Options can easily be changed directly in ``compilertools.build.CONFIG_BUILD`` dictionary.\n\n**At runtime:**\n\nCompilertools detects and chooses the best optimized \".so\"/\".pyd\" to run based on CPU information.\n\nIf the best file not exist, search for the second best file, etc... If nothing found, use the highly-compatible one.\n\nRequirement:\n\n* Import ``compilertools`` one time before import optimized modules (This add a new import hook to Python).\n\nCurrent-architecture optimized compilation\n------------------------------------------\n\nCompilertools finds the best compiler options for the current architecture and current compiler and build only one\noptimized \".so\"/\".pyd\" with classic name.\n\nRequirement:\n\n* Import ``compilertools.build`` before build module normally.\n\nAnd also...\n-----------\n\nopenMP, OpenACC, Intel Cilk Plus API auto-detection:\n Compilertools searches in source files for API ``pragma`` preprocessor calls and enables compiler and linker options\n if needed.\n\nExtra generic compilers options:\n Compilertools can enable or disable generic extra compiler options like fast math.\n\nCompatibility\n=============\n\nSupported Compilers\n-------------------\n\nCompilertools implements support for following compilers:\n\n* GCC\n* LLVM Clang\n* Microsoft Visual C++\n\nSupported Processors\n--------------------\n\nCompilertools implements support for following CPU:\n\n* x86 (32 and 64 bits)\n\nBuild tools compatibility\n-------------------------\n\nCompilertools have been tested with following build tools:\n\n* Distutils\n* Setuptools\n* Numpy.distutils\n* Cython\n\nPython compatibility\n--------------------\n\n* Python 3.4 minimum.\n\n\n", "description_content_type": "text/markdown; charset=UTF-8", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/JGoutin/compilertools", "keywords": "compiler distutils setuptools build_ext wheels setup build", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "compilertools", "package_url": "https://pypi.org/project/compilertools/", "platform": "", "project_url": "https://pypi.org/project/compilertools/", "project_urls": { "Documentation": "http://compilertools.readthedocs.io/", "Download": "https://pypi.org/project/compilertools", "Homepage": "https://github.com/JGoutin/compilertools" }, "release_url": "https://pypi.org/project/compilertools/1.1.0/", "requires_dist": null, "requires_python": ">=3.4", "summary": "A library for helping optimizing Python extensions compilation.", "version": "1.1.0" }, "last_serial": 4686875, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "b83ea348423c79cf8ecc2e56ba96f97a", "sha256": "2887edc44dc53ed86fa9627a1b42367dc4d67d9ad638cc49b570ceee01428945" }, "downloads": -1, "filename": "compilertools-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b83ea348423c79cf8ecc2e56ba96f97a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 24108, "upload_time": "2018-05-27T14:06:22", "url": "https://files.pythonhosted.org/packages/b0/1b/47a6e6a2ebd1aae54fdb8dfa3b6f7bc094fd9ef2a92f6bde0bb4646e92e0/compilertools-1.0.0-py3-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "cefcbeb86d73339966b90d5864219eac", "sha256": "9fb208a94febaec4a0e6e69661d25f82813e895e94fcea8a732984000d3e3e6f" }, "downloads": -1, "filename": "compilertools-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cefcbeb86d73339966b90d5864219eac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 26948, "upload_time": "2019-01-11T20:33:45", "url": "https://files.pythonhosted.org/packages/97/50/3cd21ed3b073e7e4a9c44122ceb2e590b65a840111e9e702d3e84a07c5a7/compilertools-1.1.0-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cefcbeb86d73339966b90d5864219eac", "sha256": "9fb208a94febaec4a0e6e69661d25f82813e895e94fcea8a732984000d3e3e6f" }, "downloads": -1, "filename": "compilertools-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cefcbeb86d73339966b90d5864219eac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 26948, "upload_time": "2019-01-11T20:33:45", "url": "https://files.pythonhosted.org/packages/97/50/3cd21ed3b073e7e4a9c44122ceb2e590b65a840111e9e702d3e84a07c5a7/compilertools-1.1.0-py3-none-any.whl" } ] }