40 lines
1.2 KiB
Plaintext
40 lines
1.2 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
# HACK Don't give make errors when switching between trunk and branches.
|
||
|
# Works by finding the .deps/*.Po files which refer to source files that don't exist, and replacing them with a single dependency on the correct source file.
|
||
|
# Now with PD-ksh support.
|
||
|
|
||
|
if ! rootdir="`git rev-parse --show-cdup 2> /dev/null`"
|
||
|
then
|
||
|
echo "Not in a git repository."
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
for path in src/ lib/*/ lib/*/*/
|
||
|
do
|
||
|
srcpath="${rootdir}${path}"
|
||
|
deppath="${path}.deps/"
|
||
|
if [ -d "${srcpath}" -a -d "${deppath}" ]
|
||
|
then
|
||
|
for ext in c cpp
|
||
|
do
|
||
|
# Iterate over all files that might have broken dependencies.
|
||
|
for fname in `cd ${srcpath} ; echo *.${ext}`
|
||
|
do
|
||
|
fpref="`echo "${fname}" | sed "s/\.${ext}//"`"
|
||
|
srcfile="${srcpath}${fname}"
|
||
|
depfile="${deppath}${fpref}.Po"
|
||
|
|
||
|
# Check if the dependency file ${depfile} exists and is broken. (The ${srcfile} check prevents looking for files literally called "*.cpp".)
|
||
|
if [ -f "${srcfile}" -a -f "${depfile}" ] && ! grep -q "\b${fname}\b" "${depfile}" 2> /dev/null
|
||
|
then
|
||
|
relpath="`echo "${path}" | sed "s/[^./]*\//..\//g"`"
|
||
|
echo "${fpref}.o: ${relpath}${srcfile}" | tee "${depfile}"
|
||
|
fi
|
||
|
done
|
||
|
done
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
exit 0
|