Support for cc -m32

Bruce Evans brde at optusnet.com.au
Thu Nov 18 06:15:15 UTC 2010


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


More information about the freebsd-arch mailing list