| #! /bin/sh | 
 | # | 
 | # Check for accurate dependencies in gcc/Makefile.in. | 
 | # | 
 | # Copyright (C) 2008, 2012 Free Software Foundation, Inc. | 
 | # Written by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>. | 
 | # | 
 | # This script is Free Software, and it can be copied, distributed and | 
 | # modified as defined in the GNU General Public License.  A copy of | 
 | # its license can be downloaded from http://www.gnu.org/copyleft/gpl.html | 
 | # | 
 | # Start this script in an up to date build-tree/gcc directory. | 
 | # Using it in stage1 only works if the host compiler is GCC. | 
 |  | 
 | # To continue an interrupted check, make sure there are no *.o.backup | 
 | # files lying around (i.e., move them back to their original name), | 
 | # and set $start_after to the name of the last object that should be skipped. | 
 | start_after= | 
 |  | 
 | # Skip some objects unconditionally; make sure each name in this list is | 
 | # surrounded by spaces. | 
 | skip=" crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o crtfastmath.o crtprec64.o crtprec80.o crtprec32.o ecrti.o ecrtn.o ncrti.o ncrtn.o " | 
 |  | 
 | # Files which show up as dependencies other than through unconditional #include. | 
 | # This is an egrep pattern. | 
 | hidden_dep_files='(BASE-VER|DATESTAMP|DEV-PHASE|Makefile|xcoffout\.h|basic-block\.h|bconfig\.h)$' | 
 |  | 
 | : ${MAKE=make} | 
 | : ${EGREP="grep -E"} | 
 |  | 
 | # ------------------------------------------------------------------------- | 
 | # There should be no need for changes beyond this point. | 
 |  | 
 | set -e | 
 | st=0 | 
 |  | 
 | if test -f c-family/c-common.o; then :; else | 
 |   echo "$0: rerun in an up to date build-tree/gcc directory" >&2 | 
 |   exit 1 | 
 | fi | 
 |  | 
 | for obj in *.o | 
 | do | 
 |   if test -n "$start_after"; then | 
 |     if test $obj = $start_after; then | 
 |       start_after= | 
 |     fi | 
 |     continue | 
 |   fi | 
 |   case $skip in *\ $obj\ *) continue ;; esac | 
 |  | 
 |   mv -f $obj $obj.backup | 
 |   ${MAKE} $obj CFLAGS='-MM -MF depfile' | 
 |   mv -f $obj.backup $obj | 
 |   ${MAKE} -t | 
 |   LC_ALL=C ${MAKE} -d $obj >make-d-log | 
 |   hdrs=`cat depfile` | 
 |   for hdr in $hdrs; do | 
 |     case $hdr in | 
 |       *: | *.o | \\ | /* ) ;; | 
 |       *) | 
 |         echo $hdr ;; | 
 |     esac | 
 |   done < depfile | | 
 |   LC_ALL=C sort -u > hdrs | 
 |  | 
 |  | 
 |   sed -n '/.*Prerequisite..\([^ ]*\). is newer than target .'"$obj"'.*/s//\1/p' \ | 
 |     < make-d-log | | 
 |   LC_ALL=C sort -u > not-up-to-date | 
 |   if test -s not-up-to-date; then | 
 |     st=1 | 
 |     echo "$0: error: prerequisites for $obj are not up to date:" >&2 | 
 |     cat not-up-to-date >&2 | 
 |   fi | 
 |   sed -n '/.*Prerequisite..\([^ ]*\). is older than target .'"$obj"'.*/s//\1/p' \ | 
 |     < make-d-log | | 
 |   LC_ALL=C sort -u > deps | 
 |   missing_deps=`LC_ALL=C join -v 1 hdrs deps` | 
 |   unneeded_deps=`LC_ALL=C join -v 2 hdrs deps | $EGREP -v "$hidden_dep_files" || :` | 
 |   if test -n "$missing_deps"; then | 
 |     st=1 | 
 |     echo "missing deps for $obj:" | 
 |     echo "$missing_deps" | sed 's/^/  /' | 
 |   fi | 
 |   if test -n "$unneeded_deps"; then | 
 |     # unneeded dependencies are not a big problem, so they cause no failure. | 
 |     echo "unneeded deps for $obj:" | 
 |     echo "$unneeded_deps" | sed 's/^/  /' | 
 |   fi | 
 | done | 
 | exit $st | 
 |  | 
 | # vi:sw=2: |