xref: /aosp_15_r20/external/skia/src/opts/BUILD.bazel (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker"""
2*c8dee2aaSAndroid Build Coastguard WorkerSkOpts is built differently than the rest of our source files. See //src/core/SkOpts.h for
3*c8dee2aaSAndroid Build Coastguard Workera bit more background about what SkOpts is for and how it works.
4*c8dee2aaSAndroid Build Coastguard Worker
5*c8dee2aaSAndroid Build Coastguard WorkerInstead of bubbling all the headers and sources up to the top level where they are compiled in
6*c8dee2aaSAndroid Build Coastguard Workerone large library, we only bubble up the headers, so the default implementations in those files
7*c8dee2aaSAndroid Build Coastguard Workercan be built against the minimum version of Skia (which the whole library is compiled with).
8*c8dee2aaSAndroid Build Coastguard Worker
9*c8dee2aaSAndroid Build Coastguard WorkerWe create several libraries that contain a single source file and may need to access any of
10*c8dee2aaSAndroid Build Coastguard WorkerSkia's headers. These libraries are each compiled with a different set of compiler flags
11*c8dee2aaSAndroid Build Coastguard Worker(e.g. architecture options) and linked into the final library or binary.
12*c8dee2aaSAndroid Build Coastguard Worker"""
13*c8dee2aaSAndroid Build Coastguard Worker
14*c8dee2aaSAndroid Build Coastguard Workerload("@skia_user_config//:copts.bzl", "DEFAULT_COPTS")
15*c8dee2aaSAndroid Build Coastguard Workerload("//bazel:flags.bzl", "selects")
16*c8dee2aaSAndroid Build Coastguard Workerload("//bazel:skia_rules.bzl", "skia_cc_library", "skia_filegroup")
17*c8dee2aaSAndroid Build Coastguard Worker
18*c8dee2aaSAndroid Build Coastguard Workerpackage(
19*c8dee2aaSAndroid Build Coastguard Worker    default_applicable_licenses = ["//:license"],
20*c8dee2aaSAndroid Build Coastguard Worker    features = [
21*c8dee2aaSAndroid Build Coastguard Worker        # While the OPTS_HDRS are already pulled in as textual_headers,
22*c8dee2aaSAndroid Build Coastguard Worker        # any implicit dependency on the system headers also needs to be textual.
23*c8dee2aaSAndroid Build Coastguard Worker        "-use_header_modules",
24*c8dee2aaSAndroid Build Coastguard Worker    ],
25*c8dee2aaSAndroid Build Coastguard Worker)
26*c8dee2aaSAndroid Build Coastguard Worker
27*c8dee2aaSAndroid Build Coastguard Workerlicenses(["notice"])
28*c8dee2aaSAndroid Build Coastguard Worker
29*c8dee2aaSAndroid Build Coastguard Workerskia_cc_library(
30*c8dee2aaSAndroid Build Coastguard Worker    name = "hsw",  # https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2
31*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
32*c8dee2aaSAndroid Build Coastguard Worker        "SkOpts_hsw.cpp",
33*c8dee2aaSAndroid Build Coastguard Worker        "//include/core:opts_srcs",
34*c8dee2aaSAndroid Build Coastguard Worker        "//include/private:opts_srcs",
35*c8dee2aaSAndroid Build Coastguard Worker        "//src/core:opts_srcs",
36*c8dee2aaSAndroid Build Coastguard Worker        "//src/shaders:opts_srcs",
37*c8dee2aaSAndroid Build Coastguard Worker        "//src/sksl/tracing:opts_srcs",
38*c8dee2aaSAndroid Build Coastguard Worker    ],
39*c8dee2aaSAndroid Build Coastguard Worker    copts = DEFAULT_COPTS + ["-march=haswell"],
40*c8dee2aaSAndroid Build Coastguard Worker    textual_hdrs = [
41*c8dee2aaSAndroid Build Coastguard Worker        "SkRasterPipeline_opts.h",
42*c8dee2aaSAndroid Build Coastguard Worker        ":textual_hdrs",
43*c8dee2aaSAndroid Build Coastguard Worker    ],
44*c8dee2aaSAndroid Build Coastguard Worker    deps = [
45*c8dee2aaSAndroid Build Coastguard Worker        "//modules/skcms",  # Needed to implement SkRasterPipeline_opts.h
46*c8dee2aaSAndroid Build Coastguard Worker        "//src/base",
47*c8dee2aaSAndroid Build Coastguard Worker        "@skia_user_config//:user_config",
48*c8dee2aaSAndroid Build Coastguard Worker    ],
49*c8dee2aaSAndroid Build Coastguard Worker)
50*c8dee2aaSAndroid Build Coastguard Worker
51*c8dee2aaSAndroid Build Coastguard Workerskia_cc_library(
52*c8dee2aaSAndroid Build Coastguard Worker    name = "skx",
53*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
54*c8dee2aaSAndroid Build Coastguard Worker        "SkOpts_skx.cpp",
55*c8dee2aaSAndroid Build Coastguard Worker        "//include/core:opts_srcs",
56*c8dee2aaSAndroid Build Coastguard Worker        "//include/private:opts_srcs",
57*c8dee2aaSAndroid Build Coastguard Worker        "//src/core:opts_srcs",
58*c8dee2aaSAndroid Build Coastguard Worker        "//src/shaders:opts_srcs",
59*c8dee2aaSAndroid Build Coastguard Worker        "//src/sksl/tracing:opts_srcs",
60*c8dee2aaSAndroid Build Coastguard Worker    ],
61*c8dee2aaSAndroid Build Coastguard Worker    copts = DEFAULT_COPTS + ["-march=skylake-avx512"],
62*c8dee2aaSAndroid Build Coastguard Worker    textual_hdrs = [
63*c8dee2aaSAndroid Build Coastguard Worker        "SkRasterPipeline_opts.h",
64*c8dee2aaSAndroid Build Coastguard Worker        ":textual_hdrs",
65*c8dee2aaSAndroid Build Coastguard Worker    ],
66*c8dee2aaSAndroid Build Coastguard Worker    deps = [
67*c8dee2aaSAndroid Build Coastguard Worker        "//modules/skcms",  # Needed to implement SkRasterPipeline_opts.h
68*c8dee2aaSAndroid Build Coastguard Worker        "//src/base",
69*c8dee2aaSAndroid Build Coastguard Worker        "@skia_user_config//:user_config",
70*c8dee2aaSAndroid Build Coastguard Worker    ],
71*c8dee2aaSAndroid Build Coastguard Worker)
72*c8dee2aaSAndroid Build Coastguard Worker
73*c8dee2aaSAndroid Build Coastguard Workerskia_cc_library(
74*c8dee2aaSAndroid Build Coastguard Worker    name = "opts",
75*c8dee2aaSAndroid Build Coastguard Worker    visibility = ["//src/core:__pkg__"],
76*c8dee2aaSAndroid Build Coastguard Worker    deps = selects.with_or({
77*c8dee2aaSAndroid Build Coastguard Worker        ("@platforms//cpu:x86_64", "@platforms//cpu:x86_32"): [
78*c8dee2aaSAndroid Build Coastguard Worker            ":hsw",
79*c8dee2aaSAndroid Build Coastguard Worker            ":skx",
80*c8dee2aaSAndroid Build Coastguard Worker        ],
81*c8dee2aaSAndroid Build Coastguard Worker        "//bazel/common_config_settings:cpu_wasm": [],
82*c8dee2aaSAndroid Build Coastguard Worker        "//conditions:default": [],
83*c8dee2aaSAndroid Build Coastguard Worker    }),
84*c8dee2aaSAndroid Build Coastguard Worker)
85*c8dee2aaSAndroid Build Coastguard Worker
86*c8dee2aaSAndroid Build Coastguard Workerskia_filegroup(
87*c8dee2aaSAndroid Build Coastguard Worker    name = "textual_hdrs",
88*c8dee2aaSAndroid Build Coastguard Worker    srcs = [
89*c8dee2aaSAndroid Build Coastguard Worker        "SkBitmapProcState_opts.h",
90*c8dee2aaSAndroid Build Coastguard Worker        "SkBlitMask_opts.h",
91*c8dee2aaSAndroid Build Coastguard Worker        "SkBlitRow_opts.h",
92*c8dee2aaSAndroid Build Coastguard Worker        "SkMemset_opts.h",
93*c8dee2aaSAndroid Build Coastguard Worker        "SkOpts_RestoreTarget.h",
94*c8dee2aaSAndroid Build Coastguard Worker        "SkOpts_SetTarget.h",
95*c8dee2aaSAndroid Build Coastguard Worker        "SkRasterPipeline_opts.h",
96*c8dee2aaSAndroid Build Coastguard Worker        "SkSwizzler_opts.inc",
97*c8dee2aaSAndroid Build Coastguard Worker    ],
98*c8dee2aaSAndroid Build Coastguard Worker    visibility = [
99*c8dee2aaSAndroid Build Coastguard Worker        "//src/core:__pkg__",
100*c8dee2aaSAndroid Build Coastguard Worker    ],
101*c8dee2aaSAndroid Build Coastguard Worker)
102