mkdep
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. #!/bin/bash -
  2. #
  3. # Copyright (c) 1987 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 this notice is preserved and that due credit is given
  8. # to the University of California at Berkeley. The name of the University
  9. # may not be used to endorse or promote products derived from this
  10. # software without specific prior written permission. This software
  11. # is provided ``as is'' without express or implied warranty.
  12. #
  13. # @(#)mkdep.sh 5.11 (Berkeley) 5/5/88
  14. #
  15. #PATH=/bin:/usr/bin:/usr/ucb
  16. #export PATH
  17. MAKE=Makefile # default makefile name is "Makefile"
  18. while :
  19. do case "$1" in
  20. # -f allows you to select a makefile name
  21. -f)
  22. MAKE=$2
  23. shift; shift ;;
  24. # the -p flag produces "program: program.c" style dependencies
  25. # so .o's don't get produced
  26. -p)
  27. SED='s;.o;;'
  28. shift ;;
  29. *)
  30. break ;;
  31. esac
  32. done
  33. if [ $# = 0 ] ; then
  34. echo 'usage: mkdep [-p] [-f makefile] [flags] file ...'
  35. exit 1
  36. fi
  37. if [ ! -w $MAKE ]; then
  38. echo "mkdep: no writeable file "$MAKE""
  39. exit 1
  40. fi
  41. TMP=/tmp/mkdep$$
  42. trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
  43. cp $MAKE ${MAKE}.bak
  44. sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
  45. cat << _EOF_ >> $TMP
  46. # DO NOT DELETE THIS LINE -- mkdep uses it.
  47. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
  48. _EOF_
  49. awk=awk
  50. if [ -x /bin/nawk ] ; then
  51. awk=/bin/nawk
  52. fi
  53. # If your compiler doesn't have -M, add it.  If you can't, the next two
  54. # lines will try and replace the "cc -M".  The real problem is that this
  55. # hack can't deal with anything that requires a search path, and doesn't
  56. # even try for anything using bracket (<>) syntax.
  57. #
  58. #egrep '^#include[  ]*".*"' /dev/null $* |
  59. #sed -e 's/:[^"]*"([^"]*)".*/: 1/' -e 's/.cc/.o/' |
  60. opts=""
  61. act="opts"
  62. for f in $*; do
  63. if [ "$f" == "--" ]; then
  64. act="files"
  65. continue
  66. fi
  67. if [ "$act" == "opts" ]; then
  68. opts="$opts $f"
  69. else
  70. g++ $opts -MM $f -MT ${f/%.c?/.o} |
  71. sed "
  72. s; ./; ;g
  73. $SED" >>$TMP
  74. fi
  75. done
  76. cat << _EOF_ >> $TMP
  77. # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
  78. _EOF_
  79. # copy to preserve permissions
  80. cp $TMP $MAKE
  81. rm -f ${MAKE}.bak $TMP
  82. exit 0