GN
What we've got here is a little GN MVP. It's lacking any knobs and doesn't yet build anything but libskia, zlib, libpng, and libjpeg-turbo. I've been hopping back and forth between Linux at work and Mac at home. These seem to be at least partially working, enough to build and run cmake/example.cpp.
The xcode backend seems to work. From here, we can start exploring how to handle other backends (cmake,Android make, Google3). There are a couple things I want to try:
- add another backend like vs or xcode to GN directly
- intercept via a custom toolchain
- reverse from ninja -t commands
That last option seems kind of fun.
This tries to piggyback on Chrome's GN setup as much as possible. Chrome's got quite a lot figured out, and we're basically required to do this if we want to have a single GN build system shareable by Chrome, our bots, and other clients.
This pulls in some new DEPS:
- build: Chrome's GN configuration, and much more
- buildtools: hashes for gn binary, pulled via hooks
- tools/clang: hashes for Chrome's clang, pulled via hooks into third_party/llvm-build
It additionally symlinks tools/gyp to third_party/externals/gyp. GN pulls some stuff from tools/gyp on Mac.
Have not yet tried building for Windows, Android, or iOS.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2087593002
Committed: https://skia.googlesource.com/skia/+/1d8de594f126b9a80bd8f8fa2005e90faf3b5b17
Review-Url: https://codereview.chromium.org/2087593002
2016-06-23 17:29:30 +00:00
|
|
|
# Copyright 2016 Google Inc.
|
|
|
|
#
|
|
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
|
|
# found in the LICENSE file.
|
|
|
|
|
2016-07-15 22:15:15 +00:00
|
|
|
import("third_party.gni")
|
GN
What we've got here is a little GN MVP. It's lacking any knobs and doesn't yet build anything but libskia, zlib, libpng, and libjpeg-turbo. I've been hopping back and forth between Linux at work and Mac at home. These seem to be at least partially working, enough to build and run cmake/example.cpp.
The xcode backend seems to work. From here, we can start exploring how to handle other backends (cmake,Android make, Google3). There are a couple things I want to try:
- add another backend like vs or xcode to GN directly
- intercept via a custom toolchain
- reverse from ninja -t commands
That last option seems kind of fun.
This tries to piggyback on Chrome's GN setup as much as possible. Chrome's got quite a lot figured out, and we're basically required to do this if we want to have a single GN build system shareable by Chrome, our bots, and other clients.
This pulls in some new DEPS:
- build: Chrome's GN configuration, and much more
- buildtools: hashes for gn binary, pulled via hooks
- tools/clang: hashes for Chrome's clang, pulled via hooks into third_party/llvm-build
It additionally symlinks tools/gyp to third_party/externals/gyp. GN pulls some stuff from tools/gyp on Mac.
Have not yet tried building for Windows, Android, or iOS.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2087593002
Committed: https://skia.googlesource.com/skia/+/1d8de594f126b9a80bd8f8fa2005e90faf3b5b17
Review-Url: https://codereview.chromium.org/2087593002
2016-06-23 17:29:30 +00:00
|
|
|
|
|
|
|
# Most third_party code should disable warnings: if we don't maintain the code, warnings are noise.
|
|
|
|
config("no_warnings") {
|
|
|
|
cflags = [ "-w" ]
|
|
|
|
}
|
|
|
|
third_party_configs = [ ":no_warnings" ]
|
|
|
|
|
|
|
|
config("libpng_public") {
|
|
|
|
include_dirs = [ "libpng" ]
|
|
|
|
}
|
|
|
|
source_set("libpng") {
|
|
|
|
public_configs = [ ":libpng_public" ]
|
|
|
|
configs += third_party_configs
|
|
|
|
configs -= unwanted_configs
|
|
|
|
|
|
|
|
deps = [
|
|
|
|
":zlib",
|
|
|
|
]
|
|
|
|
sources = [
|
|
|
|
"libpng/png.c",
|
|
|
|
"libpng/pngerror.c",
|
|
|
|
"libpng/pngget.c",
|
|
|
|
"libpng/pngmem.c",
|
|
|
|
"libpng/pngpread.c",
|
|
|
|
"libpng/pngread.c",
|
|
|
|
"libpng/pngrio.c",
|
|
|
|
"libpng/pngrtran.c",
|
|
|
|
"libpng/pngrutil.c",
|
|
|
|
"libpng/pngset.c",
|
|
|
|
"libpng/pngtrans.c",
|
|
|
|
"libpng/pngwio.c",
|
|
|
|
"libpng/pngwrite.c",
|
|
|
|
"libpng/pngwtran.c",
|
|
|
|
"libpng/pngwutil.c",
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
config("libjpeg-turbo_config") {
|
|
|
|
include_dirs = [ "externals/libjpeg-turbo" ]
|
|
|
|
}
|
|
|
|
source_set("libjpeg-turbo") {
|
|
|
|
public_configs = [ ":libjpeg-turbo_config" ]
|
|
|
|
configs += third_party_configs
|
|
|
|
configs -= unwanted_configs
|
|
|
|
|
|
|
|
sources = [
|
|
|
|
"externals/libjpeg-turbo/jcapimin.c",
|
|
|
|
"externals/libjpeg-turbo/jcapistd.c",
|
|
|
|
"externals/libjpeg-turbo/jccoefct.c",
|
|
|
|
"externals/libjpeg-turbo/jccolor.c",
|
|
|
|
"externals/libjpeg-turbo/jcdctmgr.c",
|
|
|
|
"externals/libjpeg-turbo/jchuff.c",
|
|
|
|
"externals/libjpeg-turbo/jcinit.c",
|
|
|
|
"externals/libjpeg-turbo/jcmainct.c",
|
|
|
|
"externals/libjpeg-turbo/jcmarker.c",
|
|
|
|
"externals/libjpeg-turbo/jcmaster.c",
|
|
|
|
"externals/libjpeg-turbo/jcomapi.c",
|
|
|
|
"externals/libjpeg-turbo/jcparam.c",
|
|
|
|
"externals/libjpeg-turbo/jcphuff.c",
|
|
|
|
"externals/libjpeg-turbo/jcprepct.c",
|
|
|
|
"externals/libjpeg-turbo/jcsample.c",
|
|
|
|
"externals/libjpeg-turbo/jdapimin.c",
|
|
|
|
"externals/libjpeg-turbo/jdapistd.c",
|
|
|
|
"externals/libjpeg-turbo/jdcoefct.c",
|
|
|
|
"externals/libjpeg-turbo/jdcolor.c",
|
|
|
|
"externals/libjpeg-turbo/jddctmgr.c",
|
|
|
|
"externals/libjpeg-turbo/jdhuff.c",
|
|
|
|
"externals/libjpeg-turbo/jdinput.c",
|
|
|
|
"externals/libjpeg-turbo/jdmainct.c",
|
|
|
|
"externals/libjpeg-turbo/jdmarker.c",
|
|
|
|
"externals/libjpeg-turbo/jdmaster.c",
|
|
|
|
"externals/libjpeg-turbo/jdmerge.c",
|
|
|
|
"externals/libjpeg-turbo/jdphuff.c",
|
|
|
|
"externals/libjpeg-turbo/jdpostct.c",
|
|
|
|
"externals/libjpeg-turbo/jdsample.c",
|
|
|
|
"externals/libjpeg-turbo/jerror.c",
|
|
|
|
"externals/libjpeg-turbo/jfdctflt.c",
|
|
|
|
"externals/libjpeg-turbo/jfdctfst.c",
|
|
|
|
"externals/libjpeg-turbo/jfdctint.c",
|
|
|
|
"externals/libjpeg-turbo/jidctflt.c",
|
|
|
|
"externals/libjpeg-turbo/jidctfst.c",
|
|
|
|
"externals/libjpeg-turbo/jidctint.c",
|
|
|
|
"externals/libjpeg-turbo/jidctred.c",
|
|
|
|
"externals/libjpeg-turbo/jmemmgr.c",
|
|
|
|
"externals/libjpeg-turbo/jmemnobs.c",
|
|
|
|
"externals/libjpeg-turbo/jquant1.c",
|
|
|
|
"externals/libjpeg-turbo/jquant2.c",
|
|
|
|
"externals/libjpeg-turbo/jsimd_none.c",
|
|
|
|
"externals/libjpeg-turbo/jutils.c",
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
|
|
|
config("system_freetype2") {
|
|
|
|
include_dirs = [ "/usr/include/freetype2" ]
|
|
|
|
libs = [ "freetype" ]
|
|
|
|
}
|
|
|
|
group("freetype2") {
|
|
|
|
public_configs = [ ":system_freetype2" ]
|
|
|
|
}
|
|
|
|
|
|
|
|
config("system_fontconfig") {
|
|
|
|
libs = [ "fontconfig" ]
|
|
|
|
}
|
|
|
|
group("fontconfig") {
|
|
|
|
public_configs = [ ":system_fontconfig" ]
|
|
|
|
}
|