diff --git a/dev-util/ninja/Manifest b/dev-util/ninja/Manifest
index b882b2f..3393312 100644
--- a/dev-util/ninja/Manifest
+++ b/dev-util/ninja/Manifest
@@ -1 +1 @@
-DIST ninja-1.8.2.tar.gz 185226 SHA256 86b8700c3d0880c2b44c2ff67ce42774aaf8c28cbf57725cb881569288c1c6f4 SHA512 1650bf9e3eddeb0b0fbb415c2b8e0a7c094421e991fa8139fd77fae0f6ee7ee980b7cf5e98d883c3a884f99abcb06fa26e3980af3a3a5bb6dd655124755782c2 WHIRLPOOL 7afc5a6ba34f5c5b464ed47af8e0b5e50bc02a81beb4e5719e19348d60057e6cd3f156ef20f77646fe883b8becc1298d7998d85f1d8bc07ee6b0bd415a58aa2f
+DIST ninja-1.10.0.tar.gz 210313 BLAKE2B 0a3db145deaea8a990958ad2e812bc18ed014aaba94911a2905b082745a0d08f10ce1113badabaa362f3834540b7bd3858f07e2a5fce268c66d3d6c73e974e76 SHA512 5ed47ef1ff18a03eb73296629679a8617a08ee443e10e28ae9cb24e4506f84fe1eb142888adea9a62364b626b35817def8c55ba956c9b3cbc7b82d3e62293044
diff --git a/dev-util/ninja/files/ninja-1.10.0-readme.patch b/dev-util/ninja/files/ninja-1.10.0-readme.patch
new file mode 100644
index 0000000..1d84f12
--- /dev/null
+++ b/dev-util/ninja/files/ninja-1.10.0-readme.patch
@@ -0,0 +1,38 @@
+From b748d085618bf5e802de6a13b07d632d20ab04bf Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Fri, 20 Mar 2020 19:36:01 -0400
+Subject: [PATCH] Replace references to README with README.md
+
+The README file was renamed to README.md in commit
+a37da20ae74c81703b1c811182fc154d95ed46fe.
+---
+ configure.py              | 2 +-
+ misc/packaging/ninja.spec | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.py b/configure.py
+index 7d8ce9045..8eef7e6eb 100755
+--- a/configure.py
++++ b/configure.py
+@@ -649,7 +649,7 @@ def has_re2c():
+        command='$doxygen_mainpage_generator $in > $out',
+        description='DOXYGEN_MAINPAGE $out')
+ mainpage = n.build(built('doxygen_mainpage'), 'doxygen_mainpage',
+-                   ['README', 'COPYING'],
++                   ['README.md', 'COPYING'],
+                    implicit=['$doxygen_mainpage_generator'])
+ n.build('doxygen', 'doxygen', doc('doxygen.config'),
+         implicit=mainpage)
+diff --git a/misc/packaging/ninja.spec b/misc/packaging/ninja.spec
+index 05f5a079a..36e518186 100644
+--- a/misc/packaging/ninja.spec
++++ b/misc/packaging/ninja.spec
+@@ -32,7 +32,7 @@ cp -p ninja %{buildroot}%{_bindir}/
+ 
+ %files
+ %defattr(-, root, root)
+-%doc COPYING README doc/manual.html
++%doc COPYING README.md doc/manual.html
+ %{_bindir}/*
+ 
+ %clean
diff --git a/dev-util/ninja/files/ninja-cflags.patch b/dev-util/ninja/files/ninja-cflags.patch
new file mode 100644
index 0000000..0c4ef28
--- /dev/null
+++ b/dev-util/ninja/files/ninja-cflags.patch
@@ -0,0 +1,25 @@
+From e4530769ef6a497f8f5f06159f6be049dc20e2ea Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Thu, 19 Mar 2020 11:21:29 -0400
+Subject: [PATCH] Avoid adding -O2 -DNDEBUG to cflags
+
+---
+ configure.py | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/configure.py b/configure.py
+index 7d8ce90..7566147 100755
+--- a/configure.py
++++ b/configure.py
+@@ -344,8 +344,6 @@ else:
+     if options.debug:
+         cflags += ['-D_GLIBCXX_DEBUG', '-D_GLIBCXX_DEBUG_PEDANTIC']
+         cflags.remove('-fno-rtti')  # Needed for above pedanticness.
+-    else:
+-        cflags += ['-O2', '-DNDEBUG']
+     try:
+         proc = subprocess.Popen(
+             [CXX, '-fdiagnostics-color', '-c', '-x', 'c++', '/dev/null',
+-- 
+2.25.1
+
diff --git a/dev-util/ninja/files/ninja-uclibc.patch b/dev-util/ninja/files/ninja-uclibc.patch
deleted file mode 100644
index e87eea8..0000000
--- a/dev-util/ninja/files/ninja-uclibc.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/src/util.cc b/src/util.cc
-index e31fd1f..1caa1ce 100644
---- a/src/util.cc
-+++ b/src/util.cc
-@@ -585,6 +585,13 @@ double GetLoadAverage() {
-   // Calculation taken from comment in libperfstats.h
-   return double(cpu_stats.loadavg[0]) / double(1 << SBITS);
- }
-+#elif defined(__UCLIBC__)
-+double GetLoadAverage() {
-+  struct sysinfo si;
-+  if (sysinfo(&si) != 0)
-+    return -0.0f;
-+  return 1.0 / (1 << SI_LOAD_SHIFT) * si.loads[0];
-+}
- #else
- double GetLoadAverage() {
-   double loadavg[3] = { 0.0f, 0.0f, 0.0f };
diff --git a/dev-util/ninja/ninja-1.10.0.ebuild b/dev-util/ninja/ninja-1.10.0.ebuild
new file mode 100644
index 0000000..dcfb796
--- /dev/null
+++ b/dev-util/ninja/ninja-1.10.0.ebuild
@@ -0,0 +1,133 @@
+# Copyright 2012-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7,8} )
+
+inherit bash-completion-r1 elisp-common python-any-r1 toolchain-funcs
+
+if [[ ${PV} == 9999 ]]; then
+	inherit git-r3
+	EGIT_REPO_URI="https://github.com/ninja-build/ninja.git"
+else
+	SRC_URI="https://github.com/ninja-build/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+	KEYWORDS="~alpha amd64 arm arm64 hppa ~ia64 ~m68k ~mips ppc ppc64 ~riscv s390 sparc x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+fi
+
+DESCRIPTION="A small build system similar to make"
+HOMEPAGE="https://ninja-build.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+
+IUSE="doc emacs test vim-syntax"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+	${PYTHON_DEPS}
+	dev-util/re2c
+	doc? (
+		app-text/asciidoc
+		app-doc/doxygen
+		dev-libs/libxslt
+	)
+	test? ( dev-cpp/gtest )
+"
+RDEPEND="
+	emacs? ( >=app-editors/emacs-23.1:* )
+	vim-syntax? (
+		|| (
+			app-editors/vim
+			app-editors/gvim
+		)
+	)
+"
+
+PATCHES=(
+	"${FILESDIR}"/ninja-cflags.patch
+	"${FILESDIR}"/ninja-1.10.0-readme.patch
+)
+
+run_for_build() {
+	if tc-is-cross-compiler; then
+		local -x AR=$(tc-getBUILD_AR)
+		local -x CXX=$(tc-getBUILD_CXX)
+		local -x CFLAGS=
+		local -x CXXFLAGS=${BUILD_CXXFLAGS}
+		local -x LDFLAGS=${BUILD_LDFLAGS}
+	fi
+	echo "$@" >&2
+	"$@"
+}
+
+src_compile() {
+	tc-export AR CXX
+
+	# configure.py appends CFLAGS to CXXFLAGS
+	unset CFLAGS
+
+	run_for_build ${EPYTHON} configure.py --bootstrap --verbose || die
+
+	if tc-is-cross-compiler; then
+		mv ninja ninja-build || die
+		${EPYTHON} configure.py || die
+		./ninja-build -v ninja || die
+	else
+		ln ninja ninja-build || die
+	fi
+
+	if use doc; then
+		./ninja-build -v doxygen manual || die
+	fi
+
+	if use emacs; then
+		elisp-compile misc/ninja-mode.el || die
+	fi
+}
+
+src_test() {
+	if ! tc-is-cross-compiler; then
+		# Bug 485772
+		ulimit -n 2048
+		./ninja -v ninja_test || die
+		./ninja_test || die
+	fi
+}
+
+src_install() {
+	dodoc README.md CONTRIBUTING.md
+	if use doc; then
+		docinto html
+		dodoc -r doc/doxygen/html/.
+		dodoc doc/manual.html
+	fi
+	dobin ninja
+
+	newbashcomp misc/bash-completion "${PN}"
+
+	if use vim-syntax; then
+		insinto /usr/share/vim/vimfiles/syntax/
+		doins misc/ninja.vim
+
+		echo 'au BufNewFile,BufRead *.ninja set ft=ninja' > "${T}/ninja.vim"
+		insinto /usr/share/vim/vimfiles/ftdetect
+		doins "${T}/ninja.vim"
+	fi
+
+	insinto /usr/share/zsh/site-functions
+	newins misc/zsh-completion _ninja
+
+	if use emacs; then
+		cd misc || die
+		elisp-install ninja ninja-mode.el* || die
+	fi
+}
+
+pkg_postinst() {
+	use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+	use emacs && elisp-site-regen
+}
diff --git a/dev-util/ninja/ninja-1.8.2.ebuild b/dev-util/ninja/ninja-1.8.2.ebuild
deleted file mode 100644
index 7ada897..0000000
--- a/dev-util/ninja/ninja-1.8.2.ebuild
+++ /dev/null
@@ -1,127 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-PYTHON_COMPAT=( python{2_7,3_4,3_5,3_6} )
-
-inherit bash-completion-r1 elisp-common python-any-r1 toolchain-funcs
-
-if [[ ${PV} == 9999 ]]; then
-	inherit git-r3
-	EGIT_REPO_URI="https://github.com/ninja-build/ninja.git"
-else
-	SRC_URI="https://github.com/ninja-build/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-	KEYWORDS="*"
-fi
-
-DESCRIPTION="A small build system similar to make"
-HOMEPAGE="https://ninja-build.org/"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-
-IUSE="doc emacs test vim-syntax zsh-completion"
-
-DEPEND="
-	${PYTHON_DEPS}
-	dev-util/re2c
-	doc? (
-		app-text/asciidoc
-		app-doc/doxygen
-		dev-libs/libxslt
-	)
-	test? ( dev-cpp/gtest )
-"
-RDEPEND="
-	emacs? ( virtual/emacs )
-	vim-syntax? (
-		|| (
-			app-editors/vim
-			app-editors/gvim
-		)
-	)
-	zsh-completion? ( app-shells/zsh )
-	!<net-irc/ninja-1.5.9_pre14-r1" #436804
-
-run_for_build() {
-	if tc-is-cross-compiler; then
-		local -x AR=$(tc-getBUILD_AR)
-		local -x CXX=$(tc-getBUILD_CXX)
-		local -x CFLAGS=${BUILD_CXXFLAGS}
-		local -x LDFLAGS=${BUILD_LDFLAGS}
-	fi
-	"$@"
-}
-
-src_compile() {
-	tc-export AR CXX
-
-	# configure.py uses CFLAGS instead of CXXFLAGS
-	export CFLAGS=${CXXFLAGS}
-
-	run_for_build "${PYTHON}" configure.py --bootstrap --verbose || die
-
-	if tc-is-cross-compiler; then
-		mv ninja ninja-build || die
-		"${PYTHON}" configure.py || die
-		./ninja-build -v ninja || die
-	else
-		ln ninja ninja-build || die
-	fi
-
-	if use doc; then
-		./ninja-build -v doxygen manual || die
-	fi
-
-	if use emacs; then
-		elisp-compile misc/ninja-mode.el || die
-	fi
-}
-
-src_test() {
-	if ! tc-is-cross-compiler; then
-		# Bug 485772
-		ulimit -n 2048
-		./ninja-build -v ninja_test || die
-		./ninja_test || die
-	fi
-}
-
-src_install() {
-	dodoc README HACKING.md
-	if use doc; then
-		dohtml -r doc/doxygen/html/*
-		dohtml doc/manual.html
-	fi
-	dobin ninja
-
-	newbashcomp misc/bash-completion "${PN}"
-
-	if use vim-syntax; then
-		insinto /usr/share/vim/vimfiles/syntax/
-		doins misc/"${PN}".vim
-
-		echo 'au BufNewFile,BufRead *.ninja set ft=ninja' > "${T}/${PN}.vim"
-		insinto /usr/share/vim/vimfiles/ftdetect
-		doins "${T}/${PN}.vim"
-	fi
-
-	if use zsh-completion; then
-		insinto /usr/share/zsh/site-functions
-		newins misc/zsh-completion _ninja
-	fi
-
-	if use emacs; then
-		cd misc || die
-		elisp-install ${PN} ninja-mode.el* || die
-	fi
-}
-
-pkg_postinst() {
-	use emacs && elisp-site-regen
-}
-
-pkg_postrm() {
-	use emacs && elisp-site-regen
-}
