[bazel] Add option for SkSVGCanvas (and expat third_party DEP)

Our SVG code depends on our XML code which depends on expat.

See also cl/457481999

Change-Id: I83b61f5d73570d0aa7e851a01ccd019b4b1019e4
Bug: skia:12541
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/553376
Reviewed-by: Florin Malita <fmalita@google.com>
This commit is contained in:
Kevin Lubick 2022-06-27 10:07:26 -04:00
parent a10e6c1025
commit 86678ed625
10 changed files with 167 additions and 5 deletions

View File

@ -54,6 +54,8 @@ build --flag_alias=disable_skslc=no//bazel/common_config_settings:enable_skslc
build --flag_alias=enable_skslc=//bazel/common_config_settings:enable_skslc
build --flag_alias=disable_sksl_tracing=no//bazel/common_config_settings:enable_sksl_tracing
build --flag_alias=enable_sksl_tracing=//bazel/common_config_settings:enable_sksl_tracing
build --flag_alias=disable_svg_canvas=no//bazel/common_config_settings:enable_svg_canvas
build --flag_alias=enable_svg_canvas=//bazel/common_config_settings:enable_svg_canvas
build --flag_alias=disable_tracing=no//bazel/common_config_settings:enable_tracing
build --flag_alias=enable_tracing=//bazel/common_config_settings:enable_tracing
build --flag_alias=disable_vma=no//bazel/common_config_settings:use_vulkan_memory_allocator

View File

@ -217,6 +217,13 @@ new_local_repository(
workspace_file_content = "",
)
new_local_repository(
name = "expat",
build_file = "bazel/external/expat/BUILD.bazel",
path = "third_party/externals/expat",
workspace_file_content = "",
)
new_local_repository(
name = "libjpeg_turbo",
build_file = "bazel/external/libjpeg_turbo/BUILD.bazel",

View File

@ -227,6 +227,11 @@ bool_flag(
flag_name = "enable_tracing",
)
bool_flag(
default = False,
flag_name = "enable_svg_canvas",
)
bool_flag(
default = False,
flag_name = "is_skia_dev_build",

68
bazel/external/expat/BUILD.bazel vendored Normal file
View File

@ -0,0 +1,68 @@
# This file will be copied into //third_party/externals/libjpeg-turbo via the new_local_repository
# rule in WORKSPACE.bazel, so all files should be relative to that path.
genrule(
name = "create_expat_config_file",
srcs = [],
outs = ["include/expat_config.h"],
cmd = """cat > $@ << 'EOF'
#define HAVE_INTTYPES_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STDINT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define STDC_HEADERS 1
#define XML_CONTEXT_BYTES 1024
#define XML_DTD 1
#define XML_NS 1
EOF""",
)
EXPAT_HDRS = [
"expat/lib/expat.h",
]
EXPAT_SRCS = [
"expat/lib/ascii.h",
"expat/lib/asciitab.h",
"expat/lib/expat.h",
"expat/lib/expat_external.h",
"expat/lib/iasciitab.h",
"expat/lib/internal.h",
"expat/lib/latin1tab.h",
"expat/lib/nametab.h",
"expat/lib/siphash.h",
"expat/lib/utf8tab.h",
"expat/lib/winconfig.h",
"expat/lib/xmlparse.c",
"expat/lib/xmlrole.c",
"expat/lib/xmlrole.h",
"expat/lib/xmltok.c",
"expat/lib/xmltok.h",
"expat/lib/xmltok_impl.h",
# Our generated configuration file
"include/expat_config.h",
]
TEXTUAL_HDRS = [
"expat/lib/xmltok_impl.c",
"expat/lib/xmltok_ns.c",
]
cc_library(
name = "expat",
srcs = EXPAT_SRCS,
hdrs = EXPAT_HDRS,
defines = [
"HAVE_MEMMOVE",
"XML_DEV_URANDOM",
"XML_STATIC",
],
includes = [
"expat/lib",
"include",
],
# strip_include_prefix = "expat/lib",
textual_hdrs = TEXTUAL_HDRS,
visibility = ["//visibility:public"],
)

View File

@ -120,7 +120,6 @@ cc_library(
"jpeglibmangler.h",
],
local_defines = JPEGTURBO_DEFINES,
strip_include_prefix = "",
textual_hdrs = [
"jccolext.c",
"jdmrgext.c",

View File

@ -8,13 +8,16 @@ load("@rules_python//python:defs.bzl", _py_binary = "py_binary")
load("@py_deps//:requirements.bzl", _requirement = "requirement")
load("@bazel_gazelle//:def.bzl", _gazelle = "gazelle")
load("@emsdk//emscripten_toolchain:wasm_rules.bzl", _wasm_cc_binary = "wasm_cc_binary")
load("@io_bazel_rules_go//go:def.bzl", _go_binary = "go_binary", _go_library = "go_library")
# re-export symbols that are commonly used or that are not supported in G3
# (and thus we need to stub out)
selects = _selects
gazelle = _gazelle
go_binary = _go_binary
go_library = _go_library
py_binary = _py_binary
requirement = _requirement
gazelle = _gazelle
selects = _selects
wasm_cc_binary = _wasm_cc_binary
def select_multi(values_map, default):
@ -64,6 +67,11 @@ def select_multi(values_map, default):
})
return rv
# buildifier: disable=unnamed-macro
def cc_binary(**kwargs):
"""A shim around cc_binary that lets us tweak settings for G3 if necessary."""
native.cc_binary(**kwargs)
# buildifier: disable=unnamed-macro
def cc_library(**kwargs):
"""A shim around cc_library that lets us tweak settings for G3 if necessary."""

View File

@ -16,7 +16,6 @@ filegroup(
"//include/encode:public_hdrs",
"//include/pathops:public_hdrs",
"//include/ports:public_hdrs",
"//include/svg:public_hdrs",
"//include/third_party/skcms:public_hdrs",
"//include/utils:public_hdrs",
] + select({
@ -25,6 +24,9 @@ filegroup(
}) + select({
"//bazel/common_config_settings:has_gpu_backend": ["//include/gpu:public_hdrs"],
"//conditions:default": [],
}) + select({
"//bazel/common_config_settings:enable_svg_canvas_true": ["//include/svg:public_hdrs"],
"//conditions:default": [],
}),
visibility = ["//:__pkg__"],
)

View File

@ -29,6 +29,12 @@ filegroup(
}) + select({
"//bazel/common_config_settings:needs_sksl": ["//src/sksl:srcs"],
"//conditions:default": [],
}) + select({
"//bazel/common_config_settings:enable_svg_canvas_true": [
"//src/svg:srcs",
"//src/xml:srcs",
],
"//conditions:default": [],
}),
visibility = ["//:__pkg__"],
)
@ -57,6 +63,12 @@ filegroup(
}) + select({
"//bazel/common_config_settings:needs_sksl": ["//src/sksl:private_hdrs"],
"//conditions:default": [],
}) + select({
"//bazel/common_config_settings:enable_svg_canvas_true": [
"//src/svg:private_hdrs",
"//src/xml:private_hdrs",
],
"//conditions:default": [],
}),
visibility = ["//:__pkg__"],
)
@ -75,5 +87,10 @@ cc_library(
}) + select({
"//bazel/common_config_settings:needs_sksl": ["//src/sksl:deps"],
"//conditions:default": [],
}) + select({
"//bazel/common_config_settings:enable_svg_canvas_true": [
"//src/xml:deps",
],
"//conditions:default": [],
}),
)

