Index: Makefile
===================================================================
--- Makefile	(revision 1783f75118ab802742bad1e7331b0683d285eb5d)
+++ Makefile	(revision e503cea912204d23b083b0b929c32c8e1376043c)
@@ -66,5 +66,5 @@
 endif
 
-.PHONY: all precheck cscope cscope_parts config_default config distclean clean check releasefile release meson export-posix space
+.PHONY: all precheck cscope cscope_parts config_default config distclean clean check releasefile release meson space
 
 all: meson
@@ -110,6 +110,6 @@
 	tools/srepl '[ \t]\+$$' ''
 
-doxy:
-	$(MAKE) -r -C doxygen
+doxy: $(BUILD_DIR)/build.ninja
+	ninja -C $(BUILD_DIR) doxygen
 
 # Pre-integration build check
Index: xygen/Makefile
===================================================================
--- doxygen/Makefile	(revision 1783f75118ab802742bad1e7331b0683d285eb5d)
+++ 	(revision )
@@ -1,46 +1,0 @@
-#
-# Copyright (c) 2017 Jiri Svoboda
-# 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.
-#
-
-cfg_file = doxygen.cfg
-gen_cfg = doxygen.cfg.gen
-patch_file = doxygen.cfg.diff
-output_dirs = latex html
-
-all: doxygen.cfg
-	doxygen $^
-
-clean:
-	rm -f $(gen_cfg) $(cfg_file)
-	rm -rf $(output_dirs)
-
-$(cfg_file): $(gen_cfg)
-	cp $^ $@
-	patch $@ $(patch_file)
-
-$(gen_cfg):
-	doxygen -g $@
Index: doxygen/meson.build
===================================================================
--- doxygen/meson.build	(revision e503cea912204d23b083b0b929c32c8e1376043c)
+++ doxygen/meson.build	(revision e503cea912204d23b083b0b929c32c8e1376043c)
@@ -0,0 +1,45 @@
+#
+# Copyright (c) 2017 Jiri Svoboda
+# 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.
+#
+
+doxygen = find_program('doxygen')
+patch = find_program('patch')
+patch_file = files('doxygen.cfg.diff')
+
+
+gen_cfg = custom_target('doxygen.cfg.gen',
+	output: 'doxygen.cfg.gen',
+	command: [ doxygen, '-g', '@OUTPUT@' ],
+)
+
+dox_cfg = custom_target('doxygen.cfg',
+	output: 'doxygen.cfg',
+	input: [ gen_cfg, patch_file ],
+	command: [ patch, '-o', '@OUTPUT@', '@INPUT@' ],
+)
+
+run_target('doxygen', command: [ doxygen, dox_cfg ])
Index: meson.build
===================================================================
--- meson.build	(revision 1783f75118ab802742bad1e7331b0683d285eb5d)
+++ meson.build	(revision e503cea912204d23b083b0b929c32c8e1376043c)
@@ -11,4 +11,6 @@
     meson_version: '>=0.50.1',
 )
+
+subdir('doxygen')
 
 cc = meson.get_compiler('c')
