Copyright 2020 The Monogon Project Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


diff -urN com_github_lz4_lz4.orig/lib/BUILD com_github_lz4_lz4/lib/BUILD
--- com_github_lz4_lz4.orig/lib/BUILD	1970-01-01 01:00:00.000000000 +0100
+++ com_github_lz4_lz4/lib/BUILD	2020-06-05 22:00:01.056028668 +0200
@@ -0,0 +1,19 @@
+cc_library(
+    name = "lib",
+    srcs = [
+        "lz4frame.c",
+        "lz4.c",
+        "lz4hc.c",
+        "xxhash.c",
+    ],
+    hdrs = [
+        # Yes, this is also a header. lib/lz4hc.c includes it.
+        "lz4.c",
+        "lz4.h",
+        "lz4frame.h",
+        "lz4hc.h",
+        "xxhash.h",
+    ],
+    strip_include_prefix = "//lib",
+    visibility = ["//visibility:public"],
+)
diff -urN com_github_lz4_lz4.orig/programs/BUILD com_github_lz4_lz4/programs/BUILD
--- com_github_lz4_lz4.orig/programs/BUILD	1970-01-01 01:00:00.000000000 +0100
+++ com_github_lz4_lz4/programs/BUILD	2020-06-05 21:59:06.233821791 +0200
@@ -0,0 +1,22 @@
+cc_binary(
+    name = "lz4",
+    srcs = [
+        "lz4cli.c",
+
+        "lz4io.h",
+        "lz4io.c",
+
+        "bench.h",
+        "bench.c",
+
+        "datagen.h",
+        "datagen.c",
+
+        "platform.h",
+        "util.h",
+    ],
+    deps = [
+        "//lib",
+    ],
+    visibility = ["//visibility:public"],
+)
diff -urN com_github_lz4_lz4.orig/WORKSPACE com_github_lz4_lz4/WORKSPACE
--- com_github_lz4_lz4.orig/WORKSPACE	1970-01-01 01:00:00.000000000 +0100
+++ com_github_lz4_lz4/WORKSPACE	2020-06-05 21:50:45.128930780 +0200
@@ -0,0 +1 @@
+workspace(name = "com_github_lz4_lz4")
