diff options
Diffstat (limited to 'src/lib/deps.bash')
| -rwxr-xr-x | src/lib/deps.bash | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/lib/deps.bash b/src/lib/deps.bash new file mode 100755 index 0000000000..6b5b615f1b --- /dev/null +++ b/src/lib/deps.bash @@ -0,0 +1,31 @@ +#!/bin/bash +# Copyright 2009 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +OUT="Make.deps" +TMP="Make.deps.tmp" + +# Get list of directories from Makefile +dirs=$(sed '1,/^DIRS=/d; /^$/,$d; s/\\//g' Makefile) +dirpat=$(echo $dirs | sed 's/ /|/g; s/.*/^(&)$/') + +for dir in $dirs; do ( + cd $dir || exit 1 + + sources=$(sed -n 's/\.\$O\\/.go/p' Makefile | sort | uniq) + sources=$(ls $sources 2> /dev/null) # remove .s, .c, etc. + + deps=$( + sed -n '/^import.*"/p; /^import[ \t]*(/,/^)/p' $sources /dev/null | + cut -d '"' -f2 | + egrep "$dirpat" | + grep -v "^$dir\$" | + sed 's/$/.install/' | + sort -u + ) + + echo $dir.install: $deps +) done > $TMP + +mv $TMP $OUT |
