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