1*1fd5a2e1SPrashanth Swaminathan#! /bin/sh 2*1fd5a2e1SPrashanth Swaminathan# Wrapper for compilers which do not understand '-c -o'. 3*1fd5a2e1SPrashanth Swaminathan 4*1fd5a2e1SPrashanth Swaminathanscriptversion=2018-03-27.18; # UTC 5*1fd5a2e1SPrashanth Swaminathan 6*1fd5a2e1SPrashanth Swaminathan# Copyright (C) 1999-2018 Free Software Foundation, Inc. 7*1fd5a2e1SPrashanth Swaminathan# Written by Tom Tromey <[email protected]>. 8*1fd5a2e1SPrashanth Swaminathan# 9*1fd5a2e1SPrashanth Swaminathan# This program is free software; you can redistribute it and/or modify 10*1fd5a2e1SPrashanth Swaminathan# it under the terms of the GNU General Public License as published by 11*1fd5a2e1SPrashanth Swaminathan# the Free Software Foundation; either version 2, or (at your option) 12*1fd5a2e1SPrashanth Swaminathan# any later version. 13*1fd5a2e1SPrashanth Swaminathan# 14*1fd5a2e1SPrashanth Swaminathan# This program is distributed in the hope that it will be useful, 15*1fd5a2e1SPrashanth Swaminathan# but WITHOUT ANY WARRANTY; without even the implied warranty of 16*1fd5a2e1SPrashanth Swaminathan# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*1fd5a2e1SPrashanth Swaminathan# GNU General Public License for more details. 18*1fd5a2e1SPrashanth Swaminathan# 19*1fd5a2e1SPrashanth Swaminathan# You should have received a copy of the GNU General Public License 20*1fd5a2e1SPrashanth Swaminathan# along with this program. If not, see <https://www.gnu.org/licenses/>. 21*1fd5a2e1SPrashanth Swaminathan 22*1fd5a2e1SPrashanth Swaminathan# As a special exception to the GNU General Public License, if you 23*1fd5a2e1SPrashanth Swaminathan# distribute this file as part of a program that contains a 24*1fd5a2e1SPrashanth Swaminathan# configuration script generated by Autoconf, you may include it under 25*1fd5a2e1SPrashanth Swaminathan# the same distribution terms that you use for the rest of that program. 26*1fd5a2e1SPrashanth Swaminathan 27*1fd5a2e1SPrashanth Swaminathan# This file is maintained in Automake, please report 28*1fd5a2e1SPrashanth Swaminathan# bugs to <[email protected]> or send patches to 29*1fd5a2e1SPrashanth Swaminathan# <[email protected]>. 30*1fd5a2e1SPrashanth Swaminathan 31*1fd5a2e1SPrashanth Swaminathannl=' 32*1fd5a2e1SPrashanth Swaminathan' 33*1fd5a2e1SPrashanth Swaminathan 34*1fd5a2e1SPrashanth Swaminathan# We need space, tab and new line, in precisely that order. Quoting is 35*1fd5a2e1SPrashanth Swaminathan# there to prevent tools from complaining about whitespace usage. 36*1fd5a2e1SPrashanth SwaminathanIFS=" "" $nl" 37*1fd5a2e1SPrashanth Swaminathan 38*1fd5a2e1SPrashanth Swaminathanfile_conv= 39*1fd5a2e1SPrashanth Swaminathan 40*1fd5a2e1SPrashanth Swaminathan# func_file_conv build_file lazy 41*1fd5a2e1SPrashanth Swaminathan# Convert a $build file to $host form and store it in $file 42*1fd5a2e1SPrashanth Swaminathan# Currently only supports Windows hosts. If the determined conversion 43*1fd5a2e1SPrashanth Swaminathan# type is listed in (the comma separated) LAZY, no conversion will 44*1fd5a2e1SPrashanth Swaminathan# take place. 45*1fd5a2e1SPrashanth Swaminathanfunc_file_conv () 46*1fd5a2e1SPrashanth Swaminathan{ 47*1fd5a2e1SPrashanth Swaminathan file=$1 48*1fd5a2e1SPrashanth Swaminathan case $file in 49*1fd5a2e1SPrashanth Swaminathan / | /[!/]*) # absolute file, and not a UNC file 50*1fd5a2e1SPrashanth Swaminathan if test -z "$file_conv"; then 51*1fd5a2e1SPrashanth Swaminathan # lazily determine how to convert abs files 52*1fd5a2e1SPrashanth Swaminathan case `uname -s` in 53*1fd5a2e1SPrashanth Swaminathan MINGW*) 54*1fd5a2e1SPrashanth Swaminathan file_conv=mingw 55*1fd5a2e1SPrashanth Swaminathan ;; 56*1fd5a2e1SPrashanth Swaminathan CYGWIN*) 57*1fd5a2e1SPrashanth Swaminathan file_conv=cygwin 58*1fd5a2e1SPrashanth Swaminathan ;; 59*1fd5a2e1SPrashanth Swaminathan *) 60*1fd5a2e1SPrashanth Swaminathan file_conv=wine 61*1fd5a2e1SPrashanth Swaminathan ;; 62*1fd5a2e1SPrashanth Swaminathan esac 63*1fd5a2e1SPrashanth Swaminathan fi 64*1fd5a2e1SPrashanth Swaminathan case $file_conv/,$2, in 65*1fd5a2e1SPrashanth Swaminathan *,$file_conv,*) 66*1fd5a2e1SPrashanth Swaminathan ;; 67*1fd5a2e1SPrashanth Swaminathan mingw/*) 68*1fd5a2e1SPrashanth Swaminathan file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` 69*1fd5a2e1SPrashanth Swaminathan ;; 70*1fd5a2e1SPrashanth Swaminathan cygwin/*) 71*1fd5a2e1SPrashanth Swaminathan file=`cygpath -m "$file" || echo "$file"` 72*1fd5a2e1SPrashanth Swaminathan ;; 73*1fd5a2e1SPrashanth Swaminathan wine/*) 74*1fd5a2e1SPrashanth Swaminathan file=`winepath -w "$file" || echo "$file"` 75*1fd5a2e1SPrashanth Swaminathan ;; 76*1fd5a2e1SPrashanth Swaminathan esac 77*1fd5a2e1SPrashanth Swaminathan ;; 78*1fd5a2e1SPrashanth Swaminathan esac 79*1fd5a2e1SPrashanth Swaminathan} 80*1fd5a2e1SPrashanth Swaminathan 81*1fd5a2e1SPrashanth Swaminathan# func_cl_dashL linkdir 82*1fd5a2e1SPrashanth Swaminathan# Make cl look for libraries in LINKDIR 83*1fd5a2e1SPrashanth Swaminathanfunc_cl_dashL () 84*1fd5a2e1SPrashanth Swaminathan{ 85*1fd5a2e1SPrashanth Swaminathan func_file_conv "$1" 86*1fd5a2e1SPrashanth Swaminathan if test -z "$lib_path"; then 87*1fd5a2e1SPrashanth Swaminathan lib_path=$file 88*1fd5a2e1SPrashanth Swaminathan else 89*1fd5a2e1SPrashanth Swaminathan lib_path="$lib_path;$file" 90*1fd5a2e1SPrashanth Swaminathan fi 91*1fd5a2e1SPrashanth Swaminathan linker_opts="$linker_opts -LIBPATH:$file" 92*1fd5a2e1SPrashanth Swaminathan} 93*1fd5a2e1SPrashanth Swaminathan 94*1fd5a2e1SPrashanth Swaminathan# func_cl_dashl library 95*1fd5a2e1SPrashanth Swaminathan# Do a library search-path lookup for cl 96*1fd5a2e1SPrashanth Swaminathanfunc_cl_dashl () 97*1fd5a2e1SPrashanth Swaminathan{ 98*1fd5a2e1SPrashanth Swaminathan lib=$1 99*1fd5a2e1SPrashanth Swaminathan found=no 100*1fd5a2e1SPrashanth Swaminathan save_IFS=$IFS 101*1fd5a2e1SPrashanth Swaminathan IFS=';' 102*1fd5a2e1SPrashanth Swaminathan for dir in $lib_path $LIB 103*1fd5a2e1SPrashanth Swaminathan do 104*1fd5a2e1SPrashanth Swaminathan IFS=$save_IFS 105*1fd5a2e1SPrashanth Swaminathan if $shared && test -f "$dir/$lib.dll.lib"; then 106*1fd5a2e1SPrashanth Swaminathan found=yes 107*1fd5a2e1SPrashanth Swaminathan lib=$dir/$lib.dll.lib 108*1fd5a2e1SPrashanth Swaminathan break 109*1fd5a2e1SPrashanth Swaminathan fi 110*1fd5a2e1SPrashanth Swaminathan if test -f "$dir/$lib.lib"; then 111*1fd5a2e1SPrashanth Swaminathan found=yes 112*1fd5a2e1SPrashanth Swaminathan lib=$dir/$lib.lib 113*1fd5a2e1SPrashanth Swaminathan break 114*1fd5a2e1SPrashanth Swaminathan fi 115*1fd5a2e1SPrashanth Swaminathan if test -f "$dir/lib$lib.a"; then 116*1fd5a2e1SPrashanth Swaminathan found=yes 117*1fd5a2e1SPrashanth Swaminathan lib=$dir/lib$lib.a 118*1fd5a2e1SPrashanth Swaminathan break 119*1fd5a2e1SPrashanth Swaminathan fi 120*1fd5a2e1SPrashanth Swaminathan done 121*1fd5a2e1SPrashanth Swaminathan IFS=$save_IFS 122*1fd5a2e1SPrashanth Swaminathan 123*1fd5a2e1SPrashanth Swaminathan if test "$found" != yes; then 124*1fd5a2e1SPrashanth Swaminathan lib=$lib.lib 125*1fd5a2e1SPrashanth Swaminathan fi 126*1fd5a2e1SPrashanth Swaminathan} 127*1fd5a2e1SPrashanth Swaminathan 128*1fd5a2e1SPrashanth Swaminathan# func_cl_wrapper cl arg... 129*1fd5a2e1SPrashanth Swaminathan# Adjust compile command to suit cl 130*1fd5a2e1SPrashanth Swaminathanfunc_cl_wrapper () 131*1fd5a2e1SPrashanth Swaminathan{ 132*1fd5a2e1SPrashanth Swaminathan # Assume a capable shell 133*1fd5a2e1SPrashanth Swaminathan lib_path= 134*1fd5a2e1SPrashanth Swaminathan shared=: 135*1fd5a2e1SPrashanth Swaminathan linker_opts= 136*1fd5a2e1SPrashanth Swaminathan for arg 137*1fd5a2e1SPrashanth Swaminathan do 138*1fd5a2e1SPrashanth Swaminathan if test -n "$eat"; then 139*1fd5a2e1SPrashanth Swaminathan eat= 140*1fd5a2e1SPrashanth Swaminathan else 141*1fd5a2e1SPrashanth Swaminathan case $1 in 142*1fd5a2e1SPrashanth Swaminathan -o) 143*1fd5a2e1SPrashanth Swaminathan # configure might choose to run compile as 'compile cc -o foo foo.c'. 144*1fd5a2e1SPrashanth Swaminathan eat=1 145*1fd5a2e1SPrashanth Swaminathan case $2 in 146*1fd5a2e1SPrashanth Swaminathan *.o | *.[oO][bB][jJ]) 147*1fd5a2e1SPrashanth Swaminathan func_file_conv "$2" 148*1fd5a2e1SPrashanth Swaminathan set x "$@" -Fo"$file" 149*1fd5a2e1SPrashanth Swaminathan shift 150*1fd5a2e1SPrashanth Swaminathan ;; 151*1fd5a2e1SPrashanth Swaminathan *) 152*1fd5a2e1SPrashanth Swaminathan func_file_conv "$2" 153*1fd5a2e1SPrashanth Swaminathan set x "$@" -Fe"$file" 154*1fd5a2e1SPrashanth Swaminathan shift 155*1fd5a2e1SPrashanth Swaminathan ;; 156*1fd5a2e1SPrashanth Swaminathan esac 157*1fd5a2e1SPrashanth Swaminathan ;; 158*1fd5a2e1SPrashanth Swaminathan -I) 159*1fd5a2e1SPrashanth Swaminathan eat=1 160*1fd5a2e1SPrashanth Swaminathan func_file_conv "$2" mingw 161*1fd5a2e1SPrashanth Swaminathan set x "$@" -I"$file" 162*1fd5a2e1SPrashanth Swaminathan shift 163*1fd5a2e1SPrashanth Swaminathan ;; 164*1fd5a2e1SPrashanth Swaminathan -I*) 165*1fd5a2e1SPrashanth Swaminathan func_file_conv "${1#-I}" mingw 166*1fd5a2e1SPrashanth Swaminathan set x "$@" -I"$file" 167*1fd5a2e1SPrashanth Swaminathan shift 168*1fd5a2e1SPrashanth Swaminathan ;; 169*1fd5a2e1SPrashanth Swaminathan -l) 170*1fd5a2e1SPrashanth Swaminathan eat=1 171*1fd5a2e1SPrashanth Swaminathan func_cl_dashl "$2" 172*1fd5a2e1SPrashanth Swaminathan set x "$@" "$lib" 173*1fd5a2e1SPrashanth Swaminathan shift 174*1fd5a2e1SPrashanth Swaminathan ;; 175*1fd5a2e1SPrashanth Swaminathan -l*) 176*1fd5a2e1SPrashanth Swaminathan func_cl_dashl "${1#-l}" 177*1fd5a2e1SPrashanth Swaminathan set x "$@" "$lib" 178*1fd5a2e1SPrashanth Swaminathan shift 179*1fd5a2e1SPrashanth Swaminathan ;; 180*1fd5a2e1SPrashanth Swaminathan -L) 181*1fd5a2e1SPrashanth Swaminathan eat=1 182*1fd5a2e1SPrashanth Swaminathan func_cl_dashL "$2" 183*1fd5a2e1SPrashanth Swaminathan ;; 184*1fd5a2e1SPrashanth Swaminathan -L*) 185*1fd5a2e1SPrashanth Swaminathan func_cl_dashL "${1#-L}" 186*1fd5a2e1SPrashanth Swaminathan ;; 187*1fd5a2e1SPrashanth Swaminathan -static) 188*1fd5a2e1SPrashanth Swaminathan shared=false 189*1fd5a2e1SPrashanth Swaminathan ;; 190*1fd5a2e1SPrashanth Swaminathan -warn) 191*1fd5a2e1SPrashanth Swaminathan eat=1 192*1fd5a2e1SPrashanth Swaminathan ;; 193*1fd5a2e1SPrashanth Swaminathan -Wl,*) 194*1fd5a2e1SPrashanth Swaminathan arg=${1#-Wl,} 195*1fd5a2e1SPrashanth Swaminathan save_ifs="$IFS"; IFS=',' 196*1fd5a2e1SPrashanth Swaminathan for flag in $arg; do 197*1fd5a2e1SPrashanth Swaminathan IFS="$save_ifs" 198*1fd5a2e1SPrashanth Swaminathan linker_opts="$linker_opts $flag" 199*1fd5a2e1SPrashanth Swaminathan done 200*1fd5a2e1SPrashanth Swaminathan IFS="$save_ifs" 201*1fd5a2e1SPrashanth Swaminathan ;; 202*1fd5a2e1SPrashanth Swaminathan -Xlinker) 203*1fd5a2e1SPrashanth Swaminathan eat=1 204*1fd5a2e1SPrashanth Swaminathan linker_opts="$linker_opts $2" 205*1fd5a2e1SPrashanth Swaminathan ;; 206*1fd5a2e1SPrashanth Swaminathan -*) 207*1fd5a2e1SPrashanth Swaminathan set x "$@" "$1" 208*1fd5a2e1SPrashanth Swaminathan shift 209*1fd5a2e1SPrashanth Swaminathan ;; 210*1fd5a2e1SPrashanth Swaminathan *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) 211*1fd5a2e1SPrashanth Swaminathan func_file_conv "$1" 212*1fd5a2e1SPrashanth Swaminathan set x "$@" -Tp"$file" 213*1fd5a2e1SPrashanth Swaminathan shift 214*1fd5a2e1SPrashanth Swaminathan ;; 215*1fd5a2e1SPrashanth Swaminathan *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) 216*1fd5a2e1SPrashanth Swaminathan func_file_conv "$1" mingw 217*1fd5a2e1SPrashanth Swaminathan set x "$@" "$file" 218*1fd5a2e1SPrashanth Swaminathan shift 219*1fd5a2e1SPrashanth Swaminathan ;; 220*1fd5a2e1SPrashanth Swaminathan *) 221*1fd5a2e1SPrashanth Swaminathan set x "$@" "$1" 222*1fd5a2e1SPrashanth Swaminathan shift 223*1fd5a2e1SPrashanth Swaminathan ;; 224*1fd5a2e1SPrashanth Swaminathan esac 225*1fd5a2e1SPrashanth Swaminathan fi 226*1fd5a2e1SPrashanth Swaminathan shift 227*1fd5a2e1SPrashanth Swaminathan done 228*1fd5a2e1SPrashanth Swaminathan if test -n "$linker_opts"; then 229*1fd5a2e1SPrashanth Swaminathan linker_opts="-link$linker_opts" 230*1fd5a2e1SPrashanth Swaminathan fi 231*1fd5a2e1SPrashanth Swaminathan exec "$@" $linker_opts 232*1fd5a2e1SPrashanth Swaminathan exit 1 233*1fd5a2e1SPrashanth Swaminathan} 234*1fd5a2e1SPrashanth Swaminathan 235*1fd5a2e1SPrashanth Swaminathaneat= 236*1fd5a2e1SPrashanth Swaminathan 237*1fd5a2e1SPrashanth Swaminathancase $1 in 238*1fd5a2e1SPrashanth Swaminathan '') 239*1fd5a2e1SPrashanth Swaminathan echo "$0: No command. Try '$0 --help' for more information." 1>&2 240*1fd5a2e1SPrashanth Swaminathan exit 1; 241*1fd5a2e1SPrashanth Swaminathan ;; 242*1fd5a2e1SPrashanth Swaminathan -h | --h*) 243*1fd5a2e1SPrashanth Swaminathan cat <<\EOF 244*1fd5a2e1SPrashanth SwaminathanUsage: compile [--help] [--version] PROGRAM [ARGS] 245*1fd5a2e1SPrashanth Swaminathan 246*1fd5a2e1SPrashanth SwaminathanWrapper for compilers which do not understand '-c -o'. 247*1fd5a2e1SPrashanth SwaminathanRemove '-o dest.o' from ARGS, run PROGRAM with the remaining 248*1fd5a2e1SPrashanth Swaminathanarguments, and rename the output as expected. 249*1fd5a2e1SPrashanth Swaminathan 250*1fd5a2e1SPrashanth SwaminathanIf you are trying to build a whole package this is not the 251*1fd5a2e1SPrashanth Swaminathanright script to run: please start by reading the file 'INSTALL'. 252*1fd5a2e1SPrashanth Swaminathan 253*1fd5a2e1SPrashanth SwaminathanReport bugs to <bug-automake@gnu.org>. 254*1fd5a2e1SPrashanth SwaminathanEOF 255*1fd5a2e1SPrashanth Swaminathan exit $? 256*1fd5a2e1SPrashanth Swaminathan ;; 257*1fd5a2e1SPrashanth Swaminathan -v | --v*) 258*1fd5a2e1SPrashanth Swaminathan echo "compile $scriptversion" 259*1fd5a2e1SPrashanth Swaminathan exit $? 260*1fd5a2e1SPrashanth Swaminathan ;; 261*1fd5a2e1SPrashanth Swaminathan cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ 262*1fd5a2e1SPrashanth Swaminathan icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) 263*1fd5a2e1SPrashanth Swaminathan func_cl_wrapper "$@" # Doesn't return... 264*1fd5a2e1SPrashanth Swaminathan ;; 265*1fd5a2e1SPrashanth Swaminathanesac 266*1fd5a2e1SPrashanth Swaminathan 267*1fd5a2e1SPrashanth Swaminathanofile= 268*1fd5a2e1SPrashanth Swaminathancfile= 269*1fd5a2e1SPrashanth Swaminathan 270*1fd5a2e1SPrashanth Swaminathanfor arg 271*1fd5a2e1SPrashanth Swaminathando 272*1fd5a2e1SPrashanth Swaminathan if test -n "$eat"; then 273*1fd5a2e1SPrashanth Swaminathan eat= 274*1fd5a2e1SPrashanth Swaminathan else 275*1fd5a2e1SPrashanth Swaminathan case $1 in 276*1fd5a2e1SPrashanth Swaminathan -o) 277*1fd5a2e1SPrashanth Swaminathan # configure might choose to run compile as 'compile cc -o foo foo.c'. 278*1fd5a2e1SPrashanth Swaminathan # So we strip '-o arg' only if arg is an object. 279*1fd5a2e1SPrashanth Swaminathan eat=1 280*1fd5a2e1SPrashanth Swaminathan case $2 in 281*1fd5a2e1SPrashanth Swaminathan *.o | *.obj) 282*1fd5a2e1SPrashanth Swaminathan ofile=$2 283*1fd5a2e1SPrashanth Swaminathan ;; 284*1fd5a2e1SPrashanth Swaminathan *) 285*1fd5a2e1SPrashanth Swaminathan set x "$@" -o "$2" 286*1fd5a2e1SPrashanth Swaminathan shift 287*1fd5a2e1SPrashanth Swaminathan ;; 288*1fd5a2e1SPrashanth Swaminathan esac 289*1fd5a2e1SPrashanth Swaminathan ;; 290*1fd5a2e1SPrashanth Swaminathan *.c) 291*1fd5a2e1SPrashanth Swaminathan cfile=$1 292*1fd5a2e1SPrashanth Swaminathan set x "$@" "$1" 293*1fd5a2e1SPrashanth Swaminathan shift 294*1fd5a2e1SPrashanth Swaminathan ;; 295*1fd5a2e1SPrashanth Swaminathan *) 296*1fd5a2e1SPrashanth Swaminathan set x "$@" "$1" 297*1fd5a2e1SPrashanth Swaminathan shift 298*1fd5a2e1SPrashanth Swaminathan ;; 299*1fd5a2e1SPrashanth Swaminathan esac 300*1fd5a2e1SPrashanth Swaminathan fi 301*1fd5a2e1SPrashanth Swaminathan shift 302*1fd5a2e1SPrashanth Swaminathandone 303*1fd5a2e1SPrashanth Swaminathan 304*1fd5a2e1SPrashanth Swaminathanif test -z "$ofile" || test -z "$cfile"; then 305*1fd5a2e1SPrashanth Swaminathan # If no '-o' option was seen then we might have been invoked from a 306*1fd5a2e1SPrashanth Swaminathan # pattern rule where we don't need one. That is ok -- this is a 307*1fd5a2e1SPrashanth Swaminathan # normal compilation that the losing compiler can handle. If no 308*1fd5a2e1SPrashanth Swaminathan # '.c' file was seen then we are probably linking. That is also 309*1fd5a2e1SPrashanth Swaminathan # ok. 310*1fd5a2e1SPrashanth Swaminathan exec "$@" 311*1fd5a2e1SPrashanth Swaminathanfi 312*1fd5a2e1SPrashanth Swaminathan 313*1fd5a2e1SPrashanth Swaminathan# Name of file we expect compiler to create. 314*1fd5a2e1SPrashanth Swaminathancofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` 315*1fd5a2e1SPrashanth Swaminathan 316*1fd5a2e1SPrashanth Swaminathan# Create the lock directory. 317*1fd5a2e1SPrashanth Swaminathan# Note: use '[/\\:.-]' here to ensure that we don't use the same name 318*1fd5a2e1SPrashanth Swaminathan# that we are using for the .o file. Also, base the name on the expected 319*1fd5a2e1SPrashanth Swaminathan# object file name, since that is what matters with a parallel build. 320*1fd5a2e1SPrashanth Swaminathanlockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d 321*1fd5a2e1SPrashanth Swaminathanwhile true; do 322*1fd5a2e1SPrashanth Swaminathan if mkdir "$lockdir" >/dev/null 2>&1; then 323*1fd5a2e1SPrashanth Swaminathan break 324*1fd5a2e1SPrashanth Swaminathan fi 325*1fd5a2e1SPrashanth Swaminathan sleep 1 326*1fd5a2e1SPrashanth Swaminathandone 327*1fd5a2e1SPrashanth Swaminathan# FIXME: race condition here if user kills between mkdir and trap. 328*1fd5a2e1SPrashanth Swaminathantrap "rmdir '$lockdir'; exit 1" 1 2 15 329*1fd5a2e1SPrashanth Swaminathan 330*1fd5a2e1SPrashanth Swaminathan# Run the compile. 331*1fd5a2e1SPrashanth Swaminathan"$@" 332*1fd5a2e1SPrashanth Swaminathanret=$? 333*1fd5a2e1SPrashanth Swaminathan 334*1fd5a2e1SPrashanth Swaminathanif test -f "$cofile"; then 335*1fd5a2e1SPrashanth Swaminathan test "$cofile" = "$ofile" || mv "$cofile" "$ofile" 336*1fd5a2e1SPrashanth Swaminathanelif test -f "${cofile}bj"; then 337*1fd5a2e1SPrashanth Swaminathan test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" 338*1fd5a2e1SPrashanth Swaminathanfi 339*1fd5a2e1SPrashanth Swaminathan 340*1fd5a2e1SPrashanth Swaminathanrmdir "$lockdir" 341*1fd5a2e1SPrashanth Swaminathanexit $ret 342*1fd5a2e1SPrashanth Swaminathan 343*1fd5a2e1SPrashanth Swaminathan# Local Variables: 344*1fd5a2e1SPrashanth Swaminathan# mode: shell-script 345*1fd5a2e1SPrashanth Swaminathan# sh-indentation: 2 346*1fd5a2e1SPrashanth Swaminathan# eval: (add-hook 'before-save-hook 'time-stamp) 347*1fd5a2e1SPrashanth Swaminathan# time-stamp-start: "scriptversion=" 348*1fd5a2e1SPrashanth Swaminathan# time-stamp-format: "%:y-%02m-%02d.%02H" 349*1fd5a2e1SPrashanth Swaminathan# time-stamp-time-zone: "UTC0" 350*1fd5a2e1SPrashanth Swaminathan# time-stamp-end: "; # UTC" 351*1fd5a2e1SPrashanth Swaminathan# End: 352