guix/gnu/packages/patches/p7zip-fix-build-with-gcc-11.patch
Simon South be41d82d19
gnu: p7zip: Fix build with GCC 11.
* gnu/packages/patches/p7zip-fix-build-with-gcc-11.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/compression.scm (p7zip)[source]: Apply it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-03-04 17:29:46 +01:00

49 lines
1.7 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Building p7zip with GCC 11 or newer normally fails with error messages like
../../../../CPP/7zip/Archive/Wim/WimHandler.cpp:308:11: error: use of an
operand of type bool in operator++ is forbidden in C++17
308 | numMethods++;
| ^~~~~~~~~~
This patch causes GCC to interpret the code using the GNU dialect of the C++14
standard, as GCC 10 did by default, and reduces these errors to warnings.
diff --git a/makefile.linux_amd64_asm b/makefile.linux_amd64_asm
index 075c6a8..b7d73ee 100644
--- a/makefile.linux_amd64_asm
+++ b/makefile.linux_amd64_asm
@@ -11,6 +11,8 @@ ALLFLAGS=-m64 ${OPTFLAGS} -pipe \
-D_7ZIP_ASM \
$(LOCAL_FLAGS)
+ALLFLAGS_CPP=-std=gnu++14
+
CXX=g++
CC=gcc
CC_SHARED=-fPIC
diff --git a/makefile.linux_any_cpu_gcc_4.X b/makefile.linux_any_cpu_gcc_4.X
index be093b5..c0f3120 100644
--- a/makefile.linux_any_cpu_gcc_4.X
+++ b/makefile.linux_any_cpu_gcc_4.X
@@ -10,7 +10,7 @@ ALLFLAGS=${OPTFLAGS} -pipe \
-D_7ZIP_LARGE_PAGES \
$(LOCAL_FLAGS)
-ALLFLAGS_CPP=-DENV_HAVE_GCCVISIBILITYPATCH -fvisibility=hidden -fvisibility-inlines-hidden
+ALLFLAGS_CPP=-DENV_HAVE_GCCVISIBILITYPATCH -std=gnu++14 -fvisibility=hidden -fvisibility-inlines-hidden
CXX=g++
CC=gcc
diff --git a/makefile.linux_x86_asm_gcc_4.X b/makefile.linux_x86_asm_gcc_4.X
index 1ac339b..6e736d9 100644
--- a/makefile.linux_x86_asm_gcc_4.X
+++ b/makefile.linux_x86_asm_gcc_4.X
@@ -12,7 +12,7 @@ ALLFLAGS=${OPTFLAGS} -pipe -m32 \
-D_7ZIP_ASM \
$(LOCAL_FLAGS)
-ALLFLAGS_CPP=-DENV_HAVE_GCCVISIBILITYPATCH -fvisibility=hidden -fvisibility-inlines-hidden
+ALLFLAGS_CPP=-DENV_HAVE_GCCVISIBILITYPATCH -std=gnu++14 -fvisibility=hidden -fvisibility-inlines-hidden
CXX=g++
CC=gcc