Home | History | Annotate | Download | only in brotli
      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 config_setting(
     43     name = "msvc",
     44     values = {"compiler": "msvc-cl"},
     45     visibility = ["//visibility:public"],
     46 )
     47 
     48 STRICT_C_OPTIONS = select({
     49     ":msvc": [],
     50     "//conditions:default": [
     51         "--pedantic-errors",
     52         "-Wall",
     53         "-Wconversion",
     54         "-Werror",
     55         "-Wextra",
     56         "-Wlong-long",
     57         "-Wmissing-declarations",
     58         "-Wmissing-prototypes",
     59         "-Wno-strict-aliasing",
     60         "-Wshadow",
     61         "-Wsign-compare",
     62     ],
     63 })
     64 
     65 filegroup(
     66     name = "public_headers",
     67     srcs = glob(["c/include/brotli/*.h"]),
     68 )
     69 
     70 filegroup(
     71     name = "common_headers",
     72     srcs = glob(["c/common/*.h"]),
     73 )
     74 
     75 filegroup(
     76     name = "common_sources",
     77     srcs = glob(["c/common/*.c"]),
     78 )
     79 
     80 filegroup(
     81     name = "dec_headers",
     82     srcs = glob(["c/dec/*.h"]),
     83 )
     84 
     85 filegroup(
     86     name = "dec_sources",
     87     srcs = glob(["c/dec/*.c"]),
     88 )
     89 
     90 filegroup(
     91     name = "enc_headers",
     92     srcs = glob(["c/enc/*.h"]),
     93 )
     94 
     95 filegroup(
     96     name = "enc_sources",
     97     srcs = glob(["c/enc/*.c"]),
     98 )
     99 
    100 cc_library(
    101     name = "brotli_inc",
    102     hdrs = [":public_headers"],
    103     copts = STRICT_C_OPTIONS,
    104     includes = ["c/include"],
    105 )
    106 
    107 cc_library(
    108     name = "brotlicommon",
    109     srcs = [":common_sources"],
    110     hdrs = [":common_headers"],
    111     copts = STRICT_C_OPTIONS,
    112     deps = [":brotli_inc"],
    113 )
    114 
    115 cc_library(
    116     name = "brotlidec",
    117     srcs = [":dec_sources"],
    118     hdrs = [":dec_headers"],
    119     copts = STRICT_C_OPTIONS,
    120     deps = [":brotlicommon"],
    121 )
    122 
    123 cc_library(
    124     name = "brotlienc",
    125     srcs = [":enc_sources"],
    126     hdrs = [":enc_headers"],
    127     copts = STRICT_C_OPTIONS,
    128     linkopts = ["-lm"],
    129     deps = [":brotlicommon"],
    130 )
    131 
    132 cc_binary(
    133     name = "brotli",
    134     srcs = ["c/tools/brotli.c"],
    135     copts = STRICT_C_OPTIONS,
    136     linkstatic = 1,
    137     deps = [
    138         ":brotlidec",
    139         ":brotlienc",
    140     ],
    141 )
    142 
    143 filegroup(
    144     name = "dictionary",
    145     srcs = ["c/common/dictionary.bin"],
    146 )
    147