tag rc6
[openwrt/svn-archive/openwrt.git] / toolchain / Makefile
diff --git a/toolchain/Makefile b/toolchain/Makefile
new file mode 100644 (file)
index 0000000..2b1358b
--- /dev/null
@@ -0,0 +1,47 @@
+# Main makefile for the toolchain
+include $(TOPDIR)/rules.mk
+TARGETS:=sed utils binutils gcc uClibc ipkg-utils gdb
+
+TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS))
+TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS))
+
+all: install
+install: $(TARGETS_INSTALL)
+clean: $(TARGETS_CLEAN)
+
+uClibc-prepare: kernel-headers-prepare sed-install utils-install
+binutils-prepare: uClibc-prepare
+gcc-prepare: binutils-install
+uClibc-compile: gcc-prepare
+gcc-compile: uClibc-install
+
+TOOLCHAIN_STAMP_DIR:=$(STAGING_DIR)/stampfiles
+
+$(TOOLCHAIN_STAMP_DIR):
+       mkdir -p $(TOOLCHAIN_STAMP_DIR)
+
+$(STAGING_DIR):
+       @mkdir -p $(STAGING_DIR)/lib
+       @mkdir -p $(STAGING_DIR)/include
+       @mkdir -p $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)
+       @ln -sf ../lib $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib
+
+$(TOOL_BUILD_DIR):
+       @mkdir -p $(TOOL_BUILD_DIR)
+
+%-prepare: $(TOOLCHAIN_STAMP_DIR) $(STAGING_DIR) $(TOOL_BUILD_DIR)
+       @[ -f $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-prepare,%,$@) prepare
+       @touch $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@
+
+%-compile: %-prepare 
+       @[ -f $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-compile,%,$@) compile
+       @touch $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@
+
+%-install: %-compile
+       @[ -f $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-install,%,$@) install
+       @touch $(TOOLCHAIN_STAMP_DIR)/.toolchain_$@
+
+%-clean:
+       @$(MAKE) -C $(patsubst %-clean,%,$@) clean
+       @rm -f $(TOOLCHAIN_STAMP_DIR)/.toolchain_$(patsubst %-clean,%,$@)-*
+