// file : INSTALL.cli // copyright : Copyright (c) 2014-2019 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file " One of the primary goals of the \c{build2} toolchain is to provide a uniform build interface across all the platforms and compilers. As a result, if you already have the toolchain installed and would like to upgrade to a newer version, then there is a single set of \l{#upgrade upgrade instructions} for all the platforms. If, however, you need to install the toolchain for the first time, then it has to be bootstrapped and that process is platform-specific. The rest of this section discusses a few general bootstrap considerations and then directs you to the appropriate platform-specific instructions. In the rest of this guide we use the \c{$} symbol for a UNIX shell prompt and \c{>} for the Windows command prompt. Similarly, we use \c{\\} for UNIX command line continuations and \c{^} for Windows. Usually you should be able to copy and paste (sans the prompt) example commands in order to execute them but sometimes you might need to change a thing or two (for example, replace \c{X.Y.Z} with the actual version). Once we are able to use the \c{build2} toolchain, the command line interface becomes regular and we usually only show the UNIX version of the commands. In this case making a Windows version is a simple matter of adjusting paths and, if used, line continuations. The \c{build2} toolchain requires a C++14 compiler. From the commonly-used options, GCC 4.9, Clang 3.7, and MSVC 14 (2015) Update 3 or any later versions of these compilers should work. \N|Note that the C++ compiler that you use to build the \c{build2} toolchain and the one that you will use to build your projects need not be the same. For example, if you are using MSVC 12 (2013) (which cannot build \c{build2}), it is perfectly fine to get a minimal MinGW toolchain and use that to build \c{build2}; you will still be able to use MSVC to build your own code.| At the high level, the bootstrap process involves the following 5 steps. \dl| \li|\b{1. Bootstrap, Phase 1}\n First, a minimal build system executable is built using provided shell scripts/batch files or a GNU makefile. The result is only guaranteed to be able to rebuild the build system itself.| \li|\n\b{2. Bootstrap, Phase 2}\n Then, the build system is rebuilt with static libraries. The result is only guaranteed to be able to build the build system and the package manager.| \li|\n\b{3. Stage}\n At this step the build system and package manager are built with shared libraries and then staged.| \li|\n\b{4. Install}\n Next, the staged tools are used to build and install the entire toolchain from the package repository with the \cb{bpkg} package manager.| \li|\n\b{5. Clean}\n Finally, the staged at step 3 tools are uninstalled.|| The end result of the bootstrap process is the installed toolchain as well as the \c{bpkg} configuration (created at step 4) that can be used to upgrade to newer versions. \N|You can skip step 4 and instead install at step 3 if for some reason you prefer not to build from packages (for example, because the machine is offline).| For Windows, if you are using either MSVC or MinGW, continue with \l{#bootstrap-windows Bootstrapping on Windows}. If using MSYS or Cygwin, then instead refer to \l{#bootstrap-unix Bootstrapping on UNIX}. For Mac OS X, continue with \l{#bootstrap-macosx Bootstrapping on Mac OS X}. For other UNIX-like operating systems (GNU/Linux, FreeBSD, etc; this also includes MSYS/Cygwin), continue with \l{#bootstrap-unix Bootstrapping on UNIX}. "