Make snappy builder

Change-Id: Ibbb5403ba8d9017f10b0e5b7dde30f5f3a37682d
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
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"