Index: Makefile
===================================================================
--- Makefile	(revision 45b26114971f5c084a8e07c2f5740ed79d8a539a)
+++ Makefile	(revision 2e2cefdb40a3bb2e685f7101a4fdb532a280b3de)
@@ -34,5 +34,5 @@
 FORMAT = clang-format
 CHECK = tools/check.sh
-CONFIG = tools/config.py
+CONFIG = $(abspath tools/config.py)
 MESON = meson
 
@@ -41,8 +41,9 @@
 CONFIG_RULES = HelenOS.config
 
-CONFIG_MAKEFILE = Makefile.config
-CONFIG_HEADER = config.h
+CONFIG_MAKEFILE = $(BUILD_DIR)/Makefile.config
+CONFIG_HEADER = $(BUILD_DIR)/config.h
 ERRNO_HEADER = abi/include/abi/errno.h
 ERRNO_INPUT = abi/include/abi/errno.in
+VERSION_FILE = version
 
 -include $(CONFIG_MAKEFILE)
@@ -70,5 +71,5 @@
 all: meson
 
-$(BUILD_DIR)/build.ninja: Makefile.config version
+$(BUILD_DIR)/build.ninja: $(CONFIG_MAKEFILE) $(VERSION_FILE)
 	PATH="$(CROSS_PATH):$$PATH" meson . $(BUILD_DIR) --cross-file meson/cross/$(CROSS_TARGET) $(MESON_ARGS)
 
@@ -131,15 +132,18 @@
 
 config_default $(CONFIG_MAKEFILE) $(CONFIG_HEADER): $(CONFIG_RULES)
+	mkdir -p $(BUILD_DIR)
 ifeq ($(HANDS_OFF),y)
-	$(CONFIG) $< defaults hands-off $(PROFILE)
+	cd $(BUILD_DIR) && $(CONFIG) $(abspath $<) $(abspath defaults) hands-off $(PROFILE)
 else
-	$(CONFIG) $< defaults default $(PROFILE)
+	cd $(BUILD_DIR) && $(CONFIG) $(abspath $<) $(abspath defaults) default $(PROFILE)
 endif
 
 config: $(CONFIG_RULES)
-	$(CONFIG) $< defaults
+	mkdir -p $(BUILD_DIR)
+	cd $(BUILD_DIR) && $(CONFIG) $(abspath $<) $(abspath defaults)
 
 random-config: $(CONFIG_RULES)
-	$(CONFIG) $< defaults random
+	mkdir -p $(BUILD_DIR)
+	cd $(BUILD_DIR) && $(CONFIG) $(abspath $<) $(abspath defaults) random
 
 # Release files
