gyp-next icon indicating copy to clipboard operation
gyp-next copied to clipboard

[Discussion] should we make CMake support as core function

Open gengjiawen opened this issue 6 years ago • 10 comments

Related: https://github.com/nodejs/TSC/issues/648.

If so, I want to add check to enhance this.

gengjiawen avatar Feb 13 '19 14:02 gengjiawen

Not sure why to discuss this in node-gyp, wouldn't we need a node-cmake to use cmake for native modules?

In https://github.com/nodejs/TSC/issues/648 there seems to be consensus that the build system for node core doesn't need to be the same for native modules. I don't think we will be able to stop supporting node-gyp soon, even if we move to something else there will probably be modules that will take a long time to update.

In my opinion, it would be great if we could find the resources to make Gyp.js the solution, not breaking anything in the ecosystem and not depending on anything besides Node.

joaocgreis avatar Feb 13 '19 16:02 joaocgreis

Not sure why to discuss this in node-gyp, wouldn't we need a node-cmake to use cmake for native modules?

https://github.com/cmake-js/cmake-js already exists for native modules.

richardlau avatar Feb 14 '19 01:02 richardlau

Not sure why to discuss this in node-gyp, wouldn't we need a node-cmake to use cmake for native modules?

I mean the CMake files for node itself. node-gyp can gernerate CMake files, but not tested for nodejs repo.

CMake function is defined in https://github.com/nodejs/node-gyp/blob/master/gyp/pylib/gyp/generator/cmake.py.

gengjiawen avatar Feb 14 '19 15:02 gengjiawen

Not sure why to discuss this in node-gyp, wouldn't we need a node-cmake to use cmake for native modules?

I mean the CMake files for node itself. node-gyp can gernerate CMake files, but not tested for nodejs repo.

CMake function is defined in https://github.com/nodejs/node-gyp/blob/master/gyp/pylib/gyp/generator/cmake.py.

Then as @joaocgreis pointed out this discussion item is in the wrong place. This repository is for the node-gyp module used to compile native addons.

richardlau avatar Feb 14 '19 15:02 richardlau

I see. It should be in gyp then, though it's maintained by google.

gengjiawen avatar Feb 14 '19 15:02 gengjiawen

I see. It should be in gyp then, though it's maintained by google.

@refack Whatever happened to https://github.com/nodejs/admin/issues/247?

richardlau avatar Feb 14 '19 15:02 richardlau

For anyone want to try cmake, you can change the code here, change it to argv.push('-f', 'cmake') : https://github.com/nodejs/node-gyp/blob/2592036261ec588689e07072e1bef31993a9d7ac/lib/configure.js#L228-L240

gengjiawen avatar Jul 28 '19 03:07 gengjiawen

Also, you can directly use node-gyp configure -- -f cmake

gengjiawen avatar Jul 28 '19 03:07 gengjiawen

I am thinking make cmake-support more offcial, reopening this

Related: https://github.com/orgs/nodejs/teams/collaborators/discussions/78

gengjiawen avatar Oct 27 '19 16:10 gengjiawen

@gengjiawen if you want to champion this then I'd support it. It's just something that needs people and there's no extra bandwidth here in the existing team to extend to this. We can bolster the test suite and CI to make sure it works nicely though.

Some things to be aware of when deciding to invest in this though:

  1. https://github.com/cmake-js/cmake-js is relatively popular and I expect it to gain in popularity. People are already switching their addon builds to it and IMO that kind of diversity is a good thing.
  2. We want to push toward gyp.js in the near future. The plan is to put out a release with an opt-in --gypjs and iterate on its compatibility to where it's opt-out and eventually remove gyp.py. Currently gyp.js depends on ninja.js for builds, having CMake output would be a nice addition to it.

rvagg avatar Oct 27 '19 23:10 rvagg