configure: Add option for overriding the floating point ABI on ARM platforms.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
oldstable
Alexandre Julliard 2017-12-08 11:37:16 +01:00
parent c81de726f2
commit 364e04ce0c
2 changed files with 55 additions and 14 deletions

38
configure vendored
View File

@ -829,6 +829,7 @@ with_coreaudio
with_cups
with_curses
with_dbus
with_float_abi
with_fontconfig
with_freetype
with_gettext
@ -2388,6 +2389,7 @@ Optional Packages:
--without-cups do not use CUPS
--without-curses do not use (n)curses
--without-dbus do not use DBus (dynamic device support)
--with-float-abi=abi specify the ABI (soft|softfp|hard) for ARM platforms
--without-fontconfig do not use fontconfig
--without-freetype do not use the FreeType library
--without-gettext do not use gettext
@ -3545,6 +3547,12 @@ if test "${with_dbus+set}" = set; then :
fi
# Check whether --with-float-abi was given.
if test "${with_float_abi+set}" = set; then :
withval=$with_float_abi;
fi
# Check whether --with-fontconfig was given.
if test "${with_fontconfig+set}" = set; then :
withval=$with_fontconfig;
@ -5263,12 +5271,20 @@ $as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$CFLAGS -marm"
TARGETFLAGS="-marm"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports floating point" >&5
$as_echo_n "checking whether $CC supports floating point... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
case $with_float_abi in
soft|softfp|hard)
float_abi=$with_float_abi ;;
*)
case $host_os in
*eabihf)
float_abi=hard ;;
*)
float_abi=softfp
saved_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -marm -mfloat-abi=$float_abi"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -mfloat-abi=$float_abi" >&5
$as_echo_n "checking whether $CC supports -mfloat-abi=$float_abi... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
@ -5285,10 +5301,18 @@ $as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
as_fn_error $? "You need a target with floating point support to build Wine for ARM." "$LINENO" 5
float_abi=soft
as_fn_append wine_warnings "|Floating point is not supported for this target. The resulting build won't be compatible with Windows ARM binaries."
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS=$saved_CFLAGS
esac
;;
esac
CFLAGS="$CFLAGS -marm -mfloat-abi=$float_abi"
TARGETFLAGS="-marm -mfloat-abi=$float_abi"
;;
i[3456789]86*)
enable_win16=${enable_win16:-yes}

View File

@ -43,6 +43,7 @@ AC_ARG_WITH(cups, AS_HELP_STRING([--without-cups],[do not use CUPS]))
AC_ARG_WITH(curses, AS_HELP_STRING([--without-curses],[do not use (n)curses]),
[if test "x$withval" = "xno"; then ac_cv_header_ncurses_h=no; ac_cv_header_curses_h=no; fi])
AC_ARG_WITH(dbus, AS_HELP_STRING([--without-dbus],[do not use DBus (dynamic device support)]))
AC_ARG_WITH(float-abi, AS_HELP_STRING([--with-float-abi=abi],[specify the ABI (soft|softfp|hard) for ARM platforms]))
AC_ARG_WITH(fontconfig,AS_HELP_STRING([--without-fontconfig],[do not use fontconfig]))
AC_ARG_WITH(freetype, AS_HELP_STRING([--without-freetype],[do not use the FreeType library]))
AC_ARG_WITH(gettext, AS_HELP_STRING([--without-gettext],[do not use gettext]))
@ -177,13 +178,29 @@ case $host in
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_ERROR([You need a target with Thumb support to build Wine for ARM.])])
CFLAGS="$CFLAGS -marm"
AC_SUBST(TARGETFLAGS,"-marm")
AC_MSG_CHECKING([whether $CC supports floating point])
WINE_TRY_ASM_LINK(["vmrs r2,fpscr"],,,
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_ERROR([You need a target with floating point support to build Wine for ARM.])])
case $with_float_abi in
soft|softfp|hard)
float_abi=$with_float_abi ;;
*)
case $host_os in
*eabihf)
float_abi=hard ;;
*)
float_abi=softfp
saved_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -marm -mfloat-abi=$float_abi"
AC_MSG_CHECKING([whether $CC supports -mfloat-abi=$float_abi])
WINE_TRY_ASM_LINK(["vmrs r2,fpscr"],,,
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
float_abi=soft
WINE_WARNING([Floating point is not supported for this target. The resulting build won't be compatible with Windows ARM binaries.])])
CFLAGS=$saved_CFLAGS
esac
;;
esac
CFLAGS="$CFLAGS -marm -mfloat-abi=$float_abi"
AC_SUBST(TARGETFLAGS,"-marm -mfloat-abi=$float_abi")
;;
i[[3456789]]86*)
enable_win16=${enable_win16:-yes}