build_oai 38.6 KB
Newer Older
thomasl's avatar
thomasl committed
1
#!/bin/bash
2 3 4 5 6
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements.  See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
Cedric Roux's avatar
Cedric Roux committed
7
# * the OAI Public License, Version 1.1  (the "License"); you may not use this file
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# *      http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# *      contact@openairinterface.org
# */

23
# file build_oai
thomasl's avatar
thomasl committed
24 25 26
# brief OAI automated build tool that can be used to install, compile, run OAI.
# author  Navid Nikaein, Lionel GAUTHIER, Laurent Thomas

FredericLeroy's avatar
FredericLeroy committed
27
set -e
thomasl's avatar
thomasl committed
28 29 30 31

################################
# include helper functions
################################
thomasl's avatar
thomasl committed
32
ORIGIN_PATH=$PWD
thomasl's avatar
thomasl committed
33
THIS_SCRIPT_PATH=$(dirname $(readlink -f $0))
34
source $THIS_SCRIPT_PATH/tools/build_helper
thomasl's avatar
thomasl committed
35

36 37 38 39 40 41 42
# set environment variables (OPENAIR_HOME, ...)
set_openair_env

#variables for UE data generation
gen_nvram_path=$OPENAIR_DIR/targets/bin
conf_nvram_path=$OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf

43
MSC_GEN=0
44
XFORMS="True"
Xu Bo's avatar
Xu Bo committed
45
UE_EXPANSION="False"
46
PRINT_STATS="False"
thomasl's avatar
thomasl committed
47
VCD_TIMING="False"
laurent's avatar
laurent committed
48 49
DEADLINE_SCHEDULER_FLAG_USER="False"
FORCE_DEADLINE_SCHEDULER_FLAG_USER=""
50
CPU_AFFINITY_FLAG_USER="False" #Only valid when lowlatecy flag is set to False
51
REL="Rel15"
ChenWeiTai's avatar
ChenWeiTai committed
52
NR_REL="NR_Rel15"
53
HW="None"
54
TP="None"
Florian Kaltenberger's avatar
Florian Kaltenberger committed
55
NOS1=0
Wang's avatar
Wang committed
56
HW_LATENCY=0
gauthier's avatar
gauthier committed
57
EPC=0
58
VERBOSE_COMPILE=0
59
CFLAGS_PROCESSOR_USER=""
60 61
RUN_GROUP=0
TEST_CASE_GROUP=""
62
BUILD_DOXYGEN=0
63
T_TRACER="True"
Rohit Gupta's avatar
Rohit Gupta committed
64
DISABLE_HARDWARE_DEPENDENCY="False"
65
CMAKE_BUILD_TYPE=""
66
CMAKE_CMD="$CMAKE"
67
UE_AUTOTEST_TRACE="False"
Gabriel's avatar
Gabriel committed
68 69
UE_DEBUG_TRACE="False"
UE_TIMING_TRACE="False"
Cedric Roux's avatar
Cedric Roux committed
70
DISABLE_LOG_X="False"
71
USRP_REC_PLAY="False"
72
BUILD_ECLIPSE=0
Guy De Souza's avatar
Guy De Souza committed
73
NR="False"
74
UE_NAS_USE_TUN="False"
Cedric Roux's avatar
Cedric Roux committed
75
BASIC_SIMULATOR=0
76 77
trap handle_ctrl_c INT

