zlib-ng: %nvhpc: Fix build with %nvhpc (similar to zlib) (#43095)

Co-authored-by: Bernhard Kaindl <bernhardkaindl7@gmail.com>
This commit is contained in:
Sergey Kosukhin 2024-03-28 11:41:10 +02:00 committed by GitHub
parent 826b8f25c5
commit f29cb7f953
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 46 additions and 0 deletions

View File

@ -56,10 +56,16 @@ class ZlibNg(AutotoolsPackage, CMakePackage):
patch("pr-1561.patch", when="build_system=autotools") # drop bash dependency
patch("pr-1562.patch") # improve intrinsics detection
# fix building with NVHPC, see https://github.com/zlib-ng/zlib-ng/pull/1698
# (@2.1.0:2.1.3 need the same changes but in a different file)
patch("pr-1698.patch", when="@2.1.4:%nvhpc+opt")
with when("build_system=cmake"):
depends_on("cmake@3.5.1:", type="build")
depends_on("cmake@3.14.0:", type="build", when="@2.1.0:")
conflicts("%nvhpc@:20", msg="the compiler is too old and too broken")
@property
def libs(self):
name = "libz" if self.spec.satisfies("+compat") else "libz-ng"
@ -74,6 +80,14 @@ def flag_handler(self, name, flags):
class AutotoolsBuilder(autotools.AutotoolsBuilder):
@run_before("configure")
def pretend_gcc(self):
# All nice things (PIC flags, symbol versioning) that happen to the compilers that are
# recognized as gcc (%gcc, %clang, %intel, %oneapi) we want for some other compilers too:
if self.spec.compiler.name in ["nvhpc"]:
filter_file(r"^gcc=0$", "gcc=1", join_path(self.configure_directory, "configure"))
def configure_args(self):
args = []
if self.spec.satisfies("+compat"):
@ -95,4 +109,5 @@ def cmake_args(self):
self.define("BUILD_SHARED_LIBS", self.spec.satisfies("+shared")),
self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
self.define_from_variant("WITH_NEW_STRATEGIES", "new_strategies"),
self.define("ZLIB_ENABLE_TESTS", self.pkg.run_tests),
]

View File

@ -0,0 +1,31 @@
From fb504432aae51c45397f3e563c659c11d68a10e2 Mon Sep 17 00:00:00 2001
From: Sergey Kosukhin <sergey.kosukhin@mpimet.mpg.de>
Date: Tue, 12 Mar 2024 15:46:52 +0100
Subject: [PATCH] Fix building with NVHPC
---
arch/x86/x86_intrins.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/x86_intrins.h b/arch/x86/x86_intrins.h
index 52e1085d66..0e596d18a1 100644
--- a/arch/x86/x86_intrins.h
+++ b/arch/x86/x86_intrins.h
@@ -7,7 +7,7 @@
#ifdef __AVX2__
#include <immintrin.h>
-#if (!defined(__clang__) && defined(__GNUC__) && __GNUC__ < 10) \
+#if (!defined(__clang__) && !defined(__NVCOMPILER) && defined(__GNUC__) && __GNUC__ < 10) \
|| (defined(__apple_build_version__) && __apple_build_version__ < 9020039)
static inline __m256i _mm256_zextsi128_si256(__m128i a) {
__m128i r;
@@ -29,7 +29,7 @@ static inline __m512i _mm512_zextsi128_si512(__m128i a) {
/* GCC <9 is missing some AVX512 intrinsics.
*/
#ifdef __AVX512F__
-#if (!defined(__clang__) && defined(__GNUC__) && __GNUC__ < 9)
+#if (!defined(__clang__) && !defined(__NVCOMPILER) && defined(__GNUC__) && __GNUC__ < 9)
#include <immintrin.h>
#define PACK(c0, c1, c2, c3) (((int)(unsigned char)(c0) << 24) | ((int)(unsigned char)(c1) << 16) | \