Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Feb 2005 00:05:08 -0800
From:      John-Mark Gurney <gurney_j@resnet.uoregon.edu>
To:        "David O'Brien" <obrien@FreeBSD.org>
Cc:        freebsd-arch@FreeBSD.org
Subject:   Re: buildenv target
Message-ID:  <20050213080508.GB40468@funkthat.com>
In-Reply-To: <20050213062910.GC83950@dragon.nuxi.com>
References:  <20050213001752.GA40468@funkthat.com> <20050213062910.GC83950@dragon.nuxi.com>

next in thread | previous in thread | raw e-mail | index | archive | help
David O'Brien wrote this message on Sat, Feb 12, 2005 at 22:29 -0800:
> On Sat, Feb 12, 2005 at 04:17:52PM -0800, John-Mark Gurney wrote:
> > Does anyone object to adding a buildenv target to our Makefile, so that
> > when crossbuilding you can get the tools setup in a shell.  Useful for
> > doing crossbuild testing w/ a cross-built world eaiser.
> ..
> > so:
> > bash-2.05b$ which config
> > /usr/sbin/config
> > bash-2.05b$ make buildenv TARGET_ARCH=arm
> > Entering world for arm:arm
> > bash-2.05b$ which config
> > /usr/obj/arm/usr/home/jmg/arm/src/i386/legacy/usr/sbin/config
> 
> I don't quite follow what you're going to do with in it.
> The problem is the more we bend this to do what the random person wants
> to do we build a garantium thing that is hard to change w/o breaking some
> "established" behavior.  Much like the huge mess we had in binutils to
> support cross assembling to non-FreeBSD platforms.

what you can do with it is:
cd ~jmg/arm/src/sys/arm/conf
config TS7200
cd ../../compile/TS7200
make depend && make -j 4

and now hack to your hearts content on an arm kernel on your i386 box
with out having to do things like cognet suggests on his arm text file
(from http://people.freebsd.org/~cognet/freebsd_arm.txt):
make TARGET_ARCH=arm TOOLS_PREFIX=/usr/cross depend all
make TARGET_ARCH=arm TOOLS_PREFIX=/usr/cross DESTDIR=/usr/cross install
Then go in /usr/src/gnu/usr.bin/binutils, and do :
make TARGET_ARCH=arm TOOLS_PREFIX=/usr/cross depend all
make TARGET_ARCH=arm TOOLS_PREFIX=/usr/cross DESTDIR=/usr/cross install
You should get what is needed to cross-compile a kernel.
You need to set the following environment varibles for cross-compiling :
export CC=/usr/cross/usr/bin/gcc
export AS=/usr/cross/usr/bin/as
export NM=/usr/cross/usr/bin/nm
export RANLIB=/usr/cross/usr/bin/ranlib
export LD=/usr/cross/usr/bin/ld
export OBJCOPY=/usr/cross/usr/bin/objcopy
export SIZE=/usr/cross/usr/bin/size
export MACHINE=arm
export MACHINE_ARCH=arm
Then you can compile the kernel the usual way, ie :
cd /sys/arm/conf
config IQ31244
cd ../compile/IQ31244 && make depend all

so, you now do:
make buildworld TARGET_ARCH=arm
make buildenv TARGET_ARCH=arm
and build your kernel as you normally would...  a bit easier, wouldn't
you say?

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."



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