summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makeconf23
-rw-r--r--Makefile2
2 files changed, 18 insertions, 7 deletions
diff --git a/Makeconf b/Makeconf
index d59d2147..b27cd480 100644
--- a/Makeconf
+++ b/Makeconf
@@ -379,19 +379,30 @@ endif
# TAGS files
ifneq ($(dir),.)
-ifeq ($(SRCS),)
-TAGS: $(OTHERTAGS)
-ifeq ($(OTHERTAGS),)
+ifdef configured
+ifneq ($(OBJS:.o=.d),)
+DEP_SRCS = sed -e 's/^.*://' -e 's/ \\$$//' | tr ' ' '\012'| \
+ sed -n -e 's@^$(srcdir)@&@p' -e 's@^[^/]@&@p' | sort -ur
+TAGSFILES=$(OBJS:.o=.d) $(OTHERTAGS)
+else
+TAGSFILES=$(OTHERTAGS)
+endif
+else
+TAGSFILES=$(SRCS) $(OTHERTAGS)
+endif
+
+TAGS: $(TAGSFILES)
+ifeq ($(strip($(TAGSFILES))),)
# no tags, but parent will include this file, so make empty one.
> $@
else
- etags -o $@ $^
-endif
+ifdef DEP_SRCS
+ cat $(OBJS:.o=.d) | $(DEP_SRCS) | etags -o $@ - $(OTHERTAGS)
else
-TAGS: $(SRCS) $(OTHERTAGS)
etags -o $@ $^
endif
endif
+endif
# Cleaning
ifeq ($(clean),yes)
diff --git a/Makefile b/Makefile
index 126235c8..dc7895b4 100644
--- a/Makefile
+++ b/Makefile
@@ -94,7 +94,7 @@ install-headers: $(addsuffix -install-headers,$(lib-subdirs) \
$(working-prog-subdirs)\
$(other-subdirs))
-TAGS: $(addsuffix -TAGS,$(prog-subdirs) $(lib-subdirs))
+TAGS: $(addsuffix -TAGS,$(working-prog-subdirs) $(lib-subdirs))
etags -o $@ $(patsubst %-TAGS,-i %/TAGS,$^)
## Targets used by the main targets above.