Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
cargo should be the main build frontend #2608
Background: Deno has a relatively complex build system. It involves building various programs, running them, and using their output in further steps (V8 snapshots). We use the GN/Ninja build system to define this both because it solves these tasks well and because V8 uses it. Over time we have integrated more tightly with the Rust ecosystem by making "cargo check", "cargo build", and "cargo publish" work - but only superficially. When you run "cargo build", it calls into GN/Ninja for the bulk of the work, and only Rust compilation and final linking is done by cargo. The default build frontend is tools/build.py, which calls GN/Ninja directly. build.py is what we develop with and what we use to produce the release. When you call build.py, the rust is compiled and linked by our code.
We could simplify our code base and better integrate with the Rust ecosystem, if we could remove the GN/Ninja/build.py frontend and instead only use "cargo build". This is easier said than done. I'm starting this issue to track progress towards this eventual goal.