Re: buildenv target

From: John Baldwin (jhb_at_FreeBSD.org)
Date: 02/14/05

  • Next message: John-Mark Gurney: "Re: buildenv target"
    To: freebsd-arch@FreeBSD.org, John-Mark Gurney <gurney_j@resnet.uoregon.edu>
    Date: Mon, 14 Feb 2005 15:11:33 -0500
    
    

    On Sunday 13 February 2005 03:05 am, John-Mark Gurney wrote:
    > 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?

    Did you know that you can just do:

    make kernel-toolchain TARGET_ARCH=arm
    make buildkernel TARGeT_ARCH=arm KERNCONF=TS7200

    That's rather easy. You can even cross-build against a different kernel tree
    (I use this a lot for my p4 trees). For example:

    make TARGET_ARCH=amd64 KERNCONF=LINT KERNSRCDIR=/home/john/work/p4/proc \
        buildkernel NO_MODULES=yes

    With repeated builds (e.g. when fixing compile errors) adding
    NO_KERNELCLEAN=yes NO_KERNELDEPEND=yes is good as well.

    -- 
    John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
    "Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
    _______________________________________________
    freebsd-arch@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-arch
    To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
    

  • Next message: John-Mark Gurney: "Re: buildenv target"

    Relevant Pages

    • Re: buildenv target
      ... >> Does anyone object to adding a buildenv target to our Makefile, ... and now hack to your hearts content on an arm kernel on your i386 box ... You should get what is needed to cross-compile a kernel. ...
      (freebsd-arch)
    • 2.6.1-tiny1 tree for small systems
      ... This is the latest release of the -tiny kernel tree. ... tree is to collect patches that reduce kernel disk and memory ... - optional simple boot flag (Zwane Mwaikambo) ...
      (Linux-Kernel)
    • [ANNOUNCE] 2.6.0-tiny1 tree for small systems
      ... This is the second release of the -tiny kernel tree. ... - "make checkstack" to find largest stack users ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: 2.6.11 breaks modules gratuitously
      ... > functions just because they have no current user in the kernel tree is ... > Greg just underlined. ... send the line "unsubscribe linux-kernel" in ...
      (Linux-Kernel)
    • Re: State of the Union: Wireless
      ... the official kernel tree every few months creates more problems than it solves. ... Out-of-tree drivers fail to take advantage of recent kernel changes and coding practices, which leads to bugs and incompatibilities. ... I'm sure this would make it easier for other driver developers to work with the ieee80211 stack as well, if the current version wasn't maintained entirely out of tree for all intents and purposes.. ... To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ ...
      (Linux-Kernel)