diff options
| -rw-r--r-- | build/mkdep.awk | 49 | ||||
| -rw-r--r-- | build/rules.mk | 2 | 
2 files changed, 50 insertions, 1 deletions
| diff --git a/build/mkdep.awk b/build/mkdep.awk new file mode 100644 index 0000000000..07f6dab6fa --- /dev/null +++ b/build/mkdep.awk @@ -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"; +	} +}  diff --git a/build/rules.mk b/build/rules.mk index 4bcfe3eb39..2cf850ccf2 100644 --- a/build/rules.mk +++ b/build/rules.mk @@ -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 | 
