[BACK]Return to compile CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_toolkit

Annotation of OpenXM/src/ox_toolkit/compile, Revision 1.1

1.1     ! ohara       1: #! /bin/sh
        !             2:
        !             3: # Wrapper for compilers which do not understand `-c -o'.
        !             4:
        !             5: # Copyright 1999, 2000 Free Software Foundation, Inc.
        !             6: # Written by Tom Tromey <tromey@cygnus.com>.
        !             7: #
        !             8: # This program is free software; you can redistribute it and/or modify
        !             9: # it under the terms of the GNU General Public License as published by
        !            10: # the Free Software Foundation; either version 2, or (at your option)
        !            11: # any later version.
        !            12: #
        !            13: # This program is distributed in the hope that it will be useful,
        !            14: # but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            15: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            16: # GNU General Public License for more details.
        !            17: #
        !            18: # You should have received a copy of the GNU General Public License
        !            19: # along with this program; if not, write to the Free Software
        !            20: # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
        !            21:
        !            22: # As a special exception to the GNU General Public License, if you
        !            23: # distribute this file as part of a program that contains a
        !            24: # configuration script generated by Autoconf, you may include it under
        !            25: # the same distribution terms that you use for the rest of that program.
        !            26:
        !            27: # Usage:
        !            28: # compile PROGRAM [ARGS]...
        !            29: # `-o FOO.o' is removed from the args passed to the actual compile.
        !            30:
        !            31: prog=$1
        !            32: shift
        !            33:
        !            34: ofile=
        !            35: cfile=
        !            36: args=
        !            37: while test $# -gt 0; do
        !            38:    case "$1" in
        !            39:     -o)
        !            40:        # configure might choose to run compile as `compile cc -o foo foo.c'.
        !            41:        # So we do something ugly here.
        !            42:        ofile=$2
        !            43:        shift
        !            44:        case "$ofile" in
        !            45:        *.o | *.obj)
        !            46:           ;;
        !            47:        *)
        !            48:           args="$args -o $ofile"
        !            49:           ofile=
        !            50:           ;;
        !            51:        esac
        !            52:        ;;
        !            53:     *.c)
        !            54:        cfile=$1
        !            55:        args="$args $1"
        !            56:        ;;
        !            57:     *)
        !            58:        args="$args $1"
        !            59:        ;;
        !            60:    esac
        !            61:    shift
        !            62: done
        !            63:
        !            64: if test -z "$ofile" || test -z "$cfile"; then
        !            65:    # If no `-o' option was seen then we might have been invoked from a
        !            66:    # pattern rule where we don't need one.  That is ok -- this is a
        !            67:    # normal compilation that the losing compiler can handle.  If no
        !            68:    # `.c' file was seen then we are probably linking.  That is also
        !            69:    # ok.
        !            70:    exec "$prog" $args
        !            71: fi
        !            72:
        !            73: # Name of file we expect compiler to create.
        !            74: cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
        !            75:
        !            76: # Create the lock directory.
        !            77: # Note: use `[/.-]' here to ensure that we don't use the same name
        !            78: # that we are using for the .o file.  Also, base the name on the expected
        !            79: # object file name, since that is what matters with a parallel build.
        !            80: lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
        !            81: while true; do
        !            82:    if mkdir $lockdir > /dev/null 2>&1; then
        !            83:       break
        !            84:    fi
        !            85:    sleep 1
        !            86: done
        !            87: # FIXME: race condition here if user kills between mkdir and trap.
        !            88: trap "rmdir $lockdir; exit 1" 1 2 15
        !            89:
        !            90: # Run the compile.
        !            91: "$prog" $args
        !            92: status=$?
        !            93:
        !            94: if test -f "$cofile"; then
        !            95:    mv "$cofile" "$ofile"
        !            96: fi
        !            97:
        !            98: rmdir $lockdir
        !            99: exit $status

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>