blob: 2e7dcb7aaee3a3a4e103a77e82ff5e9ca9feb0e2 [file] [edit]
load("@rules_oci//oci:defs.bzl", "oci_image", "oci_load", "oci_push")
##################################
# Linux RBE toolchain container. #
##################################
oci_image(
name = "rbe_container_skcms_linux",
base = "@debian10",
tags = [
"manual", # Exclude it from wildcard queries, e.g. "bazel build //...".
"no-remote",
],
tars = ["@rbe-container-apt-install//:flat"],
)
oci_load(
name = "load_rbe_container_skcms_linux",
image = "rbe_container_skcms_linux",
repo_tags = ["gcr.io/skia-public/rbe-container-skcms-linux:latest"],
tags = [
"manual", # Exclude it from wildcard queries, e.g. "bazel build //...".
"no-remote",
],
)
oci_push(
name = "push_rbe_container_skcms_linux",
image = "rbe_container_skcms_linux",
remote_tags = ["latest"],
repository = "gcr.io/skia-public/rbe-container-skcms-linux",
tags = [
"manual", # Exclude it from wildcard queries, e.g. "bazel build //...".
"no-remote",
],
)
#########
# SkCMS #
#########
SHARED_COPTS = select({
"//bazel/common_config_settings:debug_build": [
"--optimize=0",
"--debug",
],
"//bazel/common_config_settings:release_build": [
"--optimize=3",
# Strip dead code (in conjunction with linkopts)
"-fdata-sections",
"-ffunction-sections",
],
"//bazel/common_config_settings:fast_build": [
"--optimize=0",
"-gline-tables-only",
],
})
cc_library(
name = "skcms_internal_headers",
hdrs = [
"src/skcms_internals.h",
"src/skcms_public.h",
],
visibility = ["//fuzz:__pkg__"],
)
cc_library(
name = "skcms_public",
srcs = [
"skcms.cc",
],
hdrs = ["skcms.h"],
copts = SHARED_COPTS,
local_defines = ["SKCMS_IMPLEMENTATION=1"],
deps = [
":skcms_TransformBaseline",
":skcms_internal_headers",
] + select({
"@platforms//cpu:x86_64": [
":skcms_TransformHsw",
":skcms_TransformSkx",
],
"//conditions:default": [],
}),
)
cc_library(
name = "skcms_TransformBaseline",
srcs = [
"src/skcms_Transform.h",
"src/skcms_TransformBaseline.cc",
"src/skcms_internals.h",
"src/skcms_public.h",
],
copts = SHARED_COPTS,
local_defines = ["SKCMS_IMPLEMENTATION=1"],
# This header does not compile on its own and is meant to be included from skcms_Transform*.cc
textual_hdrs = [
"src/Transform_inl.h",
],
)
cc_library(
name = "skcms_TransformHsw",
srcs = [
"src/skcms_Transform.h",
"src/skcms_TransformHsw.cc",
"src/skcms_internals.h",
"src/skcms_public.h",
],
copts = SHARED_COPTS + select({
"@platforms//cpu:x86_64": [
"-mavx2",
"-mf16c",
],
"//conditions:default": [],
}),
local_defines = ["SKCMS_IMPLEMENTATION=1"],
# This header does not compile on its own and is meant to be included from skcms_Transform*.cc
textual_hdrs = [
"src/Transform_inl.h",
],
)
cc_library(
name = "skcms_TransformSkx",
srcs = [
"src/skcms_Transform.h",
"src/skcms_TransformSkx.cc",
"src/skcms_internals.h",
"src/skcms_public.h",
],
copts = SHARED_COPTS + select({
"@platforms//cpu:x86_64": [
"-mavx512f",
"-mavx512dq",
"-mavx512cd",
"-mavx512bw",
"-mavx512vl",
],
"//conditions:default": [],
}),
local_defines = ["SKCMS_IMPLEMENTATION=1"],
# This header does not compile on its own and is meant to be included from skcms_Transform*.cc
textual_hdrs = [
"src/Transform_inl.h",
],
)
cc_library(
name = "skcms",
hdrs = ["skcms.h"],
copts = SHARED_COPTS,
visibility = ["//visibility:public"],
deps = [
":skcms_TransformBaseline",
":skcms_TransformHsw",
":skcms_TransformSkx",
":skcms_public",
],
)
cc_library(
name = "test_only",
testonly = True,
srcs = ["test_only.c"],
hdrs = ["test_only.h"],
copts = SHARED_COPTS,
deps = [":skcms"],
)
cc_test(
name = "tests",
size = "small",
srcs = ["tests.c"],
copts = SHARED_COPTS,
data = glob(["profiles/**"]),
deps = [
":skcms",
":test_only",
],
)
cc_binary(
name = "iccdump",
testonly = True,
srcs = ["iccdump.c"],
copts = SHARED_COPTS,
linkopts = ["-ldl"],
deps = [
":skcms",
":test_only",
],
)
cc_binary(
name = "bench",
srcs = ["bench.c"],
copts = SHARED_COPTS,
deps = [":skcms"],
)