diff --git a/mk/px4_targets.mk b/mk/px4_targets.mk
index d9059466b51043e2e286363b5cace23de8f1698a..6ef7a7bb3925e9b941ad990a415a56900b5d77c0 100644
--- a/mk/px4_targets.mk
+++ b/mk/px4_targets.mk
@@ -2,6 +2,14 @@
 
 ifneq ($(PX4_ROOT),)
 
+# try to cope with relative paths
+ifeq ($(wildcard $(PX4_ROOT)/nuttx),)
+PX4_ROOT := $(shell cd $(SKETCHBOOK)/$(PX4_ROOT) && pwd)
+endif
+ifeq ($(wildcard $(PX4_ROOT)/nuttx),)
+$(error ERROR: PX4_ROOT not set correctly - no nuttx directory found)
+endif
+
 PX4_CONFIG_FILE=$(MK_DIR)/PX4/config_px4fmu_APM.mk
 SKETCHFLAGS=$(SKETCHLIBINCLUDES) -I$(PWD) -DCONFIG_HAL_BOARD=HAL_BOARD_PX4 -DSKETCHNAME="\\\"$(SKETCH)\\\"" -DSKETCH_MAIN=ArduPilot_main
 PX4_MAKE = make -C $(BUILDROOT) -f $(PX4_ROOT)/makefiles/firmware.mk CONFIG_FILE=$(PWD)/$(PX4_CONFIG_FILE) EXTRADEFINES="$(SKETCHFLAGS) "$(EXTRAFLAGS) APM_MODULE_DIR=$(BUILDROOT) SKETCHBOOK=$(SKETCHBOOK) PX4_ROOT=$(PX4_ROOT)