
David kiarie wrote:
Hmm, any consensus on this?
I looked at coreutils following Eric's suggestion, but didn't notice any use of flex. I went back to the automake documented approach [1] and peeked at the resulting generated files. src/Makefile.in contains LEX_OUTPUT_ROOT = lex.yy LEXCOMPILE = $(LEX) $(AM_LFLAGS) $(LFLAGS) .l.c: $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) which during an actual make produces /bin/sh ../build-aux/ylwrap xenconfig/libxlu_disk_l.l lex.yy.c xenconfig/libxlu_disk_l.c -- flex But later the build fails with CC xenconfig/libvirt_xenconfig_la-xen_xl.lo xenconfig/xen_xl.c:28:27: fatal error: libxlu_disk_l.h: No such file or directory #include "libxlu_disk_l.h" Which is the problem I mentioned earlier in the thread about flex not generating a header file. I naively tried hacking '--header-file' into AM_LFLAGS (e.g. AM_LFLAGS=--header-file=$*.h), but flex wasn't happy with that make[2]: Entering directory `libvirt/src' /bin/sh ../build-aux/ylwrap xenconfig/libxlu_disk_l.l lex.yy.c xenconfig/libxlu_disk_l.c -- flex --header-file=xenconfig/libxlu_disk_l.h flex: fatal internal error, freopen(headerfilename) failed I banged my head on this for a while but couldn't find a resolution :-/. The alternate approach is to use hand-crafted rules in src/Makefile.am, as you've done. I'd prefer something a bit more generic like %.c %.h:: %.l @rm -f $*.[ch] $(AM_V_GEN)$(LEX) --header-file=$*.h --outfile=$*.c $< Which does work but has the two issues we discussed earlier: - warning flags need relaxed when compiling the generated files - generated files need to be excluded from syntax-check The second issue is trivial, and although not obvious to me, I think there are several devs on the list that can give hints. Regards, Jim [1] http://www.gnu.org/software/automake/manual/html_node/Yacc-and-Lex.html
On Fri, Sep 12, 2014 at 4:17 PM, Eric Blake <eblake@redhat.com> wrote:
On 09/11/2014 06:14 PM, Jim Fehlig wrote:
But also as mentioned before, I can't figure out how to convince automake to tell flex to generate the header file as well as the .c file.
Eric, do you have any experience with automake and flex? The following thread makes it sound as though automake supports flex's '--header-file=' option, but I can't find any hint on how to make it work
http://lists.gnu.org/archive/html/bug-automake/2012-08/msg00069.html
Quick reply here to acknowledge that you're waiting on me, although a more detailed reply may take me a few days...
I haven't personally written a makefile with flex, but know that coreutils is such a project, so I plan to research how it gets things to work.
-- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org