Create dependencies using an awk script. Works much nicer in vpath

environments.
This commit is contained in:
Sascha Schumann 2000-08-24 11:02:03 +00:00
parent 7ca4354c22
commit ba4ddf32b4
2 changed files with 50 additions and 1 deletions

49
build/mkdep.awk Normal file
View file

@ -0,0 +1,49 @@
{
top_srcdir=$1
top_builddir=$2
srcdir=$3
cmd=$4
for (i = 5; i <= NF; i++) {
if (match($i, "^-[A-Z]") == 0)
break;
cmd=cmd " " $i
}
dif=i-1
for (; i <= NF; i++)
filenames[i-dif]=$i
no_files=NF-dif
for(i = 1; i <= no_files; i++) {
if (system("test -r " filenames[i]) != 0)
continue
target=filenames[i]
sub(srcdir "/", "", target)
target2=target
sub("\.(c|cpp)$", ".lo", target);
sub("\.(c|cpp)$", ".slo", target2);
deplist=""
for (e in used)
delete used[e]
cmdx=cmd " " filenames[i]
while ((cmdx | getline) > 0) {
sub(top_srcdir, "$(top_srcdir)", $0)
sub(top_builddir, "$(top_builddir)", $0)
if (match($0, "^# [0-9]* \".*\.h\"") != 0 \
&& match($3, "^\"/") == 0 \
&& !($3 in used)) {
deplist=deplist " \\\n\t" substr($3,2,length($3)-2)
used[$3] = 1;
}
}
if (deplist != "")
print target " " target2 ":" deplist "\n";
}
}

View file

@ -41,7 +41,7 @@ install-p: $(targets) $(install_targets)
distclean-p depend-p clean-p:
depend: depend-recursive
test "`echo *.c`" = '*.c' || perl $(top_srcdir)/build/mkdep.perl $(CPP) $(INCLUDES) $(EXTRA_INCLUDES) *.c > $(builddir)/.deps
@echo $(top_srcdir) $(top_builddir) $(srcdir) $(CPP) $(INCLUDES) $(EXTRA_INCLUDES) $(DEFS) $(CPPFLAGS) $(srcdir)/*.c *.c | awk -f $(top_srcdir)/build/mkdep.awk > $(builddir)/.deps || true
clean: clean-recursive clean-x