Annotation of embedaddon/ntp/compile, revision 1.1
1.1 ! misho 1: #! /bin/sh
! 2: # Wrapper for compilers which do not understand `-c -o'.
! 3:
! 4: scriptversion=2005-05-14.22
! 5:
! 6: # Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
! 7: # Written by Tom Tromey <tromey@cygnus.com>.
! 8: #
! 9: # This program is free software; you can redistribute it and/or modify
! 10: # it under the terms of the GNU General Public License as published by
! 11: # the Free Software Foundation; either version 2, or (at your option)
! 12: # any later version.
! 13: #
! 14: # This program is distributed in the hope that it will be useful,
! 15: # but WITHOUT ANY WARRANTY; without even the implied warranty of
! 16: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 17: # GNU General Public License for more details.
! 18: #
! 19: # You should have received a copy of the GNU General Public License
! 20: # along with this program; if not, write to the Free Software
! 21: # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
! 22:
! 23: # As a special exception to the GNU General Public License, if you
! 24: # distribute this file as part of a program that contains a
! 25: # configuration script generated by Autoconf, you may include it under
! 26: # the same distribution terms that you use for the rest of that program.
! 27:
! 28: # This file is maintained in Automake, please report
! 29: # bugs to <bug-automake@gnu.org> or send patches to
! 30: # <automake-patches@gnu.org>.
! 31:
! 32: case $1 in
! 33: '')
! 34: echo "$0: No command. Try \`$0 --help' for more information." 1>&2
! 35: exit 1;
! 36: ;;
! 37: -h | --h*)
! 38: cat <<\EOF
! 39: Usage: compile [--help] [--version] PROGRAM [ARGS]
! 40:
! 41: Wrapper for compilers which do not understand `-c -o'.
! 42: Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
! 43: arguments, and rename the output as expected.
! 44:
! 45: If you are trying to build a whole package this is not the
! 46: right script to run: please start by reading the file `INSTALL'.
! 47:
! 48: Report bugs to <bug-automake@gnu.org>.
! 49: EOF
! 50: exit $?
! 51: ;;
! 52: -v | --v*)
! 53: echo "compile $scriptversion"
! 54: exit $?
! 55: ;;
! 56: esac
! 57:
! 58: ofile=
! 59: cfile=
! 60: eat=
! 61:
! 62: for arg
! 63: do
! 64: if test -n "$eat"; then
! 65: eat=
! 66: else
! 67: case $1 in
! 68: -o)
! 69: # configure might choose to run compile as `compile cc -o foo foo.c'.
! 70: # So we strip `-o arg' only if arg is an object.
! 71: eat=1
! 72: case $2 in
! 73: *.o | *.obj)
! 74: ofile=$2
! 75: ;;
! 76: *)
! 77: set x "$@" -o "$2"
! 78: shift
! 79: ;;
! 80: esac
! 81: ;;
! 82: *.c)
! 83: cfile=$1
! 84: set x "$@" "$1"
! 85: shift
! 86: ;;
! 87: *)
! 88: set x "$@" "$1"
! 89: shift
! 90: ;;
! 91: esac
! 92: fi
! 93: shift
! 94: done
! 95:
! 96: if test -z "$ofile" || test -z "$cfile"; then
! 97: # If no `-o' option was seen then we might have been invoked from a
! 98: # pattern rule where we don't need one. That is ok -- this is a
! 99: # normal compilation that the losing compiler can handle. If no
! 100: # `.c' file was seen then we are probably linking. That is also
! 101: # ok.
! 102: exec "$@"
! 103: fi
! 104:
! 105: # Name of file we expect compiler to create.
! 106: cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
! 107:
! 108: # Create the lock directory.
! 109: # Note: use `[/.-]' here to ensure that we don't use the same name
! 110: # that we are using for the .o file. Also, base the name on the expected
! 111: # object file name, since that is what matters with a parallel build.
! 112: lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
! 113: while true; do
! 114: if mkdir "$lockdir" >/dev/null 2>&1; then
! 115: break
! 116: fi
! 117: sleep 1
! 118: done
! 119: # FIXME: race condition here if user kills between mkdir and trap.
! 120: trap "rmdir '$lockdir'; exit 1" 1 2 15
! 121:
! 122: # Run the compile.
! 123: "$@"
! 124: ret=$?
! 125:
! 126: if test -f "$cofile"; then
! 127: mv "$cofile" "$ofile"
! 128: elif test -f "${cofile}bj"; then
! 129: mv "${cofile}bj" "$ofile"
! 130: fi
! 131:
! 132: rmdir "$lockdir"
! 133: exit $ret
! 134:
! 135: # Local Variables:
! 136: # mode: shell-script
! 137: # sh-indentation: 2
! 138: # eval: (add-hook 'write-file-hooks 'time-stamp)
! 139: # time-stamp-start: "scriptversion="
! 140: # time-stamp-format: "%:y-%02m-%02d.%02H"
! 141: # time-stamp-end: "$"
! 142: # End:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>