From 107693fbd18ece0280ff1242d94a22ce37ac6ee8 Mon Sep 17 00:00:00 2001 From: Scott McMillan Date: Tue, 24 Aug 2021 12:07:03 -0500 Subject: m4: fixes for the NVIDIA HPC SDK (#25546) Co-authored-by: Scott McMillan --- var/spack/repos/builtin/packages/m4/nvhpc-1.4.19.patch | 14 ++++++++++++++ .../repos/builtin/packages/m4/nvhpc-long-width.patch | 17 +++++++++++++++++ var/spack/repos/builtin/packages/m4/package.py | 5 +++++ 3 files changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/m4/nvhpc-1.4.19.patch create mode 100644 var/spack/repos/builtin/packages/m4/nvhpc-long-width.patch (limited to 'var') diff --git a/var/spack/repos/builtin/packages/m4/nvhpc-1.4.19.patch b/var/spack/repos/builtin/packages/m4/nvhpc-1.4.19.patch new file mode 100644 index 0000000000..ee9398b3bb --- /dev/null +++ b/var/spack/repos/builtin/packages/m4/nvhpc-1.4.19.patch @@ -0,0 +1,14 @@ +--- a/lib/intprops.h ++++ b/lib/intprops.h +@@ -232,9 +232,9 @@ + (A, B, P) work when P is non-null. */ + /* __builtin_{add,sub}_overflow exists but is not reliable in GCC 5.x and 6.x, + see . */ +-#if 7 <= __GNUC__ && !defined __ICC ++#if 7 <= __GNUC__ && !defined __ICC && !defined __NVCOMPILER + # define _GL_HAS_BUILTIN_ADD_OVERFLOW 1 +-#elif defined __has_builtin ++#elif defined __has_builtin && !defined __NVCOMPILER + # define _GL_HAS_BUILTIN_ADD_OVERFLOW __has_builtin (__builtin_add_overflow) + #else + # define _GL_HAS_BUILTIN_ADD_OVERFLOW 0 diff --git a/var/spack/repos/builtin/packages/m4/nvhpc-long-width.patch b/var/spack/repos/builtin/packages/m4/nvhpc-long-width.patch new file mode 100644 index 0000000000..1dceb3a034 --- /dev/null +++ b/var/spack/repos/builtin/packages/m4/nvhpc-long-width.patch @@ -0,0 +1,17 @@ +--- a/lib/regex_internal.h ++++ b/lib/regex_internal.h +@@ -39,6 +39,14 @@ + #include + #include + ++#ifndef __LONG_WIDTH__ ++#if LONG_WIDTH ++#define __LONG_WIDTH__ LONG_WIDTH ++#else ++#define __LONG_WIDTH__ __WORDSIZE ++#endif ++#endif ++ + #if defined DEBUG && DEBUG != 0 + # include + # define DEBUG_ASSERT(x) assert (x) diff --git a/var/spack/repos/builtin/packages/m4/package.py b/var/spack/repos/builtin/packages/m4/package.py index a71240e4bc..d39ac2450d 100644 --- a/var/spack/repos/builtin/packages/m4/package.py +++ b/var/spack/repos/builtin/packages/m4/package.py @@ -18,7 +18,12 @@ class M4(AutotoolsPackage, GNUMirrorPackage): patch('gnulib-pgi.patch', when='@1.4.18') patch('pgi.patch', when='@1.4.17') + # The NVIDIA compilers do not currently support some GNU builtins. + # Detect this case and use the fallback path. patch('nvhpc.patch', when='@1.4.18 %nvhpc') + patch('nvhpc-1.4.19.patch', when='@1.4.19 %nvhpc') + # Workaround bug where __LONG_WIDTH__ is not defined + patch('nvhpc-long-width.patch', when='@1.4.19 %nvhpc') patch('oneapi.patch', when='@1.4.18 %oneapi') # from: https://github.com/Homebrew/homebrew-core/blob/master/Formula/m4.rb # Patch credit to Jeremy Huddleston Sequoia -- cgit v1.2.3-70-g09d2