makefiles: Use -fshort-wchar when building with msvcrt.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2019-05-16 22:55:39 +02:00
parent 40a76a212b
commit 945efdb6f3
5 changed files with 41 additions and 6 deletions

View File

@ -42,7 +42,7 @@ CPPFLAGS = @CPPFLAGS@
CROSSCFLAGS = @CROSSCFLAGS@
EXTRACFLAGS = @EXTRACFLAGS@
EXTRACROSSCFLAGS= @EXTRACROSSCFLAGS@
MSVCRTFLAGS = @BUILTINFLAG@
MSVCRTFLAGS = @MSVCRTFLAGS@
TARGETFLAGS = @TARGETFLAGS@
LDDLLFLAGS = @LDDLLFLAGS@
LDEXECFLAGS = @LDEXECFLAGS@

33
configure vendored
View File

@ -631,7 +631,8 @@ RT_LIBS
POLL_LIBS
DL_LIBS
TOOLSEXT
BUILTINFLAG
UNWINDFLAGS
MSVCRTFLAGS
EXCESS_PRECISION_CFLAGS
EXTRACFLAGS
VKD3D_LIBS
@ -17121,6 +17122,8 @@ fi ;;
esac
done
MSVCRTFLAGS=""
case $host_os in
cygwin*|mingw32*) ;;
*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fno-builtin" >&5
@ -17146,8 +17149,32 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__fno_builtin" >&5
$as_echo "$ac_cv_cflags__fno_builtin" >&6; }
if test "x$ac_cv_cflags__fno_builtin" = xyes; then :
BUILTINFLAG="-fno-builtin"
MSVCRTFLAGS="$MSVCRTFLAGS -fno-builtin"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fshort-wchar" >&5
$as_echo_n "checking whether the compiler supports -fshort-wchar... " >&6; }
if ${ac_cv_cflags__fshort_wchar+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_wine_try_cflags_saved=$CFLAGS
CFLAGS="$CFLAGS -fshort-wchar"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int main(int argc, char **argv) { return 0; }
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_cflags__fshort_wchar=yes
else
ac_cv_cflags__fshort_wchar=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
CFLAGS=$ac_wine_try_cflags_saved
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__fshort_wchar" >&5
$as_echo "$ac_cv_cflags__fshort_wchar" >&6; }
if test "x$ac_cv_cflags__fshort_wchar" = xyes; then :
MSVCRTFLAGS="$MSVCRTFLAGS -fshort-wchar"
fi ;;
esac

View File

@ -2011,9 +2011,11 @@ char*f(const char *h,char n) {return strchr(h,n);}]])],[ac_cv_c_logicalop_noisy=
done
dnl Disable gcc builtins except for Mingw
AC_SUBST(MSVCRTFLAGS,"")
case $host_os in
cygwin*|mingw32*) ;;
*) WINE_TRY_CFLAGS([-fno-builtin],[AC_SUBST(BUILTINFLAG,"-fno-builtin")]) ;;
*) WINE_TRY_CFLAGS([-fno-builtin],[MSVCRTFLAGS="$MSVCRTFLAGS -fno-builtin"])
WINE_TRY_CFLAGS([-fshort-wchar],[MSVCRTFLAGS="$MSVCRTFLAGS -fshort-wchar"]) ;;
esac
dnl gcc-4.6+ omits frame pointers by default, breaking some copy protections

View File

@ -462,6 +462,10 @@ struct strarray get_ld_command(void)
break;
}
}
if (target_cpu == CPU_ARM && target_platform != PLATFORM_WINDOWS)
strarray_add( &args, "--no-wchar-size-warning", NULL );
return args;
}

View File

@ -477,6 +477,8 @@ static strarray *get_link_args( struct options *opts, const char *output_name )
strarray_add( flags, "-shared" );
strarray_add( flags, "-Wl,-Bsymbolic" );
if (!opts->noshortwchar && opts->target_cpu == CPU_ARM)
strarray_add( flags, "-Wl,--no-wchar-size-warning" );
/* Try all options first - this is likely to succeed on modern compilers */
if (!try_link( opts->prefix, link_tool, "-fPIC -shared -Wl,-Bsymbolic "