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>
