Commit 2b66a844 authored by Craig Silverstein's avatar Craig Silverstein

Tue Jun 12 15:23:42 2007 Google Inc. <opensource@google.com>

	* google-gflags: version 0.5
	* Include all m4 macros in the distribution (csilvers)
	* Python: Fix broken data_files field in setup.py (sidlon)
	* Python: better string serliaizing and unparsing (abo, csimmons)
	* Fix checks for NaN and inf to work with Mac OS X (csilvers)


git-svn-id: https://gflags.googlecode.com/svn/trunk@15 6586e3c6-dcc4-952a-343f-ff74eb82781d
parent 690172b4
...@@ -27,3 +27,11 @@ Thu Apr 19 15:15:07 2007 Google Inc. <opensource@google.com> ...@@ -27,3 +27,11 @@ Thu Apr 19 15:15:07 2007 Google Inc. <opensource@google.com>
* Remove is_default from GetCommandLineFlagInfo (csilvers) * Remove is_default from GetCommandLineFlagInfo (csilvers)
* Portability fixes: includes, strtoll, gcc4.3 errors (csilvers) * Portability fixes: includes, strtoll, gcc4.3 errors (csilvers)
* A few doc typo cleanups (csilvers) * A few doc typo cleanups (csilvers)
Tue Jun 12 15:23:42 2007 Google Inc. <opensource@google.com>
* google-gflags: version 0.5
* Include all m4 macros in the distribution (csilvers)
* Python: Fix broken data_files field in setup.py (sidlon)
* Python: better string serliaizing and unparsing (abo, csimmons)
* Fix checks for NaN and inf to work with Mac OS X (csilvers)
Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software Installation Instructions
Foundation, Inc. *************************
This file is free documentation; the Free Software Foundation gives Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
unlimited permission to copy, distribute and modify it. Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation Basic Installation
================== ==================
These are generic installation instructions. These are generic installation instructions.
The `configure' shell script attempts to guess correct values for The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses various system-dependent variables used during compilation. It uses
...@@ -68,9 +70,9 @@ The simplest way to compile this package is: ...@@ -68,9 +70,9 @@ The simplest way to compile this package is:
Compilers and Options Compilers and Options
===================== =====================
Some systems require unusual options for compilation or linking that Some systems require unusual options for compilation or linking that the
the `configure' script does not know about. Run `./configure --help' `configure' script does not know about. Run `./configure --help' for
for details on some of the pertinent environment variables. details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here by setting variables in the command line or in the environment. Here
...@@ -83,7 +85,7 @@ is an example: ...@@ -83,7 +85,7 @@ is an example:
Compiling For Multiple Architectures Compiling For Multiple Architectures
==================================== ====================================
You can compile the package for more than one kind of computer at the You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the supports the `VPATH' variable, such as GNU `make'. `cd' to the
...@@ -100,19 +102,19 @@ for another architecture. ...@@ -100,19 +102,19 @@ for another architecture.
Installation Names Installation Names
================== ==================
By default, `make install' will install the package's files in By default, `make install' installs the package's commands under
`/usr/local/bin', `/usr/local/man', etc. You can specify an `/usr/local/bin', include files under `/usr/local/include', etc. You
installation prefix other than `/usr/local' by giving `configure' the can specify an installation prefix other than `/usr/local' by giving
option `--prefix=PATH'. `configure' the option `--prefix=PREFIX'.
You can specify separate installation prefixes for You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PATH as the prefix for installing programs and libraries. PREFIX as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix. Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give In addition, if you use an unusual directory layout you can give
options like `--bindir=PATH' to specify different values for particular options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them. you can set and what kinds of files go in them.
...@@ -123,7 +125,7 @@ option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. ...@@ -123,7 +125,7 @@ option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features Optional Features
================= =================
Some packages pay attention to `--enable-FEATURE' options to Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package. `configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The is something like `gnu-as' or `x' (for the X Window System). The
...@@ -138,11 +140,11 @@ you can use the `configure' options `--x-includes=DIR' and ...@@ -138,11 +140,11 @@ you can use the `configure' options `--x-includes=DIR' and
Specifying the System Type Specifying the System Type
========================== ==========================
There may be some features `configure' cannot figure out There may be some features `configure' cannot figure out automatically,
automatically, but needs to determine by the type of machine the package but needs to determine by the type of machine the package will run on.
will run on. Usually, assuming the package is built to be run on the Usually, assuming the package is built to be run on the _same_
_same_ architectures, `configure' can figure that out, but if it prints architectures, `configure' can figure that out, but if it prints a
a message saying it cannot guess the machine type, give it the message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system `--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form: type, such as `sun4', or a canonical name which has the form:
...@@ -157,7 +159,7 @@ where SYSTEM can have one of these forms: ...@@ -157,7 +159,7 @@ where SYSTEM can have one of these forms:
need to know the machine type. need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should If you are _building_ compiler tools for cross-compiling, you should
use the `--target=TYPE' option to select the type of system they will use the option `--target=TYPE' to select the type of system they will
produce code for. produce code for.
If you want to _use_ a cross compiler, that generates code for a If you want to _use_ a cross compiler, that generates code for a
...@@ -168,9 +170,9 @@ eventually be run) with `--host=TYPE'. ...@@ -168,9 +170,9 @@ eventually be run) with `--host=TYPE'.
Sharing Defaults Sharing Defaults
================ ================
If you want to set default values for `configure' scripts to share, If you want to set default values for `configure' scripts to share, you
you can create a site shell script called `config.site' that gives can create a site shell script called `config.site' that gives default
default values for variables like `CC', `cache_file', and `prefix'. values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then `configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the `PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script. `CONFIG_SITE' environment variable to the location of the site script.
...@@ -179,7 +181,7 @@ A warning: not all `configure' scripts look for a site script. ...@@ -179,7 +181,7 @@ A warning: not all `configure' scripts look for a site script.
Defining Variables Defining Variables
================== ==================
Variables not defined in a site shell script can be set in the Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set variables may be lost. In order to avoid this problem, you should set
...@@ -187,14 +189,18 @@ them in the `configure' command line, using `VAR=value'. For example: ...@@ -187,14 +189,18 @@ them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc ./configure CC=/usr/local2/bin/gcc
will cause the specified gcc to be used as the C compiler (unless it is causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script). overridden in the site shell script). Here is a another example:
/bin/bash ./configure CONFIG_SHELL=/bin/bash
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
configuration-related scripts to be executed by `/bin/bash'.
`configure' Invocation `configure' Invocation
====================== ======================
`configure' recognizes the following options to control how it `configure' recognizes the following options to control how it operates.
operates.
`--help' `--help'
`-h' `-h'
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
## Process this file with automake to produce Makefile.in ## Process this file with automake to produce Makefile.in
# Make sure that when we re-make ./configure, we get the macros we need # Make sure that when we re-make ./configure, we get the macros we need
ACLOCAL_AMFLAGS = -I `pwd`/../autoconf ACLOCAL_AMFLAGS = -I m4
# This is so we can #include <google/foo> # This is so we can #include <google/foo>
AM_CPPFLAGS = -I$(top_srcdir)/src AM_CPPFLAGS = -I$(top_srcdir)/src
......
...@@ -50,7 +50,11 @@ DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \ ...@@ -50,7 +50,11 @@ DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \
install-sh ltmain.sh missing mkinstalldirs install-sh ltmain.sh missing mkinstalldirs
subdir = . subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__aclocal_m4_deps = $(top_srcdir)/m4/ac_have_attribute.m4 \
$(top_srcdir)/m4/acx_pthread.m4 \
$(top_srcdir)/m4/google_namespace.m4 \
$(top_srcdir)/m4/namespaces.m4 \
$(top_srcdir)/m4/stl_namespace.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4) $(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
...@@ -232,7 +236,7 @@ sysconfdir = @sysconfdir@ ...@@ -232,7 +236,7 @@ sysconfdir = @sysconfdir@
target_alias = @target_alias@ target_alias = @target_alias@
# Make sure that when we re-make ./configure, we get the macros we need # Make sure that when we re-make ./configure, we get the macros we need
ACLOCAL_AMFLAGS = -I `pwd`/../autoconf ACLOCAL_AMFLAGS = -I m4
# This is so we can #include <google/foo> # This is so we can #include <google/foo>
AM_CPPFLAGS = -I$(top_srcdir)/src AM_CPPFLAGS = -I$(top_srcdir)/src
...@@ -593,7 +597,7 @@ check-TESTS: $(TESTS) ...@@ -593,7 +597,7 @@ check-TESTS: $(TESTS)
distdir: $(DISTFILES) distdir: $(DISTFILES)
$(am__remove_distdir) $(am__remove_distdir)
mkdir $(distdir) mkdir $(distdir)
$(mkdir_p) $(distdir)/doc $(distdir)/packages $(distdir)/packages/rpm $(distdir)/python $(distdir)/src $(distdir)/src/google $(mkdir_p) $(distdir)/doc $(distdir)/m4 $(distdir)/packages $(distdir)/packages/rpm $(distdir)/python $(distdir)/src $(distdir)/src/google
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \ list='$(DISTFILES)'; for file in $$list; do \
......
This diff is collapsed.
#!/bin/sh
# Before using, you should figure out all the .m4 macros that your
# configure.m4 script needs and make sure they exist in the autoconf/
# directory.
#
# These are the files that this script might edit:
# aclocal.m4 configure Makefile.in src/config.h.in \
# depcomp config.guess config.sub install-sh missing mkinstalldirs \
# ltmain.sh
#
# Here's a command you can run to see what files aclocal will import:
# aclocal -I ../autoconf --output=- | sed -n 's/^m4_include..\([^]]*\).*/\1/p'
set -ex
rm -rf autom4te.cache
aclocal --force -I m4
grep -q LIBTOOL configure.ac && libtoolize -c -f
autoconf -f -W all,no-obsolete
autoheader -f -W all
automake -a -c -f -W all
rm -rf autom4te.cache
exit 0
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.59 for gflags 0.4. # Generated by GNU Autoconf 2.59 for gflags 0.5.
# #
# Report bugs to <opensource@google.com>. # Report bugs to <opensource@google.com>.
# #
...@@ -423,8 +423,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} ...@@ -423,8 +423,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package. # Identity of this package.
PACKAGE_NAME='gflags' PACKAGE_NAME='gflags'
PACKAGE_TARNAME='gflags' PACKAGE_TARNAME='gflags'
PACKAGE_VERSION='0.4' PACKAGE_VERSION='0.5'
PACKAGE_STRING='gflags 0.4' PACKAGE_STRING='gflags 0.5'
PACKAGE_BUGREPORT='opensource@google.com' PACKAGE_BUGREPORT='opensource@google.com'
ac_unique_file="README" ac_unique_file="README"
...@@ -954,7 +954,7 @@ if test "$ac_init_help" = "long"; then ...@@ -954,7 +954,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures gflags 0.4 to adapt to many kinds of systems. \`configure' configures gflags 0.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
...@@ -1020,7 +1020,7 @@ fi ...@@ -1020,7 +1020,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of gflags 0.4:";; short | recursive ) echo "Configuration of gflags 0.5:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
...@@ -1163,7 +1163,7 @@ fi ...@@ -1163,7 +1163,7 @@ fi
test -n "$ac_init_help" && exit 0 test -n "$ac_init_help" && exit 0
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
gflags configure 0.4 gflags configure 0.5
generated by GNU Autoconf 2.59 generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc. Copyright (C) 2003 Free Software Foundation, Inc.
...@@ -1177,7 +1177,7 @@ cat >&5 <<_ACEOF ...@@ -1177,7 +1177,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by gflags $as_me 0.4, which was It was created by gflags $as_me 0.5, which was
generated by GNU Autoconf 2.59. Invocation command line was generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@ $ $0 $@
...@@ -1823,7 +1823,7 @@ fi ...@@ -1823,7 +1823,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='gflags' PACKAGE='gflags'
VERSION='0.4' VERSION='0.5'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
...@@ -20926,7 +20926,7 @@ _ASBOX ...@@ -20926,7 +20926,7 @@ _ASBOX
} >&5 } >&5
cat >&5 <<_CSEOF cat >&5 <<_CSEOF
This file was extended by gflags $as_me 0.4, which was This file was extended by gflags $as_me 0.5, which was
generated by GNU Autoconf 2.59. Invocation command line was generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
...@@ -20989,7 +20989,7 @@ _ACEOF ...@@ -20989,7 +20989,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\ ac_cs_version="\\
gflags config.status 0.4 gflags config.status 0.5
configured by $0, generated by GNU Autoconf 2.59, configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
......
## This is a boilerplate file for Google opensource projects.
## To make it useful, replace <<TEXT>> with actual text for your project.
## Also, look at comments with "## double hashes" to see if any are worth
## uncommenting or modifying.
## Process this file with autoconf to produce configure. ## Process this file with autoconf to produce configure.
## In general, the safest way to proceed is to run the following: ## In general, the safest way to proceed is to run ./autogen.sh
## % aclocal -I . -I `pwd`/../autoconf && autoheader && autoconf && automake
# make sure we're interpreted by some minimal autoconf # make sure we're interpreted by some minimal autoconf
AC_PREREQ(2.57) AC_PREREQ(2.57)
AC_INIT(gflags, 0.4, opensource@google.com) AC_INIT(gflags, 0.5, opensource@google.com)
# The argument here is just something that should be in the current directory # The argument here is just something that should be in the current directory
# (for sanity checking) # (for sanity checking)
AC_CONFIG_SRCDIR(README) AC_CONFIG_SRCDIR(README)
......
This diff is collapsed.
This diff is collapsed.
AC_DEFUN([AX_C___ATTRIBUTE__], [
AC_MSG_CHECKING(for __attribute__)
AC_CACHE_VAL(ac_cv___attribute__, [
AC_TRY_COMPILE(
[#include <stdlib.h>
static void foo(void) __attribute__ ((unused));
void foo(void) { exit(1); }],
[],
ac_cv___attribute__=yes,
ac_cv___attribute__=no
)])
if test "$ac_cv___attribute__" = "yes"; then
AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__])
fi
AC_MSG_RESULT($ac_cv___attribute__)
])
This diff is collapsed.
# Allow users to override the namespace we define our application's classes in
# Arg $1 is the default namespace to use if --enable-namespace isn't present.
# In general, $1 should be 'google', so we put all our exported symbols in a
# unique namespace that is not likely to conflict with anyone else. However,
# when it makes sense -- for instance, when publishing stl-like code -- you
# may want to go with a different default, like 'std'.
AC_DEFUN([AC_DEFINE_GOOGLE_NAMESPACE],
[google_namespace_default=[$1]
AC_ARG_ENABLE(namespace, [ --enable-namespace=FOO to define these Google
classes in the FOO namespace. --disable-namespace
to define them in the global namespace. Default
is to define them in namespace $1.],
[case "$enableval" in
yes) google_namespace="$google_namespace_default" ;;
no) google_namespace="" ;;
*) google_namespace="$enableval" ;;
esac],
[google_namespace="$google_namespace_default"])
if test -n "$google_namespace"; then
ac_google_namespace="$google_namespace"
ac_google_start_namespace="namespace $google_namespace {"
ac_google_end_namespace="}"
else
ac_google_namespace=""
ac_google_start_namespace=""
ac_google_end_namespace=""
fi
AC_DEFINE_UNQUOTED(GOOGLE_NAMESPACE, $ac_google_namespace,
Namespace for Google classes)
AC_DEFINE_UNQUOTED(_START_GOOGLE_NAMESPACE_, $ac_google_start_namespace,
Puts following code inside the Google namespace)
AC_DEFINE_UNQUOTED(_END_GOOGLE_NAMESPACE_, $ac_google_end_namespace,
Stops putting the code inside the Google namespace)
])
# Checks whether the compiler implements namespaces
AC_DEFUN([AC_CXX_NAMESPACES],
[AC_CACHE_CHECK(whether the compiler implements namespaces,
ac_cv_cxx_namespaces,
[AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([namespace Outer {
namespace Inner { int i = 0; }}],
[using namespace Outer::Inner; return i;],
ac_cv_cxx_namespaces=yes,
ac_cv_cxx_namespaces=no)
AC_LANG_RESTORE])
if test "$ac_cv_cxx_namespaces" = yes; then
AC_DEFINE(HAVE_NAMESPACES, 1, [define if the compiler implements namespaces])
fi])
# We check what namespace stl code like vector expects to be executed in
AC_DEFUN([AC_CXX_STL_NAMESPACE],
[AC_CACHE_CHECK(
what namespace STL code is in,
ac_cv_cxx_stl_namespace,
[AC_REQUIRE([AC_CXX_NAMESPACES])
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_COMPILE([#include <vector>],
[vector<int> t; return 0;],
ac_cv_cxx_stl_namespace=none)
AC_TRY_COMPILE([#include <vector>],
[std::vector<int> t; return 0;],
ac_cv_cxx_stl_namespace=std)
AC_LANG_RESTORE])
if test "$ac_cv_cxx_stl_namespace" = none; then
AC_DEFINE(STL_NAMESPACE,,
[the namespace where STL code like vector<> is defined])
fi
if test "$ac_cv_cxx_stl_namespace" = std; then
AC_DEFINE(STL_NAMESPACE,std,
[the namespace where STL code like vector<> is defined])
fi
])
This diff is collapsed.
#! /bin/sh #! /bin/sh
# mkinstalldirs --- make directory hierarchy # mkinstalldirs --- make directory hierarchy
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
scriptversion=2005-06-29.22
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16 # Created: 1993-05-16
# Public domain # Public domain.
#
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
errstatus=0 errstatus=0
dirmode="" dirmode=
usage="\ usage="\
Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
Create each directory DIR (with mode MODE, if specified), including all
leading file name components.
Report bugs to <bug-automake@gnu.org>."
# process command line arguments # process command line arguments
while test $# -gt 0 ; do while test $# -gt 0 ; do
case "${1}" in case $1 in
-h | --help | --h* ) # -h for help -h | --help | --h*) # -h for help
echo "${usage}" 1>&2; exit 0 ;; echo "$usage"
-m ) # -m PERM arg exit $?
shift ;;
test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } -m) # -m PERM arg
dirmode="${1}" shift
shift ;; test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
-- ) shift; break ;; # stop option processing dirmode=$1
-* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option shift
* ) break ;; # first non-opt arg ;;
esac --version)
echo "$0 $scriptversion"
exit $?
;;
--) # stop option processing
shift
break
;;
-*) # unknown option
echo "$usage" 1>&2
exit 1
;;
*) # first non-opt arg
break
;;
esac
done done
for file for file
...@@ -36,64 +63,96 @@ do ...@@ -36,64 +63,96 @@ do
done done
case $# in case $# in
0) exit 0 ;; 0) exit 0 ;;
esac esac
# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
# mkdir -p a/c at the same time, both will detect that a is missing,
# one will create a, then the other will try to create a and die with
# a "File exists" error. This is a problem when calling mkinstalldirs
# from a parallel make. We use --version in the probe to restrict
# ourselves to GNU mkdir, which is thread-safe.
case $dirmode in case $dirmode in
'') '')
if mkdir -p -- . 2>/dev/null; then if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
echo "mkdir -p -- $*" echo "mkdir -p -- $*"
exec mkdir -p -- "$@" exec mkdir -p -- "$@"
fi ;; else
*) # On NextStep and OpenStep, the `mkdir' command does not
if mkdir -m "$dirmode" -p -- . 2>/dev/null; then # recognize any option. It will interpret all options as
echo "mkdir -m $dirmode -p -- $*" # directories to create, and then abort because `.' already
exec mkdir -m "$dirmode" -p -- "$@" # exists.
fi ;; test -d ./-p && rmdir ./-p
test -d ./--version && rmdir ./--version
fi
;;
*)
if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
test ! -d ./--version; then
echo "mkdir -m $dirmode -p -- $*"
exec mkdir -m "$dirmode" -p -- "$@"
else
# Clean up after NextStep and OpenStep mkdir.
for d in ./-m ./-p ./--version "./$dirmode";
do
test -d $d && rmdir $d
done
fi
;;
esac esac
for file for file
do do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` case $file in
shift /*) pathcomp=/ ;;
*) pathcomp= ;;
pathcomp= esac
for d oIFS=$IFS
do IFS=/
pathcomp="$pathcomp$d" set fnord $file
case "$pathcomp" in shift
-* ) pathcomp=./$pathcomp ;; IFS=$oIFS
esac
for d
if test ! -d "$pathcomp"; then do
echo "mkdir $pathcomp" test "x$d" = x && continue
mkdir "$pathcomp" || lasterr=$? pathcomp=$pathcomp$d
case $pathcomp in
if test ! -d "$pathcomp"; then -*) pathcomp=./$pathcomp ;;
errstatus=$lasterr esac
else
if test ! -z "$dirmode"; then if test ! -d "$pathcomp"; then
echo "chmod $dirmode $pathcomp" echo "mkdir $pathcomp"
lasterr="" mkdir "$pathcomp" || lasterr=$?
chmod "$dirmode" "$pathcomp" || lasterr=$?
if test ! -d "$pathcomp"; then
if test ! -z "$lasterr"; then errstatus=$lasterr
errstatus=$lasterr else
fi if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp"
lasterr=
chmod "$dirmode" "$pathcomp" || lasterr=$?
if test ! -z "$lasterr"; then
errstatus=$lasterr
fi fi
fi fi
fi fi
fi
pathcomp="$pathcomp/" pathcomp=$pathcomp/
done done
done done
exit $errstatus exit $errstatus
# Local Variables: # Local Variables:
# mode: shell-script # mode: shell-script
# sh-indentation: 3 # sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End: # End:
# mkinstalldirs ends here
google-gflags (0.5-1) unstable; urgency=low
* New upstream release.
-- Google Inc. <opensource@google.com> Tue, 12 Jun 2007 15:23:42 -0700
google-gflags (0.4-1) unstable; urgency=low google-gflags (0.4-1) unstable; urgency=low
* google-gflags: version 0.4 * New upstream release.
* Remove is_default from GetCommandLineFlagInfo (csilvers)
* Portability fixes: includes, strtoll, gcc4.3 errors (csilvers)
* A few doc typo cleanups (csilvers)
-- Google Inc. <opensource@google.com> Thu, 19 Apr 2007 15:18:43 -0700 -- Google Inc. <opensource@google.com> Thu, 19 Apr 2007 15:18:43 -0700
google-gflags (0.3-1) unstable; urgency=low google-gflags (0.3-1) unstable; urgency=low
* google-gflags: version 0.2 * New upstream release.
* added support for python commandlineflags, as well as c++
* gflags2man, a script to turn flags into a man page (dchristian)
-- Google Inc. <opensource@google.com> Mon, 22 Jan 2007 15:33:06 -0800 -- Google Inc. <opensource@google.com> Mon, 22 Jan 2007 15:33:06 -0800
google-gflags (0.2-1) unstable; urgency=low google-gflags (0.2-1) unstable; urgency=low
* google-gflags: version 0.3 * New upstream release.
* python portability fix: use popen instead of subprocess (csilvers)
* Add is_default to CommandLineFlagInfo (pchien)
* Make docs a bit prettier (csilvers)
* Actually include the python files in the distribution! :-/ (csilvers)
-- Google Inc. <opensource@google.com> Wed, 28 Mar 2007 12:15:56 -0700 -- Google Inc. <opensource@google.com> Wed, 28 Mar 2007 12:15:56 -0700
......
...@@ -820,13 +820,15 @@ class Flag: ...@@ -820,13 +820,15 @@ class Flag:
self.default_as_str = self.__GetParsedValueAsString(self.value) self.default_as_str = self.__GetParsedValueAsString(self.value)
def __GetParsedValueAsString(self, value): def __GetParsedValueAsString(self, value):
if value is None:
return None
if self.serializer:
return repr(self.serializer.Serialize(value))
if self.boolean: if self.boolean:
if value: if value:
return repr('true') return repr('true')
else: else:
return repr('false') return repr('false')
if value is None:
return None
return repr(str(value)) return repr(str(value))
def Parse(self, argument): def Parse(self, argument):
...@@ -837,7 +839,9 @@ class Flag: ...@@ -837,7 +839,9 @@ class Flag:
self.present += 1 self.present += 1
def Unparse(self): def Unparse(self):
if self.default != None: if self.default is None:
self.value = None
else:
self.Parse(self.default) self.Parse(self.default)
self.present = 0 self.present = 0
...@@ -858,7 +862,7 @@ class Flag: ...@@ -858,7 +862,7 @@ class Flag:
""" """
Change the default value, and current value, of this flag object Change the default value, and current value, of this flag object
""" """
if value: # See __init__ for logic details if value is not None: # See __init__ for logic details
self.Parse(value) self.Parse(value)
self.present -= 1 # reset .present after parsing new default value self.present -= 1 # reset .present after parsing new default value
else: else:
...@@ -995,8 +999,7 @@ class BooleanFlag(Flag): ...@@ -995,8 +999,7 @@ class BooleanFlag(Flag):
""" """
def __init__(self, name, default, help, short_name=None, **args): def __init__(self, name, default, help, short_name=None, **args):
p = BooleanParser() p = BooleanParser()
g = ArgumentSerializer() Flag.__init__(self, p, None, name, default, help, short_name, 1, **args)
Flag.__init__(self, p, g, name, default, help, short_name, 1, **args)
if not self.help: self.help = "a boolean value" if not self.help: self.help = "a boolean value"
def DEFINE_boolean(name, default, help, flag_values=FLAGS, **args): def DEFINE_boolean(name, default, help, flag_values=FLAGS, **args):
......
This diff is collapsed.
...@@ -32,11 +32,11 @@ ...@@ -32,11 +32,11 @@
from distutils.core import setup from distutils.core import setup
setup(name='gflags', setup(name='gflags',
version='0.4', version='0.5',
description='Google Commandline Flags Module', description='Google Commandline Flags Module',
license='BSD', license='BSD',
author='Google Inc.', author='Google Inc.',
author_email='opensource@google.com', author_email='opensource@google.com',
url='http://code.google.com/p/google-gflags', url='http://code.google.com/p/google-gflags',
py_modules=["gflags"], py_modules=["gflags"],
data_files=["/usr/local/bin", "gflags2man.py"]) data_files=[("/usr/local/bin", ["gflags2man.py"])])
...@@ -1228,9 +1228,9 @@ string SetCommandLineOptionWithMode(const char* name, const char* value, ...@@ -1228,9 +1228,9 @@ string SetCommandLineOptionWithMode(const char* name, const char* value,
result = parser.ProcessSingleOptionLocked(flag, value, set_mode); result = parser.ProcessSingleOptionLocked(flag, value, set_mode);
if (!result.empty()) { // in the error case, we've already logged if (!result.empty()) { // in the error case, we've already logged
// You could consider logging this change, if you wanted to know it: // You could consider logging this change, if you wanted to know it:
//fprintf(stderr, "%sFLAGS_%s set to '%s'\n", //fprintf(stderr, "%sFLAGS_%s\n",
// (set_mode == SET_FLAGS_DEFAULT ? "default value of " : ""), // (set_mode == SET_FLAGS_DEFAULT ? "default value of " : ""),
// name, value); // result);
} }
} }
registry->Unlock(); registry->Unlock();
...@@ -1429,7 +1429,7 @@ bool ReadFromFlagsFile(const string& filename, const char* prog_name, ...@@ -1429,7 +1429,7 @@ bool ReadFromFlagsFile(const string& filename, const char* prog_name,
// Reads the value from the environment and returns it. // Reads the value from the environment and returns it.
// We use an FlagValue to make the parsing easy. // We use an FlagValue to make the parsing easy.
// Example usage: // Example usage:
// DEFINE_bool(myflag, BoolFromEnv("MYFLAG_DEFAULT"), "whatever"); // DEFINE_bool(myflag, BoolFromEnv("MYFLAG_DEFAULT", false), "whatever");
// -------------------------------------------------------------------- // --------------------------------------------------------------------
template<typename T> template<typename T>
......
...@@ -110,10 +110,18 @@ _START_GOOGLE_NAMESPACE_ ...@@ -110,10 +110,18 @@ _START_GOOGLE_NAMESPACE_
#define EXPECT_GT(val1, val2) EXPECT_OP(>, val1, val2) #define EXPECT_GT(val1, val2) EXPECT_OP(>, val1, val2)
#define EXPECT_LT(val1, val2) EXPECT_OP(<, val1, val2) #define EXPECT_LT(val1, val2) EXPECT_OP(<, val1, val2)
#define EXPECT_PRED1(pred, arg) \ #define EXPECT_NAN(arg) \
do { \ do { \
if (!((pred)(arg))) { \ if (!isnan(arg)) { \
fprintf(stderr, "Check failed: %s(%s)\n", #pred, #arg); \ fprintf(stderr, "Check failed: isnan(%s)\n", #arg); \
exit(1); \
} \
} while (0)
#define EXPECT_INF(arg) \
do { \
if (!isinf(arg)) { \
fprintf(stderr, "Check failed: isinf(%s)\n", #arg); \
exit(1); \ exit(1); \
} \ } \
} while (0) } while (0)
...@@ -425,11 +433,11 @@ TEST(SetFlagValueTest, OrdinaryValues) { ...@@ -425,11 +433,11 @@ TEST(SetFlagValueTest, OrdinaryValues) {
TEST(SetFlagValueTest, ExceptionalValues) { TEST(SetFlagValueTest, ExceptionalValues) {
EXPECT_EQ("test_double set to inf\n", EXPECT_EQ("test_double set to inf\n",
SetCommandLineOption("test_double", "inf")); SetCommandLineOption("test_double", "inf"));
EXPECT_PRED1(isinf, FLAGS_test_double); EXPECT_INF(FLAGS_test_double);
EXPECT_EQ("test_double set to inf\n", EXPECT_EQ("test_double set to inf\n",
SetCommandLineOption("test_double", "INF")); SetCommandLineOption("test_double", "INF"));
EXPECT_PRED1(isinf, FLAGS_test_double); EXPECT_INF(FLAGS_test_double);
// set some bad values // set some bad values
EXPECT_EQ("", EXPECT_EQ("",
...@@ -440,12 +448,12 @@ TEST(SetFlagValueTest, ExceptionalValues) { ...@@ -440,12 +448,12 @@ TEST(SetFlagValueTest, ExceptionalValues) {
SetCommandLineOption("test_double", "")); SetCommandLineOption("test_double", ""));
EXPECT_EQ("test_double set to -inf\n", EXPECT_EQ("test_double set to -inf\n",
SetCommandLineOption("test_double", "-inf")); SetCommandLineOption("test_double", "-inf"));
EXPECT_PRED1(isinf, FLAGS_test_double); EXPECT_INF(FLAGS_test_double);
EXPECT_GT(0, FLAGS_test_double); EXPECT_GT(0, FLAGS_test_double);
EXPECT_EQ("test_double set to nan\n", EXPECT_EQ("test_double set to nan\n",
SetCommandLineOption("test_double", "NaN")); SetCommandLineOption("test_double", "NaN"));
EXPECT_PRED1(isnan, FLAGS_test_double); EXPECT_NAN(FLAGS_test_double);
} }
// Tests that integer flags can be specified in many ways // Tests that integer flags can be specified in many ways
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment