From ebcfd55daab302bf41554266a7a0d67fb349ae2f Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 17 May 1996 15:18:16 +0000 Subject: [PATCH] Tags fixups --- ChangeLog | 15 +++++++++++++++ Makefile.am | 1 + Makefile.in | 28 +++++++++++++++++----------- TODO | 26 ++++++++++++++++++++++++-- automake.in | 1 + lib/am/Makefile.am | 1 + lib/am/tags.am | 21 +++++++++++++-------- remake.am | 2 +- tags-subd.am | 2 +- tags.am | 21 +++++++++++++-------- 10 files changed, 87 insertions(+), 31 deletions(-) diff --git a/ChangeLog b/ChangeLog index aa4a1d8c..8fb63706 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,20 @@ +Fri May 17 09:02:02 1996 Tom Tromey + + * Makefile.am (TAGS_DEPENDENCIES): New macro. + + * tags.am (tags-recursive): New target. + (TAGS): Depend on it. + + * automake.in (handle_tags): Put tags-recursive on @phony. + + * tags-subd.am (TAGS): Depend on HEADERS, SOURCES, + TAGS_DEPENDENCIES. + * tags.am (TAGS): Depend on HEADERS, SOURCES, TAGS_DEPENDENCIES. + Thu May 16 09:21:48 1996 Tom Tromey + * remake.am (configure): Depend on $(CONFIGURE_DEPENDENCIES). + * automake.in (scan_configure): Look for install-sh and mkinstalldirs here. (initialize_global_constants): Moved mdate-sh from diff --git a/Makefile.am b/Makefile.am index 32a3e3cb..b89d3162 100644 --- a/Makefile.am +++ b/Makefile.am @@ -33,6 +33,7 @@ CLEANFILES = automake # The following requires a fixed version of the Emacs 19.30 etags. ETAGS_ARGS = automake.in --lang=none \ --regex='/^@node[ \t]+\([^,]+\)/\1/' automake.texi +TAGS_DEPENDENCIES = automake.in automake.texi ## `test -x' is not portable. So we use Perl instead. If Perl ## doesn't exist, then this test is meaningless anyway. diff --git a/Makefile.in b/Makefile.in index 69183617..10286919 100644 --- a/Makefile.in +++ b/Makefile.in @@ -70,6 +70,7 @@ CLEANFILES = automake # The following requires a fixed version of the Emacs 19.30 etags. ETAGS_ARGS = automake.in --lang=none \ --regex='/^@node[ \t]+\([^,]+\)/\1/' automake.texi +TAGS_DEPENDENCIES = automake.in automake.texi ACLOCAL = aclocal.m4 mkinstalldirs = $(top_srcdir)/mkinstalldirs SCRIPTS = $(bin_SCRIPTS) $(pkgdata_SCRIPTS) @@ -111,7 +112,7 @@ Makefile: Makefile.in config.status CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status config.status: configure ./config.status --recheck -$(srcdir)/configure: configure.in $(ACLOCAL) +$(srcdir)/configure: configure.in $(ACLOCAL) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && autoconf automake: $(top_builddir)/config.status automake.in cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status @@ -244,15 +245,20 @@ maintainer-clean-recursive: tags: TAGS -TAGS: - tags=; \ - here=`pwd`; \ - for subdir in $(SUBDIRS); do \ - (cd $$subdir && $(MAKE) TAGS); \ - test -f $$subdir/TAGS && { \ +tags-recursive: + list="$(SUBDIRS)"; for subdir in $$list; do \ + (cd $$subdir && $(MAKE) tags); \ + done + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(CONFIG_HEADER) \ + $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + for subdir in $(SUBDIRS); do \ + test -f $$subdir/TAGS && { \ tags="$$tags -i $$here/$$subdir/TAGS"; \ - } \ - done; \ + } \ + done; \ test -z "$(ETAGS_ARGS)$(CONFIG_HEADER)$(SOURCES)$(HEADERS)$$tags" \ || etags $(ETAGS_ARGS) $$tags $(CONFIG_HEADER) $(SOURCES) $(HEADERS) @@ -389,8 +395,8 @@ install-data-recursive uninstall-data-recursive install-exec-recursive \ uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ all-recursive check-recursive installcheck-recursive info-recursive \ dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags mostlyclean-tags distclean-tags \ -clean-tags maintainer-clean-tags distdir info dvi check \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info dvi check \ installcheck-local installcheck all-am install-exec-am install-data-am \ uninstall-am install-exec install-data install uninstall all \ installdirs mostlyclean-generic distclean-generic clean-generic \ diff --git a/TODO b/TODO index 186e66cd..52f2c068 100644 --- a/TODO +++ b/TODO @@ -1,7 +1,14 @@ Priorities for release: -* automake can't run on itself!!! write test for this one + +* mkinstalldirs, install-sh don't appear in dist! + ref autosystem. make test case here. + (put extra rule at end of Makefile to print EXTRA_DIST?) + +* use Henrik's dist-zip rule * ansi2knr.c needs STDC_HEADERS and HAVE_STRING_H + [ I've asked François about this. The change should probably + be in the fp_C_PROTOTYPES macro ] * Add way to tell automake that `configure' has unknown dependencies @@ -14,6 +21,15 @@ Consider: "cvs" option adds some cvs-specific rules? Consider adding an option that statically rewrites @MAINT@ to "#M#". + +Automake and Cygnus: info target separate from all. Always make +install-info target. install-info separate from install. + +Automake: should EXTRA_DIST files be statically findable? + +Automake: devo/inet/Makefile.am has "all-local". "install" depends on +"all", but the local installs get run before the stuff in "all". Gross. + Right now, targets generated internally (eg "install") are not overridable by user code. This should probably be possible, even though it isn't very important. This could be done by generating all @@ -190,7 +206,7 @@ some support for this. Here are some of the issues: * Should handle AC_CONFIG_SUBDIRS, ie must handle configure.in in subdirs * Must handle SUBDIRS in subdir Makefile.am's -These can both be handled via dist-local: +These can both be handled via dist-hook: . Consider supporting guile-style PLUGIN directories automatically? . Consider allowing eg "foo/bar" to appear in EXTRA_DIST, and generating code to make directory foo at dist time @@ -237,6 +253,12 @@ need xref to libtool in docs document how to use Automake with CVS. Idea from Mark Galassi. Also include Greg Woods' more sophisticated "cvs-dist" target. +document that there is no uninstall-{exec,data} + +document rebuilding configure. CONFIGURE_DEPENDENCIES + +document TAGS_DEPENDENCIES + ================================================================ Libraries: diff --git a/automake.in b/automake.in index 9b91eb1f..994efd51 100755 --- a/automake.in +++ b/automake.in @@ -1061,6 +1061,7 @@ sub handle_tags if (&variable_defined ('SUBDIRS')) { $output_rules .= &file_contents ('tags'); + push (@phony, 'tags-recursive'); $tagging = 1; } elsif ($dir_holds_sources || &variable_defined ('ETAGS_ARGS')) diff --git a/lib/am/Makefile.am b/lib/am/Makefile.am index 32a3e3cb..b89d3162 100644 --- a/lib/am/Makefile.am +++ b/lib/am/Makefile.am @@ -33,6 +33,7 @@ CLEANFILES = automake # The following requires a fixed version of the Emacs 19.30 etags. ETAGS_ARGS = automake.in --lang=none \ --regex='/^@node[ \t]+\([^,]+\)/\1/' automake.texi +TAGS_DEPENDENCIES = automake.in automake.texi ## `test -x' is not portable. So we use Perl instead. If Perl ## doesn't exist, then this test is meaningless anyway. diff --git a/lib/am/tags.am b/lib/am/tags.am index f08e724e..68e2bd5d 100644 --- a/lib/am/tags.am +++ b/lib/am/tags.am @@ -17,16 +17,21 @@ ## 02111-1307, USA. tags: TAGS -TAGS: - tags=; \ - here=`pwd`; \ - for subdir in $(SUBDIRS); do \ +tags-recursive: + list="$(SUBDIRS)"; for subdir in $$list; do \ ## Never fail here if a subdir fails. - (cd $$subdir && $(MAKE) TAGS); \ - test -f $$subdir/TAGS && { \ + (cd $$subdir && $(MAKE) tags); \ + done + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(CONFIG_HEADER) \ + $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + for subdir in $(SUBDIRS); do \ + test -f $$subdir/TAGS && { \ tags="$$tags -i $$here/$$subdir/TAGS"; \ - } \ - done; \ + } \ + done; \ ## Make sure we have something to run etags on. test -z "$(ETAGS_ARGS)$(CONFIG_HEADER)$(SOURCES)$(HEADERS)$$tags" \ || etags $(ETAGS_ARGS) $$tags $(CONFIG_HEADER) $(SOURCES) $(HEADERS) diff --git a/remake.am b/remake.am index 304f11f9..46cd7412 100644 --- a/remake.am +++ b/remake.am @@ -24,5 +24,5 @@ Makefile: Makefile.in config.status CONFIG_FILES=$@ CONFIG_HEADERS= ./config.status config.status: configure ./config.status --recheck -$(srcdir)/configure: @MAINT@configure.in $(ACLOCAL) +$(srcdir)/configure: @MAINT@configure.in $(ACLOCAL) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && autoconf diff --git a/tags-subd.am b/tags-subd.am index 22f39ee2..c0338f79 100644 --- a/tags-subd.am +++ b/tags-subd.am @@ -20,5 +20,5 @@ ID: $(HEADERS) $(SOURCES) tags: TAGS -TAGS: +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS diff --git a/tags.am b/tags.am index f08e724e..68e2bd5d 100644 --- a/tags.am +++ b/tags.am @@ -17,16 +17,21 @@ ## 02111-1307, USA. tags: TAGS -TAGS: - tags=; \ - here=`pwd`; \ - for subdir in $(SUBDIRS); do \ +tags-recursive: + list="$(SUBDIRS)"; for subdir in $$list; do \ ## Never fail here if a subdir fails. - (cd $$subdir && $(MAKE) TAGS); \ - test -f $$subdir/TAGS && { \ + (cd $$subdir && $(MAKE) tags); \ + done + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(CONFIG_HEADER) \ + $(TAGS_DEPENDENCIES) + tags=; \ + here=`pwd`; \ + for subdir in $(SUBDIRS); do \ + test -f $$subdir/TAGS && { \ tags="$$tags -i $$here/$$subdir/TAGS"; \ - } \ - done; \ + } \ + done; \ ## Make sure we have something to run etags on. test -z "$(ETAGS_ARGS)$(CONFIG_HEADER)$(SOURCES)$(HEADERS)$$tags" \ || etags $(ETAGS_ARGS) $$tags $(CONFIG_HEADER) $(SOURCES) $(HEADERS) -- 2.43.5