summaryrefslogtreecommitdiffstats
path: root/toolchain/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'toolchain/Makefile')
-rw-r--r--toolchain/Makefile45
1 files changed, 45 insertions, 0 deletions
diff --git a/toolchain/Makefile b/toolchain/Makefile
new file mode 100644
index 000000000..0c06fe9ea
--- /dev/null
+++ b/toolchain/Makefile
@@ -0,0 +1,45 @@
+# Main makefile for the toolchain
+include $(TOPDIR)/rules.mk
+TARGETS:=sed utils binutils gcc uClibc ipkg-utils
+
+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-install: uClibc-install
+
+$(STAMP_DIR):
+ mkdir -p $(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: $(STAMP_DIR) $(STAGING_DIR) $(TOOL_BUILD_DIR)
+ @[ -f $(STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-prepare,%,$@) prepare
+ @touch $(STAMP_DIR)/.toolchain_$@
+
+%-compile: %-prepare
+ @[ -f $(STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-compile,%,$@) compile
+ @touch $(STAMP_DIR)/.toolchain_$@
+
+%-install: %-compile
+ @[ -f $(STAMP_DIR)/.toolchain_$@ ] || $(MAKE) -C $(patsubst %-install,%,$@) install
+ @touch $(STAMP_DIR)/.toolchain_$@
+
+%-clean:
+ @$(MAKE) -C $(patsubst %-clean,%,$@) clean
+ @rm -f $(STAMP_DIR)/.toolchain_$(patsubst %-clean,%,$@)-*
+