aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar mtklein <mtklein@chromium.org>2016-08-24 17:32:30 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-08-24 17:32:30 -0700
commit9b8583dd1f18657c08eaab047d79288b9f2c61a7 (patch)
tree3c7ae56a4998e18711df7d1ee48b385c24551cc5
parentf84960187ab40281bc4aacf5f6a485579a46f953 (diff)
GN: misc
- 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
-rw-r--r--BUILD.gn105
-rw-r--r--gn/BUILD.gn5
-rw-r--r--gn/BUILDCONFIG.gn3
3 files changed, 60 insertions, 53 deletions
diff --git a/BUILD.gn b/BUILD.gn
index 2ea5a075fd..e0ed2a6f80 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -139,43 +139,62 @@ utils_gypi = exec_script("gn/gypi_to_gn.py",
"scope",
[ "gyp/utils.gypi" ])
-source_set("opts_none") {
- configs += skia_library_configs
- sources = opts_gypi.none_sources
+# Use for CPU-specific Skia code that needs particular compiler flags.
+template("opts") {
+ if (invoker.enabled) {
+ source_set(target_name) {
+ forward_variables_from(invoker, "*")
+ configs += skia_library_configs
+ }
+ } else {
+ # If not enabled, a phony empty target that swallows all otherwise unused variables.
+ source_set(target_name) {
+ forward_variables_from(invoker,
+ "*",
+ [
+ "sources",
+ "cflags",
+ ])
+ }
+ }
}
is_x86 = current_cpu == "x64" || current_cpu == "x86"
-if (is_x86) {
- source_set("opts_sse2") {
- configs += skia_library_configs
- sources = opts_gypi.sse2_sources
- cflags = [ "-msse2" ]
- }
+opts("none") {
+ enabled = !is_x86
+ sources = opts_gypi.none_sources
+ cflags = []
+}
- source_set("opts_ssse3") {
- configs += skia_library_configs
- sources = opts_gypi.ssse3_sources
- cflags = [ "-mssse3" ]
- }
+opts("sse2") {
+ enabled = is_x86
+ sources = opts_gypi.sse2_sources
+ cflags = [ "-msse2" ]
+}
- source_set("opts_sse41") {
- configs += skia_library_configs
- sources = opts_gypi.sse41_sources
- cflags = [ "-msse4.1" ]
- }
+opts("ssse3") {
+ enabled = is_x86
+ sources = opts_gypi.ssse3_sources
+ cflags = [ "-mssse3" ]
+}
- source_set("opts_sse42") {
- configs += skia_library_configs
- sources = opts_gypi.sse42_sources
- cflags = [ "-msse4.2" ]
- }
+opts("sse41") {
+ enabled = is_x86
+ sources = opts_gypi.sse41_sources
+ cflags = [ "-msse4.1" ]
+}
- source_set("opts_avx") {
- configs += skia_library_configs
- sources = opts_gypi.avx_sources
- cflags = [ "-mavx" ]
- }
+opts("sse42") {
+ enabled = is_x86
+ sources = opts_gypi.sse42_sources
+ cflags = [ "-msse4.2" ]
+}
+
+opts("avx") {
+ enabled = is_x86
+ sources = opts_gypi.avx_sources
+ cflags = [ "-mavx" ]
}
# Any feature of Skia that requires third-party code should be optional and use this template.
@@ -187,6 +206,7 @@ template("optional") {
source_set(target_name) {
forward_variables_from(invoker, "*", [ "public_defines" ])
all_dependent_configs = [ ":" + target_name + "_public" ]
+ configs += skia_library_configs
}
} else {
# If not enabled, a phony empty target that swallows all otherwise unused variables.
@@ -195,22 +215,17 @@ template("optional") {
"*",
[
"public_defines",
- "configs",
"deps",
"sources",
])
}
}
}
-set_defaults("optional") {
- configs = default_configs
-}
optional("gif") {
enabled = skia_use_giflib
public_defines = [ "SK_HAS_GIF_LIBRARY" ]
- configs += skia_library_configs
deps = [
"//third_party/giflib",
]
@@ -223,7 +238,6 @@ optional("jpeg") {
enabled = skia_use_libjpeg_turbo
public_defines = [ "SK_HAS_JPEG_LIBRARY" ]
- configs += skia_library_configs
deps = [
"//third_party/libjpeg-turbo:libjpeg",
]
@@ -240,7 +254,6 @@ optional("pdf") {
enabled = skia_use_zlib
public_defines = []
- configs += skia_library_configs
deps = [
"//third_party/zlib",
]
@@ -259,7 +272,6 @@ optional("png") {
enabled = skia_use_libpng
public_defines = [ "SK_HAS_PNG_LIBRARY" ]
- configs += skia_library_configs
deps = [
"//third_party/libpng",
]
@@ -274,7 +286,6 @@ optional("webp") {
enabled = skia_use_libwebp
public_defines = [ "SK_HAS_WEBP_LIBRARY" ]
- configs += skia_library_configs
deps = [
"//third_party/libwebp",
]
@@ -289,7 +300,6 @@ optional("xml") {
enabled = skia_use_expat
public_defines = []
- configs += skia_library_configs
deps = [
"//third_party/expat",
]
@@ -305,24 +315,19 @@ component("skia") {
configs += skia_library_configs
deps = [
+ ":avx",
":gif",
":jpeg",
+ ":none",
":pdf",
":png",
+ ":sse2",
+ ":sse41",
+ ":sse42",
+ ":ssse3",
":webp",
":xml",
]
- if (is_x86) {
- deps += [
- ":opts_avx",
- ":opts_sse2",
- ":opts_sse41",
- ":opts_sse42",
- ":opts_ssse3",
- ]
- } else {
- deps += [ ":opts_none" ]
- }
if (!is_win) {
libs = [ "pthread" ]
diff --git a/gn/BUILD.gn b/gn/BUILD.gn
index cea57454a9..fecca8efe8 100644
--- a/gn/BUILD.gn
+++ b/gn/BUILD.gn
@@ -4,7 +4,6 @@
# found in the LICENSE file.
declare_args() {
- ar = "ar"
cc = "cc"
cxx = "c++"
@@ -97,13 +96,13 @@ toolchain("gcc_like") {
}
tool("alink") {
- command = "rm -f {{output}} && $ar rcs {{output}} {{inputs}}"
+ command = "rm -f {{output}} && ar rcs {{output}} {{inputs}}"
outputs = [
"{{root_out_dir}}/{{target_output_name}}{{output_extension}}",
]
default_output_extension = ".a"
output_prefix = "lib"
- description = "$ar {{output}} ..."
+ description = "ar {{output}} ..."
}
tool("solink") {
diff --git a/gn/BUILDCONFIG.gn b/gn/BUILDCONFIG.gn
index 2daba29481..d6833571c8 100644
--- a/gn/BUILDCONFIG.gn
+++ b/gn/BUILDCONFIG.gn
@@ -73,6 +73,9 @@ set_defaults("shared_library") {
set_defaults("component") {
configs = default_configs
+ if (!is_component_build) {
+ complete_static_lib = true
+ }
}
# For now, we support GCC-like toolchains, including Clang.