Index: Makefile
===================================================================
--- Makefile	(revision 9371c301116efcd366e21f4bc55ae2528b3fbbec)
+++ Makefile	(revision 54257ba8d869f32e91e441efd77b5069cfb725c5)
@@ -40,5 +40,5 @@
 #
 
-include Makefile.config
+-include Makefile.config
 
 ## Common compiler flags
@@ -57,6 +57,6 @@
 #
 
-include arch/$(ARCH)/Makefile.inc
-include genarch/Makefile.inc
+-include arch/$(ARCH)/Makefile.inc
+-include genarch/Makefile.inc
 
 ifeq ($(CONFIG_DEBUG),y)
@@ -139,20 +139,33 @@
 GENARCH_OBJECTS := $(addsuffix .o,$(basename $(GENARCH_SOURCES)))
 
-.PHONY: all clean config depend boot
-
-all: kernel.bin boot disasm
+.PHONY: all clean config links depend boot
+
+all:
+	tools/config.py default
+	$(MAKE) -C . real_all
+
+real_all: kernel.bin boot disasm
+
+config:
+	tools/config.py
 
 -include Makefile.depend
+
+distclean: clean
+	-rm Makefile.config
 
 clean:
 	-rm -f kernel.bin kernel.raw kernel.map kernel.map.pre kernel.objdump kernel.disasm generic/src/debug/real_map.bin Makefile.depend generic/include/arch generic/include/genarch arch/$(ARCH)/_link.ld
-	find generic/src/ arch/$(ARCH)/src/ genarch/src/ test/ -name '*.o' -follow -exec rm \{\} \;
-	$(MAKE) -C arch/$(ARCH)/boot clean
-
-config:
+	find generic/src/ arch/*/src/ genarch/src/ test/ -name '*.o' -follow -exec rm \{\} \;
+	for arch in arch/*; do \
+	    [ -e $$arch/_link.ld ] && rm $$arch/_link.ld 2>/dev/null;\
+	    $(MAKE) -C $$arch/boot clean; \
+	done;exit 0
+
+archlinks:
 	ln -sfn ../../arch/$(ARCH)/include/ generic/include/arch
 	ln -sfn ../../genarch/include/ generic/include/genarch
 
-depend: config
+depend: archlinks
 	$(CC) $(DEFS) $(CFLAGS) -M $(ARCH_SOURCES) $(GENARCH_SOURCES) $(GENERIC_SOURCES) > Makefile.depend
 
