From 9c139bf7a2f3041f978d9a86cb25ff3f092556b5 Mon Sep 17 00:00:00 2001 From: Simon Bolding <60368867+sbolding-LANL@users.noreply.github.com> Date: Thu, 1 Apr 2021 17:15:25 -0600 Subject: [PATCH] mpark-variant: ICC Patch (#22727) * Add patch for Intel C++ compiler - On some machines (in particular MacOSX Catalina), the icpc in some way utilizes the preprocessor of the associated "developer tools" used by icpc. This leads to, in some cases, a preprocessor claiming support for __tuple_element_packs, even though icpc (as of version 21.1) can't actually parse such code. Just use the MPARK_TUPLE_ELEMENT_PACK impl with __icc until icpc supports it, to avoid issues with developer tools that are untested. - The same patch has been PRed against mpark-variant --- .../builtin/packages/mpark-variant/icpc.patch | 33 +++++++++++++++++++ .../builtin/packages/mpark-variant/package.py | 3 ++ 2 files changed, 36 insertions(+) create mode 100644 var/spack/repos/builtin/packages/mpark-variant/icpc.patch diff --git a/var/spack/repos/builtin/packages/mpark-variant/icpc.patch b/var/spack/repos/builtin/packages/mpark-variant/icpc.patch new file mode 100644 index 00000000000..a155f2fa591 --- /dev/null +++ b/var/spack/repos/builtin/packages/mpark-variant/icpc.patch @@ -0,0 +1,33 @@ +From 2d933fe544bd5841e9016ab7e8066521ebe33f30 Mon Sep 17 00:00:00 2001 +From: sbolding +Date: Mon, 29 Mar 2021 19:13:28 -0600 +Subject: [PATCH] Apply patch for icpc + +icpc in some way utilizes the preprocessor of the associated "developer +tools" used by the compiler. This leads to, in some cases, a +preprocessor claiming support for `__tuple_element_packs`, even though +icpc (as of version 21.1) can't actually parse such code. Just use the +MPARK_TUPLE_ELEMENT_PACK impl with __icc until icpc supports it. + +Fixes #77 +--- + include/mpark/config.hpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/mpark/config.hpp b/include/mpark/config.hpp +index f85ffb55c..128fa9235 100644 +--- a/include/mpark/config.hpp ++++ b/include/mpark/config.hpp +@@ -50,7 +50,7 @@ + #define MPARK_BUILTIN_UNREACHABLE + #endif + +-#if __has_builtin(__type_pack_element) ++#if __has_builtin(__type_pack_element) && !(defined(__ICC)) + #define MPARK_TYPE_PACK_ELEMENT + #endif + +-- +2.24.3 (Apple Git-128) + + diff --git a/var/spack/repos/builtin/packages/mpark-variant/package.py b/var/spack/repos/builtin/packages/mpark-variant/package.py index 72bcc306da5..b18b54e635b 100644 --- a/var/spack/repos/builtin/packages/mpark-variant/package.py +++ b/var/spack/repos/builtin/packages/mpark-variant/package.py @@ -19,7 +19,10 @@ class MparkVariant(CMakePackage): # Ref.: https://github.com/mpark/variant/pull/73 patch('nvcc.patch', when='@:1.4.0') + # Ref.: https://github.com/mpark/variant/issues/60 patch('version.patch', when='@1.4.0') + # Ref.: https://github.com/mpark/variant/pull/78 + patch('icpc.patch', when='@:1.4.0') cxx11_msg = 'MPark.Variant needs a C++11-capable compiler. ' \ 'See https://github.com/mpark/variant#requirements'