Commit Graph

80 Commits

Author SHA1 Message Date
Mike Klein
8ffb26051f Turn off buffer security checking in Release builds.
I'm seeing /GS's _security_check_cookie() show up as a signficant piece of time when profiling.  That's mostly just annoying noise.  We generally use our Release builds for performance testing and Debug for correctness, so it seems like a fair thing to disable in Release builds... it's a sort of ASAN thing, which we only do in Debug on other platforms.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3782

Change-Id: I9b3cf4c5cf943fc2549f5bf91a1f6f7e41733e2c
Reviewed-on: https://skia-review.googlesource.com/3782
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Ben Wagner <bungeman@google.com>
2016-10-20 20:16:12 +00:00
Mike Klein
90a381f5b2 Turn on /OPT:REF and /OPT:ICF too.
These two together shave another 5MB off dm.exe, from 16MB -> 11MB.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3738

Change-Id: Id216867e0ad5bc115fbd4006095860dff9204947
Reviewed-on: https://skia-review.googlesource.com/3738
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Ben Wagner <bungeman@google.com>
2016-10-20 18:03:50 +00:00
Mike Klein
916ca1d8a0 Compile for Windows with /Zc:inline.
By default, MSVC generates standalone versions of all functions, including static inline functions that are only inlined.  Those standalone versions are dead code.  This /Zc:inline flag makes MSVC behave like all the other compilers, omitting those standalone functions.  Chrome builds with this flag.

This CL cuts dm.exe and nanobench.exe each down by about 3MB, 19->16MB for DM and 15MB->12MB for nanobench.  This shouldn't affect runtime speed, and didn't signficantly change clean build time on my Z840 (~90s either way).

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3735

Change-Id: Ibd2a80337fcefc3f4eaf4335ea4e95a80bb4fddb
Reviewed-on: https://skia-review.googlesource.com/3735
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Ben Wagner <bungeman@google.com>
2016-10-20 17:50:44 +00:00
Mike Klein
0bcfeac251 Compile Release builds with -momit-leaf-frame-pointer.
Unlike -fomit-frame-pointer, this doesn't make debugging or profiling any more difficult, as it only applies to leaves.  It will make our code (negligibly) smaller and (negligibly) faster.

Mostly I just find it easier to read the disassembly without all the rbp gymnastics getting in the way.


BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3700

Change-Id: I4b96aee7619791d5980de7f46e82836ca08a6456
Reviewed-on: https://skia-review.googlesource.com/3700
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-20 17:01:14 +00:00
Mike Klein
43c2526665 Viewer on Mac.
- Support ObjC / ObjC++
  - Build SDL on Mac.
  - Build viewer on Mac.

Patched from Jim's CL.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3760

Change-Id: I12663f2ed2969e22f51aefed560fbc22b2524167
Reviewed-on: https://skia-review.googlesource.com/3760
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-20 14:57:49 +00:00
Mike Klein
5bab65ba33 Switch Windows ANGLE bots to GN.
CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Win-MSVC-x86-Debug-ANGLE-Trybot;master.client.skia:Test-Win-MSVC-ShuttleC-GPU-GTX960-x86_64-Release-ANGLE-Trybot

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3539

Change-Id: I076c4c5972344b6688d648a8ea5e5618e87fd88d
Reviewed-on: https://skia-review.googlesource.com/3539
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2016-10-17 17:59:46 +00:00
Mike Klein
1a8d675148 GN: get Angle compiling on Windows.
Angle does not yet link, but it does compile.

I chickened out and wrote cp.py to be the copy tool on Windows.  I've got all platforms using it for consistency.


CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-ANGLE-Trybot


GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3533

Change-Id: I15f4b63a47121528b2fd2672c26c62765966147c
Reviewed-on: https://skia-review.googlesource.com/3533
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-17 16:16:16 +00:00
Mike Klein
24267ffeab Make GCC ninja log lines consistent with MSVC.
I recently switched over MSVC to simpler log lines from Ninja.  This makes GCC- or Clang-based builds use the same set of messages.  It's less noise when things go right; Ninja prints the whole line when a step fails.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3540

Change-Id: I36b638ee180210c6fb35c2bccb1b6d3c58437d36
Reviewed-on: https://skia-review.googlesource.com/3540
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-17 15:49:53 +00:00
Mike Klein
c756e86432 GN/Win: quieter builds
It's hard to read the logs as they are now.  This simplifies down the descriptions, and stifles a warning about linking object files with no symbols into a static library.

CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Win-MSVC-x86-Debug-Exceptions-Trybot,Build-Win-MSVC-x86_64-Debug-GN-Trybot,Build-Win-MSVC-x86_64-Release-GN-Trybot
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3322

Change-Id: I52beb3b8405ebb2c370cad432669834b64baa840
Reviewed-on: https://skia-review.googlesource.com/3322
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-13 18:55:00 +00:00
Mike Klein
5286d6cecd GN/Win: pass /DEBUG to linker to get debug symbols.
Not much used for debug symbols if they're not linked in.

CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Win-MSVC-x86-Debug-Exceptions-Trybot,Build-Win-MSVC-x86_64-Debug-GN-Trybot,Build-Win-MSVC-x86_64-Release-GN-Trybot

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3320

Change-Id: I506ae624ec412d4151a025879a5dd14d90183bd8
Reviewed-on: https://skia-review.googlesource.com/3320
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-13 17:39:24 +00:00
Mike Klein
c7165c239a GN/Win: warnings and warn-as-error
CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Win-MSVC-x86-Debug-Exceptions-Trybot,Build-Win-MSVC-x86_64-Debug-GN-Trybot,Build-Win-MSVC-x86_64-Release-GN-Trybot

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3258

Change-Id: Ia2b85904bed1e6ca72c68abaecf6c2854795342c
Reviewed-on: https://skia-review.googlesource.com/3258
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-13 04:17:38 +00:00
Mike Klein
0bc5a7695c GN: naive attempt for 32-bit Windows support
This uses the win_toolchain's SetEnv.cmd script to set up the environment for x86 builds.  Some of what it sets is redundant with what we set: include_dirs (INCLUDE), lib_dirs (LIB).  I'd sort of like to learn what parts of it actually matter: VSINSTALLDIR? VCINSTALLDIR? likely PATH?
This will not work for local builds not using win_toolchain.  I don't mind that too much, at least for now, maybe forever.  Most humans should be using 64-bit builds.

CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Win-MSVC-x86-Debug-Exceptions-Trybot,Build-Win-MSVC-x86_64-Debug-GN-Trybot,Build-Win-MSVC-x86_64-Release-GN-Trybot

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3257

Change-Id: Ib880fb738bc4b493e8905903706526110213be47
Reviewed-on: https://skia-review.googlesource.com/3257
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-13 03:14:05 +00:00
Mike Klein
5d8cf2915f GN: windows flags tweaks.
Should be no need for /TC, /TP.
Don't set GCC-like 32-bit build flags on Windows.

CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Win-MSVC-x86_64-Debug-GN-Trybot

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3256

Change-Id: Ifa11606ca55a86d416724247328024ddea59e8bc
Reviewed-on: https://skia-review.googlesource.com/3256
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-12 23:59:09 +00:00
Mike Klein
cc300a15d4 GN/Win: flesh out compiler flags.
This should turn on the basics: optimization, debug symbols, disabled RTTI.

Release builds compile monobench, and cl.exe isn't happy with 1.0/0.0 there, so I swapped that into infinity().

Also, gn format I skipped last time.

CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Win-MSVC-x86_64-Debug-GN-Trybot,Build-Win-MSVC-x86_64-Release-GN-Trybot

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3252

Change-Id: I8718d583e3fba4496b789eb25971462b972a5425
Reviewed-on: https://skia-review.googlesource.com/3252
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-12 20:46:20 +00:00
Mike Klein
d301683716 GN/Win: support win_toolchain asset?
CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Win-MSVC-x86_64-Debug-GN-Trybot

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3246

Change-Id: Ib38d4f16788bc27ad81975a4c1b0a732e5df1de3
Reviewed-on: https://skia-review.googlesource.com/3246
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-12 20:16:22 +00:00
Mike Klein
3eb71216d2 More steps toward GN/Windows.
I think I'm now at the point of needing to just resolve missing symbols.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3201

Change-Id: Ib908bd72c23f2d4bafd17182eedcb2fc85c422e5
Reviewed-on: https://skia-review.googlesource.com/3201
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-11 21:31:19 +00:00
Mike Klein
0f61faa7b7 GN: windows compiles locally.
Not yet linking.  Ignoring bots for now.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3200

