lkml.org 
[lkml]   [2004]   [Apr]   [1]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateThu, 1 Apr 2004 11:35:56 +0200 (MEST)
FromGeert Uytterhoeven <>
SubjectRe: [PATCH] out-of-tree builds
On Mon, 22 Mar 2004, Geert Uytterhoeven wrote:
> On Mon, 15 Mar 2004, Geert Uytterhoeven wrote:
> > On Sun, 14 Mar 2004, Geert Uytterhoeven wrote:
> > > Although I like the feature to build a kernel in a different directory a lot, I
> > > don't like its syntax. I prefer to just have a build directory where I can run
> > > `make whatever'.
> > >
> > > The following patch adds a configure script to the kernel. If you run
> > >
> > >     /path/to/kernel/source/tree/configure
> > >
> > > it will create a Makefile in the current directory, after which you can just do
> > > `make whatever', just like in the source directory.
> >
> > Unfortunately not everything works.
> >
> > E.g. I need to build usr/ with a different (newer) binutils, so when the build
> > fails on assembling usr/initramfs_data.o, I used to do the following, which no
> > longer works:
> >
> > | tux$ PATH=/usr/bin/:$PATH make usr/
> > | make: `usr/' is up to date.
> > | tux$
> >
> > I guess I need a catch-all .PHONY rule, but don't know how to implement it...
>
> `info make' never hurts...
>
> --- linux-2.6.x/Makefile.in.orig	2004-02-08 10:50:36.000000000 +0100
> +++ linux-2.6.x/Makefile.in	2004-03-22 23:02:29.000000000 +0100
> @@ -0,0 +1,12 @@
> +
> +srcdir = @srcdir@
> +
> +dstdir = $(shell pwd)
> +
> +all:
> +	@$(MAKE) -C $(srcdir) O=$(dstdir)
> +
> +%:	force
> +	@$(MAKE) -C $(srcdir) O=$(dstdir) $@
> +
> +force:	;
> --- linux-2.6.x/configure.orig	2004-02-08 10:50:36.000000000 +0100
> +++ linux-2.6.x/configure	2004-03-15 10:27:00.000000000 +0100
> @@ -0,0 +1,17 @@
> +#!/bin/sh
> +
> +srcdir=$(dirname $0)
> +dstdir=$(pwd)
> +
> +if [ $srcdir = . -o $srcdir = $dstdir ]; then
> +    echo Building in Linux kernel source tree, nothing changed
> +else
> +    if [ -e Makefile ]; then
> +	/bin/mv Makefile Makefile.bak
> +    fi
> +    echo '# Generated automatically from Makefile.in by configure.' > Makefile
> +    /bin/sed -e s+@srcdir@+$srcdir+ < $srcdir/Makefile.in >> Makefile
> +    echo Linux kernel source tree in directory $srcdir
> +    echo Building in directory $dstdir
> +fi
> +

Still not perfect, though. `make target' doesn't work for *.o files, but it
does work for directories, e.g.:

| tux$ rm usr/initramfs_data.o
| tux$ PATH=/usr/bin:$PATH make usr/initramfs_data.o
| make[1]: Entering directory `/home/geert/linux/testing/linux-m68k-2.6.5-rc3'
| make[2]: Nothing to be done for `Makefile'.
| make[1]: Nothing to be done for `Makefile'.
| make[1]: Leaving directory `/home/geert/linux/testing/linux-m68k-2.6.5-rc3'
| make: *** No rule to make target `usr/initramfs_data.o'.  Stop.
| tux$ PATH=/usr/bin:$PATH make usr/
| make[1]: Entering directory `/home/geert/linux/testing/linux-m68k-2.6.5-rc3'
| make[2]: Nothing to be done for `Makefile'.
| make[1]: Nothing to be done for `Makefile'.
| make[1]: Leaving directory `/home/geert/linux/testing/linux-m68k-2.6.5-rc3'
| make[1]: Entering directory `/home/geert/linux/testing/linux-m68k-2.6.5-rc3'
| make[3]: `arch/m68k/kernel/asm-offsets.s' is up to date.
|   AS      usr/initramfs_data.o
|   LD      usr/built-in.o
| make[1]: Leaving directory `/home/geert/linux/testing/linux-m68k-2.6.5-rc3'
| tux$

Gr{oetje,eeting}s,
						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:02    [W:0.271 / U:0.090 seconds]
©2003-2008 Jasper Spaans