Formerly ../MakeTAGS.~2~
authorroland <roland>
Thu, 7 May 1992 05:20:22 +0000 (05:20 +0000)
committerroland <roland>
Thu, 7 May 1992 05:20:22 +0000 (05:20 +0000)
MakeTAGS

index 643975d..7f0b159 100644 (file)
--- a/MakeTAGS
+++ b/MakeTAGS
 # not, write to the Free Software Foundation, Inc., 675 Mass Ave,
 # Cambridge, MA 02139, USA.
 
-ifndef tags-sources
-tags-sources = $(all-sources) $(headers)
+ifdef subdir
+.. := ../
+endif
+
+include $(..)Makeconfig
+
+ifndef tags_sources
+tags_sources = $(all-sources) $(all-headers)
+endif
+
+sysdep-dirs := $(addprefix $(sysdep_dir)/,$(sysdirs))
+
+# Find all sysdep dirs there are, but putting the ones
+# we are configured to use first and preserving their order.
+all-dirs := $(objdir) \
+           $(sysdep-dirs) \
+           $(source_dirs) \
+           $(filter-out $(sysdep-dirs),\
+                        $(patsubst ./%,%,\
+                                   $(shell find $(sysdep_dir) -type d -print)\
+                         ))
+
+# 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 cat $(wildcard $(addsuffix /Subdirs,\
+                                                          $(all-dirs)))\
+                                   /dev/null))
+all-dist = $(shell cat /dev/null $(wildcard $(filter %.c %.h %.S %.s,\
+                                                    $(all-dirs:%=%/Dist))))
+tags_sources = $(all-sources) $(all-headers) $(all-dist)
 endif
 
-all-sources = $(foreach file,$(sources),\
-                       $(firstword $(wildcard $(file) \
-                                              $(foreach dir,$(+sysdep_dirs),\
-                                                        $(dir)/$(file) \
-                                                        $(dir)/$(file:.c=.S) \
-                                                        $(dir)/$(file:.c=.s)\
-                                               ))))
-TAGS: $(tags-sources)
-       @$(cmdecho) '$(ETAGS) -f $@ ...'
+# All different versions of $(sources), preserving the configured sysdep
+# directory order.
+all-sources = $(wildcard $(foreach file,$(sources),\
+                                  $(file) \
+                                  $(foreach dir,$(all-dirs),\
+                                            $(dir)/$(file) \
+                                            $(dir)/$(file:.c=.S) \
+                                            $(dir)/$(file:.c=.s))))
+
+all-headers = $(wildcard $(foreach file,$(headers),\
+                                  $(file) \
+                                  $(foreach dir,$(all-dirs),$(dir)/$(file))))
+
+tags_sources := $(strip $(tags_sources))
+
+TAGS: $(tags_sources)
 ifdef subdir
-       @$(ETAGS) -f $@ $^
-else
+ifdef tags_sources
+       $(ETAGS) -o $@ $^
+endif # tags_sources
+else # parent
+TAGS: subdir_TAGS
 # Note that this uses the -i switch, and thus requires v19 etags.
-       @$(ETAGS) -f $@ \
-                 $(subdirs:%=-i %) \
-                 $^
-endif
+       $(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