Edit

kc3-lang/automake/texinfos.am

Branch :

  • Show log

    Commit

  • Author : Akim Demaille
    Date : 2001-02-06 09:09:36
    Hash : 8a34b58d
    Message : Monstro unsplitable patch. The aim is to remove hard coded knowledge about clean targets from automake.in, leaving them in the *.am files. In addition to the mechanic needed to factor some dependencies, it appears some rules (most notably distclean and maintainer-clean) need factored actions. So first, be ready to catch factored rules. * automake.in (&file_contents): For the time being, use an extended $RULE_PATTERN which is able to match any kind of rules, with or without dependency, with or without actions. Handle all the rules uniformly, storing in %actions the factored actions. (&flatten, &target_cmp): New. (&handle_factored_dependencies): Output the %actions. No longer special case `clean'. Output the rules in alphabetical order, but keeping `.PHONY' last. Now we must not use &push_phony_cleaners, which is doing all sort of magic to push a bit of everything in all the clean targets. The biggest problem being that, making a Cartesian product, it requires many useless targets. The `*.am' file know better. But first, register the new factored rules. * automake.in (&initialize_per_input): Include clean, mostlyclean, maintainer-clean, distclean and their `*-am' counterpart in %dependencies. Initialize %actions. (get_object_extension, handle_texinfo, handle_tags, handle_multilib) handle_dependencies, handle_subdirs, handle_configure, handle_clean) (handle_emacs_lisp, handle_python): Don't play with &push_phony_cleaners nor &depend and `clean'. * texinfos.am, texi-vers.am, tags-clean.am: * subdirs.am,python-clean.am, multilib.am, lisp-clean.am: * libtool.am, kr-extra.am, depend.am, compile.am, clean.am: * clean-kr.am, clean-hdr.am: Do it. Whenever a target is empty, just remove it, it will no longer be called. There is still some magic about clean to hard code. But really, that's the end of &do_one_clean_target. * automake.in (&do_one_clean_target): Kaboom out. (&handle_clean): Rewrite the magic code. (&am_install_var): No longer use &push_phony_cleaners, nor depend on `clean'. (&push_phony_cleaners): Kaboom too.

  • texinfos.am
  • ## automake - create Makefile.in from Makefile.am
    ## Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
    ## Free Software Foundation, Inc.
    
    ## This program is free software; you can redistribute it and/or modify
    ## it under the terms of the GNU General Public License as published by
    ## the Free Software Foundation; either version 2, or (at your option)
    ## any later version.
    
    ## This program is distributed in the hope that it will be useful,
    ## but WITHOUT ANY WARRANTY; without even the implied warranty of
    ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ## GNU General Public License for more details.
    
    ## You should have received a copy of the GNU General Public License
    ## along with this program; if not, write to the Free Software
    ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
    ## 02111-1307, USA.
    
    ## FIXME: should repeat all the stuff in this file.  Instead should
    ## generate the contents in a smarter way.
    
    .texi.info:
    ## We want to force the .info file to be built in srcdir.  This is
    ## probably the simplest way.  However, at Cygnus .info files are
    ## always put into the build directory.  So at runtime we select which
    ## rule to use.
    ## Note that we also remove the possible output files before running
    ## makeinfo.  Otherwise, if the texinfo file shrinks (or if you start
    ## using --no-split), you'll be left with some dead info files lying
    ## around -- dead files which will end up in the distribution.
    NOTCYGNUS	@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
    NOTCYGNUS	cd $(srcdir) \
    NOTCYGNUS	  && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
    CYGNUS	@rm -f $@ $@-[0-9] $@-[0-9][0-9]
    CYGNUS	$(MAKEINFO) -I $(srcdir) $<
    
    .texi.dvi:
    	TEXINPUTS=@TEXINFODIR@:$$TEXINPUTS \
    ## Must set MAKEINFO like this so that version.texi will be found even
    ## if it is in srcdir.
    	  MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
    
    .texi:
    ## We want to force the .info file to be built in srcdir.  This is
    ## probably the simplest way.  However, at Cygnus .info files are
    ## always put into the build directory.  So at runtime we select which
    ## rule to use.
    ## Note that we also remove the possible output files before running
    ## makeinfo.  Otherwise, if the texinfo file shrinks (or if you start
    ## using --no-split), you'll be left with some dead info files lying
    ## around -- dead files which will end up in the distribution.
    NOTCYGNUS	@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
    NOTCYGNUS	cd $(srcdir) \
    NOTCYGNUS	  && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
    CYGNUS	@rm -f $@ $@-[0-9] $@-[0-9][0-9]
    CYGNUS	$(MAKEINFO) -I $(srcdir) $<
    
    .texinfo.info:
    ## We want to force the .info file to be built in srcdir.  This is
    ## probably the simplest way.  However, at Cygnus .info files are
    ## always put into the build directory.  So at runtime we select which
    ## rule to use.
    ## Note that we also remove the possible output files before running
    ## makeinfo.  Otherwise, if the texinfo file shrinks (or if you start
    ## using --no-split), you'll be left with some dead info files lying
    ## around -- dead files which will end up in the distribution.
    NOTCYGNUS	@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
    NOTCYGNUS	cd $(srcdir) \
    NOTCYGNUS	  && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
    CYGNUS	@rm -f $@ $@-[0-9] $@-[0-9][0-9]
    CYGNUS	$(MAKEINFO) -I $(srcdir) $<
    
    .texinfo:
    ## We want to force the .info file to be built in srcdir.  This is
    ## probably the simplest way.  However, at Cygnus .info files are
    ## always put into the build directory.  So at runtime we select which
    ## rule to use.
    ## Note that we also remove the possible output files before running
    ## makeinfo.  Otherwise, if the texinfo file shrinks (or if you start
    ## using --no-split), you'll be left with some dead info files lying
    ## around -- dead files which will end up in the distribution.
    NOTCYGNUS	@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
    NOTCYGNUS	cd $(srcdir) \
    NOTCYGNUS	  && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
    CYGNUS	@rm -f $@ $@-[0-9] $@-[0-9][0-9]
    CYGNUS	$(MAKEINFO) -I $(srcdir) $<
    
    .texinfo.dvi:
    	TEXINPUTS=@TEXINFODIR@:$$TEXINPUTS \
    ## Must set MAKEINFO like this so that version.texi will be found even
    ## if it is in srcdir.
    	  MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
    
    .txi.info:
    ## We want to force the .info file to be built in srcdir.  This is
    ## probably the simplest way.  However, at Cygnus .info files are
    ## always put into the build directory.  So at runtime we select which
    ## rule to use.
    ## Note that we also remove the possible output files before running
    ## makeinfo.  Otherwise, if the texinfo file shrinks (or if you start
    ## using --no-split), you'll be left with some dead info files lying
    ## around -- dead files which will end up in the distribution.
    NOTCYGNUS	@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
    NOTCYGNUS	cd $(srcdir) \
    NOTCYGNUS	  && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
    CYGNUS	@rm -f $@ $@-[0-9] $@-[0-9][0-9]
    CYGNUS	$(MAKEINFO) -I $(srcdir) $<
    
    .txi.dvi:
    	TEXINPUTS=@TEXINFODIR@:$$TEXINPUTS \
    ## Must set MAKEINFO like this so that version.texi will be found even
    ## if it is in srcdir.
    	  MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
    
    .txi:
    ## We want to force the .info file to be built in srcdir.  This is
    ## probably the simplest way.  However, at Cygnus .info files are
    ## always put into the build directory.  So at runtime we select which
    ## rule to use.
    ## Note that we also remove the possible output files before running
    ## makeinfo.  Otherwise, if the texinfo file shrinks (or if you start
    ## using --no-split), you'll be left with some dead info files lying
    ## around -- dead files which will end up in the distribution.
    NOTCYGNUS	@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
    NOTCYGNUS	cd $(srcdir) \
    NOTCYGNUS	  && $(MAKEINFO) `echo $< | sed 's,.*/,,'`
    CYGNUS	@rm -f $@ $@-[0-9] $@-[0-9][0-9]
    CYGNUS	$(MAKEINFO) -I $(srcdir) $<
    
    ## The way to make PostScript, for those who want it.
    DVIPS = dvips
    .dvi.ps:
    	$(DVIPS) $< -o $@
    
    ## Look in both . and srcdir because the info pages might have been
    ## rebuilt in the build directory.  Can't cd to srcdir; that might
    ## break a possible install-sh reference.
    ## Funny name due to --cygnus influence; we want to reserve
    ## `install-info' for the user.
    install-info-am: $(INFO_DEPS)
    	@$(NORMAL_INSTALL)
    	$(mkinstalldirs) $(DESTDIR)$(infodir)
    	@list='$(INFO_DEPS)'; \
    	for file in $$list; do \
    CYGNUS	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
    NOTCYGNUS	  d=$(srcdir); \
    ## We use these strange circumlocutions because we want the "ifile" to
    ## be relative, for the install.
    	  for ifile in `CDPATH=: && cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
    	    if test -f $$d/$$ifile; then \
    	      echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \
    	      $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \
    	    else : ; fi; \
    	  done; \
    	done
    	@$(POST_INSTALL)
    ## Only run this code if install-info actually exists, and it is not
    ## the Debian install-info.  FIXME: once Debian install-info goes
    ## away, we can remove this hack.
    	@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
    	  list='$(INFO_DEPS)'; \
    	  for file in $$list; do \
    ## Run `:' after install-info in case install-info fails.  We really
    ## don't care about failures here, because they can be spurious.  For
    ## instance if you don't have a dir file, install-info will fail.  I
    ## think instead it should create a new dir file for you.  This bug
    ## causes the `make distcheck' target to fail reliably.
    	    echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\
    ## Use `|| :' here because Sun make passes -e to sh; if install-info
    ## fails then we'd fail if we used `;'.
    	    install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\
    	  done; \
    	else : ; fi
    
    uninstall-info:
    	$(PRE_UNINSTALL)
    ## Run two loops here so that we can handle PRE_UNINSTALL and
    ## NORMAL_UNINSTALL correctly.
    	@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
    	  list='$(INFO_DEPS)'; \
    	  for file in $$list; do \
    ## install-info needs the actual info file.  We use the installed one,
    ## rather than relying on one still being in srcdir or builddir.
    	    echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file"; \
    	    install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$file; \
    	  done; \
    	else :; fi
    	@$(NORMAL_UNINSTALL)
    	@list='$(INFO_DEPS)'; \
    	for file in $$list; do \
    	  (if cd $(DESTDIR)$(infodir); then \
    	     echo " rm -f $$file $$file-[0-9] $$file-[0-9][0-9])"; \
    	     rm -f $$file $$file-[0-9] $$file-[0-9][0-9]; \
    	   else :; fi); \
    	done
    
    dist-info: $(INFO_DEPS)
    	list='$(INFO_DEPS)'; \
    	for base in $$list; do \
    ## In Cygnus mode, allow info file to be in source or build dir.  In
    ## other modes, allow only source dir.
    NOTCYGNUS	  d=$(srcdir); \
    CYGNUS	  if test -f $$base; then d=.; else d=$(srcdir); fi; \
    	  for file in `CDPATH=: && cd $$d && eval echo $$base*`; do \
    	    test -f $(distdir)/$$file \
    	    || cp -p $$d/$$file $(distdir)/$$file; \
    	  done; \
    	done
    
    .PHONY: install-info-am uninstall-info
    
    
    ## How to clean.  The funny name is due to --cygnus influence; in
    ## Cygnus mode, `clean-info' is a target that users can use.
    
    .PHONY: mostlyclean-aminfo
    mostlyclean-am: mostlyclean-aminfo
    mostlyclean-aminfo:
    @TEXICLEAN@
    
    .PHONY: maintainer-clean-aminfo
    maintainer-clean-am: maintainer-clean-aminfo
    maintainer-clean-aminfo:
    ## Eww.  But how else can we find all the output files from makeinfo?
    NOTCYGNUS	cd $(srcdir) && \
    	for i in $(INFO_DEPS); do \
    	  rm -f $$i; \
    	  if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
    	    rm -f $$i-[0-9]*; \
    	  fi; \
    	done
    
    CYGNUS.PHONY: clean-info
    CYGNUSclean-info: mostlyclean-aminfo