commit 7eff0866be9174919bf3e4c5dc630511d6984278
Author: p4u <hakais@gmail.com>
Date:   Sun Oct 9 15:50:55 2011 +0200

    New file targets.mk used to define target specific options. Implemented kernel_menuconfig copy config. Implemented post_build function

diff --git a/Makefile b/Makefile
index f5279f0..5cc87b3 100644
--- a/Makefile
+++ b/Makefile
@@ -24,12 +24,15 @@ EIGENNET_GIT = git://gitorious.org/eigennet/packages.git
 BUILD_DIR = build
 CONFIG_DIR = configs
 MY_CONFIGS = $(BUILD_DIR)/configs
-HW_AVAILABLE = alix rs rspro x86 fonera nsm5 nsm2
+IMAGES = images
 SHELL = bash
 J ?= 1
 V ?= 99
 T =
 MAKE_SRC = make -j$(J) V=$(V)
+TIMESTAMP = $(shell date +%d%m%y_%H%M)
+
+include targets.mk
 
 .PHONY: checkout update clean config menuconfig kernel_menuconfig list_targets build
 
@@ -56,21 +59,32 @@ endef
 
 define menuconfig_owrt
 	cd $(BUILD_DIR)/$1 && make menuconfig
-	[ ! -d $(MY_CONFIGS)/$1 ] && mkdir -p $(MY_CONFIGS)/$1
+	[ ! -d $(MY_CONFIGS)/$1 ] && mkdir -p $(MY_CONFIGS)/$1 || true
 	cp -f $(BUILD_DIR)/$1/.config $(MY_CONFIGS)/$1/config
 endef
 
 define kmenuconfig_owrt
 	cd $(BUILD_DIR)/$1 && make kernel_menuconfig
+	[ ! -d $(MY_CONFIGS)/$1 ] && mkdir -p $(MY_CONFIGS)/$1 || true
+	cp -f $(BUILD_DIR)/$1/target/linux/$(ARCH)/config-* $(MY_CONFIGS)/$1/kernel_config
+endef
+
+define post_build
+	[ ! -d $(IMAGES) ] && mkdir $(IMAGES) || true
+	cp -f $(BUILD_DIR)/$1/$(IMAGE) $(IMAGES)/$(NAME)-factory-$(TIMESTAMP).bin
+	cp -f $(BUILD_DIR)/$1/$(SYSUPGRADE) $(IMAGES)/$(NAME)-upgrade-$(TIMESTAMP).bin
+	@echo 
+	@echo "qMp firmware compiled, you can find output files in $(IMAGES) directory"
 endef
 
 define clean_all
-	[ -d "$(BUILD_DIR)" ] && rm -rf $(BUILD_DIR)/*
+	[ -d "$(BUILD_DIR)" ] && rm -rf $(BUILD_DIR)/* || true
 	rm -f .checkout_* 2>/dev/null || true
+	[ -d "$(BUILD_DIR)" ] && rm -f $(IMAGES)/* || true
 endef
 
 define clean_target
-	[ -d "$(BUILD_DIR)/$1" ] && rm -rf $(BUILD_DIR)/$1
+	[ -d "$(BUILD_DIR)/$1" ] && rm -rf $(BUILD_DIR)/$1 || true
 	rm -f .checkout_$1 2>/dev/null || true
 endef
 
@@ -83,17 +97,17 @@ endef
 .checkout_qmp:
 	git clone $(QMP_GIT) $(BUILD_DIR)/qmp
 	cd $(BUILD_DIR)/qmp; git checkout --track origin/$(QMP_GIT_BRANCH); cd ..
-	touch $@
+	@touch $@
 
 .checkout_eig:
 	git clone $(EIGENNET_GIT) $(BUILD_DIR)/eigennet/packages
-	touch $@
+	@touch $@
 
 checkout: .checkout_qmp .checkout_eig 
 	$(if $(T),,$(call target_error))
 	$(if $(wildcard .checkout_$(T)),,$(call checkout_src))
 	$(if $(wildcard .checkout_$(T)),,$(call update_feeds,$(T)))
-	touch .checkout_$(T)
+	@touch .checkout_$(T)
 	
 update: .checkout_eig .checkout_qmp
 	cd $(BUILD_DIR)/qmp && git pull
@@ -111,7 +125,8 @@ clean:
 	$(if $(T),$(call clean_target,$(T)),$(call clean_all))
 
 list_targets:
-	@echo $(HW_AVAILABLE)
+	$(info $(HW_AVAILABLE))
+	@exit 0
 
 config:
 	select HW in alix rs rspro x86 fonera nsm5 nsm2; do break; done; echo $HW > .config.tmp;
@@ -119,5 +134,5 @@ config:
 
 build: checkout
 	$(if $(T),$(call build_src,$(BUILD_DIR),$(T)))
-
+	$(call post_build,$(T))
 
diff --git a/README b/README
index 06ba55f..98798ec 100644
--- a/README
+++ b/README
@@ -25,7 +25,8 @@ There are several directories. This is the functionallity for each of them:
     dl: download folder for OpenWRT packages
 
     configs: config files for each kind of hardware. These are the default ones provided by qmpfw
-
+    
+    images: output directory for images compiled by qmpfw
 
 ** Command options
 
@@ -60,7 +61,6 @@ To run kernel menuconfig (from openwrt):
 
     make T=rspro kernel_menuconfig
 
-TODO: copy kernel config file in build/configs directory
 To clean specific target:
 
     make T=rspro clean
@@ -72,7 +72,6 @@ To clean all targets:
 To configure some general parameters from qMp you can run:
 
     make config
-
 TODO: This feature is missing
 
 
