This patch is from https://bugs.gnu.org/59993 (v2 part 2).
* t/c-demo.sh: This patch is related to an effort to prepare
Automake for future GCC/Clang versions which set c99 as default
standard to be used.
C99 requires that functions be properly declared before use.
This is true for both user functions and standard functions,
e.g., printf.
* t/cond35.sh: Likewise.
* t/dist-vs-built-sources.sh: Likewise.
* t/lex-clean.sh: Likewise.
* t/lex-multiple.sh: Likewise.
* t/lex-nodist.sh: Likewise.
* t/ltcond2.sh: Likewise.
* t/ltconv.sh: Likewise.
* t/subobj-clean-lt-pr10697.sh: Likewise.
* t/subobj-clean-pr10697.sh: Likewise.
* t/tags-pr12372.sh: Likewise.
* t/yacc-basic.sh: Likewise.
* t/yacc-clean.sh: Likewise.
* t/yacc-nodist.sh: Likewise.
This patch is from https://bugs.gnu.org/59993.
./configure --enable-dependency-tracking
cat > src/main.c << 'END'
+#include <stdio.h>
#include "foo.h"
#include "bar.h"
int main (void)
cat > tparse.y << 'END'
%{
+extern int yylex(void);
+
void yyerror (const char *s) {}
%}
%token EOF
END
cat > foo.c << 'END'
+#include <stdio.h>
#include "h.h"
int main (void) { printf ("%s\n", F); return 0; }
END
END
cat > main.c << 'END'
+extern int yylex (void);
int main (void)
{
return yylex ();
#include <stdlib.h>
#include <string.h>
+extern int yylex (void);
+extern int foolex (void);
+extern int bar_lex (void);
+
int main (int argc, char *argv[])
{
if (argc != 2)
END
cat > main.c << 'END'
+extern int yylex (void);
+
int main ()
{
return yylex ();
END
cat > main.c <<'END'
+extern void print(void);
+
int main (void)
{
print();
cat >test.c <<'EOF'
#include <stdio.h>
+
+extern int sub1 (void);
+extern int sub2 (void);
+extern int sub21 (void);
+extern int sub22 (void);
+
int main ()
{
if (1 != sub1 ())
END
mkdir sub1 sub2
-echo 'int libmain (void)' > main.c
+
+echo "/* Subobj clean: libtool case*/" > main.c
+for i in 1 2; do
+ for j in a b c d e f; do
+ echo "extern void $j$i (void);" >> main.c
+ done
+done
+
+echo 'int libmain (void)' >> main.c
echo '{' >> main.c
for i in 1 2; do
for j in a b c d e f; do
END
mkdir sub1 sub2
-echo 'int main (void)' > main.c
+
+echo "/* Subobj clean: generic case*/" > main.c
+for i in 1 2; do
+ for j in a b c d e f; do
+ echo "extern void $j$i (void);" >> main.c
+ done
+done
+
+echo 'int main (void)' >> main.c
echo '{' >> main.c
for i in 1 2; do
for j in a b c d e f; do
zap_SOURCES = zardoz.pc
END
-echo 'int main(void) [ return bar(1); ]' > foo-main.pc
+echo 'extern int bar(int);' > foo-main.pc
+echo 'int main(void) [ return bar(1); ]' >> foo-main.pc
echo 'int bar(int x) { return !x; }' > barbar.c
echo 'int m@in(void) { return 0; }' > sub/zardoz.pc
END
cat > foo.c << 'END'
+extern int yyparse(void);
int main () { yyparse (); return 1; }
END
cat > sub1/parse.y << 'END'
%{
+#include <stdio.h>
+
int yylex () { return (getchar ()); }
void yyerror (const char *s) {}
%}
cp sub1/parse.y sub2/parse.y
cat > sub1/main.c << 'END'
+extern int yyparse(void);
+
int main ()
{
return yyparse ();
END
cat > sub1/main.c << 'END'
+extern int yyparse(void);
+
int main ()
{
return yyparse ();