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