diff --git a/Makefile.am b/Makefile.am
index c70af62..c8257b7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -288,6 +288,7 @@ DBUS_INTERFACE_DOCS = \
 	docs/api/dbus-org.freedesktop.NetworkManager.DnsManager.xml
 
 introspection/%.c: introspection/%.xml
+	$(MKDIR_P) $(dir $@)
 	$(AM_V_GEN) gdbus-codegen \
 		--generate-c-code $(basename $@) \
 		--generate-docbook docs/api/dbus \
@@ -559,9 +560,11 @@ EXTRA_DIST += \
 	libnm-core/crypto_nss.c
 
 libnm-core/nm-vpn-dbus-types.xml: libnm-core/nm-vpn-dbus-interface.h tools/enums-to-docbook.pl
+	$(MKDIR_P) $(dir $@)
 	$(AM_V_GEN) @PERL@ $(srcdir)/tools/enums-to-docbook.pl 'nm-vpn-dbus-types' 'VPN Plugin D-Bus API Types' $^ >$@
 
 libnm-core/nm-dbus-types.xml: libnm-core/nm-dbus-interface.h tools/enums-to-docbook.pl
+	$(MKDIR_P) $(dir $@)
 	$(AM_V_GEN) @PERL@ $(srcdir)/tools/enums-to-docbook.pl 'nm-dbus-types' 'NetworkManager D-Bus API Types' $^ >$@
 
 BUILT_SOURCES += \
diff --git a/configure.ac b/configure.ac
index a21b961..8f4044d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -28,6 +28,7 @@ dnl Require programs
 dnl
 AC_PROG_CC
 AM_PROG_CC_C_O
+AC_PROG_MKDIR_P
 
 # C++ only required if --enable-qt=yes
 AC_PROG_CXX
