From f0f53431d187a3e10b3caae3f1439faab39e14e1 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Fri, 7 Jul 2023 07:15:41 -0600 Subject: [PATCH] djvulibre: fix build with clang 16 This fixes the build with clang 16, which defaults to C++17. In C++17, the `register` storage class specifier was removed. --- .../misc/djvulibre/c++17-register-class.patch | 21 +++++++++++++++++++ pkgs/applications/misc/djvulibre/default.nix | 4 ++++ 2 files changed, 25 insertions(+) create mode 100644 pkgs/applications/misc/djvulibre/c++17-register-class.patch diff --git a/pkgs/applications/misc/djvulibre/c++17-register-class.patch b/pkgs/applications/misc/djvulibre/c++17-register-class.patch new file mode 100644 index 0000000000000..88251b34f7732 --- /dev/null +++ b/pkgs/applications/misc/djvulibre/c++17-register-class.patch @@ -0,0 +1,21 @@ +diff -ur a/libdjvu/GBitmap.h b/libdjvu/GBitmap.h +--- a/libdjvu/GBitmap.h 2020-11-20 09:57:32.000000000 -0700 ++++ b/libdjvu/GBitmap.h 2023-07-07 07:07:45.519912414 -0600 +@@ -620,7 +620,7 @@ + inline int + GBitmap::read_run(unsigned char *&data) + { +- register int z=*data++; ++ int z=*data++; + return (z>=RUNOVERFLOWVALUE)? + ((z&~RUNOVERFLOWVALUE)<<8)|(*data++):z; + } +@@ -628,7 +628,7 @@ + inline int + GBitmap::read_run(const unsigned char *&data) + { +- register int z=*data++; ++ int z=*data++; + return (z>=RUNOVERFLOWVALUE)? + ((z&~RUNOVERFLOWVALUE)<<8)|(*data++):z; + } diff --git a/pkgs/applications/misc/djvulibre/default.nix b/pkgs/applications/misc/djvulibre/default.nix index ad85c9c79d1d2..65591c8d82545 100644 --- a/pkgs/applications/misc/djvulibre/default.nix +++ b/pkgs/applications/misc/djvulibre/default.nix @@ -30,6 +30,10 @@ stdenv.mkDerivation rec { bash ]; + # Remove uses of the `register` storage class specifier, which was removed in C++17. + # Fixes compilation with clang 16, which defaults to C++17. + patches = [ ./c++17-register-class.patch ]; + enableParallelBuilding = true; meta = with lib; {