diff options
author | Sayed Adel <seiko@imavr.com> | 2021-11-12 07:54:07 +0200 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2021-11-25 14:48:55 -0700 |
commit | 94533aa7bbd12e39fa8da158427d0fcb3a5c5739 (patch) | |
tree | cb1b3ddb43dc730815b0c01d6ef3449d1dacd561 | |
parent | 27a33ccc59a5d84c7683120552c41c237c919322 (diff) | |
download | numpy-94533aa7bbd12e39fa8da158427d0fcb3a5c5739.tar.gz |
BLD: Verify the ability to compile C++ sources before initiating the build
-rw-r--r-- | numpy/core/setup.py | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/numpy/core/setup.py b/numpy/core/setup.py index b03e9f990..56955262f 100644 --- a/numpy/core/setup.py +++ b/numpy/core/setup.py @@ -654,16 +654,29 @@ def configuration(parent_package='',top_path=None): # but we cannot use add_installed_pkg_config here either, so we only # update the substitution dictionary during npymath build config_cmd = config.get_config_cmd() - # Check that the toolchain works, to fail early if it doesn't # (avoid late errors with MATHLIB which are confusing if the # compiler does not work). - st = config_cmd.try_link('int main(void) { return 0;}') - if not st: - # rerun the failing command in verbose mode - config_cmd.compiler.verbose = True - config_cmd.try_link('int main(void) { return 0;}') - raise RuntimeError("Broken toolchain: cannot link a simple C program") + for lang, test_code, note in ( + ('c', 'int main(void) { return 0;}', ''), + ('c++', ( + 'int main(void)' + '{ auto x = 0.0; return static_cast<int>(x); }' + ), ( + 'note: A compiler with support for C++11 language ' + 'features is required.' + ) + ), + ): + st = config_cmd.try_link(test_code, lang=lang) + if not st: + # rerun the failing command in verbose mode + config_cmd.compiler.verbose = True + config_cmd.try_link(test_code, lang=lang) + raise RuntimeError( + f"Broken toolchain: cannot link a simple {lang.upper()} " + f"program. {note}" + ) mlibs = check_mathlib(config_cmd) posix_mlib = ' '.join(['-l%s' % l for l in mlibs]) |