exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

INSTALL.md (16732B)


      1 Building Taler
      2 ==============
      3 
      4 Contributions are welcome. Please submit bugs you find to
      5 https://bugs.taler.net/ or our bugs mailinglist.
      6 Submit patches via E-Mail to taler@gnu.org, formatted with
      7      `git format-patch`.
      8 
      9 In order to run the unit tests by hand (instead of using `make check`),
     10 you need to set the environment variables
     11   - `TALER_EXCHANGE_PREFIX`
     12   - `TALER_MERCHANT_PREFIX`
     13   - `TALER_BANK_PREFIX`
     14   - `TALER_AUDITOR_PREFIX`
     15 to the directory where Taler's libraries are installed.
     16 
     17 **NOTE:** Before running any testcases, you must complete the
     18 installation.
     19 
     20 Quick summary:
     21 
     22 ```
     23     $ ./bootstrap       # needed after each git pull
     24     $ ./configure --prefix=$SOMEWHERE
     25     $ make
     26     $ make install
     27     $ export TALER_EXCHANGE_PREFIX=$SOMEWHERE
     28     $ export TALER_MERCHANT_PREFIX=$SOMEWHERE
     29     $ export TALER_BANK_PREFIX=$SOMEWHERE
     30     $ export TALER_AUDITOR_PREFIX=$SOMEWHERE
     31     $ make check
     32 ```
     33 
     34 General Installation Instructions (autoconf)
     35 --------------------------------------------
     36 
     37 *Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2021 Free
     38 Software Foundation, Inc.*
     39 
     40 Copying and distribution of this file, with or without modification,
     41 are permitted in any medium without royalty provided the copyright
     42 notice and this notice are preserved.  This file is offered as-is,
     43 without warranty of any kind.
     44 
     45 ### Basic Installation
     46 
     47 Briefly, the shell command `./configure && make && make install`
     48 should configure, build, and install this package.  The following
     49 more-detailed instructions are generic; see the `README.md` file for
     50 instructions specific to this package.  Some packages provide this
     51 `INSTALL.md` file but do not implement all of the features documented
     52 below.  The lack of an optional feature in a given package is not
     53 necessarily a bug.  More recommendations for GNU packages can be found
     54 in [Makefile Conventions](https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html).
     55 
     56 The `configure` shell script attempts to guess correct values for
     57 various system-dependent variables used during compilation.  It uses
     58 those values to create a `Makefile` in each directory of the package.
     59 It may also create one or more `.h` files containing system-dependent
     60 definitions.  Finally, it creates a shell script `config.status` that
     61 you can run in the future to recreate the current configuration, and a
     62 file `config.log` containing compiler output (useful mainly for
     63 debugging `configure`).
     64 
     65 It can also use an optional file (typically called `config.cache` and
     66 enabled with `--cache-file=config.cache` or simply `-C`) that saves the
     67 results of its tests to speed up reconfiguring.  Caching is disabled by
     68 default to prevent problems with accidental use of stale cache files.
     69 
     70 If you need to do unusual things to compile the package, please try
     71 to figure out how `configure` could check whether to do them, and mail
     72 diffs or instructions to the address given in the `README` so they can
     73 be considered for the next release.  If you are using the cache, and at
     74 some point `config.cache` contains results you don't want to keep, you
     75 may remove or edit it.
     76 
     77 The file `configure.ac` (or `configure.in`) is used to create
     78 `configure` by a program called `autoconf`.  You need `configure.ac` if
     79 you want to change it or regenerate `configure` using a newer version of
     80 `autoconf`.
     81 
     82 The simplest way to compile this package is:
     83 
     84 1. `cd` to the directory containing the package's source code and type
     85    `./configure` to configure the package for your system.
     86 
     87    Running `configure` might take a while.  While running, it prints
     88    some messages telling which features it is checking for.
     89 
     90 2. Type `make` to compile the package.
     91 
     92 3. Optionally, type `make check` to run any self-tests that come with
     93    the package, generally using the just-built uninstalled binaries.
     94 
     95 4. Type `make install` to install the programs and any data files and
     96    documentation.  When installing into a prefix owned by root, it is
     97    recommended that the package be configured and built as a regular
     98    user, and only the `make install` phase executed with root
     99    privileges.
    100 
    101 5. Optionally, type `make installcheck` to repeat any self-tests, but
    102    this time using the binaries in their final installed location.
    103    This target does not install anything.  Running this target as a
    104    regular user, particularly if the prior `make install` required
    105    root privileges, verifies that the installation completed
    106    correctly.
    107 
    108 6. You can remove the program binaries and object files from the
    109    source code directory by typing `make clean`.  To also remove the
    110    files that `configure` created (so you can compile the package for
    111    a different kind of computer), type `make distclean`.  There is
    112    also a `make maintainer-clean` target, but that is intended mainly
    113    for the package's developers.  If you use it, you may have to get
    114    all sorts of other programs in order to regenerate files that came
    115    with the distribution.
    116 
    117 7. Often, you can also type `make uninstall` to remove the installed
    118    files again.  In practice, not all packages have tested that
    119    uninstallation works correctly, even though it is required by the
    120    GNU Coding Standards.
    121 
    122 8. Some packages, particularly those that use Automake, provide
    123    `make distcheck`, which can by used by developers to test that all
    124    other targets like `make install` and `make uninstall` work
    125    correctly.  This target is generally not run by end users.
    126 
    127 
    128 ### Compilers and Options
    129 
    130 Some systems require unusual options for compilation or linking that
    131 the `configure` script does not know about.  Run `./configure --help`
    132 for details on some of the pertinent environment variables.
    133 
    134 You can give `configure` initial values for configuration parameters
    135 by setting variables in the command line or in the environment.
    136 Here is an example: `./configure CC=c99 CFLAGS=-g LIBS=-lposix`
    137 
    138 For more details, see
    139 [Defining Variables](https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.72/autoconf.html#Defining-Variables).
    140 
    141 
    142 ### Compiling For Multiple Architectures
    143 
    144 You can compile the package for more than one kind of computer at the
    145 same time, by placing the object files for each architecture in their
    146 own directory.  To do this, you can use GNU `make`.  `cd` to the
    147 directory where you want the object files and executables to go and run
    148 the `configure` script.  `configure` automatically checks for the source
    149 code in the directory that `configure` is in and in `..`.  This is known
    150 as a "VPATH" build.
    151 
    152 With a non-GNU `make`, it is safer to compile the package for one
    153 architecture at a time in the source code directory.  After you have
    154 installed the package for one architecture, use `make distclean` before
    155 reconfiguring for another architecture.
    156 
    157 On MacOS X 10.5 and later systems, you can create libraries and
    158 executables that work on multiple system types--known as "fat" or
    159 "universal" binaries--by specifying multiple `-arch` options to the
    160 compiler but only a single `-arch` option to the preprocessor.  Like
    161 this:
    162 
    163 ```
    164      ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
    165                  CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
    166                  CPP="gcc -E" CXXCPP="g++ -E"
    167 ```
    168 
    169 This is not guaranteed to produce working output in all cases, you
    170 may have to build one architecture at a time and combine the results
    171 using the `lipo` tool if you have problems.
    172 
    173 
    174 ### Installation Names
    175 
    176 By default, `make install` installs the package's commands under
    177 `/usr/local/bin`, include files under `/usr/local/include`, etc.  You
    178 can specify an installation prefix other than `/usr/local` by giving
    179 `configure` the option `--prefix=PREFIX`, where PREFIX must be an
    180 absolute file name.
    181 
    182 You can specify separate installation prefixes for
    183 architecture-specific files and architecture-independent files.  If you
    184 pass the option `--exec-prefix=PREFIX` to `configure`, the package uses
    185 PREFIX as the prefix for installing programs and libraries.
    186 Documentation and other data files still use the regular prefix.
    187 
    188 In addition, if you use an unusual directory layout you can give
    189 options like `--bindir=DIR` to specify different values for particular
    190 kinds of files.  Run `configure --help` for a list of the directories
    191 you can set and what kinds of files go in them.  In general, the default
    192 for these options is expressed in terms of `${prefix}`, so that
    193 specifying just `--prefix` will affect all of the other directory
    194 specifications that were not explicitly provided.
    195 
    196 The most portable way to affect installation locations is to pass the
    197 correct locations to `configure`; however, many packages provide one or
    198 both of the following shortcuts of passing variable assignments to the
    199 `make install` command line to change installation locations without
    200 having to reconfigure or recompile.
    201 
    202 The first method involves providing an override variable for each
    203 affected directory.  For example,
    204     `make install prefix=/alternate/directory`
    205 will choose an alternate location for all directory configuration
    206 variables that were expressed in terms of `${prefix}`.  Any directories
    207 that were specified during `configure`, but not in terms of `${prefix}`,
    208 must each be overridden at install time for the entire installation to
    209 be relocated.  The approach of makefile variable overrides for each
    210 directory variable is required by the GNU Coding Standards, and ideally
    211 causes no recompilation.  However, some platforms have known limitations
    212 with the semantics of shared libraries that end up requiring
    213 recompilation when using this method, particularly noticeable in
    214 packages that use GNU Libtool.
    215 
    216 The second method involves providing the `DESTDIR` variable.  For
    217 example, `make install DESTDIR=/alternate/directory` will prepend
    218 `/alternate/directory` before all installation names.  The approach of
    219 `DESTDIR` overrides is not required by the GNU Coding Standards, and
    220 does not work on platforms that have drive letters.  On the other hand,
    221 it does better at avoiding recompilation issues, and works well even
    222 when some directory options were not specified in terms of `${prefix}`
    223 at `configure` time.
    224 
    225 
    226 ### Optional Features
    227 
    228 If the package supports it, you can cause programs to be installed
    229 with an extra prefix or suffix on their names by giving `configure` the
    230 option `--program-prefix=PREFIX` or `--program-suffix=SUFFIX`.
    231 
    232 Some packages pay attention to `--enable-FEATURE` options to
    233 `configure`, where FEATURE indicates an optional part of the package.
    234 They may also pay attention to `--with-PACKAGE` options, where PACKAGE
    235 is something like `gnu-as` or `x` (for the X Window System).  The
    236 `README` should mention any `--enable-` and `--with-` options that the
    237 package recognizes.
    238 
    239 For packages that use the X Window System, `configure` can usually
    240 find the X include and library files automatically, but if it doesn't,
    241 you can use the `configure` options `--x-includes=DIR` and
    242 `--x-libraries=DIR` to specify their locations.
    243 
    244 Some packages offer the ability to configure how verbose the
    245 execution of `make` will be.  For these packages, running
    246     `./configure --enable-silent-rules`
    247 sets the default to minimal output, which can be
    248 overridden with `make V=1`; while running 
    249     `./configure --disable-silent-rules`
    250 sets the default to verbose, which can be overridden with `make V=0`.
    251 
    252 
    253 
    254 ### Particular systems
    255 
    256 On HP-UX, the default C compiler is not ANSI C compatible.  If GNU CC
    257 is not installed, it is recommended to use the following options in
    258 order to use an ANSI C compiler:
    259 
    260 ```
    261     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
    262 ```
    263 
    264 and if that doesn't work, install pre-built binaries of GCC for HP-UX.
    265 
    266 HP-UX `make` updates targets which have the same timestamps as their
    267 prerequisites, which makes it generally unusable when shipped generated
    268 files such as `configure` are involved.  Use GNU `make` instead.
    269 
    270 On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
    271 parse its `<wchar.h>` header file.  The option `-nodtk` can be used as a
    272 workaround.  If GNU CC is not installed, it is therefore recommended to
    273 try
    274 
    275 ```
    276      ./configure CC="cc"
    277 ```
    278 
    279 and if that doesn't work, try
    280 
    281 ```
    282      ./configure CC="cc -nodtk"
    283 ```
    284 
    285 On Solaris, don't put `/usr/ucb` early in your `PATH`.  This
    286 directory contains several dysfunctional programs; working variants of
    287 these programs are available in `/usr/bin`.  So, if you need `/usr/ucb`
    288 in your `PATH`, put it _after_ `/usr/bin`.
    289 
    290 On Haiku, software installed for all users goes in `/boot/common`,
    291 not `/usr/local`.  It is recommended to use the following options:
    292 
    293 ```
    294      ./configure --prefix=/boot/common
    295 ```
    296 
    297 
    298 ### Specifying the System Type
    299 
    300 There may be some features `configure` cannot figure out
    301 automatically, but needs to determine by the type of machine the package
    302 will run on.  Usually, assuming the package is built to be run on the
    303 _same_ architectures, `configure` can figure that out, but if it prints
    304 a message saying it cannot guess the machine type, give it the
    305 `--build=TYPE` option.  TYPE can either be a short name for the system
    306 type, such as `sun4`, or a canonical name which has the form:
    307 
    308 ```
    309      CPU-COMPANY-SYSTEM
    310 ```
    311 
    312 where SYSTEM can have one of these forms:
    313 
    314 ```
    315      OS
    316      KERNEL-OS
    317 ```
    318 
    319 See the file `config.sub` for the possible values of each field.  If
    320 `config.sub` isn't included in this package, then this package doesn't
    321 need to know the machine type.
    322 
    323 If you are _building_ compiler tools for cross-compiling, you should
    324 use the option `--target=TYPE` to select the type of system they will
    325 produce code for.
    326 
    327 If you want to _use_ a cross compiler, that generates code for a
    328 platform different from the build platform, you should specify the
    329 "host" platform (i.e., that on which the generated programs will
    330 eventually be run) with `--host=TYPE`.
    331 
    332 Sharing Defaults
    333 ================
    334 
    335 If you want to set default values for `configure` scripts to share,
    336 you can create a site shell script called `config.site` that gives
    337 default values for variables like `CC`, `cache_file`, and `prefix`.
    338 `configure` looks for `PREFIX/share/config.site` if it exists, then
    339 `PREFIX/etc/config.site` if it exists.  Or, you can set the
    340 `CONFIG_SITE` environment variable to the location of the site script.
    341 A warning: not all `configure` scripts look for a site script.
    342 
    343 Defining Variables
    344 ==================
    345 
    346 Variables not defined in a site shell script can be set in the
    347 environment passed to `configure`.  However, some packages may run
    348 configure again during the build, and the customized values of these
    349 variables may be lost.  In order to avoid this problem, you should set
    350 them in the `configure` command line, using `VAR=value`.  For example:
    351 
    352 ```
    353      ./configure CC=/usr/local2/bin/gcc
    354 ```
    355 
    356 causes the specified `gcc` to be used as the C compiler (unless it is
    357 overridden in the site shell script).
    358 
    359 Unfortunately, this technique does not work for `CONFIG_SHELL` due to an
    360 Autoconf limitation.  Until the limitation is lifted, you can use this
    361 workaround:
    362 
    363 ```
    364      CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
    365 ```
    366 
    367 
    368 ### `configure` Invocation
    369 
    370 `configure` recognizes the following options to control how it operates.
    371 
    372 ```
    373     --help
    374     -h
    375          Print a summary of all of the options to configure, and exit.
    376 
    377     --help=short
    378     --help=recursive
    379          Print a summary of the options unique to this packages
    380          configure, and exit.  The short variant lists options used only
    381          in the top level, while the recursive variant lists options also
    382          present in any nested packages.
    383 
    384     --version
    385     -V
    386          Print the version of Autoconf used to generate the configure
    387          script, and exit.
    388 
    389     --cache-file=FILE
    390          Enable the cache: use and save the results of the tests in FILE,
    391          traditionally config.cache.  FILE defaults to /dev/null to
    392          disable caching.
    393 
    394     --config-cache
    395     -C
    396          Alias for --cache-file=config.cache.
    397 
    398     --quiet
    399     --silent
    400     -q
    401          Do not print messages saying which checks are being made.  To
    402          suppress all normal output, redirect it to /dev/null (any error
    403          messages will still be shown).
    404 
    405     --srcdir=DIR
    406          Look for the packages source code in directory DIR.  Usually
    407          configure can determine that directory automatically.
    408 
    409     --prefix=DIR
    410          Use DIR as the installation prefix.  *note Installation Names:: for
    411          more details, including other options available for fine-tuning the
    412          installation locations.
    413 
    414     --no-create
    415     -n
    416          Run the configure checks, but stop before creating any output
    417          files.
    418 ```
    419 
    420 `configure` also accepts some other, not widely useful, options.  Run
    421 `configure --help` for more details.
    422