Alexandre Julliard : configure: Add option for overriding the floating point ABI on ARM platforms.
Alexandre Julliard
julliard at winehq.org
Fri Dec 8 13:51:29 CST 2017
Module: wine
Branch: master
Commit: 364e04ce0ca011c4bf8087d4982283093766ee56
URL: http://source.winehq.org/git/wine.git/?a=commit;h=364e04ce0ca011c4bf8087d4982283093766ee56
Author: Alexandre Julliard <julliard at winehq.org>
Date: Fri Dec 8 11:37:16 2017 +0100
configure: Add option for overriding the floating point ABI on ARM platforms.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
configure | 38 +++++++++++++++++++++++++++++++-------
configure.ac | 31 ++++++++++++++++++++++++-------
2 files changed, 55 insertions(+), 14 deletions(-)
diff --git a/configure b/configure
index 5e1eeef..25930e3 100755
--- a/configure
+++ b/configure
@@ -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}
diff --git a/configure.ac b/configure.ac
index 8d9ec29..00413bc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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}
More information about the wine-cvs
mailing list