78
function print_help() {
Cedric Roux's avatar
Cedric Roux committed
79
  echo_info "
80 81 82 83 84 85
This program installs OpenAirInterface Software
You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14
Options
-h
   This help
-c | --clean
Cedric Roux's avatar
Cedric Roux committed
86
   Erase all files to make a rebuild from start
87
-C | --clean-all
Cedric Roux's avatar
Cedric Roux committed
88
   Erase all files made by previous compilations, installations
89 90
--clean-kernel
   Erase previously installed features in kernel: iptables, drivers, ...
gauthier's avatar
gauthier committed
91
-I | --install-external-packages
92 93 94 95 96
   Installs required packages such as LibXML, asn1.1 compiler, freediameter, ...
   This option will require root password
--install-optional-packages
   Install useful but not mandatory packages such as valgrind
-g | --run-with-gdb
97
   Add debugging symbols to compilation directives. It also disables any compiler optimization. Only for debugging. Do not use in normal operation!
98 99 100
-h | --help
   Print this help
--eNB
Guy De Souza's avatar
Guy De Souza committed
101 102 103 104 105
  Makes the LTE softmodem
--gNB
  Makes the NR softmodem
--nrUE
  Makes the NR UE softmodem
106
--UE
107
   Makes the UE specific parts (ue_ip, usim, nvram) from the given configuration file
Cedric Roux's avatar
Cedric Roux committed
108 109 110 111
--UE-conf-nvram [configuration file]
   Specify conf_nvram_path (default \"$conf_nvram_path\")
--UE-gen-nvram [output path]
   Specify gen_nvram_path (default \"$gen_nvram_path\")
Wang's avatar
Wang committed
112 113
--HWLAT
    Makes test program for haw latency tests
114
-r | --3gpp-release
Cedric Roux's avatar
Cedric Roux committed
115
   default is Rel14,
116
   Rel8 limits the implementation to 3GPP Release 8 version
Cedric Roux's avatar
Cedric Roux committed
117
   Rel10 limits the implementation to 3GPP Release 10 version
118
-w | --hardware
Wang's avatar
Wang committed
119
   EXMIMO, USRP, BLADERF, ETHERNET, LMSSDR, ADRV9371_ZC706, None (Default)
120
   Adds this RF board support (in external packages installation and in compilation)
121 122 123
-t | --transport protocol
   ETHERNET , None
   Adds this trasport protocol support in compilation
124 125 126 127 128 129
--phy_simulators
   Makes the unitary tests Layer 1 simulators
--core_simulators
   Makes the core security features unitary simulators
-s | --check
   runs a set of auto-tests based on simulators and several compilation tests
130 131
--run-group 
   runs only specified test cases specified here. This flag is only valid with -s
132 133 134
-V | --vcd
   Adds a debgging facility to the binary files: GUI with major internal synchronization events
-x | --xforms
135
   Adds a software oscilloscope feature to the produced binaries. 
136
--install-system-files
gauthier's avatar
gauthier committed
137
   Install OpenArInterface required files in Linux system
138
   (will ask root password)
139
--noS1 
140
   Compiles lte-softmodem without S1 interface, using direct link to IP instead
141 142
--verbose-compile
   Shows detailed compilation instructions in makefile
143 144
--cflags_processor
   Manually Add CFLAGS of processor if they are not detected correctly by script. Only add these flags if you know your processor supports them. Example flags: -msse3 -msse4.1 -msse4.2 -mavx2
145 146
--build-doxygen
   Builds doxygen based documentation.
147
--disable-deadline
148 149
   Disables deadline scheduler of Linux kernel (>=3.14.x).
--enable-deadline
laurent's avatar
laurent committed
150
   Enable deadline scheduler of Linux kernel (>=3.14.x). 
Rohit Gupta's avatar
Rohit Gupta committed
151
--disable-cpu-affinity
152
   Disables CPU Affinity between UHD/TX/RX Threads (Valid only when deadline scheduler is disabled). By defaulT, CPU Affinity is enabled when not using deadline scheduler. It is enabled only with >2 CPUs. For eNB, CPU_0-> Device library (UHD), CPU_1->TX Threads, CPU_2...CPU_MAX->Rx Threads. For UE, CPU_0->Device Library(UHD), CPU_1..CPU_MAX -> All the UE threads
153 154
--disable-T-Tracer
   Disables the T tracer.
Rohit Gupta's avatar
Rohit Gupta committed
155 156
--disable-hardware-dependency
   Disable HW dependency during installation
157 158
--ue-autotest-trace
    Enable specific traces for UE autotest framework
Gabriel's avatar
Gabriel committed
159 160 161 162
--ue-trace
    Enable traces for UE debugging
--ue-timing
    Enable traces for timing
Cedric Roux's avatar
Cedric Roux committed
163 164
--disable-log
   Disable all LOG_* macros
165 166
--build-eclipse
   Build eclipse project files. Paths are auto corrected by fixprj.sh
167 168 169 170
--build-telnet
   Build telnet server, specify --telnetsrv on command line to start it (eNB only)
--build-msc
   Build MSC tracing utility, specify --msc on command line to start it (eNB and UE)
171 172
--usrp-recplay
   Build for I/Q record-playback modes
173 174
--ue-nas-use-tun
   Use TUN devices for the UEs instead of ue_ip.ko
Cedric Roux's avatar
Cedric Roux committed
175 176 177
--basic-simulator
   Generates a basic [1 UE + 1 eNB + no channel] simulator.
   See targets/ARCH/tcp_bridge/README.tcp_bridge_oai for documentation.
178
Usage (first build):
179
 NI/ETTUS B201  + COTS UE : ./build_oai -I  --eNB -x --install-system-files -w USRP
180 181
Usage (Regular):
 Eurecom EXMIMO + OAI ENB : ./build_oai --eNB -x 
Cedric Roux's avatar
Cedric Roux committed
182
 NI/ETTUS B201  + OAI ENB : ./build_oai --eNB -x -w USRP"
183 184 185 186
}


function main() {
187

188 189
  until [ -z "$1" ]
  do
190
    case "$1" in
191 192 193 194 195
       -c | --clean)
            CLEAN=1
            shift;;
       -C | --clean-all)
            CLEAN_ALL=1
thomasl's avatar
thomasl committed
196
            shift;;
197 198 199
       --clean-kernel)
            clean_kernel
            echo_info "Erased iptables config and removed modules from kernel"
thomasl's avatar
thomasl committed
200
            shift;;
201
       -I | --install-external-packages)
202
            INSTALL_EXTERNAL=1
203
            echo_info "Will install external packages"
thomasl's avatar
thomasl committed
204
            shift;;
205
       --install-optional-packages)
thomasl's avatar
thomasl committed
206 207 208
            INSTALL_OPTIONAL=1
            echo_info "Will install optional packages"
            shift;;
209
       -g | --run-with-gdb)
thomasl's avatar
thomasl committed
210
            GDB=1
211 212
            CMAKE_BUILD_TYPE="Debug"
            echo_info "Will Compile with gdb symbols and disable compiler optimization"
213
            CMAKE_CMD="$CMAKE_CMD -DCMAKE_BUILD_TYPE=Debug --trace-expand"
thomasl's avatar
thomasl committed
214
            shift;;
215 216 217 218
       --eNB)
            eNB=1
            echo_info "Will compile eNB"
            shift;;
Guy De Souza's avatar
Guy De Souza committed
219 220 221 222 223
       --gNB)
            gNB=1
            NR="True"
            echo_info "Will compile gNB"
            shift;;
224
       -a | --agent)
Guy De Souza's avatar
Guy De Souza committed
225 226
            echo_info "FlexRAN support is always compiled into the eNB"
            shift;;
227 228 229 230
       --UE)
            UE=1
            echo_info "Will compile UE"
            shift;;
Guy De Souza's avatar
Guy De Souza committed
231 232 233 234 235
       --nrUE)
            nrUE=1
            NR="True"
            echo_info "Will compile NR UE"
            shift;;
Xu Bo's avatar
Xu Bo committed
236 237 238 239
       --mu)
            UE_EXPANSION="True"
            echo_info "Will compile with UE_EXPANSION"
            shift;;
Cedric Roux's avatar
Cedric Roux committed
240
       --UE-conf-nvram)
241
            conf_nvram_path=$(readlink -f $2)
Cedric Roux's avatar
Cedric Roux committed
242 243
            shift 2;;
        --UE-gen-nvram)
244 245
            gen_nvram_path=$(readlink -f $2)
            shift 2;;
thomasl's avatar
thomasl committed
246
       -r | --3gpp-release)
