On Thu, Aug 16, 2018 at 12:01 PM Dan Pike <danny.p...@gmail.com> wrote:
> I am very interested in helping you sort out the Windows builds > Cool! > , and I do appreciate that you have to support many operating systems. > However, I am worried that I don’t understand what is going on inside those > black boxes (“gclient”, “ninja” etc). > I hope that you won't need to understand their internals. They generally do work on Windows, and how to get them to work should mostly be documented *somewhere* (e.g. in the Chromium docs I've linked to before), so it mostly comes down to ensuring that the V8-specific documentation is up to date. There's also "gclient help", and https://ninja-build.org/manual.html. > Many other cross-platform projects seem to be happy to work with using > cmake-based build environments along with detailed descriptions of the > dependencies. In my (admittedly somewhat limited) experience, trying to > maintain custom tools that people don’t understand often leads to more > problems than it solves, unless you are able to put in a lot of effort to > make them cope with all the ways that people work. For everything else, I > prefer to KISS and spend all of that effort on good documentation, instead. > > > > So, back to the underlying issue… > > > > With your detailed understanding of the internals of the depot tools, can > you explain what they are doing that you can’t do with “git –recursive” and > “cmake”? > I don't have a detailed understanding of the internals of depot_tools, I just use them. I trust the people who chose our tools to have carefully evaluated all options, and to have had good reasons for their decisions. Most technical decisions are tradeoffs where every option has pros and cons. I do have some high-level idea about what problems our tools are solving. One big concern is speed, because it impacts developer productivity and morale. Chromium (and V8) used to use GYP to generate project files, which was replaced by GN mostly for speed reasons. Back then, someone actually measured cmake's speed <https://groups.google.com/a/chromium.org/forum/#!topic/gn-dev/mpvZRle6T0c> for generating .ninja files for Chromium: GN: 2 seconds (nowadays; back then it wasn't far enough along yet) GYP: 51 seconds (in late 2013, would probably take longer today since the project has grown) CMake: 2:24 minutes Why ninja? Speed. See here <https://ninja-build.org/> and here <https://ninja-build.org/manual.html#_introduction>. For some other benefits, see also here <https://lwn.net/Articles/706404/>. Why gclient? Well, we already used it before we switched to git. I believe that migrating to git submodules has been investigated at some point, but I don't know what the status of that is. Do you also understand why, on my machine, ninja appears to build > everything, all the tests pass and d8 works but it: > > > > 1. produces two libraries (v8_libplatform.lib and v8_libbase.lib) that > Microsoft Visual Studio tells me are corrupt, and > 2. doesn’t produce a v8.dll at all, as far as I can tell > > Do you have "is_component_build = true" in your args.gn? Run "gn args out/<your_directory>" to check/edit. For release builds, static linking is the default, so no .dll will be created. > > 1. > > ? > > > > I’d also love to be able to experiment with different compiler settings, > e.g. whether to use static or dynamic runtime. How do I do that with v8gen? > > > > Dan > > > > -- > -- > v8-dev mailing list > v8-dev@googlegroups.com > http://groups.google.com/group/v8-dev > --- > You received this message because you are subscribed to the Google Groups > "v8-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to v8-dev+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- -- v8-dev mailing list v8-dev@googlegroups.com http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.