summaryrefslogtreecommitdiff
path: root/app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch
diff options
context:
space:
mode:
Diffstat (limited to 'app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch')
-rw-r--r--app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch246
1 files changed, 246 insertions, 0 deletions
diff --git a/app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch b/app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch
new file mode 100644
index 000000000000..941d7eac1dc6
--- /dev/null
+++ b/app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch
@@ -0,0 +1,246 @@
+Patch emailed to upstream.
+
+From 216e770ced47ad0017cd43033ef213c2634fe87a Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Tue, 6 Dec 2022 08:53:14 +0000
+Subject: [PATCH] sgmls-1.1: fix configure script with Clang 16
+
+Clang 16 makes -Wimplicit-function-declaration and -Wimplicit-int errors by default.
+
+Unfortunately, this can lead to misconfiguration or miscompilation of software as configure
+tests may then return the wrong result. In this case, it led to a build failure
+(see https://bugs.gentoo.org/883203).
+
+We also fix -Wstrict-prototypes while here as it's easy to do and it prepares
+us for C23.
+
+For more information, see LWN.net [0] or LLVM's Discourse [1], the Gentoo wiki [2],
+or the (new) c-std-porting mailing list [3].
+
+[0] https://lwn.net/Articles/913505/
+[1] https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213
+[2] https://wiki.gentoo.org/wiki/Modern_C_porting
+[3] hosted at lists.linux.dev.
+
+Bug: https://bugs.gentoo.org/883203
+Signed-off-by: Sam James <sam@gentoo.org>
+--- a/sgmls-1.1/configure
++++ b/sgmls-1.1/configure
+@@ -110,13 +110,14 @@ cat >doit.c <<\EOF
+
+ #include <ctype.h>
+ #include <signal.h>
++#include <stdlib.h>
+
+-static int whoops()
++static void whoops(int signal)
+ {
+ _exit(1);
+ }
+
+-main()
++int main(void)
+ {
+ int c;
+ #ifdef isascii
+@@ -213,9 +214,9 @@ else
+ fi
+
+ cat >doit.c <<\EOF
+-main(argc, argv)
+-int argc;
+-char **argv;
++#include <stdio.h>
++#include <stdlib.h>
++int main(int argc, char **argv)
+ {
+ if (argc == 0)
+ remove("foo");
+@@ -231,9 +232,9 @@ else
+ fi
+
+ cat >doit.c <<\EOF
+-main(argc, argv)
+-int argc;
+-char **argv;
++#include <unistd.h>
++#include <stdlib.h>
++int main(int argc, char **argv)
+ {
+ if (argc == 0)
+ getopt(argc, argv, "v");
+@@ -249,9 +250,9 @@ else
+ fi
+
+ cat >doit.c <<\EOF
+-main(argc, argv)
+-int argc;
+-char **argv;
++#include <stdlib.h>
++#include <unistd.h>
++int main(int argc, char **argv)
+ {
+ if (argc == 0)
+ access("foo", 4);
+@@ -267,9 +268,9 @@ else
+ fi
+
+ cat >doit.c <<\EOF
+-main(argc, argv)
+-int argc;
+-char **argv;
++#include <stdlib.h>
++#include <unistd.h>
++int main(int argc, char **argv)
+ {
+ if (argc == 0)
+ vfork();
+@@ -285,9 +286,9 @@ else
+ fi
+
+ cat >doit.c <<\EOF
+-main(argc, argv)
+-int argc;
+-char **argv;
++#include <stdlib.h>
++#include <sys/wait.h>
++int main(int argc, char **argv)
+ {
+
+ if (argc == 0) {
+@@ -306,10 +307,9 @@ else
+ fi
+
+ cat >doit.c <<\EOF
++#include <stdlib.h>
+ #include <string.h>
+-main(argc, argv)
+-int argc;
+-char **argv;
++int main(int argc, char **argv)
+ {
+ if (argc == 0)
+ strerror(0);
+@@ -326,9 +326,8 @@ fi
+
+ cat >doit.c <<\EOF
+ #include <strings.h>
+-main(argc, argv)
+-int argc;
+-char **argv;
++#include <stdlib.h>
++int main(int argc, char **argv)
+ {
+ if (argc == 0)
+ bcopy((char *)0, (char *)0, 0);
+@@ -340,10 +339,9 @@ if $CC $CFLAGS -o doit doit.c $LIBS >/dev/null 2>&1 && ./doit 2>/dev/null
+ then
+ # Only use BSD_STRINGS if ANSI string functions don't work.
+ cat >doit.c <<\EOF
++#include <stdlib.h>
+ #include <string.h>
+-main(argc, argv)
+-int argc;
+-char **argv;
++int main(int argc, char **argv)
+ {
+ if (argc == 0)
+ memcpy((char *)0, (char *)0, 0);
+@@ -363,9 +361,8 @@ fi
+
+ cat >doit.c <<\EOF
+ #include <signal.h>
+-main(argc, argv)
+-int argc;
+-char **argv;
++#include <stdlib.h>
++int main(int argc, char **argv)
+ {
+ if (argc == 0)
+ raise(SIGINT);
+@@ -382,9 +379,8 @@ fi
+
+ cat >doit.c <<\EOF
+ #include <stdio.h>
+-main(argc, argv)
+-int argc;
+-char **argv;
++#include <stdlib.h>
++int main(int argc, char **argv)
+ {
+ if (argc == 0) {
+ fpos_t pos;
+@@ -404,12 +400,11 @@ fi
+
+ cat >doit.c <<\EOF
+ #include <unistd.h>
++#include <stdlib.h>
+ #include <sys/types.h>
+ #include <sys/wait.h>
+
+-main(argc, argv)
+-int argc;
+-char **argv;
++int main(int argc, char **argv)
+ {
+ if (argc == 0) {
+ pid_t pid;
+@@ -436,14 +431,15 @@ fi
+
+ cat >doit.c <<\EOF
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <signal.h>
+
+-static int whoops()
++static void whoops(int signal)
+ {
+ _exit(1);
+ }
+
+-main()
++int main(void)
+ {
+ char buf[30];
+ #ifdef SIGSEGV
+@@ -469,10 +465,9 @@ fi
+
+ cat >doit.c <<\EOF
+ #include <nl_types.h>
++#include <stdlib.h>
+
+-main(argc, argv)
+-int argc;
+-char **argv;
++int main(int argc, char **argv)
+ {
+ if (argc == 0) {
+ nl_catd d = catopen("foo", 0);
+@@ -492,12 +487,11 @@ fi
+
+ cat >doit.c <<\EOF
+ #include <limits.h>
++#include <stdlib.h>
+
+ char c = UCHAR_MAX;
+
+-main(argc, argv)
+-int argc;
+-char **argv;
++int main(int argc, char **argv)
+ {
+ #if CHAR_MIN < 0
+ exit(!(c < 0));
+@@ -512,7 +506,8 @@ then
+ char_signed=
+ else
+ cat >doit.c <<\EOF
+-main()
++#include <stdlib.h>
++int main(void)
+ {
+ int i;
+
+--
+2.38.1
+