gauthier's avatar
gauthier committed
247
            REL=$2
248
            echo_info "Setting release to: $REL"
thomasl's avatar
thomasl committed
249 250 251
            shift 2;;
       -w | --hardware)
            HW="$2" #"${i#*=}"
Wang's avatar
Wang committed
252 253
            # Use OAI_USRP  as the key word USRP is used inside UHD driver
	    if [ "$HW" != "BLADERF" -a  "$HW" != "USRP" -a "$HW" != "LMSSDR" -a  "$HW" != "None" -a  "$HW" != "EXMIMO" -a  "$HW" != "ADRV9371_ZC706"  ] ; then 
254 255 256 257 258
		echo_fatal "Unknown HW type $HW will exit..."		
	    else
		if [ "$HW" == "USRP" ] ; then 
		    HW="OAI_USRP"
		fi 
Wang's avatar
Wang committed
259 260 261
		if [ "$HW" == "ADRV9371_ZC706" ] ; then 
		    HW="OAI_ADRV9371_ZC706"
		fi 
262 263 264
		if [ "$HW" == "BLADERF" ] ; then 
		    HW="OAI_BLADERF"
		fi
265 266 267
		if [ "$HW" == "LMSSDR" ] ; then 
		    HW="OAI_LMSSDR"
		fi 
268 269
		echo_info "Setting hardware to: $HW"
	    fi
thomasl's avatar
thomasl committed
270
            shift 2;;
271 272
	-t | --transport_protocol)
            TP="$2" #"${i#*=}"
273 274 275 276 277
	    if [ "$TP" != "ETHERNET" -a "$TP" != "None" ] ; then 
		echo_fatal "Unknown TP type $TP will exit..."		
	    else
		echo_info "Setting transport protocol to: $TP"		
	    fi
thomasl's avatar
thomasl committed
278
            shift 2;;
279
       --phy_simulators)
thomasl's avatar
thomasl committed
280
            SIMUS_PHY=1
281 282 283 284 285 286
            echo_info "Will compile dlsim, ulsim, ..."
            shift;;
       --core_simulators)
            SIMUS_CORE=1
            echo_info "Will compile security unitary tests"
            shift;;
thomasl's avatar
thomasl committed
287 288
       -s | --check)
            OAI_TEST=1
289
            echo_info "Will run auto-tests"
thomasl's avatar
thomasl committed
290
            shift;;
291 292 293 294 295
       --run-group)
            RUN_GROUP=1
            TEST_CASE_GROUP=$2
            echo_info "executing test cases only in group: $TEST_CASE_GROUP"
            shift 2;;
thomasl's avatar
thomasl committed
296
       -V | --vcd)
297
            echo_info "Setting gtk-wave output"
thomasl's avatar
thomasl committed
298 299
            VCD_TIMING=1
            EXE_ARGUMENTS="$EXE_ARGUMENTS -V"
thomasl's avatar
thomasl committed
300
            shift;;
thomasl's avatar
thomasl committed
301
       -x | --xforms)
302
            XFORMS="True"
thomasl's avatar
thomasl committed
303
            EXE_ARGUMENTS="$EXE_ARGUMENTS -d"
304
            echo_info "Will generate the software oscilloscope features"
thomasl's avatar
thomasl committed
305
            shift;;
306 307 308 309
       --install-system-files)
            INSTALL_SYSTEM_FILES=1
            echo_info "Will copy OpenAirInterface files in Linux directories"
            shift;;
310 311 312 313
       --noS1)
	    NOS1=1
            echo_info "Will compile without S1 interface"
            shift;;
Wang's avatar
Wang committed
314 315 316 317 318 319 320 321
       --HWLAT)
            HWLAT=1
            echo_info "Will compile hw latency test program"
            shift;;
       --HWLAT_TEST)
            HWLAT_TEST=1
            echo_info "Will compile hw latency test program"
            shift;;
322 323 324 325
       --verbose-compile)
	    VERBOSE_COMPILE=1
            echo_info "Will compile with verbose instructions"
            shift;;
326 327
       --cflags_processor)
            CFLAGS_PROCESSOR_USER=$2
328
            echo_info "Setting CPU FLAGS from USER to: $CFLAGS_PROCESSOR_USER"
329
            shift 2;;
330 331 332 333
       --build-doxygen)
	    BUILD_DOXYGEN=1
            echo_info "Will build doxygen support"
            shift;;     
334
       --disable-deadline)
laurent's avatar
laurent committed
335
            FORCE_DEADLINE_SCHEDULER_FLAG_USER="False"
336 337
            echo_info "Disabling the usage of deadline scheduler"
            shift 1;;
338
       --enable-deadline)
laurent's avatar
laurent committed
339
            FORCE_DEADLINE_SCHEDULER_FLAG_USER="True"
340 341
            echo_info "Enabling the usage of deadline scheduler"
            shift 1;;
Rohit Gupta's avatar
Rohit Gupta committed
342 343 344 345
       --disable-cpu-affinity)
            CPU_AFFINITY_FLAG_USER="False"
            echo_info "Disabling CPU Affinity (only valid when not using deadline scheduler)"
            shift 1;;
346 347 348
       --disable-T-Tracer)
            T_TRACER="False"
            echo_info "Disabling the T tracer"
349
            shift 1;;
350 351 352 353
       --disable-hardware-dependency)
            echo_info "Disabling hardware dependency for compiling software"
            DISABLE_HARDWARE_DEPENDENCY="True"
            shift 1;;
354 355 356 357
        --ue-autotest-trace)
            UE_AUTOTEST_TRACE="True"
            echo_info "Enabling autotest specific trace for UE"
            shift 1;;
Gabriel's avatar
Gabriel committed
358 359 360 361 362 363 364 365
        --ue-trace)
            UE_DEBUG_TRACE="True"
            echo_info "Enabling UE trace for debug"
            shift 1;;
        --ue-timing)
            UE_TIMING_TRACE="True"
            echo_info "Enabling UE timing trace"
            shift 1;;
