From: Erik L. <e.l...@hc...> - 2007-05-27 13:54:35
|
I am using a (linux) hosted MinGW to cross compile libraries which are loaded/executed on a pc running Win2K [*]. When using this setup, I need to run ./configure with the "--host=type" option. What is the correct system type specification for the host in such a setup? Thanks in advance, Erik Leunissen ============== [*] Some basic system info, gained by executing under cygwin: $ uname -srmpio CYGWIN_NT-5.0 1.5.18(0.132/4/2) i686 unknown unknown Cygwin |
From: Brian D. <br...@de...> - 2007-05-27 14:13:02
|
Erik Leunissen wrote: > I am using a (linux) hosted MinGW to cross compile libraries which are > loaded/executed on a pc running Win2K [*]. > > When using this setup, I need to run ./configure with the "--host=type" > option. > > What is the correct system type specification for the host in such a setup? The canonical host triplet is defined by what config.guess returns when run natively on the host, which is i686-pc-mingw32. Note that the 686 here means absolutely nothing about the specific processor of the system, nor does it mean you're generating code for any particular processor type, it just means "x86 family"; you could use practically any digit [3456] here with identical results. But you can also use a non-canonical version of the host triplet. What is acceptable here all depends entirely on how the macros are written; it's really a type of freeform field with certain conventions. For example, the canonical host triplet for linux is i686-pc-linux (or even i686-pc-linux-gnu) but sometimes you'll see people specify just i386-linux. You can look at common m4 / autoconf macros and see that they typically match host using globs that are quite accomodating. Thus you'll often see people use just "mingw32" as the non-canonical host triplet for MinGW, which should work fine everywhere as it's established practice. > Some basic system info, gained by executing under cygwin: > > $ uname -srmpio > CYGWIN_NT-5.0 1.5.18(0.132/4/2) i686 unknown unknown Cygwin This is completely irrelevant. The only thing this indicates is the version of windows (NT 5.0 aka Win 2k) and the version of Cygwin. And the version of Windows has no bearing on the host triplet. Brian |
From: Erik L. <e.l...@hc...> - 2007-05-27 15:56:18
|
Thanks for your answer Brian, For all practical purposes, I can proceed. However, at a fundamental level, a few things are left: > > The canonical host triplet is defined by what config.guess returns when > run natively on the host, which is i686-pc-mingw32. Note that the 686 > here means absolutely nothing about the specific processor of the > system, nor does it mean you're generating code for any particular > processor type, it just means "x86 family"; you could use practically > any digit [3456] here with identical results. > 1) The autoconf manual mentions as the format of the canonical system type: cpu-company-system Does that entirely apply here? (I can't see how "pc" relates to company) 2) How does one "run config.guess natively"? I can run it under cygwin, where it returns "i686-pc-cygwin". (I could run it under msys, but I do not have that installed.) Erik. |
From: Julien L. <ju...@fa...> - 2007-05-27 18:03:54
|
On 27/05/2007 17:56, Erik Leunissen wrote: > 1) > The autoconf manual mentions as the format of the canonical system type: > cpu-company-system > Does that entirely apply here? (I can't see how "pc" relates to company) I'm too lazy to find the source of this info, but here is how I remember having read about it: "pc" actually just means default or unspecified. It used to be "unknown" (eg. i386-unknown-linux) but apparently "unknown" was more confusing to users than "pc". |
From: Keith M. <kei...@us...> - 2007-05-27 18:12:15
|
On Sunday 27 May 2007 15:19, Brian Dessent wrote: > > I am using a (linux) hosted MinGW to cross compile libraries which > > are loaded/executed on a pc running Win2K [*]. > > > > When using this setup, I need to run ./configure with the > > "--host=3Dtype" option. > > > > What is the correct system type specification for the host in such > > a setup? > > The canonical host triplet is defined by what config.guess returns > when run natively on the host, which is i686-pc-mingw32. =A0Note that > the 686 here means absolutely nothing about the specific processor of > the system, nor does it mean you're generating code for any > particular processor type, it just means "x86 family"; you could use > practically any digit [3456] here with identical results. It doesn't need to be a canonical host triplet, but neither can you just=20 specify anything arbitrary; the determinant is whatever prefix you are=20 using to designate your cross compiler tool chain. If you've used our=20 build scripts, and accepted the default, that will give you a cross=20 compiler invoked as `i586-mingw32-gcc', (and similarly for the other=20 tools, `i586-mingw32-toolname'); with this, you need to specify the=20 `host_alias' as `--host=3Di586-mingw32', otherwise the configure script=20 will be unable to detect your cross compiler. If your cross compiler=20 tool chain is identified by any other `tool_prefix', then you need to=20 adjust that `host_alias' accordingly. On Sunday 27 May 2007 16:56, Erik Leunissen wrote: > Thanks for your answer Brian, > > ... > > 1) > The autoconf manual mentions as the format of the canonical system > type: > > cpu-company-system > > Does that entirely apply here? (I can't see how "pc" relates to > company) The `company' component is normally used to specify the manufacturer of=20 the CPU. Since x86 CPUs use identical machine code, regardless of the=20 manufacturer, `pc' is used as a generic term. IIRC, this is mentioned=20 in the autoconf manual; if not, it's stated within in `config.guess'=20 and `config.sub'. > 2) > How does one "run config.guess natively"? > I can run it under cygwin, where it returns "i686-pc-cygwin". > (I could run it under msys, but I do not have that installed.) The canonical form only becomes important if the configure script uses=20 AC_CANONICAL_HOST autoconf macro, either directly or implicitly via=20 AC_CANONICAL_SYSTEM. In either case, it will use `config.sub', not=20 `config.guess', to canonicalise the `host_alias' you specify. You can=20 run that on your GNU/Linux host, to determine how your chosen form of=20 `host_alias' will be canonicalised as a Win32 host triplet. Regards, Keith. |
From: Brian D. <br...@de...> - 2007-05-27 22:13:21
|
Erik Leunissen wrote: > 1) > The autoconf manual mentions as the format of the canonical system type: > > cpu-company-system > > Does that entirely apply here? (I can't see how "pc" relates to company) For the x86 architecture, the "company" field is essentially irrelevant. You can use "pc", but a lot of people question whether this is a good idea -- what's a "pc" exactly? Is a 32-core rackmount x86 server a PC? Is an embedded device with 16 MB flash a "pc"? The x86 architecture has great breadth, so calling everything a "pc" is kind of silly, so it's slightly more PC (no pun intended!) to use "unknown" here instead. Some Linux distros insert their branding here, e.g. ia64-suse-linux-gnu, x86_64-suse-linux-gnu, etc. But that's mostly cosmetic as far as I know. It really doesn't matter that much, as long as like Keith said you are internally consistent with how you decide to label the target when creating your cross-toolchain. This field is really more relevant for platforms made by a single company: s390-ibm-linux-gnu sparc-sun-solaris2.10 powerpc-apple-darwin9 i686-apple-darwin8 hppa2.0w-hp-hpux11.11 ... > 2) > How does one "run config.guess natively"? > I can run it under cygwin, where it returns "i686-pc-cygwin". > (I could run it under msys, but I do not have that installed.) With MSYS. Brian |
From: Erik L. <e.l...@hc...> - 2007-05-28 10:33:05
|
Thanks to all of you for your disambiguating responses. Erik. |