blob: 87a10311afa267381efec87d23b181bb7526c4b9 [file] [log] [blame]
Kevin Lubick1f8c31b2021-11-08 15:26:09 -05001# https://github.com/bazelbuild/bazel-skylib
2load("@bazel_skylib//lib:selects.bzl", "selects")
Kevin Lubick8ed49ea2021-11-11 12:50:02 -05003load("//bazel:macros.bzl", "select_multi")
4
5package(default_visibility = ["//:__subpackages__"])
Kevin Lubick1f8c31b2021-11-08 15:26:09 -05006
Mike Kleinc1cc1d82020-09-11 11:11:33 -05007cc_test(
8 name = "bazel_test",
Mike Kleinc1cc1d82020-09-11 11:11:33 -05009 size = "small",
Kevin Lubick4d413042021-10-20 16:20:42 -040010 srcs = [
11 "//experimental/bazel_test:srcs",
Kevin Lubick97284f22021-10-26 10:45:12 -040012 "//include/config:hdrs",
13 "//include/core:hdrs",
14 "//src/ports:skdebug",
Kevin Lubick4d413042021-10-20 16:20:42 -040015 ],
16 deps = [
17 "//third_party:libpng",
18 "//third_party:musl_compat",
19 ],
Mike Kleinc1cc1d82020-09-11 11:11:33 -050020)
Kevin Lubick1f8c31b2021-11-08 15:26:09 -050021
22CORE_SRCS = [
23 "//include/private:hdrs",
24 "//include/third_party:skcms-hdrs",
Kevin Lubickef3d6af2021-11-12 11:04:17 -050025 "//src/android:srcs",
Kevin Lubick1f8c31b2021-11-08 15:26:09 -050026 "//src/codec:srcs",
27 "//src/core:srcs",
28 "//src/image:srcs",
29 "//src/images:srcs",
30 "//src/effects:srcs",
31 "//src/opts:srcs",
32 "//src/pathops:srcs",
Kevin Lubick888d4ef2021-11-16 14:09:44 -050033 "//src/ports:srcs",
Kevin Lubick1f8c31b2021-11-08 15:26:09 -050034 "//src/sfnt:srcs",
35 "//src/shaders:srcs",
36 "//src/utils:srcs",
37 "//third_party:skcms",
38] + selects.with_or({
39 # https://github.com/bazelbuild/bazel-skylib/blob/main/docs/selects_doc.md#selectswith_or
40 ("//bazel/common_config_settings:gl_backend", "//bazel/common_config_settings:vulkan_backend"): [
41 "//src/gpu:srcs",
42 "//src/sksl:srcs",
43 # TODO(kjlubick) should mock be test only?
44 "//include/private:mock-hdrs",
45 "//src/gpu:mock-srcs",
46 ],
47 "//conditions:default": [],
48})
49
50CORE_HDRS = [
Kevin Lubickef3d6af2021-11-12 11:04:17 -050051 "//include/android:hdrs",
Kevin Lubick1f8c31b2021-11-08 15:26:09 -050052 "//include/codec:hdrs",
53 "//include/config:hdrs",
54 "//include/core:hdrs",
55 "//include/effects:hdrs",
56 "//include/encode:hdrs",
57 "//include/pathops:hdrs",
58 "//include/ports:hdrs",
59 "//include/utils:base-hdrs",
60] + selects.with_or({
61 # https://github.com/bazelbuild/bazel-skylib/blob/main/docs/selects_doc.md#selectswith_or
62 ("//bazel/common_config_settings:gl_backend", "//bazel/common_config_settings:vulkan_backend"): [
63 "//include/sksl:hdrs",
64 "//include/gpu:hdrs",
65 # TODO(kjlubick) should mock be test only?
66 "//include/gpu:mock-hdrs",
67 ],
68 "//conditions:default": [],
69})
70
71# Some of these are documented in SkUserConfig.h
Kevin Lubick8ed49ea2021-11-11 12:50:02 -050072CORE_DEFINES = ["SK_HAS_ANDROID_CODEC"] + select({
Kevin Lubick1f8c31b2021-11-08 15:26:09 -050073 "//bazel/common_config_settings:debug_build": [
74 "SK_DEBUG",
75 ],
76 "//bazel/common_config_settings:release_build": [
77 "SK_RELEASE",
78 ],
79 "//conditions:default": [
80 "SK_RELEASE",
81 ],
82}) + select({
83 "//bazel/common_config_settings:gl_backend": [
84 "SK_GL",
85 "SK_SUPPORT_GPU=1",
86 ],
87 "//bazel/common_config_settings:vulkan_backend": [
88 "SK_VULKAN",
89 "SK_SUPPORT_GPU=1",
90 ],
91 "//conditions:default": [
92 "SK_SUPPORT_GPU=0",
93 ],
94}) + select({
95 "//bazel/common_config_settings:gl_standard": [
96 "SK_ASSUME_GL=1",
97 ],
98 "//bazel/common_config_settings:gles_standard": [
99 "SK_ASSUME_GL_ES=1",
100 ],
101 "//bazel/common_config_settings:webgl_standard": [
102 "SK_ASSUME_WEBGL=1",
103 "SK_USE_WEBGL",
104 ],
105 "//conditions:default": [],
Kevin Lubick8ed49ea2021-11-11 12:50:02 -0500106}) + select_multi(
107 {
Kevin Lubickcf1e9592021-11-17 08:05:57 -0500108 "//bazel/common_config_settings:gif_decode_codec": ["SK_HAS_WUFFS_LIBRARY"],
109 "//bazel/common_config_settings:jpeg_decode_codec": ["SK_CODEC_DECODES_JPEG"],
110 "//bazel/common_config_settings:jpeg_encode_codec": ["SK_ENCODE_JPEG"],
111 "//bazel/common_config_settings:png_decode_codec": ["SK_CODEC_DECODES_PNG"],
112 "//bazel/common_config_settings:png_encode_codec": ["SK_ENCODE_PNG"],
113 "//bazel/common_config_settings:raw_decode_codec": [
Kevin Lubick8ed49ea2021-11-11 12:50:02 -0500114 "SK_CODEC_DECODES_RAW",
115 "SK_CODEC_DECODES_JPEG",
116 ],
Kevin Lubickcf1e9592021-11-17 08:05:57 -0500117 "//bazel/common_config_settings:webp_decode_codec": ["SK_CODEC_DECODES_WEBP"],
Kevin Lubick8ed49ea2021-11-11 12:50:02 -0500118 },
119 default = [],
Kevin Lubick888d4ef2021-11-16 14:09:44 -0500120) + select({
121 # working around https://github.com/emscripten-core/emscripten/issues/10072
122 "//bazel/common_config_settings:cpu_wasm": ["SK_FORCE_8_BYTE_ALIGNMENT"],
123 "//conditions:default": [],
124})
125
Kevin Lubickcf1e9592021-11-17 08:05:57 -0500126freetype_fontmgrs = (
127 "//bazel/common_config_settings:custom_directory_fontmgr",
128 "//bazel/common_config_settings:custom_embedded_fontmgr",
129 "//bazel/common_config_settings:custom_empty_fontmgr",
130)
131
132selects.config_setting_group(
133 name = "needs_jpeg",
134 match_any = [
135 "//bazel/common_config_settings:raw_decode_codec",
136 "//bazel/common_config_settings:jpeg_decode_codec",
137 "//bazel/common_config_settings:jpeg_encode_codec",
138 ],
139)
140
141selects.config_setting_group(
142 name = "needs_png",
143 match_any = [
144 "//bazel/common_config_settings:png_decode_codec",
145 "//bazel/common_config_settings:png_encode_codec",
146 ],
147)
148
149selects.config_setting_group(
150 name = "needs_webp",
151 match_any = [
152 "//bazel/common_config_settings:webp_decode_codec",
153 "//bazel/common_config_settings:webp_encode_codec",
154 ],
155)
156
Kevin Lubick888d4ef2021-11-16 14:09:44 -0500157selects.config_setting_group(
158 name = "any_freetype_fontmgr",
159 match_any = [
160 "//bazel/common_config_settings:custom_directory_fontmgr",
161 "//bazel/common_config_settings:custom_embedded_fontmgr",
162 "//bazel/common_config_settings:custom_empty_fontmgr",
163 ],
Kevin Lubick8ed49ea2021-11-11 12:50:02 -0500164)
165
166CORE_DEPS = [] + select_multi(
167 {
Kevin Lubickcf1e9592021-11-17 08:05:57 -0500168 "//bazel/common_config_settings:gif_decode_codec": ["//third_party:wuffs"],
169 ":needs_png": ["//third_party:libpng"],
170 "//bazel/common_config_settings:raw_decode_codec": [
Kevin Lubick8ed49ea2021-11-11 12:50:02 -0500171 "//third_party:piex",
172 "//third_party:dng_sdk",
173 ],
Kevin Lubickcf1e9592021-11-17 08:05:57 -0500174 ":needs_webp": ["//third_party:libwebp"],
175 ":needs_jpeg": ["//third_party:libjpeg-turbo"],
Kevin Lubick8ed49ea2021-11-11 12:50:02 -0500176 },
177 default = [],
Kevin Lubickcf1e9592021-11-17 08:05:57 -0500178) + select({
Kevin Lubick888d4ef2021-11-16 14:09:44 -0500179 ":any_freetype_fontmgr": [
180 "//third_party:freetype2",
181 ],
182 "//conditions:default": [],
Kevin Lubick1f8c31b2021-11-08 15:26:09 -0500183})
184
Kevin Lubick8ed49ea2021-11-11 12:50:02 -0500185CORE_COPTS = []
186
Kevin Lubick1f8c31b2021-11-08 15:26:09 -0500187cc_library(
188 name = "skia-core",
189 srcs = CORE_SRCS,
190 hdrs = CORE_HDRS,
Kevin Lubick8ed49ea2021-11-11 12:50:02 -0500191 copts = CORE_COPTS,
Kevin Lubick1f8c31b2021-11-08 15:26:09 -0500192 local_defines = CORE_DEFINES,
193 textual_hdrs = ["//src/sksl:txts"],
Kevin Lubick8ed49ea2021-11-11 12:50:02 -0500194 deps = CORE_DEPS,
Kevin Lubick1f8c31b2021-11-08 15:26:09 -0500195)
196
197cc_library(
198 name = "hash_and_encode",
199 testonly = True,
200 srcs = [
201 "//tools:cmdline",
202 "//tools:hash_and_encode",
203 ],
204 deps = [
205 ":skia-core",
206 "//third_party:libpng",
207 ],
208)
209
210cc_library(
211 name = "gms",
212 testonly = True,
213 srcs = [
214 "//gm:gms",
215 "//gm:srcs",
216 "//tools:srcs",
217 ],
218 hdrs = [
219 "//gm:hdrs",
220 ],
221 textual_hdrs = ["//tools:txts"],
222 deps = [":skia-core"],
223)
224
225cc_library(
226 name = "tests",
227 testonly = True,
228 srcs = [
229 "//tests:srcs",
230 "//tools:srcs",
231 ],
232 hdrs = [
233 "//tests:hdrs",
234 ],
235 local_defines = [
236 "GR_TEST_UTILS",
237 ],
238 textual_hdrs = ["//tools:txts"],
239 deps = [":skia-core"],
240)