Cedric Roux's avatar
Cedric Roux committed
366 367 368 369
        --disable-log)
            DISABLE_LOG_X="True"
            echo_info "Disabling all LOG_* traces"
            shift 1;;
370 371 372 373
        --uhd-images-dir)
            UHD_IMAGES_DIR=$2
            echo_info "Downloading UHD images in the indicated location"
            shift 2;;
374 375 376 377
       --build-eclipse)
            BUILD_ECLIPSE=1
            CMAKE_CMD="$CMAKE_CMD"' -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=TRUE -G"Eclipse CDT4 - Unix Makefiles"'
            echo_info "Enabling build eclipse project support"
oai's avatar
oai committed
378 379 380 381
            shift 1;;
       --build-telnetsrv)
            BUILD_TELNETSRV=1
            echo_info "Build embedded telnet server"
382 383 384 385
            shift ;;
       --build-msc)
            MSC_GEN=1
            echo_info "Build MSC tracing utility"
oai's avatar
oai committed
386
            shift ;;			
387 388 389 390
        --usrp-recplay)
            USRP_REC_PLAY="True"
            echo_info "Enabling USRP record playback mode"
            shift 1;;
391 392 393 394
        --ue-nas-use-tun)
            UE_NAS_USE_TUN="True"
            echo_info "Enabling UE NAS TUN device usage instead of ue_ip.ko"
            shift 1;;
Cedric Roux's avatar
Cedric Roux committed
395 396 397 398
        --basic-simulator)
            BASIC_SIMULATOR=1
            echo_info "Compiling the basic simulator"
            shift 1;;
thomasl's avatar
thomasl committed
399 400 401
        -h | --help)
            print_help
            exit 1;;
gauthier's avatar
gauthier committed
402
	*)
403 404
	    print_help
            echo_fatal "Unknown option $1"
thomasl's avatar
thomasl committed
405
            break;;
thomasl's avatar
thomasl committed
406
   esac
407
  done
408
  
409 410
  CMAKE_CMD="$CMAKE_CMD .."
  echo_info "CMAKE_CMD=$CMAKE_CMD"
Guy De Souza's avatar
Guy De Souza committed
411 412
  if [ "$eNB" = "1" -o "$gNB" = "1" ] && [ "$UE" = "1" -o "$nrUE" = "1" ]; then
    echo_error "Cannot build UE/nrUE and eNB/gNB on one build_oai execution"
413 414
    echo_error "use 2 build_oai invocations"
    exit
Guy De Souza's avatar
Guy De Souza committed
415 416
  fi

417
  #########################################################
Guy De Souza's avatar
Guy De Souza committed
418
  # check validity of HW and TP parameters for eNB / gNB
419
  #########################################################
420
  # to be discussed
421
  
Guy De Souza's avatar
Guy De Souza committed
422
  if [ "$eNB" = "1" -o "$gNB" = "1" ] ; then
423 424
      if [ "$HW" = "None" -a  "$TP" = "None" ] ; then
	  echo_fatal "Define a local radio head (e.g. -w EXMIMO) or a transport protocol (e.g. -t ETHERNET) to communicate with a remote radio head!"
425
      fi
426 427
      if [ "$HW" = "None" ] ; then 
	  echo_info "No radio head has been selected (HW set to $HW)"	
428
      fi
429 430
      if [ "$TP" = "None" ] ; then
	  echo_info "No transport protocol has been selected (TP set to $TP)"	
431 432 433
      fi
  fi
  
Wang's avatar
Wang committed
434 435 436 437 438 439
  if [ "$HWLAT" = "1" ] ; then
      if [ "$HW" = "None" ] ; then
    echo_info "No radio head has been selected (HW set to $HW)" 
      fi
  fi

knopp's avatar
knopp committed
440
  echo_info "RF HW set to $HW" 
441 442 443 444
  #Now we set flags to enable deadline scheduler settings
  #By default: USRP: disable, 
  #By default: BLADERF: enable,
  #By default: EXMIMO: enable
laurent's avatar
laurent committed
445
  if [ "$FORCE_DEADLINE_SCHEDULER_FLAG_USER" = "" ]; then
446
     if [ "$HW" = "EXMIMO" ] ; then 
447
        DEADLINE_SCHEDULER_FLAG_USER="True"
448
     elif [ "$HW" = "ETHERNET" ] ; then 
449
        DEADLINE_SCHEDULER_FLAG_USER="False"
450
     elif [ "$HW" = "OAI_USRP" ] ; then 
laurent's avatar
laurent committed
451
        DEADLINE_SCHEDULER_FLAG_USER="False"
Wang's avatar
Wang committed
452 453
     elif [ "$HW" = "OAI_ADRV9371_ZC706" ] ; then 
        DEADLINE_SCHEDULER_FLAG_USER="False"
454
     elif [ "$HW" = "OAI_BLADERF" ] ; then 
laurent's avatar
laurent committed
455
        DEADLINE_SCHEDULER_FLAG_USER="False"
456
     elif [ "$HW" = "OAI_LMSSDR" ] ; then 
laurent's avatar
laurent committed
457
        DEADLINE_SCHEDULER_FLAG_USER="False"
458
     elif [ "$HW" = "None" ] ; then 
laurent's avatar
laurent committed
459
        DEADLINE_SCHEDULER_FLAG_USER="False"
460 461 462 463 464
     else 
        echo_error "Unknown HW type $HW. Exiting now..."
        exit 
     fi
  else
laurent's avatar
laurent committed
465
     DEADLINE_SCHEDULER_FLAG_USER=$FORCE_DEADLINE_SCHEDULER_FLAG_USER
466 467
  fi

Rohit Gupta's avatar
Rohit Gupta committed
468
  #Disable CPU Affinity for deadline scheduler
laurent's avatar
laurent committed
469
  if [ "$DEADLINE_SCHEDULER_FLAG_USER" = "True" ] ; then 
Rohit Gupta's avatar
Rohit Gupta committed
470 471
     CPU_AFFINITY_FLAG_USER="False"
  fi
472

