Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/rump



In message: <20090909010833.GA12102%netbsd.org@localhost>
            David Holland <dholland-sourcechanges%netbsd.org@localhost> writes:
: On Tue, Sep 08, 2009 at 10:02:33AM -0600, M. Warner Losh wrote:
:  > __NetBSD__ is the *COMPILER* environment.  Depending on it is *BAD*.
:  > You need to use a different symbol.  This is a bug in the NetBSD code
:  > now.  __NetBSD__ isn't, and never has bene, the KERNEL.
: 
: No need to shout...
: 
: Anyway, what does the compiler environment *mean* besides "we're
: building a NetBSD binary"? That's exactly what rumpkernel is, even if
: it's compiled with the FreeBSD compiler. Properly speaking it ought to
: be built with a cross-compiler; maybe that'll happen in the long term.

If you are building with a FreeBSD compiler, you are building a
FreeBSD binary, by definition.  __FreeBSD__ means you are building a
FreeBSD binary.  If that's not what you want to do, you need to jump
through a lot of hoops, but it usually easier to build a cross
compiler than jump through those hoops.  There's a lot more to the
environment than just -D__FreeBSD__, there's the default binaries that
are produced, there's a bunch of defines and arch assertions, default
paths to includes and libraries, etc.

This may be inconvenient.  I know years ago I tried building a NetBSD
kernel with a FreeBSD compiler, and that failed due to these
differences (and others other than __NetBSD__ not being defined).
Trying to kludge it caused me much pain and suffering.  I abandoned
the effort because building a proper cross compiler turned out to be a
lot easier...

sorry for the shouting earlier, but this is a hot-button since I've
had to explain this difference many times to many people over the
years...

Warner


Home | Main Index | Thread Index | Old Index