On Sat, 9 Dec 2023 at 15:16, Reuben Thomas wrote:
>
> If you're happy with that, I'll write a patch.
>
Patch attached.
--
https://rrt.sc3d.org
From 06f6765b7d10132d0dcefde1265b4d5f01df76b4 Mon Sep 17 00:00:00 2001
From: Reuben Thomas
Date: Sat, 9 Dec 2023 15:20:44 +0200
Subject: [PATCH] doc: add advice to list Yacc/Lex generated sources in
BUILT_SOURCES
This fixes #62791: it seems to be necessary to list the generated C source
file for a Yacc/Lex file, as well as the header file in BUILT_SOURCES.
---
doc/automake.texi | 9 +
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/doc/automake.texi b/doc/automake.texi
index e53a44332..77292288d 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -6329,7 +6329,8 @@ extensions @file{.l}, @file{.ll}, @file{.l++}, @file{.lxx}, and
@file{.lpp} are recognized.
You should never explicitly mention the intermediate (C or C++) file
-in any @code{SOURCES} variable; only list the source file.
+in any @code{SOURCES} variable (except @code{BUILT_SOURCES}, see below);
+only list the source file.
The intermediate files generated by @command{yacc} (or @command{lex})
will be included in any distribution that is made. That way the user
@@ -6359,11 +6360,11 @@ What Automake cannot guess, though, is where this header will be used:
it is up to you to ensure the header gets built before it is first
used. Typically this is necessary in order for dependency tracking to
work when the header is included by another file. The common solution
-is listing the header file in @code{BUILT_SOURCES} (@pxref{Sources})
-as follows.
+is listing the header file, and the corresponding C file, in
+@code{BUILT_SOURCES} (@pxref{Sources}) as follows.
@example
-BUILT_SOURCES = parser.h
+BUILT_SOURCES = parser.h parser.c
AM_YFLAGS = -d
bin_PROGRAMS = foo
foo_SOURCES = @dots{} parser.y @dots{}
--
2.34.1