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