Merge pull request #133 from earhart/master

Add Bazel build support
diff --git a/BUILD b/BUILD
new file mode 100644
index 0000000..3e6d358
--- /dev/null
+++ b/BUILD
@@ -0,0 +1,102 @@
+# Bazel build file for gflags
+#
+# See INSTALL.md for instructions for adding gflags to a Bazel workspace.
+
+licenses(["notice"])
+
+cc_library(
+    name = "gflags",
+    srcs = [
+        "src/gflags.cc",
+        "src/gflags_completions.cc",
+        "src/gflags_reporting.cc",
+        "src/mutex.h",
+        "src/util.h",
+        ":config_h",
+        ":gflags_completions_h",
+        ":gflags_declare_h",
+        ":gflags_h",
+        ":includes",
+    ],
+    hdrs = ["gflags.h"],
+    copts = [
+        "-Wno-sign-compare",
+        "-DHAVE_STDINT_H",
+        "-DHAVE_SYS_TYPES_H",
+        "-DHAVE_INTTYPES_H",
+        "-DHAVE_SYS_STAT_H",
+        "-DHAVE_UNISTD_H",
+        "-DHAVE_FNMATCH_H",
+        "-DHAVE_STRTOLL",
+        "-DHAVE_STRTOQ",
+        "-DHAVE_PTHREAD",
+        "-DHAVE_RWLOCK",
+        "-DGFLAGS_INTTYPES_FORMAT_C99",
+    ],
+    includes = [
+        "include",
+    ],
+    visibility = ["//visibility:public"],
+)
+
+genrule(
+    name = "config_h",
+    srcs = [
+        "src/config.h.in",
+    ],
+    outs = [
+        "config.h",
+    ],
+    cmd = "sed -r -e 's,^#cmakedefine,// cmakedefine,' $(<) > $(@)",
+)
+
+genrule(
+    name = "gflags_h",
+    srcs = [
+        "src/gflags.h.in",
+    ],
+    outs = [
+        "gflags.h",
+    ],
+    cmd = "sed -r -e 's/@[A-Z_]+@//' $(<) > $(@)",
+)
+
+genrule(
+    name = "gflags_completions_h",
+    srcs = [
+        "src/gflags_completions.h.in",
+    ],
+    outs = [
+        "gflags_completions.h",
+    ],
+    cmd = "sed -r -e 's/@GFLAGS_NAMESPACE@/gflags/' $(<) > $(@)",
+)
+
+genrule(
+    name = "gflags_declare_h",
+    srcs = [
+        "src/gflags_declare.h.in",
+    ],
+    outs = [
+        "gflags_declare.h",
+    ],
+    cmd = ("sed -r -e '" +
+           "s/@GFLAGS_NAMESPACE@/gflags/;" +
+           "s/@(HAVE_STDINT_H|HAVE_SYS_TYPES_H|HAVE_INTTYPES_H" +
+           "|GFLAGS_INTTYPES_FORMAT_C99)@/1/;" +
+           "s/@([A-Z0-9_]+)@/0/" +
+           "' $(<) > $(@)"),
+)
+
+genrule(
+    name = "includes",
+    srcs = [
+        ":gflags_h",
+        ":gflags_declare_h",
+    ],
+    outs = [
+        "include/gflags/gflags.h",
+        "include/gflags/gflags_declare.h",
+    ],
+    cmd = "mkdir -p $(@D)/include/gflags && cp $(SRCS) $(@D)/include/gflags",
+)
diff --git a/INSTALL.md b/INSTALL.md
index b89d86d..a206bda 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -11,7 +11,7 @@
     sudo apt-get install gflags
 
 
-Compiling the source code
+Compiling the source code with CMake
 =========================
 
 The build system of gflags is since version 2.1 based on [CMake](http://cmake.org).
@@ -65,3 +65,24 @@
 GFLAGS_INCLUDE_DIR          | Name of headers installation directory relative to CMAKE_INSTALL_PREFIX.
 LIBRARY_INSTALL_DIR         | Name of library installation directory relative to CMAKE_INSTALL_PREFIX.
 INSTALL_HEADERS             | Request installation of public header files.
+
+Using gflags with [Bazel](http://bazel.io)
+=========================
+
+To use gflags in a Bazel project, map it in as an external dependency by editing
+your WORKSPACE file:
+
+    git_repository(
+        name = "gflags_git",
+        commit = "",  # Use the current HEAD commit
+        remote = "https://github.com/gflags/gflags.git",
+    )
+
+    bind(
+        name = "gflags",
+        actual = "@gflags_git//:gflags",
+    )
+
+You can then add `//external:gflags` to the `deps` section of a `cc_binary` or
+`cc_library` rule, and `#include <gflags/gflags.h>` to include it in your source
+code.
diff --git a/src/util.h b/src/util.h
index fb59b38..164e3cf 100644
--- a/src/util.h
+++ b/src/util.h
@@ -37,7 +37,6 @@
 #include "config.h"
 
 #include <assert.h>
-#include <config.h>
 #ifdef HAVE_INTTYPES_H
 #  include <inttypes.h>
 #endif