laurent's avatar
laurent committed
473
  echo_info "Flags for Deadline scheduler: $DEADLINE_SCHEDULER_FLAG_USER"
Rohit Gupta's avatar
Rohit Gupta committed
474
  echo_info "Flags for CPU Affinity: $CPU_AFFINITY_FLAG_USER"
475

476 477 478 479
  if [ -n "$UHD_IMAGES_DIR" ] && [ -z "$INSTALL_EXTERNAL" ]; then
    echo_error "UHD images download settings will not be applied without -I present"
    exit
  fi
480 481 482
  ############################################
  # setting and printing OAI envs, we should check here
  ############################################
gauthier's avatar
gauthier committed
483

484
  echo_info "2. Setting the OAI PATHS ..."
thomasl's avatar
thomasl committed
485

486
  cecho "OPENAIR_DIR    = $OPENAIR_DIR" $green
thomasl's avatar
thomasl committed
487

488 489 490 491 492 493 494 495 496 497
  # for conf files copy in this bash script
  if [ -d /usr/lib/freeDiameter ]; then
    export FREEDIAMETER_PREFIX=/usr
  else
    if [ -d /usr/local/lib/freeDiameter ]; then
      export FREEDIAMETER_PREFIX=/usr/local
    else
      echo_warning "FreeDiameter prefix not found, install freeDiameter if EPC, HSS"
    fi
  fi
thomasl's avatar
thomasl committed
498

499

500 501 502 503
  if [ "$CLEAN_ALL" = "1" ] ; then
    clean_all_files
    echo_info "Erased all previously producted files"
  fi
504

505 506 507 508 509 510 511
  dbin=$OPENAIR_DIR/targets/bin
  dlog=$OPENAIR_DIR/cmake_targets/log
  mkdir -p $dbin $dlog

  if [ "$INSTALL_EXTERNAL" = "1" ] ; then
    echo_info "Installing packages"
    check_install_oai_software
512 513 514
    if [ "$HW" == "OAI_USRP" ] ; then
      echo_info "installing packages for USRP support"
      check_install_usrp_uhd_driver
515
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
516
        install_usrp_uhd_driver $UHD_IMAGES_DIR
517
      fi
518
    fi 
frobinet's avatar
frobinet committed
519 520 521 522
#    if [ "$HW" == "OAI_ADRV9371_ZC706" ] ; then
#      echo_info "\nInstalling packages for ADRV9371_ZC706 support"
#      check_install_libiio_driver
#    fi 
523
    if [ "$HW" == "OAI_BLADERF" ] ; then
524
      echo_info "installing packages for BLADERF support"
525
      check_install_bladerf_driver
526 527 528
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
        flash_firmware_bladerf
      fi
529
    fi
530 531 532
    echo_info "installing protobuf/protobuf-c for flexran agent support"
    install_protobuf_from_source
    install_protobuf_c_from_source
533 534 535 536 537 538 539
  fi

  if [ "$INSTALL_OPTIONAL" = "1" ] ; then
    echo_info "Installing optional packages"
    check_install_additional_tools
  fi

540 541
  
  
542 543 544
  echo_info "3. building the compilation directives ..."

  DIR=$OPENAIR_DIR/cmake_targets
Guy De Souza's avatar
Guy De Souza committed
545
  if [ "$NOS1" = "1" ] ; then
Guy De Souza's avatar
Guy De Souza committed
546
      build_dir=noS1_ran_build
Guy De Souza's avatar
Guy De Souza committed
547
      if [ "$gNB" = "1" ] ; then
tct-labo4's avatar
tct-labo4 committed
548
         exec=nr-softmodem-nos1
Guy De Souza's avatar
Guy De Souza committed
549 550 551 552 553 554 555
       elif [ "$nrUE" = "1" ] ; then
         exec=nr-uesoftmodem-nos1
       elif [ "$eNB" = "1" ] ; then
         exec=lte-softmodem-nos1
       elif [ "$UE" = "1" ] ; then
         exec=lte-uesoftmodem-nos1
       fi
556
  else
Guy De Souza's avatar
Guy De Souza committed
557
      build_dir=ran_build
Guy De Souza's avatar
Guy De Souza committed
558 559 560 561 562 563 564 565 566
      if [ "$gNB" = "1" ] ; then
         exec=nr-softmodem
       elif [ "$nrUE" = "1" ] ; then
         exec=nr-uesoftmodem
       elif [ "$eNB" = "1" ] ; then
         exec=lte-softmodem
       elif [ "$UE" = "1" ] ; then
         exec=lte-uesoftmodem
       fi
567
  fi
568 569 570
  if [ "$T_TRACER" =  "False" ] ; then
      lte_build_dir=${lte_build_dir}_noLOG
  fi
571 572 573
# configuration module libraries, one currently available, using libconfig 
  config_libconfig_shlib=params_libconfig
  
574
  # first generate the CMakefile in the right directory
Guy De Souza's avatar
Guy De Souza committed
575
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" -o "$HW" = "EXMIMO" ] ; then
576

Guy De Souza's avatar
Guy De Souza committed
577 578 579 580
    # softmodem compilation
    [ "$CLEAN" = "1" ] && rm -rf $DIR/$build_dir/build
    mkdir -p $DIR/$build_dir/build
    cmake_file=$DIR/$build_dir/CMakeLists.txt
581 582
    echo "cmake_minimum_required(VERSION 2.8)"   >  $cmake_file
    if [ "$NOS1" = "1" ] ; then
Guy De Souza's avatar
Guy De Souza committed
583
	cat  $DIR/$build_dir/CMakeLists.template >>  $cmake_file
584
    fi
585
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
586
    echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >>  $cmake_file
587
    echo "set ( XFORMS $XFORMS )"                  >>  $cmake_file
Xu Bo's avatar
Xu Bo committed
588
    echo "set ( UE_EXPANSION $UE_EXPANSION )"      >>  $cmake_file
589
#    echo "set ( PHY_TX_THREAD $UE_EXPANSION )"     >>  $cmake_file
590
    echo "set ( PRE_SCD_THREAD $UE_EXPANSION )"    >>  $cmake_file
