build/autoconf/mozprog.m4
author Nick Alexander <nalexander@mozilla.com>
Fri, 12 Oct 2018 22:38:44 +0000
changeset 499408 91300d29898b1a1102e1b62164aeee1f56b2ee86
parent 98983 f4157e8c410708d76703f19e4dfb61859bfe32d8
permissions -rw-r--r--
Bug 1489443 - Set GCC_USE_GNU_LD based on linker kind. r=froydnj The desired outcome of this change is that we'll set `-Wl,--version-script` based on linker kind and not on the output of `$LINKER -v`. This is a cheap way to address a simple problem that has a complicated ideal solution. The underlying issue is that in some situations, when targeting Android, a macOS system `ld` is interrogated to determine if a cross-compiling linker "is GNU ld" and a particular linker feature is set in that situation. The macOS system `ld` doesn't pass the "is GNU ld" test, and the linker feature isn't set; that causes link failures, even though the actual linker has nothing to do with the system `ld`. The ideal solution is to test for linker capabilities dynamically. We do a lot of that in old-configure.in, and we don't do any of that in toolchain.configure. Rather than start testing in toolchain.configure, we hard-code: a cheap solution to the immediate problem. Differential Revision: https://phabricator.services.mozilla.com/D8471

dnl This Source Code Form is subject to the terms of the Mozilla Public
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.

AC_DEFUN([MOZ_PROG_CHECKMSYS],
[AC_REQUIRE([AC_INIT_BINSH])dnl
if test `uname -s | grep -c MINGW 2>/dev/null` != "0"; then
  msyshost=1
fi
])

AC_DEFUN([MOZ_PATH_PROG],
[ AC_PATH_PROG($1,$2,$3,$4)
  if test "$msyshost"; then
    case "[$]$1" in
    /*)
      tmp_DIRNAME=`dirname "[$]$1"`
      tmp_BASENAME=`basename "[$]$1"`
      tmp_PWD=`cd "$tmp_DIRNAME" && pwd -W`
      $1="$tmp_PWD/$tmp_BASENAME"
      if test -e "[$]$1.exe"; then
        $1="[$]$1.exe"
      fi
    esac
  fi
])

AC_DEFUN([MOZ_PATH_PROGS],
[  AC_PATH_PROGS($1,$2,$3,$4)
  if test "$msyshost"; then
    case "[$]$1" in
    /*)
      tmp_DIRNAME=`dirname "[$]$1"`
      tmp_BASENAME=`basename "[$]$1"`
      tmp_PWD=`cd "$tmp_DIRNAME" && pwd -W`
      $1="$tmp_PWD/$tmp_BASENAME"
      if test -e "[$]$1.exe"; then
        $1="[$]$1.exe"
      fi
    esac
  fi
])