| 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"], |
| ) |