591
    echo "set ( RRC_ASN1_VERSION \"${REL}\")"      >>  $cmake_file
ChenWeiTai's avatar
ChenWeiTai committed
592
    echo "set ( NR_RRC_ASN1_VERSION \"${NR_REL}\")"      >>  $cmake_file
593 594
    echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )"     >>  $cmake_file
    echo "set ( RF_BOARD \"${HW}\")"               >>  $cmake_file
595
    echo "set ( TRANSP_PRO \"${TP}\")"             >>  $cmake_file
Guy De Souza's avatar
Guy De Souza committed
596
    echo "set(PACKAGE_NAME \"${exec}\")"       >>  $cmake_file
laurent's avatar
laurent committed
597
    echo "set (DEADLINE_SCHEDULER \"${DEADLINE_SCHEDULER_FLAG_USER}\" )"    >>$cmake_file
Rohit Gupta's avatar
Rohit Gupta committed
598
    echo "set (CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )"      >>$cmake_file
599
    echo "set ( T_TRACER $T_TRACER )"              >>  $cmake_file
600
    echo "set (UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE)"        >>  $cmake_file
Gabriel's avatar
Gabriel committed
601 602
    echo "set (UE_DEBUG_TRACE $UE_DEBUG_TRACE)"        >>  $cmake_file
    echo "set (UE_TIMING_TRACE $UE_TIMING_TRACE)"        >>  $cmake_file
Cedric Roux's avatar
Cedric Roux committed
603
    echo "set (DISABLE_LOG_X $DISABLE_LOG_X)"        >>  $cmake_file
604
    echo "set (USRP_REC_PLAY $USRP_REC_PLAY)"        >>  $cmake_file
Gabriel's avatar
Gabriel committed
605 606 607 608 609
    if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
     echo_info "Compiling UE S1 build : enabling Linux and NETLINK"
     echo "set (LINUX True )"              >>  $cmake_file
     echo "set (PDCP_USE_NETLINK True )"   >>  $cmake_file
    fi
610
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
Guy De Souza's avatar
Guy De Souza committed
611
    cd  $DIR/$build_dir/build
612
    eval $CMAKE_CMD
613 614
  fi

Guy De Souza's avatar
Guy De Souza committed
615 616
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" ] ; then
    echo_info "Compiling $exec"
617
    compilations \
Guy De Souza's avatar
Guy De Souza committed
618 619
	  $build_dir $exec \
	  $exec $dbin/$exec.$REL
620

621 622
# mandatory shared lib
    compilations \
Guy De Souza's avatar
Guy De Souza committed
623
	  $build_dir $config_libconfig_shlib \
624
	  lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
625
    compilations \
Guy De Souza's avatar
Guy De Souza committed
626
          $build_dir coding \
627
          libcoding.so $dbin/libcoding.so
628
	  
629 630
    if [ "$NOS1" = "1" ] ; then
	compilations \
Guy De Souza's avatar
Guy De Souza committed
631
	    $build_dir nasmesh \
632 633
	    CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko
	compilations \
Guy De Souza's avatar
Guy De Souza committed
634
	    $build_dir rb_tool \
635 636 637
	    rb_tool $dbin/rb_tool
	cp $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 $dbin
    fi
638
  fi
thomasl's avatar
thomasl committed
639

Florian Kaltenberger's avatar
Florian Kaltenberger committed
640
  if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
641 642 643
    # ue_ip driver compilation
    echo_info "Compiling UE specific part"
    compilations \
Guy De Souza's avatar
Guy De Souza committed
644
      $build_dir ue_ip \
gauthier's avatar
gauthier committed
645
      CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
646

gauthier's avatar
gauthier committed
647 648
#    mkdir -p $DIR/at_commands/build
#    cd $DIR/at_commands/build
649
#    eval $CMAKE_CMD
gauthier's avatar
gauthier committed
650 651 652
#    compilations \
#      at_commands at_nas_ue \
#      at_nas_ue $dbin/at_nas_ue
653
    
gauthier's avatar
gauthier committed
654
    [ "$CLEAN" = "1" ] && rm -rf $DIR/nas_sim_tools/build
655 656
    mkdir -p $DIR/nas_sim_tools/build
    cd $DIR/nas_sim_tools/build
gauthier's avatar
gauthier committed
657
    
658
    eval $CMAKE_CMD
thomasl's avatar
thomasl committed
659
    compilations \
660 661
      nas_sim_tools usim \
      usim $dbin/usim
thomasl's avatar
thomasl committed
662
    compilations \
663 664
      nas_sim_tools nvram \
      nvram $dbin/nvram
thomasl's avatar
thomasl committed
665
    compilations \
666 667
        nas_sim_tools conf2uedata \
        conf2uedata $dbin/conf2uedata
668 669

    # generate USIM data
670 671
    if [ -f $dbin/conf2uedata ]; then
      install_nas_tools $conf_nvram_path $gen_nvram_path
Guy De Souza's avatar
Guy De Souza committed
672 673 674 675
      echo_info "Copying UE specific part to $DIR/$build_dir/build"
      cp -Rvf $dbin/.ue_emm.nvram0 $DIR/$build_dir/build
      cp -Rvf $dbin/.ue.nvram0 $DIR/$build_dir/build
      cp -Rvf $dbin/.usim.nvram0 $DIR/$build_dir/build
676 677 678
    else
      echo_warning "not generated UE NAS files: binaries not found"
    fi
679
  fi
thomasl's avatar
thomasl committed
680

681
  if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then
682
    cd $OPENAIR_DIR/cmake_targets/phy_simulators
683 684 685 686
    [ "$CLEAN" = "1" ] && rm -rf build
    mkdir -p build
    cd build
    rm -f *sim
687
    eval $CMAKE_CMD
688
  fi
689

690 691 692
  if [ "$SIMUS_PHY" = "1" ] ; then
    # lte unitary simulators compilation
    echo_info "Compiling unitary tests simulators"
