home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.bin / mkdep / mkdep.append < prev    next >
Encoding:
Text File  |  1991-04-12  |  3.3 KB  |  124 lines

  1. #!/bin/sh -
  2. #
  3. # Copyright (c) 1991 The Regents of the University of California.
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms, with or without
  7. # modification, are permitted provided that the following conditions
  8. # are met:
  9. # 1. Redistributions of source code must retain the above copyright
  10. #    notice, this list of conditions and the following disclaimer.
  11. # 2. Redistributions in binary form must reproduce the above copyright
  12. #    notice, this list of conditions and the following disclaimer in the
  13. #    documentation and/or other materials provided with the distribution.
  14. # 3. All advertising materials mentioning features or use of this software
  15. #    must display the following acknowledgement:
  16. #    This product includes software developed by the University of
  17. #    California, Berkeley and its contributors.
  18. # 4. Neither the name of the University nor the names of its contributors
  19. #    may be used to endorse or promote products derived from this software
  20. #    without specific prior written permission.
  21. #
  22. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  23. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  26. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32. # SUCH DAMAGE.
  33. #
  34. #    @(#)mkdep.append    5.2 (Berkeley) 4/12/91
  35. #
  36.  
  37. PATH=/bin:/usr/bin:/usr/ucb
  38. export PATH
  39.  
  40. MAKE=Makefile            # default makefile name is "Makefile"
  41.  
  42. while :
  43.     do case "$1" in
  44.         # -f allows you to select a makefile name
  45.         -f)
  46.             MAKE=$2
  47.             shift; shift ;;
  48.  
  49.         # the -p flag produces "program: program.c" style dependencies
  50.         # so .o's don't get produced
  51.         -p)
  52.             SED='s;\.o;;'
  53.             shift ;;
  54.         *)
  55.             break ;;
  56.     esac
  57. done
  58.  
  59. if [ $# = 0 ] ; then
  60.     echo 'usage: mkdep [-p] [-f makefile] [flags] file ...'
  61.     exit 1
  62. fi
  63.  
  64. if [ ! -w $MAKE ]; then
  65.     echo "mkdep: no writeable file \"$MAKE\""
  66.     exit 1
  67. fi
  68.  
  69. TMP=/tmp/mkdep$$
  70.  
  71. trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
  72.  
  73. cp $MAKE ${MAKE}.bak
  74.  
  75. sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
  76.  
  77. cat << _EOF_ >> $TMP
  78. # DO NOT DELETE THIS LINE -- mkdep uses it.
  79. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
  80.  
  81. _EOF_
  82.  
  83. # If your compiler doesn't have -M, add it.  If you can't, the next two
  84. # lines will try and replace the "cc -M".  The real problem is that this
  85. # hack can't deal with anything that requires a search path, and doesn't
  86. # even try for anything using bracket (<>) syntax.
  87. #
  88. # egrep '^#include[     ]*".*"' /dev/null $* |
  89. # sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' |
  90.  
  91. cc -M $* |
  92. sed "
  93.     s; \./; ;g
  94.     $SED" |
  95. awk '{
  96.     if ($1 != prev) {
  97.         if (rec != "")
  98.             print rec;
  99.         rec = $0;
  100.         prev = $1;
  101.     }
  102.     else {
  103.         if (length(rec $2) > 78) {
  104.             print rec;
  105.             rec = $0;
  106.         }
  107.         else
  108.             rec = rec " " $2
  109.     }
  110. }
  111. END {
  112.     print rec
  113. }' >> $TMP
  114.  
  115. cat << _EOF_ >> $TMP
  116.  
  117. # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
  118. _EOF_
  119.  
  120. # copy to preserve permissions
  121. cp $TMP $MAKE
  122. rm -f ${MAKE}.bak $TMP
  123. exit 0
  124.