aboutsummaryrefslogtreecommitdiffhomepage
path: root/gn
Commit message (Collapse)AuthorAge
* GN: add is_official_buildGravatar mtklein2016-09-14
| | | | | | | | | | | | | | | | ... and use it to control debug symbols and SK_ALLOW_STATIC_GLOBAL_INITIALIZERS. This will most directly have the effect of disabling GLProgramsTest and a bunch of similar failing Vk tests on Android. Hopefully this makes the N7 trybot go green, keeping the N5 trybot green. Just running the N10 for fun. (is_official_build is how Chrome terms this sort of ReleaseForReal build.) BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2340723003 Review-Url: https://codereview.chromium.org/2340723003
* GN: Android Vulkan supportGravatar mtklein2016-09-14
| | | | | | | | | | | | | | | | | | Android's the easiest place to start supporting Vulkan, so it's up first. ndk_api becomes user-specifiable so that the Vulkan bots can kick it up to 24, the first release supporting Vulkan. The defaults remain the same: 18 for 32-bit and 21 for 64-bit, the first release supporting 64-bit. To test this, I set ndk_api=24 and skia_use_vulkan=true in GN, then $ ninja -C out dm; and droid out/dm --config vk --src gm Seems to work! Bot scripts to follow. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2336343002 Review-Url: https://codereview.chromium.org/2336343002
* GN: add a helper script for running Android buildsGravatar mtklein2016-09-08
| | | | | | | | | | | | Think of this as the spiritual equivalent of platform_tools/android/bin/android_run_skia, but for GN and easier to type. Cutting down the debug symbols makes Android builds about 1/4 the size. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2323833002 DOCS_PREVIEW= https://skia.org/user/quick/gn?cl=2323833002 Review-Url: https://codereview.chromium.org/2323833002
* GN: add sanitize argGravatar mtklein2016-09-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Attempt to take over all *SAN builds. MSAN has a lot of coordination required between gn/BUILD.gn and gn_flavor.py. I'd like to follow up to move more of this into gn/BUILD.gn, to make it easier to use locally. The compile steps should be much faster now. We no longer build CMake and Clang for every run, instead using the clang_linux CIPD package. This removes the need for all the third_party/externals/llvm/... dependencies. Similarly, since we're using the clang_linux package, we no longer depend on Chrome's Clang, and thus no longer need to sync chromium on these bots. Instead of packaging up MSAN libraries and llvm-symbolizer in the compile output, I have the test / perf bots also depend on the clang_linux package. These do not vary from build to build. No more need for the xsan.blacklist -include hack: Clang, GN, and Ninja all track changes to xsan.blacklist without our help. This has the incidental effect of upgrading the compiler used by *SAN bots from Clang 3.8 to Clang 3.9. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2289343002 Review-Url: https://codereview.chromium.org/2289343002
* GN: default to -O1Gravatar mtklein2016-09-07
| | | | | | | | | | | | | | | | | | | In a GN world we are no longer tied to the Debug/Release dichotomy of GYP, and extra_cflags makes it trivially easy to override any flags we set by default. These two together mean we don't have to make the default Debug build pointlessly unoptimized. -O1 takes negligibly longer to compile than -O0, doesn't make debugging difficult, and the code is considerably better. DM runs ~4x faster this way. Backstory: I just re-noticed we do this for our Debug MSAN builds, which has had a serious wall-time slimming effect. I was about to restore it to my GN MSAN builds when I realized, hey, maybe we should do this for all builds. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2322753002 Review-Url: https://codereview.chromium.org/2322753002
* Move uils and sksl to a common sources GYP file.Gravatar brettw2016-09-06
| | | | | | | | | | | | | | | This is for the coalescing of sources in one GYP file to improve GN runtime. If this is successful, the other sources lists will also be merged into this one file. Inlines "../src" and "../include" for skia_source_dir and skia_include_dir. Evaluating these with GYP's variable expansion is annoying since I think another layer of nesting is required. Coding these explicitly is also more clear. This used to be required because Chromium would reference these .gypi files directly with a different path, but this no longer happens. Removes the chromium defines gypi which is no longer referenced. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2302723005 Committed: https://skia.googlesource.com/skia/+/39f7a10a04a914384944d8bf62621144ac4eeaa3 Review-Url: https://codereview.chromium.org/2302723005
* Revert of Move uils and sksl to a common sources GYP file. (patchset #1 id:1 ↵Gravatar caryclark2016-09-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | of https://codereview.chromium.org/2302723005/ ) Reason for revert: The broke the PDFium build. See https://build.chromium.org/p/client.skia.compile/builders/Build-Ubuntu-GCC-x86_64-Release-PDFium/builds/2094 Original issue's description: > Move uils and sksl to a common sources GYP file. > > This is for the coalescing of sources in one GYP file to improve GN runtime. If > this is successful, the other sources lists will also be merged into this one > file. > > Inlines "../src" and "../include" for skia_source_dir and skia_include_dir. Evaluating these with GYP's variable expansion is annoying since I think another layer of nesting is required. Coding these explicitly is also more clear. This used to be required because Chromium would reference these .gypi files directly with a different path, but this no longer happens. > > Removes the chromium defines gypi which is no longer referenced. > > GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2302723005 > > Committed: https://skia.googlesource.com/skia/+/39f7a10a04a914384944d8bf62621144ac4eeaa3 TBR=mtklein@chromium.org,brettw@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. Review-Url: https://codereview.chromium.org/2317683002
* Move uils and sksl to a common sources GYP file.Gravatar brettw2016-09-02
| | | | | | | | | | | | | | This is for the coalescing of sources in one GYP file to improve GN runtime. If this is successful, the other sources lists will also be merged into this one file. Inlines "../src" and "../include" for skia_source_dir and skia_include_dir. Evaluating these with GYP's variable expansion is annoying since I think another layer of nesting is required. Coding these explicitly is also more clear. This used to be required because Chromium would reference these .gypi files directly with a different path, but this no longer happens. Removes the chromium defines gypi which is no longer referenced. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2302723005 Review-Url: https://codereview.chromium.org/2302723005
* Include $extra_ldflags in link descriptions.Gravatar mtklein2016-09-02
| | | | | | | | | I overlooked this this morning. Not hugely important, but nice to see. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2303933002 Review-Url: https://codereview.chromium.org/2303933002
* Move Skia GN sources to a separate .gni file.Gravatar brettw2016-09-01
| | | | | | | | | | | | | | This file will be imported by Chrome to access the sources lists. Once Chrome is updated to use this file, changes to the skia .gypi layout can be done entirely within the skia repository as long as the resulting lists produced by the new .gni file have the same name. Marks skia_for_chromium_defines as obsolete and moves the definition into the new .gni file. We can remove the .gypi file when Chrome is updated. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2302803005 Review-Url: https://codereview.chromium.org/2302803005
* GN: add extra_ldflagsGravatar mtklein2016-09-01
| | | | | | | | | This is mostly just handy for hacking around while building out other GN features. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2300963003 Review-Url: https://codereview.chromium.org/2300963003
* GN: release -> -O3, to match GYPGravatar mtklein2016-08-29
| | | | | | | | | | -O3 does trigger some important compiler optimizations that -Os does not, like autovectorization. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2288813002 Review-Url: https://codereview.chromium.org/2288813002
* Roll GNGravatar mtklein2016-08-29
| | | | | | | | | This picks up https://chromium.googlesource.com/chromium/src/tools/gn/+/efc976e5029419fde92111ce52f913c61fb9553c, which means we don't need to create a link_pool any more. The default behavior is unlimited linking, what we were asking for explicitly. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2288253002 Review-Url: https://codereview.chromium.org/2288253002
* GN: support compiler_prefix, use it for ccache on bots.Gravatar mtklein2016-08-26
| | | | | | | | | | | | | | | | | This makes it considerably easier to use ccache with the Android NDK. You can now just set compiler_prefix = "ccache" ndk = "/path/to/ndk" and we'll use the NDK clang, wrapped with ccache. The name compiler_prefix is stolen from / compatible with Chrome. If you have ccache, you can just always leave compiler_prefix="ccache" enabled. This should make it an unusual thing for humans to have to change cc or cxx. GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2281163002 Review-Url: https://codereview.chromium.org/2281163002
* GN: mac host and armv7 targetGravatar mtklein2016-08-26
| | | | | | | | | | | Just when I thought it wouldn't be useful to override ar... Tested by building 32- and 64-bit DM on my MBP and running it on my N5x. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2279703003 Review-Url: https://codereview.chromium.org/2279703003
* GN: AndroidGravatar mtklein2016-08-25
| | | | | | | | | | | | | | | | Once you have downloaded an android NDK, you can set the ndk GN arg to use it. E.g. my gn.args looks like: is_debug = false ndk = "/opt/android-ndk" This should be enough to get you going for an arm64 build. You ought to be able to tweak that to other architectures by changing target_cpu to "arm", "x86", "x86-64", etc. That won't quite work until I follow this up a bit, but the skeleton is there. This is enough to get me compiled, linked, and running to completion on my N5x. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2275983004 Review-Url: https://codereview.chromium.org/2275983004
* GN: miscGravatar mtklein2016-08-24
| | | | | | | | | | | | | | | - Use options' template pattern for opts too. - Simplify opt's and options' configs... they should all be the same. - When building a static-library component in our GN environment (i.e. libskia.a), make it a complete static lib, fully containing its transitive deps. - It has not proved useful to override ar. TBR=jcgregorio@google.com BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2278673002 Review-Url: https://codereview.chromium.org/2278673002
* include extra_cflags* in the step descriptionGravatar mtklein2016-08-19
| | | | | | | | | | This keeps them visible on the bots. E.g. https://luci-milo.appspot.com/swarming/task/30b9147a09f2ac10/steps/ninja/0/stdout BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2254733008 Review-Url: https://codereview.chromium.org/2254733008
* Add executable bit and shebang to python filesGravatar anmittal2016-08-18
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2253373002 Review-Url: https://codereview.chromium.org/2253373002
* GN: make current_cpu workGravatar mtklein2016-08-16
| | | | | | | | | Then we can use it to remind ourselves that SSE and AVX are x86-only. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2247413003 Review-Url: https://codereview.chromium.org/2247413003
* GN: add extra_cflags et al.Gravatar mtklein2016-08-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adding flags to the end of cc or cxx is pretty useful, but these always end up on the command line before the GN generated flags, thus setting defaults that GN will override. For full flexibility we want to be able to add flags after the flags GN has added, so that custom flags can override _it_. I've updated the Fast bots with an example here: if we said cc="clang -O3 ...", that '-O3' would be overriden later by the default Release-mode '-Os'. By putting it in extra_cflags, we get the last word: our '-O3' overrides the default '-Os'. Another good use case is a hypothetical Actually-Shippable-Release mode. Our Release mode bundles in tons of debug symbols via '-g'. libskia.a is about 10x larger than it needs to be when built that way, but it helps us debug the bot failures immensely. To build a libskia.{a,so} that you'd really ship, you can now set extra_cflags="-g0" to override '-g'. You could set '-march' flags there too, '-fomit-frame-pointer', etc. There are lots of flags that won't matter where they end up in the command line. To keep everything simple I've put them in extra_cflags with the rest. This means the only time we change 'cc' or 'cxx' in our recipes is to prefix 'ccache'. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2241263003 Review-Url: https://codereview.chromium.org/2241263003
* Roll GN: gn format is --in-place by defaultGravatar mtklein2016-08-10
| | | | | | | | | As usual, might as well roll, and this new behavior is a small convenience. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2231833002 Review-Url: https://codereview.chromium.org/2231833002
* spin off easy stuff from Herb's windows GN CLGravatar mtklein2016-08-04
| | | | | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2209533004 No public API changes. TBR=reed@google.com Review-Url: https://codereview.chromium.org/2209533004
* GN: build sfntly, icu, harfbuzzGravatar halcanary2016-08-03
| | | | | | | BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2200833010 Review-Url: https://codereview.chromium.org/2200833010
* GN: get echo-headers sources via exec_scriptGravatar mtklein2016-08-02
| | | | | | | | | | | | | | | | | exec_script runs every time gn does, which is explicitly on every one of our bot runs. That should be enough to obviate the .git/logs/HEAD hack. Easiest way to do this was to swap around find.py's argument order to allow multiple search directories. This is the root of all the .gyp changes. This moves the blacklist into BUILD.gn, which I think is nice. It expands it a little as we're now searching recursively, into include/gpu/vk which we can't include safely without the Vulkan SDK. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2205903004 Review-Url: https://codereview.chromium.org/2205903004
* GN: only include headers in echo_headers.pyGravatar mtklein2016-08-01
| | | | | | | | | This keeps things like VIM .swp files out of skia.h. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2202643002 Review-Url: https://codereview.chromium.org/2202643002
* GN: components as static library instead of source setGravatar mtklein2016-07-29
| | | | | | | | | | | This also puts the .a in the top-level of the ouptut directory, just like we do for .so files. It's less required than for .sos, but it does make it easier to find the .a. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2197633002 Review-Url: https://codereview.chromium.org/2197633002
* GN: add abbreviated versions of the command line as descriptions.Gravatar mtklein2016-07-28
| | | | | | | | | | | | | This should help make the bot logs a little easier to read. (On the console this wasn't much of a big deal, as Ninja auto-abbreviates when printing to an interactive console.) As usual, Ninja will print the full command when a task fails. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2188263002 Review-Url: https://codereview.chromium.org/2188263002
* Turn on flags to enforce SK_API.Gravatar mtklein2016-07-27
| | | | | | | | | | | | | | | | These flags hide symbols that are not marked with SK_API when linked into a shared library. There's nominally no effect on static linking, but I'm pretty sure the Mac linker takes some advantage of this too to run faster. This makes component-build DM no longer link: it uses many non SK_API APIs. Fiddle in contrast is just fine with our public APIs, so no need to restrict that. It'll be fun finding out which of our other tools go which ways. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2180383003 Review-Url: https://codereview.chromium.org/2180383003
* GN: fixes for MacGravatar mtklein2016-07-27
| | | | | | | | | | | | | | - Make fiddle build on Mac (skipping GL). - Now that we're building in SkCodec, we depend on libpng and libjpeg-turbo unconditionally, not just on Linux. - Re-arrange third_party a bit so that our targets are Fuchsia/Chrome compatible. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2184133002 NOTREECHECKS=true This doesn't affect Chrome/Blink, so landing through the closed tree. Review-Url: https://codereview.chromium.org/2184133002
* Start on fiddle.Gravatar mtklein2016-07-26
| | | | | | | | | Mostly stolen from Joe. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2188493002 Review-Url: https://codereview.chromium.org/2188493002
* Basic standalone GN configs.Gravatar mtklein2016-07-21
This sketches out what a world without Chrome's GN configs would look like. Instead of DEPSing in build/, we now host our own gypi_to_gn.py. The symlink from skia/ to . lets us run gclient hooks when the .gclient file is in the directory above skia/ or inside skia/. That means we don't need gn.py anymore. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2167163002 Review-Url: https://codereview.chromium.org/2167163002