github.com/jlmucb/cloudproxy@v0.0.0-20170830161738-b5aa0b619bc4/src/third_party/google-glog/INSTALL (about)

     1  Installation Instructions
     2  *************************
     3  
     4  Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
     5  2006, 2007 Free Software Foundation, Inc.
     6  
     7  This file is free documentation; the Free Software Foundation gives
     8  unlimited permission to copy, distribute and modify it.
     9  
    10  Glog-Specific Install Notes
    11  ================================
    12  
    13  *** NOTE FOR 64-BIT LINUX SYSTEMS
    14  
    15  The glibc built-in stack-unwinder on 64-bit systems has some problems
    16  with the glog libraries.  (In particular, if you are using
    17  InstallFailureSignalHandler(), the signal may be raised in the middle
    18  of malloc, holding some malloc-related locks when they invoke the
    19  stack unwinder.  The built-in stack unwinder may call malloc
    20  recursively, which may require the thread to acquire a lock it already
    21  holds: deadlock.)
    22  
    23  For that reason, if you use a 64-bit system and you need
    24  InstallFailureSignalHandler(), we strongly recommend you install
    25  libunwind before trying to configure or install google glog.
    26  libunwind can be found at
    27  
    28     http://download.savannah.nongnu.org/releases/libunwind/libunwind-snap-070410.tar.gz
    29  
    30  Even if you already have libunwind installed, you will probably still
    31  need to install from the snapshot to get the latest version.
    32  
    33  CAUTION: if you install libunwind from the URL above, be aware that
    34  you may have trouble if you try to statically link your binary with
    35  glog: that is, if you link with 'gcc -static -lgcc_eh ...'.  This
    36  is because both libunwind and libgcc implement the same C++ exception
    37  handling APIs, but they implement them differently on some platforms.
    38  This is not likely to be a problem on ia64, but may be on x86-64.
    39  
    40  Also, if you link binaries statically, make sure that you add
    41  -Wl,--eh-frame-hdr to your linker options. This is required so that
    42  libunwind can find the information generated by the compiler required
    43  for stack unwinding.
    44  
    45  Using -static is rare, though, so unless you know this will affect you
    46  it probably won't.
    47  
    48  If you cannot or do not wish to install libunwind, you can still try
    49  to use two kinds of stack-unwinder: 1. glibc built-in stack-unwinder
    50  and 2. frame pointer based stack-unwinder.
    51  
    52  1. As we already mentioned, glibc's unwinder has a deadlock issue.
    53  However, if you don't use InstallFailureSignalHandler() or you don't
    54  worry about the rare possibilities of deadlocks, you can use this
    55  stack-unwinder.  If you specify no options and libunwind isn't
    56  detected on your system, the configure script chooses this unwinder by
    57  default.
    58  
    59  2. The frame pointer based stack unwinder requires that your
    60  application, the glog library, and system libraries like libc, all be
    61  compiled with a frame pointer.  This is *not* the default for x86-64.
    62  
    63  If you are on x86-64 system, know that you have a set of system
    64  libraries with frame-pointers enabled, and compile all your
    65  applications with -fno-omit-frame-pointer, then you can enable the
    66  frame pointer based stack unwinder by passing the
    67  --enable-frame-pointers flag to configure.
    68  
    69  
    70  Basic Installation
    71  ==================
    72  
    73  Briefly, the shell commands `./configure; make; make install' should
    74  configure, build, and install this package.  The following
    75  more-detailed instructions are generic; see the `README' file for
    76  instructions specific to this package.
    77  
    78     The `configure' shell script attempts to guess correct values for
    79  various system-dependent variables used during compilation.  It uses
    80  those values to create a `Makefile' in each directory of the package.
    81  It may also create one or more `.h' files containing system-dependent
    82  definitions.  Finally, it creates a shell script `config.status' that
    83  you can run in the future to recreate the current configuration, and a
    84  file `config.log' containing compiler output (useful mainly for
    85  debugging `configure').
    86  
    87     It can also use an optional file (typically called `config.cache'
    88  and enabled with `--cache-file=config.cache' or simply `-C') that saves
    89  the results of its tests to speed up reconfiguring.  Caching is
    90  disabled by default to prevent problems with accidental use of stale
    91  cache files.
    92  
    93     If you need to do unusual things to compile the package, please try
    94  to figure out how `configure' could check whether to do them, and mail
    95  diffs or instructions to the address given in the `README' so they can
    96  be considered for the next release.  If you are using the cache, and at
    97  some point `config.cache' contains results you don't want to keep, you
    98  may remove or edit it.
    99  
   100     The file `configure.ac' (or `configure.in') is used to create
   101  `configure' by a program called `autoconf'.  You need `configure.ac' if
   102  you want to change it or regenerate `configure' using a newer version
   103  of `autoconf'.
   104  
   105  The simplest way to compile this package is:
   106  
   107    1. `cd' to the directory containing the package's source code and type
   108       `./configure' to configure the package for your system.
   109  
   110       Running `configure' might take a while.  While running, it prints
   111       some messages telling which features it is checking for.
   112  
   113    2. Type `make' to compile the package.
   114  
   115    3. Optionally, type `make check' to run any self-tests that come with
   116       the package.
   117  
   118    4. Type `make install' to install the programs and any data files and
   119       documentation.
   120  
   121    5. You can remove the program binaries and object files from the
   122       source code directory by typing `make clean'.  To also remove the
   123       files that `configure' created (so you can compile the package for
   124       a different kind of computer), type `make distclean'.  There is
   125       also a `make maintainer-clean' target, but that is intended mainly
   126       for the package's developers.  If you use it, you may have to get
   127       all sorts of other programs in order to regenerate files that came
   128       with the distribution.
   129  
   130    6. Often, you can also type `make uninstall' to remove the installed
   131       files again.
   132  
   133  Compilers and Options
   134  =====================
   135  
   136  Some systems require unusual options for compilation or linking that the
   137  `configure' script does not know about.  Run `./configure --help' for
   138  details on some of the pertinent environment variables.
   139  
   140     You can give `configure' initial values for configuration parameters
   141  by setting variables in the command line or in the environment.  Here
   142  is an example:
   143  
   144       ./configure CC=c99 CFLAGS=-g LIBS=-lposix
   145  
   146     *Note Defining Variables::, for more details.
   147  
   148  Compiling For Multiple Architectures
   149  ====================================
   150  
   151  You can compile the package for more than one kind of computer at the
   152  same time, by placing the object files for each architecture in their
   153  own directory.  To do this, you can use GNU `make'.  `cd' to the
   154  directory where you want the object files and executables to go and run
   155  the `configure' script.  `configure' automatically checks for the
   156  source code in the directory that `configure' is in and in `..'.
   157  
   158     With a non-GNU `make', it is safer to compile the package for one
   159  architecture at a time in the source code directory.  After you have
   160  installed the package for one architecture, use `make distclean' before
   161  reconfiguring for another architecture.
   162  
   163  Installation Names
   164  ==================
   165  
   166  By default, `make install' installs the package's commands under
   167  `/usr/local/bin', include files under `/usr/local/include', etc.  You
   168  can specify an installation prefix other than `/usr/local' by giving
   169  `configure' the option `--prefix=PREFIX'.
   170  
   171     You can specify separate installation prefixes for
   172  architecture-specific files and architecture-independent files.  If you
   173  pass the option `--exec-prefix=PREFIX' to `configure', the package uses
   174  PREFIX as the prefix for installing programs and libraries.
   175  Documentation and other data files still use the regular prefix.
   176  
   177     In addition, if you use an unusual directory layout you can give
   178  options like `--bindir=DIR' to specify different values for particular
   179  kinds of files.  Run `configure --help' for a list of the directories
   180  you can set and what kinds of files go in them.
   181  
   182     If the package supports it, you can cause programs to be installed
   183  with an extra prefix or suffix on their names by giving `configure' the
   184  option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
   185  
   186  Optional Features
   187  =================
   188  
   189  Some packages pay attention to `--enable-FEATURE' options to
   190  `configure', where FEATURE indicates an optional part of the package.
   191  They may also pay attention to `--with-PACKAGE' options, where PACKAGE
   192  is something like `gnu-as' or `x' (for the X Window System).  The
   193  `README' should mention any `--enable-' and `--with-' options that the
   194  package recognizes.
   195  
   196     For packages that use the X Window System, `configure' can usually
   197  find the X include and library files automatically, but if it doesn't,
   198  you can use the `configure' options `--x-includes=DIR' and
   199  `--x-libraries=DIR' to specify their locations.
   200  
   201  Specifying the System Type
   202  ==========================
   203  
   204  There may be some features `configure' cannot figure out automatically,
   205  but needs to determine by the type of machine the package will run on.
   206  Usually, assuming the package is built to be run on the _same_
   207  architectures, `configure' can figure that out, but if it prints a
   208  message saying it cannot guess the machine type, give it the
   209  `--build=TYPE' option.  TYPE can either be a short name for the system
   210  type, such as `sun4', or a canonical name which has the form:
   211  
   212       CPU-COMPANY-SYSTEM
   213  
   214  where SYSTEM can have one of these forms:
   215  
   216       OS KERNEL-OS
   217  
   218     See the file `config.sub' for the possible values of each field.  If
   219  `config.sub' isn't included in this package, then this package doesn't
   220  need to know the machine type.
   221  
   222     If you are _building_ compiler tools for cross-compiling, you should
   223  use the option `--target=TYPE' to select the type of system they will
   224  produce code for.
   225  
   226     If you want to _use_ a cross compiler, that generates code for a
   227  platform different from the build platform, you should specify the
   228  "host" platform (i.e., that on which the generated programs will
   229  eventually be run) with `--host=TYPE'.
   230  
   231  Sharing Defaults
   232  ================
   233  
   234  If you want to set default values for `configure' scripts to share, you
   235  can create a site shell script called `config.site' that gives default
   236  values for variables like `CC', `cache_file', and `prefix'.
   237  `configure' looks for `PREFIX/share/config.site' if it exists, then
   238  `PREFIX/etc/config.site' if it exists.  Or, you can set the
   239  `CONFIG_SITE' environment variable to the location of the site script.
   240  A warning: not all `configure' scripts look for a site script.
   241  
   242  Defining Variables
   243  ==================
   244  
   245  Variables not defined in a site shell script can be set in the
   246  environment passed to `configure'.  However, some packages may run
   247  configure again during the build, and the customized values of these
   248  variables may be lost.  In order to avoid this problem, you should set
   249  them in the `configure' command line, using `VAR=value'.  For example:
   250  
   251       ./configure CC=/usr/local2/bin/gcc
   252  
   253  causes the specified `gcc' to be used as the C compiler (unless it is
   254  overridden in the site shell script).
   255  
   256  Unfortunately, this technique does not work for `CONFIG_SHELL' due to
   257  an Autoconf bug.  Until the bug is fixed you can use this workaround:
   258  
   259       CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
   260  
   261  `configure' Invocation
   262  ======================
   263  
   264  `configure' recognizes the following options to control how it operates.
   265  
   266  `--help'
   267  `-h'
   268       Print a summary of the options to `configure', and exit.
   269  
   270  `--version'
   271  `-V'
   272       Print the version of Autoconf used to generate the `configure'
   273       script, and exit.
   274  
   275  `--cache-file=FILE'
   276       Enable the cache: use and save the results of the tests in FILE,
   277       traditionally `config.cache'.  FILE defaults to `/dev/null' to
   278       disable caching.
   279  
   280  `--config-cache'
   281  `-C'
   282       Alias for `--cache-file=config.cache'.
   283  
   284  `--quiet'
   285  `--silent'
   286  `-q'
   287       Do not print messages saying which checks are being made.  To
   288       suppress all normal output, redirect it to `/dev/null' (any error
   289       messages will still be shown).
   290  
   291  `--srcdir=DIR'
   292       Look for the package's source code in directory DIR.  Usually
   293       `configure' can determine that directory automatically.
   294  
   295  `configure' also accepts some other, not widely useful, options.  Run
   296  `configure --help' for more details.
   297