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.

Reply via email to