From 66172f80f3139a7259379116cb50db853b3c4c34 Mon Sep 17 00:00:00 2001
From: "Nichols A. Romero" <naromero77@users.noreply.github.com>
Date: Tue, 26 Mar 2019 09:31:57 -0500
Subject: [PATCH] Fixed some issues with CUDA-Intel compiler conflicts.
 (#10924)

* Fixed some issues with CUDA-Intel compiler conflicts.

* Comment about expressing CUDA-compiler conflicts.

* More precise conflicts and also add support for Intel 19.0
---
 lib/spack/spack/build_systems/cuda.py | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/lib/spack/spack/build_systems/cuda.py b/lib/spack/spack/build_systems/cuda.py
index 265880665d..436bc30729 100644
--- a/lib/spack/spack/build_systems/cuda.py
+++ b/lib/spack/spack/build_systems/cuda.py
@@ -51,6 +51,8 @@ def cuda_flags(arch_list):
     # 1. Linux x86_64
     # 2. Linux ppc64le
     # 3. Mac OS X
+    # CUDA-compiler conflicts are version-to-version specific and are
+    # difficult to express with the current Spack conflict syntax
 
     # Linux x86_64 compiler conflicts from here:
     # https://gist.github.com/ax3l/9489132
@@ -93,12 +95,17 @@ def cuda_flags(arch_list):
     conflicts('%clang@7:', when='+cuda ^cuda@10.0.130' + arch_platform)
 
     # Intel is mostly relevant for x86_64 Linux, even though it also
-    # exists for Mac OS X.
-    conflicts('%intel@:14,16:', when='+cuda ^cuda@7.5')
-    conflicts('%intel@:14,17:', when='+cuda ^cuda@8.0.44')
-    conflicts('%intel@:14,18:', when='+cuda ^cuda@8.0.61:9.1')
-    conflicts('%intel@17:18', when='+cuda ^cuda@9.2:')
-    conflicts('%intel@19:', when='+cuda')
+    # exists for Mac OS X. No information prior to CUDA 3.2 or Intel 11.1
+    conflicts('%intel@:11.0', when='+cuda ^cuda@:3.1')
+    conflicts('%intel@:12.0', when='+cuda ^cuda@5.5:')
+    conflicts('%intel@:13.0', when='+cuda ^cuda@6.0:')
+    conflicts('%intel@:13.2', when='+cuda ^cuda@6.5:')
+    conflicts('%intel@:14.9', when='+cuda ^cuda@7:')
+    # Intel 15.x is compatible with CUDA 7 thru current CUDA
+    conflicts('%intel@16.0:', when='+cuda ^cuda@:8.0.43')
+    conflicts('%intel@17.0:', when='+cuda ^cuda@:8.0.60')
+    conflicts('%intel@18.0:', when='+cuda ^cuda@:9.9')
+    conflicts('%intel@19.0:', when='+cuda ^cuda@:10.0')
 
     # XL is mostly relevant for ppc64le Linux
     conflicts('%xl@:12,14:', when='+cuda ^cuda@:9.1')
-- 
GitLab