Message ID | 35f8542e-df08-62ac-da0e-824a974b96e6@foss.arm.com |
---|---|
State | New |
Headers | show |
On 01/26/2017 01:04 PM, Thomas Preudhomme wrote: > Hi JonY, > > On 19/01/17 01:37, JonY wrote: >> On 01/18/2017 09:48 AM, Thomas Preudhomme wrote: >>> By default, wildcard support on Windows for programs compiled with mingw >>> depends on how the mingw runtime was configured. This means if one wants >>> to build GCC for Windows with a consistent behavior with Wildcard >>> (enabled or disabled) the mingw runtime must be built as well. This >>> patch adds an option to GCC configuration to force the behavior with >>> wildcard when building GCC for Windows host. It does so by setting the >>> _dowildcard variable in the driver to a given value depending on the >>> configure option value (yes or no), thus overriding the variable from >>> mingw runtime. >>> >>> Testing: I've successfully done a build of the arm-none-eabi cross GCC >>> for Windows with Ubuntu system mingw runtime (configured without >>> wildcard support by default) with the three configure options: >>> 1) --enable-wildcard: wildcard can be used successfully and nm of >>> driver-mingw32.o shows that _dowildcard is in .data section >>> 2) --disable-wildcard: wildcard cannot be used and nm of >>> driver-mingw32.o shows that _dowildcard is in .bss section >>> 3) no option: wildcard cannot be used and nm of driver-mingw32.o shows >>> no _dowildcard defined and all sections are empty >>> >>> Is this ok for stage1? >>> Looks good, be sure to emphasize this option affects mingw hosted GCC only, not the compiler output.
Hi Jonathan, Sorry for the delay answering. On 07/02/17 08:47, JonY wrote: > On 01/26/2017 01:04 PM, Thomas Preudhomme wrote: >> Hi JonY, >> >> On 19/01/17 01:37, JonY wrote: >>> On 01/18/2017 09:48 AM, Thomas Preudhomme wrote: >>>> By default, wildcard support on Windows for programs compiled with mingw >>>> depends on how the mingw runtime was configured. This means if one wants >>>> to build GCC for Windows with a consistent behavior with Wildcard >>>> (enabled or disabled) the mingw runtime must be built as well. This >>>> patch adds an option to GCC configuration to force the behavior with >>>> wildcard when building GCC for Windows host. It does so by setting the >>>> _dowildcard variable in the driver to a given value depending on the >>>> configure option value (yes or no), thus overriding the variable from >>>> mingw runtime. >>>> >>>> Testing: I've successfully done a build of the arm-none-eabi cross GCC >>>> for Windows with Ubuntu system mingw runtime (configured without >>>> wildcard support by default) with the three configure options: >>>> 1) --enable-wildcard: wildcard can be used successfully and nm of >>>> driver-mingw32.o shows that _dowildcard is in .data section >>>> 2) --disable-wildcard: wildcard cannot be used and nm of >>>> driver-mingw32.o shows that _dowildcard is in .bss section >>>> 3) no option: wildcard cannot be used and nm of driver-mingw32.o shows >>>> no _dowildcard defined and all sections are empty >>>> >>>> Is this ok for stage1? >>>> > > Looks good, be sure to emphasize this option affects mingw hosted GCC > only, not the compiler output. I think that should be pretty clear in the latest version of the patch, doc/install.texi contains: "Note that this option only affects wildcard expansion for GCC itself. It does not affect wildcard expansion of executables built by the resulting GCC." If you think a part of that sentence is still confusing please let me know and I'll improve it. Best regards, Thomas
On 02/14/2017 09:32 AM, Thomas Preudhomme wrote: >> >> Looks good, be sure to emphasize this option affects mingw hosted GCC >> only, not the compiler output. > > I think that should be pretty clear in the latest version of the patch, > doc/install.texi contains: > > "Note that this option only affects wildcard expansion for GCC itself. > It does > not affect wildcard expansion of executables built by the resulting GCC." > > If you think a part of that sentence is still confusing please let me > know and I'll improve it. > > Best regards, > > Thomas > Yes, that should be good, no more objections.
On 02/14/2017 10:42 AM, JonY wrote: > On 02/14/2017 09:32 AM, Thomas Preudhomme wrote: >>> >>> Looks good, be sure to emphasize this option affects mingw hosted GCC >>> only, not the compiler output. >> >> I think that should be pretty clear in the latest version of the patch, >> doc/install.texi contains: >> >> "Note that this option only affects wildcard expansion for GCC itself. >> It does >> not affect wildcard expansion of executables built by the resulting GCC." >> >> If you think a part of that sentence is still confusing please let me >> know and I'll improve it. >> >> Best regards, >> >> Thomas >> > > Yes, that should be good, no more objections. > > Before I forget, please also provide a changelog, thanks.
Here you are: 2017-01-24 Thomas Preud'homme <thomas.preudhomme@arm.com> * configure.ac (--enable-mingw-wildcard): Add new configurable feature. * configure: Regenerate. * config.in: Regenerate. * config/i386/driver-mingw32.c: new file. * config/i386/x-mingw32: Add rule to build driver-mingw32.o. * config.host: Link driver-mingw32.o on MinGW host. * doc/install.texi: Document new --enable-mingw-wildcard configure option. Must have forgotten to paste it. On 17/02/17 10:52, JonY wrote: > On 02/14/2017 10:42 AM, JonY wrote: >> On 02/14/2017 09:32 AM, Thomas Preudhomme wrote: >>>> >>>> Looks good, be sure to emphasize this option affects mingw hosted GCC >>>> only, not the compiler output. >>> >>> I think that should be pretty clear in the latest version of the patch, >>> doc/install.texi contains: >>> >>> "Note that this option only affects wildcard expansion for GCC itself. >>> It does >>> not affect wildcard expansion of executables built by the resulting GCC." >>> >>> If you think a part of that sentence is still confusing please let me >>> know and I'll improve it. >>> >>> Best regards, >>> >>> Thomas >>> >> >> Yes, that should be good, no more objections. >> >> > > Before I forget, please also provide a changelog, thanks. > >
On 02/17/2017 11:31 AM, Thomas Preudhomme wrote: > Here you are: > > 2017-01-24 Thomas Preud'homme <thomas.preudhomme@arm.com> > > * configure.ac (--enable-mingw-wildcard): Add new configurable > feature. > * configure: Regenerate. > * config.in: Regenerate. > * config/i386/driver-mingw32.c: new file. > * config/i386/x-mingw32: Add rule to build driver-mingw32.o. > * config.host: Link driver-mingw32.o on MinGW host. > * doc/install.texi: Document new --enable-mingw-wildcard configure > option. > > Must have forgotten to paste it. Thanks, I'll stage it locally until stage 1 opens.
Oh great thanks! Best regards, Thomas On 17/02/17 22:52, JonY wrote: > On 02/17/2017 11:31 AM, Thomas Preudhomme wrote: >> Here you are: >> >> 2017-01-24 Thomas Preud'homme <thomas.preudhomme@arm.com> >> >> * configure.ac (--enable-mingw-wildcard): Add new configurable >> feature. >> * configure: Regenerate. >> * config.in: Regenerate. >> * config/i386/driver-mingw32.c: new file. >> * config/i386/x-mingw32: Add rule to build driver-mingw32.o. >> * config.host: Link driver-mingw32.o on MinGW host. >> * doc/install.texi: Document new --enable-mingw-wildcard configure >> option. >> >> Must have forgotten to paste it. > > Thanks, I'll stage it locally until stage 1 opens. > > >
On 27/02/17 05:48, NightStrike wrote: > > > On Feb 22, 2017 10:06 AM, "Thomas Preudhomme" <thomas.preudhomme@foss.arm.com > <mailto:thomas.preudhomme@foss.arm.com>> wrote: > > Oh great thanks! > > Best regards, > > Thomas > > > On 17/02/17 22:52, JonY wrote: > > On 02/17/2017 11:31 AM, Thomas Preudhomme wrote: > > Here you are: > > 2017-01-24 Thomas Preud'homme <thomas.preudhomme@arm.com > <mailto:thomas.preudhomme@arm.com>> > > * configure.ac <http://configure.ac> > (--enable-mingw-wildcard): Add new configurable > feature. > * configure: Regenerate. > * config.in <http://config.in>: Regenerate. > * config/i386/driver-mingw32.c: new file. > * config/i386/x-mingw32: Add rule to build driver-mingw32.o. > * config.host: Link driver-mingw32.o on MinGW host. > * doc/install.texi: Document new --enable-mingw-wildcard > configure > option. > > Must have forgotten to paste it. > > > Thanks, I'll stage it locally until stage 1 opens. > > > This should be mentioned in the "porting to" page when it eventually goes in, as > it may be surprising behavior. > Will do once the file is created for gcc-8. Thanks for the suggestion Best regards, Thomas
diff --git a/gcc/config.host b/gcc/config.host index 6b28f3033ef92f1f0e09cc41f3a90be05c5e1e43..5e2db5327e3094a19cd29c81ceb1a9e2b11797c9 100644 --- a/gcc/config.host +++ b/gcc/config.host @@ -239,6 +239,7 @@ case ${host} in host_xmake_file="${host_xmake_file} i386/x-mingw32" host_exeext=.exe out_host_hook_obj=host-mingw32.o + host_extra_gcc_objs="${host_extra_gcc_objs} driver-mingw32.o" host_lto_plugin_soname=liblto_plugin-0.dll ;; x86_64-*-mingw*) @@ -247,6 +248,7 @@ case ${host} in host_xmake_file="${host_xmake_file} i386/x-mingw32" host_exeext=.exe out_host_hook_obj=host-mingw32.o + host_extra_gcc_objs="${host_extra_gcc_objs} driver-mingw32.o" host_lto_plugin_soname=liblto_plugin-0.dll ;; i[34567]86-*-darwin* | x86_64-*-darwin*) diff --git a/gcc/config.in b/gcc/config.in index 1959dd7a603f121b6f2a3e0f80563d6290299c8a..b1f8018acfc5e8bf12503130a4707a2f6c21a1fd 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -2015,6 +2015,12 @@ #endif +/* Value to set MinGW's _dowildcard to. */ +#ifndef USED_FOR_TARGET +#undef MINGW_DOWILDCARD +#endif + + /* Define if host mkdir takes a single argument. */ #ifndef USED_FOR_TARGET #undef MKDIR_TAKES_ONE_ARG diff --git a/gcc/config/i386/driver-mingw32.c b/gcc/config/i386/driver-mingw32.c new file mode 100644 index 0000000000000000000000000000000000000000..b70363ad26a7dc8ffccbb273e46d4dd6de1a6f8c --- /dev/null +++ b/gcc/config/i386/driver-mingw32.c @@ -0,0 +1,26 @@ +/* Host OS specific configuration for the gcc driver. + Copyright (C) 2017 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#include "config.h" + +/* When defined, force the use (if non null) or not (otherwise) of CLI + globbing. */ +#ifdef MINGW_DOWILDCARD +int _dowildcard = MINGW_DOWILDCARD; +#endif diff --git a/gcc/config/i386/x-mingw32 b/gcc/config/i386/x-mingw32 index b5cef97512032a223605fb4db592fab05b1bb521..d0fa05245c4566c56aab6a1a6683a13a4392f864 100644 --- a/gcc/config/i386/x-mingw32 +++ b/gcc/config/i386/x-mingw32 @@ -63,3 +63,6 @@ host-mingw32.o : $(srcdir)/config/i386/host-mingw32.c $(CONFIG_H) $(SYSTEM_H) \ coretypes.h hosthooks.h hosthooks-def.h toplev.h $(DIAGNOSTIC_H) $(HOOKS_H) $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(srcdir)/config/i386/host-mingw32.c + +driver-mingw32.o : $(srcdir)/config/i386/driver-mingw32.c $(CONFIG_H) + $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< diff --git a/gcc/configure b/gcc/configure index 60cb979b558431949a20fc83482b198a091c5efe..db2d114a52d8795265ca4d4348dfc695455e56f5 100755 --- a/gcc/configure +++ b/gcc/configure @@ -919,6 +919,7 @@ enable_rpath with_libiconv_prefix enable_sjlj_exceptions enable_secureplt +enable_mingw_wildcard enable_leading_mingw64_underscores enable_cld enable_frame_pointer @@ -1631,6 +1632,8 @@ Optional Features: --enable-sjlj-exceptions arrange to use setjmp/longjmp exception handling --enable-secureplt enable -msecure-plt by default for PowerPC + --enable-mingw-wildcard Set whether to expand wildcard on command-line. + Default to platform configuration --enable-leading-mingw64-underscores enable leading underscores on 64 bit mingw targets --enable-cld enable -mcld by default for 32bit x86 @@ -11944,6 +11947,21 @@ if test "${enable_secureplt+set}" = set; then : fi +# Check whether --enable-mingw-wildcard was given. +if test "${enable_mingw_wildcard+set}" = set; then : + enableval=$enable_mingw_wildcard; +else + enable_mingw_wildcard=platform +fi + +if test x"$enable_mingw_wildcard" != xplatform ; then : + +cat >>confdefs.h <<_ACEOF +#define MINGW_DOWILDCARD $(test x"$enable_mingw_wildcard" = xno; echo $?) +_ACEOF + +fi + # Check whether --enable-leading-mingw64-underscores was given. if test "${enable_leading_mingw64_underscores+set}" = set; then : enableval=$enable_leading_mingw64_underscores; @@ -18414,7 +18432,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18417 "configure" +#line 18435 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18520,7 +18538,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18523 "configure" +#line 18541 "configure" #include "confdefs.h" #if HAVE_DLFCN_H diff --git a/gcc/configure.ac b/gcc/configure.ac index b73a807ed14b5aafa51570a2449d9ac6e3c1f446..a8c323b60cc3c8af808934b023fd1689e421cadf 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -1808,6 +1808,16 @@ AC_ARG_ENABLE(secureplt, [enable -msecure-plt by default for PowerPC])], [], []) +AC_ARG_ENABLE(mingw-wildcard, +[AS_HELP_STRING([--enable-mingw-wildcard], + [Set whether to expand wildcard on command-line. + Default to platform configuration])], +[],[enable_mingw_wildcard=platform]) +AS_IF([test x"$enable_mingw_wildcard" != xplatform ], + [AC_DEFINE_UNQUOTED(MINGW_DOWILDCARD, + $(test x"$enable_mingw_wildcard" = xno; echo $?), + [Value to set MinGW's _dowildcard to.])]) + AC_ARG_ENABLE(leading-mingw64-underscores, AS_HELP_STRING([--enable-leading-mingw64-underscores], [enable leading underscores on 64 bit mingw targets]), diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 4958773818bba3318a20e555e9f00ea1c9b116fc..365d587a5a0ec6dad5b0fc62a04f022fcb33c386 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -1688,6 +1688,18 @@ Using the GNU Compiler Collection (GCC)}, See ``i386 and x86-64 Options'' in the main manual @end ifhtml +@item --enable-mingw-wildcard +@itemx --disable-mingw-wildcard +The @option{--enable-mingw-wildcard} option enables Microsoft Windows-hosted +GCC to perform wildcard expansion of its arguments, irregardless of the default +configuration of MinGW runtime. Conversely, @option{--disable-mingw-wildcard} +option disables wildcard expansion. When none of these options is specified, +wildcard expansion will be decided according to the way the MinGW runtime was +configured. + +Note that this option only affects wildcard expansion for GCC itself. It does +not affect wildcard expansion of executables built by the resulting GCC. + @item --enable-win32-registry @itemx --enable-win32-registry=@var{key} @itemx --disable-win32-registry