Cedric Roux's avatar
Cedric Roux committed
693 694
    # TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim
    #simlist="dlsim_tm4 dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
695
    simlist="dlsim ulsim polartest ldpctest nr_pbchsim"
696 697
    for f in $simlist ; do
      compilations \
698
      phy_simulators $f \
699 700
	  $f $dbin/$f.$REL
    done
Cedric Roux's avatar
Cedric Roux committed
701
    compilations \
702
          phy_simulators coding \
Cedric Roux's avatar
Cedric Roux committed
703
          libcoding.so $dbin/libcoding.so
704
  fi
thomasl's avatar
thomasl committed
705

gauthier's avatar
gauthier committed
706
  # Core simulators
707 708 709 710 711 712 713
  #############
  if [ "$SIMUS_CORE" = "1" ] ; then
    # lte unitary simulators compilation
    echo_info "Compiling unitary tests simulators"
    simlist="secu_knas_encrypt_eia1 secu_kenb aes128_ctr_encrypt aes128_ctr_decrypt secu_knas_encrypt_eea2 secu_knas secu_knas_encrypt_eea1 kdf aes128_cmac_encrypt secu_knas_encrypt_eia2"
    for f in $simlist ; do
      compilations \
714
	  phy_simulators test_$f \
715 716 717
	  test_$f $dbin/test_$f.$REL
    done
  fi
thomasl's avatar
thomasl committed
718

719 720
  # EXMIMO drivers & firmware loader
  ###############
721
  if [ "$HW" = "EXMIMO" ] ; then
gauthier's avatar
gauthier committed
722
    
723 724
    echo_info "Compiling Express MIMO 2 board drivers"
    compilations \
Guy De Souza's avatar
Guy De Souza committed
725
        $build_dir openair_rf \
thomasl's avatar
thomasl committed
726
        CMakeFiles/openair_rf/openair_rf.ko $dbin/openair_rf.ko
727
    compilations \
Guy De Souza's avatar
Guy De Souza committed
728
	  $build_dir updatefw \
gauthier's avatar
gauthier committed
729
	  updatefw $dbin/updatefw
730
    echo_info "Compiling oarf tools. The logfile for compilation is here: $dlog/oarf.txt"
