diff --git a/fish.spec b/fish.spec
index 7c9ba28..8c70826 100644
--- a/fish.spec
+++ b/fish.spec
@@ -4,7 +4,7 @@
 
 Name:           fish
 Version:        3.0.0
-Release:        2%{?dist}
+Release:        3%{?dist}
 Summary:        Friendly interactive shell
 
 # GPLv2
@@ -30,7 +30,8 @@ Source0:        https://github.com/fish-shell/fish-shell/releases/download/%{ver
 # https://github.com/fish-shell/fish-shell/commit/742fde0dd68858ad603b449501f0c42cd7864fab
 Patch0001:      0001-Don-t-use-less-in-highlighting-test.patch
 
-BuildRequires:  cmake
+BuildRequires:  cmake >= 3.2
+BuildRequires:  ninja-build
 BuildRequires:  gcc
 BuildRequires:  gcc-c++
 BuildRequires:  gettext
@@ -61,11 +62,11 @@ for f in $(find share/tools -type f -name '*.py'); do
 done
 
 %build
-%cmake -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir} .
-%make_build all fish_tests
+%cmake . -B%{_vpath_builddir} -GNinja -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir}
+%ninja_build -C %{_vpath_builddir} all fish_tests
 
 %install
-%make_install
+%ninja_install -C %{_vpath_builddir}
 
 # Install docs from tarball root
 cp -a README.md %{buildroot}%{_pkgdocdir}
@@ -79,7 +80,7 @@ rmdir %{buildroot}%{_datadir}/fish/vendor_conf.d
 %find_lang %{name}
 
 %check
-./fish_tests
+%{_vpath_builddir}/fish_tests
 
 %post
 if [ "$1" = 1 ]; then
@@ -108,6 +109,9 @@ fi
 %{_pkgdocdir}
 
 %changelog
+* Sun Dec 30 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 3.0.0-3
+- Switch to CMake/Ninja
+
 * Sat Dec 29 2018 David Adam <zanchey@ucc.gu.uwa.edu.au> - 3.0.0-2
 - Move to CMake builds
 - Drop unneeded dependencies