aboutsummaryrefslogtreecommitdiff
path: root/INSTALL.cli
diff options
context:
space:
mode:
Diffstat (limited to 'INSTALL.cli')
-rw-r--r--INSTALL.cli164
1 files changed, 164 insertions, 0 deletions
diff --git a/INSTALL.cli b/INSTALL.cli
new file mode 100644
index 0000000..f3910c2
--- /dev/null
+++ b/INSTALL.cli
@@ -0,0 +1,164 @@
+// file : INSTALL.cli
+// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
+// license : MIT; see accompanying LICENSE file
+
+"
+The \c{build2} toolchain requires a C++11 compiler with limited C++14 support.
+GCC 4.8 or later and Clang 3.4 or later are known to work. If you only need the
+\c{build2} build system without the \c{bpkg} package manager, then the C++
+compiler is all you will need. If, however, you would also like to build
+\c{bpkg}, then you will first need to obtain SQLite as well as the \c{libodb}
+and \c{libodb-sqlite} libraries.
+
+In this guide we install everything that we build into \c{/usr/local}. If you
+would like to use a different installation location, you will need to make
+adjustments to the commands below.
+
+Note on \c{/usr/local}: most distributions these days \"cripple\" this location
+by either not searching \c{/usr/local/include} for headers during compilation
+(so we add the \c{-I} option) or not searching \c{/usr/local/lib} for libraries
+either during linking (so we add the \c{-L} option) or at runtime (which we fix
+with the help of \c{-rpath}). If you know that your installation doesn't suffer
+from (some of) these issues, then you can adjust the commands below
+accordingly. Note that even if \c{/usr/local/lib} is searched at runtime, you
+may still have to run \cb{ldconfig(1)} (as \c{root}) after the installation to
+refresh the library cache.
+
+\dl|
+
+\li|1. Installing SQLite\n
+
+ Skip this step if you are only interested in the \c{build2} build system.
+
+ To install SQLite, use your distribution's package manager and make sure
+ you install both the libraries (most likely already installed) and the
+ development files.
+
+ For Debian/Ubuntu:
+
+ \
+ $ sudo apt-get install libsqlite3-dev
+ \
+
+ For RedHat/Fedora:
+
+ \
+ $ sudo yum install sqlite-devel
+ \
+
+ For FreeBSD:
+
+ \
+ # pkg install sqlite3
+ \
+
+ |
+
+\li|\n2. Installing \c{libodb} and \c{libodb-sqlite}\n
+
+ Again, skip this step if you are only interested in the \c{build2} build
+ system.
+
+ [Currently we use pre-release versions of these libraries so they have to be
+ built from source.]
+
+ Download source packages for the two libraries from the same location as
+ \c{build2-toolchain}. Then unpack, build, and install:
+
+ \
+ $ cd libXXX-X.Y.Z
+ $ ./configure CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib \
+ --prefix=/usr/local
+ $ make
+ $ sudo make install
+ \
+
+ See the \c{INSTALL} file for each library for more information.|
+
+\li|\n3. Bootstrapping \c{build2}\n
+
+ The first step is to bootstrap the \c{build2} build system:
+
+ \
+ $ cd build2-toolchain-X.Y.Z
+ $ cd build2/
+ $ ./bootstrap
+ $ ./build/b-boot config.bin.rpath=/usr/local/lib update
+ \
+
+ For more information on this step (for example, how to specify the C++
+ compiler to use, etc.) refer to the \c{INSTALL} file in the \c{build2/}
+ subdirectory of \c{build2-toolchain}.|
+
+\li|\n4. Configuring, Building, and Installing the Rest of the Toolchain\n
+
+ \
+ $ cd .. # back to build2-toolchain-X.Y.Z
+
+ $ ./build2/build/b \
+ config.cxx.poptions=-I/usr/local/include \
+ config.cxx.loptions=-L/usr/local/lib \
+ config.bin.rpath=/usr/local/lib \
+ config.install.root=/usr/local \
+ config.install.root.sudo=sudo \
+ configure
+
+ $ ./build2/build/b update
+ $ ./build2/build/b install
+ \
+
+ To test the installation, run:
+
+ \
+ $ which b
+ $ b --version
+
+ $ which bpkg
+ $ bpkg --version
+
+ $ cd # back to home directory
+ \
+
+ |
+
+\li|\n5. Setting up updates with the package manager\n
+
+ If you only need to build this specific version of the toolchain, then you
+ are done and can skip this step. However, if you are planning to upgrade to
+ future versions, then going every time through the bootstrap steps will be
+ tedious. Instead, we can use the \c{bpkg} package manager to manage upgrades
+ automatically. Note also that without periodic upgrades your version of the
+ toolchain may become too old to be able to upgrade itself. In this case you
+ will have to fall back onto the bootstrap process.
+
+ First, choose a directory where you would like \c{bpkg} to build everything,
+ for example, \c{build2-toolchain}. Then:
+
+ \
+ $ mkdir build2-toolchain
+ $ cd build2-toolchain
+
+ $ bpkg create \
+ cxx \
+ config.cxx.poptions=-I/usr/local/include \
+ config.cxx.loptions=-L/usr/local/lib \
+ config.bin.rpath=/usr/local/lib \
+ config.install.root=/usr/local \
+ config.install.root.sudo=sudo
+
+ $ bpkg add http://pkg.cppget.org/1/alpha
+ $ bpkg fetch
+ $ bpkg build build2 bpkg
+ $ bpkg install build2 bpkg
+ \
+
+ Later, to upgrade to new a new version of the toolchain, simply execute:
+
+ \
+ $ bpkg fetch
+ $ bpkg build build2 bpkg
+ $ bpkg install build2 bpkg
+ \
+
+ ||
+"