1 # ------------------------------------------------------------------------------
2 # Add native rules to configure source files
3 def gflags_sources(namespace=["google", "gflags"]):
6 srcs = ["src/config.h.in"],
8 cmd = "awk '{ gsub(/^#cmakedefine/, \"//cmakedefine\"); print; }' $(<) > $(@)"
11 name = "gflags_declare_h",
12 srcs = ["src/gflags_declare.h.in"],
13 outs = ["gflags/gflags_declare.h"],
15 "gsub(/@GFLAGS_NAMESPACE@/, \"" + namespace[0] + "\"); " +
16 "gsub(/@(HAVE_STDINT_H|HAVE_SYS_TYPES_H|HAVE_INTTYPES_H|GFLAGS_INTTYPES_FORMAT_C99)@/, \"1\"); " +
17 "gsub(/@([A-Z0-9_]+)@/, \"0\"); " +
18 "print; }' $(<) > $(@)")
20 gflags_ns_h_files = []
21 for ns in namespace[1:]:
22 gflags_ns_h_file = "gflags_{}.h".format(ns)
24 name = gflags_ns_h_file.replace('.', '_'),
25 srcs = ["src/gflags_ns.h.in"],
26 outs = ["gflags/" + gflags_ns_h_file],
28 "gsub(/@ns@/, \"" + ns + "\"); " +
29 "gsub(/@NS@/, \"" + ns.upper() + "\"); " +
30 "print; }' $(<) > $(@)")
32 gflags_ns_h_files.append(gflags_ns_h_file)
35 srcs = ["src/gflags.h.in"],
36 outs = ["gflags/gflags.h"],
38 "gsub(/@GFLAGS_ATTRIBUTE_UNUSED@/, \"\"); " +
39 "gsub(/@INCLUDE_GFLAGS_NS_H@/, \"" + '\n'.join(["#include \\\"gflags/{}\\\"".format(hdr) for hdr in gflags_ns_h_files]) + "\"); " +
40 "print; }' $(<) > $(@)")
43 name = "gflags_completions_h",
44 srcs = ["src/gflags_completions.h.in"],
45 outs = ["gflags/gflags_completions.h"],
46 cmd = "awk '{ gsub(/@GFLAGS_NAMESPACE@/, \"" + namespace[0] + "\"); print; }' $(<) > $(@)"
48 hdrs = [":gflags_h", ":gflags_declare_h", ":gflags_completions_h"]
49 hdrs.extend([':' + hdr.replace('.', '_') for hdr in gflags_ns_h_files])
53 "src/gflags_completions.cc",
54 "src/gflags_reporting.cc",
60 # ------------------------------------------------------------------------------
61 # Add native rule to build gflags library
62 def gflags_library(hdrs=[], srcs=[], threads=1):
75 "-DGFLAGS_INTTYPES_FORMAT_C99",
76 "-DGFLAGS_IS_A_DLL=0",
80 linkopts.append("-lpthread")
83 copts.append("-DNO_THREADS")
88 includes = ["$(GENDIR)"],
91 visibility = ["//visibility:public"]