On Wed, May 28, 2014 at 08:26:58AM -0600, Warner Losh wrote: > > Then we disagree on this point. However, the disagreement here is > kinda foundational: to build a set of libraries or sys root, you have > to have a MACHINE_ARCH to make it work. Even in our current system, we > set MACHINE_ARCH to i386 or powerpc when building the 32-bit binaries > (note: we don?t do this for mips). This means that if we do grow x32 > support, we?ll need to grow a MACHINE_ARCH for it. That?s my point: > all ABIs have MACHINE_ARCH associated with them, and those are the > names users are used to specifying, and are the ones that are the most > natural for script writers to use. With nathan?s patches, we?re to the > point where those are used, though there?s also the option of using > the non-standard names if you want (e.g. amd64:32 instead of x32). >
I am not sure if this comment would add anything to the discussion, but other build systems do not require MACHINE_ARCH. In our terms, other build systems are happy to build: i386 binary when MACHINE is amd64 and CFLAGS contains -m32; x32 binary when MACHINE is amd64 and CFLAGS contains -mx32. For HEAD and stable/10 we finally reached the point where -m32 works, on amd64; it worked on powerpc64 from inception, AFAIU Nathan. At least this is true for dependencies limited to the base system, and not to the ports (the later is since ports do not know about multiarch). It is limitation of our build that we require MACHINE_ARCH to build other natively supported ABI binary on the host. Ideally, the hacks that treat lib32 build as the cross-compilation would go away eventually.
pgpeySv5p9K4i.pgp
Description: PGP signature