Date: Thu, 18 Nov 2010 16:01:20 +1100 (EST) From: Bruce Evans <brde@optusnet.com.au> To: Warner Losh <imp@bsdimp.com> Cc: Tijl Coosemans <tijl@coosemans.org>, Dimitry Andric <dim@freebsd.org>, Garrett Cooper <gcooper@freebsd.org>, freebsd-arch@freebsd.org, Warner Losh <imp@freebsd.org> Subject: Re: Support for cc -m32 Message-ID: <20101118154920.S3472@besplex.bde.org> In-Reply-To: <4CE46602.9000303@bsdimp.com> References: <201007291718.12687.tijl@coosemans.org> <4CE417B3.3030102@bsdimp.com> <201011172058.05683.tijl@coosemans.org> <201011171718.37798.jhb@freebsd.org> <4CE46602.9000303@bsdimp.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 17 Nov 2010, Warner Losh wrote: > On 11/17/2010 15:18, John Baldwin wrote: >> ... >> I'd prefer something that autogenerated headers in /usr/include/machine >> that >> #include the appropriate version similar to what Warner suggested. >> >> However, one issue with that approach (and this one) are headers that only >> exist for one platform. The end result would be that that header would now >> exist for both platforms (in that if you do 'if [ -r >> /usr/include/machine/foo.h ]' it will be true). We can make it #error or >> otherwise fail (by including a non-existing file for example), but if there >> was some way to have cc -m32 "magically" substitute "i386/" for "machine", >> that is what I would most prefer. (This has problems too in that #include >> <machine/foo.h> would work with -m32 even though >> /usr/include/machine/foo.h >> doesn't exist, but /usr/include/i386/foo.h does. > "magically" converting machine -> i386 requires cpp hacking. > > However, the if [] test is beyond the scope of the API that we support. > Scripts that use -m32 will have to cope with other issues. > > We could 'solve' this by having an /usr/include32, but even that still isn't > complete. Doesn't seem so hard to hack cpp for a subdirectory (but harder than adding -I for the whole include path). > I contend that the least bad solution is to auto generate the machine > directory from the sys/{i386,amd64}/include. If we do that, we could > implement -m64 on i386 too, but that needs a lot more infrastructure. Maybe auto-generate machine32 and hack cpp to use that instead of `machine'? Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20101118154920.S3472>