Make snappy builder

Change-Id: Ibbb5403ba8d9017f10b0e5b7dde30f5f3a37682d
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/WORKSPACE b/WORKSPACE
index 7137327..1d27e69 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -864,3 +864,8 @@
     sha256 = "18db35669ee49a5f8324a344071dd4ab553e716f385fb75747b909bd1de959f5",
     urls = ["https://www.frc971.org/Build-Dependencies/lzma_arm64.tar.gz"],
 )
+
+local_repository(
+    name = "snappy",
+    path = "third_party/snappy",
+)
diff --git a/third_party/snappy/BUILD b/third_party/snappy/BUILD
new file mode 100644
index 0000000..e519ee4
--- /dev/null
+++ b/third_party/snappy/BUILD
@@ -0,0 +1,22 @@
+genrule(
+    name = "make_stubs_public",
+    outs = ["snappy-stubs-public.h"],
+    cmd = "echo \"#include <cstddef>\n#include <sys/uio.h>\n\" > $@",
+)
+
+cc_library(
+    name = "snappy",
+    srcs = [
+        "snappy.cc",
+        "snappy-internal.h",
+        "snappy-sinksource.cc",
+        "snappy-sinksource.h",
+        "snappy-stubs-internal.cc",
+        "snappy-stubs-internal.h",
+    ],
+    hdrs = [
+        "snappy.h",
+        "snappy-stubs-public.h",
+    ],
+    copts = ["-Wno-sign-compare"],
+)
diff --git a/third_party/snappy/WORKSPACE b/third_party/snappy/WORKSPACE
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/third_party/snappy/WORKSPACE
diff --git a/third_party/snappy/snappy.cc b/third_party/snappy/snappy.cc
index 670b87e..4378c9e 100644
--- a/third_party/snappy/snappy.cc
+++ b/third_party/snappy/snappy.cc
@@ -1041,7 +1041,7 @@
   size_t literal_len = *tag >> 2;
   size_t tag_type = *tag;
   bool is_literal;
-#if defined(__GNUC__) && defined(__x86_64__)
+#if defined(__GNUC__) && defined(__x86_64__) && defined(__GCC_ASM_FLAG_OUTPUTS__)
   // TODO clang misses the fact that the (c & 3) already correctly
   // sets the zero flag.
   asm("and $3, %k[tag_type]\n\t"