cmake-utils.eclass: Make ninja default backend in EAPI >= 7
authorDavid Seifert <soap@gentoo.org>
Sun, 15 Jul 2018 00:03:00 +0000 (17:03 -0700)
committerAndreas Sturmlechner <asturm@gentoo.org>
Mon, 10 Dec 2018 21:54:03 +0000 (22:54 +0100)
* Using the ninja backend as a default is the only way to
  massively improve src_compile core utilization, given that
  it seems unlikely that CMake will ever produce non-recursive
  Makefiles.

  See also:
  http://www.kaizou.org/2016/09/build-benchmark-large-c-project/

Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
eclass/cmake-utils.eclass

index 73e7f0b73ae6017a5941b0cea52eebfcd4079e78..30ee97b99a36800d2b8ec5fd70b18d2c3319e339 100644 (file)
@@ -50,10 +50,12 @@ _CMAKE_UTILS_ECLASS=1
 # Set to enable in-source build.
 
 # @ECLASS-VARIABLE: CMAKE_MAKEFILE_GENERATOR
+# @DEFAULT_UNSET
 # @DESCRIPTION:
 # Specify a makefile generator to be used by cmake.
 # At this point only "emake" and "ninja" are supported.
-: ${CMAKE_MAKEFILE_GENERATOR:=emake}
+# In EAPI 7 and above, the default is set to "ninja",
+# whereas in EAPIs below 7, it is set to "emake".
 
 # @ECLASS-VARIABLE: CMAKE_MIN_VERSION
 # @DESCRIPTION:
@@ -112,7 +114,13 @@ esac
 inherit toolchain-funcs ninja-utils flag-o-matic multiprocessing xdg-utils
 
 case ${EAPI} in
-       5|6) inherit eutils multilib ;;
+       [56])
+               : ${CMAKE_MAKEFILE_GENERATOR:=emake}
+               inherit eutils multilib
+               ;;
+       *)
+               : ${CMAKE_MAKEFILE_GENERATOR:=ninja}
+               ;;
 esac
 
 EXPORT_FUNCTIONS src_prepare src_configure src_compile src_test src_install