I sometimes dream to hone our build process down to something as simple as
$ find src -name '*.cpp' | xargs c++ <some cflags> -c -o skia.o
To start, it helps if we can compile all files on all platforms. Each
non-portable file guards itself with defines provided by SkTypes.h. This does
not convert all non-portable code, but it's a good representative chunk.
E.g. instead of having to remember which SkDebug_*.cpp to compile on which
platform we can just compile all three and let the code itself sort it out.
This has the nice side effect of making non-portable code declare the
conditions under which it can compile explicitly.
I've been testing mostly with the CMake build as it's easiest, but this should
apply equally to BUILD, Gyp, and GN files... to any build system really.
BUG=skia:4269
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac10.9-Clang-x86_64-Release-CMake-Trybot
Review URL: https://codereview.chromium.org/1411283005
It's only used by a couple unit tests. We have other ways of getting
the same quality testing of our ref-count code now (e.g. TSAN).
BUG=skia:
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot,Build-Mac10.9-Clang-x86_64-Release-CMake-Trybot
Review URL: https://codereview.chromium.org/1408213005
Except for some small edits, this is mainly:
patch from issue 1353953004 at patchset 80001 (http://crrev.com/1353953004#ps80001)
CMake configuration file for compiling Windows x64 VS2013 with CMake.
Things to be fixed:
- only x64 is supported
- I didn't try SKIA_GDI (experimental) and directly went for the DirectWrite - this should need an option in the CMake configuration
- make sure yasm and custom build rules paths are set correctly - if the hierarchy changes CMake will just blow things up
- compilation works but there are LOTS and LOTS of warnings (over 9000), if this is okay nevermind but since most of them are related to deprecated functions either consider fixing or suppressing them
- Release mode is untested - I suppose it won't be a big deal but might need some fixing
More info here: https://groups.google.com/forum/#!topic/skia-discuss/HLu-Hesfbg4
BUG=skia:4269
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Mac10.9-Clang-x86_64-Release-CMake-Trybot,Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot
Review URL: https://codereview.chromium.org/1370263004
• -w silences all warnings current and future. We're not using this for development.
• There's no real need to exclude files in Release mode.
The linker may whine a little, but that's fine.
• Quiet down message() calls that run every time. They're fine if you can figure out
how to run them only when doing the detection and cache them like all the others,
but I don't like the noise seeing them every run.
• cheaders is hard to read. c_headers.
• ../src/*mac* erroneously picks up SkLumaColorFilter on non-case-sensitive file systems.
../src/*_mac* seems fine.
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Mac10.9-Clang-x86_64-Release-CMake-Trybot,Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot
BUG=skia:
Review URL: https://codereview.chromium.org/1376923003
- streamline how we define $here
- only make `cmake` when bootstrapping; it's a little less to build
BUG=skia:4269
CQ_EXTRA_TRYBOTS=client.skia.compile:Build-Mac10.9-Clang-x86_64-Release-CMake-Trybot,Build-Ubuntu-GCC-x86_64-Release-CMake-Trybot
Review URL: https://codereview.chromium.org/1345663004
- Add CMake v3.3.1 (latest) to DEPS.
- Add cmake/bot-cmake.sh to bootstrap CMake then build Skia using that.
Works on my Mac and Linux box, both with no system CMake installation.
CMake will be ~100M on disk. The first bootstrap takes a couple minutes,
and a no-op re-run of bot-cmake.sh takes 15-20 seconds. I thought about
having bot-cmake.sh fetch CMake instead of DEPS, but I'm not sure I can
handle updates, etc. as robustly as it can.
This will only work on Linux and Mac. CMake requires an older CMake on
Windows. It doesn't have an equivalent ./bootstrap there. Will have to
think about how Windows bots will work!
BUG=skia:4269
Review URL: https://codereview.chromium.org/1339603003