Change-Id: Idd75033313df60844c2ba602f7845b3c52987bc2
Reviewed-on: https://skia-review.googlesource.com/3200
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-11 20:48:25 +00:00
Mike Klein
461d328a78 Make gn gen work on Windows again.
Clang detection is specific to GCC-like toolchains.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3171

Change-Id: I7144bc8e5cd3e774625b51a6dda981284ed1fdc1
Reviewed-on: https://skia-review.googlesource.com/3171
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-11 18:00:37 +00:00
Mike Klein
4fdc54385a Update to Android NDK r13.
The libc++ include paths have changed very slightly.  I've left GN compatible with both older r12 NDKs and the new r13 to smooth the transition.

The libc++ in r13 depends on long-double math.h functions (cosl, atanl, etc.) only available in Android API v21 (Lollipop) and up.  That's what the 64-bit bots were already on, so we just pull the 32-bit bots up to the same target.  Conveniently, the oldest bots we have (N7 and N10) are on Lollipop.

The r13 MIPS64 sysroots are a little weird... /usr/include and /usr/lib64 but no /usr/lib.  That'd be fine---we only want 64-bit builds---but Clang searches for /usr/lib64 via its path to /usr/lib, and without at least an empty /usr/lib, it can't find /usr/lib64.  So you'll see a special mips64el section in the GN config where we do this all manually (other platforms pick this all up correctly from --sysroot).  I've chosen to do this rather than fix it up in the asset create.py scripts so that we stay compatible with vanilla NDKs, which is convenient for developers.

CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Mac-Clang-arm64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm-Release-GN_Android-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android_FrameworkDefs-Trybot,Build-Ubuntu-Clang-arm64-Debug-GN_Android_Vulkan-Trybot,Build-Ubuntu-Clang-arm64-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mips64el-Release-GN_Android-Trybot,Build-Ubuntu-Clang-mipsel-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-mipsel-Release-GN_Android-Trybot,Build-Ubuntu-Clang-x64-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-x64-Release-GN_Android-Trybot,Build-Ubuntu-Clang-x86-Debug-GN_Android-Trybot,Build-Ubuntu-Clang-x86-Release-GN_Android-Trybot

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3180

Change-Id: I6f3b5d9411ded0ee49c1099490f41fa86a8736f8
Reviewed-on: https://skia-review.googlesource.com/3180
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-11 17:07:49 +00:00
Ben Wagner
388faa0fb9 Auto re-gen for gn cmake generator.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3028

Change-Id: I73c6ce9e852c280bbb2017c30717809b4cb44046
Reviewed-on: https://skia-review.googlesource.com/3028
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2016-10-06 21:12:21 +00:00
Ben Wagner
dc69dc7e5e Add action_foreach, copy, and proper target naming.
Also properly handles dependencies across OBJECT libraries.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2939

Change-Id: I4aa48c896caf262772fe9769e742b54f6e265ab0
Reviewed-on: https://skia-review.googlesource.com/2939
Reviewed-by: Brian Salomon <bsalomon@google.com>
2016-10-05 14:07:04 +00:00
Mike Klein
121563eb4a Fold extra_*_flags into GN as a config.
This should make them visible to things like gn_to_cmake.py.
I'm not exactly sure what this implies about ordering and overriding.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2938

Change-Id: I0740613993fb5bbfb8363cfa126d1f59768abf60
Reviewed-on: https://skia-review.googlesource.com/2938
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-10-04 21:57:31 +00:00
Ben Wagner
bc34404dc3 Implement 'action' in gn_to_cmake.py.
With this change it is possible to build all Skia targets.

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2784

Change-Id: I5c53a6ba5746d210e0ae8f7a29b409d40c7b9bff
Reviewed-on: https://skia-review.googlesource.com/2784
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Klein <mtklein@chromium.org>
2016-09-30 13:29:52 +00:00
bungeman
e95ea08cf4 Improve GN to CMake translation for building.
This adds proper target types, dependencies, and library handling. This
is enough to build and run dm on Linux and Mac.

Change-Id: I5220f67f7dd3dbada7ad03ef83fff8fd80158fad
Reviewed-on: https://skia-review.googlesource.com/2664
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
2016-09-28 21:20:29 +00:00
Mike Klein
3ba96c8cec Turn on -Wgnu-anonymous-struct and -Wnested-anonymous-types.
I'm not seeing any problems with these locally.  Perhaps the bots have something to say.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2709

