home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / NETWORK / ISP / bind.4.8.3.lzh / BIND483 / BIN / mkdep.old.compiler < prev    next >
Text File  |  1993-08-24  |  3KB  |  128 lines

  1. #!/bin/sh -
  2. #
  3. # Copyright (c) 1988 The Regents of the University of California.
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms are permitted
  7. # provided that the above copyright notice and this paragraph are
  8. # duplicated in all such forms and that any documentation,
  9. # advertising materials, and other materials related to such
  10. # distribution and use acknowledge that the software was developed
  11. # by the University of California, Berkeley.  The name of the
  12. # University may not be used to endorse or promote products derived
  13. # from this software without specific prior written permission.
  14. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  15. # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  16. # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  17. #
  18. #    @(#)mkdep.old.compiler    5.3 (Berkeley) 8/15/90
  19. #
  20.  
  21. # This is a version of mkdep that works pretty well
  22. # with compilers that don't have -M.
  23. MAKE=Makefile            # default makefile name is "Makefile"
  24.  
  25. PATH=/bin:/usr/bin:/usr/ucb:/lib:/usr/lib
  26.  
  27. INCL=
  28.  
  29. while :
  30.     do case "$1" in
  31.         # -f allows you to select a makefile name
  32.         -f)
  33.             MAKE=$2
  34.             shift; shift ;;
  35.  
  36.         # the -p flag produces "program: program.c" style dependencies
  37.         # so .o's don't get produced
  38.         -p)
  39.             SED='s;\.o;;'
  40.             shift ;;
  41.         *)
  42.             break ;;
  43.     esac
  44. done
  45.  
  46. if [ $# = 0 ] ; then
  47.     echo 'usage: mkdep [-p] [-f makefile] [flags] file ...'
  48.     exit 1
  49. fi
  50.  
  51. if [ ! -w $MAKE ]; then
  52.     echo "mkdep: no writeable file \"$MAKE\""
  53.     exit 1
  54. fi
  55.  
  56. TMP=/tmp/mkdep$$
  57.  
  58. trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
  59.  
  60. cp $MAKE ${MAKE}.bak
  61. sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
  62.  
  63. cat << _EOF_ >> $TMP
  64. # DO NOT DELETE THIS LINE -- mkdep uses it.
  65. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
  66.  
  67. _EOF_
  68.  
  69.  
  70. for i do
  71.     case "$i" in
  72.     -c|-M|-O)
  73.         ;;
  74.     -I*)
  75.         INCL="$INCL $i";;
  76.     -D*|-U*)
  77.         FLAGS="$FLAGS $i";;
  78.     *)
  79.         # assume source file
  80.         # put '$dep' in front of dependencies
  81.         dep=`echo "$i" | sed -e 's,/,\\\\/,g' -e 's/\.c$/.o/'`
  82.  
  83.         # Find includes, remove leading numerics, remove ./,
  84.         # remove double quotes, and remove trailing numerics.
  85.         # Sort that, discarding duplicates, and add '$dep'.
  86.         cpp $INCL $FLAGS "$i" | sed -e '
  87.             /^#/!d
  88.             s/# [0-9]* //
  89.             s,"./,",
  90.             s/"\(.*\)"/\1/
  91.             s/ [ 0-9]*$//' |
  92.         sort -u | sed -e "s/^/$dep: /";;
  93.     esac
  94. done |
  95. sed "
  96.     s; \./; ;g
  97.     /\.c:$/d
  98.     $SED" |
  99. awk '{
  100.     if ($1 != prev) {
  101.         if (rec != "")
  102.             print rec;
  103.         rec = $0;
  104.         prev = $1;
  105.     }
  106.     else {
  107.         if (length(rec $2) > 78) {
  108.             print rec;
  109.             rec = $0;
  110.         }
  111.         else
  112.             rec = rec " " $2
  113.     }
  114. }
  115. END {
  116.     print rec
  117. }' >> $TMP
  118.  
  119. cat << _EOF_ >> $TMP
  120.  
  121. # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
  122. _EOF_
  123.  
  124. # copy to preserve permissions
  125. cp $TMP $MAKE
  126. rm -f $TMP
  127. exit 0
  128.