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