126fa459cSmrg# Description: 226fa459cSmrg# Brotli is a generic-purpose lossless compression algorithm. 326fa459cSmrg 426fa459cSmrgpackage( 526fa459cSmrg default_visibility = ["//visibility:public"], 626fa459cSmrg) 726fa459cSmrg 826fa459cSmrglicenses(["notice"]) # MIT 926fa459cSmrg 1026fa459cSmrgexports_files(["LICENSE"]) 1126fa459cSmrg 1226fa459cSmrgconfig_setting( 1326fa459cSmrg name = "darwin", 1426fa459cSmrg values = {"cpu": "darwin"}, 1526fa459cSmrg visibility = ["//visibility:public"], 1626fa459cSmrg) 1726fa459cSmrg 1826fa459cSmrgconfig_setting( 1926fa459cSmrg name = "darwin_x86_64", 2026fa459cSmrg values = {"cpu": "darwin_x86_64"}, 2126fa459cSmrg visibility = ["//visibility:public"], 2226fa459cSmrg) 2326fa459cSmrg 2426fa459cSmrgconfig_setting( 2526fa459cSmrg name = "windows", 2626fa459cSmrg values = {"cpu": "x64_windows"}, 2726fa459cSmrg visibility = ["//visibility:public"], 2826fa459cSmrg) 2926fa459cSmrg 3026fa459cSmrgconfig_setting( 3126fa459cSmrg name = "windows_msvc", 3226fa459cSmrg values = {"cpu": "x64_windows_msvc"}, 3326fa459cSmrg visibility = ["//visibility:public"], 3426fa459cSmrg) 3526fa459cSmrg 3626fa459cSmrgconfig_setting( 3726fa459cSmrg name = "windows_msys", 3826fa459cSmrg values = {"cpu": "x64_windows_msys"}, 3926fa459cSmrg visibility = ["//visibility:public"], 4026fa459cSmrg) 4126fa459cSmrg 4226fa459cSmrgload(":compiler_config_setting.bzl", "create_msvc_config") 4326fa459cSmrg 4426fa459cSmrgcreate_msvc_config() 4526fa459cSmrg 4626fa459cSmrgSTRICT_C_OPTIONS = select({ 4726fa459cSmrg ":msvc": [], 4826fa459cSmrg "//conditions:default": [ 4926fa459cSmrg "--pedantic-errors", 5026fa459cSmrg "-Wall", 5126fa459cSmrg "-Wconversion", 5226fa459cSmrg "-Werror", 5326fa459cSmrg "-Wextra", 5426fa459cSmrg "-Wlong-long", 5526fa459cSmrg "-Wmissing-declarations", 5626fa459cSmrg "-Wmissing-prototypes", 5726fa459cSmrg "-Wno-strict-aliasing", 5826fa459cSmrg "-Wshadow", 5926fa459cSmrg "-Wsign-compare", 6026fa459cSmrg ], 6126fa459cSmrg}) 6226fa459cSmrg 6326fa459cSmrgfilegroup( 6426fa459cSmrg name = "public_headers", 6526fa459cSmrg srcs = glob(["c/include/brotli/*.h"]), 6626fa459cSmrg) 6726fa459cSmrg 6826fa459cSmrgfilegroup( 6926fa459cSmrg name = "common_headers", 7026fa459cSmrg srcs = glob(["c/common/*.h"]), 7126fa459cSmrg) 7226fa459cSmrg 7326fa459cSmrgfilegroup( 7426fa459cSmrg name = "common_sources", 7526fa459cSmrg srcs = glob(["c/common/*.c"]), 7626fa459cSmrg) 7726fa459cSmrg 7826fa459cSmrgfilegroup( 7926fa459cSmrg name = "dec_headers", 8026fa459cSmrg srcs = glob(["c/dec/*.h"]), 8126fa459cSmrg) 8226fa459cSmrg 8326fa459cSmrgfilegroup( 8426fa459cSmrg name = "dec_sources", 8526fa459cSmrg srcs = glob(["c/dec/*.c"]), 8626fa459cSmrg) 8726fa459cSmrg 8826fa459cSmrgfilegroup( 8926fa459cSmrg name = "enc_headers", 9026fa459cSmrg srcs = glob(["c/enc/*.h"]), 9126fa459cSmrg) 9226fa459cSmrg 9326fa459cSmrgfilegroup( 9426fa459cSmrg name = "enc_sources", 9526fa459cSmrg srcs = glob(["c/enc/*.c"]), 9626fa459cSmrg) 9726fa459cSmrg 9826fa459cSmrgcc_library( 9926fa459cSmrg name = "brotli_inc", 10026fa459cSmrg hdrs = [":public_headers"], 10126fa459cSmrg copts = STRICT_C_OPTIONS, 10226fa459cSmrg strip_include_prefix = "c/include", 10326fa459cSmrg) 10426fa459cSmrg 10526fa459cSmrgcc_library( 10626fa459cSmrg name = "brotlicommon", 10726fa459cSmrg srcs = [":common_sources"], 10826fa459cSmrg hdrs = [":common_headers"], 10926fa459cSmrg copts = STRICT_C_OPTIONS, 11026fa459cSmrg deps = [":brotli_inc"], 11126fa459cSmrg) 11226fa459cSmrg 11326fa459cSmrgcc_library( 11426fa459cSmrg name = "brotlidec", 11526fa459cSmrg srcs = [":dec_sources"], 11626fa459cSmrg hdrs = [":dec_headers"], 11726fa459cSmrg copts = STRICT_C_OPTIONS, 11826fa459cSmrg deps = [":brotlicommon"], 11926fa459cSmrg) 12026fa459cSmrg 12126fa459cSmrgcc_library( 12226fa459cSmrg name = "brotlienc", 12326fa459cSmrg srcs = [":enc_sources"], 12426fa459cSmrg hdrs = [":enc_headers"], 12526fa459cSmrg copts = STRICT_C_OPTIONS, 12626fa459cSmrg linkopts = ["-lm"], 12726fa459cSmrg deps = [":brotlicommon"], 12826fa459cSmrg) 12926fa459cSmrg 13026fa459cSmrgcc_binary( 13126fa459cSmrg name = "brotli", 13226fa459cSmrg srcs = ["c/tools/brotli.c"], 13326fa459cSmrg copts = STRICT_C_OPTIONS, 13426fa459cSmrg linkstatic = 1, 13526fa459cSmrg deps = [ 13626fa459cSmrg ":brotlidec", 13726fa459cSmrg ":brotlienc", 13826fa459cSmrg ], 13926fa459cSmrg) 14026fa459cSmrg 14126fa459cSmrgfilegroup( 14226fa459cSmrg name = "dictionary", 14326fa459cSmrg srcs = ["c/common/dictionary.bin"], 14426fa459cSmrg) 145