Updated make dist / make TAGS patch

Zack Weinberg zack@rabi.phys.columbia.edu
Sat Jul 4 07:03:00 GMT 1998


This patch is an overhaul of make dist and make TAGS.  The separate
makefiles for those operations have been removed, the code
streamlined, and various bugs stomped.  Highlights:

- Massive speed improvement.
- Generated files that go into the distribution now get regenerated
  when you do `make dist' (except libc.pot)
- Automatically handles CVS tags and generates diffs.
- Can generate snapshots too.
- TAGS for the manual are now useful.
- Makes major improvements to the master makefiles possible.

Changes from previous version:

- Updated to latest CVS.
- tarprefix.c has been removed; I found a better way.
- Code simplifications, bug fixes.

Caveats:

- TAGS may be ordered slightly differently.
- I have not tested interactions with CVS.
- You *must* put sysdep files not mentioned in non-sysdep Makefiles in
  a Dist file if you want them to get distributed at all.
- Any code that relied on the format of a distinfo file is broken.  I
  fixed all such places in the common tree except the rpm subdir.
- You can only put one file on a line in a Dist file.

You must have installed all three of my unmerged patches (SCM_CREDS,
Makeconfig cleanup, and Versions fix) for this patch to apply
correctly.  (SCM_CREDS is technically separate, but patch may
complain about sysdeps/.../linux/Dist and Makefile if you don't have
it.)

zw

1998-07-04 09:31 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>

	* Makefile: Strip dead code.  Add iterator rules for
          subdir_distinfo and subdir_TAGS. Add rules to create
          distribution tarfiles.  Add rule to make README from
          template; adjust rules for INSTALL, NOTES, COPYING.LIB to
          new form.  Add rule to make libc.pot.
	  (src-generated): New variable.
          (distribute): Add configparms, scripts/gen-distinfo,
          scripts/fixpatch, scripts/gen-sysd-distlist.  Add
	  README-alpha if $(release) = experimental.  Drop COPYING,
	  Make-dist, MakeTAGS.
	  (cvs-commit): New macro.
	  (format-me): Simplified.
	* Makerules: Delete old rules to make distinfo and TAGS.  Call
          scripts/gen-distinfo to make distinfo.  Call $(ETAGS)
          directly to make TAGS.

	* scripts/gen-distinfo: New file.
	* scripts/fixpatch: New file.
	* scripts/gen-sysd-distlist: New file.
	* Make-dist: Removed.
	* MakeTAGS: Removed.

	* manual/Makefile: Overhaul generation of chapters list.
          Clean up.  Change dist target to match new scheme.  Change
          TAGS target to generate a useful tags table.
	* manual/chapters.awk: New file.

	* db2/Makefile (distribute): Add mutex/sco.cc.
	* mach/Machrules: Don't create .udeps files if no_deps is set.
	* sysdeps/unix/Makefile: Don't create sysd-syscalls or
	  s-proto.d if avoid-generated is set.
	* sysdeps/unix/sysv/linux/Makefile [subdir=posix]: Set
	  sysdep_headers not headers, and do it with +=.

	* sysdeps/gnu/Makefile (dist): New target, regenerates
          errlist.c.
	* sysdeps/sparc/sparc32/Makefile (dist): New target,
          regenerates divrem files.

	* sysdeps/alpha/Dist: List only one file per line.
	* sysdeps/generic/Dist: Likewise.
	* sysdeps/m68k/fpu/switch/Dist: Likewise.
	* sysdeps/sparc/sparc32/Dist: Likewise.	
	* sysdeps/unix/Dist: Likewise.
	* sysdeps/unix/sysv/irix4/Dist: Likewise.

	* sysdeps/unix/sysv/linux/Dist: Add getresuid.c, getresgid.c.
	* sysdeps/generic/Dist: Add endutxent.c, getutxent.c,
	  getutxid.c, getutxline.c, pututxline.c, setutxent.c,
	  updwtmpx.c, utmpxname.c.
	* sysdeps/unix/sysv/linux/sparc/sparc32/Dist: Remove
	  __sigtrampoline.S. 
	* sysdeps/mach/hurd/i386/Dist: Add static-start.S. (New file)


============================================================
Index: Makefile
--- Makefile	1998/07/02 21:54:13	1.169
+++ Makefile	1998/07/04 01:43:41
@@ -53,18 +53,13 @@
 # These are the targets that are made by making them in each subdirectory.
 +subdir_targets	:= subdir_lib objects objs others subdir_mostlyclean	\
 		   subdir_clean subdir_distclean subdir_realclean	\
-		   tests subdir_lint.out				\
-		   subdir_distinfo					\
-		   subdir_echo-headers subdir_echo-distinfo		\
-		   subdir_install					\
+		   tests subdir_lint.out subdir_install			\
 		   $(addprefix install-, no-libc.a bin lib data headers others)
 
 headers := errno.h sys/errno.h bits/errno.h limits.h values.h	\
 	   features.h gnu-versions.h bits/libc-lock.h bits/xopen_lim.h	\
 	   gnu/libc-version.h
 
-echo-headers: subdir_echo-headers
-
 # The headers are in the include directory.
 subdir-dirs = include
 vpath %.h $(subdir-dirs)
@@ -77,6 +72,10 @@
 install-others += $(inst_includedir)/gnu/lib-names.h
 endif
 
+# These are generated already when distributed.  Rules are far below.
+# The list is needed in Makerules, so it has to be up here.
+src-generated := README INSTALL NOTES COPYING.LIB FAQ
+
 ifeq ($(versioning),yes)
 lib-noranlib: lib-mapfiles
 endif
@@ -181,7 +180,21 @@
 $(all-subdirs-targets):
 	$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
 
+# subdir_distinfo is *almost* the same.  It needs to iterate all the dirs,
+# even the ones that aren't configured, and it needs to do it with no_deps
+# and avoid-generated set.
+subdir_distinfo: $(all-subdirs:%=%/distinfo)
+$(all-subdirs:%=%/distinfo):
+	$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F) avoid-generated=t no_deps=t
+
+# Likewise for subdir_TAGS.
+subdir_TAGS: $(all-subdirs:%=%/TAGS)
+$(all-subdirs:%=%/TAGS):
+	$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F) avoid-generated=t no_deps=t
+
 .PHONY: $(+subdir_targets) $(all-subdirs-targets)
+.PHONY: $(all-subdirs:%=%/distinfo) $(all-subdirs:%=%/TAGS)
+
 
 # Targets to clean things up to various degrees.
 
@@ -233,56 +246,137 @@
 .PHONY: echo_subdirs
 echo_subdirs:;@echo '$(subdirs)'
 
-.PHONY: echo-distinfo parent_echo-distinfo
-echo-distinfo: parent_echo-distinfo subdir_echo-distinfo
-parent_echo-distinfo:
-	@echo $(addprefix +header+,$(headers)) \
-	      $(addprefix +nodist+,$(generated))
-
 
 # Make the distribution tarfile.
 
+snapshot = $(shell date +%y%m%d)
+dist = $(version)
+last-snapshot = $(shell cat .last-snapshot)
+last-dist = $(shell cat .last-dist)
+
+XX = ud # FIXME: is this correct for the XX in libc-XX-YYMMDD tags?
+
++tarball  = glibc-$($@)
++diff	  = glibc-$(last-$@)-$($@)
++tag	  = libc-$(XX)-$(subst .,_,$($@))
++last-tag = libc-$(XX)-$(subst .,_,$(last-$@))
+
+ifeq ($(have-tar-nameprefix),yes)
+tar-cmd = $(TAR) -c -T $< --name-prefix $(+tarball)/ | gzip > $@.T
+else
+define tar-cmd
+$(LN_S) . $(+tarball)
+sed 's!^!$(+tarball)/!' $< | $(TAR) -c -T - | gzip > $@.T
+rm -f $(+tarball)
+endef
+endif
+
+.PHONY: snapshot release dist distlist
+release: dist
+distlist: $(common-objpfx)distlist
+
+snapshot dist: $(common-objpfx)distlist
+	$(tar-cmd)
+	mv -f $@.T $(+tarball).tar.gz
+ifeq ($(with-cvs),yes)
+	cvs $(CVSOPTS) tag $(+tag)
+	cvs $(CVSOPTS) diff -u -r$(+last-tag) |./scripts/fixpatch |gzip >$@.D
+	mv -f $@.D $(+diff).diff.gz
+endif
+	echo $($@) > .last-$@
+
+$(common-objpfx)distlist: $(objpfx)distinfo $(objpfx)sysd-distlist \
+			  subdir_distinfo
+	sort -u $(objpfx)distinfo $(objpfx)sysd-distlist \
+		$(all-subdirs:%=$(common-objpfx)%/distinfo) > $@.T
+	mv -f $@.T $@
+
+# No meaningful deplist is possible for these targets.
+.PHONY: $(objpfx)sysd-distlist $(objpfx)sysd-dist.mk
+$(objpfx)sysd-distlist: $(objpfx)sysd-dist.mk
+	$(MAKE) -f $< dist no_deps=t avoid-generated=t
+	./scripts/gen-sysd-distlist > $@.T
+	mv -f $@.T $@
+
+# Like sysd-Makefile except that it includes all the sysdep Makefiles.
+$(objpfx)sysd-dist.mk: $(wildcard $(all-sysd-dirs:%=%/Makefile))
+	(echo 'dist:'; echo; echo 'include Makeconfig'; \
+	for M in $^; do echo "include $$M"; done) > $@T
+	mv -f $@T $@
+
 distribute  :=	README README.libm INSTALL FAQ FAQ.in NOTES NEWS BUGS	\
-		PROJECTS COPYING.LIB COPYING ChangeLog ChangeLog.[0-9]	\
-		Makefile Makeconfig Makerules Rules Make-dist MakeTAGS	\
-		extra-lib.mk o-iterator.mk configure configure.in	\
-		aclocal.m4 config.h.in config.make.in config-name.in	\
-		Makefile.in sysdep.h set-hooks.h libc-symbols.h		\
-		version.h shlib-versions rpm/Makefile rpm/template	\
-		rpm/rpmrc glibcbug.in abi-tags stub-tag.h		\
-		test-skeleton.c include/des.h Versions.def versions.awk \
+		PROJECTS COPYING.LIB ChangeLog ChangeLog.[0-9]		\
+		Makefile Makeconfig Makerules Rules			\
+		extra-lib.mk o-iterator.mk configure configparms	\
+		configure.in aclocal.m4 config.h.in config.make.in	\
+		config-name.in Makefile.in sysdep.h set-hooks.h		\
+		libc-symbols.h version.h shlib-versions rpm/Makefile	\
+		rpm/template rpm/rpmrc glibcbug.in abi-tags stub-tag.h	\
+		test-skeleton.c include/des.h Versions.def versions.awk	\
 		$(addprefix scripts/,					\
 			    rellns-sh config.sub config.guess		\
 			    mkinstalldirs move-if-change install-sh	\
-			    test-installation.pl gen-FAQ.pl)
+			    test-installation.pl gen-FAQ.pl subdir-dist \
+			    fixpatch gen-distinfo gen-sysd-distlist)
+ifeq ($(release), experimental)
+distribute += README-alpha
+endif
 
 distribute := $(strip $(distribute))
 generated := $(generated) stubs.h
 
-README: README.template version.h ; # Make-dist should update README.
+ifeq ($(with-cvs),yes)
+define cvs-commit
+chmod 444 $@
+test ! -d CVS || cvs $(CVSOPTS) commit -m'Remade for $(release)-$(version)' $@
+endef
+else
+define cvs-commit
+chmod 444 $@
+endef
+endif
 
 define format-me
-@rm -f $@
-makeinfo --no-validate --no-warn --no-headers $< -o $@
--chmod a-w $@
+makeinfo --no-validate --no-warn --no-headers $< -o $@.new
+mv -f $@.new $@
 endef
-INSTALL: manual/install.texi; $(format-me)
-NOTES: manual/creature.texi; $(format-me)
-manual/dir-add.texi manual/dir-add.info: FORCE
-	$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
+
+README: README.template version.h
+	-rm -f $@
+	sed -e 's/RELEASE/$(release)/' -e 's/VERSION/$(version)/' < $< > $@
+	$(cvs-commit)
+INSTALL: manual/install.texi; $(format-me); $(cvs-commit)
+NOTES: manual/creature.texi; $(format-me); $(cvs-commit)
+COPYING.LIB: manual/lgpl.texinfo; $(format-me); $(cvs-commit)
+
 FAQ: scripts/gen-FAQ.pl FAQ.in
-	$(PERL) $^ > $@.new && rm -f $@ && mv $@.new $@ && chmod a-w $@
-ifeq ($(with-cvs),yes)
-	test ! -d CVS || cvs $(CVSOPTS) commit -m'Regenerated:  $(PERL) $^' $@
-endif
-FORCE:
+	$(PERL) $^ > $@.new && rm -f $@ && mv $@.new $@
+	$(cvs-commit)
 
-rpm/%: subdir_distinfo
-	$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
+#rpm/%: subdir_distinfo
+#	$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
 
 iconvdata/%:
 	$(MAKE) $(PARALLELMFLAGS) -C $(@D) $(@F)
 
+# The message translation template.
+.PHONY: libc.pot
+libc.pot: po/libc.pot
+
+# You need a recent gettext, and a date that knows %z.
+# Arguably this should be in $(src-generated), except it needs
+# the entire distlist file, and distributing out-of-date versions
+# isn't the end of the world.
+po/libc.pot: $(common-objpfx)distlist po/header.pot
+	@rm -f $@.new
+	sed -e 's/VERSION/$(version)/' \
+	    -e "s/DATE/`date +'%Y-%m-%d %H:%M%z'`/" \
+	    po/header.pot > $@.new
+	$(XGETTEXT) --keyword=_ --keyword=N_ --add-comments=TRANS \
+		--sort-output --omit-header -n -d - \
+			>> $@.new `grep '\\.[ch]$$' $<`
+	mv -f $@.new $@
+
 # This is a special goal for people making binary distributions.  Normally
 # everybody uses the DES based crypt library but for the distribution we
 # need the only-MD5 based one as well.
============================================================
Index: Makerules
--- Makerules	1998/07/02 21:55:11	1.300
+++ Makerules	1998/07/04 01:43:41
@@ -832,15 +832,6 @@
 .PHONY: check
 check: tests
 
-.PHONY: TAGS
-TAGS: $(objpfx)distinfo $(..)MakeTAGS
-	$(MAKE) $(addprefix -f ,$^) $@
-
-$(..)po/%.pot: $(objpfx)distinfo $(..)MakeTAGS FORCE
-	$(MAKE) $(addprefix -f ,$(filter-out FORCE,$^)) $@
-FORCE:
-
-
 .PHONY: echo-headers
 echo-headers:
 	@echo $(headers)
@@ -900,40 +891,30 @@
 	     /dev/null) > $@T
 	mv -f $@T $@
 
-# Make the distribution tar file.
+.PHONY: distinfo
+distinfo: $(objpfx)distinfo
 
-.PHONY: dist
-dist: $(objpfx)distinfo $(..)Make-dist
-	$(MAKE) -f $< -f $(word 2,$^) $(Make-dist-args)
-
-# Avoid depending on source files found in sysdeps dirs,
-# because the references affect implicit rule selection.
-dist: $(filter-out %.c %.S %.s,$(distribute))
-
-# We used to simply export all these variables, but that frequently made the
-# environment get too large.  Instead, we write all the information into
-# a generated makefile fragment `distinfo', and then include it with -f in
-# the sub-make that makes the distribution (above).
-$(objpfx)distinfo: Makefile $(..)Makerules \
-		   $(wildcard $(foreach dir,$(sysdirs),$(dir)/Makefile))
+$(objpfx)distinfo: Makefile $(src-generated)
 	$(make-target-directory)