Change-Id: I6f0c7045c8f270efcd71d837f22a40e9f9d3e9b7
Reviewed-on: https://skia-review.googlesource.com/2709
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2016-09-27 17:22:12 +00:00
csmartdalton
53c7bbfaaf GN: match shell behavior for cc and cxx in is_clang.py
Interprets cc/cxx as part of the shell command rather than literal
arguments. This matches the behavior of shell invocations from ninja.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2375573002

Review-Url: https://codereview.chromium.org/2375573002
2016-09-27 09:29:24 -07:00
Mike Klein
600c6a716d Turn on -Wnewline-eof.
I don't know _why_ Clang would like these .inc files to have a newline at the end of the file, but it seems a harmless way to silence the warning.


BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2711

Change-Id: I6c530ee5096c48c91ddf322aca916e70a0dd770b
Reviewed-on: https://skia-review.googlesource.com/2711
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2016-09-27 15:49:37 +00:00
Mike Klein
8f514c7ecc We really shouldn't pass SkFontStyle to printf as %d.
BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2721

Change-Id: I362063bea3909b2581d8e9b7860d4ac321082808
Reviewed-on: https://skia-review.googlesource.com/2721
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2016-09-27 14:26:33 +00:00
Mike Klein
fc6c37b981 Remove stray semicolons.
Turns out function declarations don't end in semicolons...

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2720

No public API changes.
TBR=reed@google.com

Change-Id: I72b56d52e1ff7fa6e89c295b0de8c46599791ebb
Reviewed-on: https://skia-review.googlesource.com/2720
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-09-27 14:04:26 +00:00
Mike Klein
7bfc08b9fb Focus -Wno-over-aligned to just 32-bit x86 Android. (2)
I've even found the code that's making this happen, just don't know why.
I've added a test to assert that it's safe to assume malloc() is 8-byte aligned.

Test should compile this time.

CQ_INCLUDE_TRYBOTS=master.client.skia.android:Test-Android-Clang-NexusPlayer-CPU-Moorefield-x86-Release-GN_Android-Trybot

Change-Id: I48714b99670c20704adf4f7f216da0d60d7d9bcd
Reviewed-on: https://skia-review.googlesource.com/2662
Reviewed-on: https://skia-review.googlesource.com/2703
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-09-27 12:16:39 +00:00
Mike Reed
75d6ffbc74 Revert "Focus -Wno-over-aligned to just 32-bit x86 Android."
This reverts commit If8a2898ab3a77571622eb125c97f676e029b902c.

Reason for revert: 

../../../../../work/skia/tests/OverAlignedTest.cpp: In function 'void test_OverAligned(skiatest::Reporter*, sk_gpu_test::GrContextFactory*)':
../../../../../work/skia/tests/OverAlignedTest.cpp:19:33: error: invalid operands of types 'void*' and 'int' to binary 'operator&'
         REPORTER_ASSERT(r, SkIsAlign8(p));
                                 ^
ninja: build stopped: subcommand failed.

Original issue's description:
> Focus -Wno-over-aligned to just 32-bit x86 Android.
> 
> I've even found the code that's making this happen, just don't know why.
> I've added a test to assert that it's safe to assume malloc() is 8-byte aligned.
> 
> BUG=skia:
> 
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2662
> 
> CQ_INCLUDE_TRYBOTS=master.client.skia.android:Test-Android-Clang-NexusPlayer-CPU-Moorefield-x86-Release-GN_Android-Trybot
> 

TBR=mtklein@chromium.org,bungeman@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: Ic9b30ce980d8d5155528a6f2b4e1913e5fa95dc0
Reviewed-on: https://skia-review.googlesource.com/2702
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Mike Reed <reed@google.com>
2016-09-27 10:44:04 +00:00
Mike Klein
ed924ceffb Focus -Wno-over-aligned to just 32-bit x86 Android.
I've even found the code that's making this happen, just don't know why.
I've added a test to assert that it's safe to assume malloc() is 8-byte aligned.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2662

CQ_INCLUDE_TRYBOTS=master.client.skia.android:Test-Android-Clang-NexusPlayer-CPU-Moorefield-x86-Release-GN_Android-Trybot

