summaryrefslogtreecommitdiff
path: root/numpy/distutils/command/build_ext.py
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #22493 from mwtoews/maint-openSebastian Berg2023-04-281-2/+2
|\ | | | | MAINT: remove redundant open() modes and io.open() alias
| * MAINT: remove redundant open() modes and io.open() aliasMike Taves2022-10-291-2/+2
| |
* | BUG, BLD: Fix indentation bug in distutilsCharles Harris2023-04-171-1/+1
| | | | | | | | | | | | | | This fixes a bug in distutils that prevented the use of the C++ linker needed to link _multiarray_umath. Fixes #23595
* | ENH: Raise C++ standard to C++17Sayed Adel2023-04-041-0/+1
| |
* | BLD: update OpenBLAS to 0.3.21 and clean up openblas download test (#22525)Matti Picus2022-11-171-0/+7
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * BUILD: update OpenBLAS to 0.3.21 and clean up openblas download test * set LDFLAGS on windows64 like the openblaslib build does * use rtools compilers on windows when building wheels * fix typos * add rtools gfortran to PATH * use the openblas dll from the zip archive without rewrapping * typos * copy dll import library for 64-bit interfaces * revert many of the changes to azure-steps-windows.yaml, copy openblas better in wheels * fix wildcard copy * test OpenBLAS build worked with threadpoolctl * typos * install threadpoolctl where needed, use for loop to recursively copy * update macos OpenBLAS suffixes for newer gfortran hashes * use libgfortran5.dylib on macos * fix scripts * re-use gfortran install from MacPython/gfortran-install on macos * use pre-release version of delocate * fixes for wheel builds/tests * add debugging cruft for pypy+win, macos wheels * add DYLD_LIBRARY_PATH on macosx-x86_64 * use 32-bit openblas interfaces for ppc64le tests * skip large_archive test that sometimes segfaults on PyPy+windows
* Fix build_ext interaction with non numpy extensionsserge-sans-paille2022-01-281-2/+2
| | | | | | | | Numpy extensions define the extra_cxx_compile_args and extra_c_compile_args filed, but distutils extensions don't. Take that into account when populating build_extension. Should fix #20928
* BUG: distutils: fix building mixed C/Fortran extensionsRalf Gommers2022-01-241-7/+23
| | | | | | | | | | | | In SciPy we had a couple of cases where we build a Python extension with C source files but linked against static libraries built from Fortran code. Those should be using the Fortran linker, but this was broken in 1.22.0 by gh-19713 (the PR that introduced C++ in NumPy). This fixes a few issues in the `build_ext` command, and documents better what is going on there. Should close SciPy issues 8325 and 15414.
* [demo] how-to replacing numpy custom generation engine by raw C++serge-sans-paille2021-10-221-24/+33
| | | | | This is just a technical prototype to measure and discuss the impact and implication of moving to C++ for kernel code generation.
* DOC: Typos found by codespellDimitri Papadopoulos2021-09-211-1/+1
|
* BLD, BUG: Fix bdist_wheel duplicate buildingSayed Adel2021-05-051-5/+14
| | | | | | | | | The bug can occur only if the build option `build` was passed before the option `bdist_wheel`. You may still realize a duplicate printing for the compiler optimization report in the build log, which is normal due to multiple calling of command `build` by setuptools.
* BLD, BUG: Fix compiler optimization log AttributeErrorSayed Adel2021-05-041-4/+5
| | | | | The error appears when option `build` is represented before `bdist_wheel`.
* ENH, SIMD: Add support for dispatching C++ sourcesSayed Adel2021-04-221-4/+24
| | | | | Same usage as the C dispatch-able sources except files extensions should be `.dispatcher.cpp` or `.dispatch.cxx` rather than `.dispatch.c`
* BUG: don't mutate list of fake libraries while iterating over it (#18295)Nicholas McKibben2021-02-041-2/+5
| | | | | | | | | | | | | | | | | * BUG: don't mutate list of fake libraries while iterating over it * BUG: iterate over copy of list * TST: add build test for build_ext fix (#1) * TST: add build test for build_ext fix * TST: clearer test name * STY: use triple quotes instead of lists of strings * FIX: check for f77 compiler before test is run * DOC: add comment explaining that a list copy is necessary
* BUG, BLD: Generate the main dispatcher config header into the build dirSayed Adel2021-01-031-6/+16
| | | | | | | | | | The new path becomes `build/src.*/numpy/distutils/include/npy_cpu_dispatch_config.h` instead of `numpy/core/src/common/_cpu_dispatch.h`. The new path allows other projects to re-use the CPU dispatcher once we decide to expose the following headers: - `numpy/core/src/common/npy_cpu_dispatch.h` - `numpy/core/src/common/npy_cpu_features.h`
* ENH: Expose the NumPy C SIMD vectorization interface "NPYV" to PythonSayed Adel2020-10-271-2/+6
| | | | | | | | | | | | | | | | '_simd' is a new module to bring the NumPy C SIMD vectorization interface "NPYV" The module is designed to be extremely flexible so that it can accommodate any kind intrinsics, also to generate a python interface almost similar to the C interface. The main purpose of this module is to test NPYV intrinsics in python, but still can be used as an effective solution in designing SIMD kernels. Also add a new command-line argument `--simd-test` to control of targeted CPU features for the `_simd` module. Co-authored-by: Matti Picus <matti.picus@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
* MAINT: Explicit disabling `CCompilerOpt` in F2PYSayed Adel2020-10-131-31/+28
| | | | This patch also cleans up `CCompilerOpt` calls in build_ext and build_clib.
* MAINT: Delete obsolete conversion to list (gh-17052)jakobjakobson132020-08-111-1/+1
| | | see gh-17012 item 12
* ENH: [3/7] enable multi-platform SIMD compiler optimizationsSayed Adel2020-06-151-3/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Put `CCompilerOpt` in action through add two command line arguments that passed directly to `CCompilerOpt`'s parameters which explained as follows: * `--cpu-baseline` minimal set of required optimizations, default is 'min' which provides the minimum CPU features that can safely run on a wide range of users platforms. * `--cpu-dispatch` dispatched set of additional optimizations, default is 'max-xop-fma4' which enables all CPU features, except for AMD legacy features. the new arguments can be reached from `build`, `build_clib`, `build_ext`, if `build_clib` or `build_ext` are not specified by the user the arguments of `build` will be used, which also hold the default values. - Activate the new compiler dispatcher that comes with `CCompilerOpt`, through adding a hock inside `build_clib` and `build_ext` that works as a filter taking any C source files ends with `.dispatch.c` and pass it directly to `CCompilerOpt` and then take returned objects and linked to the final C lib. - Add a third command-line argument `--disable-optimization` which explicitly disable the whole new infrastructure, also It adds a new compiler definition called `NPY_DISABLE_OPTIMIZATION`. when `--disable-optimization` is enabled the dispatch-able sources that end with `.dispatch.c` will be treated as a normal C sources, also due to this disabling any C headers that generated by `CCompilerOpt` must guard it with `NPY_DISABLE_OPTIMIZATION`, otherwise, it will definitely break the build. - New auto-generated C header located at `core/include/numpy/_cpu_dispatch.h`, the new header contains all definitions and headers of CPU features that enabled according to specified configuration in `--cpu-baseline` and `--cpu-dispatch`.
* BUG: relpath fails for different drives on windows (#16308)Matti Picus2020-05-201-1/+1
| | | | | * BUG: relpath fails for different drives on windows * ENH: always use abspath
* ENH: Fix exception causes in build_ext.pykeremh2020-04-221-2/+2
|
* MAINT: cleanup unused imports; avoid redefinition of importsMike Taves2020-02-061-5/+5
| | | | | | | * Cleanup unused imports (F401) of mostly standard Python modules, or some internal but unlikely referenced modules * Where internal imports are potentially used, mark with noqa * Avoid redefinition of imports (F811)
* MAINT: Remove unnecessary 'from __future__ import ...' statementsJon Dufresne2020-01-031-2/+0
| | | | | As numpy is Python 3 only, these import statements are now unnecessary and don't alter runtime behavior.
* BUILD: add warn-error option to turn compiler warnings into errors (-Werror)mattip2019-09-201-1/+14
|
* DEV: cleanup imports and some assignments (from LGTM)mattip2019-03-171-2/+2
|
* Use set litteralsRoman Yurchak2018-11-241-2/+2
|
* MAINT: remove unused stdlib importsEmil Hessman2018-09-301-2/+0
|
* MAINT: remove exec_command from build_extTyler Reddy2018-09-101-4/+8
| | | | | | | * the single usage of exec_command in distutils build_ext module has been replaced with a standard library usage of subprocess
* BUG: skip the extra-dll directory when there are no DLLSxoviat2018-01-031-2/+2
| | | | | | | When the gfortran functionality is not used, we don't want to enable the __config__ functionality. This mistake was put in as an earlier optimization but led to failures with conda.
* BUG: distutils: use correct top-level package namexoviat2017-12-241-10/+20
| | | | | | | | Here, we align the extra-dll name to the one that auditwheel uses, and we handle the case where 1) there is more than one root package and 2) the root package name is different than the distribution name
* distutils: handle unlinkable object files in build_clib/build_ext, not gnuPauli Virtanen2017-09-021-12/+58
| | | | | | | | | | | | | | | | | | | | | | Add concept of unlinkable Fortran object files on the level of build_clib/build_ext. Make build_clib generate fake static libs when unlinkable object files are present, postponing the actual linkage to build_ext. This enables MSVC+gfortran DLL chaining to only involve those DLLs that are actually necessary for each .pyd file, rather than linking everything in to every file. Linking everything to everywhere has issues due to potential symbol clashes and the fact that library build order is unspecified. Record shared_libs on disk instead of in system_info. This is necessary for partial builds -- it is not guaranteed the compiler is actually called for all of the DLL files. Remove magic from openblas msvc detection. That this worked previously relied on the side effect that the generated openblas DLL would be added to shared_libs, and then being linked to all generated outputs.
* distutils: gnu: patch fcompilexoviat2017-09-021-49/+71
| | | | | | | | | | This allows mingw's gfortran to work with MSVC. DLLs are autogenerated using heuristics that should work with most cases. In addition, a libopenblas DLL is compiled from the static lib for use with MSVC. All generated DLLs have randomized names so that no clashes will occur.
* MAINT: Remove unnecessary importsSrinivas Reddy Thatiparthy2017-08-261-4/+0
| | | | - Now that `set` datastructure has been added the `builtin` module, we do not need to explicitly import from `sets` module
* BLD: some fixes for Intel compilers.Ralf Gommers2015-08-031-1/+1
| | | | | | | | - Fix an incorrect import - Enable C99 complex support (Qstd=c99) - Don't use MSVC complex types for Intel compilers Thanks to Intel for this patch (contact: Yolanda Chen).
* MAINT: adapt parallel build option names to python3.5Julian Taylor2015-07-161-6/+6
| | | | python3.5 uses --parallel instead of --jobs
* BLD: find Python.h when build_ext --include-dirs is setTim D. Smith2015-06-051-3/+17
| | | | | Ensure that build_ext.include_dirs is the same physical list as build_ext.distribution.include_dirs.
* ENH: support parallel compilation of extensionsJulian Taylor2014-10-281-0/+9
| | | | | | | | | | | | | | Allow extensions using numpy.distutils to compile in parallel. By passing `--jobs=n` or `-j n` to `setup.py build` the compilation of extensions is now performed in `n` parallel processes. Additionally the environment variable NPY_NUM_BUILD_JOBS is used as the default value, if its unset the default is serial compilation. The parallelization is limited to within the files of an extension, so only numpy multiarraymodule really profits but its still a nice improvement when you have 2-4 cores. Unfortunately Cython will not profit at all as it tends to build one module per file.
* MAINT: remove obsolete version checksJulian Taylor2014-10-151-6/+2
| | | | | minimum requirement is python2.6, this allows removing a couple 2.3 and 2.4 checks.
* STY: Giant comma spacing fixup.Charles Harris2013-08-181-18/+18
| | | | | | | Run the 2to3 ws_comma fixer on *.py files. Some lines are now too long and will need to be broken at some point. OTOH, some lines were already too long and need to be broken at some point. Now seems as good a time as any to do this with open PRs at a minimum.
* reduces excess cleverness from 1/2 to 1/3Adam Ginsburg2013-04-211-2/+2
|
* bugfix in build_ext: check that ext has an attribute before trying toAdam Ginsburg2013-04-181-2/+2
| | | | use it
* 2to3: Apply `print` fixer.Charles Harris2013-04-061-1/+1
| | | | | | | Add `print_function` to all `from __future__ import ...` statements and use the python3 print function syntax everywhere. Closes #3078.
* 2to3: Use absolute imports.Charles Harris2013-03-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new import `absolute_import` is added the `from __future__ import` statement and The 2to3 `import` fixer is run to make the imports compatible. There are several things that need to be dealt with to make this work. 1) Files meant to be run as scripts run in a different environment than files imported as part of a package, and so changes to those files need to be skipped. The affected script files are: * all setup.py files * numpy/core/code_generators/generate_umath.py * numpy/core/code_generators/generate_numpy_api.py * numpy/core/code_generators/generate_ufunc_api.py 2) Some imported modules are not available as they are created during the build process and consequently 2to3 is unable to handle them correctly. Files that import those modules need a bit of extra work. The affected files are: * core/__init__.py, * core/numeric.py, * core/_internal.py, * core/arrayprint.py, * core/fromnumeric.py, * numpy/__init__.py, * lib/npyio.py, * lib/function_base.py, * fft/fftpack.py, * random/__init__.py Closes #3172
* 2to3: Put `from __future__ import division in every python file.Charles Harris2013-03-011-0/+2
| | | | | | | | This should be harmless, as we already are division clean. However, placement of this import takes some care. In the future a script can be used to append new features without worry, at least until such time as it exceeds a single line. Having that ability will make it easier to deal with absolute imports and printing updates.
* DEP: Remove scons related files and code.Charles Harris2013-01-131-5/+0
| | | | | | | | | This removes files and code supporting scons builds. After this change numpy will only support builds using distutils or bento. The removal of scons has been discussed on the list several times and a decision has been made that scons support is no longer needed. This was originally discussed for numpy 1.7 and because the distutils and bento methods are still available we are skipping the usual deprecation period.
* ENH: Introduce new options extra_f77_compile_args and extra_f90_compile_args toPearu Peterson2011-08-201-0/+3
| | | | | | Configuration.add_extension. Configuration.add_library, and Extension. These options allow specifying extra compile options for compiling Fortran sources within a setup.py file.
* BUG: Revert commit that causes many tests not to run.Charles Harris2011-08-201-3/+0
| | | | | | Revert "Introduce new options extra_f77_compiler_args and extra_f90_compiler_args to Configuration.add_extension. Configuration.add_library, and Extension. These options allow specifying extra compile options for compiling Fortran sources within a setup.py file." This reverts commit 43862759384a86cb4a95e8adb4d39fa1522acb28.
* Introduce new options extra_f77_compiler_args and extra_f90_compiler_args to ↵Pearu Peterson2011-08-161-0/+3
| | | | Configuration.add_extension. Configuration.add_library, and Extension. These options allow specifying extra compile options for compiling Fortran sources within a setup.py file.
* Fix print/repr/raise python3 incompatibilities in system_info and build_ext ↵David Cournapeau2009-12-031-5/+5
| | | | command.
* BUG: retrieve build_clib in build_ext even if it has already been run.David Cournapeau2009-11-161-0/+1
|
* When built in-place, make sure build_clib is built inplace too.David Cournapeau2009-07-261-2/+14
| | | | | | | If numpy is built in-place and used by a third-party, we need to make sure installable libraries are put in the source directory, to mimic an install. Whenever build_ext is called with -i option, we call build_clib with the -i option as well.