Formerly ../MakeTAGS.~2~
[kopensolaris-gnu/glibc.git] / MakeTAGS
1 # Make the TAGS files.
2
3 # Copyright (C) 1992 Free Software Foundation, Inc.
4 # This file is part of the GNU C Library.
5
6 # The GNU C Library is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU Library General Public License
8 # as published by the Free Software Foundation; either version 2 of
9 # the License, or (at your option) any later version.
10
11 # The GNU C Library is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 # Library General Public License for more details.
15
16 # You should have received a copy of the GNU Library General Public
17 # License along with the GNU C Library; see the file COPYING.LIB.  If
18 # not, write to the Free Software Foundation, Inc., 675 Mass Ave,
19 # Cambridge, MA 02139, USA.
20
21 ifdef subdir
22 .. := ../
23 endif
24
25 include $(..)Makeconfig
26
27 ifndef tags_sources
28 tags_sources = $(all-sources) $(all-headers)
29 endif
30
31 sysdep-dirs := $(addprefix $(sysdep_dir)/,$(sysdirs))
32
33 # Find all sysdep dirs there are, but putting the ones
34 # we are configured to use first and preserving their order.
35 all-dirs := $(objdir) \
36             $(sysdep-dirs) \
37             $(source_dirs) \
38             $(filter-out $(sysdep-dirs),\
39                          $(patsubst ./%,%,\
40                                     $(shell find $(sysdep_dir) -type d -print)\
41                           ))
42
43 # Find all the subdirs there are, but putting the ones
44 # we are configured to use first and preserving their order.
45 ifndef subdir
46 subdirs := $(subdirs) \
47            $(filter-out $(subdirs),\
48                         $(shell cat $(wildcard $(addsuffix /Subdirs,\
49                                                            $(all-dirs)))\
50                                     /dev/null))
51 all-dist = $(shell cat /dev/null $(wildcard $(filter %.c %.h %.S %.s,\
52                                                      $(all-dirs:%=%/Dist))))
53 tags_sources = $(all-sources) $(all-headers) $(all-dist)
54 endif
55
56 # All different versions of $(sources), preserving the configured sysdep
57 # directory order.
58 all-sources = $(wildcard $(foreach file,$(sources),\
59                                    $(file) \
60                                    $(foreach dir,$(all-dirs),\
61                                              $(dir)/$(file) \
62                                              $(dir)/$(file:.c=.S) \
63                                              $(dir)/$(file:.c=.s))))
64
65 all-headers = $(wildcard $(foreach file,$(headers),\
66                                    $(file) \
67                                    $(foreach dir,$(all-dirs),$(dir)/$(file))))
68
69 tags_sources := $(strip $(tags_sources))
70
71 TAGS: $(tags_sources)
72 ifdef subdir
73 ifdef tags_sources
74         $(ETAGS) -o $@ $^
75 endif # tags_sources
76 else # parent
77 TAGS: subdir_TAGS
78 # Note that this uses the -i switch, and thus requires v19 etags.
79         $(ETAGS) -o $@ \
80                  $(subdirs:%=-i %/TAGS) \
81                  $(filter-out subdir_TAGS,$^)
82
83 .PHONY: subdir_TAGS $(subdirs:%=%/TAGS)
84 subdir_TAGS: $(subdirs:%=%/TAGS)
85 $(subdirs:%=%/TAGS):
86         $(MAKE) -C $(@D) no_deps=t $(@F)
87
88 endif # subdir