X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=depend.sh;h=746b0d2b1c82914ef96ebbf2a724f03bb872573d;hp=db32f6c6ab834c88dceba94cdc2dd37fd6cfcb87;hb=6bcd10bc4ada11a04bc2b7425afe5a8855592cd2;hpb=b0d2e5f940e595486443700998d27053e462183a diff --git a/depend.sh b/depend.sh index db32f6c6..746b0d2b 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 +# 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"