nancy.liao
2025-05-29 8d405b265285c368df2e9cf1c14acee7532e0ee7
doc/development/Build-the-library.md
@@ -1,10 +1,12 @@
# Build - Linux
## Install prerequisites
Below the prerequisites for compiling open-license-manager. For developing it we use Eclipse. Recent CDT works smoothly with CMake. Remember to install the Ninja package as build system and Cmake Gui for a good eclipse integration.
Below the prerequisites for compiling `licensecc`. For developing it we use Eclipse.
Recent CDT works smoothly with CMake. Remember to install the Ninja package as build system and Cmake Gui for a good eclipse integration.
 
### Ubuntu
Supported Ubuntu distributions are 18.04 (Bionic Beaver) and 16.04 (Xenial) though it should be possible to build on any recent Ubuntu version.
Supported Ubuntu distributions are 20.04 (Focal Fossa), 18.04 (Bionic Beaver) and 16.04 (Xenial).
It should be possible to build on any recent Debian-derivate distribution.
Install prerequisites:
@@ -22,19 +24,19 @@
### CentOS 7
CentOS 7 ships with gcc 4.8 that isn't working for a bug on regular expression. It's necessary to update to gcc 4.9 or later.
CentOS 7 ships with gcc 4.8 that isn't compiling for a bug on regular expression. It's necessary to update to gcc 4.9 or later.
Install prerequisites:
```console
yum -y update && yum -y install wget boost boost-devel boost-static openssl openssl-devel glibc-static centos-release-scl-rh
yum -y install devtoolset-7-toolchain devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-valgrind-devel
yum -y update && yum -y install install centos-release-scl
yum -y install wget boost boost-devel boost-static openssl openssl-devel openssl-static
yum -y install glibc-static devtoolset-7-toolchain devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-valgrind-devel
scl enable devtoolset-7 bash
export CC=/opt/rh/devtoolset-7/root/usr/bin/gcc
export CXX=/opt/rh/devtoolset-7/root/usr/bin/g++
```
Centos 7 ships with CMake 2.8.11 that's not supported anymore. You need to compile and install a newer (>3.6) version of CMake.
Centos 7 ships with CMake 2.8.11 that's not supported. You need to compile and install a newer (>3.6) version of CMake.
```console
wget https://cmake.org/files/v3.11/cmake-3.11.0.tar.gz 
@@ -46,7 +48,8 @@
cmake --version #(check it's 3.11.0) 
```
If you don't want to install all these prerequisites you can also build the library in a docker container. Check for the corresponding section in the `.travis.yml` file at the base of the project.
If you don't want to install all these prerequisites in your machine you can also build the library in a docker container.
Check for the corresponding Centos 7 section in the `.travis.yml` file at the base of the project.
### CentOS 8
Install prerequisites:
@@ -67,16 +70,15 @@
```
### Other linux
Open License Manager should compile on any recent (2019) linux distribution. Being CentOS 7 the older distribution we keep compatibilty with.
Licensecc should compile on any recent (2020) linux distribution. Being CentOS 7 the older distribution we keep compatibilty with.
Minimum prerequisites
*   gcc => 4.9, cmake => 3.6
*   zlib, openssl => 1.0.2 
*   Boost => 1.53 (If you want to compile your own boost version remember to use the flag `runtime-link=static`)
*   Boost => 1.57 (If you want to compile your own boost version remember to use the flag `runtime-link=static`)
Optional prerequisites:
*   Dbus (if you want to enable dbus generated identifiers)
*   Doxygen
*   Doxygen, Sphynx for documentation
## Download and compile
@@ -84,13 +86,13 @@
This project has a submodule (the license generator). Remember to add the option `--recursive` to clone it.
```console
git clone --recursive https://github.com/open-license-manager/open-license-manager.git
git clone --recursive https://github.com/open-license-manager/licensecc.git
```
### Configure:
```console
cd open-license-manager/build
cd licensecc/build
cmake .. -DCMAKE_INSTALL_PREFIX=../install
```
@@ -153,3 +155,25 @@
cmake -DCMAKE_TOOLCHAIN_FILE=../modules/toolchain-ubuntu-mingw64.cmake -DOPENSSL_ROOT_DIR=$CUR_PATH/openssl-OpenSSL_1_1_1d/dist -DCMAKE_FIND_DEBUG_MODE=ON -DOPENSSL_USE_STATIC_LIBS=ON -DBOOST_ROOT=$CUR_PATH/boost_1_71_0/dist  ..
```
###Build documentation
Setup the python virtual environment:
```
python3 -m venv .venv
. .venv/bin/activate
pip install wheel
pip install -r requirements.txt
```
Build the docs:
```
. .venv/bin/activate
cd build
cmake ..
make documentation
```