summary refs log tree commit diff
path: root/pkgs/development/libraries/glibc/common.nix
diff options
context:
space:
mode:
authorConnor Baker <connor.baker@tweag.io>2023-10-31 14:43:55 +0000
committerConnor Baker <connor.baker@tweag.io>2023-11-06 00:53:11 +0000
commit2b47345ff54be47f71000722aafaf3d0a124c35c (patch)
tree038658756c8e4e7d697c7e8a60db4c9671adaef6 /pkgs/development/libraries/glibc/common.nix
parentf190372f1f9c6e714769d621a682d7c150f08a81 (diff)
downloadnixpkgs-2b47345ff54be47f71000722aafaf3d0a124c35c.tar
nixpkgs-2b47345ff54be47f71000722aafaf3d0a124c35c.tar.gz
nixpkgs-2b47345ff54be47f71000722aafaf3d0a124c35c.tar.bz2
nixpkgs-2b47345ff54be47f71000722aafaf3d0a124c35c.tar.lz
nixpkgs-2b47345ff54be47f71000722aafaf3d0a124c35c.tar.xz
nixpkgs-2b47345ff54be47f71000722aafaf3d0a124c35c.tar.zst
nixpkgs-2b47345ff54be47f71000722aafaf3d0a124c35c.zip
glibc: add NVCC include guards to fix ARM CUDA compilation
Diffstat (limited to 'pkgs/development/libraries/glibc/common.nix')
-rw-r--r--pkgs/development/libraries/glibc/common.nix14
1 files changed, 13 insertions, 1 deletions
diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix
index 646242de611..3e17817c0ba 100644
--- a/pkgs/development/libraries/glibc/common.nix
+++ b/pkgs/development/libraries/glibc/common.nix
@@ -97,6 +97,18 @@ stdenv.mkDerivation ({
       */
       ./reenable_DT_HASH.patch
     ]
+    /* NVCC does not support ARM intrinsics. Since <math.h> is pulled in by almost
+       every HPC piece of software, without this patch CUDA compilation on ARM
+       is effectively broken. See
+       https://forums.developer.nvidia.com/t/nvcc-fails-to-build-with-arm-neon-instructions-cpp-vs-cu/248355/2.
+    */
+    ++ (
+      let
+        isAarch64 = stdenv.buildPlatform.isAarch64 || stdenv.hostPlatform.isAarch64;
+        isLinux = stdenv.buildPlatform.isLinux || stdenv.hostPlatform.isLinux;
+      in
+      lib.optional (isAarch64 && isLinux) ./0001-aarch64-math-vector.h-add-NVCC-include-guard.patch
+    )
     ++ lib.optional stdenv.hostPlatform.isMusl ./fix-rpc-types-musl-conflicts.patch
     ++ lib.optional stdenv.buildPlatform.isDarwin ./darwin-cross-build.patch;
 
@@ -276,7 +288,7 @@ stdenv.mkDerivation ({
 
     license = licenses.lgpl2Plus;
 
-    maintainers = with maintainers; [ eelco ma27 ];
+    maintainers = with maintainers; [ eelco ma27 connorbaker ];
     platforms = platforms.linux;
   } // (args.meta or {});
 })