[U-Boot] [PATCH/next v3 27/28] Add support for building native win32 tools

Peter Tyser ptyser at xes-inc.com
Wed Apr 15 00:52:30 CEST 2009


Hi Wolfgang,

On Sat, 2009-04-04 at 01:20 +0200, Wolfgang Denk wrote:
> Dear Peter Tyser,
> 
> In message <1236988492-21295-28-git-send-email-ptyser at xes-inc.com> you wrote:
> > Add support for compiling the host tools in the tools directory using
> > the MinGW toolchain.  This produces executables which can be used on
> > standard Windows computers without requiring cygwin.
> > 
> > One must specify the MinGW compiler and strip utilities as if they
> > were the host toolchain in order to build win32 executables, eg:
> > 
> > make HOSTCC=i586-mingw32msvc-gcc HOSTSTRIP=i586-mingw32msvc-strip tools
> > 
> > Signed-off-by: Peter Tyser <ptyser at xes-inc.com>
> > ---
> >  README                |   10 ++++++
> >  include/image.h       |    2 +
> >  include/libfdt_env.h  |   12 +++++++
> >  tools/Makefile        |   23 ++++++++++----
> >  tools/mingw_support.c |   79 +++++++++++++++++++++++++++++++++++++++++++++++++
> >  tools/mingw_support.h |   51 +++++++++++++++++++++++++++++++
> >  tools/mkimage.h       |    5 +++
> >  tools/os_support.c    |   24 +++++++++++++++
> >  tools/os_support.h    |   29 ++++++++++++++++++
> >  tools/ubsha1.c        |    3 ++
> >  10 files changed, 231 insertions(+), 7 deletions(-)
> >  create mode 100644 tools/mingw_support.c
> >  create mode 100644 tools/mingw_support.h
> >  create mode 100644 tools/os_support.c
> >  create mode 100644 tools/os_support.h
> 
> I'm not happy about this os_support thingy, especially since it will
> always be compiled, even if not needed in 99.99% of the cases. Maybe
> you have a better idea and can send a cleanup-patch?

The 2 options that come to mind are:
1. Keep the current method of unconditionally compiling os_support.c,
which will in turn include any os-specific files.

2. Move the logic of determining which os-specific files are compiled
into the Makefile.  Something like:

 ifneq (,$(findstring WIN32 ,$(shell $(HOSTCC) -E -dM -xc /dev/null)))
 SFX = .exe
+OS_SUPPORT_FILES = mingw_support.c
 else
 SFX =
+OS_SUPPORT_FILES =
 endif

and then replace references of "os_support.c" with "$(OS_SUPPORT_FILES).
(Or something along those lines).


#1 is ugly in that 99.99% of the time an empty os_support.c file is
processed.

#2 is ugly in that the Makefile method to determine a target OS is
somewhat hokey and will only get hokier if/when additional OS targets
are supported.

I'd vote for #1 as I think the wasted time of processing os_support.c is
a drop in the bucket and it seems a bit cleaner than hacking up the
Makefile.

If others have any clever ideas let me know.

Best,
Peter





More information about the U-Boot mailing list