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>