Change-Id: If8a2898ab3a77571622eb125c97f676e029b902c
Reviewed-on: https://skia-review.googlesource.com/2662
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
2016-09-27 10:33:03 +00:00
Mike Klein
2cc7f8d196 Move undefined-func-template to wont-fix warnings.
The warning looks to helpfully pre-warn about possible link failures, but it's warning exclusively in places where we're doing things right.

The worst that happens ignoring this warning is a missing-symbol linker error.

I've taken the opportunity to batch in a few other de-escalations:
  - Wconditional-uninitialized is done better by MSAN
  - It'll take some work to dig Wformat-literal out of our shader compiler, but nothing looks unsafe
  - Most of Wshift-sign-overflow is 0xff << 24.  Don't want to ban that.
  - Wdeprecated is mostly warning about features C++11 technically deprecated that might be removed in later releases.  Punt!
  - Wcovered-switch-default is pretty much the opposite of what we want.
  - Wshadow is triggering too often to fix quickly.  Probably mostly false positives.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2620

Change-Id: I20a85a77d2e19ed05a536b23037bd988350f821e
Reviewed-on: https://skia-review.googlesource.com/2620
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-09-26 20:31:19 +00:00
Mike Klein
849f5027e9 Turn on -Wundefined-reinterpret-cast.
It was not a fan of this (blatant) aliasing.
I suspect this best_non_simd_srcover_srgb_srgb() function has several
other aliasing issues that use undefined behavior, but this is all it's
complaining about for now.

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2606

Change-Id: I25a8800e810bccf5068c8a10e9c8c8f565e57304
Reviewed-on: https://skia-review.googlesource.com/2606
Commit-Queue: Mike Klein <mtklein@chromium.org>
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2016-09-26 17:43:47 +00:00
Mike Klein
19eb8435cb -Wcomma may be good to go now.
This cleans up 3 remaining sites using , that probably meant ;

BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2605

Change-Id: I5e48bcd85d72a205d2b0c860461dab1ec793dd18
Reviewed-on: https://skia-review.googlesource.com/2605
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-09-26 17:43:10 +00:00
mtklein
f347c51226 GN: detect is_clang, use it to switch Clang to warning blacklist.
Same as the last CL, now with -Wno-over-aligned.

CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Ubuntu-Clang-x86-Debug-GN_Android-Trybot

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2369033002

TBR=bungeman@google.com

NOTREECHECKS=true

Review-Url: https://codereview.chromium.org/2369033002
2016-09-26 08:40:12 -07:00
Mike Klein
0dc744ac34 Revert "GN: detect is_clang, use it to switch Clang to warning blacklist."
This reverts commit I09c3487adfeb26a6fb07e1939cb927c5d7de3107.

Reason for revert: -Wover-aligned on x86 Android bots

Original issue's description:
> GN: detect is_clang, use it to switch Clang to warning blacklist.
> 
> BUG=skia:
> 
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2599
> 
> Change-Id: I09c3487adfeb26a6fb07e1939cb927c5d7de3107
> Reviewed-on: https://skia-review.googlesource.com/2599
> Reviewed-by: Ben Wagner <bungeman@google.com>
> Commit-Queue: Mike Klein <mtklein@chromium.org>
> 

TBR=mtklein@chromium.org,bungeman@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Change-Id: Ic07bf7896a305be6c377f14a573cb10836f1a6f8
Reviewed-on: https://skia-review.googlesource.com/2601
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2016-09-26 14:37:22 +00:00
Mike Klein
787339e942 GN: detect is_clang, use it to switch Clang to warning blacklist.
BUG=skia:

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2599

Change-Id: I09c3487adfeb26a6fb07e1939cb927c5d7de3107
Reviewed-on: https://skia-review.googlesource.com/2599
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
2016-09-26 14:20:02 +00:00
bungeman
623ef92e4f Json ide script for gn to output cmake.
Can be run like

gn gen out/debug --ide=json --json-ide-script=../../gn/gn_to_cmake.py

or

gn gen out/debug --ide=json
python gn/gn_to_cmake.py out/debug/project.json

This first pass creates CMakeLists.txt with just enough information for an
ide. Each target is just a static library with sources, include
directories, and defines.

NOTRY=true
This isn't automatically tested.

