From owner-cvs-all Wed Nov 17 11:54:17 1999 Delivered-To: cvs-all@freebsd.org Received: from post.mail.nl.demon.net (post-10.mail.nl.demon.net [194.159.73.20]) by hub.freebsd.org (Postfix) with ESMTP id 9C18014EA0; Wed, 17 Nov 1999 11:54:01 -0800 (PST) (envelope-from marcel@scc.nl) Received: from [212.238.132.94] (helo=scones.sup.scc.nl) by post.mail.nl.demon.net with esmtp (Exim 2.02 #1) id 11oB98-00051W-00; Wed, 17 Nov 1999 19:53:38 +0000 Received: from scc.nl (scones.sup.scc.nl [192.168.2.4]) by scones.sup.scc.nl (8.9.3/8.9.3) with ESMTP id UAA23934; Wed, 17 Nov 1999 20:53:23 +0100 (CET) (envelope-from marcel@scc.nl) Message-ID: <383307B3.ACE06314@scc.nl> Date: Wed, 17 Nov 1999 20:53:23 +0100 From: Marcel Moolenaar Organization: SCC vof X-Mailer: Mozilla 4.7 [en] (X11; I; Linux 2.2.5 i386) X-Accept-Language: en MIME-Version: 1.0 To: John Birrell Cc: Warner Losh , cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src Makefile.inc1 src/usr.bin/make Makefile References: <383189F7.67E89E8B@scc.nl> <38310A94.B1939A83@scc.nl> <199911151707.JAA03820@freefall.freebsd.org> <199911160533.WAA02391@harmony.village.org> <199911161544.IAA08642@harmony.village.org> <199911161714.KAA09479@harmony.village.org> <38319FFB.530FFCC6@scc.nl> <199911161935.MAA10311@harmony.village.org> <19991117212631.A13376@freebsd1.cimlogic.com.au> <38329493.82FFA536@scc.nl> <19991118060714.B13376@freebsd1.cimlogic.com.au> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk John Birrell wrote: > > On Wed, Nov 17, 1999 at 12:42:11PM +0100, Marcel Moolenaar wrote: > > John Birrell wrote: > > > > > > I've sent a set of makefiles to David O'Brien which allow gcc/egcs to > > > be built as host and cross-compilers. Most of the trickery needs > > > to be in sys.mk (it gets poluted more!), not Makefile.inc1 to ensure > > > that things like the bfd type set at all levels of the build. > > > > sys.mk should not and need not be polluted. With the proper staging > > and/or phasing of the build process you can handle anything without > > trickery. > > Can you cross-compile from any level in the tree? Not with the current set of makefiles. > > > all the tools that are needed for a cross-build. Then, for a cross-build, > > > all you need to do in Makefile.inc1 is this: > > > > > > # Check if cross-compiling. > > > __MA!=/sbin/sysctl -b hw.machine_arch > > > __M!=/sbin/sysctl -b hw.machine > > > .if ${__MA} != ${MACHINE_ARCH} || ${__M} != ${MACHINE} > > > # Cross-compiling, so don't build tools. > > > CROSS_COMPILING = 1 > > > NOTOOLS = 1 > > > .endif > > > > This won't work. I'm not able to make the native, non-cross Alpha > > compiler in a cross-build, because MACHINE_ARCH=alpha in that case and > > __MA will be something other (say i386). In a cross-build you want to > > create the same world you do when you don't cross-build. This is not the > > case with your 'solution'. > > Yes it is. You basicly have 2 variables: MACHINE_ARCH and `sysctl -n hw.machine_arch`. MACHINE_ARCH is set to the machine for which you're building and `sysctl -n hw.machine_arch` is contant, describing the host machine. How do you distinguish the following mandatory cases: 1) Make a compiler that runs on the host but makes binaries for the target, and 2) Make a compiler that runs on the target and makes binaries for the target 1) is simple: set MACHINE_ARCH=target and because sysctl=source CROSS_COMPILING=1 and all is fine. 2) is impossible. You need MACHINE_ARCH to specify for which machine the compiler should make the binaries, but you don't have a way to say that the compiler is supposed to run on the target so that CROSS_COMPILING should be 0. How do you pull that off? > > > I still believe that there should be compatibility in libc for the > > > old signal interface while the running kernel doesn't support the > > > new signal stuff. > > > > Unnecessarily complex. Fix what is broken. Don't work-around it, unless > > a fix is not feasible. The build process is broken and fixing it would > > give us much more in return than a work-around in libc would do. > > > > > Building a kernel in as part of a make world is too complicated IMHO. > > > > kernel: > > cd ${.CURDIR}/sys/${MACHINE_ARCH}/conf; \ > > config -d ${KERNELBUILDDIR} ${KERNEL} > > cd ${KERNELBUILDDIR}; ${MAKE} depend; ${MAKE} all > > > > Piece of cake :-) > > Sounds simple, but I doubt that it will work out that way because > of all the issues related to ${KERNEL}. What issues? Set kernel to GENERIC if not already set to something. -- Marcel Moolenaar mailto:marcel@scc.nl SCC Internetworking & Databases http://www.scc.nl/ The FreeBSD project mailto:marcel@FreeBSD.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message