-	$(distinfo-vars)
+	$(..)scripts/gen-distinfo '$(subdir)' '$(subdir-dirs)'		  \
+		'$(sort $(routines:=.c) $(aux:=.c) $(others:=.c)	  \
+		   $(foreach l, $(extra-libs), $($l-routines:=.c) $l.map) \
+		   $(distribute) $(headers) $(test-srcs:=.c) $(tests:=.c) \
+		   $(tests-static:=.c) $(tests:=.input) $(tests:=.args))' \
+		> $@.new
 	mv -f $@.new $@
-.PHONY: subdir_distinfo
-subdir_distinfo: $(objpfx)distinfo
 
-define distinfo-vars
-rm -f $@.new
-echo > $@.new 'subdir := $(subdir)'
-$(foreach var,subdir-dirs sources elided-routines sysdep_routines \
-	      headers sysdep_headers distribute dont_distribute generated \
-	      others tests test-srcs extra-libs $(extra-libs:%=%-routines) \
-	      tests-static $(extra-libs:%=%-map) versioned \
-	      $(addprefix install-,lib lib.so data bin sbin others),
-echo >> $@.new '$(subdir)-$(var) := $($(var))'
-echo >> $@.new '$(var) = $$($(subdir)-$(var))')
-endef
-
+# Tag tables.
+tag-these = $(sort $(shell grep '\.c$$' $<)) $(sort $(shell grep '\.h$$' $<))
+ifdef subdir
+TAGS: $(objpfx)distinfo $(common-objpfx)empty.c
+	cd $(..) && $(ETAGS) -o $(subdir)/$@ $(tag-these) $(common-objpfx)empty.c
+else
+TAGS: $(objpfx)distinfo subdir_TAGS $(common-objpfx)empty.c
+	$(ETAGS) -o $@ $(tag-these) $(common-objpfx)empty.c $(all-subdirs:%=-i %/TAGS)
+endif
+
+# zw: is this still used?
 ifneq (,$(strip $(gpl2lgpl)))
 ifneq (,$(wildcard $(..)gpl2lgpl.sed))
 # Snarf from the master source and frob the copying notice.
