summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorAdam J. Stewart <ajstewart426@gmail.com>2022-10-16 04:53:54 -0500
committerGitHub <noreply@github.com>2022-10-16 11:53:54 +0200
commit496f4193a6083956089d6d7f5f804c15012b3227 (patch)
tree969d2d9db6d1bd4c3ef28f46d2a4c8d8ae4d3cd4 /var
parent10491e98a876df986ce9ee78902c440fe4a8337d (diff)
downloadspack-496f4193a6083956089d6d7f5f804c15012b3227.tar.gz
spack-496f4193a6083956089d6d7f5f804c15012b3227.tar.bz2
spack-496f4193a6083956089d6d7f5f804c15012b3227.tar.xz
spack-496f4193a6083956089d6d7f5f804c15012b3227.zip
meson: update OneAPI compiler support patch (#33293)
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/meson/oneapi.patch158
-rw-r--r--var/spack/repos/builtin/packages/meson/package.py11
2 files changed, 163 insertions, 6 deletions
diff --git a/var/spack/repos/builtin/packages/meson/oneapi.patch b/var/spack/repos/builtin/packages/meson/oneapi.patch
new file mode 100644
index 0000000000..e5996261db
--- /dev/null
+++ b/var/spack/repos/builtin/packages/meson/oneapi.patch
@@ -0,0 +1,158 @@
+diff --git a/docs/markdown/Reference-tables.md b/docs/markdown/Reference-tables.md
+index 60303dad6..421b33c07 100644
+--- a/docs/markdown/Reference-tables.md
++++ b/docs/markdown/Reference-tables.md
+@@ -20,6 +20,7 @@ These are return values of the `get_id` (Compiler family) and
+ | gcc | The GNU Compiler Collection | gcc |
+ | intel | Intel compiler (Linux and Mac) | gcc |
+ | intel-cl | Intel compiler (Windows) | msvc |
++| intel-llvm| Intel oneAPI LLVM-based compiler | |
+ | lcc | Elbrus C/C++/Fortran Compiler | |
+ | llvm | LLVM-based compiler (Swift, D) | |
+ | mono | Xamarin C# compiler | |
+diff --git a/docs/markdown/snippets/oneapi_compilers.md b/docs/markdown/snippets/oneapi_compilers.md
+new file mode 100644
+index 000000000..a982da22a
+--- /dev/null
++++ b/docs/markdown/snippets/oneapi_compilers.md
+@@ -0,0 +1,8 @@
++## Basic support for oneAPI compilers on Linux
++
++To use:
++
++```
++source /opt/intel/oneapi/setvars.sh
++CC=icx CXX=icpx FC=ifx meson setup builddir
++```
+diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
+index b1b4a7c92..9490ee688 100644
+--- a/mesonbuild/compilers/c.py
++++ b/mesonbuild/compilers/c.py
+@@ -406,6 +406,13 @@ class IntelCCompiler(IntelGnuLikeCompiler, CCompiler):
+ return args
+
+
++class IntelLLVMCCompiler(ClangCCompiler):
++
++
++ id = 'intel-llvm'
++
++
++
+ class VisualStudioLikeCCompilerMixin(CompilerMixinBase):
+
+ """Shared methods that apply to MSVC-like C compilers."""
+diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py
+index ac65df9a1..3d728f169 100644
+--- a/mesonbuild/compilers/cpp.py
++++ b/mesonbuild/compilers/cpp.py
+@@ -153,7 +153,7 @@ class CPPCompiler(CLikeCompiler, Compiler):
+ }
+
+ # Currently, remapping is only supported for Clang, Elbrus and GCC
+- assert self.id in frozenset(['clang', 'lcc', 'gcc', 'emscripten', 'armltdclang'])
++ assert self.id in frozenset(['clang', 'lcc', 'gcc', 'emscripten', 'armltdclang', 'intel-llvm'])
+
+ if cpp_std not in CPP_FALLBACKS:
+ # 'c++03' and 'c++98' don't have fallback types
+@@ -593,6 +593,13 @@ class IntelCPPCompiler(IntelGnuLikeCompiler, CPPCompiler):
+ return []
+
+
++class IntelLLVMCPPCompiler(ClangCPPCompiler):
++
++
++ id = 'intel-llvm'
++
++
++
+ class VisualStudioLikeCPPCompilerMixin(CompilerMixinBase):
+
+ """Mixin for C++ specific method overrides in MSVC-like compilers."""
+diff --git a/mesonbuild/compilers/detect.py b/mesonbuild/compilers/detect.py
+index f4afa777d..42a4b18a5 100644
+--- a/mesonbuild/compilers/detect.py
++++ b/mesonbuild/compilers/detect.py
+@@ -62,6 +62,7 @@ from .c import (
+ EmscriptenCCompiler,
+ IntelCCompiler,
+ IntelClCCompiler,
++ IntelLLVMCCompiler,
+ NvidiaHPC_CCompiler,
+ PGICCompiler,
+ CcrxCCompiler,
+@@ -83,6 +84,7 @@ from .cpp import (
+ EmscriptenCPPCompiler,
+ IntelCPPCompiler,
+ IntelClCPPCompiler,
++ IntelLLVMCPPCompiler,
+ NvidiaHPC_CPPCompiler,
+ PGICPPCompiler,
+ CcrxCPPCompiler,
+@@ -106,6 +108,7 @@ from .fortran import (
+ FlangFortranCompiler,
+ IntelFortranCompiler,
+ IntelClFortranCompiler,
++ IntelLLVMFortranCompiler,
+ NAGFortranCompiler,
+ Open64FortranCompiler,
+ PathScaleFortranCompiler,
+@@ -180,11 +183,11 @@ else:
+ defaults['objc'] = ['clang']
+ defaults['objcpp'] = ['clang++']
+ else:
+- defaults['c'] = ['cc', 'gcc', 'clang', 'nvc', 'pgcc', 'icc']
+- defaults['cpp'] = ['c++', 'g++', 'clang++', 'nvc++', 'pgc++', 'icpc']
++ defaults['c'] = ['cc', 'gcc', 'clang', 'nvc', 'pgcc', 'icc', 'icx']
++ defaults['cpp'] = ['c++', 'g++', 'clang++', 'nvc++', 'pgc++', 'icpc', 'icpx']
+ defaults['objc'] = ['cc', 'gcc', 'clang']
+ defaults['objcpp'] = ['c++', 'g++', 'clang++']
+- defaults['fortran'] = ['gfortran', 'flang', 'nvfortran', 'pgfortran', 'ifort', 'g95']
++ defaults['fortran'] = ['gfortran', 'flang', 'nvfortran', 'pgfortran', 'ifort', 'ifx', 'g95']
+ defaults['cs'] = ['mcs', 'csc']
+ defaults['d'] = ['ldc2', 'ldc', 'gdc', 'dmd']
+ defaults['java'] = ['javac']
+@@ -617,6 +620,12 @@ def _detect_c_or_cpp_compiler(env: 'Environment', lang: str, for_machine: Machin
+ return cls(
+ ccache + compiler, version, for_machine, is_cross, info,
+ exe_wrap, full_version=full_version, linker=l)
++ if 'Intel(R) oneAPI' in out:
++ cls = IntelLLVMCCompiler if lang == 'c' else IntelLLVMCPPCompiler
++ l = guess_nix_linker(env, compiler, cls, version, for_machine)
++ return cls(
++ ccache + compiler, version, for_machine, is_cross, info,
++ exe_wrap, full_version=full_version, linker=l)
+ if 'TMS320C2000 C/C++' in out or 'MSP430 C/C++' in out or 'TI ARM C/C++ Compiler' in out:
+ lnk: T.Union[T.Type[C2000DynamicLinker], T.Type[TIDynamicLinker]]
+ if 'TMS320C2000 C/C++' in out:
+@@ -789,6 +798,13 @@ def detect_fortran_compiler(env: 'Environment', for_machine: MachineChoice) -> C
+ compiler, version, for_machine, is_cross, info,
+ exe_wrap, full_version=full_version, linker=linker)
+
++ if 'ifx (IFORT)' in out:
++ cls = IntelLLVMFortranCompiler
++ linker = guess_nix_linker(env, compiler, cls, version, for_machine)
++ return cls(
++ compiler, version, for_machine, is_cross, info,
++ exe_wrap, full_version=full_version, linker=linker)
++
+ if 'PathScale EKOPath(tm)' in err:
+ return PathScaleFortranCompiler(
+ compiler, version, for_machine, is_cross, info,
+diff --git a/mesonbuild/compilers/fortran.py b/mesonbuild/compilers/fortran.py
+index 0a0c3ec86..e7154fe87 100644
+--- a/mesonbuild/compilers/fortran.py
++++ b/mesonbuild/compilers/fortran.py
+@@ -352,6 +352,12 @@ class IntelFortranCompiler(IntelGnuLikeCompiler, FortranCompiler):
+ return ['-gen-dep=' + outtarget, '-gen-depformat=make']
+
+
++class IntelLLVMFortranCompiler(IntelFortranCompiler):
++
++
++ id = 'intel-llvm'
++
++
+ class IntelClFortranCompiler(IntelVisualStudioLikeCompiler, FortranCompiler):
+
+ file_suffixes = ('f90', 'f', 'for', 'ftn', 'fpp', )
diff --git a/var/spack/repos/builtin/packages/meson/package.py b/var/spack/repos/builtin/packages/meson/package.py
index 05433d59dd..ecec502651 100644
--- a/var/spack/repos/builtin/packages/meson/package.py
+++ b/var/spack/repos/builtin/packages/meson/package.py
@@ -67,12 +67,11 @@ class Meson(PythonPackage):
patch("rpath-0.54.patch", when="@0.54:0.55")
patch("rpath-0.56.patch", when="@0.56:0.57")
patch("rpath-0.58.patch", when="@0.58:")
- # Help meson recognize Intel OneAPI compilers
- patch(
- "https://patch-diff.githubusercontent.com/raw/mesonbuild/meson/pull/9850.patch?full_index=1",
- sha256="9c874726ce0a06922580d3e3d6adbe74e5144b3a661ef1059f32c9c1bc478b65",
- when="@0.60.0:",
- )
+
+ # Intel OneAPI compiler support
+ # https://github.com/mesonbuild/meson/pull/10909
+ # https://github.com/mesonbuild/meson/pull/9850
+ patch("oneapi.patch", when="@0.62: %oneapi")
executables = ["^meson$"]