new file mode 100644
@@ -0,0 +1,203 @@
+# Mirror core-git COPTS so reftable compiles without warning in CGit.
+GIT_COPTS = [
+ "-DREFTABLE_STANDALONE",
+ "-Wall",
+ "-Werror",
+ "-Wdeclaration-after-statement",
+ "-Wstrict-prototypes",
+ "-Wformat-security",
+ "-Wno-format-zero-length",
+ "-Wold-style-definition",
+ "-Woverflow",
+ "-Wpointer-arith",
+ "-Wstrict-prototypes",
+ "-Wunused",
+ "-Wvla",
+ "-Wextra",
+ "-Wmissing-prototypes",
+ "-Wno-empty-body",
+ "-Wno-missing-field-initializers",
+ "-Wno-sign-compare",
+ "-Werror=strict-aliasing",
+ "-Wno-unused-parameter",
+]
+
+cc_library(
+ name = "reftable",
+ srcs = [
+ "basics.c",
+ "block.c",
+ "compat.c",
+ "file.c",
+ "iter.c",
+ "merged.c",
+ "pq.c",
+ "reader.c",
+ "record.c",
+ "refname.c",
+ "reftable.c",
+ "strbuf.c",
+ "stack.c",
+ "tree.c",
+ "writer.c",
+ "zlib-compat.c",
+ "basics.h",
+ "block.h",
+ "compat.h",
+ "constants.h",
+ "iter.h",
+ "merged.h",
+ "pq.h",
+ "reader.h",
+ "refname.h",
+ "record.h",
+ "strbuf.h",
+ "stack.h",
+ "system.h",
+ "tree.h",
+ "writer.h",
+ ],
+ hdrs = [
+ "reftable.h",
+ ],
+ includes = [
+ "include",
+ ],
+ copts = [
+ "-fvisibility=protected",
+ ] + GIT_COPTS,
+ deps = ["@zlib"],
+ visibility = ["//visibility:public"]
+)
+
+cc_library(
+ name = "testlib",
+ srcs = [
+ "test_framework.c",
+ "dump.c",
+ "test_framework.h",
+ ],
+ hdrs = [
+ "reftable-tests.h",
+ ],
+ copts = GIT_COPTS,
+ deps = [":reftable"],
+ visibility = ["//visibility:public"]
+)
+
+cc_test(
+ name = "record_test",
+ srcs = ["record_test.c"],
+ deps = [
+ ":reftable",
+ ":testlib",
+ ],
+ copts = [
+ "-Drecord_test_main=main",
+ "-fvisibility=protected",
+ ] + GIT_COPTS,
+)
+
+cc_test(
+ name = "reftable_test",
+ srcs = ["reftable_test.c"],
+ deps = [
+ ":reftable",
+ ":testlib",
+ ],
+ copts = [
+ "-Dreftable_test_main=main",
+ "-fvisibility=protected",
+ ] + GIT_COPTS,
+)
+
+cc_test(
+ name = "strbuf_test",
+ srcs = ["strbuf_test.c"],
+ deps = [
+ ":reftable",
+ ":testlib",
+ ] ,
+ copts = [
+ "-Dstrbuf_test_main=main",
+ "-fvisibility=protected",
+ ] + GIT_COPTS,
+)
+
+cc_test(
+ name = "stack_test",
+ srcs = ["stack_test.c"],
+ deps = [
+ ":reftable",
+ ":testlib",
+ ],
+ copts = [
+ "-Dstack_test_main=main",
+ "-fvisibility=protected",
+ ] + GIT_COPTS,
+)
+
+cc_test(
+ name = "tree_test",
+ srcs = ["tree_test.c"],
+ deps = [
+ ":reftable",
+ ":testlib",
+ ],
+ copts = [
+ "-Dtree_test_main=main",
+ "-fvisibility=protected",
+ ] + GIT_COPTS,
+)
+
+cc_test(
+ name = "block_test",
+ srcs = ["block_test.c"],
+ deps = [
+ ":reftable",
+ ":testlib",
+ ],
+ copts = [
+ "-Dblock_test_main=main",
+ "-fvisibility=protected",
+ ] + GIT_COPTS,
+)
+
+cc_test(
+ name = "refname_test",
+ srcs = ["refname_test.c"],
+ deps = [
+ ":reftable",
+ ":testlib",
+ ],
+ copts = [
+ "-Drefname_test_main=main",
+ "-fvisibility=protected",
+ ] + GIT_COPTS,
+)
+
+cc_test(
+ name = "merged_test",
+ srcs = ["merged_test.c"],
+ deps = [
+ ":reftable",
+ ":testlib",
+ ],
+ copts = [
+ "-Dmerged_test_main=main",
+ "-fvisibility=protected",
+ ] + GIT_COPTS,
+)
+
+[sh_test(
+ name = "%s_valgrind_test" % t,
+ srcs = [ "valgrind_test.sh" ],
+ args = [ t ],
+ data = [ t ])
+ for t in ["record_test",
+ "merged_test",
+ "refname_test",
+ "tree_test",
+ "block_test",
+ "strbuf_test",
+ "stack_test"]]
new file mode 100644
@@ -0,0 +1,33 @@
+This directory contains an implementation of the reftable library.
+
+The library is integrated into the git-core project, but can also be built
+standalone, by compiling with -DREFTABLE_STANDALONE. The standalone build is
+exercised by the accompanying BUILD/WORKSPACE files, and can be run as
+
+ bazel test :all
+
+It includes a fragment of the zlib library to provide uncompress2(), which is a
+recent addition to the API. zlib is licensed as follows:
+
+```
+ (C) 1995-2017 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+ Jean-loup Gailly Mark Adler
+ jloup@gzip.org madler@alumni.caltech.edu
+```
new file mode 100644
@@ -0,0 +1,14 @@
+workspace(name = "reftable")
+
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+http_archive(
+ name = "zlib",
+ build_file = "@//:zlib.BUILD",
+ sha256 = "c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1",
+ strip_prefix = "zlib-1.2.11",
+ urls = [
+ "https://mirror.bazel.build/zlib.net/zlib-1.2.11.tar.gz",
+ "https://zlib.net/zlib-1.2.11.tar.gz",
+ ],
+)
new file mode 100644
@@ -0,0 +1,36 @@
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"]) # BSD/MIT-like license (for zlib)
+
+cc_library(
+ name = "zlib",
+ srcs = [
+ "adler32.c",
+ "compress.c",
+ "crc32.c",
+ "crc32.h",
+ "deflate.c",
+ "deflate.h",
+ "gzclose.c",
+ "gzguts.h",
+ "gzlib.c",
+ "gzread.c",
+ "gzwrite.c",
+ "infback.c",
+ "inffast.c",
+ "inffast.h",
+ "inffixed.h",
+ "inflate.c",
+ "inflate.h",
+ "inftrees.c",
+ "inftrees.h",
+ "trees.c",
+ "trees.h",
+ "uncompr.c",
+ "zconf.h",
+ "zutil.c",
+ "zutil.h",
+ ],
+ hdrs = ["zlib.h"],
+ includes = ["."],
+)