mkdep 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #!/bin/sh -
  2. #
  3. # $OpenBSD: mkdep.gcc.sh,v 1.8 1998/09/02 06:40:07 deraadt Exp $
  4. # $NetBSD: mkdep.gcc.sh,v 1.9 1994/12/23 07:34:59 jtc Exp $
  5. #
  6. # Copyright (c) 1991, 1993
  7. # The Regents of the University of California. All rights reserved.
  8. #
  9. # Redistribution and use in source and binary forms, with or without
  10. # modification, are permitted provided that the following conditions
  11. # are met:
  12. # 1. Redistributions of source code must retain the above copyright
  13. # notice, this list of conditions and the following disclaimer.
  14. # 2. Redistributions in binary form must reproduce the above copyright
  15. # notice, this list of conditions and the following disclaimer in the
  16. # documentation and/or other materials provided with the distribution.
  17. # 3. All advertising materials mentioning features or use of this software
  18. # must display the following acknowledgement:
  19. # This product includes software developed by the University of
  20. # California, Berkeley and its contributors.
  21. # 4. Neither the name of the University nor the names of its contributors
  22. # may be used to endorse or promote products derived from this software
  23. # without specific prior written permission.
  24. #
  25. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  26. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  27. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  28. # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  29. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  30. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  31. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  32. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  33. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  34. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  35. # SUCH DAMAGE.
  36. #
  37. # @(#)mkdep.gcc.sh 8.1 (Berkeley) 6/6/93
  38. #
  39. D=.depend # default dependency file is .depend
  40. append=0
  41. pflag=
  42. while :
  43. do case "$1" in
  44. # -a appends to the depend file
  45. -a)
  46. append=1
  47. shift ;;
  48. # -f allows you to select a makefile name
  49. -f)
  50. D=$2
  51. shift; shift ;;
  52. # the -p flag produces "program: program.c" style dependencies
  53. # so .o's don't get produced
  54. -p)
  55. pflag=p
  56. shift ;;
  57. *)
  58. break ;;
  59. esac
  60. done
  61. if [ $# = 0 ] ; then
  62. echo 'usage: mkdep [-p] [-f depend_file] [cc_flags] file ...'
  63. exit 1
  64. fi
  65. DTMP=/tmp/mkdep$$
  66. TMP=$DTMP/mkdep
  67. um=`umask`
  68. umask 022
  69. if ! mkdir $DTMP ; then
  70. echo failed to create tmp dir $DTMP
  71. exit 1
  72. fi
  73. umask $um
  74. trap 'rm -rf $DTMP ; trap 2 ; kill -2 $$' 1 2 3 13 15
  75. if [ x$pflag = x ]; then
  76. ${CC:-cc} -M "$@" 2>/dev/null | sed -e 's; \./; ;g' > $TMP
  77. else
  78. ${CC:-cc} -M "$@" 2>/dev/null | sed -e 's;\.o :; :;' -e 's; \./; ;g' > $TMP
  79. fi
  80. if [ $? != 0 ]; then
  81. echo 'mkdep: compile failed.'
  82. rm -rf $DTMP
  83. exit 1
  84. fi
  85. if [ $append = 1 ]; then
  86. cat $TMP >> $D
  87. if [ $? != 0 ]; then
  88. echo 'mkdep: append failed.'
  89. rm -rf $DTMP
  90. exit 1
  91. fi
  92. else
  93. mv $TMP $D
  94. if [ $? != 0 ]; then
  95. echo 'mkdep: rename failed.'
  96. rm -rf $DTMP
  97. exit 1
  98. fi
  99. fi
  100. rm -rf $DTMP
  101. exit 0