commit:     40d24edc8aa68a8a1ce5978330513a1c07c91ab1
Author:     David Seifert <soap <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 15 00:03:00 2018 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Dec 10 21:54:03 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=40d24edc

cmake-utils.eclass: Make ninja default backend in EAPI >= 7

* 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 <AT> gentoo.org>

 eclass/cmake-utils.eclass | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/eclass/cmake-utils.eclass b/eclass/cmake-utils.eclass
index 73e7f0b73ae..30ee97b99a3 100644
--- a/eclass/cmake-utils.eclass
+++ b/eclass/cmake-utils.eclass
@@ -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

Reply via email to