============================================================
Index: db2/Makefile
--- db2/Makefile	1998/06/09 14:57:35	1.14
+++ db2/Makefile	1998/07/04 01:43:41
@@ -47,7 +47,7 @@
 				  os_func.h) \
 	     $(addprefix mutex/,x86.gcc uts4.cc.s sparc.gcc parisc.hp \
 				parisc.gcc alpha.gcc alpha.dec README \
-				68020.gcc tsl_parisc.s)
+				68020.gcc tsl_parisc.s sco.cc)
 
 vpath %.c $(subdir-dirs)
 
============================================================
Index: mach/Machrules
--- mach/Machrules	1998/06/22 17:04:23	1.64
+++ mach/Machrules	1998/07/04 01:43:41
@@ -104,6 +104,7 @@
 echo '#include <$(firstword $($*.defs) $*.defs)>'
 endef
 
+ifndef no_deps
 # Not an implicit rule so the stamps are never removed as intermediates!
 $(patsubst %,$(objpfx)%.ustamp,$(user-interfaces)): $(objpfx)%.ustamp:
 	rm -f $@
@@ -128,6 +129,7 @@
 			  $(@:.udeps=_server.c) $(@:.udeps=_server.h):,' \
 	    $(sed-remove-objpfx) > $@.new
 	mv -f $@.new $@
+endif
 
 # Look for the server stub files where they will be written.
 vpath %_server.c $(addprefix $(objpfx),$(sort $(dir $(server-interfaces))))
============================================================
Index: manual/Makefile
--- manual/Makefile	1998/06/05 20:41:57	1.76
+++ manual/Makefile	1998/07/04 01:43:41
@@ -41,31 +41,12 @@
 info: libc.info dir-add.info
 endif
 
-# Set chapters and chapters-incl[12].
 -include chapters
-chapters: libc.texinfo
-	$(find-includes)
-ifdef chapters
-# @includes in chapter files
--include chapters-incl1
-chapters-incl1: $(chapters)
-	$(find-includes)
-chapters-incl1 := $(filter-out summary.texi,$(chapters-incl1))
-endif
-ifdef chapters-incl1
-# @includes in files included by chapter files, if any
--include chapters-incl2
-chapters-incl2: $(chapters-incl1)
-	$(find-includes)
-endif
-
-chapters-incl := $(chapters-incl1) $(chapters-incl2)
-
-define find-includes
-(echo '$(@F) :=' \\	;\
- $(AWK) '$$1 == "@include" { print $$2 " \\" }' $^) > $@.new
-mv -f $@.new $@
-endef
+chapters: libc.texinfo $(filter-out %.c.texi, $(chapters))
+	-$(AWK) -f chapters.awk $< > $@.new 2> /dev/null
+	mv -f $@.new $@
+chapters = $(filter-out %.c.texi, $(texis))
+examples = $(filter %.c.texi, $(texis))
 
 # scripts we use
 ifndef move-if-change
@@ -73,7 +54,7 @@
 endif
 mkinstalldirs = $(..)scripts/mkinstalldirs
 
-libc.dvi libc.info: $(chapters) summary.texi $(chapters-incl)
+libc.dvi libc.info: $(chapters) $(examples)
 libc.dvi: texinfo.tex
 
 %.info: %.texinfo
@@ -84,7 +65,7 @@
 
 # Generate the summary from the Texinfo source files for each chapter.
 summary.texi: stamp-summary ;
