Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Nov 1999 20:53:23 +0100
From:      Marcel Moolenaar <marcel@scc.nl>
To:        John Birrell <jb@cimlogic.com.au>
Cc:        Warner Losh <imp@village.org>, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src Makefile.inc1 src/usr.bin/make Makefile
Message-ID:  <383307B3.ACE06314@scc.nl>
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>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?383307B3.ACE06314>