-include $(TOPDIR)/rules.mk
-TARGETS-y:=sed sstrip ipkg-utils ext2fs squashfs mtd-utils lzma mkimage firmware-utils
-TARGETS-$(CONFIG_CCACHE) += ccache
-
-TARGETS_DOWNLOAD:=$(patsubst %,%-download,$(TARGETS-y))
-TARGETS_PREPARE:=$(patsubst %,%-prepare,$(TARGETS-y))
-TARGETS_COMPILE:=$(patsubst %,%-compile,$(TARGETS-y))
-TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS-y))
-TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS-y))
-STAMP:=$(STAGING_DIR)/stampfiles/.tools_installed
-
-all: install
-download: $(TARGETS_DOWNLOAD)
-compile: $(TARGETS_COMPILE)
-install: $(STAMP)
-clean: $(TARGETS_CLEAN)
-
-squashfs-compile: lzma-install
-
-ifneq ($(shell $(SCRIPT_DIR)/timestamp.pl -p . $(STAMP)),$(STAMP))
- $(STAMP): $(TARGETS_INSTALL)
-endif
-
-$(STAMP): $(TOPDIR)/.config
- mkdir -p $(shell dirname $@)
+curdir:=tools
+
+# subdirectories to descend into
+tools-y := sed sstrip ipkg-utils genext2fs squashfs mtd-utils lzma mkimage firmware-utils patch-cmdline pkg-config m4 autoconf automake bison quilt yaffs2
+
+tools-$(CONFIG_CCACHE) += ccache
+tools-$(CONFIG_powerpc) += dtc
+tools-$(CONFIG_GCC_VERSION_4_3) += gmp mpfr
+
+# builddir dependencies
+$(curdir)/squashfs/compile := $(curdir)/lzma/install
+$(curdir)/quilt/compile := $(curdir)/sed/install
+$(curdir)/dtc/compile := $(curdir)/bison/install
+$(curdir)/autoconf/compile := $(curdir)/m4/install
+$(curdir)/automake/compile := $(curdir)/m4/install
+
+$(curdir)/builddirs := $(tools-y) $(tools-dep) $(tools-)
+$(curdir)/builddirs-default := $(tools-y)
+
+# preparatory work
+$(STAGING_DIR)/.prepared: $(TMP_DIR)/.build
+ @for dir in $(STAGING_DIR) $(STAGING_DIR_HOST); do ( \
+ set -x; \
+ mkdir -p "$$dir"; \
+ cd "$$dir"; \
+ mkdir -p bin lib include stamp; \
+ ); done
+ mkdir -p $(BUILD_DIR_HOST)/stamp $(BUILD_DIR)/stamp
+ $(INSTALL_DATA) $(TOPDIR)/tools/include/*.h $(STAGING_DIR_HOST)/include/