Node-addon-api: change node-addon-api build to cmake

Created on 29 Dec 2018  路  14Comments  路  Source: nodejs/node-addon-api

This is not a request to change everything in one day, but a possible improvement/POC of the build.
What are your feelings about a cmake setup?

improvements:

  • get rid of node-gyp one day (like me, what I've read community is not very happy with it)
  • no config-only rigid builds
  • cmake features

    • build is code

    • cross-os compilation

    • actively maintained

    • standard build tool for C/C++ (support ninja/Makefile)

disadvantages:

  • maybe cannot drop node-gyp support for the first time

Other improvements are:

  • I could simplify how tests are compiled/executed: *.test.cc files are compiled, *.test.js files are executed, so simply add files
  • logging/documentation: I love to read code as documentation, so that I can understand how sth. works. With node-gyp it's like "understand node-gyp configuration or die", and with cmake it's easy to understand what happens, maybe not for a beginner to write, but to also to read and understand

All 14 comments

@DaAitch we need to ensure that CMake is available on all the machines of https://ci.nodejs.org/job/node-test-node-addon-api/. I'm totally in favour of switching to CMake though.

@gabrielschulhof: cool, so that should not be a big thing, right :-) ?

Well, it's a modification to the CI infrastructure. We need to see if a switch to CMake is already in work on https://github.com/nodejs/build/.

what I could found on nodejs and builds is:

@mhdawson has been involved to some issues. maybe he can help us here?

There has been some exploratory work to look at using cmake with node core, but its not gotten to the point where there is consensus or a view on when it might/might not happen.

I think it is interesting it exploring using cmake instead. Is it possible that we could support both at the same time?

@mhdawson I did some refactoring of the build, but in general if I hadn't remove the gyp files, we could support both the same time. No change of the sources, so: yes.

Can you share what it looks like with cmake support added? Would be good to look at the changes to better understand.

sure, it's already attached above: 98cc0c3120afa6aaa25516c277f4607349ebbfe6

Opened https://github.com/nodejs/TSC/issues/648 to rekindle the discussion for using cmake in node core.

@mhdawson would a PR makes sense, that touches nothing, but adds an experimental CMakeLists.txt?
Maybe we can run cmake build on CI as well?

The commit I did was a mix of many small things I found (maybe I will create a PR for them as well).

I'm not sure yet. It would be good to have a more complete picture on the suitability of cmake for building addons in general. A distinct PR might make it easier to see the changes that it introduces but I'm not sure we'd be ready to land it.

@mhdawson okay, so we can retrigger this after nodejs/TSC#648. I'll close this.

Can we revive this at all? Would anyone be interested in a PR that simply adds a CMakeList for the library, and a CI job that makes sure it builds, but we keep using gyp for now?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

langxiong picture langxiong  路  5Comments

romandev picture romandev  路  5Comments

alexisfrjp picture alexisfrjp  路  6Comments

mhdawson picture mhdawson  路  4Comments

felipezacani picture felipezacani  路  8Comments