From 7daa076d3e24e84ce1f4e9b6133783816575c4c8 Mon Sep 17 00:00:00 2001
From: Eric Andersen
Date: Fri, 8 Oct 2004 07:46:08 +0000
Subject: egor duda writes:

Hi!

I've created a patch to busybox' build system to allow building it in
separate tree in a manner similar to kbuild from kernel version 2.6.

That is, one runs command like
'make O=/build/some/where/for/specific/target/and/options'
and everything is built in this exact directory, provided that it exists.

I understand that applyingc such invasive changes during 'release
candidates' stage of development is at best unwise. So, i'm currently
asking for comments about this patch, starting from whether such thing
is needed at all to whether it coded properly.

'make check' should work now, and one make creates Makefile in build
directory, so one can run 'make' in build directory after that.

One possible caveat is that if we build in some directory other than
source one, the source directory should be 'distclean'ed first.

egor
---
 util-linux/Makefile    | 10 ++++++----
 util-linux/Makefile.in |  8 ++++++--
 2 files changed, 12 insertions(+), 6 deletions(-)

(limited to 'util-linux')

diff --git a/util-linux/Makefile b/util-linux/Makefile
index f2e2021..4401fd1 100644
--- a/util-linux/Makefile
+++ b/util-linux/Makefile
@@ -17,13 +17,15 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 #
 
-TOPDIR:= ../
+top_srcdir=..
+top_buildddir=..
+srcdir=$(top_srcdir)/util-linux
 UTILLINUX_DIR:=./
-include $(TOPDIR).config
-include $(TOPDIR)Rules.mak
+include $(top_builddir)/Rules.mak
+include $(top_builddir)/.config
 include Makefile.in
 all: $(libraries-y)
--include $(TOPDIR).depend
+-include $(top_builddir)/.depend
 
 clean:
 	rm -f *.o *.a $(AR_TARGET)
diff --git a/util-linux/Makefile.in b/util-linux/Makefile.in
index 72136f1..0172b35 100644
--- a/util-linux/Makefile.in
+++ b/util-linux/Makefile.in
@@ -19,8 +19,9 @@
 
 UTILLINUX_AR:=util-linux.a
 ifndef $(UTILLINUX_DIR)
-UTILLINUX_DIR:=$(TOPDIR)util-linux/
+UTILLINUX_DIR:=$(top_builddir)/util-linux/
 endif
+srcdir=$(top_srcdir)/util-linux
 
 UTILLINUX-:=
 UTILLINUX-$(CONFIG_DMESG)		+=dmesg.o
@@ -49,10 +50,13 @@ libraries-y+=$(UTILLINUX_DIR)$(UTILLINUX_AR)
 $(UTILLINUX_DIR)$(UTILLINUX_AR): $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y))
 	$(AR) -ro $@ $(patsubst %,$(UTILLINUX_DIR)%, $(UTILLINUX-y))
 
+$(UTILLINUX_DIR)%.o: $(srcdir)/%.c
+	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
+
 ifneq ($(strip $(CONFIG_LFS)),y)
 ifeq ($(strip $(FDISK_SUPPORT_LARGE_DISKS)),y)
 
-$(UTILLINUX_DIR)fdisk.o: $(UTILLINUX_DIR)fdisk.c
+$(UTILLINUX_DIR)fdisk.o: $(srcdir)/fdisk.c
 	$(CC) $(CFLAGS) \
 		-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 \
 		$(EXTRA_CFLAGS) -c -o $@ $<
-- 
cgit v1.1