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

Alexandre Julliard julliard at winehq.org
Fri May 17 16:10:14 CDT 2019


Module: wine
Branch: master
Commit: 945efdb6f304fde4399ccfee525816af6cfa5eb5
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=945efdb6f304fde4399ccfee525816af6cfa5eb5

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu May 16 22:55:39 2019 +0200

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

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 Makefile.in             |  2 +-
 configure               | 35 +++++++++++++++++++++++++++++++----
 configure.ac            |  4 +++-
 tools/winebuild/utils.c |  4 ++++
 tools/winegcc/winegcc.c |  2 ++
 5 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index 63e58d5..193ecc5 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 d3253a2..69d085c 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 c7f5236..0490b53 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 b8a5125..315643c 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 33f838f..28dce1b 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 "




More information about the wine-cvs mailing list