summaryrefslogtreecommitdiff
path: root/Makeconf
diff options
context:
space:
mode:
Diffstat (limited to 'Makeconf')
-rw-r--r--Makeconf23
1 files changed, 17 insertions, 6 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)