On Thu, Sep 9, 2010 at 8:29 PM, Philip Herron <[email protected]> wrote: > On 10 September 2010 03:46, Reuben Hawkins <[email protected]> wrote: >> Attached is my Makefile.am. My problem is editing scanner.l or >> grammar.y doesn't trigger a rebuild of my whole project when *I think* >> it should... How do I set dependencies such that editing scanner.l or >> grammar.y will rebuild my whole parser? >> > > Hey there > > I use flex and bison alot with automake and yeah this isn't the right > forum to be asking about this since Makefile.am's are handled by > automake. But anyways if you edit your lexer, why do you need to > rebuild your whole thing? Its just like editing any .c file within a > project just rebuild it and then link it all together. > > Looking at your Makefile i don't understand why your doing alot of > stuff there, for what your doing there all you need is: > > bin_PROGRAMS = fixc > noinst_LTLIBRARIES = libparser.la > > AM_YFLAGS = -d --verbose > > fixc_SOURCES = \ > inc_parser.h \ > main.c > > fixc_LDADD = \ > libparser.la > > libparser_la_SOURCES = \ > grammar.y \ > parser.h \ > pure.h \ > scanner.l > > Having those extra hooks should be un-nessecary since ylwrap should > handle the outputs fine, and it should know if changed to re-generate > fine. I don't think making your parser as a shared library like that > is the right idea, for what your doing there what i would do is: > > bin_PROGRAMS = fixc > noinst_LIBRARIES = libparser.a > > AM_YFLAGS = -d --verbose > > fixc_SOURCES = \ > inc_parser.h \ > main.c > > fixc_LDADD = libparser.a > > libparser_a_CFLAGS = -DPARSER > libparser_a_SOURCES = parser.y lexer.l > > I've found when dealing with lexer's and parsers in a large program > making those components into a static library is useful. > > --Phil >
Hi Phil, Thanks for the reply. I have some followup I'm going to post on Automake's mailing list... Thanks, Reuben
