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