xref: /aosp_15_r20/external/gflags/README.md (revision 08ab5237c114d5c0eac1090c56f941d3f639d7d3)
1*08ab5237SOystein Eftevaag[![Build Status](https://travis-ci.org/gflags/gflags.svg?branch=master)](https://travis-ci.org/gflags/gflags)
2*08ab5237SOystein Eftevaag[![Build status](https://ci.appveyor.com/api/projects/status/4ctod566ysraus74/branch/master?svg=true)](https://ci.appveyor.com/project/schuhschuh/gflags/branch/master)
3*08ab5237SOystein Eftevaag
4*08ab5237SOystein EftevaagThe documentation of the gflags library is available online at https://gflags.github.io/gflags/.
5*08ab5237SOystein Eftevaag
6*08ab5237SOystein Eftevaag
7*08ab5237SOystein Eftevaag11 November 2018
8*08ab5237SOystein Eftevaag----------------
9*08ab5237SOystein Eftevaag
10*08ab5237SOystein EftevaagI've just released gflags 2.2.2.
11*08ab5237SOystein Eftevaag
12*08ab5237SOystein EftevaagThis maintenance release improves lives of Bazel users (no more "config.h" leaking into global include paths),
13*08ab5237SOystein Eftevaagfixes build with recent MinGW versions, and silences a number of static code analyzer and compiler warnings.
14*08ab5237SOystein EftevaagThe build targets exported by the CMake configuration of this library are now also prefixed by the package
15*08ab5237SOystein Eftevaagname "gflags::" following a more recent (unwritten) CMake convention. The unprefixed target names are still
16*08ab5237SOystein Eftevaagsupported to avoid that dependent projects have to be modified due to this change in imported target names.
17*08ab5237SOystein Eftevaag
18*08ab5237SOystein EftevaagPlease report any further issues with this release using the GitHub issue tracker.
19*08ab5237SOystein Eftevaag
20*08ab5237SOystein Eftevaag
21*08ab5237SOystein Eftevaag11 July 2017
22*08ab5237SOystein Eftevaag------------
23*08ab5237SOystein Eftevaag
24*08ab5237SOystein EftevaagI've just released gflags 2.2.1.
25*08ab5237SOystein Eftevaag
26*08ab5237SOystein EftevaagThis maintenance release primarily fixes build issues on Windows and
27*08ab5237SOystein Eftevaagfalse alarms reported by static code analyzers.
28*08ab5237SOystein Eftevaag
29*08ab5237SOystein EftevaagPlease report any further issues with this release using the GitHub issue tracker.
30*08ab5237SOystein Eftevaag
31*08ab5237SOystein Eftevaag
32*08ab5237SOystein Eftevaag25 November 2016
33*08ab5237SOystein Eftevaag----------------
34*08ab5237SOystein Eftevaag
35*08ab5237SOystein EftevaagI've finally released gflags 2.2.0.
36*08ab5237SOystein Eftevaag
37*08ab5237SOystein EftevaagThis release adds support for use of the gflags library as external dependency
38*08ab5237SOystein Eftevaagnot only in projects using CMake, but also [Bazel](https://bazel.build/),
39*08ab5237SOystein Eftevaagor [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/).
40*08ab5237SOystein EftevaagOne new minor feature is added in this release: when a command flag argument
41*08ab5237SOystein Eftevaagcontains dashes, these are implicitly converted to underscores.
42*08ab5237SOystein EftevaagThis is to allow those used to separate words of the flag name by dashes
43*08ab5237SOystein Eftevaagto do so, while the flag variable names are required to use underscores.
44*08ab5237SOystein Eftevaag
45*08ab5237SOystein EftevaagMemory leaks reported by valgrind should be resolved by this release.
46*08ab5237SOystein EftevaagThis release fixes build errors with MS Visual Studio 2015.
47*08ab5237SOystein Eftevaag
48*08ab5237SOystein EftevaagPlease report any further issues with this release using the GitHub issue tracker.
49*08ab5237SOystein Eftevaag
50*08ab5237SOystein Eftevaag
51*08ab5237SOystein Eftevaag24 March 2015
52*08ab5237SOystein Eftevaag-------------
53*08ab5237SOystein Eftevaag
54*08ab5237SOystein EftevaagI've just released gflags 2.1.2.
55*08ab5237SOystein Eftevaag
56*08ab5237SOystein EftevaagThis release completes the namespace change fixes. In particular,
57*08ab5237SOystein Eftevaagit restores binary ABI compatibility with release version 2.0.
58*08ab5237SOystein EftevaagThe deprecated "google" namespace is by default still kept as
59*08ab5237SOystein Eftevaagprimary namespace while symbols are imported into the new "gflags" namespace.
60*08ab5237SOystein EftevaagThis can be overridden using the CMake variable GFLAGS_NAMESPACE.
61*08ab5237SOystein Eftevaag
62*08ab5237SOystein EftevaagOther fixes of the build configuration are related to the (patched)
63*08ab5237SOystein EftevaagCMake modules FindThreads.cmake and CheckTypeSize.cmake. These have
64*08ab5237SOystein Eftevaagbeen removed and instead the C language is enabled again even though
65*08ab5237SOystein Eftevaaggflags is written in C++ only.
66*08ab5237SOystein Eftevaag
67*08ab5237SOystein EftevaagThis release also marks the complete move of the gflags project
68*08ab5237SOystein Eftevaagfrom Google Code to GitHub. Email addresses of original issue
69*08ab5237SOystein Eftevaagreporters got lost in the process. Given the age of most issue reports,
70*08ab5237SOystein Eftevaagthis should be negligable.
71*08ab5237SOystein Eftevaag
72*08ab5237SOystein EftevaagPlease report any further issues using the GitHub issue tracker.
73*08ab5237SOystein Eftevaag
74*08ab5237SOystein Eftevaag
75*08ab5237SOystein Eftevaag30 March 2014
76*08ab5237SOystein Eftevaag-------------
77*08ab5237SOystein Eftevaag
78*08ab5237SOystein EftevaagI've just released gflags 2.1.1.
79*08ab5237SOystein Eftevaag
80*08ab5237SOystein EftevaagThis release fixes a few bugs in the configuration of gflags\_declare.h
81*08ab5237SOystein Eftevaagand adds a separate GFLAGS\_INCLUDE\_DIR CMake variable to the build configuration.
82*08ab5237SOystein EftevaagSetting GFLAGS\_NAMESPACE to "google" no longer changes also the include
83*08ab5237SOystein Eftevaagpath of the public header files. This allows the use of the library with
84*08ab5237SOystein Eftevaagother Google projects such as glog which still use the deprecated "google"
85*08ab5237SOystein Eftevaagnamespace for the gflags library, but include it as "gflags/gflags.h".
86*08ab5237SOystein Eftevaag
87*08ab5237SOystein Eftevaag20 March 2014
88*08ab5237SOystein Eftevaag-------------
89*08ab5237SOystein Eftevaag
90*08ab5237SOystein EftevaagI've just released gflags 2.1.
91*08ab5237SOystein Eftevaag
92*08ab5237SOystein EftevaagThe major changes are the use of CMake for the build configuration instead
93*08ab5237SOystein Eftevaagof the autotools and packaging support through CPack. The default namespace
94*08ab5237SOystein Eftevaagof all C++ symbols is now "gflags" instead of "google". This can be
95*08ab5237SOystein Eftevaagconfigured via the GFLAGS\_NAMESPACE variable.
96*08ab5237SOystein Eftevaag
97*08ab5237SOystein EftevaagThis release compiles with all major compilers without warnings and passed
98*08ab5237SOystein Eftevaagthe unit tests on  Ubuntu 12.04, Windows 7 (Visual Studio 2008 and 2010,
99*08ab5237SOystein EftevaagCygwin, MinGW), and Mac OS X (Xcode 5.1).
100*08ab5237SOystein Eftevaag
101*08ab5237SOystein EftevaagThe SVN repository on Google Code is now frozen and replaced by a Git
102*08ab5237SOystein Eftevaagrepository such that it can be used as Git submodule by projects. The main
103*08ab5237SOystein Eftevaaghosting of this project remains at Google Code. Thanks to the distributed
104*08ab5237SOystein Eftevaagcharacter of Git, I can push (and pull) changes from both GitHub and Google Code
105*08ab5237SOystein Eftevaagin order to keep the two public repositories in sync.
106*08ab5237SOystein EftevaagWhen fixing an issue for a pull request through either of these hosting
107*08ab5237SOystein Eftevaagplatforms, please reference the issue number as
108*08ab5237SOystein Eftevaag[described here](https://code.google.com/p/support/wiki/IssueTracker#Integration_with_version_control).
109*08ab5237SOystein EftevaagFor the further development, I am following the
110*08ab5237SOystein Eftevaag[Git branching model](http://nvie.com/posts/a-successful-git-branching-model/)
111*08ab5237SOystein Eftevaagwith feature branch names prefixed by "feature/" and bugfix branch names
112*08ab5237SOystein Eftevaagprefixed by "bugfix/", respectively.
113*08ab5237SOystein Eftevaag
114*08ab5237SOystein EftevaagBinary and source [packages](https://github.com/schuhschuh/gflags/releases) are available on GitHub.
115*08ab5237SOystein Eftevaag
116*08ab5237SOystein Eftevaag
117*08ab5237SOystein Eftevaag14 January 2014
118*08ab5237SOystein Eftevaag---------------
119*08ab5237SOystein Eftevaag
120*08ab5237SOystein EftevaagThe migration of the build system to CMake is almost complete.
121*08ab5237SOystein EftevaagWhat remains to be done is rewriting the tests in Python such they can be
122*08ab5237SOystein Eftevaagexecuted on non-Unix platforms and splitting them up into separate CTest tests.
123*08ab5237SOystein EftevaagThough merging these changes into the master branch yet remains to be done,
124*08ab5237SOystein Eftevaagit is recommended to already start using the
125*08ab5237SOystein Eftevaag[cmake-migration](https://github.com/schuhschuh/gflags/tree/cmake-migration) branch.
126*08ab5237SOystein Eftevaag
127*08ab5237SOystein Eftevaag
128*08ab5237SOystein Eftevaag20 April 2013
129*08ab5237SOystein Eftevaag-------------
130*08ab5237SOystein Eftevaag
131*08ab5237SOystein EftevaagMore than a year has past since I (Andreas) took over the maintenance for
132*08ab5237SOystein Eftevaag`gflags`. Only few minor changes have been made since then, much to my regret.
133*08ab5237SOystein EftevaagTo get more involved and stimulate participation in the further
134*08ab5237SOystein Eftevaagdevelopment of the library, I moved the project source code today to
135*08ab5237SOystein Eftevaag[GitHub](https://github.com/schuhschuh/gflags).
136*08ab5237SOystein EftevaagI believe that the strengths of [Git](http://git-scm.com/) will allow for better community collaboration
137*08ab5237SOystein Eftevaagas well as ease the integration of changes made by others. I encourage everyone
138*08ab5237SOystein Eftevaagwho would like to contribute to send me pull requests.
139*08ab5237SOystein EftevaagGit's lightweight feature branches will also provide the right tool for more
140*08ab5237SOystein Eftevaagradical changes which should only be merged back into the master branch
141*08ab5237SOystein Eftevaagafter these are complete and implement the desired behavior.
142*08ab5237SOystein Eftevaag
143*08ab5237SOystein EftevaagThe SVN repository remains accessible at Google Code and I will keep the
144*08ab5237SOystein Eftevaagmaster branch of the Git repository hosted at GitHub and the trunk of the
145*08ab5237SOystein EftevaagSubversion repository synchronized. Initially, I was going to simply switch the
146*08ab5237SOystein EftevaagGoogle Code project to Git, but in this case the SVN repository would be
147*08ab5237SOystein Eftevaagfrozen and force everyone who would like the latest development changes to
148*08ab5237SOystein Eftevaaguse Git as well. Therefore I decided to host the public Git repository at GitHub
149*08ab5237SOystein Eftevaaginstead.
150*08ab5237SOystein Eftevaag
151*08ab5237SOystein EftevaagPlease continue to report any issues with gflags on Google Code. The GitHub project will
152*08ab5237SOystein Eftevaagonly be used to host the Git repository.
153*08ab5237SOystein Eftevaag
154*08ab5237SOystein EftevaagOne major change of the project structure I have in mind for the next weeks
155*08ab5237SOystein Eftevaagis the migration from autotools to [CMake](http://www.cmake.org/).
156*08ab5237SOystein EftevaagCheck out the (unstable!)
157*08ab5237SOystein Eftevaag[cmake-migration](https://github.com/schuhschuh/gflags/tree/cmake-migration)
158*08ab5237SOystein Eftevaagbranch on GitHub for details.
159*08ab5237SOystein Eftevaag
160*08ab5237SOystein Eftevaag
161*08ab5237SOystein Eftevaag25 January 2012
162*08ab5237SOystein Eftevaag---------------
163*08ab5237SOystein Eftevaag
164*08ab5237SOystein EftevaagI've just released gflags 2.0.
165*08ab5237SOystein Eftevaag
166*08ab5237SOystein EftevaagThe `google-gflags` project has been renamed to `gflags`.  I
167*08ab5237SOystein Eftevaag(csilvers) am stepping down as maintainer, to be replaced by Andreas
168*08ab5237SOystein EftevaagSchuh.  Welcome to the team, Andreas!  I've seen the energy you have
169*08ab5237SOystein Eftevaagaround gflags and the ideas you have for the project going forward,
170*08ab5237SOystein Eftevaagand look forward to having you on the team.
171*08ab5237SOystein Eftevaag
172*08ab5237SOystein EftevaagI bumped the major version number up to 2 to reflect the new community
173*08ab5237SOystein Eftevaagownership of the project.  All the [changes](ChangeLog.txt)
174*08ab5237SOystein Eftevaagare related to the renaming.  There are no functional changes from
175*08ab5237SOystein Eftevaaggflags 1.7.  In particular, I've kept the code in the namespace
176*08ab5237SOystein Eftevaag`google`, though in a future version it should be renamed to `gflags`.
177*08ab5237SOystein EftevaagI've also kept the `/usr/local/include/google/` subdirectory as
178*08ab5237SOystein Eftevaagsynonym of `/usr/local/include/gflags/`, though the former name has
179*08ab5237SOystein Eftevaagbeen obsolete for some time now.
180*08ab5237SOystein Eftevaag
181*08ab5237SOystein Eftevaag
182*08ab5237SOystein Eftevaag18 January 2011
183*08ab5237SOystein Eftevaag---------------
184*08ab5237SOystein Eftevaag
185*08ab5237SOystein EftevaagThe `google-gflags` Google Code page has been renamed to
186*08ab5237SOystein Eftevaag`gflags`, in preparation for the project being renamed to
187*08ab5237SOystein Eftevaag`gflags`.  In the coming weeks, I'll be stepping down as
188*08ab5237SOystein Eftevaagmaintainer for the gflags project, and as part of that Google is
189*08ab5237SOystein Eftevaagrelinquishing ownership of the project; it will now be entirely
190*08ab5237SOystein Eftevaagcommunity run.  The name change reflects that shift.
191*08ab5237SOystein Eftevaag
192*08ab5237SOystein Eftevaag
193*08ab5237SOystein Eftevaag20 December 2011
194*08ab5237SOystein Eftevaag----------------
195*08ab5237SOystein Eftevaag
196*08ab5237SOystein EftevaagI've just released gflags 1.7.  This is a minor release; the major
197*08ab5237SOystein Eftevaagchange is that `CommandLineFlagInfo` now exports the address in memory
198*08ab5237SOystein Eftevaagwhere the flag is located.  There has also been a bugfix involving
199*08ab5237SOystein Eftevaagvery long --help strings, and some other minor [changes](ChangeLog.txt).
200*08ab5237SOystein Eftevaag
201*08ab5237SOystein Eftevaag29 July 2011
202*08ab5237SOystein Eftevaag------------
203*08ab5237SOystein Eftevaag
204*08ab5237SOystein EftevaagI've just released gflags 1.6.  The major new feature in this release
205*08ab5237SOystein Eftevaagis support for setting version info, so that --version does something
206*08ab5237SOystein Eftevaaguseful.
207*08ab5237SOystein Eftevaag
208*08ab5237SOystein EftevaagOne minor change has required bumping the library number:
209*08ab5237SOystein Eftevaag`ReparseCommandlineFlags` now returns `void` instead of `int` (the int
210*08ab5237SOystein Eftevaagreturn value was always meaningless).  Though I doubt anyone ever used
211*08ab5237SOystein Eftevaagthis (meaningless) return value, technically it's a change to the ABI
212*08ab5237SOystein Eftevaagthat requires a version bump.  A bit sad.
213*08ab5237SOystein Eftevaag
214*08ab5237SOystein EftevaagThere's also a procedural change with this release: I've changed the
215*08ab5237SOystein Eftevaaginternal tools used to integrate Google-supplied patches for gflags
216*08ab5237SOystein Eftevaaginto the opensource release.  These new tools should result in more
217*08ab5237SOystein Eftevaagfrequent updates with better change descriptions.  They will also
218*08ab5237SOystein Eftevaagresult in future `ChangeLog` entries being much more verbose (for better
219*08ab5237SOystein Eftevaagor for worse).
220*08ab5237SOystein Eftevaag
221*08ab5237SOystein EftevaagSee the [ChangeLog](ChangeLog.txt) for a full list of changes for this release.
222*08ab5237SOystein Eftevaag
223*08ab5237SOystein Eftevaag24 January 2011
224*08ab5237SOystein Eftevaag---------------
225*08ab5237SOystein Eftevaag
226*08ab5237SOystein EftevaagI've just released gflags 1.5.  This release has only minor changes
227*08ab5237SOystein Eftevaagfrom 1.4, including some slightly better reporting in --help, and
228*08ab5237SOystein Eftevaagan new memory-cleanup function that can help when running gflags-using
229*08ab5237SOystein Eftevaaglibraries under valgrind.  The major change is to fix up the macros
230*08ab5237SOystein Eftevaag(`DEFINE_bool` and the like) to work more reliably inside namespaces.
231*08ab5237SOystein Eftevaag
232*08ab5237SOystein EftevaagIf you have not had a problem with these macros, and don't need any of
233*08ab5237SOystein Eftevaagthe other changes described, there is no need to upgrade.  See the
234*08ab5237SOystein Eftevaag[ChangeLog](ChangeLog.txt) for a full list of changes for this release.
235*08ab5237SOystein Eftevaag
236*08ab5237SOystein Eftevaag11 October 2010
237*08ab5237SOystein Eftevaag---------------
238*08ab5237SOystein Eftevaag
239*08ab5237SOystein EftevaagI've just released gflags 1.4.  This release has only minor changes
240*08ab5237SOystein Eftevaagfrom 1.3, including some documentation tweaks and some work to make
241*08ab5237SOystein Eftevaagthe library smaller.  If 1.3 is working well for you, there's no
242*08ab5237SOystein Eftevaagparticular reason to upgrade.
243*08ab5237SOystein Eftevaag
244*08ab5237SOystein Eftevaag4 January 2010
245*08ab5237SOystein Eftevaag--------------
246*08ab5237SOystein Eftevaag
247*08ab5237SOystein EftevaagI've just released gflags 1.3.  gflags now compiles under MSVC, and
248*08ab5237SOystein Eftevaagall tests pass.  I **really** never thought non-unix-y Windows folks
249*08ab5237SOystein Eftevaagwould want gflags, but at least some of them do.
250*08ab5237SOystein Eftevaag
251*08ab5237SOystein EftevaagThe major news, though, is that I've separated out the python package
252*08ab5237SOystein Eftevaaginto its own library, [python-gflags](http://code.google.com/p/python-gflags).
253*08ab5237SOystein EftevaagIf you're interested in the Python version of gflags, that's the place to
254*08ab5237SOystein Eftevaagget it now.
255*08ab5237SOystein Eftevaag
256*08ab5237SOystein Eftevaag10 September 2009
257*08ab5237SOystein Eftevaag-----------------
258*08ab5237SOystein Eftevaag
259*08ab5237SOystein EftevaagI've just released gflags 1.2.  The major change from gflags 1.1 is it
260*08ab5237SOystein Eftevaagnow compiles under MinGW (as well as cygwin), and all tests pass.  I
261*08ab5237SOystein Eftevaagnever thought Windows folks would want unix-style command-line flags,
262*08ab5237SOystein Eftevaagsince they're so different from the Windows style, but I guess I was
263*08ab5237SOystein Eftevaagwrong!
264*08ab5237SOystein Eftevaag
265*08ab5237SOystein EftevaagThe other changes are minor, such as support for --htmlxml in the
266*08ab5237SOystein Eftevaagpython version of gflags.
267*08ab5237SOystein Eftevaag
268*08ab5237SOystein Eftevaag15 April 2009
269*08ab5237SOystein Eftevaag-------------
270*08ab5237SOystein Eftevaag
271*08ab5237SOystein EftevaagI've just released gflags 1.1.  It has only minor changes fdrom gflags
272*08ab5237SOystein Eftevaag1.0 (see the [ChangeLog](ChangeLog.txt) for details).
273*08ab5237SOystein EftevaagThe major change is that I moved to a new system for creating .deb and .rpm files.
274*08ab5237SOystein EftevaagThis allows me to create x86\_64 deb and rpm files.
275*08ab5237SOystein Eftevaag
276*08ab5237SOystein EftevaagIn the process of moving to this new system, I noticed an
277*08ab5237SOystein Eftevaaginconsistency: the tar.gz and .rpm files created libraries named
278*08ab5237SOystein Eftevaaglibgflags.so, but the deb file created libgoogle-gflags.so.  I have
279*08ab5237SOystein Eftevaagfixed the deb file to create libraries like the others.  I'm no expert
280*08ab5237SOystein Eftevaagin debian packaging, but I believe this has caused the package name to
281*08ab5237SOystein Eftevaagchange as well.  Please let me know (at
282*08ab5237SOystein Eftevaag[[mailto:[email protected]](mailto:[email protected])
283*08ab5237SOystein Eftevaag[email protected]]) if this causes problems for you --
284*08ab5237SOystein Eftevaagespecially if you know of a fix!  I would be happy to change the deb
285*08ab5237SOystein Eftevaagpackages to add symlinks from the old library name to the new
286*08ab5237SOystein Eftevaag(libgoogle-gflags.so -> libgflags.so), but that is beyond my knowledge
287*08ab5237SOystein Eftevaagof how to make .debs.
288*08ab5237SOystein Eftevaag
289*08ab5237SOystein EftevaagIf you've tried to install a .rpm or .deb and it doesn't work for you,
290*08ab5237SOystein Eftevaaglet me know.  I'm excited to finally have 64-bit package files, but
291*08ab5237SOystein Eftevaagthere may still be some wrinkles in the new system to iron out.
292*08ab5237SOystein Eftevaag
293*08ab5237SOystein Eftevaag1 October 2008
294*08ab5237SOystein Eftevaag--------------
295*08ab5237SOystein Eftevaag
296*08ab5237SOystein Eftevaaggflags 1.0rc2 was out for a few weeks without any issues, so gflags
297*08ab5237SOystein Eftevaag1.0 is now released.  This is much like gflags 0.9.  The major change
298*08ab5237SOystein Eftevaagis that the .h files have been moved from `/usr/include/google` to
299*08ab5237SOystein Eftevaag`/usr/include/gflags`.  While I have backwards-compatibility
300*08ab5237SOystein Eftevaagforwarding headeds in place, please rewrite existing code to say
301*08ab5237SOystein Eftevaag```
302*08ab5237SOystein Eftevaag   #include <gflags/gflags.h>
303*08ab5237SOystein Eftevaag```
304*08ab5237SOystein Eftevaaginstead of
305*08ab5237SOystein Eftevaag```
306*08ab5237SOystein Eftevaag   #include <google/gflags.h>
307*08ab5237SOystein Eftevaag```
308*08ab5237SOystein Eftevaag
309*08ab5237SOystein EftevaagI've kept the default namespace to google.  You can still change with
310*08ab5237SOystein Eftevaagwith the appropriate flag to the configure script (`./configure
311*08ab5237SOystein Eftevaag--help` to see the flags).  If you have feedback as to whether the
312*08ab5237SOystein Eftevaagdefault namespace should change to gflags, which would be a
313*08ab5237SOystein Eftevaagnon-backwards-compatible change, send mail to
314*08ab5237SOystein Eftevaag`[email protected]`!
315*08ab5237SOystein Eftevaag
316*08ab5237SOystein EftevaagVersion 1.0 also has some neat new features, like support for bash
317*08ab5237SOystein Eftevaagcommandline-completion of help flags.  See the [ChangeLog](ChangeLog.txt)
318*08ab5237SOystein Eftevaagfor more details.
319*08ab5237SOystein Eftevaag
320*08ab5237SOystein EftevaagIf I don't hear any bad news for a few weeks, I'll release 1.0-final.
321