X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=depend.sh;h=a0af40c845167390f53640144b2adc09c5cf1ee9;hp=db32f6c6ab834c88dceba94cdc2dd37fd6cfcb87;hb=1c6fa9aa4483c491c4edf0129bc26478513324ed;hpb=11e68b8de3eb8bf8b657333d5b8359260559e93b diff --git a/depend.sh b/depend.sh index db32f6c6..a0af40c8 100755 --- a/depend.sh +++ b/depend.sh @@ -1,4 +1,25 @@ #!/bin/sh -dir="$1" + +# Call gcc to output a rule suitable for make describing the dependencies of +# the given input file and parse the output to add a *.d target with the same +# dependencies. + +# The first three arguments to that script are special: $1 is the +# dependency directory and $2 is the object directory. These are used +# to prefix the .d and .o targets respectively. $3 is the directory +# that contains the *.cmdline.h files generated by gengetopt. + +# As gcc outputs the dependencies on the *.cmdline.h files either as either +# foo.cmdline.h or as $cmdline_dir/foo,cmdline.h, depending on whether the +# latter file exists, we prefix the former with $2/ + +dep_dir="$1" +object_dir="$2" +cmdline_dir="$3" shift -gcc -MM -MG "$@" | sed -e "s@^\(.*\)\.o:@$dir/\1.d $dir/\1.o:@" +shift +shift + +LC_ALL=C gcc -MM -MG "$@" \ + | sed -e "s@^\(.*\)\.o:@$dep_dir/\1.d $object_dir/\1.o:@" \ + -e "s@[ ^]\([a-zA-Z0-9_]\{1,\}\.cmdline.h\)@ $cmdline_dir/\1@g"