-stamp-summary: summary.awk $(chapters) $(chapters-incl)
+stamp-summary: summary.awk $(filter-out summary.texi, $(chapters))
 	$(AWK) -f $^ \
 	| sort -df +1 -2 | tr '\014' '\012' > summary-tmp
 	$(move-if-change) summary-tmp summary.texi
@@ -110,18 +91,14 @@
 	mv -f $@.new $@
 
 
-minimal-dist = summary.awk libc.texinfo $(chapters)			\
-	       $(patsubst %.c.texi,examples/%.c,			\
-			  $(filter-out summary.texi,$(chapters-incl)))
+minimal-dist  = summary.awk libc.texinfo $(examples:%.c.texi=examples/%.c) \
+		$(filter-out summary.texi, $(chapters))
 doc-only-dist = Makefile COPYING.LIB
-distribute = $(minimal-dist)	       					\
-	     $(patsubst examples/%.c,%.c.texi,$(filter examples/%.c,	\
-			$(minimal-dist)))				\
-	     libc.info* libc.?? libc.??s texinfo.tex summary.texi	\
-	     stamp-summary chapters chapters-incl1 chapters-incl2	\
+
+distribute = $(minimal-dist) $(examples) libc.info* texinfo.tex 	\
+	     summary.texi stamp-summary chapters chapters.awk		\
 	     xtract-typefun.awk dir-add.texinfo dir-add.info dir	\
 	     stdio-fp.c
-export distribute := $(distribute)
 
 tar-it = tar chovf $@ $^
 
@@ -149,7 +126,7 @@
 
 .PHONY: mostlyclean distclean realclean clean
 mostlyclean:
-	-rm -f libc.dvi libc.info* dir-add.info stubs
+	-rm -f libc.dvi libc.info* dir-add.info stubs TAGS
 	-rm -f $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o)
 clean: mostlyclean
 distclean: clean
@@ -157,7 +134,7 @@
 realclean: distclean
 	-rm -f chapters chapters-incl* summary.texi stamp-summary *.c.texi
 	-rm -f $(foreach index,$(indices),libc.$(index) libc.$(index)s)
-	-rm -f libc.log libc.aux libc.toc dir-add.texi
+	-rm -f libc.log libc.aux libc.toc dir-add.texinfo
 
 .PHONY: install subdir_install installdirs install-data
 install-data subdir_install: install
@@ -182,19 +159,25 @@
 installdirs:
 	$(mkinstalldirs) $(inst_infodir)
 
-.PHONY: dist
-dist: # glibc-doc-$(edition).tar.gz
-
-ifneq (,$(wildcard ../Make-dist))
-dist: ../Make-dist
-	$(MAKE) -f $< $(Make-dist-args)
-endif
+.PHONY: distinfo
+distinfo: $(objpfx)distinfo
+$(objpfx)distinfo: Makefile info
+	$(make-target-directory)
+	$(..)scripts/gen-distinfo manual '' '$(distribute)' > $@.new
+	mv -f $@.new $@
 
 ifndef ETAGS
 ETAGS = etags -T
 endif
-TAGS: $(minimal-dist)
-	$(ETAGS) -o $@ $^
+# This mess makes etags tag all @deftypefoo lines in the texi files.
+define tags-texi
+--language=none \
+--regex='/^@deftype\(fnx?\|vrx?\) +\([^ ]+\|{[^}]+}\) +\([^ ]+\|{[^}]+}\) +\([a-zA-Z0-9_]+\)/\4/' \
+--regex='/^@deftype\(funx?\|varx?\) +\([^ ]+\|{[^}]+}\) +\([a-zA-Z0-9_]+\)/\3/'
+endef
+
+TAGS: $(filter %.texi, $(minimal-dist))
+	$(ETAGS) -o $@ $(tags-texi) $^
 
 # The parent makefile sometimes invokes us with targets `subdir_REAL-TARGET'.
 subdir_%: % ;
@@ -218,7 +201,7 @@
 .PHONY: stubs
 stubs: $(objpfx)stubs
 endif
-$(objpfx)stubs ../po/manual.pot $(objpfx)stamp%:
+$(objpfx)stubs $(objpfx)stamp%:
 	$(make-target-directory)
 	touch $@
 
@@ -228,6 +211,10 @@
 $(addprefix $(mkinstalldirs) ,\
 	    $(filter-out $(wildcard $(@D:%/=%)),$(@D:%/=%)))
 endef
+
+# This is needed by the doc-dist.
+COPYING.LIB: lgpl.texinfo
+	$(MAKEINFO) --no-validate --no-headers --no-warn $< -o $@
 
 # The top-level glibc Makefile expects subdir_install to update the stubs file.
 subdir_install: stubs
============================================================
Index: sysdeps/alpha/Dist
--- sysdeps/alpha/Dist	1997/11/18 02:39:11	1.8
+++ sysdeps/alpha/Dist	1998/07/04 01:43:41
@@ -1,5 +1,8 @@
 divrem.h
-divl.S divq.S reml.S remq.S
+divl.S
+divq.S
+reml.S
+remq.S
 _mcount.S
 stxcpy.S
 stxncpy.S
============================================================
Index: sysdeps/generic/Dist
--- sysdeps/generic/Dist	1998/06/22 09:30:19	1.9
+++ sysdeps/generic/Dist	1998/07/04 01:43:41
@@ -1,6 +1,16 @@
-make_siglist.c signame.c signame.h
+make_siglist.c
+signame.c
+signame.h
 det_endian.c
 entry.h
 errno-loc.c
 getresgid.c
 getresuid.c
+endutxent.c
+getutxent.c
+getutxid.c
+getutxline.c
+pututxline.c
+setutxent.c
+updwtmpx.c
+utmpxname.c
============================================================
Index: sysdeps/gnu/Makefile
--- sysdeps/gnu/Makefile	1998/04/21 18:00:19	1.5
+++ sysdeps/gnu/Makefile	1998/07/04 01:43:41
@@ -29,6 +29,9 @@
 	test ! -d CVS || cvs commit -m'Regenerated from $^' $@
 endif
 
+# This file goes in the distribution.
+dist: $(..)sysdeps/gnu/errlist.c
+
 ifeq ($(subdir),login)
 sysdep_routines += setutxent getutxent endutxent getutxid getutxline \
                    pututxline utmpxname updwtmpx
============================================================
Index: sysdeps/m68k/fpu/switch/Dist
--- sysdeps/m68k/fpu/switch/Dist	1992/02/12 19:49:28	1.2
+++ sysdeps/m68k/fpu/switch/Dist	1998/07/04 01:43:41
@@ -1 +1,2 @@
-68881-sw.h switch.c
+68881-sw.h
+switch.c
============================================================
Index: sysdeps/sparc/sparc32/Dist
--- sysdeps/sparc/sparc32/Dist	1997/08/29 20:38:37	1.2
+++ sysdeps/sparc/sparc32/Dist	1998/07/04 01:43:41
@@ -1,3 +1,8 @@
-dotmul.S umul.S
-divrem.m4 sdiv.S udiv.S rem.S urem.S
+dotmul.S
+umul.S
+divrem.m4
+sdiv.S
+udiv.S
+rem.S
+urem.S
 alloca.S
