This is the mail archive of the
cygwin-apps
mailing list for the Cygwin project.
Re: cygport cross compile(r) support [was: Re: cygport patch: suppress libtool fixup step]
- From: "Yaakov (Cygwin/X)" <yselkowitz at users dot sourceforge dot net>
- To: cygwin-apps <cygwin-apps at cygwin dot com>
- Date: Mon, 12 Jul 2010 00:49:41 -0500
- Subject: Re: cygport cross compile(r) support [was: Re: cygport patch: suppress libtool fixup step]
- References: <4C3215FC.3010309@cwilson.fastmail.fm> <1278402537.5784.8.camel@YAAKOV04> <4C337C6E.2080003@cwilson.fastmail.fm> <1278455320.4032.49.camel@YAAKOV04> <4C33EEC1.9050600@cwilson.fastmail.fm> <1278519024.1096.90.camel@YAAKOV04> <4C34D3BF.7020404@cwilson.fastmail.fm> <1278548055.6960.59.camel@YAAKOV04> <4C3534E6.90505@cwilson.fastmail.fm> <1278560355.6960.114.camel@YAAKOV04> <4C35E1E1.1080906@cwilson.fastmail.fm> <1278724102.7240.61.camel@YAAKOV04> <4C3A10CA.30606@cwilson.fastmail.fm>
On Sun, 2010-07-11 at 14:43 -0400, Charles Wilson wrote:
> How about this: suppose for the sake of argument that JonY *really*
> would rather the 64bit compiler, at least, also support multilib -- in
> the long run.
>
> However, it's easier to walk before you run, so how about we get
> everything nice and pretty with two (three, counting mingw.org) separate
> non-multilib tool chains. Each would be built with sysroots, and given
> the way (I now discover) sysroots *must* work, we would thus end up with;
Since you keep mentioning mingw.org, AFAICS they still ship gcc-3.4.4,
which we (sort of) have already. Is that what you are referring to, or
do you simply mean the latest binutils and gcc built for target
i686-pc-mingw32? If the latter, are any patches or specific configure
options necessary (besides using dw2 exceptions instead of sjlj)?
> [1] The official --prefix with which cross-compiled clients, built
> using the mingw.org toolchain, should be configured. Dunno whether
> this should be the /mingw (which is what mingw.org uses for its
> stuff, modulo dosify concerns), or something we decide on our own,
> like --prefix=/mingw32 or --prefix=/mingw.org.
>
> [2] Whatever prefix we choose to assert that cross-compiled clients,
> built using the 32bit-flavor mingw64 toolchain, should be
> configured. I think the mingw64 guys recommend using anything
> EXCEPT /mingw -- because they don't want to conflict with stuff
> from mingw.org (or, more accurately, they don't want to run the
> risk that stuff from mingw.org would conflict with THEM)
>
> [3] Whatever prefix we choose to assert that cross-compiled clients,
> built using the 64bit-flavor mingw64 toolchains, should be
> configured. I'm partial to --prefix=/mingw64.
Are you sure about this? The /mingw prefix is hard-coded into all
gcc/config/i386/t-mingw*.
> Naturally, cygport's cross{-client?}.cygclass would arrange that the
> actual install prefix would be
> ${D}/usr/$target-triple/sys-root/$configured-prefix
> before packing up whatever's underneath ${D}.
Ack.
> Now, IF the supposition above (about JonY really wanting to provide
> multilib) is correct, then we can figure out how the -m32 mode of a
> *later* release of the mingw64-64bit compiler would work. But...walk
> first, then run.
>
> And maybe JonY doesn't even care much about multilib.
>From the POV of building other packages, trying to build any package
simultaneously for a multilib setup is a lot of work, and cygport is
certainly not up to that right now. I think it should suffice if we
provide both i686 and x86_64 mingw64 compilers.
> (*) NOTE: I'm assuming that we would continue to use
> --enable-version-specific-runtime-libs.
Of course.
> Ah, but *I* know where it is, so I can at LEAST do
> info /usr/$target/share/info/gcc.info
>
> with any other plan, I can't locally check the documentation for my
> currently installed cross-compiler.
You might, but others likely will not.
To make it even more confusing, the man1 pages are $target-namespaced,
so they are safe in /usr/share/man/man1, but the man7 pages are not.
The latter have very little to do with the actual packages, however, so
I'm not concerned about removing those.
> The only relevant patch in "our" gettext's m4 macros is this:
I was referring to shrext in config.rpath:
http://www.cygwin.com/ml/cygwin/2008-04/msg00659.html
Although now that I think about it, we could just manually patch that
for each toolchain package.
> I see. Yes, we'd really want the (cross) gcc and binutils apps to link
> against their own internal libintl.a, since the internal one would have
> our custom --datarootdir definition, so that it would look in the
> "correct" place for the proper version of the i18n stuff.
Huh? Customizing the location of locales doesn't require a different
libintl, you just need to make sure that the second argument to
bindtextdomain(3) is set correctly. So if we want to "invent"
$prefix/$target/share for toolchain.cygclass packages, cygport just
needs to set --datarootdir accordingly.
But even with --datarootdir=/usr/$target/share, somehow the locales
*still* end up in /usr/share/locale. Whether it's worth trying to rely
on the native binutils/gcc locales for at least partial translations
(--enable-nls then remove ${D}/usr/share/locale) or not (--disable-nls),
I suppose is debatable.
Now back to work on this...
Yaakov