server: Lookup user only once.
[paraslash.git] / depend.sh
index db32f6c6ab834c88dceba94cdc2dd37fd6cfcb87..746b0d2b1c82914ef96ebbf2a724f03bb872573d 100755 (executable)
--- 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"