home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.bin / mkdep / mkdep.sh < prev    next >
Encoding:
Linux/UNIX/POSIX Shell Script  |  1991-04-12  |  2.8 KB  |  112 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.sh    5.19 (Berkeley) 4/12/91
  35. #
  36.  
  37. PATH=/bin:/usr/bin:/usr/ucb
  38. export PATH
  39.  
  40. D=.depend            # default dependency file is .depend
  41. append=0
  42.  
  43. while :
  44.     do case "$1" in
  45.         # -a appends to the depend file
  46.         -a)
  47.             append=1
  48.             shift ;;
  49.  
  50.         # -f allows you to select a makefile name
  51.         -f)
  52.             D=$2
  53.             shift; shift ;;
  54.  
  55.         # the -p flag produces "program: program.c" style dependencies
  56.         # so .o's don't get produced
  57.         -p)
  58.             SED='s;\.o;;'
  59.             shift ;;
  60.         *)
  61.             break ;;
  62.     esac
  63. done
  64.  
  65. if [ $# = 0 ] ; then
  66.     echo 'usage: mkdep [-p] [-f depend_file] [cc_flags] file ...'
  67.     exit 1
  68. fi
  69.  
  70. TMP=/tmp/mkdep$$
  71.  
  72. trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
  73.  
  74. cc -M $* |
  75. sed "
  76.     s; \./; ;g
  77.     /\.c:$/d
  78.     $SED" |
  79. awk '{
  80.     if ($1 != prev) {
  81.         if (rec != "")
  82.             print rec;
  83.         rec = $0;
  84.         prev = $1;
  85.     }
  86.     else {
  87.         if (length(rec $2) > 78) {
  88.             print rec;
  89.             rec = $0;
  90.         }
  91.         else
  92.             rec = rec " " $2
  93.     }
  94. }
  95. END {
  96.     print rec
  97. }' > $TMP
  98.  
  99. if [ $? != 0 ]; then
  100.     echo 'mkdep: compile failed.'
  101.     rm -f $TMP
  102.     exit 1
  103. fi
  104.  
  105. if [ $append = 1 ]; then
  106.     cat $TMP >> $D
  107.     rm -f $TMP
  108. else
  109.     mv $TMP $D
  110. fi
  111. exit 0
  112.