============================================================
Index: sysdeps/sparc/sparc32/Makefile
--- sysdeps/sparc/sparc32/Makefile	1998/02/16 17:42:25	1.3
+++ sysdeps/sparc/sparc32/Makefile	1998/07/04 01:43:41
@@ -37,7 +37,10 @@
 +divrem-S-rem := true
 +divrem-S-udiv := false
 +divrem-S-urem := false
-$(divrem:%=$(sysdep_dir)/sparc/sparc32/%.S): $(sysdep_dir)/sparc/sparc32/divrem.m4
+
++divrem-targets := $(divrem:%=$(sysdep_dir)/sparc/sparc32/%.S)
+
+$(+divrem-targets): $(sysdep_dir)/sparc/sparc32/divrem.m4
 	(echo "define(NAME,\`.$(+divrem-NAME)')\
 	       define(OP,\`$(+divrem-OP-$(+divrem-NAME))')\
 	       define(S,\`$(+divrem-S-$(+divrem-NAME))')\
@@ -49,5 +52,7 @@
 ifeq ($(with-cvs),yes)
 	test ! -d CVS || cvs commit -m'Regenerated from $<' $@
 endif
+
+dist: $(+divrem-targets)
 
-sysdep-realclean := $(sysdep-realclean) $(divrem:%=sysdeps/sparc/sparc32/%.S)
+sysdep-realclean := $(sysdep-realclean) $(+divrem-targets)
============================================================
Index: sysdeps/unix/Dist
--- sysdeps/unix/Dist	1996/06/12 21:55:43	1.5
+++ sysdeps/unix/Dist	1998/07/04 01:43:41
@@ -1,5 +1,8 @@
-errnos-tmpl.c errnos.awk
-ioctls-tmpl.c ioctls.awk snarf-ioctls
+errnos-tmpl.c
+errnos.awk
+ioctls-tmpl.c
+ioctls.awk
+snarf-ioctls
 make_errlist.c
 mk-local_lim.c
 s-proto.S
============================================================
Index: sysdeps/unix/Makefile
--- sysdeps/unix/Makefile	1998/04/21 18:00:27	1.79
+++ sysdeps/unix/Makefile	1998/07/04 01:43:41
@@ -270,6 +270,7 @@
 
 endif
 
+ifndef avoid-generated
 ifndef inhibit-unix-syscalls
 
 # Sysdep dirs unix/... can contain a file syscalls.list,
@@ -311,4 +312,5 @@
 common-generated += s-proto.d
 postclean-generated += sysd-syscalls
 
+endif
 endif
============================================================
Index: sysdeps/unix/sysv/irix4/Dist
--- sysdeps/unix/sysv/irix4/Dist	1996/06/05 19:04:27	1.3
+++ sysdeps/unix/sysv/irix4/Dist	1998/07/04 01:43:41
@@ -1 +1,2 @@
-__handler.S sigtramp.c
+__handler.S
+sigtramp.c
============================================================
Index: sysdeps/unix/sysv/linux/Dist
--- sysdeps/unix/sysv/linux/Dist	1998/05/08 15:01:39	1.50
+++ sysdeps/unix/sysv/linux/Dist	1998/07/04 01:43:42
@@ -76,3 +76,5 @@
 getdents64.c
 __sendmsg.S
 __recvmsg.S
+getresuid.c
+getresgid.c
============================================================
Index: sysdeps/unix/sysv/linux/Makefile
--- sysdeps/unix/sysv/linux/Makefile	1998/06/30 12:18:07	1.79
+++ sysdeps/unix/sysv/linux/Makefile	1998/07/04 01:43:42
@@ -75,7 +75,7 @@
 endif
 
 ifeq ($(subdir),posix)
-headers := bits/pthreadtypes.h
+sysdep_headers += bits/pthreadtypes.h
 endif
 
 ifeq ($(subdir),inet)
============================================================
Index: sysdeps/unix/sysv/linux/sparc/sparc32/Dist
--- sysdeps/unix/sysv/linux/sparc/sparc32/Dist	1997/08/29 20:40:27	1.2
+++ sysdeps/unix/sysv/linux/sparc/sparc32/Dist	1998/07/04 01:43:42
@@ -1,4 +1,3 @@
-__sigtrampoline.S
 bits/mman.h
 clone.S
 pipe.S
============================================================
Index: manual/chapters.awk
--- manual/chapters.awk	Wed Dec 31 19:00:00 1969
+++ manual/chapters.awk	Sat May 30 15:54:11 1998	1.1
@@ -0,0 +1,17 @@
+BEGIN {
+    print "texis = \\"
+    input[0] = ARGV[1]
+    for (s = 0; s >= 0; s--)
+    {
+        while ((getline < input[s]) > 0)
+	{
+            if ($1 == "@include") 
+	    {
+	        input[++s] = $2
+		print $2 " \\"
+	    }
+        }
+        close(input[stackptr])
+    }
+    print ""
+}
============================================================
Index: scripts/gen-distinfo
--- scripts/gen-distinfo	Wed Dec 31 19:00:00 1969
+++ scripts/gen-distinfo	Fri Jul  3 21:00:59 1998	1.1
@@ -0,0 +1,79 @@
+#! /bin/sh
+
+# SYSDIRS=$(all-sysd-dirs) gen_distinfo $(subdir) $(subdir-dirs) $(distribute)
+# (see Makerules)
+
+[ -n "$1" ] && { subdir=$1/; dd=../; }
+
+subdir_dirs="$2"
+list="$3"
+
+csysd=
+hsysd=
+for f in $list
+do
+    case $f in
+    ../../*)
+	echo "gen-distinfo: ${subdir-TOP}: File outside source tree: $f" >&2
+	exit 1;;
+    ../*)
+	if [ -z "$dd" ]; then
+	    echo "gen-distinfo: TOP: File outside source tree: $f" >&2
+	    exit 1
+	fi
+	[ -f $f ] && echo "${f#../}";;
+    *.c)
+    # If it's in . or subdir_dirs it's not system dependent.
+    if [ -f $f ]; then
+	echo "$subdir$f"
+    else
+	found=
+	for d in $subdir_dirs
+	do
+	    if [ -f $d/$f ]; then
+		echo "$subdir$d/$f"
+		found=t
+	    fi
+	done
+	[ -n "$found" ] || csysd="$csysd $f"
+    fi;;
+    *.h|*.def)
+	if [ -f $f ]; then
+	    echo "$subdir$f"
+	else
+	    found=
+	    for d in $subdir_dirs
+	    do
+		if [ -f $d/$f ]; then
+		    echo "$l$subdir$d/$f"
+		    found=t
+		fi
+	    done
+	    [ -n "$found" ] || hsysd="$hsysd $f"
+	fi
+	[ -f ${dd}include/$f ] && echo "include/$f";;
+    *)
+	# Might be a glob.
+	for ff in $f; do
+	    [ -f $ff ] && echo "$subdir$ff"
+	done;;
+    esac
+done
+
+for s in $SYSDIRS; do
+    for f in $csysd; do
+	if   [ -f $s/$f ];        then echo "${s#$dd}/$f"
+	elif [ -f $s/${f%.c}.S ]; then echo "${s#$dd}/${f%.c}.S"
+	elif [ -f $s/${f%.c}.s ]; then echo "${s#$dd}/${f%.c}.s"
+	fi
+    done
+    for f in $hsysd; do
+	[ -f $s/$f ] && echo "${s#$dd}/$f"
+    done
+done
+
+# Always distribute subdir/Makefile and subdir/Versions.
+[ -f Makefile ] && echo ${subdir}Makefile
+[ -f Versions ] && echo ${subdir}Versions
+
+exit 0
============================================================
Index: scripts/fixpatch
--- scripts/fixpatch	Wed Dec 31 19:00:00 1969
+++ scripts/fixpatch	Mon Jun 15 12:31:57 1998	1.1
@@ -0,0 +1,18 @@
+#! /usr/bin/awk -f
+
+/^Ind/ {
+  small = full = $2;
+  sub(/.*\//, "", small);
+  print "============================================================";
+}
+    
+/^===/ || /^RCS/ || /^ret/ || /^dif/ { next }
+
+/^---/ || /^\+\+\+/ {
+  sub(/\.orig/, "");
+  sub(/\([[:alnum:][:space:]\/._-]+\)/, "");
+  if(small) { sub("[[:space:]]+" small, " " full) }
+  sub(full "[[:space:]]+", full "\t");
+}
+
+{ print }
============================================================
Index: scripts/gen-sysd-distlist
--- scripts/gen-sysd-distlist	Wed Dec 31 19:00:00 1969
+++ scripts/gen-sysd-distlist	Fri Jul  3 21:24:53 1998	1.1
@@ -0,0 +1,26 @@
+#! /bin/sh
+
+# SYSDIRS='$(all-sysd-dirs)' gen-sysd-distlist
+
+for dir in $SYSDIRS
+do
+    [ -f $dir/Implies	    ] && echo $dir/Implies
+    [ -f $dir/Subdirs	    ] && echo $dir/Subdirs
+    [ -f $dir/Versions	    ] && echo $dir/Versions
+    [ -f $dir/Makefile	    ] && echo $dir/Makefile
+    [ -f $dir/configure     ] && echo $dir/configure
+    [ -f $dir/configure.in  ] && echo $dir/configure.in
+    [ -f $dir/syscalls.list ] && echo $dir/syscalls.list
+    [ -f $dir/Dist	    ] && {
+	echo $dir/Dist
+	while read file; do
+	    if [ ! -f $dir/$file ]; then
+		echo Nonexistent Dist entry $dir/$file >&2
+		exit 1
+	    fi
+	    echo $dir/$file
+	done <$dir/Dist
+    }
+done
+
+exit 0
============================================================
Index: sysdeps/mach/hurd/i386/Dist
--- sysdeps/mach/hurd/i386/Dist	Wed Dec 31 19:00:00 1969
+++ sysdeps/mach/hurd/i386/Dist	Fri Jul  3 21:29:54 1998	1.1
@@ -0,0 +1 @@
+static-start.S
============================================================
Index: Make-dist
--- Make-dist	Sat May 30 16:12:00 1998	1.81
+++ Make-dist	Wed Dec 31 19:00:00 1969
@@ -1,248 +0,0 @@
-# Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98 Free Software Foundation, Inc.
-# This file is part of the GNU C Library.
-
-# The GNU C Library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public License as
-# published by the Free Software Foundation; either version 2 of the
-# License, or (at your option) any later version.
-
-# The GNU C Library 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
-# Library General Public License for more details.
-
-# You should have received a copy of the GNU Library General Public
-# License along with the GNU C Library; see the file COPYING.LIB.  If not,
-# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-dist:
-
-# Make the value empty so ifdef fails if it's $(-subdir).
-subdir := $(subdir)
-ifdef subdir
-.. := ../
-else
-.. :=
-endif
-
-include $(..)Makeconfig
-
-foo:=$(shell echo 'distribute=$(distribute)'>&2)
-foo:=$(shell echo 'dont_distribute=$(dont_distribute)'>&2)
-foo:=$(shell echo 'foobar=$(filter %.c %.S %.s %.h,$(distribute))'>&2)
-
-ifndef sysdep_dirs
-# Find all sysdep directories.
-export sysdep_dirs := $(shell find $(..)sysdeps -type d ! -name bits \
-				   ! -name CVS ! -name RCS -print)
-else
-# Defined by the parent.
-sysdep_dirs := $(addprefix $(..),$(sysdep_dirs))
-endif
-
-# Don't distribute add-on subdirs.
-subdirs := $(filter-out $(add-ons),$(subdirs))
-
-# Make sure both stdio and libio get in, whichever is in use.
-subdirs += stdio libio
-
-# Make sure both aout and elf get in, whichever is in use.
-subdirs += aout elf
-
-sysdep-Subdir-files := $(wildcard $(addsuffix /Subdirs,$(sysdep_dirs)))
-ifdef sysdep-Subdir-files
-subdirs := $(sort $(subdirs) \
-		  $(shell sed -e 's/\#.*$$//' $(sysdep-Subdir-files)))
-endif
-
-
-# Makefiles can define `source_dirs' to list nonstandard directories
-# where source files might be found.
-
-ifdef	subdir
-all-headers = $(filter-out $(sysdep_headers),$(headers))
-else
-+distinfo := $(shell MAKEFLAGS= MFLAGS= $(MAKE) -s no_deps=t \
-		     inhibit_interface_rules=t inhibit_mach_syscalls=t \
-		     subdirs='$(subdirs)' echo-distinfo | grep -v '^make')
-foo:=$(shell echo>&2 '+distinfo=$(+distinfo)')
-all-headers := $(patsubst +header+%,%,$(filter +header+%,$(+distinfo)))
-# Ignore subdir headers without top-level indirections.
-all-headers := $(sort $(headers) \
-		      $(patsubst include/%,%,\
-				 $(wildcard $(addprefix include/,\
-							$(all-headers)))))
-# Filter out names like ../conf/portability.h that would point outside
-# the source directory.
-all-headers := $(filter-out ../%,$(all-headers))
-+subdir-nodist := $(patsubst +nodist+%,%,$(filter +nodist+%,$(+distinfo)))
-+subdir-headers := $(filter-out $(headers),$(all-headers))
-endif
-foo:=$(shell echo 'IS THIS WORKING??? all-headers=$(all-headers)' >&2)
-
-sources += $(addsuffix .c,$(elided-routines) \
-		          $(foreach l,$(extra-libs),$($l-routines)))
-
-# Find all sysdep sources and headers.
-+maybe-sysdeps := $(sources) $(sources:.c=.s) $(sources:.c=.S) $(all-headers) \
-		  $(filter %.c %.S %.s %.h %.sub,$(distribute))
-foo:=$(shell echo '+maybe-sysdeps=$(+maybe-sysdeps)'>&2)
-# Find all the files that have a generic version.
-try-sysdeps := $(foreach dir,$(..)sysdeps/generic $(..)sysdeps/libm-ieee754,\
-			     $(addprefix $(dir)/,$(+maybe-sysdeps)))
-foo:=$(shell echo 'try-sysdeps=$(try-sysdeps)'>&2)
-+sysdeps := $(wildcard $(try-sysdeps))
-foo:=$(shell echo 'generic +sysdeps=$(+sysdeps)'>&2)
-+sysdep-names := $(sort $(patsubst $(..)sysdeps/generic/%,%,\
-				   $(patsubst $(..)sysdeps/libm-ieee754/%,%,\
-					      $(+sysdeps))))
-foo:=$(shell echo '+sysdep-names=$(+sysdep-names)' >&2)
-
-ifdef subdir-dirs
-vpath % $(subdir-dirs)
-endif
-
-# Now find all the sysdep versions of those files.
-+sysdeps := $(foreach dir,$(sysdep_dirs) $(source_dirs),\
-		      $(wildcard $(addprefix $(dir)/, \
-					     $(+sysdep-names) \
-					     $(+sysdep-names:.c=.s) \
-					     $(+sysdep-names:.c=.S) \
-				  )))
-
-
-# Source and header files to go in the distribution tar file.
-
-.S.s := $(wildcard $(sources:.c=.S) $(sources:.c=.s))
-sources := $(filter-out $(addsuffix .c,$(basename $(.S.s))),$(sources)) $(.S.s)
-
-+out := $(patsubst %.S,%.c,$(+sysdep-names:.s=.c)) \
-	$(addsuffix .c,$(sysdep_routines)) \
-	$(+subdir-nodist) $(dont_distribute)
-foo:=$(shell echo '+out=$(+out)' >&2; echo foofoo >&2)
-+tsrcs	:= $(filter-out $(+out), $(sources) $(all-headers) $(distribute)) \
-	   $(foreach l,$(extra-libs),$($l-map)) \
-	   $(wildcard $(addsuffix .map,$(extra-libs))) $(+sysdeps)
-foo:=$(shell echo 'made +tsrcs=$(+tsrcs)'>&2)
-foo:=$(shell echo generated='$(generated)' >&2)
-#generated := $(sort $(generated) $(generated:.S=.c) $(generated:.s=.c))
-#foo:=$(shell echo now generated='$(generated)' >&2)
-+tsrcs := $(sort $(filter-out $(generated),$(+tsrcs)))
-foo:=$(shell echo '+tsrcs=$(+tsrcs)'>&2)
-foo:=$(shell echo foobie, dammit! >&2)
-
-ifndef tardir
-export tardir := glibc-$(version)
-endif
-
-$(..)glibc-$(version):
-	ln -s . $@
-
-#+tsrcs := $(+tsrcs) \
-#	  TAGS
-.PHONY: TAGS
-TAGS: $(..)MakeTAGS
-	$(MAKE) -f $< $@ -o subdir_TAGS
-
-ifdef	   subdir
-
-foo:=$(shell echo subdir foo >&2)
-
-+tsrcs := Makefile $(+tsrcs) \
-	  $(addsuffix .c,$(others) $(tests) $(tests-static) $(test-srcs)) \
-	  $(wildcard $(addsuffix .input,$(tests) (tests-static) $(test-srcs)) \
-	  $(addsuffix .args,$(tests) $(tests-static) $(test-srcs)))
-+tardeps := $(strip $(+tsrcs))
-
-verbose = v
-
-.PHONY: dist
-dist: $(..)$(tardir) $(+tardeps)
-	@cd ..; if test -f dist.tar; then c=u; else c=c; fi;	\
-	$(+cmdecho) "cd ..; tar $${c}h$(verbose)f dist.tar ...";	\
-	tar $${c}h$(verbose)f dist.tar \
-	    $(addprefix $(tardir)/$(subdir)/,$(filter-out $<,$^))
-
-else	# Parent makefile.
-
-# Find what other things sysdep directories want to distribute.
-
-foo:=$(shell echo parent foobie>&2)
-+sysdep-distfiles := $(wildcard $(addsuffix /Dist,$(sysdep_dirs)))
-foo:=$(shell echo +sysdep-distfiles='$(+sysdep-distfiles)'>&2)
-+sysdep-dist := $(foreach file,$(+sysdep-distfiles),\
-			  $(addprefix $(dir $(file)), \
-				      $(shell sed -e 's/\#.*$$//' $(file)))) \
-		$(+sysdep-distfiles) \
-		$(sysdep-Subdir-files)
-foo:=$(shell echo '+sysdep-dist=$(+sysdep-dist)' >&2)
-
-+sysdep-tsrcs := $(wildcard $(foreach file,Makefile Implies syscalls.list\
-				           configure configure.in,\
-				      $(addsuffix /$(file),$(sysdep_dirs)))) \
-		 $(+sysdep-dist)
-
-+tsrcs := $(+tsrcs) $(+sysdep-tsrcs)
-
-ifeq ($(with-cvs),yes)
-define autoconf-it
-autoconf $(ACFLAGS) $< > $@.new
-mv -f $@.new $@
-test ! -d CVS || cvs $(CVSOPTS) commit -m'Regenerated: autoconf $(ACFLAGS) $<' $@
-endef
-else
-define autoconf-it
-autoconf $(ACFLAGS) $< > $@.new
-mv -f $@.new $@
-endef
-endif
-
-configure: configure.in aclocal.m4; $(autoconf-it)
-%/configure: %/configure.in aclocal.m4; $(autoconf-it)
-
-dist: $(tardir).tar.gz
-
-subdir_dist: dist.tar
-dist.tar: README $(tardir) $(+tsrcs)
-	tar chvf $@ $(addprefix $(tardir)/,$(filter-out $(tardir),$^))
-
-$(tardir).tar: dist.tar subdir_dist
-	@echo Files listed here have names exceeding 14 chars.
-	tar xfv $< -C $${TMPDIR-/tmp} | sed -n '/[^/]\{15,\}/p'
-	tar covf $@ -C $${TMPDIR-/tmp} $(tardir)
-	-rm -fr $${TMPDIR-/tmp}/$(tardir) dist.tar &
-
-%.Z: %
-	compress -c $< > $@
-
-%.gz: %
-	gzip -9 -v -c $< > $@
-
-foo:=$(shell echo subdirs=$(subdirs) >&2)
-dist-subdirs := $(addprefix dist-,$(subdirs)) # dist-manual
-.PHONY: subdir_dist $(dist-subdirs)
-subdir_dist: $(dist-subdirs)
-$(dist-subdirs):
-	$(MAKE) -C $(patsubst dist-%,%,$@) dist
-
-# This is here instead of in Makefile so it can use $(release) and $(version).
-README: README.template version.h
-	-rm -f $@
-	sed -e 's/RELEASE/$(release)/' -e 's/VERSION/$(version)/' < $< > $@
-# Make it unwritable so I won't change it by mistake.
-	chmod 444 $@
-ifeq ($(with-cvs),yes)
-	test ! -d CVS || cvs $(CVSOPTS) commit -m'Remade for $(release)-$(version)' $@
-endif
-
-
-endif	# Subdirectory vs. parent makefile
-
-# Get these things out of the environment because they take up lots of space.
-unexport distribute generated
-
-# Fnord.
-export inhibit_mach_syscalls=t
-export no_deps=t
-export inhibit_interface_rules=t
============================================================
Index: MakeTAGS
--- MakeTAGS	Thu May 14 23:51:13 1998	1.40
+++ MakeTAGS	Wed Dec 31 19:00:00 1969
@@ -1,183 +0,0 @@
-# Make the TAGS files.
-
-# Copyright (C) 1992, 1994, 1995, 1996, 1998 Free Software Foundation, Inc.
-# This file is part of the GNU C Library.
-
-# The GNU C Library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Library General Public License
-# as published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-
-# The GNU C Library 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
-# Library General Public License for more details.
-
-# You should have received a copy of the GNU Library General Public
-# License along with the GNU C Library; see the file COPYING.LIB.  If not,
-# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-# Make this the default goal.
-TAGS:
-
-ifdef subdir
-.. := ../
-endif
-
-include $(..)Makeconfig
-
-ifndef tags_sources
-ifeq ($(subdir),ctype)
-# In most cases, we want the C source files to come before
-# the header files so tags for optimizing #define's in the
-# headers won't be put in the tags files, but for ctype,
-# the functions are just backup for the #define's in the header.
-tags_sources = $(all-headers) $(all-sources) $(all-dist)
-else	# Not ctype.
-tags_sources = $(all-sources) $(all-headers) $(all-dist)
-endif	# ctype
-endif	# No tags_sources
-
-sysdep-dirs := $(full-config-sysdirs)
-
-ifndef sysdep_dirs
-# Find all sysdep directories.
-sysdep_dirs := $(shell find $(..)sysdeps \
-			    $(wildcard \
-				$(patsubst %,$(..)%/sysdeps,$(add-ons))) \
-			    -type d ! -name RCS ! -name CVS -print)
-endif
-
-# Find all sysdep dirs there are, but putting the ones
-# we are configured to use first and preserving their order.
-all-dirs := $(subdir-dirs) \
-	    $(objdir) \
-	    $(sysdep-dirs) \
-	    $(source_dirs) \
-	    $(filter-out $(sysdep-dirs),$(sysdep_dirs))
-
-# Find all the subdirs there are, but putting the ones
-# we are configured to use first and preserving their order.
-ifndef subdir
-subdirs := $(subdirs) \
-	   $(filter-out $(subdirs),\
-			$(shell sed -e 's/\#.*$$//' \
-				    $(wildcard $(addsuffix /Subdirs,\
-							   $(all-dirs)))\
-				    /dev/null))
-all-dist = $(foreach Dist,$(wildcard $(all-dirs:%=%/Dist)),\
-		     $(addprefix $(Dist:%/Dist=%)/,\
-				 $(filter %.c %.h %.S %.s,\
-					  $(shell cat $(Dist)))))
-tags_sources = $(all-sources) $(all-headers) $(all-dist)
-else
-all-dist = $(distribute)
-endif
-
-# sources and headers must be simply expanded variables
-sources := $(sources) $(filter %.c %.s %.S,$(all-dist))
-headers := $(headers) $(filter %.h,$(all-dist))
-all-dist := $(filter-out %.h %.c %.s %.S,$(all-dist))
-
-sources += $(foreach lib,$(extra-libs),$($(lib)-routines:=.c))
-
-# All different versions of $(sources), preserving the configured sysdep
-# directory order.
-# Files that are found in the current directory cannot occur in
-# sysdep directories, so don't bother searching them.
-sysdep-sources := $(filter-out $(wildcard $(sources)), $(sources))
-all-sources = $(wildcard $(sort $(sources) $(sources:.c=.S) $(sources:.c=.s)  \
-				$(others:=.c) $(tests:=.c) $(test-srcs:=.c))) \
-	      $(foreach dir,$(all-dirs),\
-			$(wildcard \
-			   $(addprefix $(dir)/,\
-				       $(sort $(sysdep-sources) \
-					      $(sysdep-sources:.c=.S) \
-					      $(sysdep-sources:.c=.s)))))
-
-sysdep-headers := $(filter-out $(wildcard $(headers)), $(headers))
-all-headers = $(wildcard $(headers)) \
-	      $(foreach dir,$(all-dirs),\
-			$(wildcard $(addprefix $(dir)/,$(sysdep-headers))))
-
-tags_sources := $(strip $(tags_sources))
-
-TAGS: $(tags_sources)
-ifdef subdir
-ifdef tags_sources
-	$(ETAGS) -o $@ $^
-else
-# No sources.  Create a dummy file.
-	touch $@
-endif # tags_sources
-else # parent
-TAGS: subdir_TAGS
-# Note that this uses the -i switch, and thus requires v19 etags.
-	$(ETAGS) -o $@ \
-		 $(subdirs:%=-i %/TAGS) \
-		 $(filter-out subdir_TAGS,$^)
-
-.PHONY: subdir_TAGS $(subdirs:%=%/TAGS)
-subdir_TAGS: $(subdirs:%=%/TAGS)
-$(subdirs:%=%/TAGS):
-	$(MAKE) -C $(@D) no_deps=t $(@F)
-
-endif # subdir
-
-ifndef XGETTEXT
-XGETTEXT = xgettext
-endif
-
-P = $(..)po
-
-ifdef subdir
-domain = $(subdir)
-else
-domain = libc-top
-endif
-
-define extract
-@rm -f $@.new
-$(XGETTEXT) --keyword=_ --keyword=N_ --add-comments=TRANS  --sort-output \
-	    --omit-header -n -d - $(XGETTEXTFLAGS-$(@F)) > $@.new $^
-mv -f $@.new $@
-endef
-
-text-srcs := $(filter %.c %.h %.cc %.C,$(tags_sources))
-$P/$(domain).pot: $(text-srcs)
-ifeq (,$(text-srcs))
-	cp /dev/null $@
-else
-	$(extract)
-endif
-
-all-pot = $P/libc-top.pot $P/subdirs.pot
-
-ifndef subdir
-# Collect all the subdir messages, massaging the file names in comments
-# to include the subdir name.
-$P/subdirs.pot: $(subdirs:%=$P/%.pot)
-	@rm -f $@.new
-	(for d in $(subdirs); \
-	 do sed "/^#:/s% % $$d/%g" $P/$$d.pot; done) > $@.new
-	mv -f $@.new $@
-
-# Combine all the messages into the final sorted template translation file.
-# The following code requires GNU date.
-$P/libc.pot: $(all-pot)
-	@rm -f $@.new
-	set `date -R`; disp="$$6"; \
-	sed -e 's/VERSION/$(version)/' \
-	    -e "s/DATE/`date +'%Y-%m-%d %H:%M'$$disp`/" \
-	    po/header.pot > $@.new
-	$(XGETTEXT) -d - --omit-header -n -s $^ >> $@.new
-	mv -f $@.new $@
-ifeq ($(with-cvs),yes)
-	test ! -d CVS || cvs $(CVSOPTS) ci -m'Regenerated from source files' $@
-endif
-
-$(subdirs:%=$P/%.pot): $P/%.pot: FORCE
-	$(MAKE) -C $* no_deps=t ../$@
-FORCE:
-endif



More information about the Libc-hacker mailing list