comparison kdiff3/admin/compile @ 69:8febbfb1148c

KDiff3 0.9.89
author joachim99
date Mon, 10 Apr 2006 08:40:51 +0000
parents 415083d043f3
children
comparison
equal deleted inserted replaced
68:d7cafcda8c99 69:8febbfb1148c
1 #! /bin/sh 1 #! /bin/sh
2
3 # Wrapper for compilers which do not understand `-c -o'. 2 # Wrapper for compilers which do not understand `-c -o'.
4 3
5 # Copyright 1999, 2000 Free Software Foundation, Inc. 4 scriptversion=2005-05-14.22
5
6 # Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
6 # Written by Tom Tromey <tromey@cygnus.com>. 7 # Written by Tom Tromey <tromey@cygnus.com>.
7 # 8 #
8 # This program is free software; you can redistribute it and/or modify 9 # 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 # 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 # the Free Software Foundation; either version 2, or (at your option)
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details. 17 # GNU General Public License for more details.
17 # 18 #
18 # You should have received a copy of the GNU General Public License 19 # 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 # 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 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 22
22 # As a special exception to the GNU General Public License, if you 23 # 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 # distribute this file as part of a program that contains a
24 # configuration script generated by Autoconf, you may include it under 25 # 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 # the same distribution terms that you use for the rest of that program.
26 27
27 # Usage: 28 # This file is maintained in Automake, please report
28 # compile PROGRAM [ARGS]... 29 # bugs to <bug-automake@gnu.org> or send patches to
29 # `-o FOO.o' is removed from the args passed to the actual compile. 30 # <automake-patches@gnu.org>.
30 31
31 prog=$1 32 case $1 in
32 shift 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
33 57
34 ofile= 58 ofile=
35 cfile= 59 cfile=
36 args= 60 eat=
37 while test $# -gt 0; do 61
38 case "$1" in 62 for arg
39 -o) 63 do
40 # configure might choose to run compile as `compile cc -o foo foo.c'. 64 if test -n "$eat"; then
41 # So we do something ugly here. 65 eat=
42 ofile=$2 66 else
43 shift 67 case $1 in
44 case "$ofile" in 68 -o)
45 *.o | *.obj) 69 # configure might choose to run compile as `compile cc -o foo foo.c'.
46 ;; 70 # So we strip `-o arg' only if arg is an object.
47 *) 71 eat=1
48 args="$args -o $ofile" 72 case $2 in
49 ofile= 73 *.o | *.obj)
50 ;; 74 ofile=$2
51 esac 75 ;;
52 ;; 76 *)
53 *.c) 77 set x "$@" -o "$2"
54 cfile=$1 78 shift
55 args="$args $1" 79 ;;
56 ;; 80 esac
57 *) 81 ;;
58 args="$args $1" 82 *.c)
59 ;; 83 cfile=$1
60 esac 84 set x "$@" "$1"
61 shift 85 shift
86 ;;
87 *)
88 set x "$@" "$1"
89 shift
90 ;;
91 esac
92 fi
93 shift
62 done 94 done
63 95
64 if test -z "$ofile" || test -z "$cfile"; then 96 if test -z "$ofile" || test -z "$cfile"; then
65 # If no `-o' option was seen then we might have been invoked from a 97 # 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 98 # 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 99 # normal compilation that the losing compiler can handle. If no
68 # `.c' file was seen then we are probably linking. That is also 100 # `.c' file was seen then we are probably linking. That is also
69 # ok. 101 # ok.
70 exec "$prog" $args 102 exec "$@"
71 fi 103 fi
72 104
73 # Name of file we expect compiler to create. 105 # Name of file we expect compiler to create.
74 cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'` 106 cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
75 107
76 # Create the lock directory. 108 # Create the lock directory.
77 # Note: use `[/.-]' here to ensure that we don't use the same name 109 # 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 110 # 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. 111 # object file name, since that is what matters with a parallel build.
80 lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d 112 lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
81 while true; do 113 while true; do
82 if mkdir $lockdir > /dev/null 2>&1; then 114 if mkdir "$lockdir" >/dev/null 2>&1; then
83 break 115 break
84 fi 116 fi
85 sleep 1 117 sleep 1
86 done 118 done
87 # FIXME: race condition here if user kills between mkdir and trap. 119 # FIXME: race condition here if user kills between mkdir and trap.
88 trap "rmdir $lockdir; exit 1" 1 2 15 120 trap "rmdir '$lockdir'; exit 1" 1 2 15
89 121
90 # Run the compile. 122 # Run the compile.
91 "$prog" $args 123 "$@"
92 status=$? 124 ret=$?
93 125
94 if test -f "$cofile"; then 126 if test -f "$cofile"; then
95 mv "$cofile" "$ofile" 127 mv "$cofile" "$ofile"
128 elif test -f "${cofile}bj"; then
129 mv "${cofile}bj" "$ofile"
96 fi 130 fi
97 131
98 rmdir $lockdir 132 rmdir "$lockdir"
99 exit $status 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: