In order to run both the visual studio tools and the binaries built
by them (and ninja), we need to ensure that the VS runtime DLLs
are available in the path.
In the GYP build, we accomplish this by copying them into the
Debug and Debug_x64 dirs as appropriate inside the gyp_chromium
script.
In the pure-GN build, then, things would be broken, so we need to
modify the GN build to do the copy as well, or we need to inject
a step somewhere that happens after GN runs but before Ninja tries
to run (since none of the toolchain binaries will work).
This patch accomplishes this by calling out to vs_toolchain.py to
copy the DLLs as neede when the toolchain is defined. This is somewhat
less than ideal (makes 'gn gen' slower) but seems better than forcing
devs to have to run an additional command.
In addition, the GYP build writes targets into Debug and Debug_x64
concurrently. This doesn't really carry over into GN correctly, and
we probably only ever want to write targets into Debug and Debug/64
(or some such).
However, the way the toolchains are currently implemented, it's not
clear if this really works and the interplay between 32-bit and 64-bit
is weird (we apparently normally "force" 32-bit even if we set cpu_arch
to 64-bit, and require you to specify force_win64). To work around this
and make sure that we copy the right DLLs for the right arch into the
outer Debug/ directory, this patch temporarily disables the cross-arch
part of the build, forcing the host_toolchain to match the target_toolchain.
This likely means that 'cpu_arch="x86"' works (the default), but the 'host'
binaries like image_diff and mksnapshot will be compiled in 32-bit mode,
not 64-bit mode. 'cpu_arch="x64" force_win64=true' should also work, and
produce all-64-bit binaries. 'cpu_arch="x64"' does not work at all and
won't until we can clean up the above stuff.
R=scottmg@chromium.org, brettw@chromium.org
BUG=430661
Review URL: https://codereview.chromium.org/722723004
Cr-Original-Commit-Position: refs/heads/master@{#304310}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 0b95195e49489b7a4d87048d2ce4b747173a5b8a
This uses the code from GYP to compute the maximum number of concurrent links
to use in the link pool, and sets this value in the toolchains.
Review URL: https://codereview.chromium.org/548633004
Cr-Original-Commit-Position: refs/heads/master@{#294007}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 937a6d51df85cd7e338b952aeacb03bf7e5726c2
Currently this is either a list or a string. However, this is causing some problems because templates can't add to the invoker's visibility list without knowing if the original is a string or a list.
In an effort to make this consistent, I'm converting all visibiltiy to be lists, and will remove support for strings in a future build.
This exempts cld from header checking since it was confusing GN's header checker. It adds a ppapi header target as well that will be used by libyuv (that requires a roll).
TBR=scottmg
Review URL: https://codereview.chromium.org/544423002
Cr-Original-Commit-Position: refs/heads/master@{#293638}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 9af4262ad8020658ee04c07d13a2617af64147b1
Previously it put all toolchains' main link output into the root build directory, which doesn't work when there are multiple toolchains generating the same targets.
BUG=405686
R=jamesr@chromium.org
Review URL: https://codereview.chromium.org/502163002
Cr-Original-Commit-Position: refs/heads/master@{#291927}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: d40ebfebd18d8fc41a0f5af61d28b6c252b66bea
This pulls buildtools to get GN 290714 and updates to the new style of toolchain definitions in that revision.
Unfortunately, this new version doesn't support getting the outputs of excutables, which made the android unit test template a bit less automatic. We can consider how to best fix this in the future.
R=jamesr@chromium.org
Review URL: https://codereview.chromium.org/485833003
git-svn-id: http://src.chromium.org/svn/trunk/src/build@290894 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Previously the GN Windows build specified the symbol file $pdbfile but this variable was never defined, so the command like would just say "/Fd" and the default one would be used.
This patch defines some per-target variables in the ninja file for the toolchain to use. The Windows toolchain uses these to construct C- and C++-specific pdb files (the MS tools can't share between these two) for the current target.
BUG=
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/406453002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@284137 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This fixes a lot of minor mistakes (mostly missing/extra files and flags) for the Mac GN build.
I separated out some clang flags into a config for extra clang warnings. Several of the third party libraries needed to remove this.
Removes the use_nss flag and uses !use_openssl. This is a result of discussion with rsleevi.
Removes extra duplicate net build file from secondary tree.
ui/gesture_events seems to be getting compiled in GN with more strict warnings than in GYP. Rather than fix this, I fixed the warning in the gesture recognizer unit test. It was returning a const copy (the const is pointless when you're copying).
This also removes a bunch of old GYP integration stuff that was left in the GN build.
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/239543013
git-svn-id: http://src.chromium.org/svn/trunk/src/build@264626 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This is enough for this to work OK:
[gn-2013]d:\src\cr\src>gn gen out_gn
[gn-2013]d:\src\cr\src>ninja -C out_gn gn
[gn-2013]d:\src\cr\src>out_gn\gn gen out_gn2
[gn-2013]d:\src\cr\src>ninja -C out_gn2 gn
...
[297/297] LINK gn.exe
I'm not sure if we need all the deleted stuff for something
else, but I guess we can revive it when we need it.
(There's some dependency problem with linking atm, as
"ninja -C out_gn gn" always relinks, but I think it's unrelated.)
R=brettw@chromium.org
BUG=297677
Review URL: https://codereview.chromium.org/204663004
git-svn-id: http://src.chromium.org/svn/trunk/src/build@258327 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Updates all rebase_path calls to use the new parameter ordering.
Use the new getenv function and delete the Python script we had to get the home directory.
Takes advantage of the new ability to have the default value of declare_args blocks be dependent on other values. This simplifies some code.
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/164773005
git-svn-id: http://src.chromium.org/svn/trunk/src/build@252065 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This makes gyp_chromium pass defines defined via -D on the command line to GN.
Fixes double-escaping of strings from supplemental.gypi files.
Pass use_goma to the GN build.
Handle "use_goma" and "use_goma=1" (same for other boolean values). Previously values with no equals sign were getting converted to 'true', which doesn't match '1' which we look for.
Output goma wrappers in the GYP header for Windows toolchains.
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/123463005
git-svn-id: http://src.chromium.org/svn/trunk/src/build@243446 4ff67af0-8c30-449e-8e8b-ad334ec8d88c