BUILD.bazel 2.6 KB

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