mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 895915 - Enforce host gcc/clang support for C++11. r=gps
This commit is contained in:
parent
70e713a366
commit
c34b466603
@ -64,3 +64,159 @@ if test "`$CXX -v 2>&1 | egrep -c '(clang version|Apple.*clang)'`" != "0"; then
|
||||
fi
|
||||
AC_SUBST(CLANG_CXX)
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_CROSS_COMPILER],
|
||||
[
|
||||
echo "cross compiling from $host to $target"
|
||||
|
||||
_SAVE_CC="$CC"
|
||||
_SAVE_CFLAGS="$CFLAGS"
|
||||
_SAVE_LDFLAGS="$LDFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([for host c compiler])
|
||||
AC_CHECK_PROGS(HOST_CC, cc gcc clang cl, "")
|
||||
if test -z "$HOST_CC"; then
|
||||
AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
|
||||
fi
|
||||
AC_MSG_RESULT([$HOST_CC])
|
||||
AC_MSG_CHECKING([for host c++ compiler])
|
||||
AC_CHECK_PROGS(HOST_CXX, c++ g++ clang++ cl, "")
|
||||
if test -z "$HOST_CXX"; then
|
||||
AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
|
||||
fi
|
||||
AC_MSG_RESULT([$HOST_CXX])
|
||||
|
||||
if test -z "$HOST_CFLAGS"; then
|
||||
HOST_CFLAGS="$CFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_CXXFLAGS"; then
|
||||
HOST_CXXFLAGS="$CXXFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_LDFLAGS"; then
|
||||
HOST_LDFLAGS="$LDFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_AR_FLAGS"; then
|
||||
HOST_AR_FLAGS="$AR_FLAGS"
|
||||
fi
|
||||
AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
|
||||
AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
|
||||
CC="$HOST_CC"
|
||||
CFLAGS="$HOST_CFLAGS"
|
||||
LDFLAGS="$HOST_LDFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
|
||||
AC_TRY_COMPILE([], [return(0);],
|
||||
[ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
|
||||
AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
|
||||
|
||||
CC="$HOST_CXX"
|
||||
CFLAGS="$HOST_CXXFLAGS"
|
||||
AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
|
||||
AC_TRY_COMPILE([], [return(0);],
|
||||
[ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
|
||||
AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
|
||||
|
||||
CC=$_SAVE_CC
|
||||
CFLAGS=$_SAVE_CFLAGS
|
||||
LDFLAGS=$_SAVE_LDFLAGS
|
||||
|
||||
AC_CHECK_PROGS(CC, "${target_alias}-gcc" "${target}-gcc", :)
|
||||
unset ac_cv_prog_CC
|
||||
AC_PROG_CC
|
||||
AC_CHECK_PROGS(CXX, "${target_alias}-g++" "${target}-g++", :)
|
||||
unset ac_cv_prog_CXX
|
||||
AC_PROG_CXX
|
||||
|
||||
AC_CHECK_PROGS(RANLIB, "${target_alias}-ranlib" "${target}-ranlib", :)
|
||||
AC_CHECK_PROGS(AR, "${target_alias}-ar" "${target}-ar", :)
|
||||
MOZ_PATH_PROGS(AS, "${target_alias}-as" "${target}-as", :)
|
||||
AC_CHECK_PROGS(LD, "${target_alias}-ld" "${target}-ld", :)
|
||||
AC_CHECK_PROGS(STRIP, "${target_alias}-strip" "${target}-strip", :)
|
||||
AC_CHECK_PROGS(WINDRES, "${target_alias}-windres" "${target}-windres", :)
|
||||
AC_DEFINE(CROSS_COMPILE)
|
||||
|
||||
dnl If we cross compile for ppc on Mac OS X x86, cross_compiling will
|
||||
dnl dnl have erroneously been set to "no", because the x86 build host is
|
||||
dnl dnl able to run ppc code in a translated environment, making a cross
|
||||
dnl dnl compiler appear native. So we override that here.
|
||||
cross_compiling=yes
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_CXX11],
|
||||
[
|
||||
dnl Check whether gcc's c++0x mode works
|
||||
dnl Updates to the test below should be duplicated further below for the
|
||||
dnl cross-compiling case.
|
||||
AC_LANG_CPLUSPLUS
|
||||
if test "$GNU_CXX"; then
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
|
||||
AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
|
||||
ac_cv_cxx0x_headers_bug,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_cxx0x_headers_bug="no",
|
||||
ac_cv_cxx0x_headers_bug="yes")])
|
||||
|
||||
if test "$CLANG_CXX" -a "$ac_cv_cxx0x_headers_bug" = "yes"; then
|
||||
CXXFLAGS="$CXXFLAGS -I$_topsrcdir/build/unix/headers"
|
||||
AC_CACHE_CHECK(whether workaround for gcc c++0x headers conflict with clang works,
|
||||
ac_cv_cxx0x_clang_workaround,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_cxx0x_clang_workaround="yes",
|
||||
ac_cv_cxx0x_clang_workaround="no")])
|
||||
|
||||
if test "ac_cv_cxx0x_clang_workaround" = "no"; then
|
||||
AC_MSG_ERROR([Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
elif test "$ac_cv_cxx0x_headers_bug" = "yes"; then
|
||||
AC_MSG_ERROR([Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
fi
|
||||
if test -n "$CROSS_COMPILE"; then
|
||||
dnl When cross compile, we have no variable telling us what the host compiler is. Figure it out.
|
||||
cat > conftest.C <<EOF
|
||||
#if defined(__clang__)
|
||||
CLANG
|
||||
#elif defined(__GNUC__)
|
||||
GCC
|
||||
#endif
|
||||
EOF
|
||||
host_compiler=`$HOST_CXX -E conftest.C | egrep '(CLANG|GCC)'`
|
||||
rm conftest.C
|
||||
if test -n "$host_compiler"; then
|
||||
HOST_CXXFLAGS="$HOST_CXXFLAGS -std=gnu++0x"
|
||||
|
||||
_SAVE_CXXFLAGS="$CXXFLAGS"
|
||||
_SAVE_CPPFLAGS="$CPPFLAGS"
|
||||
_SAVE_CXX="$CXX"
|
||||
CXXFLAGS="$HOST_CXXFLAGS"
|
||||
CPPFLAGS="$HOST_CPPFLAGS"
|
||||
CXX="$HOST_CXX"
|
||||
AC_CACHE_CHECK(for host gcc c++0x headers bug without rtti,
|
||||
ac_cv_host_cxx0x_headers_bug,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_host_cxx0x_headers_bug="no",
|
||||
ac_cv_host_cxx0x_headers_bug="yes")])
|
||||
|
||||
if test "$host_compiler" = CLANG -a "$ac_cv_host_cxx0x_headers_bug" = "yes"; then
|
||||
CXXFLAGS="$CXXFLAGS -I$_topsrcdir/build/unix/headers"
|
||||
AC_CACHE_CHECK(whether workaround for host gcc c++0x headers conflict with host clang works,
|
||||
ac_cv_host_cxx0x_clang_workaround,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_host_cxx0x_clang_workaround="yes",
|
||||
ac_cv_host_cxx0x_clang_workaround="no")])
|
||||
|
||||
if test "ac_cv_host_cxx0x_clang_workaround" = "no"; then
|
||||
AC_MSG_ERROR([Your host toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
HOST_CXXFLAGS="$CXXFLAGS"
|
||||
elif test "$ac_cv_host_cxx0x_headers_bug" = "yes"; then
|
||||
AC_MSG_ERROR([Your host toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
CXXFLAGS="$_SAVE_CXXFLAGS"
|
||||
CPPFLAGS="$_SAVE_CPPFLAGS"
|
||||
CXX="$_SAVE_CXX"
|
||||
fi
|
||||
fi
|
||||
AC_LANG_C
|
||||
])
|
||||
|
98
configure.in
98
configure.in
@ -285,75 +285,7 @@ AR_FLAGS='cr $@'
|
||||
if test "$COMPILE_ENVIRONMENT"; then
|
||||
|
||||
if test -n "$CROSS_COMPILE" -a "$target" != "$host"; then
|
||||
echo "cross compiling from $host to $target"
|
||||
cross_compiling=yes
|
||||
|
||||
_SAVE_CC="$CC"
|
||||
_SAVE_CFLAGS="$CFLAGS"
|
||||
_SAVE_LDFLAGS="$LDFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([for host c compiler])
|
||||
AC_CHECK_PROGS(HOST_CC, $HOST_CC cc gcc /usr/ucb/cc cl icc, "")
|
||||
if test -z "$HOST_CC"; then
|
||||
AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
|
||||
fi
|
||||
AC_MSG_RESULT([$HOST_CC])
|
||||
AC_MSG_CHECKING([for host c++ compiler])
|
||||
AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
|
||||
if test -z "$HOST_CXX"; then
|
||||
AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
|
||||
fi
|
||||
AC_MSG_RESULT([$HOST_CXX])
|
||||
|
||||
if test -z "$HOST_CFLAGS"; then
|
||||
HOST_CFLAGS="$CFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_CXXFLAGS"; then
|
||||
HOST_CXXFLAGS="$CXXFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_LDFLAGS"; then
|
||||
HOST_LDFLAGS="$LDFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_AR_FLAGS"; then
|
||||
HOST_AR_FLAGS="$AR_FLAGS"
|
||||
fi
|
||||
AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
|
||||
AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
|
||||
CC="$HOST_CC"
|
||||
CFLAGS="$HOST_CFLAGS"
|
||||
LDFLAGS="$HOST_LDFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
|
||||
AC_TRY_COMPILE([], [return(0);],
|
||||
[ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
|
||||
AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
|
||||
|
||||
CC="$HOST_CXX"
|
||||
CFLAGS="$HOST_CXXFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
|
||||
AC_TRY_COMPILE([], [return(0);],
|
||||
[ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
|
||||
AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
|
||||
|
||||
CC=$_SAVE_CC
|
||||
CFLAGS=$_SAVE_CFLAGS
|
||||
LDFLAGS=$_SAVE_LDFLAGS
|
||||
|
||||
AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
|
||||
unset ac_cv_prog_CC
|
||||
AC_PROG_CC
|
||||
AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
|
||||
unset ac_cv_prog_CXX
|
||||
AC_PROG_CXX
|
||||
|
||||
AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
|
||||
AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
|
||||
MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
|
||||
AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
|
||||
AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
|
||||
AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
|
||||
AC_DEFINE(CROSS_COMPILE)
|
||||
MOZ_CROSS_COMPILER
|
||||
else
|
||||
AC_PROG_CC
|
||||
case "$target" in
|
||||
@ -2739,34 +2671,10 @@ else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
dnl Check whether gcc's c++0x mode works
|
||||
MOZ_CXX11
|
||||
|
||||
AC_LANG_CPLUSPLUS
|
||||
|
||||
if test "$GNU_CXX"; then
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
|
||||
AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
|
||||
ac_cv_cxx0x_headers_bug,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_cxx0x_headers_bug="no",
|
||||
ac_cv_cxx0x_headers_bug="yes")])
|
||||
|
||||
if test "$CLANG_CXX" -a "$ac_cv_cxx0x_headers_bug" = "yes"; then
|
||||
CXXFLAGS="$CXXFLAGS -I$_topsrcdir/build/unix/headers"
|
||||
AC_CACHE_CHECK(whether workaround for gcc c++0x headers conflict with clang works,
|
||||
ac_cv_cxx0x_clang_workaround,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_cxx0x_clang_workaround="yes",
|
||||
ac_cv_cxx0x_clang_workaround="no")])
|
||||
|
||||
if test "ac_cv_cxx0x_clang_workaround" = "no"; then
|
||||
AC_MSG_ERROR([Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
elif test "$ac_cv_cxx0x_headers_bug" = "yes"; then
|
||||
AC_MSG_ERROR([Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl Check for usable char16_t (2 bytes, unsigned)
|
||||
dnl (we might not need the unsignedness check anymore)
|
||||
AC_CACHE_CHECK(for usable char16_t (2 bytes, unsigned),
|
||||
|
@ -64,3 +64,157 @@ if test "`$CXX -v 2>&1 | egrep -c '(clang version|Apple.*clang)'`" != "0"; then
|
||||
fi
|
||||
AC_SUBST(CLANG_CXX)
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_CROSS_COMPILER],
|
||||
[
|
||||
echo "cross compiling from $host to $target"
|
||||
|
||||
_SAVE_CC="$CC"
|
||||
_SAVE_CFLAGS="$CFLAGS"
|
||||
_SAVE_LDFLAGS="$LDFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([for host c compiler])
|
||||
AC_CHECK_PROGS(HOST_CC, cc gcc clang cl, "")
|
||||
if test -z "$HOST_CC"; then
|
||||
AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
|
||||
fi
|
||||
AC_MSG_RESULT([$HOST_CC])
|
||||
AC_MSG_CHECKING([for host c++ compiler])
|
||||
AC_CHECK_PROGS(HOST_CXX, c++ g++ clang++ cl, "")
|
||||
if test -z "$HOST_CXX"; then
|
||||
AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
|
||||
fi
|
||||
AC_MSG_RESULT([$HOST_CXX])
|
||||
|
||||
if test -z "$HOST_CFLAGS"; then
|
||||
HOST_CFLAGS="$CFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_CXXFLAGS"; then
|
||||
HOST_CXXFLAGS="$CXXFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_LDFLAGS"; then
|
||||
HOST_LDFLAGS="$LDFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_AR_FLAGS"; then
|
||||
HOST_AR_FLAGS="$AR_FLAGS"
|
||||
fi
|
||||
AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
|
||||
AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
|
||||
CC="$HOST_CC"
|
||||
CFLAGS="$HOST_CFLAGS"
|
||||
LDFLAGS="$HOST_LDFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
|
||||
AC_TRY_COMPILE([], [return(0);],
|
||||
[ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
|
||||
AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
|
||||
|
||||
CC="$HOST_CXX"
|
||||
CFLAGS="$HOST_CXXFLAGS"
|
||||
AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
|
||||
AC_TRY_COMPILE([], [return(0);],
|
||||
[ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
|
||||
AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
|
||||
|
||||
CC=$_SAVE_CC
|
||||
CFLAGS=$_SAVE_CFLAGS
|
||||
LDFLAGS=$_SAVE_LDFLAGS
|
||||
|
||||
AC_CHECK_PROGS(CC, "${target_alias}-gcc" "${target}-gcc", :)
|
||||
unset ac_cv_prog_CC
|
||||
AC_PROG_CC
|
||||
AC_CHECK_PROGS(CXX, "${target_alias}-g++" "${target}-g++", :)
|
||||
unset ac_cv_prog_CXX
|
||||
AC_PROG_CXX
|
||||
|
||||
AC_CHECK_PROGS(RANLIB, "${target_alias}-ranlib" "${target}-ranlib", :)
|
||||
AC_CHECK_PROGS(AR, "${target_alias}-ar" "${target}-ar", :)
|
||||
MOZ_PATH_PROGS(AS, "${target_alias}-as" "${target}-as", :)
|
||||
AC_CHECK_PROGS(LD, "${target_alias}-ld" "${target}-ld", :)
|
||||
AC_CHECK_PROGS(STRIP, "${target_alias}-strip" "${target}-strip", :)
|
||||
AC_CHECK_PROGS(WINDRES, "${target_alias}-windres" "${target}-windres", :)
|
||||
AC_DEFINE(CROSS_COMPILE)
|
||||
|
||||
dnl If we cross compile for ppc on Mac OS X x86, cross_compiling will
|
||||
dnl dnl have erroneously been set to "no", because the x86 build host is
|
||||
dnl dnl able to run ppc code in a translated environment, making a cross
|
||||
dnl dnl compiler appear native. So we override that here.
|
||||
cross_compiling=yes
|
||||
])
|
||||
|
||||
AC_DEFUN([MOZ_CXX11],
|
||||
[
|
||||
dnl Check whether gcc's c++0x mode works
|
||||
AC_LANG_CPLUSPLUS
|
||||
if test "$GNU_CXX"; then
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
|
||||
AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
|
||||
ac_cv_cxx0x_headers_bug,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_cxx0x_headers_bug="no",
|
||||
ac_cv_cxx0x_headers_bug="yes")])
|
||||
|
||||
if test "$CLANG_CXX" -a "$ac_cv_cxx0x_headers_bug" = "yes"; then
|
||||
CXXFLAGS="$CXXFLAGS -I$_topsrcdir/build/unix/headers"
|
||||
AC_CACHE_CHECK(whether workaround for gcc c++0x headers conflict with clang works,
|
||||
ac_cv_cxx0x_clang_workaround,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_cxx0x_clang_workaround="yes",
|
||||
ac_cv_cxx0x_clang_workaround="no")])
|
||||
|
||||
if test "ac_cv_cxx0x_clang_workaround" = "no"; then
|
||||
AC_MSG_ERROR([Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
elif test "$ac_cv_cxx0x_headers_bug" = "yes"; then
|
||||
AC_MSG_ERROR([Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
fi
|
||||
if test -n "$CROSS_COMPILE"; then
|
||||
dnl When cross compile, we have no variable telling us what the host compiler is. Figure it out.
|
||||
cat > conftest.C <<EOF
|
||||
#if defined(__clang__)
|
||||
CLANG
|
||||
#elif defined(__GNUC__)
|
||||
GCC
|
||||
#endif
|
||||
EOF
|
||||
host_compiler=`$HOST_CXX -E conftest.C | egrep '(CLANG|GCC)'`
|
||||
rm conftest.C
|
||||
if test -n "$host_compiler"; then
|
||||
HOST_CXXFLAGS="$HOST_CXXFLAGS -std=gnu++0x"
|
||||
|
||||
_SAVE_CXXFLAGS="$CXXFLAGS"
|
||||
_SAVE_CPPFLAGS="$CPPFLAGS"
|
||||
_SAVE_CXX="$CXX"
|
||||
CXXFLAGS="$HOST_CXXFLAGS"
|
||||
CPPFLAGS="$HOST_CPPFLAGS"
|
||||
CXX="$HOST_CXX"
|
||||
AC_CACHE_CHECK(for host gcc c++0x headers bug without rtti,
|
||||
ac_cv_host_cxx0x_headers_bug,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_host_cxx0x_headers_bug="no",
|
||||
ac_cv_host_cxx0x_headers_bug="yes")])
|
||||
|
||||
if test "$host_compiler" = CLANG -a "$ac_cv_host_cxx0x_headers_bug" = "yes"; then
|
||||
CXXFLAGS="$CXXFLAGS -I$_topsrcdir/build/unix/headers"
|
||||
AC_CACHE_CHECK(whether workaround for host gcc c++0x headers conflict with host clang works,
|
||||
ac_cv_host_cxx0x_clang_workaround,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_host_cxx0x_clang_workaround="yes",
|
||||
ac_cv_host_cxx0x_clang_workaround="no")])
|
||||
|
||||
if test "ac_cv_host_cxx0x_clang_workaround" = "no"; then
|
||||
AC_MSG_ERROR([Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
HOST_CXXFLAGS="$CXXFLAGS"
|
||||
elif test "$ac_cv_host_cxx0x_headers_bug" = "yes"; then
|
||||
AC_MSG_ERROR([Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
CXXFLAGS="$_SAVE_CXXFLAGS"
|
||||
CPPFLAGS="$_SAVE_CPPFLAGS"
|
||||
CXX="$_SAVE_CXX"
|
||||
fi
|
||||
fi
|
||||
AC_LANG_C
|
||||
])
|
||||
|
@ -282,80 +282,7 @@ if test "$COMPILE_ENVIRONMENT"; then
|
||||
# - $target (in its correct usage) is for compilers who generate code for a
|
||||
# different platform than $host, so it would not be used by Mozilla.
|
||||
if test "$target" != "$host"; then
|
||||
echo "cross compiling from $host to $target"
|
||||
|
||||
_SAVE_CC="$CC"
|
||||
_SAVE_CFLAGS="$CFLAGS"
|
||||
_SAVE_LDFLAGS="$LDFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([for host c compiler])
|
||||
AC_CHECK_PROGS(HOST_CC, $HOST_CC gcc cc /usr/ucb/cc cl icc, "")
|
||||
if test -z "$HOST_CC"; then
|
||||
AC_MSG_ERROR([no acceptable c compiler found in \$PATH])
|
||||
fi
|
||||
AC_MSG_RESULT([$HOST_CC])
|
||||
AC_MSG_CHECKING([for host c++ compiler])
|
||||
AC_CHECK_PROGS(HOST_CXX, $HOST_CXX $CCC c++ g++ gcc CC cxx cc++ cl icc, "")
|
||||
if test -z "$HOST_CXX"; then
|
||||
AC_MSG_ERROR([no acceptable c++ compiler found in \$PATH])
|
||||
fi
|
||||
AC_MSG_RESULT([$HOST_CXX])
|
||||
|
||||
if test -z "$HOST_CFLAGS"; then
|
||||
HOST_CFLAGS="$CFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_CXXFLAGS"; then
|
||||
HOST_CXXFLAGS="$CXXFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_LDFLAGS"; then
|
||||
HOST_LDFLAGS="$LDFLAGS"
|
||||
fi
|
||||
if test -z "$HOST_AR_FLAGS"; then
|
||||
HOST_AR_FLAGS="$AR_FLAGS"
|
||||
fi
|
||||
AC_CHECK_PROGS(HOST_RANLIB, $HOST_RANLIB ranlib, ranlib, :)
|
||||
AC_CHECK_PROGS(HOST_AR, $HOST_AR ar, ar, :)
|
||||
CC="$HOST_CC"
|
||||
CFLAGS="$HOST_CFLAGS"
|
||||
LDFLAGS="$HOST_LDFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([whether the host c compiler ($HOST_CC $HOST_CFLAGS $HOST_LDFLAGS) works])
|
||||
AC_TRY_COMPILE([], [return(0);],
|
||||
[ac_cv_prog_hostcc_works=1 AC_MSG_RESULT([yes])],
|
||||
AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CC cannot create executables.]) )
|
||||
|
||||
CC="$HOST_CXX"
|
||||
CFLAGS="$HOST_CXXFLAGS"
|
||||
|
||||
AC_MSG_CHECKING([whether the host c++ compiler ($HOST_CXX $HOST_CXXFLAGS $HOST_LDFLAGS) works])
|
||||
AC_TRY_COMPILE([], [return(0);],
|
||||
[ac_cv_prog_hostcxx_works=1 AC_MSG_RESULT([yes])],
|
||||
AC_MSG_ERROR([installation or configuration problem: host compiler $HOST_CXX cannot create executables.]) )
|
||||
|
||||
CC=$_SAVE_CC
|
||||
CFLAGS=$_SAVE_CFLAGS
|
||||
LDFLAGS=$_SAVE_LDFLAGS
|
||||
|
||||
AC_CHECK_PROGS(CC, $CC "${target_alias}-gcc" "${target}-gcc", :)
|
||||
unset ac_cv_prog_CC
|
||||
AC_PROG_CC
|
||||
AC_CHECK_PROGS(CXX, $CXX "${target_alias}-g++" "${target}-g++", :)
|
||||
unset ac_cv_prog_CXX
|
||||
AC_PROG_CXX
|
||||
|
||||
AC_CHECK_PROGS(RANLIB, $RANLIB "${target_alias}-ranlib" "${target}-ranlib", :)
|
||||
AC_CHECK_PROGS(AR, $AR "${target_alias}-ar" "${target}-ar", :)
|
||||
MOZ_PATH_PROGS(AS, $AS "${target_alias}-as" "${target}-as", :)
|
||||
AC_CHECK_PROGS(LD, $LD "${target_alias}-ld" "${target}-ld", :)
|
||||
AC_CHECK_PROGS(STRIP, $STRIP "${target_alias}-strip" "${target}-strip", :)
|
||||
AC_CHECK_PROGS(WINDRES, $WINDRES "${target_alias}-windres" "${target}-windres", :)
|
||||
AC_DEFINE(CROSS_COMPILE)
|
||||
|
||||
dnl If we cross compile for ppc on Mac OS X x86, cross_compiling will
|
||||
dnl have erroneously been set to "no", because the x86 build host is
|
||||
dnl able to run ppc code in a translated environment, making a cross
|
||||
dnl compiler appear native. So we override that here.
|
||||
cross_compiling=yes
|
||||
MOZ_CROSS_COMPILER
|
||||
else
|
||||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
@ -2347,35 +2274,7 @@ else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
|
||||
dnl Check whether gcc's c++0x mode works
|
||||
AC_LANG_CPLUSPLUS
|
||||
|
||||
if test "$GNU_CXX"; then
|
||||
CXXFLAGS="$CXXFLAGS -std=gnu++0x"
|
||||
|
||||
AC_CACHE_CHECK(for gcc c++0x headers bug without rtti,
|
||||
ac_cv_cxx0x_headers_bug,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_cxx0x_headers_bug="no",
|
||||
ac_cv_cxx0x_headers_bug="yes")])
|
||||
|
||||
if test "$CLANG_CXX" -a "$ac_cv_cxx0x_headers_bug" = "yes"; then
|
||||
CXXFLAGS="$CXXFLAGS -I$_topsrcdir/build/unix/headers"
|
||||
AC_CACHE_CHECK(whether workaround for gcc c++0x headers conflict with clang works,
|
||||
ac_cv_cxx0x_clang_workaround,
|
||||
[AC_TRY_COMPILE([#include <memory>], [],
|
||||
ac_cv_cxx0x_clang_workaround="yes",
|
||||
ac_cv_cxx0x_clang_workaround="no")])
|
||||
|
||||
if test "ac_cv_cxx0x_clang_workaround" = "no"; then
|
||||
AC_MSG_ERROR([Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
elif test "$ac_cv_cxx0x_headers_bug" = "yes"; then
|
||||
AC_MSG_ERROR([Your toolchain does not support C++0x/C++11 mode properly. Please upgrade your toolchain])
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_LANG_C
|
||||
MOZ_CXX11
|
||||
|
||||
dnl Check for .hidden assembler directive and visibility attribute.
|
||||
dnl Borrowed from glibc configure.in
|
||||
|
Loading…
Reference in New Issue
Block a user