mkdep
上传用户:tjescc
上传日期:2021-02-23
资源大小:419k
文件大小:2k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. #!/bin/sh -
  2. #
  3. # Copyright (c) 1994, 1996
  4. # The Regents of the University of California.  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:/usr/local:/usr/local/bin
  16. export PATH
  17. MAKE=Makefile # default makefile name is "Makefile"
  18. CC=cc # default C compiler is "cc"
  19. while :
  20. do case "$1" in
  21. # -c allows you to specify the C compiler
  22. -c)
  23. CC=$2
  24. shift; shift ;;
  25. # -f allows you to select a makefile name
  26. -f)
  27. MAKE=$2
  28. shift; shift ;;
  29. # the -p flag produces "program: program.c" style dependencies
  30. # so .o's don't get produced
  31. -p)
  32. SED='s;.o;;'
  33. shift ;;
  34. *)
  35. break ;;
  36. esac
  37. done
  38. if [ $# = 0 ] ; then
  39. echo 'usage: mkdep [-p] [-c cc] [-f makefile] [flags] file ...'
  40. exit 1
  41. fi
  42. if [ ! -w $MAKE ]; then
  43. echo "mkdep: no writeable file "$MAKE""
  44. exit 1
  45. fi
  46. TMP=/tmp/mkdep$$
  47. trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
  48. cp $MAKE ${MAKE}.bak
  49. sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
  50. cat << _EOF_ >> $TMP
  51. # DO NOT DELETE THIS LINE -- mkdep uses it.
  52. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
  53. _EOF_
  54. # If your compiler doesn't have -M, add it.  If you can't, the next two
  55. # lines will try and replace the "cc -M".  The real problem is that this
  56. # hack can't deal with anything that requires a search path, and doesn't
  57. # even try for anything using bracket (<>) syntax.
  58. #
  59. # egrep '^#include[  ]*".*"' /dev/null $* |
  60. # sed -e 's/:[^"]*"([^"]*)".*/: 1/' -e 's/.c/.o/' |
  61. # XXX this doesn't work with things like "-DDECLWAITSTATUS=union wait"
  62. $CC -M $* |
  63. sed "
  64. s; ./; ;g
  65. $SED" |
  66. awk '{
  67. if ($1 != prev) {
  68. if (rec != "")
  69. print rec;
  70. rec = $0;
  71. prev = $1;
  72. }
  73. else {
  74. if (length(rec $2) > 78) {
  75. print rec;
  76. rec = $0;
  77. }
  78. else
  79. rec = rec " " $2
  80. }
  81. }
  82. END {
  83. print rec
  84. }' >> $TMP
  85. cat << _EOF_ >> $TMP
  86. # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
  87. _EOF_
  88. # copy to preserve permissions
  89. cp $TMP $MAKE
  90. rm -f ${MAKE}.bak $TMP
  91. exit 0