]>
Commit | Line | Data |
---|---|---|
28f540f4 | 1 | # Make the TAGS files. |
567fb074 | 2 | # Copyright (C) 1992,1994,1995,1996,1998,2002 Free Software Foundation, Inc. |
28f540f4 RM |
3 | # This file is part of the GNU C Library. |
4 | ||
5 | # The GNU C Library is free software; you can redistribute it and/or | |
41bdb6e2 AJ |
6 | # modify it under the terms of the GNU Lesser General Public |
7 | # License as published by the Free Software Foundation; either | |
8 | # version 2.1 of the License, or (at your option) any later version. | |
28f540f4 RM |
9 | |
10 | # The GNU C Library is distributed in the hope that it will be useful, | |
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
41bdb6e2 | 13 | # Lesser General Public License for more details. |
28f540f4 | 14 | |
41bdb6e2 AJ |
15 | # You should have received a copy of the GNU Lesser General Public |
16 | # License along with the GNU C Library; if not, write to the Free | |
17 | # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA | |
18 | # 02111-1307 USA. | |
28f540f4 RM |
19 | |
20 | # Make this the default goal. | |
21 | TAGS: | |
22 | ||
23 | ifdef subdir | |
24 | .. := ../ | |
25 | endif | |
26 | ||
27 | include $(..)Makeconfig | |
28 | ||
29 | ifndef tags_sources | |
30 | ifeq ($(subdir),ctype) | |
31 | # In most cases, we want the C source files to come before | |
32 | # the header files so tags for optimizing #define's in the | |
33 | # headers won't be put in the tags files, but for ctype, | |
34 | # the functions are just backup for the #define's in the header. | |
e607b492 | 35 | tags_sources = $(all-headers) $(all-sources) $(all-dist) |
28f540f4 | 36 | else # Not ctype. |
e607b492 | 37 | tags_sources = $(all-sources) $(all-headers) $(all-dist) |
28f540f4 RM |
38 | endif # ctype |
39 | endif # No tags_sources | |
40 | ||
0a55a284 | 41 | sysdep-dirs := $(full_config_sysdirs) |
28f540f4 RM |
42 | |
43 | ifndef sysdep_dirs | |
44 | # Find all sysdep directories. | |
47707456 UD |
45 | sysdep_dirs := $(shell find $(..)sysdeps \ |
46 | $(wildcard \ | |
47 | $(patsubst %,$(..)%/sysdeps,$(add-ons))) \ | |
abe71ca6 UD |
48 | -type d ! -name RCS ! -name CVS \ |
49 | ! -name SCCS -print) | |
28f540f4 RM |
50 | endif |
51 | ||
52 | # Find all sysdep dirs there are, but putting the ones | |
53 | # we are configured to use first and preserving their order. | |
19c3f208 RM |
54 | all-dirs := $(subdir-dirs) \ |
55 | $(objdir) \ | |
28f540f4 RM |
56 | $(sysdep-dirs) \ |
57 | $(source_dirs) \ | |
58 | $(filter-out $(sysdep-dirs),$(sysdep_dirs)) | |
59 | ||
60 | # Find all the subdirs there are, but putting the ones | |
61 | # we are configured to use first and preserving their order. | |
62 | ifndef subdir | |
63 | subdirs := $(subdirs) \ | |
64 | $(filter-out $(subdirs),\ | |
4c393b68 UD |
65 | $(sort \ |
66 | $(shell sed -e 's/\#.*$$//' \ | |
67 | $(wildcard $(addsuffix /Subdirs,\ | |
68 | $(all-dirs)))\ | |
69 | /dev/null))) | |
28f540f4 RM |
70 | all-dist = $(foreach Dist,$(wildcard $(all-dirs:%=%/Dist)),\ |
71 | $(addprefix $(Dist:%/Dist=%)/,\ | |
72 | $(filter %.c %.h %.S %.s,\ | |
73 | $(shell cat $(Dist))))) | |
74 | tags_sources = $(all-sources) $(all-headers) $(all-dist) | |
e607b492 RM |
75 | else |
76 | all-dist = $(distribute) | |
28f540f4 RM |
77 | endif |
78 | ||
a4242e25 RM |
79 | # sources and headers must be simply expanded variables |
80 | sources := $(sources) $(filter %.c %.s %.S,$(all-dist)) | |
81 | headers := $(headers) $(filter %.h,$(all-dist)) | |
8e3cc80f RM |
82 | all-dist := $(filter-out %.h %.c %.s %.S,$(all-dist)) |
83 | ||
c3352e62 RM |
84 | sources += $(foreach lib,$(extra-libs),$($(lib)-routines:=.c)) |
85 | ||
28f540f4 RM |
86 | # All different versions of $(sources), preserving the configured sysdep |
87 | # directory order. | |
6952e59e UD |
88 | # Files that are found in the current directory cannot occur in |
89 | # sysdep directories, so don't bother searching them. | |
90 | sysdep-sources := $(filter-out $(wildcard $(sources)), $(sources)) | |
e61abf83 | 91 | all-sources = $(wildcard $(sort $(sources) $(sources:.c=.S) $(sources:.c=.s) \ |
c238ecf7 UD |
92 | $(others:=.c) $(tests:=.c) $(xtests:=.c) \ |
93 | $(test-srcs:=.c))) \ | |
19c3f208 RM |
94 | $(foreach dir,$(all-dirs),\ |
95 | $(wildcard \ | |
96 | $(addprefix $(dir)/,\ | |
6952e59e UD |
97 | $(sort $(sysdep-sources) \ |
98 | $(sysdep-sources:.c=.S) \ | |
99 | $(sysdep-sources:.c=.s))))) | |
19c3f208 | 100 | |
6952e59e | 101 | sysdep-headers := $(filter-out $(wildcard $(headers)), $(headers)) |
19c3f208 RM |
102 | all-headers = $(wildcard $(headers)) \ |
103 | $(foreach dir,$(all-dirs),\ | |
6952e59e | 104 | $(wildcard $(addprefix $(dir)/,$(sysdep-headers)))) |
28f540f4 RM |
105 | |
106 | tags_sources := $(strip $(tags_sources)) | |
107 | ||
108 | TAGS: $(tags_sources) | |
109 | ifdef subdir | |
110 | ifdef tags_sources | |
111 | $(ETAGS) -o $@ $^ | |
112 | else | |
a182affd | 113 | # No sources. Create a dummy file. |
28f540f4 RM |
114 | touch $@ |
115 | endif # tags_sources | |
116 | else # parent | |
117 | TAGS: subdir_TAGS | |
118 | # Note that this uses the -i switch, and thus requires v19 etags. | |
119 | $(ETAGS) -o $@ \ | |
120 | $(subdirs:%=-i %/TAGS) \ | |
121 | $(filter-out subdir_TAGS,$^) | |
122 | ||
123 | .PHONY: subdir_TAGS $(subdirs:%=%/TAGS) | |
124 | subdir_TAGS: $(subdirs:%=%/TAGS) | |
125 | $(subdirs:%=%/TAGS): | |
126 | $(MAKE) -C $(@D) no_deps=t $(@F) | |
127 | ||
128 | endif # subdir | |
a182affd RM |
129 | \f |
130 | ifndef XGETTEXT | |
131 | XGETTEXT = xgettext | |
132 | endif | |
a182affd RM |
133 | |
134 | P = $(..)po | |
135 | ||
136 | ifdef subdir | |
137 | domain = $(subdir) | |
138 | else | |
139 | domain = libc-top | |
140 | endif | |
141 | ||
142 | define extract | |
143 | @rm -f $@.new | |
567fb074 | 144 | $(XGETTEXT) --keyword=_ --keyword=N_ --add-comments=TRANS --sort-by-file \ |
706074a5 | 145 | --omit-header -n -d - $(XGETTEXTFLAGS-$(@F)) > $@.new $^ |
a182affd RM |
146 | mv -f $@.new $@ |
147 | endef | |
148 | ||
857fa1b8 RM |
149 | text-srcs := $(filter %.c %.h %.cc %.C,$(tags_sources)) |
150 | $P/$(domain).pot: $(text-srcs) | |
151 | ifeq (,$(text-srcs)) | |
152 | cp /dev/null $@ | |
153 | else | |
154 | $(extract) | |
155 | endif | |
a182affd | 156 | |
df4ef2ab | 157 | all-pot = $P/libc-top.pot $P/subdirs.pot |
a182affd RM |
158 | |
159 | ifndef subdir | |
7a1c652d RM |
160 | # Collect all the subdir messages, massaging the file names in comments |
161 | # to include the subdir name. | |
162 | $P/subdirs.pot: $(subdirs:%=$P/%.pot) | |
163 | @rm -f $@.new | |
164 | (for d in $(subdirs); \ | |
14bab8de | 165 | do sed "/^#:/s% % $$d/%g" $P/$$d.pot; done) > $@.new |
7a1c652d RM |
166 | mv -f $@.new $@ |
167 | ||
168 | # Combine all the messages into the final sorted template translation file. | |
ec4b0518 | 169 | # The following code requires GNU date. |
8ca5c11b | 170 | $P/libc.pot: $(all-pot) |
a182affd | 171 | @rm -f $@.new |
0d204b0a | 172 | set `date -R`; disp="$$6"; \ |
ec4b0518 | 173 | sed -e 's/VERSION/$(version)/' \ |
0d204b0a | 174 | -e "s/DATE/`date +'%Y-%m-%d %H:%M'$$disp`/" \ |
299a95b9 | 175 | po/header.pot > $@.new |
4c393b68 | 176 | $(XGETTEXT) -d - --omit-header -n $^ >> $@.new |
a182affd | 177 | mv -f $@.new $@ |
880f421f | 178 | ifeq ($(with-cvs),yes) |
379bb425 | 179 | test ! -d CVS || cvs $(CVSOPTS) ci -m'Regenerated from source files' $@ |
880f421f | 180 | endif |
a182affd RM |
181 | |
182 | $(subdirs:%=$P/%.pot): $P/%.pot: FORCE | |
183 | $(MAKE) -C $* no_deps=t ../$@ | |
184 | FORCE: | |
185 | endif |