diff --git a/Makefile.am b/Makefile.am
index fffd09b47a47c0907ed40b43741f11e8c8606661..e2a03456640d613ee10d8fdafefcef8b5a5adc27 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,8 +1,13 @@
-# standard automake rules
 SUBDIRS = man lib scripts daemons doc test tools qa
-
 EXTRA_DIST = NEWS
 
+.PHONY: ganeti
+ganeti:
+	cd $(top_builddir) && rm -f $@ && $(LN_S) lib $@
+
+pre-check: ganeti
+	$(MAKE) -C lib $@
+
 # custom rules
 depgraph: depgraph.png
 
diff --git a/configure.ac b/configure.ac
index d233f122412c4a8660f2806412bbf47c84f9eada..1ed1110599116944212f11ca9bf4f92eca6fd305 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,8 +1,8 @@
 # Configure script for Ganeti
-
 AC_PREREQ(2.59)
 AC_INIT(ganeti, 1.2b2, ganeti@googlegroups.com)
 AC_CONFIG_AUX_DIR(autotools)
+AC_CONFIG_SRCDIR(configure)
 AM_INIT_AUTOMAKE([foreign tar-ustar])
 
 # --with-ssh-initscript=...
@@ -35,6 +35,7 @@ AC_SUBST(OS_SEARCH_PATH, $os_search_path)
 
 # Check common programs
 AC_PROG_INSTALL
+AC_PROG_LN_S
 
 # Check for Python
 AM_PATH_PYTHON(2.4)
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 3bcc2f966a0ab2e7cd895fdcf4cdfe0f47d07046..1e353563deb0cbdec402985c0f7ef7e080b6a419 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -19,3 +19,8 @@ _autoconf.py: Makefile
 	  echo "EXPORT_DIR = '$(EXPORT_DIR)'"; \
 	  echo "OS_SEARCH_PATH = [$(OS_SEARCH_PATH)]"; \
 	} > $@
+
+pre-check: all
+	for i in $(pkgpython_PYTHON); do \
+		if test ! -f $$i; then $(LN_S) $(srcdir)/$$i $$i; fi; \
+	done
diff --git a/test/Makefile.am b/test/Makefile.am
index 43f0b4de9f7f7ee73dd4d1171a6a4e800f45d515..83c7b9b00afa3bfa9201c4782f5bdd682f729266 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -1,11 +1,13 @@
-TESTS = ganeti.hooks_unittest.py ganeti.utils_unittest.py
-TESTS_ENVIRONMENT = PYTHONPATH=.:$(srcdir)
+TESTS = \
+  ganeti.config_unittest.py \
+  ganeti.hooks_unittest.py \
+  ganeti.utils_unittest.py
+TESTS_ENVIRONMENT = PYTHONPATH=.:$(top_builddir)
 
-check_DATA = ganeti
-ganeti:
-	rm -f ganeti
-	ln -s $(top_srcdir)/lib ganeti
+check-am: do-pre-check
+
+do-pre-check:
+	$(MAKE) -C $(top_builddir) pre-check
 
 EXTRA_DIST = $(TESTS) mocks.py
 CLEANFILES = *.py[co]
-MAINTAINERCLEANFILES = ganeti