Edit

kc3-lang/brotli/BUILD

Branch :

  • Show log

    Commit

  • Author : Felix Hanau
    Date : 2023-07-03 05:43:35
    Hash : 534076fa
    Message : Add support for clang-cl compiler (#1021)

  • BUILD
  • # Description:
    #   Brotli is a generic-purpose lossless compression algorithm.
    
    load(":compiler_config_setting.bzl", "create_msvc_config")
    
    package(
        default_visibility = ["//visibility:public"],
    )
    
    licenses(["notice"])  # MIT
    
    exports_files(["LICENSE"])
    
    config_setting(
        name = "darwin",
        values = {"cpu": "darwin"},
        visibility = ["//visibility:public"],
    )
    
    config_setting(
        name = "darwin_x86_64",
        values = {"cpu": "darwin_x86_64"},
        visibility = ["//visibility:public"],
    )
    
    config_setting(
        name = "windows",
        values = {"cpu": "x64_windows"},
        visibility = ["//visibility:public"],
    )
    
    config_setting(
        name = "windows_msvc",
        values = {"cpu": "x64_windows_msvc"},
        visibility = ["//visibility:public"],
    )
    
    config_setting(
        name = "windows_msys",
        values = {"cpu": "x64_windows_msys"},
        visibility = ["//visibility:public"],
    )
    
    create_msvc_config()
    
    STRICT_C_OPTIONS = select({
        ":msvc": [],
        ":clang-cl": [
            "/W4",
            "-Wconversion",
            "-Wlong-long",
            "-Wmissing-declarations",
            "-Wmissing-prototypes",
            "-Wno-strict-aliasing",
            "-Wshadow",
            "-Wsign-compare",
            "-Wno-sign-conversion",
        ],
        "//conditions:default": [
            "--pedantic-errors",
            "-Wall",
            "-Wconversion",
            "-Werror",
            "-Wextra",
            "-Wlong-long",
            "-Wmissing-declarations",
            "-Wmissing-prototypes",
            "-Wno-strict-aliasing",
            "-Wshadow",
            "-Wsign-compare",
        ],
    })
    
    filegroup(
        name = "public_headers",
        srcs = glob(["c/include/brotli/*.h"]),
    )
    
    filegroup(
        name = "common_headers",
        srcs = glob(["c/common/*.h"]),
    )
    
    filegroup(
        name = "common_sources",
        srcs = glob(["c/common/*.c"]),
    )
    
    filegroup(
        name = "dec_headers",
        srcs = glob(["c/dec/*.h"]),
    )
    
    filegroup(
        name = "dec_sources",
        srcs = glob(["c/dec/*.c"]),
    )
    
    filegroup(
        name = "enc_headers",
        srcs = glob(["c/enc/*.h"]),
    )
    
    filegroup(
        name = "enc_sources",
        srcs = glob(["c/enc/*.c"]),
    )
    
    cc_library(
        name = "brotli_inc",
        hdrs = [":public_headers"],
        copts = STRICT_C_OPTIONS,
        strip_include_prefix = "c/include",
    )
    
    cc_library(
        name = "brotlicommon",
        srcs = [":common_sources"],
        hdrs = [":common_headers"],
        copts = STRICT_C_OPTIONS,
        deps = [":brotli_inc"],
    )
    
    cc_library(
        name = "brotlidec",
        srcs = [":dec_sources"],
        hdrs = [":dec_headers"],
        copts = STRICT_C_OPTIONS,
        deps = [":brotlicommon"],
    )
    
    cc_library(
        name = "brotlienc",
        srcs = [":enc_sources"],
        hdrs = [":enc_headers"],
        copts = STRICT_C_OPTIONS,
        linkopts = select({
            ":clang-cl": [],
            ":msvc": [],
            "//conditions:default": ["-lm"],
        }),
        deps = [":brotlicommon"],
    )
    
    cc_binary(
        name = "brotli",
        srcs = ["c/tools/brotli.c"],
        copts = STRICT_C_OPTIONS,
        linkstatic = 1,
        deps = [
            ":brotlidec",
            ":brotlienc",
        ],
    )
    
    filegroup(
        name = "dictionary",
        srcs = ["c/common/dictionary.bin"],
    )