[PATCH] fake pre-processor macros when building on non-FreeBSD
system
Nathan Whitehorn
nwhitehorn at freebsd.org
Tue Jul 12 23:07:25 UTC 2011
On 07/12/11 17:33, Robert Millan wrote:
> 2011/7/12 Nathan Whitehorn<nwhitehorn at freebsd.org>:
>> On 07/12/11 16:06, Robert Millan wrote:
>>> Why would one need to build a cross-compiler in order to compile
>>> userland-agnostic code for the same CPU architecture? This would be
>>> like requiring a cross-compiler in order to build things like GRUB or
>>> SeaBIOS.
>> For one, it might have a different ABI, which isn't actually that different
>> an issue than the one you find yourself facing.
> ABI can mean many things in this context. It could mean libc ABI, it
> could mean internal kernel interfaces, or even C calling conventions.
The one I meant was the third one. Linux and FreeBSD happen, though not
entirely by chance, to use almost exactly the same ABI on most platforms
(but not all!). Assuming, and requiring, interchangeability of ABIs here
thus seems like a poor choice. Once you've decided you might have a
different ABI, you need a cross-compiler, and that would simultaneously
take care of defining various platform-specific macros.
The "isn't actually that different" comment, which wasn't a particularly
useful thing to say, was that you could conceivably claim, under very
broad definitions of what ABI means, that having __FreeBSD__ defined is
in fact a part of the system ABI, just like the calling conventions or
the stack frame layout. In either case, you would be expected to use a
cross-compiler.
-Nathan
More information about the freebsd-hackers
mailing list