Guy De Souza's avatar
Guy De Souza committed
731 732
    make -C $OPENAIR_DIR/cmake_targets/$build_dir/build oarf > $dlog/oarf.txt 2>&1
    cp $OPENAIR_DIR/cmake_targets/$build_dir/build/*.oct $dbin
733 734 735 736 737
    if [ -s $dbin/oarf_config_exmimo.oct ] ; then
	echo_success "oarf tools compiled"
    else
	echo_error "oarf tools compilation failed"
    fi
738
    cp $OPENAIR_DIR/cmake_targets/tools/init_exmimo2 $dbin
739
  fi
thomasl's avatar
thomasl committed
740

741 742


oai's avatar
oai committed
743 744 745
  # Telnet server compilation
  #####################
  if [ "$BUILD_TELNETSRV" = "1" ] ; then
Guy De Souza's avatar
Guy De Souza committed
746
              build_dir=$build_dir
747 748 749
              compilations \
                  $build_dir telnetsrv \
                  libtelnetsrv.so $dbin/libtelnetsrv.so
oai's avatar
oai committed
750

751 752 753 754 755 756 757 758 759
  fi 
  # Telnet server compilation
  #####################
  if [ "$MSC_GEN" = "1" ] ; then
              build_dir=$lte_build_dir
              compilations \
                  $build_dir msc \
                  libmsc.so $dbin/libmsc.so

oai's avatar
oai committed
760
  fi  
Wang's avatar
Wang committed
761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816
  # HWLAT compilation
  #####################
  if [ "$HWLAT" = "1" ] ; then

     hwlat_exec=lte-hwlat
     hwlat_build_dir=lte-hwlat
     
     echo_info "Compiling $hwlat_exec ..."
    
     [ "$CLEAN" = "1" ] && rm -rf $DIR/lte-hwlat/build 
     mkdir -p $DIR/$hwlat_build_dir/build
     cmake_file=$DIR/$hwlat_build_dir/CMakeLists.txt
     echo "cmake_minimum_required(VERSION 2.8)"   >   $cmake_file
     echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
     echo "set ( RF_BOARD \"${HW}\")"               >>  $cmake_file
     echo 'set ( PACKAGE_NAME "\"lte-hwlat\"")'        >>  $cmake_file
     echo "set ( DEADLINE_SCHEDULER \"${DEADLINE_SCHEDULER_FLAG_USER}\" )"    >>$cmake_file
     echo "set ( CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )"    >>$cmake_file
     echo "set ( HWLAT \"${HWLAT}\" )"    >>$cmake_file
     echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file    
     cd $DIR/$hwlat_build_dir/build
     cmake ..
     compilations \
   lte-hwlat lte-hwlat \
   lte-hwlat $dbin/lte-hwlat

  fi  
 
  # HWLAT_TEST compilation
  #####################
  if [ "$HWLAT_TEST" = "1" ] ; then

     hwlat_test_exec=lte-hwlat-test
     hwlat_test_build_dir=lte-hwlat-test
     
     echo_info "Compiling $hwlat_test_exec ..."
    
     [ "$CLEAN" = "1" ] && rm -rf $DIR/lte-hwlat-test/build 
     mkdir -p $DIR/$hwlat_test_build_dir/build
     cmake_file=$DIR/$hwlat_test_build_dir/CMakeLists.txt
     echo "cmake_minimum_required(VERSION 2.8)"   >   $cmake_file
     echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
     echo "set ( RF_BOARD \"${HW}\")"               >>  $cmake_file
     echo 'set ( PACKAGE_NAME "\"lte-hwlat-test\"")'        >>  $cmake_file
     echo "set ( DEADLINE_SCHEDULER \"${DEADLINE_SCHEDULER_FLAG_USER}\" )"    >>$cmake_file
     echo "set ( CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )"    >>$cmake_file
     echo "set ( HWLAT \"${HWLAT}\" )"    >>$cmake_file
     echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file    
     cd $DIR/$hwlat_test_build_dir/build
     cmake ..
     compilations \
   lte-hwlat-test lte-hwlat-test \
   lte-hwlat-test $dbin/lte-hwlat-test

  fi  
 
817 818
  # build RF device and transport protocol libraries
  #####################################
819
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" -o "$HWLAT" = "1" ] ; then
820

Guy De Souza's avatar
Guy De Souza committed
821
      build_dir=$build_dir
822

823
      # build RF device libraries
824
      if [ "$HW" != "None" ] ; then
825
	  rm -f liboai_device.so
826
	  rm -f $dbin/liboai_device.so
827

828
	  # link liboai_device.so with the selected RF device library
829
	  if [ "$HW" == "EXMIMO" ] ; then
830 831 832
	      compilations \
		  $build_dir oai_exmimodevif \
		  liboai_exmimodevif.so $dbin/liboai_exmimodevif.so.$REL
833 834 835

	      ln -sf liboai_exmimodevif.so liboai_device.so
	      ln -sf $dbin/liboai_exmimodevif.so.$REL $dbin/liboai_device.so
836
	      echo_info "liboai_device.so is linked to EXMIMO device library"       
Wang's avatar
Wang committed
837 838
	  elif [ "$HW" == "OAI_ADRV9371_ZC706" ] ; then

frobinet's avatar
frobinet committed
839 840 841 842 843 844 845 846 847 848 849
			SYRIQ_KVER=$(uname -r)
			SYRIQ_KMAJ=$(echo $SYRIQ_KVER | sed -e 's/^\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*.*/\1/')
			SYRIQ_KMIN=$(echo $SYRIQ_KVER | sed -e 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*.*/\1/')
			#echo $SYRIQ_KMAJ$SYRIQ_KMIN
			if [ "$SYRIQ_KMAJ$SYRIQ_KMIN" == "319" ] || [ "$SYRIQ_KMAJ$SYRIQ_KMIN" == "410" ] || [ "$SYRIQ_KMAJ$SYRIQ_KMIN" == "415" ] ; then
#				echo "Kernel $SYRIQ_KMAJ.$SYRIQ_KMIN detected"
				ln -sf /usr/local/lib/syriq/libadrv9371zc706.so liboai_device.so
			else
				echo_error "== FAILED == Unexpected Kernel $SYRIQ_KMAJ.$SYRIQ_KMIN"
			fi
			echo_info "liboai_device.so is linked to ADRV9371_ZC706 device library for Kernel $SYRIQ_KMAJ.$SYRIQ_KMIN"
Wang's avatar
Wang committed
850

851
	  elif [ "$HW" == "OAI_USRP" ] ; then
852 853 854
              compilations \
                  $build_dir oai_usrpdevif \
                  liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
855

856 857
	      ln -sf liboai_usrpdevif.so liboai_device.so
	      ln -sf $dbin/liboai_usrpdevif.so.$REL $dbin/liboai_device.so
858 859
	      echo_info "liboai_device.so is linked to USRP device library"        
	  elif [ "$HW" == "OAI_BLADERF" ] ; then
860 861 862 863 864 865
	      if [ -f "/usr/include/libbladeRF.h" ] ; then
		  compilations \
		      $build_dir oai_bladerfdevif \
		      liboai_bladerfdevif.so $dbin/liboai_bladerfdevif.so.$REL
	      fi

866 867
	      ln -sf liboai_bladerfdevif.so liboai_device.so
	      ln -sf $dbin/liboai_bladerfdevif.so.$REL $dbin/liboai_device.so
868
	      echo_info "liboai_device.so is linked to BLADERF device library"	 
869 870 871 872 873 874 875
	  elif [ "$HW" == "OAI_LMSSDR" ] ; then
#	      if [ -f "/usr/include/libbladeRF.h" ] ; then
		  compilations \
		      $build_dir oai_lmssdrdevif \
		      liboai_lmssdrdevif.so $dbin/liboai_lmssdrdevif.so.$REL
#	      fi

876 877
	      ln -sf liboai_lmssdrdevif.so liboai_device.so
	      ln -sf $dbin/liboai_lmssdrdevif.so.$REL $dbin/liboai_device.so
878
	      echo_info "liboai_device.so is linked to LMSSDR device library"	 
879 880 881 882 883 884
	  else 
	      echo_info "liboai_device.so is not linked to any device library"	    
	  fi
      fi
      
      # build trasport protocol libraries (currently only ETHERNET is available)
885
      if [ "$TP" != "None" ] ; then
886
	  rm -f liboai_transpro.so
887 888
	  rm -f $dbin/liboai_transpro.so

889
	  if [ "$TP" == "ETHERNET" ] ; then
890 891 892
	      compilations \
		  $build_dir oai_eth_transpro \
		  liboai_eth_transpro.so $dbin/liboai_eth_transpro.so.$REL
893 894
	      ln -sf liboai_eth_transpro.so liboai_transpro.so
	      ln -sf $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
895 896 897 898 899
	      echo_info "liboai_transpro.so is linked with ETHERNET library"	 
	  fi      
      fi
fi

900

901 902 903 904 905 906 907 908 909 910 911
  # Doxygen Support
  #####################
  if [ "$BUILD_DOXYGEN" = "1" ] ;then
    doxygen_log=$OPENAIR_DIR/cmake_targets/log/doxygen.log
    echo_info "Building doxygen based documentation. The documentation file is located here: $OPENAIR_DIR/targets/DOCS/html/index.html"
    echo_info "Doxygen Generation log is located here: $doxygen_log"
    echo_info "Generating doxygen files....please wait"
    (
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/doxygen/build
    mkdir -p $OPENAIR_DIR/cmake_targets/doxygen/build
    cd $OPENAIR_DIR/cmake_targets/doxygen/build
912
    eval $CMAKE_CMD
913 914
    make doc
    ) >& $doxygen_log
915 916
  fi