Index: Makefile
===================================================================
--- Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,10 +32,9 @@
 CSCOPE = cscope
 CONFIG = tools/config.py
-SANITY = tools/sanity.py
+AUTOTOOL = tools/autotool.py
 
-.PHONY: all config config_default distclean clean cscope precheck
+.PHONY: all precheck cscope autotool config_default config distclean clean
 
-all: Makefile.config config.h config.defs
-	$(SANITY)
+all: Makefile.common Makefile.config config.h config.defs
 	$(MAKE) -C kernel PRECHECK=$(PRECHECK)
 	$(MAKE) -C uspace PRECHECK=$(PRECHECK)
@@ -47,4 +46,9 @@
 cscope:
 	find kernel boot uspace -regex '^.*\.[chsS]$$' | xargs $(CSCOPE) -b -k -u -f$(CSCOPE).out
+
+Makefile.common: autotool
+
+autotool: Makefile.config
+	$(AUTOTOOL)
 
 Makefile.config: config_default
@@ -61,5 +65,5 @@
 
 distclean: clean
-	rm -f $(CSCOPE).out Makefile.config config.h config.defs tools/*.pyc tools/checkers/*.pyc
+	rm -f $(CSCOPE).out Makefile.common Makefile.config config.h config.defs tools/*.pyc tools/checkers/*.pyc
 
 clean:
Index: boot/Makefile
===================================================================
--- boot/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -30,4 +30,5 @@
 #
 
+-include ../Makefile.common
 -include ../Makefile.config
 -include ../config.defs
@@ -42,5 +43,5 @@
 .PHONY: all build clean generic_clean
 
-all: ../Makefile.config ../config.h ../config.defs build
+all: ../Makefile.common ../Makefile.config ../config.h ../config.defs build
 
 -include arch/$(BARCH)/Makefile.inc
Index: boot/Makefile.common
===================================================================
--- boot/Makefile.common	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/Makefile.common	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,4 +27,5 @@
 #
 
+-include ../Makefile.common
 -include ../Makefile.config
 
Index: boot/arch/arm32/loader/Makefile
===================================================================
--- boot/arch/arm32/loader/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/arm32/loader/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,5 +32,5 @@
 .PHONY: all clean
 
-all: ../../../../version ../../../../Makefile.config ../../../../config.h ../../../../config.defs
+all: ../../../../version ../../../../Makefile.common ../../../../Makefile.config ../../../../config.h ../../../../config.defs
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
 	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
Index: boot/arch/arm32/loader/Makefile.build
===================================================================
--- boot/arch/arm32/loader/Makefile.build	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/arm32/loader/Makefile.build	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 
 include ../../../../version
+include ../../../../Makefile.common
 include ../../../../Makefile.config
 include ../../../../config.defs
Index: boot/arch/arm32/loader/Makefile.toolchain
===================================================================
--- boot/arch/arm32/loader/Makefile.toolchain	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/arm32/loader/Makefile.toolchain	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,33 +27,8 @@
 #
 
-## Toolchain configuration
-#
-
-ifndef CROSS_PREFIX
-	CROSS_PREFIX = /usr/local
-endif
-
 BFD_NAME = elf32-littlearm
 BFD_ARCH = arm
-TARGET = arm-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/arm32/bin
 
 JOBFILE = ../../../../tools/jobfile.py
-
-ifeq ($(COMPILER),gcc_native)
-	CC = gcc
-	AS = as
-	LD = ld
-	OBJCOPY = objcopy
-	OBJDUMP = objdump
-endif
-
-ifeq ($(COMPILER),gcc_cross)
-	CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc
-	AS = $(TOOLCHAIN_DIR)/$(TARGET)-as
-	LD = $(TOOLCHAIN_DIR)/$(TARGET)-ld
-	OBJCOPY = $(TOOLCHAIN_DIR)/$(TARGET)-objcopy
-	OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump
-endif
 
 CFLAGS = \
Index: boot/arch/ia64/loader/Makefile
===================================================================
--- boot/arch/ia64/loader/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/ia64/loader/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -29,9 +29,10 @@
 
 include Makefile.common
+include ../../../../Makefile.common
 include ../../../../Makefile.config
 
 .PHONY: all clean
 
-all: ../../../../version ../../../../Makefile.config ../../../../config.h ../../../../config.defs
+all: ../../../../version ../../../../Makefile.common ../../../../Makefile.config ../../../../config.h ../../../../config.defs
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
 	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
Index: boot/arch/ia64/loader/Makefile.build
===================================================================
--- boot/arch/ia64/loader/Makefile.build	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/ia64/loader/Makefile.build	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 
 include ../../../../version
+include ../../../../Makefile.common
 include ../../../../Makefile.config
 include ../../../../config.defs
@@ -60,5 +61,5 @@
 $(OUTPUT): $(OBJECTS) $(COMPONENT_OBJECTS) $(LINK)
 	$(LD) -no-check-sections -N -T $(LINK) $(COMPONENT_OBJECTS) $(OBJECTS) -o $@
-	$(MAKE) -C gefi/HelenOS PREFIX=$(GEFI_PREFIX)
+	$(MAKE) -C gefi/HelenOS
 	cp gefi/HelenOS/hello.efi ../../../../
 	cp gefi/HelenOS/image.bin ../../../../
Index: boot/arch/ia64/loader/Makefile.common
===================================================================
--- boot/arch/ia64/loader/Makefile.common	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/ia64/loader/Makefile.common	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -31,4 +31,5 @@
 #
 
+include ../../../../Makefile.common
 include ../../../../Makefile.config
 include ../../../Makefile.common
Index: boot/arch/ia64/loader/Makefile.toolchain
===================================================================
--- boot/arch/ia64/loader/Makefile.toolchain	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/ia64/loader/Makefile.toolchain	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,44 +27,8 @@
 #
 
-## Toolchain configuration
-#
-
-ifndef CROSS_PREFIX
-	CROSS_PREFIX = /usr/local
-endif
-
 BFD_NAME = elf64-ia64-little
 BFD_ARCH = ia64
-TARGET = ia64-pc-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/ia64/bin
 
 JOBFILE = ../../../../tools/jobfile.py
-
-ifeq ($(COMPILER),gcc_native)
-	CC = gcc
-	AS = as
-	LD = ld
-	OBJCOPY = objcopy
-	OBJDUMP = objdump
-	GEFI_PREFIX =
-endif
-
-ifeq ($(COMPILER),icc)
-	CC = icc
-	AS = as
-	LD = ld
-	OBJCOPY = objcopy
-	OBJDUMP = objdump
-	GEFI_PREFIX =
-endif
-
-ifeq ($(COMPILER),gcc_cross)
-	CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc
-	AS = $(TOOLCHAIN_DIR)/$(TARGET)-as
-	LD = $(TOOLCHAIN_DIR)/$(TARGET)-ld
-	OBJCOPY = $(TOOLCHAIN_DIR)/$(TARGET)-objcopy
-	OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump
-	GEFI_PREFIX = $(TOOLCHAIN_DIR)/$(TARGET)-
-endif
 
 CFLAGS = \
Index: boot/arch/ia64/loader/gefi/HelenOS/Makefile
===================================================================
--- boot/arch/ia64/loader/gefi/HelenOS/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/ia64/loader/gefi/HelenOS/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -22,5 +22,4 @@
 #
 
-prefix=$(PREFIX)
 include ../Make.defaults
 CDIR=$(TOPDIR)/..
@@ -69,3 +68,3 @@
 
 gefi:
-	$(MAKE) -C .. prefix=$(PREFIX)
+	$(MAKE) -C ..
Index: boot/arch/ia64/loader/gefi/Make.defaults
===================================================================
--- boot/arch/ia64/loader/gefi/Make.defaults	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/ia64/loader/gefi/Make.defaults	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -26,4 +26,7 @@
 # lib and include under the root
 #
+
+include ../../../../../Makefile.common
+
 INSTALLROOT=/usr/local
 
@@ -31,15 +34,7 @@
 
 ARCH       = ia64
-INCDIR     = -I. -I$(CDIR)/inc -I$(CDIR)/inc/$(ARCH) -I$(CDIR)/inc/protocol 
+INCDIR     = -I. -I$(CDIR)/inc -I$(CDIR)/inc/$(ARCH) -I$(CDIR)/inc/protocol
 CPPFLAGS   = -DCONFIG_$(ARCH)
 CFLAGS     = -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants -frename-registers -mfixed-range=f32-f127
 LDFLAGS    = -nostdlib
 INSTALL    = install
-
-CC         = $(prefix)gcc
-AS         = $(prefix)as
-LD         = $(prefix)ld
-AR         = $(prefix)ar
-RANLIB     = $(prefix)ranlib
-OBJCOPY    = $(prefix)objcopy
-OBJDUMP    = $(prefix)objdump
Index: boot/arch/mips32/loader/Makefile
===================================================================
--- boot/arch/mips32/loader/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/mips32/loader/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,5 +32,5 @@
 .PHONY: all clean
 
-all: ../../../../version ../../../../Makefile.config ../../../../config.h ../../../../config.defs
+all: ../../../../version ../../../../Makefile.common ../../../../Makefile.config ../../../../config.h ../../../../config.defs
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
 	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
Index: boot/arch/mips32/loader/Makefile.build
===================================================================
--- boot/arch/mips32/loader/Makefile.build	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/mips32/loader/Makefile.build	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 
 include ../../../../version
+include ../../../../Makefile.common
 include ../../../../Makefile.config
 include ../../../../config.defs
Index: boot/arch/mips32/loader/Makefile.toolchain
===================================================================
--- boot/arch/mips32/loader/Makefile.toolchain	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/mips32/loader/Makefile.toolchain	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,14 +27,5 @@
 #
 
-## Toolchain configuration
-#
-
-ifndef CROSS_PREFIX
-	CROSS_PREFIX = /usr/local
-endif
-
 BFD_ARCH = mips
-TARGET = mipsel-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/mips32/bin
 
 JOBFILE = ../../../../tools/jobfile.py
@@ -48,6 +39,4 @@
 	BFD_NAME = elf32-tradbigmips
 	BFD = ecoff-bigmips
-	TOOLCHAIN_DIR = $(CROSS_PREFIX)/mips32eb/bin
-	TARGET = mips-linux-gnu
 endif
 
@@ -55,20 +44,4 @@
 	BFD_NAME = elf32-tradlittlemips
 	BFD = binary
-endif
-
-ifeq ($(COMPILER),gcc_native)
-	CC = gcc
-	AS = as
-	LD = ld
-	OBJCOPY = objcopy
-	OBJDUMP = objdump
-endif
-
-ifeq ($(COMPILER),gcc_cross)
-	CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc
-	AS = $(TOOLCHAIN_DIR)/$(TARGET)-as
-	LD = $(TOOLCHAIN_DIR)/$(TARGET)-ld
-	OBJCOPY = $(TOOLCHAIN_DIR)/$(TARGET)-objcopy
-	OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump
 endif
 
Index: boot/arch/ppc32/loader/Makefile
===================================================================
--- boot/arch/ppc32/loader/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/ppc32/loader/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,5 +32,5 @@
 .PHONY: all clean
 
-all: ../../../../version ../../../../Makefile.config ../../../../config.h ../../../../config.defs
+all: ../../../../version ../../../../Makefile.common ../../../../Makefile.config ../../../../config.h ../../../../config.defs
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
 	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
Index: boot/arch/ppc32/loader/Makefile.build
===================================================================
--- boot/arch/ppc32/loader/Makefile.build	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/ppc32/loader/Makefile.build	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 
 include ../../../../version
+include ../../../../Makefile.common
 include ../../../../Makefile.config
 include ../../../../config.defs
Index: boot/arch/ppc32/loader/Makefile.toolchain
===================================================================
--- boot/arch/ppc32/loader/Makefile.toolchain	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/ppc32/loader/Makefile.toolchain	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,33 +27,8 @@
 #
 
-## Toolchain configuration
-#
-
-ifndef CROSS_PREFIX
-	CROSS_PREFIX = /usr/local
-endif
-
 BFD_NAME = elf32-powerpc
 BFD_ARCH = powerpc:common
-TARGET = ppc-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/ppc32/bin
 
 JOBFILE = ../../../../tools/jobfile.py
-
-ifeq ($(COMPILER),gcc_native)
-	CC = gcc
-	AS = as
-	LD = ld
-	OBJCOPY = objcopy
-	OBJDUMP = objdump
-endif
-
-ifeq ($(COMPILER),gcc_cross)
-	CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc
-	AS = $(TOOLCHAIN_DIR)/$(TARGET)-as
-	LD = $(TOOLCHAIN_DIR)/$(TARGET)-ld
-	OBJCOPY = $(TOOLCHAIN_DIR)/$(TARGET)-objcopy
-	OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump
-endif
 
 CFLAGS = \
Index: boot/arch/sparc64/loader/Makefile
===================================================================
--- boot/arch/sparc64/loader/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/sparc64/loader/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,5 +32,5 @@
 .PHONY: all clean
 
-all: ../../../../version ../../../../Makefile.config ../../../../config.h ../../../../config.defs
+all: ../../../../version ../../../../Makefile.common ../../../../Makefile.config ../../../../config.h ../../../../config.defs
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
 	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
Index: boot/arch/sparc64/loader/Makefile.build
===================================================================
--- boot/arch/sparc64/loader/Makefile.build	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/sparc64/loader/Makefile.build	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 
 include ../../../../version
+include ../../../../Makefile.common
 include ../../../../Makefile.config
 include ../../../../config.defs
Index: boot/arch/sparc64/loader/Makefile.toolchain
===================================================================
--- boot/arch/sparc64/loader/Makefile.toolchain	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ boot/arch/sparc64/loader/Makefile.toolchain	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,33 +27,8 @@
 #
 
-## Toolchain configuration
-#
-
-ifndef CROSS_PREFIX
-	CROSS_PREFIX = /usr/local
-endif
-
 BFD_NAME = elf64-sparc
 BFD_ARCH = sparc
-TARGET = sparc64-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/sparc64/bin
 
 JOBFILE = ../../../../tools/jobfile.py
-
-ifeq ($(COMPILER),gcc_native)
-	CC = gcc
-	AS = as
-	LD = ld
-	OBJCOPY = objcopy
-	OBJDUMP = objdump
-endif
-
-ifeq ($(COMPILER),gcc_cross)
-	CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc
-	AS = $(TOOLCHAIN_DIR)/$(TARGET)-as
-	LD = $(TOOLCHAIN_DIR)/$(TARGET)-ld
-	OBJCOPY = $(TOOLCHAIN_DIR)/$(TARGET)-objcopy
-	OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump
-endif
 
 CFLAGS = \
Index: kernel/Makefile
===================================================================
--- kernel/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ kernel/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -31,5 +31,5 @@
 .PHONY: all clean
 
-all: ../version ../Makefile.config ../config.h ../config.defs
+all: ../version ../Makefile.common ../Makefile.config ../config.h ../config.defs
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
 	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
Index: kernel/Makefile.build
===================================================================
--- kernel/Makefile.build	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ kernel/Makefile.build	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -33,4 +33,5 @@
 include Makefile.common
 include ../version
+include ../Makefile.common
 include ../Makefile.config
 include ../config.defs
@@ -42,8 +43,4 @@
 INCLUDES = generic/include
 OPTIMIZATION = 3
-
-ifndef CROSS_PREFIX
-	CROSS_PREFIX = /usr/local
-endif
 
 ## Common compiler flags
@@ -89,32 +86,16 @@
 # Makefile.inc.
 #
+
 ATSIGN ?= @
 
 ## Cross-platform assembly to start a symtab.data section
 #
+
 SYMTAB_SECTION = ".section symtab.data, \"a\", $(ATSIGN)progbits;"
 
-## Simple detection for the type of the host system
-#
-HOST = $(shell uname)
-
-## On Solaris, some utilities have slightly different names
-#
-ifeq ($(HOST),SunOS)
-	BINUTILS_PREFIX = "g"
-else
-	BINUTILS_PREFIX = ""
-endif
-
-## Toolchain configuration
+## Compilation options
 #
 
 ifeq ($(COMPILER),gcc_native)
-	CC = gcc
-	GCC = gcc
-	AS = $(BINUTILS_PREFIX)as
-	LD = $(BINUTILS_PREFIX)ld
-	OBJCOPY = $(BINUTILS_PREFIX)objcopy
-	OBJDUMP = $(BINUTILS_PREFIX)objdump
 	CFLAGS = $(GCC_CFLAGS)
 	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
@@ -122,10 +103,4 @@
 
 ifeq ($(COMPILER),gcc_cross)
-	CC = $(TOOLCHAIN_DIR)/bin/$(TARGET)-gcc
-	GCC = $(CC)
-	AS = $(TOOLCHAIN_DIR)/bin/$(TARGET)-as
-	LD = $(TOOLCHAIN_DIR)/bin/$(TARGET)-ld
-	OBJCOPY = $(TOOLCHAIN_DIR)/bin/$(TARGET)-objcopy
-	OBJDUMP = $(TOOLCHAIN_DIR)/bin/$(TARGET)-objdump
 	CFLAGS = $(GCC_CFLAGS)
 	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
@@ -133,10 +108,4 @@
 
 ifeq ($(COMPILER),icc)
-	CC = icc
-	GCC = gcc
-	AS = as
-	LD = ld
-	OBJCOPY = objcopy
-	OBJDUMP = objdump
 	CFLAGS = $(ICC_CFLAGS)
 	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
@@ -144,10 +113,4 @@
 
 ifeq ($(COMPILER),suncc)
-	CC = suncc
-	GCC = gcc
-	AS = $(BINUTILS_PREFIX)as
-	LD = $(BINUTILS_PREFIX)ld
-	OBJCOPY = $(BINUTILS_PREFIX)objcopy
-	OBJDUMP = $(BINUTILS_PREFIX)objdump
 	CFLAGS = $(SUNCC_CFLAGS)
 	DEFS += $(CONFIG_DEFS)
@@ -156,10 +119,4 @@
 
 ifeq ($(COMPILER),clang)
-	CC = clang
-	GCC = gcc
-	AS = $(BINUTILS_PREFIX)as
-	LD = $(BINUTILS_PREFIX)ld
-	OBJCOPY = $(BINUTILS_PREFIX)objcopy
-	OBJDUMP = $(BINUTILS_PREFIX)objdump
 	CFLAGS = $(CLANG_CFLAGS)
 	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
Index: kernel/arch/abs32le/Makefile.inc
===================================================================
--- kernel/arch/abs32le/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ kernel/arch/abs32le/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,23 +27,12 @@
 #
 
-## Toolchain configuration
-#
-
 BFD = binary
 
 ifeq ($(COMPILER),gcc_cross)
-	TOOLCHAIN_DIR = $(CROSS_PREFIX)/$(CROSS_TARGET)
-	
 	ifeq ($(CROSS_TARGET),arm32)
-		TARGET = arm-linux-gnu
 		ATSIGN = %
 	endif
 	
-	ifeq ($(CROSS_TARGET),ia32)
-		TARGET = i686-pc-linux-gnu
-	endif
-	
 	ifeq ($(CROSS_TARGET),mips32)
-		TARGET = mipsel-linux-gnu
 		GCC_CFLAGS += -mno-abicalls
 	endif
Index: kernel/arch/amd64/Makefile.inc
===================================================================
--- kernel/arch/amd64/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ kernel/arch/amd64/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,13 +27,8 @@
 #
 
-## Toolchain configuration
-#
-
 BFD_NAME = elf64-x86-64
 BFD_ARCH = i386:x86-64
 BFD = binary
-TARGET = amd64-linux-gnu
 CLANG_ARCH = x86_64
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/amd64
 
 FPU_NO_CFLAGS = -mno-sse -mno-sse2
Index: kernel/arch/arm32/Makefile.inc
===================================================================
--- kernel/arch/arm32/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ kernel/arch/arm32/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,12 +27,7 @@
 #
 
-## Toolchain configuration
-#
-
 BFD_NAME = elf32-littlearm
 BFD_ARCH = arm
 BFD = binary
-TARGET = arm-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/arm32
 
 ATSIGN = %
Index: kernel/arch/ia32/Makefile.inc
===================================================================
--- kernel/arch/ia32/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ kernel/arch/ia32/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,13 +27,8 @@
 #
 
-## Toolchain configuration
-#
-
 BFD_NAME = elf32-i386
 BFD_ARCH = i386
 BFD = binary
-TARGET = i686-pc-linux-gnu
 CLANG_ARCH = i386
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/ia32
 
 BITS = 32
Index: kernel/arch/ia64/Makefile.inc
===================================================================
--- kernel/arch/ia64/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ kernel/arch/ia64/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,11 +27,6 @@
 #
 
-## Toolchain configuration
-#
-
 BFD_NAME = elf64-little
 BFD_ARCH = ia64-elf64
-TARGET = ia64-pc-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/ia64
 
 CMN1 = -mconstant-gp -fno-unwind-tables -mfixed-range=f32-f127
Index: kernel/arch/mips32/Makefile.inc
===================================================================
--- kernel/arch/mips32/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ kernel/arch/mips32/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,12 +27,6 @@
 #
 
-## Toolchain configuration
-#
-
 BFD_ARCH = mips
 BFD = binary
-TARGET = mipsel-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/mips32
-
 GCC_CFLAGS += -mno-abicalls -G 0 -fno-zero-initialized-in-bss -mips3
 
@@ -48,6 +42,4 @@
 ifeq ($(MACHINE),bgxemul)
 	BFD_NAME = elf32-tradbigmips
-	TOOLCHAIN_DIR = $(CROSS_PREFIX)/mips32eb
-	TARGET = mips-linux-gnu
 	ENDIANESS = BE
 	GCC_CFLAGS += -D__BE__
Index: kernel/arch/ppc32/Makefile.inc
===================================================================
--- kernel/arch/ppc32/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ kernel/arch/ppc32/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,12 +27,7 @@
 #
 
-## Toolchain configuration
-#
-
 BFD_NAME = elf32-powerpc
 BFD_ARCH = powerpc:common
 BFD = binary
-TARGET = ppc-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/ppc32
 
 GCC_CFLAGS += -mcpu=powerpc -msoft-float -m32
Index: kernel/arch/sparc64/Makefile.inc
===================================================================
--- kernel/arch/sparc64/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ kernel/arch/sparc64/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,12 +27,7 @@
 #
 
-## Toolchain configuration
-#
-
 BFD_NAME = elf64-sparc
 BFD_ARCH = sparc
 BFD = binary
-TARGET = sparc64-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/sparc64
 
 GCC_CFLAGS += -m64 -mcpu=ultrasparc 
Index: tools/autotool.py
===================================================================
--- tools/autotool.py	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
+++ tools/autotool.py	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -0,0 +1,264 @@
+#!/usr/bin/env python
+#
+# Copyright (c) 2010 Martin Decky
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# - Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - The name of the author may not be used to endorse or promote products
+#   derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+"""
+Detect important prerequisites and parameters for building HelenOS
+"""
+
+import sys
+import os
+import re
+import time
+import subprocess
+
+MAKEFILE = 'Makefile.config'
+COMMON = 'Makefile.common'
+
+PACKAGE_BINUTILS = "usually part of binutils"
+PACKAGE_GCC = "preferably version 4.4.3 or newer"
+PACKAGE_CROSS = "use tools/toolchain.sh to build the cross-compiler toolchain"
+
+def read_config(fname, config):
+	"Read HelenOS build configuration"
+	
+	inf = file(fname, 'r')
+	
+	for line in inf:
+		res = re.match(r'^(?:#!# )?([^#]\w*)\s*=\s*(.*?)\s*$', line)
+		if (res):
+			config[res.group(1)] = res.group(2)
+	
+	inf.close()
+
+def print_error(msg):
+	"Print a bold error message"
+	
+	sys.stderr.write("\n")
+	sys.stderr.write("######################################################################\n")
+	sys.stderr.write("HelenOS build sanity check error:\n")
+	sys.stderr.write("\n")
+	sys.stderr.write("%s\n" % "\n".join(msg))
+	sys.stderr.write("######################################################################\n")
+	sys.stderr.write("\n")
+	
+	sys.exit(1)
+
+def check_config(config, key):
+	"Check whether the configuration key exists"
+	
+	if (not key in config):
+		print_error(["Build configuration of HelenOS does not contain %s." % key,
+		             "Try running \"make config\" again.",
+		             "If the problem persists, please contact the developers of HelenOS."])
+
+def check_app(args, name, details):
+	"Check whether an application can be executed"
+	
+	try:
+		sys.stderr.write("Checking for %s ... " % args[0])
+		subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.PIPE).wait()
+	except:
+		sys.stderr.write("failed\n")
+		print_error(["%s is missing." % name,
+		             "",
+		             "Execution of \"%s\" has failed. Please make sure that it" % " ".join(args),
+		             "is installed in your system (%s)." % details])
+	
+	sys.stderr.write("ok\n")
+
+def check_gcc(path, prefix, common, details):
+	"Check for GCC"
+	
+	common['GCC'] = "%sgcc" % prefix
+	
+	if (not path is None):
+		common['GCC'] = "%s/%s" % (path, common['GCC'])
+	
+	check_app([common['GCC'], "--version"], "GNU GCC", details)
+
+def check_binutils(path, prefix, common, details):
+	"Check for binutils toolchain"
+	
+	common['AS'] = "%sas" % prefix
+	common['LD'] = "%sld" % prefix
+	common['AR'] = "%sar" % prefix
+	common['OBJCOPY'] = "%sobjcopy" % prefix
+	common['OBJDUMP'] = "%sobjdump" % prefix
+	
+	if (not path is None):
+		for key in ["AS", "LD", "AR", "OBJCOPY", "OBJDUMP"]:
+			common[key] = "%s/%s" % (path, common[key])
+	
+	check_app([common['AS'], "--version"], "GNU Assembler", details)
+	check_app([common['LD'], "--version"], "GNU Linker", details)
+	check_app([common['AR'], "--version"], "GNU Archiver", details)
+	check_app([common['OBJCOPY'], "--version"], "GNU Objcopy utility", details)
+	check_app([common['OBJDUMP'], "--version"], "GNU Objdump utility", details)
+
+def create_output(cmname, common):
+	"Create common parameters output"
+	
+	outcm = file(cmname, 'w')
+	
+	outcm.write('#########################################\n')
+	outcm.write('## AUTO-GENERATED FILE, DO NOT EDIT!!! ##\n')
+	outcm.write('#########################################\n\n')
+	
+	for key, value in common.items():
+		outcm.write('%s = %s\n' % (key, value))
+	
+	outcm.close()
+
+def main():
+	config = {}
+	common = {}
+	
+	# Read and check configuration
+	if os.path.exists(MAKEFILE):
+		read_config(MAKEFILE, config)
+	else:
+		print_error(["Configuration file %s not found! Make sure that the" % MAKEFILE,
+		             "configuration phase of HelenOS build went OK. Try running",
+		             "\"make config\" again."])
+	
+	check_config(config, "PLATFORM")
+	check_config(config, "COMPILER")
+	check_config(config, "BARCH")
+	
+	# Cross-compiler prefix
+	if ('CROSS_PREFIX' in os.environ):
+		cross_prefix = os.environ['CROSS_PREFIX']
+	else:
+		cross_prefix = "/usr/local"
+	
+	# Prefix binutils tools on Solaris
+	if (os.uname()[0] == "SunOS"):
+		binutils_prefix = "g"
+	else:
+		binutils_prefix = ""
+	
+	# Common utilities
+	check_app(["ln", "--version"], "Symlink utility", "usually part of coreutils")
+	check_app(["rm", "--version"], "File remove utility", "usually part of coreutils")
+	check_app(["mkdir", "--version"], "Directory creation utility", "usually part of coreutils")
+	check_app(["cp", "--version"], "Copy utility", "usually part of coreutils")
+	check_app(["find", "--version"], "Find utility", "usually part of findutils")
+	check_app(["diff", "--version"], "Diff utility", "usually part of diffutils")
+	check_app(["make", "--version"], "Make utility", "preferably GNU Make")
+	check_app(["makedepend", "-f", "-"], "Makedepend utility", "usually part of imake or xutils")
+	
+	# Compiler
+	if (config['COMPILER'] == "gcc_cross"):
+		if (config['PLATFORM'] == "abs32le"):
+			check_config(config, "CROSS_TARGET")
+			target = config['CROSS_TARGET']
+			
+			if (config['CROSS_TARGET'] == "arm32"):
+				gnu_target = "arm-linux-gnu"
+			
+			if (config['CROSS_TARGET'] == "ia32"):
+				gnu_target = "i686-pc-linux-gnu"
+			
+			if (config['CROSS_TARGET'] == "mips32"):
+				gnu_target = "mipsel-linux-gnu"
+		
+		if (config['PLATFORM'] == "amd64"):
+			target = config['PLATFORM']
+			gnu_target = "amd64-linux-gnu"
+		
+		if (config['PLATFORM'] == "arm32"):
+			target = config['PLATFORM']
+			gnu_target = "arm-linux-gnu"
+		
+		if (config['PLATFORM'] == "ia32"):
+			target = config['PLATFORM']
+			gnu_target = "i686-pc-linux-gnu"
+		
+		if (config['PLATFORM'] == "ia64"):
+			target = config['PLATFORM']
+			gnu_target = "ia64-pc-linux-gnu"
+		
+		if (config['PLATFORM'] == "mips32"):
+			check_config(config, "MACHINE")
+			
+			if ((config['MACHINE'] == "lgxemul") or (config['MACHINE'] == "msim")):
+				target = config['PLATFORM']
+				gnu_target = "mipsel-linux-gnu"
+			
+			if (config['MACHINE'] == "bgxemul"):
+				target = "mips32eb"
+				gnu_target = "mips-linux-gnu"
+		
+		if (config['PLATFORM'] == "ppc32"):
+			target = config['PLATFORM']
+			gnu_target = "ppc-linux-gnu"
+		
+		if (config['PLATFORM'] == "sparc64"):
+			target = config['PLATFORM']
+			gnu_target = "sparc64-linux-gnu"
+		
+		path = "%s/%s/bin" % (cross_prefix, target)
+		prefix = "%s-" % gnu_target
+		
+		check_gcc(path, prefix, common, PACKAGE_CROSS)
+		check_binutils(path, prefix, common, PACKAGE_CROSS)
+		common['CC'] = common['GCC']
+	
+	if (config['COMPILER'] == "gcc_native"):
+		check_gcc(None, "", common, PACKAGE_GCC)
+		check_binutils(None, binutils_prefix, common, PACKAGE_BINUTILS)
+		common['CC'] = common['GCC']
+	
+	if (config['COMPILER'] == "icc"):
+		common['CC'] = "icc"
+		check_app([common['CC'], "-V"], "Intel C++ Compiler", "support is experimental")
+		check_gcc(None, "", common, PACKAGE_GCC)
+		check_binutils(None, binutils_prefix, common, PACKAGE_BINUTILS)
+	
+	if (config['COMPILER'] == "suncc"):
+		common['CC'] = "suncc"
+		check_app([common['CC'], "-V"], "Sun Studio Compiler", "support is experimental")
+		check_gcc(None, "", common, PACKAGE_GCC)
+		check_binutils(None, binutils_prefix, common, PACKAGE_BINUTILS)
+	
+	if (config['COMPILER'] == "clang"):
+		common['CC'] = "clang"
+		check_app([common['CC'], "--version"], "Clang compiler", "preferably version 1.0 or newer")
+		check_gcc(None, "", common, PACKAGE_GCC)
+		check_binutils(None, binutils_prefix, common, PACKAGE_BINUTILS)
+	
+	# Platform-specific utilities
+	if ((config['BARCH'] == "amd64") or (config['BARCH'] == "ia32") or (config['BARCH'] == "ppc32") or (config['BARCH'] == "sparc64")):
+		check_app(["mkisofs", "--version"], "ISO 9660 creation utility", "usually part of genisoimage")
+	
+	create_output(COMMON, common)
+	
+	return 0
+
+if __name__ == '__main__':
+	sys.exit(main())
Index: ols/sanity.py
===================================================================
--- tools/sanity.py	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ 	(revision )
@@ -1,144 +1,0 @@
-#!/usr/bin/env python
-#
-# Copyright (c) 2010 Martin Decky
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# - Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimer.
-# - Redistributions in binary form must reproduce the above copyright
-#   notice, this list of conditions and the following disclaimer in the
-#   documentation and/or other materials provided with the distribution.
-# - The name of the author may not be used to endorse or promote products
-#   derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-"""
-Check whether several important prerequisites for building HelenOS
-are present in the system
-"""
-import sys
-import os
-import re
-import subprocess
-
-MAKEFILE = 'Makefile.config'
-
-def read_config(fname, config):
-	"Read HelenOS build configuration"
-	
-	inf = file(fname, 'r')
-	
-	for line in inf:
-		res = re.match(r'^(?:#!# )?([^#]\w*)\s*=\s*(.*?)\s*$', line)
-		if (res):
-			config[res.group(1)] = res.group(2)
-	
-	inf.close()
-
-def print_error(msg):
-	"Print a bold error message"
-	
-	sys.stderr.write("\n")
-	sys.stderr.write("######################################################################\n")
-	sys.stderr.write("HelenOS build sanity check error:\n")
-	sys.stderr.write("\n")
-	sys.stderr.write("%s\n" % "\n".join(msg))
-	sys.stderr.write("######################################################################\n")
-	sys.stderr.write("\n")
-	
-	sys.exit(1)
-
-def check_app(args, name, details):
-	"Check whether an application can be executed"
-	
-	try:
-		sys.stderr.write("Checking for %s ... " % args[0])
-		subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.PIPE).wait()
-	except:
-		sys.stderr.write("failed\n")
-		print_error(["%s is missing." % name,
-		             "",
-		             "Execution of \"%s\" has failed. Please make sure that it" % " ".join(args),
-		             "is installed in your system (%s)." % details])
-	
-	sys.stderr.write("ok\n")
-
-def check_binutils():
-	"Check for binutils toolchain"
-	
-	check_app(["as", "--version"], "GNU Assembler", "usually part of binutils")
-	check_app(["ld", "--version"], "GNU Linker", "usually part of binutils")
-	check_app(["ar", "--version"], "GNU Archiver", "usually part of binutils")
-	check_app(["objcopy", "--version"], "Objcopy utility", "usually part of binutils")
-	check_app(["objdump", "--version"], "Objdump utility", "usually part of binutils")
-
-def main():
-	config = {}
-	
-	# Read configuration
-	if os.path.exists(MAKEFILE):
-		read_config(MAKEFILE, config)
-	else:
-		print_error(["Configuration file %s not found! Make sure that the" % MAKEFILE,
-		             "configuration phase of HelenOS build went OK. Try running",
-		             "\"make config\" again."])
-	
-	if ('CROSS_PREFIX' in os.environ):
-		cross_prefix = os.environ['CROSS_PREFIX']
-	else:
-		cross_prefix = "/usr/local"
-	
-	# Common utilities
-	check_app(["ln", "--version"], "Symlink utility", "usually part of coreutils")
-	check_app(["rm", "--version"], "File remove utility", "usually part of coreutils")
-	check_app(["mkdir", "--version"], "Directory creation utility", "usually part of coreutils")
-	check_app(["cp", "--version"], "Copy utility", "usually part of coreutils")
-	check_app(["uname", "--version"], "System information utility", "usually part of coreutils")
-	check_app(["find", "--version"], "Find utility", "usually part of findutils")
-	check_app(["diff", "--version"], "Diff utility", "usually part of diffutils")
-	check_app(["make", "--version"], "Make utility", "preferably GNU Make")
-	check_app(["makedepend", "-f", "-"], "Makedepend utility", "usually part of imake or xutils")
-	
-	try:
-		if (config['COMPILER'] == "gcc_native"):
-			check_app(["gcc", "--version"], "GNU GCC", "preferably version 4.4 or newer")
-			check_binutils()
-		
-		if (config['COMPILER'] == "icc"):
-			check_app(["icc", "-V"], "Intel C++ Compiler", "support is experimental")
-			check_binutils()
-		
-		if (config['COMPILER'] == "suncc"):
-			check_app(["suncc", "-V"], "Sun Studio Compiler", "support is experimental")
-			check_binutils()
-		
-		if (config['COMPILER'] == "clang"):
-			check_app(["clang", "--version"], "Clang compiler", "preferably version 1.0 or newer")
-			check_binutils()
-		
-		if ((config['UARCH'] == "amd64") or (config['UARCH'] == "ia32") or (config['UARCH'] == "ppc32") or (config['UARCH'] == "sparc64")):
-			check_app(["mkisofs", "--version"], "ISO 9660 creation utility", "usually part of genisoimage")
-		
-	except KeyError:
-		print_error(["Build configuration of HelenOS is corrupted or the sanity checks",
-		             "are out-of-sync. Try running \"make config\" again. ",
-		             "If the problem persists, please contact the developers of HelenOS."])
-	
-	return 0
-
-if __name__ == '__main__':
-	sys.exit(main())
Index: uspace/Makefile
===================================================================
--- uspace/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -30,4 +30,5 @@
 #
 
+-include ../Makefile.common
 -include ../Makefile.config
 
Index: uspace/app/Makefile.common
===================================================================
--- uspace/app/Makefile.common	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/app/Makefile.common	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -60,4 +60,5 @@
 all: \
     $(LIBC_PREFIX)/../../../version \
+    $(LIBC_PREFIX)/../../../Makefile.common \
     $(LIBC_PREFIX)/../../../Makefile.config \
     $(LIBC_PREFIX)/../../../config.h \
Index: uspace/lib/Makefile.common
===================================================================
--- uspace/lib/Makefile.common	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/Makefile.common	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -50,4 +50,5 @@
 OBJECTS = $(addsuffix .o,$(basename $(SOURCES)))
 
+-include $(USPACE_PREFIX)/../Makefile.common
 -include $(USPACE_PREFIX)/../Makefile.config
 include $(LIBC_PREFIX)/Makefile.toolchain
@@ -59,4 +60,5 @@
 all: \
     $(LIBC_PREFIX)/../../../version \
+    $(LIBC_PREFIX)/../../../Makefile.common \
     $(LIBC_PREFIX)/../../../Makefile.config \
     $(LIBC_PREFIX)/../../../config.h \
Index: uspace/lib/libc/Makefile
===================================================================
--- uspace/lib/libc/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -28,4 +28,5 @@
 #
 
+-include ../../../Makefile.common
 -include ../../../Makefile.config
 
Index: uspace/lib/libc/Makefile.toolchain
===================================================================
--- uspace/lib/libc/Makefile.toolchain	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/Makefile.toolchain	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -53,31 +53,13 @@
 AFLAGS =
 
-## Cross-toolchain prefix
-#
-
-ifndef CROSS_PREFIX
-	CROSS_PREFIX = /usr/local
-endif
-
 ## Setup platform configuration
 #
 
+-include $(LIBC_PREFIX)/../../../Makefile.common
 -include $(LIBC_PREFIX)/../../../Makefile.config
 -include $(LIBC_PREFIX)/../../../config.defs
 -include $(LIBC_PREFIX)/arch/$(UARCH)/Makefile.inc
 
-## Simple detection of the host system
-#
-HOST = $(shell uname)
-
-## On Solaris, some utilities have different names
-#
-ifeq ($(HOST),SunOS)
-	BINUTILS_PREFIX = "g"
-else
-	BINUTILS_PREFIX = ""
-endif
-
-## Toolchain configuration
+## Compilation options
 #
 
@@ -85,11 +67,4 @@
 
 ifeq ($(COMPILER),gcc_cross)
-	CC = $(TOOLCHAIN_DIR)/$(TARGET)-gcc
-	GCC = $(CC)
-	AS = $(TOOLCHAIN_DIR)/$(TARGET)-as
-	LD = $(TOOLCHAIN_DIR)/$(TARGET)-ld
-	AR = $(TOOLCHAIN_DIR)/$(TARGET)-ar
-	OBJCOPY = $(TOOLCHAIN_DIR)/$(TARGET)-objcopy
-	OBJDUMP = $(TOOLCHAIN_DIR)/$(TARGET)-objdump
 	CFLAGS = $(GCC_CFLAGS)
 	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
@@ -97,11 +72,4 @@
 
 ifeq ($(COMPILER),gcc_native)
-	CC = gcc
-	GCC = $(CC)
-	AS = $(BINUTILS_PREFIX)as
-	LD = $(BINUTILS_PREFIX)ld
-	AR = $(BINUTILS_PREFIX)ar
-	OBJCOPY = $(BINUTILS_PREFIX)objcopy
-	OBJDUMP = $(BINUTILS_PREFIX)objdump
 	CFLAGS = $(GCC_CFLAGS)
 	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
@@ -109,11 +77,4 @@
 
 ifeq ($(COMPILER),icc)
-	CC = icc
-	GCC = gcc
-	AS = as
-	LD = ld
-	AR = ar
-	OBJCOPY = objcopy
-	OBJDUMP = objdump
 	CFLAGS = $(ICC_CFLAGS)
 	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
@@ -121,11 +82,4 @@
 
 ifeq ($(COMPILER),clang)
-	CC = clang
-	GCC = gcc
-	AS = $(BINUTILS_PREFIX)as
-	LD = $(BINUTILS_PREFIX)ld
-	AR = $(BINUTILS_PREFIX)ar
-	OBJCOPY = $(BINUTILS_PREFIX)objcopy
-	OBJDUMP = $(BINUTILS_PREFIX)objdump
 	CFLAGS = $(CLANG_CFLAGS)
 	DEPEND_DEFS = $(DEFS) $(CONFIG_DEFS)
Index: uspace/lib/libc/arch/abs32le/Makefile.inc
===================================================================
--- uspace/lib/libc/arch/abs32le/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/arch/abs32le/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,23 +27,4 @@
 #
 
-## Toolchain configuration
-#
-
-ifeq ($(COMPILER),gcc_cross)
-	TOOLCHAIN_DIR = $(CROSS_PREFIX)/$(CROSS_TARGET)/bin
-	
-	ifeq ($(CROSS_TARGET),arm32)
-		TARGET = arm-linux-gnu
-	endif
-	
-	ifeq ($(CROSS_TARGET),ia32)
-		TARGET = i686-pc-linux-gnu
-	endif
-	
-	ifeq ($(CROSS_TARGET),mips32)
-		TARGET = mipsel-linux-gnu
-	endif
-endif
-
 ifeq ($(COMPILER),clang)
 	CLANG_ARCH = i386
Index: uspace/lib/libc/arch/amd64/Makefile.inc
===================================================================
--- uspace/lib/libc/arch/amd64/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/arch/amd64/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,10 +27,5 @@
 #
 
-## Toolchain configuration
-#
-
-TARGET = amd64-linux-gnu
 CLANG_ARCH = x86_64
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/amd64/bin
 
 ARCH_SOURCES = \
Index: uspace/lib/libc/arch/arm32/Makefile.inc
===================================================================
--- uspace/lib/libc/arch/arm32/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/arch/arm32/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -28,10 +28,4 @@
 #
 
-## Toolchain configuration
-#
-
-TARGET = arm-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/arm32/bin
-
 ARCH_SOURCES = \
 	arch/$(UARCH)/src/entry.s \
Index: uspace/lib/libc/arch/ia32/Makefile.inc
===================================================================
--- uspace/lib/libc/arch/ia32/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/arch/ia32/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,10 +27,5 @@
 #
 
-## Toolchain configuration
-#
-
-TARGET = i686-pc-linux-gnu
 CLANG_ARCH = i386
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/ia32/bin
 
 ARCH_SOURCES = \
Index: uspace/lib/libc/arch/ia64/Makefile.inc
===================================================================
--- uspace/lib/libc/arch/ia64/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/arch/ia64/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,10 +27,4 @@
 #
 
-## Toolchain configuration
-#
-
-TARGET = ia64-pc-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/ia64/bin
-
 ARCH_SOURCES = \
 	arch/$(UARCH)/src/entry.s \
Index: uspace/lib/libc/arch/mips32/Makefile.inc
===================================================================
--- uspace/lib/libc/arch/mips32/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/arch/mips32/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,10 +27,4 @@
 #
 
-## Toolchain configuration
-#
-
-TARGET = mipsel-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/mips32/bin
-
 ARCH_SOURCES = \
 	arch/$(UARCH)/src/entry.s \
Index: uspace/lib/libc/arch/mips32eb/Makefile.inc
===================================================================
--- uspace/lib/libc/arch/mips32eb/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/arch/mips32eb/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,10 +27,4 @@
 #
 
-## Toolchain configuration
-#
-
-TARGET = mips-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/mips32eb/bin
-
 ARCH_SOURCES = \
 	arch/$(UARCH)/src/entry.s \
Index: uspace/lib/libc/arch/ppc32/Makefile.inc
===================================================================
--- uspace/lib/libc/arch/ppc32/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/arch/ppc32/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,10 +27,4 @@
 #
 
-## Toolchain configuration
-#
-
-TARGET = ppc-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/ppc32/bin
-
 ARCH_SOURCES = \
 	arch/$(UARCH)/src/entry.s \
Index: uspace/lib/libc/arch/sparc64/Makefile.inc
===================================================================
--- uspace/lib/libc/arch/sparc64/Makefile.inc	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/lib/libc/arch/sparc64/Makefile.inc	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,10 +27,4 @@
 #
 
-## Toolchain configuration
-#
-
-TARGET = sparc64-linux-gnu
-TOOLCHAIN_DIR = $(CROSS_PREFIX)/sparc64/bin
-
 ARCH_SOURCES = \
 	arch/$(UARCH)/src/entry.s \
Index: uspace/srv/Makefile.common
===================================================================
--- uspace/srv/Makefile.common	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/Makefile.common	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -64,4 +64,5 @@
 all: \
     $(LIBC_PREFIX)/../../../version \
+    $(LIBC_PREFIX)/../../../Makefile.common \
     $(LIBC_PREFIX)/../../../Makefile.config \
     $(LIBC_PREFIX)/../../../config.h \
Index: uspace/srv/hid/console/Makefile
===================================================================
--- uspace/srv/hid/console/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/hid/console/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,5 +32,5 @@
 .PHONY: all clean
 
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+all: $(LIBC_PREFIX)/../../../Makefile.common $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
 	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
Index: uspace/srv/hid/fb/Makefile
===================================================================
--- uspace/srv/hid/fb/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/hid/fb/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,5 +32,5 @@
 .PHONY: all clean
 
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+all: $(LIBC_PREFIX)/../../../Makefile.common $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
 	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
Index: uspace/srv/hid/kbd/Makefile
===================================================================
--- uspace/srv/hid/kbd/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/hid/kbd/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,5 +32,5 @@
 .PHONY: all clean
 
-all: $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
+all: $(LIBC_PREFIX)/../../../Makefile.common $(LIBC_PREFIX)/../../../Makefile.config $(LIBC_PREFIX)/../../../config.h $(LIBC_PREFIX)/../../../config.defs $(LIBS)
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
 	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
Index: uspace/srv/loader/Makefile
===================================================================
--- uspace/srv/loader/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/loader/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -28,4 +28,5 @@
 #
 
+-include ../../../Makefile.common
 -include ../../../Makefile.config
 -include arch/$(UARCH)/Makefile.inc
Index: uspace/srv/net/Makefile
===================================================================
--- uspace/srv/net/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/net/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -27,4 +27,5 @@
 #
 
+include ../../../Makefile.common
 include ../../../Makefile.config
 
Index: uspace/srv/net/app/echo/Makefile
===================================================================
--- uspace/srv/net/app/echo/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/net/app/echo/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 STRUCTURES = $(NET_BASE)structures/
 
+include ../../../../../Makefile.common
 include ../../../../../Makefile.config
 
Index: uspace/srv/net/app/nettest1/Makefile
===================================================================
--- uspace/srv/net/app/nettest1/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/net/app/nettest1/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 STRUCTURES = $(NET_BASE)structures/
 
+include ../../../../../Makefile.common
 include ../../../../../Makefile.config
 
Index: uspace/srv/net/app/nettest2/Makefile
===================================================================
--- uspace/srv/net/app/nettest2/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/net/app/nettest2/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 STRUCTURES = $(NET_BASE)structures/
 
+include ../../../../../Makefile.common
 include ../../../../../Makefile.config
 
Index: uspace/srv/net/app/ping/Makefile
===================================================================
--- uspace/srv/net/app/ping/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/net/app/ping/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 STRUCTURES = $(NET_BASE)structures/
 
+include ../../../../../Makefile.common
 include ../../../../../Makefile.config
 
Index: uspace/srv/net/net/Makefile
===================================================================
--- uspace/srv/net/net/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/net/net/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 STRUCTURES = $(NET_BASE)structures/
 
+include $(NET_BASE)../../../Makefile.common
 include $(NET_BASE)../../../Makefile.config
 
Index: uspace/srv/net/net/start/Makefile
===================================================================
--- uspace/srv/net/net/start/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/net/net/start/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 STRUCTURES = $(NET_BASE)structures/
 
+include ../../../../../Makefile.common
 include ../../../../../Makefile.config
 
Index: uspace/srv/net/netif/dp8390/Makefile
===================================================================
--- uspace/srv/net/netif/dp8390/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/net/netif/dp8390/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 STRUCTURES = $(NET_BASE)structures/
 
+include $(NET_BASE)../../../Makefile.common
 include $(NET_BASE)../../../Makefile.config
 
Index: uspace/srv/net/netif/lo/Makefile
===================================================================
--- uspace/srv/net/netif/lo/Makefile	(revision 3ad309dc068442c3e1d6f8b673c6a491fa68d3b6)
+++ uspace/srv/net/netif/lo/Makefile	(revision 177e4ea4f278b1d53d68392d53cd40704cd0931d)
@@ -32,4 +32,5 @@
 STRUCTURES = $(NET_BASE)structures/
 
+include $(NET_BASE)../../../Makefile.common
 include $(NET_BASE)../../../Makefile.config
 
