BUILD revision 26fa459c
126fa459cSmrg# Description:
226fa459cSmrg#   Brotli is a generic-purpose lossless compression algorithm.
326fa459cSmrg
426fa459cSmrgpackage(
526fa459cSmrg    default_visibility = ["//visibility:public"],
626fa459cSmrg)
726fa459cSmrg
826fa459cSmrglicenses(["notice"])  # MIT
926fa459cSmrg
1026fa459cSmrgexports_files(["LICENSE"])
1126fa459cSmrg
1226fa459cSmrgconfig_setting(
1326fa459cSmrg    name = "darwin",
1426fa459cSmrg    values = {"cpu": "darwin"},
1526fa459cSmrg    visibility = ["//visibility:public"],
1626fa459cSmrg)
1726fa459cSmrg
1826fa459cSmrgconfig_setting(
1926fa459cSmrg    name = "darwin_x86_64",
2026fa459cSmrg    values = {"cpu": "darwin_x86_64"},
2126fa459cSmrg    visibility = ["//visibility:public"],
2226fa459cSmrg)
2326fa459cSmrg
2426fa459cSmrgconfig_setting(
2526fa459cSmrg    name = "windows",
2626fa459cSmrg    values = {"cpu": "x64_windows"},
2726fa459cSmrg    visibility = ["//visibility:public"],
2826fa459cSmrg)
2926fa459cSmrg
3026fa459cSmrgconfig_setting(
3126fa459cSmrg    name = "windows_msvc",
3226fa459cSmrg    values = {"cpu": "x64_windows_msvc"},
3326fa459cSmrg    visibility = ["//visibility:public"],
3426fa459cSmrg)
3526fa459cSmrg
3626fa459cSmrgconfig_setting(
3726fa459cSmrg    name = "windows_msys",
3826fa459cSmrg    values = {"cpu": "x64_windows_msys"},
3926fa459cSmrg    visibility = ["//visibility:public"],
4026fa459cSmrg)
4126fa459cSmrg
4226fa459cSmrgload(":compiler_config_setting.bzl", "create_msvc_config")
4326fa459cSmrg
4426fa459cSmrgcreate_msvc_config()
4526fa459cSmrg
4626fa459cSmrgSTRICT_C_OPTIONS = select({
4726fa459cSmrg    ":msvc": [],
4826fa459cSmrg    "//conditions:default": [
4926fa459cSmrg        "--pedantic-errors",
5026fa459cSmrg        "-Wall",
5126fa459cSmrg        "-Wconversion",
5226fa459cSmrg        "-Werror",
5326fa459cSmrg        "-Wextra",
5426fa459cSmrg        "-Wlong-long",
5526fa459cSmrg        "-Wmissing-declarations",
5626fa459cSmrg        "-Wmissing-prototypes",
5726fa459cSmrg        "-Wno-strict-aliasing",
5826fa459cSmrg        "-Wshadow",
5926fa459cSmrg        "-Wsign-compare",
6026fa459cSmrg    ],
6126fa459cSmrg})
6226fa459cSmrg
6326fa459cSmrgfilegroup(
6426fa459cSmrg    name = "public_headers",
6526fa459cSmrg    srcs = glob(["c/include/brotli/*.h"]),
6626fa459cSmrg)
6726fa459cSmrg
6826fa459cSmrgfilegroup(
6926fa459cSmrg    name = "common_headers",
7026fa459cSmrg    srcs = glob(["c/common/*.h"]),
7126fa459cSmrg)
7226fa459cSmrg
7326fa459cSmrgfilegroup(
7426fa459cSmrg    name = "common_sources",
7526fa459cSmrg    srcs = glob(["c/common/*.c"]),
7626fa459cSmrg)
7726fa459cSmrg
7826fa459cSmrgfilegroup(
7926fa459cSmrg    name = "dec_headers",
8026fa459cSmrg    srcs = glob(["c/dec/*.h"]),
8126fa459cSmrg)
8226fa459cSmrg
8326fa459cSmrgfilegroup(
8426fa459cSmrg    name = "dec_sources",
8526fa459cSmrg    srcs = glob(["c/dec/*.c"]),
8626fa459cSmrg)
8726fa459cSmrg
8826fa459cSmrgfilegroup(
8926fa459cSmrg    name = "enc_headers",
9026fa459cSmrg    srcs = glob(["c/enc/*.h"]),
9126fa459cSmrg)
9226fa459cSmrg
9326fa459cSmrgfilegroup(
9426fa459cSmrg    name = "enc_sources",
9526fa459cSmrg    srcs = glob(["c/enc/*.c"]),
9626fa459cSmrg)
9726fa459cSmrg
9826fa459cSmrgcc_library(
9926fa459cSmrg    name = "brotli_inc",
10026fa459cSmrg    hdrs = [":public_headers"],
10126fa459cSmrg    copts = STRICT_C_OPTIONS,
10226fa459cSmrg    strip_include_prefix = "c/include",
10326fa459cSmrg)
10426fa459cSmrg
10526fa459cSmrgcc_library(
10626fa459cSmrg    name = "brotlicommon",
10726fa459cSmrg    srcs = [":common_sources"],
10826fa459cSmrg    hdrs = [":common_headers"],
10926fa459cSmrg    copts = STRICT_C_OPTIONS,
11026fa459cSmrg    deps = [":brotli_inc"],
11126fa459cSmrg)
11226fa459cSmrg
11326fa459cSmrgcc_library(
11426fa459cSmrg    name = "brotlidec",
11526fa459cSmrg    srcs = [":dec_sources"],
11626fa459cSmrg    hdrs = [":dec_headers"],
11726fa459cSmrg    copts = STRICT_C_OPTIONS,
11826fa459cSmrg    deps = [":brotlicommon"],
11926fa459cSmrg)
12026fa459cSmrg
12126fa459cSmrgcc_library(
12226fa459cSmrg    name = "brotlienc",
12326fa459cSmrg    srcs = [":enc_sources"],
12426fa459cSmrg    hdrs = [":enc_headers"],
12526fa459cSmrg    copts = STRICT_C_OPTIONS,
12626fa459cSmrg    linkopts = ["-lm"],
12726fa459cSmrg    deps = [":brotlicommon"],
12826fa459cSmrg)
12926fa459cSmrg
13026fa459cSmrgcc_binary(
13126fa459cSmrg    name = "brotli",
13226fa459cSmrg    srcs = ["c/tools/brotli.c"],
13326fa459cSmrg    copts = STRICT_C_OPTIONS,
13426fa459cSmrg    linkstatic = 1,
13526fa459cSmrg    deps = [
13626fa459cSmrg        ":brotlidec",
13726fa459cSmrg        ":brotlienc",
13826fa459cSmrg    ],
13926fa459cSmrg)
14026fa459cSmrg
14126fa459cSmrgfilegroup(
14226fa459cSmrg    name = "dictionary",
14326fa459cSmrg    srcs = ["c/common/dictionary.bin"],
14426fa459cSmrg)
145