From 3acc244692b1a973be85cc95c8529ca9c12a7b48 Mon Sep 17 00:00:00 2001 From: scrrrapy Date: Thu, 14 Jan 2016 00:49:45 +0000 Subject: [PATCH] reordered unix targeted documentation to be more user-friendly Also fixed wrong build root. --- docs/build_notes_unix.md | 114 +++++++++++++++++++++++++-------------- 1 file changed, 73 insertions(+), 41 deletions(-) diff --git a/docs/build_notes_unix.md b/docs/build_notes_unix.md index 145e1a70..aa43b2c5 100644 --- a/docs/build_notes_unix.md +++ b/docs/build_notes_unix.md @@ -1,46 +1,60 @@ Building on Unix systems ============================= -Common build/install process from sources: +First of all we need to make sure that all dependencies are satisfied. -* git clone https://github.com/PurpleI2P/i2pd.git -* mkdir -p 'i2pd/build/tmp' && cd 'i2pd/build/tmp' -* cmake -DCMAKE_BUILD_TYPE=Release .. -* make -* make install +This doc is trying to cover: +* [Debian/Ubuntu](#debianubuntu) (contains packaging instructions) +* [FreeBSD](#freebsd) -Available cmake options: +Make sure you have all required dependencies for your system successfully installed. -* CMAKE_BUILD_TYPE -- build profile (Debug/Release) -* WITH_AESNI -- AES-NI support (ON/OFF) -* WITH_HARDENING -- enable hardening features (ON/OFF) (gcc only) -* WITH_BINARY -- build i2pd itself -* WITH_LIBRARY -- build libi2pd -* WITH_STATIC -- build static versions of library and i2pd binary -* WITH_UPNP -- build with UPnP support (requires libupnp) -* WITH_PCH -- use pre-compiled header (experimental, speeds up build) +If so then we are ready to go! +Let's clone the repository and start building the i2pd: +```bash +git clone https://github.com/PurpleI2P/i2pd.git +cd i2pd/build +cmake -DCMAKE_BUILD_TYPE=Release # more options could be passed, see "CMake Options" +make +``` + +After successfull build i2pd could be installed with: +```bash +make install +``` Debian/Ubuntu ------------- -For building from source on debian system you will need the following "-dev" packages: - -* libboost-chrono-dev -* libboost-date-time-dev -* libboost-filesystem-dev -* libboost-program-options-dev -* libboost-regex-dev -* libboost-system-dev -* libboost-thread-dev -* libssl-dev (e.g. openssl) -* zlib1g-dev (libssl-dev already depends on it) -* libminiupnpc-dev (optional, if WITH_UPNP=ON) +You will need a compiler and other tools that could be installed with `build-essential` package: +```bash +sudo apt-get install build-essential +``` + +Also you will need a bunch of development libraries: +```bash +sudo apt-get install \ + libboost-chrono-dev \ + libboost-date-time-dev \ + libboost-filesystem-dev \ + libboost-program-options-dev \ + libboost-regex-dev \ + libboost-system-dev \ + libboost-thread-dev \ + libssl-dev +``` + +If you need UPnP support (don't forget to run CMake with `WITH_UPNP=ON`) miniupnpc development library should be installed: +```bash +sudo apt-get install libminiupnpc-dev +``` You may also build deb-package with the following: - - apt-get install build-essential fakeroot devscripts - cd i2pd - debuild --no-tgz-check # building from git repo +```bash +sudo apt-get install fakeroot devscripts +cd i2pd +debuild --no-tgz-check +``` FreeBSD ------- @@ -49,17 +63,35 @@ Branch 9.X has gcc v4.2, that knows nothing about required c++11 standart. Required ports: -* devel/cmake -* devel/boost-libs -* lang/gcc47 # or later version - -To use newer compiler you should set these variables: +* `devel/cmake` +* `devel/boost-libs` +* `lang/gcc47`(or later version) - export CC=/usr/local/bin/gcc47 - export CXX=/usr/local/bin/g++47 - -Replace "47" with your actual gcc version +To use newer compiler you should set these variables(replace "47" with your actual gcc version): +```bash +export CC=/usr/local/bin/gcc47 +export CXX=/usr/local/bin/g++47 +``` Branch 10.X has more reliable clang version, that can finally build i2pd, -but i still recommend to use gcc, otherwise you will fight it's bugs by +but I still recommend to use gcc, otherwise you will fight it's bugs by your own. + +CMake Options +------------- + +Available CMake options(each option has a for of `=`, for more information see `man 1 cmake`): + +* `CMAKE_BUILD_TYPE` build profile (Debug/Release) +* `WITH_BINARY` build i2pd itself +* `WITH_LIBRARY` build libi2pd +* `WITH_STATIC` build static versions of library and i2pd binary +* `WITH_UPNP` build with UPnP support (requires libupnp) +* `WITH_AESNI` build with AES-NI support (ON/OFF) +* `WITH_HARDENING` enable hardening features (ON/OFF) (gcc only) +* `WITH_PCH` use pre-compiled header (experimental, speeds up build) + +Also there is `-L` flag for CMake that could be used to list current cached options: +```bash +cmake -L +```