gentoo-ebuilds/app-text/linuxdoc-tools/files/linuxdoc-tools-0.9.82-configure-clang16.patch
Sam James 8454b4395b
app-text/linuxdoc-tools: cleanup patch
Signed-off-by: Sam James <sam@gentoo.org>
2023-04-14 05:22:39 +01:00

245 lines
4.6 KiB
Diff

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