summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--var/spack/repos/builtin/packages/m4/nvhpc-1.4.19.patch14
-rw-r--r--var/spack/repos/builtin/packages/m4/nvhpc-long-width.patch17
-rw-r--r--var/spack/repos/builtin/packages/m4/package.py5
3 files changed, 36 insertions, 0 deletions
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 <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98269>. */
+-#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 <intprops.h>
+ #include <verify.h>
+
++#ifndef __LONG_WIDTH__
++#if LONG_WIDTH
++#define __LONG_WIDTH__ LONG_WIDTH
++#else
++#define __LONG_WIDTH__ __WORDSIZE
++#endif
++#endif
++
+ #if defined DEBUG && DEBUG != 0
+ # include <assert.h>
+ # 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 <jeremyhu@apple.com>