diff --git a/Makefile.in b/Makefile.in index 63e58d5ee38..193ecc59a40 100644 --- a/Makefile.in +++ b/Makefile.in @@ -42,7 +42,7 @@ CPPFLAGS = @CPPFLAGS@ CROSSCFLAGS = @CROSSCFLAGS@ EXTRACFLAGS = @EXTRACFLAGS@ EXTRACROSSCFLAGS= @EXTRACROSSCFLAGS@ -MSVCRTFLAGS = @BUILTINFLAG@ +MSVCRTFLAGS = @MSVCRTFLAGS@ TARGETFLAGS = @TARGETFLAGS@ LDDLLFLAGS = @LDDLLFLAGS@ LDEXECFLAGS = @LDEXECFLAGS@ diff --git a/configure b/configure index d3253a2ca76..69d085cda7b 100755 --- a/configure +++ b/configure @@ -631,7 +631,8 @@ RT_LIBS POLL_LIBS DL_LIBS TOOLSEXT -BUILTINFLAG +UNWINDFLAGS +MSVCRTFLAGS EXCESS_PRECISION_CFLAGS EXTRACFLAGS VKD3D_LIBS @@ -17121,7 +17122,9 @@ fi ;; esac done - case $host_os in + MSVCRTFLAGS="" + + case $host_os in cygwin*|mingw32*) ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fno-builtin" >&5 $as_echo_n "checking whether the compiler supports -fno-builtin... " >&6; } @@ -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 diff --git a/configure.ac b/configure.ac index c7f5236cf85..0490b53410a 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/tools/winebuild/utils.c b/tools/winebuild/utils.c index b8a51256093..315643cf7dd 100644 --- a/tools/winebuild/utils.c +++ b/tools/winebuild/utils.c @@ -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; } diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c index 33f838f424c..28dce1b4103 100644 --- a/tools/winegcc/winegcc.c +++ b/tools/winegcc/winegcc.c @@ -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 "