[OE-core] [RFC PATCH] cmake: use Ninja backend instead of Make

Randy MacLeod randy.macleod at windriver.com
Wed Jan 17 20:57:26 UTC 2018


On 2018-01-17 11:18 AM, Otavio Salvador wrote:
> On Tue, Jan 16, 2018 at 11:25 AM, Ross Burton <ross.burton at intel.com> wrote:
>> The Ninja backend is faster than Make for large projects (takes three minutes
>> off webkitgtk:do_compile for me), so use it by default.
>>
>> Signed-off-by: Ross Burton <ross.burton at intel.com>
> 
> I tried to test this but it did not apply in master. Could you rebase it?
> 

On my 64+64 core system that is shared, it reduced a webkit compile
from ~ 17 minutes to ~12 minutes for just the compile stage. YMMV.

$ cat webkit-before-compile.log
3.29user 0.50system 17:39.98elapsed 0%CPU
   (0avgtext+0avgdata 28532maxresident)k
0inputs+176outputs (0major+16335minor)pagefaults 0swaps


$ cat webkit-after-compile.log
2.70user 0.47system 12:09.24elapsed 0%CPU
    (0avgtext+0avgdata 28292maxresident)k
0inputs+160outputs (0major+14634minor)pagefaults 0swaps

I'm going to try to build world (oe-core + meta-oe + ...).


Octavio, it's a two line change! :)
This applied to master for me:

commit 3914c66f6e7123a64ab73e2b6707452bbfd10d02
Author: Ross Burton <ross.burton at intel.com>
Date:   Wed Jan 17 13:09:40 2018 -0500

     cmake: use Ninja backend instead of Make

     The Ninja backend is faster than Make for large projects
     (it takes three minutes off webkitgtk:do_compile for example)
     so use it by default.

     Acked-by: Randy MacLeod <Randy.MacLeod at windriver.com>
     Signed-off-by: Ross Burton <ross.burton at intel.com>

diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass
index a4079dab0d..c46117acde 100644
--- a/meta/classes/cmake.bbclass
+++ b/meta/classes/cmake.bbclass
@@ -1,7 +1,7 @@
  # Path to the CMake file to process.
  OECMAKE_SOURCEPATH ??= "${S}"

-DEPENDS_prepend = "cmake-native "
+DEPENDS_prepend = "cmake-native ninja-native "
  B = "${WORKDIR}/build"

  # We need to unset CCACHE otherwise cmake gets too confused
@@ -117,7 +117,7 @@ cmake_do_configure() {
  		oecmake_sitefile=
  	fi

-	cmake \
+	cmake -GNinja \
  	  $oecmake_sitefile \
  	  ${OECMAKE_SOURCEPATH} \
  	  -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \

-- 
# Randy MacLeod.  WR Linux
# Wind River an Intel Company



More information about the Openembedded-core mailing list