Home | History | Annotate | Line # | Download | only in dist
      1 # Description:
      2 #   Brotli is a generic-purpose lossless compression algorithm.
      3 
      4 package(
      5     default_visibility = ["//visibility:public"],
      6 )
      7 
      8 licenses(["notice"])  # MIT
      9 
     10 exports_files(["LICENSE"])
     11 
     12 config_setting(
     13     name = "darwin",
     14     values = {"cpu": "darwin"},
     15     visibility = ["//visibility:public"],
     16 )
     17 
     18 config_setting(
     19     name = "darwin_x86_64",
     20     values = {"cpu": "darwin_x86_64"},
     21     visibility = ["//visibility:public"],
     22 )
     23 
     24 config_setting(
     25     name = "windows",
     26     values = {"cpu": "x64_windows"},
     27     visibility = ["//visibility:public"],
     28 )
     29 
     30 config_setting(
     31     name = "windows_msvc",
     32     values = {"cpu": "x64_windows_msvc"},
     33     visibility = ["//visibility:public"],
     34 )
     35 
     36 config_setting(
     37     name = "windows_msys",
     38     values = {"cpu": "x64_windows_msys"},
     39     visibility = ["//visibility:public"],
     40 )
     41 
     42 load(":compiler_config_setting.bzl", "create_msvc_config")
     43 
     44 create_msvc_config()
     45 
     46 STRICT_C_OPTIONS = select({
     47     ":msvc": [],
     48     "//conditions:default": [
     49         "--pedantic-errors",
     50         "-Wall",
     51         "-Wconversion",
     52         "-Werror",
     53         "-Wextra",
     54         "-Wlong-long",
     55         "-Wmissing-declarations",
     56         "-Wmissing-prototypes",
     57         "-Wno-strict-aliasing",
     58         "-Wshadow",
     59         "-Wsign-compare",
     60     ],
     61 })
     62 
     63 filegroup(
     64     name = "public_headers",
     65     srcs = glob(["c/include/brotli/*.h"]),
     66 )
     67 
     68 filegroup(
     69     name = "common_headers",
     70     srcs = glob(["c/common/*.h"]),
     71 )
     72 
     73 filegroup(
     74     name = "common_sources",
     75     srcs = glob(["c/common/*.c"]),
     76 )
     77 
     78 filegroup(
     79     name = "dec_headers",
     80     srcs = glob(["c/dec/*.h"]),
     81 )
     82 
     83 filegroup(
     84     name = "dec_sources",
     85     srcs = glob(["c/dec/*.c"]),
     86 )
     87 
     88 filegroup(
     89     name = "enc_headers",
     90     srcs = glob(["c/enc/*.h"]),
     91 )
     92 
     93 filegroup(
     94     name = "enc_sources",
     95     srcs = glob(["c/enc/*.c"]),
     96 )
     97 
     98 cc_library(
     99     name = "brotli_inc",
    100     hdrs = [":public_headers"],
    101     copts = STRICT_C_OPTIONS,
    102     strip_include_prefix = "c/include",
    103 )
    104 
    105 cc_library(
    106     name = "brotlicommon",
    107     srcs = [":common_sources"],
    108     hdrs = [":common_headers"],
    109     copts = STRICT_C_OPTIONS,
    110     deps = [":brotli_inc"],
    111 )
    112 
    113 cc_library(
    114     name = "brotlidec",
    115     srcs = [":dec_sources"],
    116     hdrs = [":dec_headers"],
    117     copts = STRICT_C_OPTIONS,
    118     deps = [":brotlicommon"],
    119 )
    120 
    121 cc_library(
    122     name = "brotlienc",
    123     srcs = [":enc_sources"],
    124     hdrs = [":enc_headers"],
    125     copts = STRICT_C_OPTIONS,
    126     linkopts = ["-lm"],
    127     deps = [":brotlicommon"],
    128 )
    129 
    130 cc_binary(
    131     name = "brotli",
    132     srcs = ["c/tools/brotli.c"],
    133     copts = STRICT_C_OPTIONS,
    134     linkstatic = 1,
    135     deps = [
    136         ":brotlidec",
    137         ":brotlienc",
    138     ],
    139 )
    140 
    141 filegroup(
    142     name = "dictionary",
    143     srcs = ["c/common/dictionary.bin"],
    144 )
    145