GNU Info

Info Node: (automake.info)etags

(automake.info)etags


Prev: Hello Up: Examples
Enter node , (file) or (file)node

Building etags and ctags
========================

   Here is another, trickier example.  It shows how to generate two
programs (`ctags' and `etags') from the same source file (`etags.c').
The difficult part is that each compilation of `etags.c' requires
different `cpp' flags.

     bin_PROGRAMS = etags ctags
     ctags_SOURCES =
     ctags_LDADD = ctags.o
     
     etags.o: etags.c
             $(COMPILE) -DETAGS_REGEXPS -c etags.c
     
     ctags.o: etags.c
             $(COMPILE) -DCTAGS -o ctags.o -c etags.c

   Note that `ctags_SOURCES' is defined to be empty--that way no
implicit value is substituted.  The implicit value, however, is used to
generate `etags' from `etags.o'.

   `ctags_LDADD' is used to get `ctags.o' into the link line.
`ctags_DEPENDENCIES' is generated by Automake.

   The above rules won't work if your compiler doesn't accept both `-c'
and `-o'.  The simplest fix for this is to introduce a bogus dependency
(to avoid problems with a parallel `make'):

     etags.o: etags.c ctags.o
             $(COMPILE) -DETAGS_REGEXPS -c etags.c
     
     ctags.o: etags.c
             $(COMPILE) -DCTAGS -c etags.c && mv etags.o ctags.o

   Also, these explicit rules do not work if the de-ANSI-fication
feature is used (Note: ANSI).  Supporting de-ANSI-fication requires a
little more work:

     etags._o: etags._c ctags.o
             $(COMPILE) -DETAGS_REGEXPS -c etags.c
     
     ctags._o: etags._c
             $(COMPILE) -DCTAGS -c etags.c && mv etags._o ctags.o


automatically generated by info2www version 1.2.2.9