third_party: add libpg_query and sqlc

This adds sqlc, a SQL query code generator for Go (and other languages).
It in turn requires pganalyze's libpg_query, which is a C library for
parsing PostgreSQL queries.

To test:

   $ bazel build @com_github_kyleconroy_sqlc//cmd/sqlc

In the future this will be used by Bazel rules to generate sources at
build time.

Change-Id: I369c9ab503e8ce6952fd3f73c233dd3d59922358
Reviewed-on: https://review.monogon.dev/c/monogon/+/882
Tested-by: Jenkins CI
Reviewed-by: Leopold Schabel <leo@monogon.tech>
diff --git a/third_party/libpg_query/external/BUILD.bazel b/third_party/libpg_query/external/BUILD.bazel
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/third_party/libpg_query/external/BUILD.bazel
diff --git a/third_party/libpg_query/external/BUILD.repo b/third_party/libpg_query/external/BUILD.repo
new file mode 100644
index 0000000..c0f98a7
--- /dev/null
+++ b/third_party/libpg_query/external/BUILD.repo
@@ -0,0 +1,63 @@
+filegroup(
+    name = "all",
+    srcs = glob(["**"]),
+    visibility = ["//visibility:public"],
+)
+
+cc_library(
+    name = "libpg_query",
+    srcs = glob([
+        "src/*.c",
+        "src/*.h",
+
+        "vendor/protobuf-c/protobuf-c.h",
+        "vendor/protobuf-c/protobuf-c.c",
+
+        "vendor/xxhash/xxhash.c",
+
+        "protobuf/pg_query.pb-c.c",
+        "protobuf/pg_query.pb-c.h",
+
+        "src/postgres/include/*.h",
+        "src/postgres/include/**/*.h",
+    ], [
+        "src/pg_query_enum_defs.c",
+        "src/pg_query_fingerprint_defs.c",
+        "src/pg_query_fingerprint_conds.c",
+        "src/pg_query_outfuncs_defs.c",
+        "src/pg_query_outfuncs_conds.c",
+        "src/pg_query_readfuncs_defs.c",
+        "src/pg_query_readfuncs_conds.c",
+        "src/pg_query_json_helper.c",
+    ]),
+    textual_hdrs = [
+        "src/pg_query_enum_defs.c",
+        "src/pg_query_fingerprint_defs.c",
+        "src/pg_query_fingerprint_conds.c",
+        "src/pg_query_outfuncs_defs.c",
+        "src/pg_query_outfuncs_conds.c",
+        "src/pg_query_readfuncs_defs.c",
+        "src/pg_query_readfuncs_conds.c",
+        "src/pg_query_json_helper.c",
+    ],
+    hdrs = [
+        "pg_query.h",
+        "vendor/xxhash/xxhash.h",
+    ],
+    # Unfortunate. We should patch this library so that this doesn't pollute
+    # all dependents.
+    includes = [
+        "vendor/xxhash",
+        "src/postgres/include",
+        "vendor",
+        "vendor/protobuf-c",
+        "src",
+    ],
+    copts = [
+        "-Iexternal/libpg_query/protobuf",
+        "-Iexternal/libpg_query/vendor/xxhash",
+    ],
+    visibility = [
+        "@com_github_pganalyze_pg_query_go_v2//:__subpackages__",
+    ],
+)