Date: Tue, 4 Mar 2008 09:52:45 -0800 From: "David O'Brien" <obrien@FreeBSD.org> To: Robert Watson <rwatson@FreeBSD.org> Cc: freebsd-hackers@FreeBSD.org Subject: Re: Comments on pmake diffs for building on Linux Message-ID: <20080304175245.GC90931@dragon.NUXI.org> In-Reply-To: <20080304151326.J41184@fledge.watson.org> References: <20080303.224256.635730757.imp@bsdimp.com> <20080304151326.J41184@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Mar 04, 2008 at 03:15:32PM +0000, Robert Watson wrote: > In most ports of FreeBSD parts to Linux that I've seen, the preferred > solution has to been to bring the entire FreeBSD queue.h with you > rather than relying on the native Linux queue.h. This is what we do > for OpenBSM, for example; this also helps out when you get to Mac OS X, We should stand back and divide the goal of building FreeBSD on MacOS X, Solaris, and Linux this into two topics: 1. How to get a suitable set of build tools. This is everything FreeBSD's src/Makefile.inc calls bootstrap, build, and cross tools. This will 90% require scripts and duplicated (but portable) sources in the projects CVS repository, with distfiles on ftp.freebsd.org. These scripts and bootstrap tools should be able to depend on a checked out FreeBSD src/ tree to reach over into. We would probably need to trim less of our GNU tools in src/contrib when we import them. 2. Given a suitable set of tools (probably in the number of 20), built and installed on your MacOS X, Solaris, or Linux hosts - how do we now build FreeBSD. This is not the 'buildworld' or 'buildkernel' targets. Those targets are explicitly designed to build FreeBSD on a FreeBSD system. Those builds create bootstrap, build, and cross tools that we've covered in #1. I'm not sure how many folks know that this works (on FreeBSD): cd /usr/src make buildworld installworld make clean make that is, a simple 'make' does build everything. Why was the buildworld target created? Because if your installed system does not 100% match your sources, you're doing a "cross build". Presumably we'd have to create a suitable target (say 'nonhosted-cross') that sets up CC, AR, etc... macros to use the tools from #1. DISTDIR would also need to be set. This target would do something like: make includes # this builds and installs make libaries # I don't recall if this includes installing make installlibaries make all make install -- -- David (obrien@FreeBSD.org) Q: Because it reverses the logical flow of conversation. A: Why is top-posting (putting a reply at the top of the message) frowned upon? Let's not play "Jeopardy-style quoting"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080304175245.GC90931>