diff options
author | Aiden Grossman <agrossman154@yahoo.com> | 2023-12-19 08:22:29 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-19 17:22:29 +0100 |
commit | 3f063153f0f59324da8c736428a374effcc9b479 (patch) | |
tree | 0142833f83c9cfc7a0332b6efa14f1575b9148fb | |
parent | aa350a4ed149e42ea83167fd29c6ea6b35f7fafb (diff) | |
download | spack-3f063153f0f59324da8c736428a374effcc9b479.tar.gz spack-3f063153f0f59324da8c736428a374effcc9b479.tar.bz2 spack-3f063153f0f59324da8c736428a374effcc9b479.tar.xz spack-3f063153f0f59324da8c736428a374effcc9b479.zip |
openblas: add patches to build with clang (#39138)
3 files changed, 50 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/openblas/openblas_append_lflags.patch b/var/spack/repos/builtin/packages/openblas/openblas_append_lflags.patch new file mode 100644 index 0000000000..4ae1427c33 --- /dev/null +++ b/var/spack/repos/builtin/packages/openblas/openblas_append_lflags.patch @@ -0,0 +1,26 @@ +diff --git a/ctest/Makefile b/ctest/Makefile +index 0fb2450d28..9e85d23b96 100644 +--- a/ctest/Makefile ++++ b/ctest/Makefile +@@ -208,7 +208,7 @@ FLDFLAGS = $(FFLAGS:-fPIC=) $(LDFLAGS) + ifeq ($(USE_OPENMP), 1) + ifeq ($(F_COMPILER), GFORTRAN) + ifeq ($(C_COMPILER), CLANG) +-CEXTRALIB = -lomp ++CEXTRALIB += -lomp + endif + endif + ifeq ($(F_COMPILER), NAG) +diff --git a/test/Makefile b/test/Makefile +index 923f1537c2..46a7b11583 100644 +--- a/test/Makefile ++++ b/test/Makefile +@@ -265,7 +265,7 @@ FLDFLAGS = $(FFLAGS:-fPIC=) $(LDFLAGS) + ifeq ($(USE_OPENMP), 1) + ifeq ($(F_COMPILER), GFORTRAN) + ifeq ($(C_COMPILER), CLANG) +-CEXTRALIB = -lomp ++CEXTRALIB += -lomp + endif + endif + ifeq ($(F_COMPILER), NAG)
\ No newline at end of file diff --git a/var/spack/repos/builtin/packages/openblas/openblas_libomp_fork.patch b/var/spack/repos/builtin/packages/openblas/openblas_libomp_fork.patch new file mode 100644 index 0000000000..b1f94da72c --- /dev/null +++ b/var/spack/repos/builtin/packages/openblas/openblas_libomp_fork.patch @@ -0,0 +1,13 @@ +diff --git a/utest/Makefile b/utest/Makefile +index f99035440c..eab9046574 100644 +--- a/utest/Makefile ++++ b/utest/Makefile +@@ -29,8 +29,11 @@ ifeq ($(OSNAME), $(filter $(OSNAME),Linux CYGWIN_NT)) + ifneq ($(USE_OPENMP), 1) + OBJS += test_fork.o + endif ++# LLVM's libomp throws an assertion when running the post fork test ++ifneq ($(C_COMPILER), CLANG) + OBJS += test_post_fork.o + endif ++endif diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py index ea9f82bf26..866e571c47 100644 --- a/var/spack/repos/builtin/packages/openblas/package.py +++ b/var/spack/repos/builtin/packages/openblas/package.py @@ -195,6 +195,17 @@ class Openblas(CMakePackage, MakefilePackage): when="@0.3.21 %gcc@:9", ) + # Some installations of clang and libomp have non-standard locations for + # libomp. OpenBLAS adds the correct linker flags but overwrites the + # variables in a couple places, causing link-time failures. + patch("openblas_append_lflags.patch", when="@:0.3.23 threads=openmp") + + # Some builds of libomp on certain systems cause test failures related to + # forking, so disable the specific test that's failing. This is currently + # an open issue upstream: + # https://github.com/llvm/llvm-project/issues/63908 + patch("openblas_libomp_fork.patch", when="%clang@15:") + # Fix build on A64FX for OpenBLAS v0.3.24 patch( "https://github.com/OpenMathLib/OpenBLAS/commit/90231bfc4e4afc51f67c248328fbef0cecdbd2c2.patch?full_index=1", |