22
src/svg/BUILD.bazel Normal file
View File

@ -0,0 +1,22 @@
load("//bazel:macros.bzl", "exports_files_legacy")
licenses(["notice"])
exports_files_legacy()
filegroup(
name = "srcs",
srcs = [
"SkSVGCanvas.cpp",
"SkSVGDevice.cpp",
],
visibility = ["//src:__pkg__"],
)
filegroup(
name = "private_hdrs",
srcs = [
"SkSVGDevice.h",
],
visibility = ["//src:__pkg__"],
)

View File

@ -1,5 +1,37 @@
load("//bazel:macros.bzl", "exports_files_legacy")
load("//bazel:macros.bzl", "cc_library", "exports_files_legacy", "split_srcs_and_hdrs")
licenses(["notice"])
exports_files_legacy()
XML_FILES = [
"SkDOM.cpp",
"SkDOM.h",
"SkXMLParser.cpp",
"SkXMLParser.h",
"SkXMLWriter.cpp",
"SkXMLWriter.h",
]
split_srcs_and_hdrs(
name = "xml",
files = XML_FILES,
)
filegroup(
name = "srcs",
srcs = [":xml_srcs"],
visibility = ["//src:__pkg__"],
)
filegroup(
name = "private_hdrs",
srcs = [":xml_hdrs"],
visibility = ["//src:__pkg__"],
)
cc_library(
name = "deps",
visibility = ["//src:__pkg__"],
deps = ["@expat"],
)