Update to odulow per maintenance bronze
[o-du/phy.git] / docs / build_prerequisite.rst
1 ..    Copyright (c) 2019 Intel
2 ..
3 ..  Licensed under the Apache License, Version 2.0 (the "License");
4 ..  you may not use this file except in compliance with the License.
5 ..  You may obtain a copy of the License at
6 ..
7 ..      http://www.apache.org/licenses/LICENSE-2.0
8 ..
9 ..  Unless required by applicable law or agreed to in writing, software
10 ..  distributed under the License is distributed on an "AS IS" BASIS,
11 ..  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 ..  See the License for the specific language governing permissions and
13 ..  limitations under the License.
14
15 .. |br| raw:: html
16
17    <br />
18
19 Build Prerequisite
20 ====================
21
22 .. contents::
23     :depth: 3
24     :local:
25     
26 This section describes how to install and build the required components needed to build the FHI Library, WLS Library and the 5G FAPI TM modules.
27
28 Install ICC
29 ------------
30 Intel® C++ Compiler v19.0.3 is used for the test application and system integration with L1, 
31 The Intel® C++ Compiler can be obtained using the following link https://software.intel.com/en-us/system-studio/choose-download with community |br|
32 license::
33
34          COPY $icc_license_file $BUILD_DIR/license.lic
35     
36 *Note: The version available at this link is always the latest ICC version, the verification for that version may not have been 
37 performed yet, so please provide feedback through O-DU Low project WIKI page if you face any issues.*
38
39
40 You can follow the installation guide from above website to download Intel System Studio and install. Intel® Math Kernel Library, Intel® Integrated Performance Primitives and Intel® C++ Compiler are mandatory components.
41 Here we are using the Linux* Host,Linux* Target and standalone installer as one example, below link might need update based on the website ::
42
43          #wget https://registrationcenter-download.intel.com/akdlm/irc_nas/16789/system_studio_2020_u2_ultimate_edition_offline.tar.gz
44          #cd /opt && mkdir intel && cp $BUILD_DIR/license.lic intel/license.lic
45          #tar -zxvf $BUILD_DIR/system_studio_2020_u2_ultimate_edition_offline.tar.gz
46
47 Edit system_studio_2020_ultimate_edition_offline/silent.cfg to accept the EULA file as below example::
48   
49          ACCEPT_EULA=accept
50          PSET_INSTALL_DIR=opt/intel
51          ACTIVATION_LICENSE_FILE=/opt/intel/license.lic
52          ACTIVATION_TYPE=license_file
53     
54 Silent installation::
55
56          #./install.sh -s silent.cfg
57
58 Set env for ICC::
59  
60          #source /opt/intel/system_studio_2020/bin/iccvars.sh intel64
61          #export PATH=/opt/intel/system_studio_2020/bin/:$PATH
62
63
64 Download and Build DPDK
65 -----------------------
66    - download DPDK::
67      
68          #wget http://static.dpdk.org/rel/dpdk-19.11.tar.x
69          #tar -xf dpdk-19.11.tar.xz
70          #export RTE_TARGET=x86_64-native-linuxapp-icc
71          #export RTE_SDK=Intallation_DIR/dpdk-19.11
72
73    - patch DPDK for O-RAN FHI lib, this patch is specific for O-RAN FHI to reduce the data transmission latency of Intel NIC. This may not be needed for some NICs, please refer to |br| O-RAN FHI Lib Introduction -> setup configuration -> A.2 prerequisites
74
75    - SW FEC was enabled by default, to enable HW FEC with specific accelerator card, you need to get the associated driver and build steps from the accelerator card vendors.
76
77
78    - build DPDK
79       build DPDK::
80
81         #./usertools/dpdk-setup.sh
82         select [39] x86_64-native-linuxapp-icc
83         exit   [62] Exit Script
84
85    - set DPDK path
86        DPDK path is needed during build and run lib/app::
87
88         #export RTE_SDK=Intallation_DIR/dpdk-19.11
89         #export DESTDIR=Installation_DIR/dpdk-19.11
90
91
92 Install google test
93 -------------------
94 Download google test from https://github.com/google/googletest/releases 
95    - Example build and installation commands::
96
97         #tar -xvf googletest-release-1.7.0.tar.gz
98         #mv googletest-release-1.7.0 gtest-1.7.0
99         #export GTEST_DIR=YOUR_DIR/gtest-1.7.0
100         #export GTEST_ROOT= $GTEST_DIR
101         #cd ${GTEST_DIR}
102         #g++ -isystem ${GTEST_DIR}/include -I${GTEST_DIR} -pthread -c ${GTEST_DIR}/src/gtest-all.cc
103         #ar -rv libgtest.a gtest-all.o
104         #cd ${GTEST_DIR}/build-aux
105         #cmake ${GTEST_DIR}
106         #make
107         #cd ${GTEST_DIR}
108         #ln -s build-aux/libgtest_main.a libgtest_main.a
109
110 - Set the google test Path
111    this path should be always here when you build and run O-RAN FH lib unit test::
112
113         #export DIR_ROOT_GTEST="your google test path"
114
115
116 Configure FEC card
117 --------------------
118 For the Bronze Release only a SW FEC is available so this step is not needed, for later releases the required information will be added to the document.
119
120 Customize a setup environment shell script
121 ------------------------------------------
122 Using as an example the provided in the folder phy\\setupenv.sh as the starting point
123 customize this script to provide the paths to the tools and libraries that
124 are used building and running the code.
125 You can add for example the following entries based on your particular installation and the
126 following illustration is just an example::
127                                                                            
128 - export DIR_ROOT=/home/                                                           
129 - #set the L1 binary root DIR                                                      
130 - export DIR_ROOT_L1_BIN=$DIR_ROOT/FlexRAN                                         
131 - #set the phy root DIR                                                            
132 - export DIR_ROOT_PHY=$DIR_ROOT/phy                                                
133 - #set the DPDK root DIR                                                           
134 - #export DIR_ROOT_DPDK=/home/dpdk-19.11                                           
135 - #set the GTEST root DIR                                                          
136 - #export DIR_ROOT_GTEST=/home/gtest/gtest-1.7.0                                                                                                                   
137 - export DIR_WIRELESS_TEST_5G=$DIR_ROOT_L1_BIN/testcase                            
138 - export DIR_WIRELESS_SDK=$DIR_ROOT_L1_BIN/sdk/build-avx512-icc                    
139 - export DIR_WIRELESS_TABLE_5G=$DIR_ROOT_L1_BIN/l1/bin/nr5g/gnb/l1/table           
140 - #source /opt/intel/system_studio_2019/bin/iccvars.sh intel64 -platform linux     
141 - export XRAN_DIR=$DIR_ROOT_PHY/fhi_lib                                            
142 - export XRAN_LIB_SO=true                                                          
143 - export RTE_TARGET=x86_64-native-linuxapp-icc                                     
144 - #export RTE_SDK=$DIR_ROOT_DPDK                                                   
145 - #export DESTDIR=""                                                                                                                                              
146 - #export GTEST_ROOT=$DIR_ROOT_GTEST                                                                                                                             
147 - export ORAN_5G_FAPI=true                                                         
148 - export DIR_WIRELESS_WLS=$DIR_ROOT_PHY/wls_lib                                    
149 - export DEBUG_MODE=true                                                           
150 - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DIR_WIRELESS_WLS:$XRAN_DIR/lib/build    
151 - export DIR_WIRELESS=$DIR_ROOT_L1_BIN/l1                                          
152 - export DIR_WIRELESS_ORAN_5G_FAPI=$DIR_ROOT_PHY/fapi_5g                           
153 - export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DIR_ROOT_L1_BIN/libs/cpa/bin        
154
155 Then issue::
156
157 - source ./setupenv.sh
158
159 This sets up the correct environment to build the code
160
161 Then build the wls_lib, FHI_Lib, 5G FAPI TM prior to running the code with the steps described in the Run L1 section
162                                                                                  
163
164
165
166
167
168
169