Blob Blame History Raw
Avoid implicit ints and implicit function declarations, for improved
compatibility with future compilers which will reject them by default.

Submitted upstream: <https://github.com/Perl/perl5/pull/20718>

diff --git a/Configure b/Configure
index 9bd6a7ad9465c2ce..75c090edc37015da 100755
--- a/Configure
+++ b/Configure
@@ -4638,7 +4638,7 @@ esac
 # so we will take those off from locincpth.
 case "$gccversion" in
 3.*)
-    echo "main(){}">try.c
+    echo "int main(){}">try.c
     for incdir in $locincpth; do
        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
 	     grep '^c[cp]p*[01]: warning: changing search order '`
@@ -5771,6 +5771,7 @@ case "$intsize" in
 #ifdef I_STDLIB
 #include <stdlib.h>
 #endif
+#include <stdio.h>
 int main()
 {
 	printf("intsize=%d;\n", (int)sizeof(int));
@@ -6844,6 +6845,7 @@ case "$doublesize" in
 #ifdef I_STDLIB
 #include <stdlib.h>
 #endif
+#include <stdio.h>
 int main()
 {
     printf("%d\n", (int)sizeof(double));
@@ -12606,7 +12608,7 @@ case "$dlsrc" in
 dl_dlopen.xs)
 	echo "Checking whether your dlsym() needs a leading underscore ..." >&4
 	$cat >dyna.c <<'EOM'
-fred () { }
+void fred (void) { }
 EOM
 
 $cat >fred.c<<EOM
@@ -12625,7 +12627,7 @@ $cat >fred.c<<EOM
 #include <link.h>
 #endif
 
-extern int fred() ;
+extern void fred(void) ;
 
 int main()
 {
@@ -13659,6 +13661,7 @@ $cat >try.c <<EOP
 #ifdef I_STDLIB
 #include <stdlib.h>
 #endif
+#include <string.h>
 #define FILE_ptr(fp)	$stdio_ptr
 #define FILE_cnt(fp)	$stdio_cnt
 int main() {
@@ -16166,6 +16169,7 @@ echo "Checking to see if your libm supports _LIB_VERSION..." >&4
 $cat >try.c <<EOCP
 #include <unistd.h>
 #include <math.h>
+#include <stdio.h>
 int main (int argc, char *argv[])
 {
     printf ("%d\n", _LIB_VERSION);
@@ -22063,13 +22067,15 @@ pager="$ans"
 : see if ar generates random libraries by itself
 echo " "
 echo "Checking how to generate random libraries on your machine..." >&4
-echo 'int bar1() { return bar2(); }' > bar1.c
+echo 'extern int bar2(); int bar1() { return bar2(); }' > bar1.c
 echo 'int bar2() { return 2; }' > bar2.c
 $cat > foo.c <<EOP
 #$i_stdlib I_STDLIB
 #ifdef I_STDLIB
 #include <stdlib.h>
 #endif
+#include <stdio.h>
+extern int bar1();
 int main() { printf("%d\n", bar1()); exit(0); }
 EOP
 $cc $ccflags -c bar1.c >/dev/null 2>&1
@@ -22295,7 +22301,7 @@ EOM
 			for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
 				for tmo in 'struct timeval *' 'const struct timeval *'; do
 					case "$val" in
-					'')	try="$extern_C select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
+					'')	try="$extern_C int select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
 						if ./protochk "$try" $hdrs; then
 							echo "Your system accepts $xxx."
 							val="$xxx"