From 405e128b0b3a9661bd3db59608cd9a44f4ff9810 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 18 Jan 2021 11:44:46 +0100 Subject: [PATCH] configure: Default to Thumb-2 mode for ARM. Signed-off-by: Alexandre Julliard --- configure | 39 ++++++++++++++++++++++----------------- configure.ac | 28 ++++++++++++++++++---------- 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/configure b/configure index 6a0f0ad92c2..ef09f65f11e 100755 --- a/configure +++ b/configure @@ -5623,6 +5623,8 @@ case $host in ;; esac +TARGETFLAGS="" + case $host in x86_64*|amd64*) if test "x$enable_win64" != "xyes" -a "$cross_compiling" != "yes" @@ -5660,7 +5662,6 @@ $as_echo "$wine_cv_cc_m32" >&6; } host_cpu="i386" notice_platform="32-bit " TARGETFLAGS="-m32" - PKG_CONFIG_PATH=${PKG_CONFIG_PATH:-/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib32/pkgconfig:/usr/lib/pkgconfig} export PKG_CONFIG_PATH enable_win16=${enable_win16:-yes} @@ -5700,37 +5701,43 @@ $as_echo "$wine_cv_builtin_ms_va_list" >&6; } host_cpu="x86_64" notice_platform="64-bit " TARGETFLAGS="-m64" - fi ;; arm*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports Thumb" >&5 -$as_echo_n "checking whether $CC supports Thumb... " >&6; } -if ${wine_cv_thumb+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports Thumb-2" >&5 +$as_echo_n "checking whether $CC supports Thumb-2... " >&6; } +if ${wine_cv_thumb2+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -int ac_test(int i) { return i; } + int main () { -asm(".thumb\nblx ac_test\n.arm"); if (ac_test(1)) return 1 +asm(".syntax unified\n\t.thumb\n\tldm r0,{r0-r8}"); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : - wine_cv_thumb=yes + wine_cv_thumb2=yes else - wine_cv_thumb=no + wine_cv_thumb2=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $wine_cv_thumb" >&5 -$as_echo "$wine_cv_thumb" >&6; } - test $wine_cv_thumb != no || as_fn_error $? "You need a target with Thumb support to build Wine for ARM." "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $wine_cv_thumb2" >&5 +$as_echo "$wine_cv_thumb2" >&6; } + if test x"$wine_cv_thumb2" = xyes + then + CFLAGS="$CFLAGS -mthumb" + TARGETFLAGS="-mthumb" + else + CFLAGS="$CFLAGS -marm" + TARGETFLAGS="-marm" + fi case $with_float_abi in soft|softfp|hard) float_abi=$with_float_abi ;; @@ -5741,7 +5748,7 @@ $as_echo "$wine_cv_thumb" >&6; } *) float_abi=softfp saved_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -marm -mfloat-abi=$float_abi" + CFLAGS="$CFLAGS -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; } if ${wine_cv_float_abi+:} false; then : @@ -5777,9 +5784,8 @@ $as_echo "$wine_cv_float_abi" >&6; } esac ;; esac - CFLAGS="$CFLAGS -marm -mfloat-abi=$float_abi" - TARGETFLAGS="-marm -mfloat-abi=$float_abi" - + CFLAGS="$CFLAGS -mfloat-abi=$float_abi" + TARGETFLAGS="$TARGETFLAGS -mfloat-abi=$float_abi" ;; aarch64*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports __builtin_ms_va_list" >&5 @@ -5859,7 +5865,6 @@ fi if test -n "$host_alias" -a "$host_alias" != "$build_alias" then TARGETFLAGS="-b $host_alias $TARGETFLAGS" - fi for ac_prog in flex diff --git a/configure.ac b/configure.ac index 2c4bd667e8f..1921307da31 100644 --- a/configure.ac +++ b/configure.ac @@ -138,6 +138,7 @@ case $host in ;; esac +AC_SUBST(TARGETFLAGS,"") case $host in x86_64*|amd64*) if test "x$enable_win64" != "xyes" -a "$cross_compiling" != "yes" @@ -149,7 +150,7 @@ case $host in test $wine_cv_cc_m32 != no || AC_MSG_ERROR([Cannot build a 32-bit program, you need to install 32-bit development libraries.]) host_cpu="i386" notice_platform="32-bit " - AC_SUBST(TARGETFLAGS,"-m32") + TARGETFLAGS="-m32" PKG_CONFIG_PATH=${PKG_CONFIG_PATH:-/usr/lib/i386-linux-gnu/pkgconfig:/usr/lib32/pkgconfig:/usr/lib/pkgconfig} export PKG_CONFIG_PATH enable_win16=${enable_win16:-yes} @@ -166,14 +167,21 @@ case $host in CXX="$CXX -m64" host_cpu="x86_64" notice_platform="64-bit " - AC_SUBST(TARGETFLAGS,"-m64") + TARGETFLAGS="-m64" fi ;; arm*) - AC_CACHE_CHECK([whether $CC supports Thumb],wine_cv_thumb, - [WINE_TRY_ASM_LINK([".thumb\nblx ac_test\n.arm"],[int ac_test(int i) { return i; }], [if (ac_test(1)) return 1], - [wine_cv_thumb=yes],[wine_cv_thumb=no])]) - test $wine_cv_thumb != no || AC_MSG_ERROR([You need a target with Thumb support to build Wine for ARM.]) + AC_CACHE_CHECK([whether $CC supports Thumb-2],wine_cv_thumb2, + [WINE_TRY_ASM_LINK([".syntax unified\n\t.thumb\n\tldm r0,{r0-r8}"],,, + [wine_cv_thumb2=yes],[wine_cv_thumb2=no])]) + if test x"$wine_cv_thumb2" = xyes + then + CFLAGS="$CFLAGS -mthumb" + TARGETFLAGS="-mthumb" + else + CFLAGS="$CFLAGS -marm" + TARGETFLAGS="-marm" + fi case $with_float_abi in soft|softfp|hard) float_abi=$with_float_abi ;; @@ -184,7 +192,7 @@ case $host in *) float_abi=softfp saved_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -marm -mfloat-abi=$float_abi" + CFLAGS="$CFLAGS -mfloat-abi=$float_abi" AC_CACHE_CHECK([whether $CC supports -mfloat-abi=$float_abi],wine_cv_float_abi, [WINE_TRY_ASM_LINK(["vmrs r2,fpscr"],,,[wine_cv_float_abi=yes],[wine_cv_float_abi=no])]) if test $wine_cv_float_abi = no @@ -196,8 +204,8 @@ case $host in esac ;; esac - CFLAGS="$CFLAGS -marm -mfloat-abi=$float_abi" - AC_SUBST(TARGETFLAGS,"-marm -mfloat-abi=$float_abi") + CFLAGS="$CFLAGS -mfloat-abi=$float_abi" + TARGETFLAGS="$TARGETFLAGS -mfloat-abi=$float_abi" ;; aarch64*) AC_CACHE_CHECK([whether $CC supports __builtin_ms_va_list],wine_cv_builtin_ms_va_list, @@ -248,7 +256,7 @@ else fi if test -n "$host_alias" -a "$host_alias" != "$build_alias" then - AC_SUBST(TARGETFLAGS,"-b $host_alias $TARGETFLAGS") + TARGETFLAGS="-b $host_alias $TARGETFLAGS" fi dnl Check for flex