// file      : INSTALL.cli
// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
// license   : MIT; see accompanying LICENSE file

"
Unless you specifically only need the \c{build2} build system and not the
complete \c{build2} toolchain, you should use the \c{build2-toolchain}
distribution instead.

The instructions outlined below are essentially a summary of the first three
steps of the manual bootstrap process described in \c{build2-toolchain}. Also,
below we only show commands for UNIX-like operating systems. For other
operating systems and for more details on each step, refer to the
\c{build2-toolchain} documentation.

\c{build2} requires a C++14 compiler. GCC 4.8 or later and Clang 3.4 or later
are known to work. The build system is self-hosted, which means that unless
you have obtained a pre-built binary from somewhere else, you will need to
bootstrap it. To accomplish this, we use the \c{bootstrap.sh} shell script (or
equivalent batch files for Windows) found in the root directory of the
\c{build2} distribution. The following is the recommended sequence of steps:


\dl|

\li|\b{0. Prerequisites}\n

Get \c{libbutl} (normally from the same place where you got \c{build2}) and
place it \i{inside} \c{build2}, so that you have:

\
build2-X.Y.Z
|
`-- libbutl-X.Y.Z
\

|

\li|\n\b{1. Bootstrap, Phase 1}\n

First, we build a minimal build system using \c{bootstrap.sh} (run
\c{bootstrap.sh -h} for options):

\
$ cd build2-X.Y.Z
$ ./bootstrap.sh g++

$ build2/b-boot --version
\

|

\li|\n\b{2. Bootstrap, Phase 2}\n

Then, we rebuild the build system with the result of Phase 1 linking
libraries statically.

\
$ build2/b-boot config.cxx=g++ config.bin.lib=static
$ mv build2/b build2/b-boot

$ build2/b-boot --version
\

|

\li|\n\b{3. Build and Install}\n

Finally, we configure, build, and optionally install the \"final\" version
using shared libraries:

\
$ build2/b-boot configure         \
  config.cxx=g++                  \
  config.cc.coptions=-O3          \
  config.bin.rpath=/usr/local/lib \
  config.install.root=/usr/local  \
  config.install.sudo=sudo

$ build2/b-boot
\

I you are not planning to install the result you can omit the
\c{config.install.*} values as well as \c{.rpath}.


To install:

\
$ build2/b-boot install
$ which b
$ b --version
\

To uninstall:

\
$ b uninstall
$ which b
\

||
"