Review-Url: https://codereview.chromium.org/2363873002
2016-09-23 08:16:04 -07:00
mtklein
3e8012e74f GN: is_skia_standalone
is_skia_standalone will be defined and set to true iff we're using our
standalone BUILDCONFIG.gn.  Any other build (Fuchsia, Chrome, Pdfium)
will have their own BUILDCONFIG.gn, which presumably does not define
is_skia_standalone.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2357963002

Review-Url: https://codereview.chromium.org/2357963002
2016-09-21 09:14:19 -07:00
mtklein
60b7ab7a8e GN: compiler_prefix -> cc_wrapper
I was a bit mixed up thinking Chrome called this feature compiler_prefix.
They actually call it cc_wrapper.  So let's switch to their name before we
get too used to this.

No bots are affected.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2355003002
DOCS_PREVIEW= https://skia.org/?cl=2355003002

NOTREECHECKS=true

Review-Url: https://codereview.chromium.org/2355003002
2016-09-20 12:09:13 -07:00
mtklein
b9be979eae format GN files, and invert if->config to config->if
Both if (...) { config ... } else { config ... } and config { if (...) { ...}
else { ... } } work.  We just happen to do the if inside the config more often
than the other way around.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2347953002

Review-Url: https://codereview.chromium.org/2347953002
2016-09-16 14:44:18 -07:00
herb
b6318bf44d Compile the skia library for windows using gn.
TBR=mtklein@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2347443002

Review-Url: https://codereview.chromium.org/2347443002
2016-09-16 13:29:57 -07:00
mtklein
1bd72ba2cb GN: add a flag to implement Android_FrameworkDefs bot.
This bot builds Skia with a bunch of defines to mimic the Android roll.
Apparently it was supposed to be on the CQ... I'll add the GN version
to it when it exists.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2343103002

Review-Url: https://codereview.chromium.org/2343103002
2016-09-16 07:45:52 -07:00
mtklein
1fbdf98d0e GN: support 32-bit x86 builds
Take over Ubuntu -x86- bots.

Note the change to Build-Win-MSVC-x86-Release-GN.json, which is not incidental.
We'll want target_cpu="x86" there too.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2340463008

Committed: https://skia.googlesource.com/skia/+/1949386ae00485ae92dd5608a2614b9dee417542

CQ_INCLUDE_TRYBOTS=master.client.skia.compile:Build-Ubuntu-Clang-x86-Debug-GN_Android-Trybot,Build-Ubuntu-GCC-x86-Release-Trybot

Review-Url: https://codereview.chromium.org/2340463008
2016-09-15 12:07:48 -07:00
mtklein
56d5669095 Revert of GN: support 32-bit x86 builds (patchset #6 id:100001 of https://codereview.chromium.org/2340463008/ )
Reason for revert:
https://build.chromium.org/p/client.skia.compile/builders/Build-Ubuntu-Clang-x86-Debug-GN_Android/builds/304

Original issue's description:
> GN: support 32-bit x86 builds
>
> Take over Ubuntu -x86- bots.
>
> Note the change to Build-Win-MSVC-x86-Release-GN.json, which is not incidental.
> We'll want target_cpu="x86" there too.
>
> BUG=skia:
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2340463008
>
> Committed: https://skia.googlesource.com/skia/+/1949386ae00485ae92dd5608a2614b9dee417542

TBR=jcgregorio@google.com,borenet@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Review-Url: https://codereview.chromium.org/2338173004
2016-09-15 11:18:56 -07:00
mtklein
1949386ae0 GN: support 32-bit x86 builds
Take over Ubuntu -x86- bots.

Note the change to Build-Win-MSVC-x86-Release-GN.json, which is not incidental.
We'll want target_cpu="x86" there too.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2340463008

Review-Url: https://codereview.chromium.org/2340463008
2016-09-15 11:06:25 -07:00
mtklein
a846c7223c GN: link executables with -rdynamic on Linux.
-rdynamic makes sure the executable exposes all its symbols, which allows things like DM's built-in stack trace dumper to show symbols instead of just addresses.  We do this in GYP too.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2339983005

Review-Url: https://codereview.chromium.org/2339983005
2016-09-15 10:44:15 -07:00
mtklein
88a7ac0b2d GN: add is_official_build
... 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
2016-09-14 11:16:49 -07:00
mtklein
6ef6999017 GN: Android Vulkan support
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
2016-09-14 06:12:09 -07:00