Strictly speaking this flag isn't here to force a deterministic build, it's here to help us to make sure that no build metadata ends up in the build artifacts to help us guarantee a deterministic build.
(See the discussion in https://codereview.chromium.org/324403006/ for more details)
FTR, Nico said he'll take care of getting rid of __DATE__ and __TIME__ so this
new define will not be necessary for that.
On the other hand we may have issues with absolute path in __FILE__ and whatever
unforeseen C++ issue. This would require #ifdef'ing them out. This is not
something devs would want to do normally so this flag is off by default.
Eventually we'll want to fix the build system to not have to hack __FILE__ out
by ensuring they are *always* relative paths but until then, this variable can
be used to make progress
R=maruel@chromium.org, thakis@chromium.orgTBR=brettw@chromium.org
BUG=314403
Review URL: https://codereview.chromium.org/330813003
git-svn-id: http://src.chromium.org/svn/trunk/src/build@278053 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
There's more optimization done on a PGO build than on a regular one, this results in some "Unreachable code" warnings that we don't see normally.
But probably anything that this would catch that wouldn't be caught in a normal build isn't going to actually be a bug, so the incremental value of C4702 for PGO builds is likely very small and blocks the setup of the PGO bots.
BUG=380175
Review URL: https://codereview.chromium.org/315323002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@276737 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Change some targets to source sets. These are small ones that are currently depended on by other source sets. This avoids some duplicate symbols.
duplicated.
Fix some conditions around the touch_device in ui/base.
Lots of Skia build fixes. It turns out our skia library does not use the "util" target, and some of the files in "util" reference functions that it seems are never defined in any file. This removes the ones in our list that weren't in skia_library.gypi to make accessibility_unittests link.
Update gesture recogniser file lists.
BUG=377890
TBR=scottmg
Review URL: https://codereview.chromium.org/305993002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@274022 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
They are necessary otherwise grit won't define IDS_WEB_FONT_FAMILY and
IDS_WEB_FONT_SIZE from app_locale_settings.grd
Which is necessary, otherwise we get the following error when trying to
compile web_ui_util.cc:
../../ui/base/webui/web_ui_util.cc:130:28: error: 'IDS_WEB_FONT_FAMILY'
was not declared in this scope
../../ui/base/webui/web_ui_util.cc:131:26: error: 'IDS_WEB_FONT_SIZE'
was not declared in this scope
BUG=367591
TEST=gn gen out/Debug_gn && ninja -C out/Debug_gn ui_base
R=brettw@chromium.org
TBR=ben (for ui/base change)
Review URL: https://codereview.chromium.org/296933017
git-svn-id: http://src.chromium.org/svn/trunk/src/build@274019 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This adds ppapi-related targets except the tests to the GN build.
Did some minor tweaks to the .gypi ppapi lists. Some files were duplicated between the trusted and common lists which causes errors in GN (it doesn't uniquify the lists like GYP). Common is used in every place trusted is, so I just removed the duplicates from the trusted list.
Fixed some warnings in skia and tcmalloc. Added the ability to undefine NOMINMAX on Windows.
Fixed some src/ui Windows compilation issues.
BUG=
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/305513003
git-svn-id: http://src.chromium.org/svn/trunk/src/build@273016 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This is the GN version of build/java_cpp_template.gypi.
It defines a template that wraps an action_foreach that generates .java
files using the host C preprocessor.
The major difference in the GN version is that it takes all the
generated java files and zips them together in a single .srcjar. When
such a target is included in the srcjar_deps of a java library, the
.java files in the .srcjar will be treated much like files listed in
that libraries java_sources (particularly they will be compiled and
included in the .jar/.dex).
Depends on https://crrev.com/264773014/
BUG=359249
Review URL: https://codereview.chromium.org/264923007
git-svn-id: http://src.chromium.org/svn/trunk/src/build@272775 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Adds a protobuf target and a template for defining protos. This handles doing host builds of protoc when cross-compiling.
The command buffer sevice wants more optimization on Android, so this patch generalizes the solution. Normally Android, like Windows, optimizes for size. This now adds support on Android for speed optimization just like Windows does. Mac & Linux always optimize for speed.
Removes the declare_args call around the gcc_version. This was parameterized to be different if is_android was set, which isn't valid because build parameters can't vary across toolchains. Since this value is derived from the environment, I just removed the declare_args call.
BUG=
R=piman@chromium.org
Review URL: https://codereview.chromium.org/289953004
git-svn-id: http://src.chromium.org/svn/trunk/src/build@271941 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Parameterize webrtc enabling.
Add use_seccomp_pbf flag
Add a webkit version target
Work on ui/base GN build, especially on Windows. This target is a mess (in GYP). This patch tries to make it make a bit more sense while fixing the errors I found.
Fix ui/gl target for non-Linux platform. A bunch of X11 stuff was not parameterized.
Add unscaled resources target
BUG=
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/287343006
git-svn-id: http://src.chromium.org/svn/trunk/src/build@271724 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Adds a meta-target "//base/allocator" that forwards to tcmallor or nothing depending on the build configuration.
Write tcmalloc target definition.
Write base unit tests prefs, and some support targets from base.gypi.
Fix a bunch of added files in the base target that were exposed by linking the unit tests.
Removes toolkit_uses_gtk which was removed from the GYP build.
BUG=
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/288203003
git-svn-id: http://src.chromium.org/svn/trunk/src/build@271079 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This adds special handling for variables that begin with underscores, which is inspired by Dart. Such variables are not imported when doing an import, which gives .gni files a way to have intermediate private variables that won't pollute the scopes of the files that include them.
This also applies to the root build config, which can have private values now.
Adds some missing unused variable checks. This was disabled because processing imports would mean all imported variables were unused, and files not using all of them would get unused variable errors. This adds the option to mark merged values on a scope as used, which is used for imported values.
BUG=341738
R=cjhopman@chromium.org
Review URL: https://codereview.chromium.org/287693002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@271078 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Some minor tweaks in STL usage in GN itself to enable it to compile using the Android version of the STL. Enable this in the build (not so much because we need a GN binary on Android, but for build verification purposes).
Moved the executable_ldconfig config from the linux file to the gcc one since its shared between the Linux and Android builds. Added "-Bdynamic" and "-Wl,-z,nocopyreloc" to this on Android.
Moved some sysroot path components from sysroot.gni to android/config.gni (which sysroot uses) so it can be shared with the toolchain definitions.
Added the android_full_debug build flag. Made the "optimize off" mode of the build match the GYP build's "light optimization" on Android contingent on this flag.
Pulls out the optimize and optimize_max shared flags into one list to avoid duplication.
Adds a bunch of linker optimization flags that should be passed on non-Mac Posix platforms, and turns on dead code stripping for Mac builds.
Adds functionality to the gcc toolchain template to be able to insert strings before and after the libs. Adds a wrapper template for android toolchains that sets these accordingly to get the gross Android crtbegin/end files inserted in the right place on the linker line.
Made the android_ndk_root variable relative to the source root rather than the system root. Uses of this now rebase according to their own needs which makes some of the arguments a lot easier to follow.
Build file updates for base and libevent for Android. Implement ashmem library.
The only change on desktop linux is the addition of -Wl,--fatal-warnings to the linker line.
R=ajwong@chromium.org, cjhopman@chromium.org, scottmg@chromium.org
Review URL: https://codereview.chromium.org/275703003
git-svn-id: http://src.chromium.org/svn/trunk/src/build@270138 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Previously "gn args" printed build arguments. That has now moved to "gn args <outdir> --list" along with a new --short mode that's a bit more convenient for some uses.
Now "gn args" runs your editor on the build arguments for the given output directory, and re-generates the build given those arguments. This is an easier way to manage changing build arguments for a build (previously you would have to re-type everything or edit build.ninja manually).
"gn gen" now always uses the existing arguments for the given output dir, unless "--args" is manually specified (giving the old behavior of just using those). This also allows a more convenient way for a user to recover from a borked build (sincetimes I ran into a state where something was missing that prevent ninja from even starting enough to rebuild the build).
I removed the "show" and "refresh" ninja phony rules since the new commands cover those cases.
This patch adds some additional tracing to build startup since I noticed it was missing when trying to figure out why the args command was so slow (I fixed the main reason, it was with new code I added).
Added proper escaping for printing string values and unit tests for these.
Two minor build file fixes.
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/265693003
git-svn-id: http://src.chromium.org/svn/trunk/src/build@268042 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This adds extension detection for lower-case ".s" assembly files (used in NSPR) in addition to the existing handling of uppercase ".S" ones.
Minor fixes for build files for Mac for dependencies and files.
Proper handling of USE_NSS and addition of USE_OPENSSL_CERTS that match the GYP build.
R=rsleevi@chromium.org
Review URL: https://codereview.chromium.org/242173002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@265064 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This adds a template for using the jni_generator. Creates the
base_jni_headers target and updates the base target to depend on it and
actually use the sources that required it.
Adds //third_party/android_tools:cpu_features required by one of the
base files that also required jni.
Disable a bunch of third_party targets for Android builds.
BUG=359249
Review URL: https://codereview.chromium.org/237973002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@264695 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 does the net target. I started doing some more that are commented out at the bottom, and there are a few more after that do do. The deps of these targets started to build up to an unreasonable level and this should be a good checkpoint.
Fix grit rule.
Fix SSL dependent configs
Add TLD cleanup
Add gconf and gio targets for Linux.
Add sources filtering for ChromeOS, .rc, and .mm files. Remove built-in code that removes .rc and .mm files (this wasn't quite complete so causes problems).
BUG=
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/236713002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@263967 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This fixes enough issues so that we can compile and link some libraries, but
it is not yet a working build.
Work remaining:
- base needs JNI support ('base_jni_headers', etc.)
- we need to figure out what should link and/or be APKs to run the tests
- we need to adjust GN to only build in the host config, not the target config.
R=brettw@chromium.org, cjhopman@chromium.org
TBR=jam
BUG=360936
Review URL: https://codereview.chromium.org/227673008
git-svn-id: http://src.chromium.org/svn/trunk/src/build@263440 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This also removes some patterns from the sources assignment filter, and adds scary comments not to make it bigger. The GYP version of this is out of control so I want to set a clear policy of what is included and not.
I removed X-related stuff from the filter (there are only about 50 files around the tree) and added manual rules for the affected files.
BUG=
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/235983002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@263394 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This makes the GN build of Skia compile and adds it to the GN build.
Previously, the configuration of the GN Skia tried to match the confusing array
of skia targets. This new version dispenses with that and just adds all files
(except SSE ones) to one target. I'm not even sure if it's necessary to split
out the SSE ones, but it seems nice since that target will get more complicated
when we add Arm and MIPS support.
I audited the defines again and added some to the main build config that had
been added to the GYP build recently.
This improves some operator error messages that I found confusing when I had errors in my file.
BUG=
R=djsollen@google.com, scottmg@chromium.org
Review URL: https://codereview.chromium.org/214883005
git-svn-id: http://src.chromium.org/svn/trunk/src/build@262779 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This adds an error check when invoking templates which caused really confusing messages if the template invocation encountered an error (because we'd continue running).
Hooks up the provider for programatically defined variables in template invocations so those can be used.
Sets the current directory in a template invocation to be that of the invoking file.
No longer define the target-related programatic variables in an import. Using these in an import will give the directory relative to the import, which is probabyl not what you want.
Fix the Windows build by adding a missing library. Add a warning not to add more to the main list (this added .lib is pretty obscure).
BUG=
R=cjhopman@chromium.org
Review URL: https://codereview.chromium.org/226223006
git-svn-id: http://src.chromium.org/svn/trunk/src/build@262524 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
A bunch of mac builder bots are still on 10.6 (http://crbug.com/353529)
> roll clang 198389:202554
>
> This change contains several big changes, many of the caused by upstream
> llvm enabling c++11 in their codebase and thus having higher minimum
> requirements for their toolchain and runtime environment:
>
> * clang on OS X now requires libc++, which means it'll only run on OS X 10.7+,
> so change the deployment target from 10.5 to 10.7 (we were planning on
> requiring 10.8 or 10.9, see bug 335325, but since several people are waiting
> on a new clang, let's go to 10.7 only for now and do more as a follow-up)
> * On OS X, the compiler is only usable with libc++ if libc++ is checked out
> and `make install` is run, so do that for the phase 1 compiler.
> (Chrome doesn't use libc++ yet, so we don't do that for the bootstrapped
> compiler.)
> * clang on linux now needs libstdc++ 4.7+ which isn't present on precise.
> So we now include a newer libstdc++ in the compiler bundle (meaning
> this clang should still run on precise).
> * clang is broken for android at r202554. To unblock oilpan, merge three
> later changes into this roll, llvm r202793, r203601, and r203635
>
> Regular, less tricky clang roll stuff:
> * Disable the new warning -Wabsolute-value for now (crbug.com/351479
> for turning it on)
> * Disable -Wno-tautological-pointer-compare for libxml where it now
> fires.
> * Since this bundles a new version of the oilpan plugin, bump its suffix to _3
> * Change plugin code to track upstream api change
> * Remove plugin flag check-url-directory as that's now always on
>
> Due to the c++11 stuff, it's likely that this change will get reverted a few times.
>
> BUG=351479, 287029,341352,333968,335325
> TBR=hans@chromium.org
>
> Review URL: https://codereview.chromium.org/195623002TBR=thakis@chromium.org
Review URL: https://codereview.chromium.org/203313004
git-svn-id: http://src.chromium.org/svn/trunk/src/build@257620 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This change contains several big changes, many of the caused by upstream
llvm enabling c++11 in their codebase and thus having higher minimum
requirements for their toolchain and runtime environment:
* clang on OS X now requires libc++, which means it'll only run on OS X 10.7+,
so change the deployment target from 10.5 to 10.7 (we were planning on
requiring 10.8 or 10.9, see bug 335325, but since several people are waiting
on a new clang, let's go to 10.7 only for now and do more as a follow-up)
* On OS X, the compiler is only usable with libc++ if libc++ is checked out
and `make install` is run, so do that for the phase 1 compiler.
(Chrome doesn't use libc++ yet, so we don't do that for the bootstrapped
compiler.)
* clang on linux now needs libstdc++ 4.7+ which isn't present on precise.
So we now include a newer libstdc++ in the compiler bundle (meaning
this clang should still run on precise).
* clang is broken for android at r202554. To unblock oilpan, merge three
later changes into this roll, llvm r202793, r203601, and r203635
Regular, less tricky clang roll stuff:
* Disable the new warning -Wabsolute-value for now (crbug.com/351479
for turning it on)
* Disable -Wno-tautological-pointer-compare for libxml where it now
fires.
* Since this bundles a new version of the oilpan plugin, bump its suffix to _3
* Change plugin code to track upstream api change
* Remove plugin flag check-url-directory as that's now always on
Due to the c++11 stuff, it's likely that this change will get reverted a few times.
BUG=351479, 287029,341352,333968,335325
TBR=hans@chromium.org
Review URL: https://codereview.chromium.org/195623002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@257618 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This hooks up the rpath for Mac executables. This fixes a bug in iOS GYP generation where the architectures were specified as a string instead of a list.
Also fixes some base files that were out-of-sync from the GYP build.
BUG=345021
TBR=thakis
Review URL: https://codereview.chromium.org/179873008
git-svn-id: http://src.chromium.org/svn/trunk/src/build@253952 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This makes the -D defines for the default desktop Linux build of re2 in GN match that of GYP.
This moves the SSL configuration stuff into the root build directory. It's better to match the GYP build exactly for ease of landing even though this is a stupid dependency.
Fixes the help text that still references the implicit "gen" command (I removed this).
R=scottmg@chromium.org
Review URL: https://codereview.chromium.org/170533003
git-svn-id: http://src.chromium.org/svn/trunk/src/build@252981 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This is for the base shared library target on desktop Linux.
The remaining difference on Linux is that GYP's base build specifies -Wno-write-strings on Linux. This dates back to the first GYP file. I don't know why we would specify this for only base, and it seems not to trigger any warning without this flag, so I didn't add it.
This changes the pkg-config invocation from --libs to --libs-only-L and --libs-only-l. The output seems slightly different (--libs was producing an extra --export-dynamic for gmodule-2.0 that aren't present when invoking the other way, which is what the GYP build does).
R=thakis@chromium.org
Review URL: https://codereview.chromium.org/165873004
git-svn-id: http://src.chromium.org/svn/trunk/src/build@252409 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 stops doing the host build as a completely separate build and
instead identifies the proper host toolchain inside of the "regular"
build that we should use for host targets (if any). This should help
unify GN's concept of host/target builds with GYPs a bit more.
BUG=
Review URL: https://codereview.chromium.org/152683004
git-svn-id: http://src.chromium.org/svn/trunk/src/build@250689 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This properly sets the DEPLOYMENT_TARGET in the generated GYP file (previously this value wa salways hardcoded to empty -- whoops!).
Sets the simulator properly. Previously when not using an explicit SDK the Xcode generator would still end up with a simulator build. This turns the flag into a tri-state so gyp_chromium can set it explicitly when an SDK is specified, but otherwise we can trigger default behavior based on Xcode/Ninja.
TBR=scottmg
Review URL: https://codereview.chromium.org/155983003
git-svn-id: http://src.chromium.org/svn/trunk/src/build@249643 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
In GYP Mac, most targets got a default set of mac libraries by virtue
of depending on base, which due to a GYP bug pushed the libraries to
all targets depending on base, even separate shared libraries.
In GYP Windows the set of default libraries on Windows is global and
this keeps the same list and behavior.
The lists of libraries could use some cleanup, btu this patch just
attempts to keep the status quo in a cleaner way rather than fixing the
unreasonable list of libraries (especially on Windows).
R=scottmg@chromium.org, scottmg
Review URL: https://codereview.chromium.org/131513026
git-svn-id: http://src.chromium.org/svn/trunk/src/build@249600 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This hooks up Clang in the pure GN build (not the hybrid GYP mode).
Clang gave some warnings about compiler flags which made me realize that we were giving linker flags to the compiler in some cases. So I enhanced our pkg-config wrapper to to add libraries to the cflags (missing else), return ldflags separately, and also strip out -pthread which was getting included over and over.
BUG=
Review URL: https://codereview.chromium.org/147923010
git-svn-id: http://src.chromium.org/svn/trunk/src/build@248477 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Separates out some "SDK" related setup on Mac land Linux like we do on Windows. I'm trying to make the "compiler" BUILD file just compiler warnings and CPU options, and have system library stuff on the platform directories.
This adds the capability for GN to produce GYP files on Mac that vary according
to the GYP generator as well as target-vs-host. I added a bunch of logic to the
GN iOS build to set up stuff accordingly based on my current knowledge of
what's required.
Sadly, this means we now have an 8-way GN build (all combinations of
debug/release, host/target, and xcode/ninja). I did some refactoring of the GYP
code in GN to make this less unreasonable.
I checked that the GYP files look the way I want, but I didn't actually test
the resulting builds yet. There is still likely to be some conditions wrong or
things not being set properly. I'm going to follow up with a second pass based on actual testing.
I believe, however, that with this new GYP generator code in GN, we can express
in the .gn files what we need to do the iOS build.
Review URL: https://codereview.chromium.org/149163005
git-svn-id: http://src.chromium.org/svn/trunk/src/build@248476 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This hooks up detection for the "-arch" flag on Mac to set the GYP "ARCH" xcode variable. GN then removes the -arch argument from the compiler args, since GYP will then re-add it based on the ARCH value. Previously, not doing this resulting in mutliple "-arch" arguments to the compiler since GYP would always insert its own.
Disables some warnings on Windows for the re2 target to match the GYP build. The third warning (4018) that the GYP build sets is disabled globally so there's no need to do it for this target.
Hooks up some iOS SDK stuff.
BUG=336667
TBR=thakis@chromium.org
Review URL: https://codereview.chromium.org/141433015
git-svn-id: http://src.chromium.org/svn/trunk/src/build@247206 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This supports specifying the output_dir generator flag in the gn-generating-gyp
mode. The value of the output_dir flag is mapped to a gyp variable called gyp_output_dir
and a GN argument by the same name. References from gyp to gn-generated gyp files must
use this variable and references from BUILD.gn files must use the gn argument.
BUG=335760
TBR=brettw for build/config/BUILDCONFIG.gn (looked at in person)
Review URL: https://codereview.chromium.org/142223002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@245800 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This emulates optimize=max from GYP. One difference is that this applies for all build types. The GYP one only applied optimize=max for the Official build. I can't think of why this should be the case, and it seems confusing to have such arbitrary official build differences.
R=bbudge@chromium.org
Review URL: https://codereview.chromium.org/138903002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@244839 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This makes make_global_settings closer to the GYP version. Previously it had relied on GYP concatenating two lists when running with goma, but it doesn't actually behave this way, resulting in unexpected output.
TBR=scottmg
Review URL: https://codereview.chromium.org/132833002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@244104 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Adds arm version and some android configuration build flags.
This adds most of the logic from common.gypi to the Android GN build.
This is currently missing the crtbegin/end stuff and won't actually make real Android builds. The logic in this patch is just the initial conversion that will require testing and several more passes of fixes.
R=torne@chromium.org, torne
Review URL: https://codereview.chromium.org/121173005
git-svn-id: http://src.chromium.org/svn/trunk/src/build@243681 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
Refactors the toolchain definitions by adding an include file to help defining GCC toolchains. This eliminates most of the duplication on Linux and Android. Adds make_global_settings for most Linux and Mac builds that should match the GYP build (this will require some more passes to get every place to be an exact match).
Fixes Android build issues in WebKit. Fixes the definition of is_android.
Renames the Linux toolchains to use the GN name of the CPU architecture so one can refer to them without conditionals. Remove conditionals from BUILDCONFIG.gn
Adds the gyp_header variable to the help (it wasn't getting inserted into the list of available variables).
R=thakis@chromium.org
Review URL: https://codereview.chromium.org/117863003
git-svn-id: http://src.chromium.org/svn/trunk/src/build@242674 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This adds support similar to the GYP scripts for running pkg-config in the presence of sysroots.
It also adds the linker flags by calling the existing horrible sysroot_ld_path.sh shell script that extracts stuff from the sysroot's configuration.
With this change, official 32-bit linux builds work in the checked in 32-bit Debian sysroots.
R=piman@chromium.org
Review URL: https://codereview.chromium.org/116803003
git-svn-id: http://src.chromium.org/svn/trunk/src/build@241397 4ff67af0-8c30-449e-8e8b-ad334ec8d88c
This passes the official build and branding flags to the GN build. Currently, this is used to hook up the proper sysroot for compiling on Linux for official builds. The 32-bit branded build does not compile currently due to pending pkgconfig issues.
Fix a bug where assertions in the build config would not get reported properly. This was because I forgot to actually throw the error at the toplevel.
BUG=
R=piman@chromium.org
Review URL: https://codereview.chromium.org/115643002
git-svn-id: http://src.chromium.org/svn/trunk/src/build@240918 4ff67af0-8c30-449e-8e8b-ad334ec8d88c