toolkit/crashreporter/google-breakpad/autotools/compile

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rwxr-xr-x

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

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

mercurial