build_oai 35.1 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
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

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="False"
44
XFORMS="True"
45
PRINT_STATS="False"
thomasl's avatar
thomasl committed
46
VCD_TIMING="False"
laurent's avatar
laurent committed
47 48
DEADLINE_SCHEDULER_FLAG_USER="False"
FORCE_DEADLINE_SCHEDULER_FLAG_USER=""
49
CPU_AFFINITY_FLAG_USER="False" #Only valid when lowlatecy flag is set to False
Cedric Roux's avatar
Cedric Roux committed
50
REL="Rel14"
51
NR_REL="NR_Rel15"
52
HW="None"
53
TP="None"
Florian Kaltenberger's avatar
Florian Kaltenberger committed
54
NOS1=0
root's avatar
root committed
55
HW_LATENCY=0
Lionel Gauthier's avatar
Lionel Gauthier committed
56
EPC=0
57
VERBOSE_COMPILE=0
58
CFLAGS_PROCESSOR_USER=""
59 60
RUN_GROUP=0
TEST_CASE_GROUP=""
61
BUILD_DOXYGEN=0
62
T_TRACER="False"
Rohit Gupta's avatar
Rohit Gupta committed
63
DISABLE_HARDWARE_DEPENDENCY="False"
64
CMAKE_BUILD_TYPE=""
65
CMAKE_CMD="$CMAKE"
66
UE_AUTOTEST_TRACE="False"
gabrielC's avatar
gabrielC committed
67 68
UE_DEBUG_TRACE="False"
UE_TIMING_TRACE="False"
Cedric Roux's avatar
Cedric Roux committed
69
DISABLE_LOG_X="False"
70
USRP_REC_PLAY="False"
71
BUILD_ECLIPSE=0
Guy De Souza's avatar
Guy De Souza committed
72
NR="False"
73 74
trap handle_ctrl_c INT

75
function print_help() {
Cedric Roux's avatar
Cedric Roux committed
76
  echo_info "
77 78 79 80 81 82
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
83
   Erase all files to make a rebuild from start
84
-C | --clean-all
Cedric Roux's avatar
Cedric Roux committed
85
   Erase all files made by previous compilations, installations
86 87
--clean-kernel
   Erase previously installed features in kernel: iptables, drivers, ...
Lionel Gauthier's avatar
Lionel Gauthier committed
88
-I | --install-external-packages
89 90 91 92 93
   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
94
   Add debugging symbols to compilation directives. It also disables any compiler optimization. Only for debugging. Do not use in normal operation!
95 96 97
-h | --help
   Print this help
--eNB
Guy De Souza's avatar
Guy De Souza committed
98 99 100 101 102
  Makes the LTE softmodem
--gNB
  Makes the NR softmodem
--nrUE
  Makes the NR UE softmodem
103
--UE
104
   Makes the UE specific parts (ue_ip, usim, nvram) from the given configuration file
Cedric Roux's avatar
Cedric Roux committed
105 106 107 108
--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\")
root's avatar
root committed
109 110
--HWLAT
    Makes test program for haw latency tests
111
-r | --3gpp-release
Cedric Roux's avatar
Cedric Roux committed
112
   default is Rel14,
113
   Rel8 limits the implementation to 3GPP Release 8 version
Cedric Roux's avatar
Cedric Roux committed
114
   Rel10 limits the implementation to 3GPP Release 10 version
115
-w | --hardware
root's avatar
root committed
116
   EXMIMO, USRP, BLADERF, ETHERNET, LMSSDR, ADRV9371_ZC706, None (Default)
117
   Adds this RF board support (in external packages installation and in compilation)
118 119 120
-t | --transport protocol
   ETHERNET , None
   Adds this trasport protocol support in compilation
121
--oaisim
Cedric Roux's avatar
Cedric Roux committed
122
   Makes the oaisim simulator. Hardware will be defaulted to \"None\".
123 124 125 126 127 128
--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
129 130
--run-group 
   runs only specified test cases specified here. This flag is only valid with -s
131 132 133
-V | --vcd
   Adds a debgging facility to the binary files: GUI with major internal synchronization events
-x | --xforms
134
   Adds a software oscilloscope feature to the produced binaries. If oaisim, then enable PRINT_STATS.
135
--install-system-files
Lionel Gauthier's avatar
Lionel Gauthier committed
136
   Install OpenArInterface required files in Linux system
137
   (will ask root password)
138 139
--noS1 
   Compiles oaisim or lte-softmodem without S1 interface, using direct link to IP instead
140 141
--verbose-compile
   Shows detailed compilation instructions in makefile
142 143
--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
144 145
--build-doxygen
   Builds doxygen based documentation.
146
--disable-deadline
147 148
   Disables deadline scheduler of Linux kernel (>=3.14.x).
--enable-deadline
laurent's avatar
laurent committed
149
   Enable deadline scheduler of Linux kernel (>=3.14.x). 
150
--disable-cpu-affinity
151
   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
152 153
--T-tracer
   Enables the T tracer.
Rohit Gupta's avatar
Rohit Gupta committed
154 155
--disable-hardware-dependency
   Disable HW dependency during installation
156 157
--ue-autotest-trace
    Enable specific traces for UE autotest framework
gabrielC's avatar
gabrielC committed
158 159 160 161
--ue-trace
    Enable traces for UE debugging
--ue-timing
    Enable traces for timing
Cedric Roux's avatar
Cedric Roux committed
162 163
--disable-log
   Disable all LOG_* macros
164 165
--build-eclipse
   Build eclipse project files. Paths are auto corrected by fixprj.sh
166 167
--usrp-recplay
   Build for I/Q record-playback modes
168
Usage (first build):
169 170 171
 oaisim (eNB + UE): ./build_oai -I  --oaisim -x --install-system-files
 Eurecom EXMIMO + COTS UE : ./build_oai -I  --eNB -x --install-system-files
 NI/ETTUS B201  + COTS UE : ./build_oai -I  --eNB -x --install-system-files -w USRP
172 173 174
Usage (Regular):
 oaisim : ./build_oai --oaisim -x 
 Eurecom EXMIMO + OAI ENB : ./build_oai --eNB -x 
Cedric Roux's avatar
Cedric Roux committed
175
 NI/ETTUS B201  + OAI ENB : ./build_oai --eNB -x -w USRP"
176 177 178 179
}


function main() {
180

181 182
  until [ -z "$1" ]
  do
183
    case "$1" in
184 185 186 187 188
       -c | --clean)
            CLEAN=1
            shift;;
       -C | --clean-all)
            CLEAN_ALL=1
thomasl's avatar
thomasl committed
189
            shift;;
190 191 192
       --clean-kernel)
            clean_kernel
            echo_info "Erased iptables config and removed modules from kernel"
thomasl's avatar
thomasl committed
193
            shift;;
194
       -I | --install-external-packages)
195
            INSTALL_EXTERNAL=1
196
            echo_info "Will install external packages"
thomasl's avatar
thomasl committed
197
            shift;;
198
       --install-optional-packages)
thomasl's avatar
thomasl committed
199 200 201
            INSTALL_OPTIONAL=1
            echo_info "Will install optional packages"
            shift;;
202
       -g | --run-with-gdb)
thomasl's avatar
thomasl committed
203
            GDB=1
204 205
            CMAKE_BUILD_TYPE="Debug"
            echo_info "Will Compile with gdb symbols and disable compiler optimization"
206
            CMAKE_CMD="$CMAKE_CMD -DCMAKE_BUILD_TYPE=Debug --trace-expand"
thomasl's avatar
thomasl committed
207
            shift;;
208 209 210 211
       --eNB)
            eNB=1
            echo_info "Will compile eNB"
            shift;;
Guy De Souza's avatar
Guy De Souza committed
212 213 214 215 216
       --gNB)
            gNB=1
            NR="True"
            echo_info "Will compile gNB"
            shift;;
217
       -a | --agent)
Guy De Souza's avatar
Guy De Souza committed
218 219
            echo_info "FlexRAN support is always compiled into the eNB"
            shift;;
220 221 222 223
       --UE)
            UE=1
            echo_info "Will compile UE"
            shift;;
Guy De Souza's avatar
Guy De Souza committed
224 225 226 227 228
       --nrUE)
            nrUE=1
            NR="True"
            echo_info "Will compile NR UE"
            shift;;
Cedric Roux's avatar
Cedric Roux committed
229 230 231 232
       --UE-conf-nvram)
            conf_nvram_path=$(readlink -f "$1")
            shift 2;;
        --UE-gen-nvram)
233 234
            gen_nvram_path=$(readlink -f $2)
            shift 2;;
thomasl's avatar
thomasl committed
235
       -r | --3gpp-release)
Lionel Gauthier's avatar
Lionel Gauthier committed
236
            REL=$2
237
            echo_info "Setting release to: $REL"
thomasl's avatar
thomasl committed
238 239 240
            shift 2;;
       -w | --hardware)
            HW="$2" #"${i#*=}"
root's avatar
root committed
241 242
            # 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 
243 244 245 246 247
		echo_fatal "Unknown HW type $HW will exit..."		
	    else
		if [ "$HW" == "USRP" ] ; then 
		    HW="OAI_USRP"
		fi 
root's avatar
root committed
248 249 250
		if [ "$HW" == "ADRV9371_ZC706" ] ; then 
		    HW="OAI_ADRV9371_ZC706"
		fi 
251 252 253
		if [ "$HW" == "BLADERF" ] ; then 
		    HW="OAI_BLADERF"
		fi
254 255 256
		if [ "$HW" == "LMSSDR" ] ; then 
		    HW="OAI_LMSSDR"
		fi 
257 258
		echo_info "Setting hardware to: $HW"
	    fi
thomasl's avatar
thomasl committed
259
            shift 2;;
260 261
	-t | --transport_protocol)
            TP="$2" #"${i#*=}"
262 263 264 265 266
	    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
267
            shift 2;;
268
	--oaisim)
269 270 271 272
            oaisim=1
            echo_info "Will compile oaisim and drivers nasmesh, ..."
            shift;;
       --phy_simulators)
thomasl's avatar
thomasl committed
273
            SIMUS_PHY=1
274 275 276 277 278 279
            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
280 281
       -s | --check)
            OAI_TEST=1
282
            echo_info "Will run auto-tests"
thomasl's avatar
thomasl committed
283
            shift;;
284 285 286 287 288
       --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
289
       -V | --vcd)
290
            echo_info "Setting gtk-wave output"
thomasl's avatar
thomasl committed
291 292
            VCD_TIMING=1
            EXE_ARGUMENTS="$EXE_ARGUMENTS -V"
thomasl's avatar
thomasl committed
293
            shift;;
thomasl's avatar
thomasl committed
294
       -x | --xforms)
295
            XFORMS="True"
thomasl's avatar
thomasl committed
296
            EXE_ARGUMENTS="$EXE_ARGUMENTS -d"
297
            echo_info "Will generate the software oscilloscope features"
thomasl's avatar
thomasl committed
298
            shift;;
299 300 301 302
       --install-system-files)
            INSTALL_SYSTEM_FILES=1
            echo_info "Will copy OpenAirInterface files in Linux directories"
            shift;;
303 304 305 306
       --noS1)
	    NOS1=1
            echo_info "Will compile without S1 interface"
            shift;;
root's avatar
root committed
307 308 309 310 311 312 313 314
       --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;;
315 316 317 318
       --verbose-compile)
	    VERBOSE_COMPILE=1
            echo_info "Will compile with verbose instructions"
            shift;;
319 320
       --cflags_processor)
            CFLAGS_PROCESSOR_USER=$2
321
            echo_info "Setting CPU FLAGS from USER to: $CFLAGS_PROCESSOR_USER"
322
            shift 2;;
323 324 325 326
       --build-doxygen)
	    BUILD_DOXYGEN=1
            echo_info "Will build doxygen support"
            shift;;     
327
       --disable-deadline)
laurent's avatar
laurent committed
328
            FORCE_DEADLINE_SCHEDULER_FLAG_USER="False"
329 330
            echo_info "Disabling the usage of deadline scheduler"
            shift 1;;
331
       --enable-deadline)
laurent's avatar
laurent committed
332
            FORCE_DEADLINE_SCHEDULER_FLAG_USER="True"
333 334
            echo_info "Enabling the usage of deadline scheduler"
            shift 1;;
335 336 337 338
       --disable-cpu-affinity)
            CPU_AFFINITY_FLAG_USER="False"
            echo_info "Disabling CPU Affinity (only valid when not using deadline scheduler)"
            shift 1;;
339 340 341 342
       --T-tracer)
            T_TRACER="True"
            echo_info "Enabling the T tracer"
            shift 1;;
343 344 345 346
       --disable-hardware-dependency)
            echo_info "Disabling hardware dependency for compiling software"
            DISABLE_HARDWARE_DEPENDENCY="True"
            shift 1;;
347 348 349 350
        --ue-autotest-trace)
            UE_AUTOTEST_TRACE="True"
            echo_info "Enabling autotest specific trace for UE"
            shift 1;;
gabrielC's avatar
gabrielC committed
351 352 353 354 355 356 357 358
        --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
359 360 361 362
        --disable-log)
            DISABLE_LOG_X="True"
            echo_info "Disabling all LOG_* traces"
            shift 1;;
363 364 365 366
        --uhd-images-dir)
            UHD_IMAGES_DIR=$2
            echo_info "Downloading UHD images in the indicated location"
            shift 2;;
367 368 369 370
       --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
371 372 373 374 375
            shift 1;;
       --build-telnetsrv)
            BUILD_TELNETSRV=1
            echo_info "Build embedded telnet server"
            shift ;;			
376 377 378 379
        --usrp-recplay)
            USRP_REC_PLAY="True"
            echo_info "Enabling USRP record playback mode"
            shift 1;;
thomasl's avatar
thomasl committed
380 381 382
        -h | --help)
            print_help
            exit 1;;
Lionel Gauthier's avatar
Lionel Gauthier committed
383
	*)
384 385
	    print_help
            echo_fatal "Unknown option $1"
thomasl's avatar
thomasl committed
386
            break;;
thomasl's avatar
thomasl committed
387
   esac
388
  done
389
  
390 391
  CMAKE_CMD="$CMAKE_CMD .."
  echo_info "CMAKE_CMD=$CMAKE_CMD"
Guy De Souza's avatar
Guy De Souza committed
392 393
  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"
394 395
    echo_error "use 2 build_oai invocations"
    exit
Guy De Souza's avatar
Guy De Souza committed
396 397
  fi

398
  #########################################################
Guy De Souza's avatar
Guy De Souza committed
399
  # check validity of HW and TP parameters for eNB / gNB
400
  #########################################################
Aikaterini's avatar
Aikaterini committed
401
  # to be discussed
402
  
Guy De Souza's avatar
Guy De Souza committed
403
  if [ "$eNB" = "1" -o "$gNB" = "1" ] ; then
404 405
      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!"
406
      fi
407 408
      if [ "$HW" = "None" ] ; then 
	  echo_info "No radio head has been selected (HW set to $HW)"	
409
      fi
410 411
      if [ "$TP" = "None" ] ; then
	  echo_info "No transport protocol has been selected (TP set to $TP)"	
412 413 414
      fi
  fi
  
root's avatar
root committed
415 416 417 418 419 420
  if [ "$HWLAT" = "1" ] ; then
      if [ "$HW" = "None" ] ; then
    echo_info "No radio head has been selected (HW set to $HW)" 
      fi
  fi

421
  echo_info "RF HW set to $HW" 
422 423 424 425
  #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
426
  if [ "$FORCE_DEADLINE_SCHEDULER_FLAG_USER" = "" ]; then
427
     if [ "$HW" = "EXMIMO" ] ; then 
428
        DEADLINE_SCHEDULER_FLAG_USER="True"
429
     elif [ "$HW" = "ETHERNET" ] ; then 
430
        DEADLINE_SCHEDULER_FLAG_USER="False"
431
     elif [ "$HW" = "OAI_USRP" ] ; then 
laurent's avatar
laurent committed
432
        DEADLINE_SCHEDULER_FLAG_USER="False"
root's avatar
root committed
433 434
     elif [ "$HW" = "OAI_ADRV9371_ZC706" ] ; then 
        DEADLINE_SCHEDULER_FLAG_USER="False"
435
     elif [ "$HW" = "OAI_BLADERF" ] ; then 
laurent's avatar
laurent committed
436
        DEADLINE_SCHEDULER_FLAG_USER="False"
437
     elif [ "$HW" = "OAI_LMSSDR" ] ; then 
laurent's avatar
laurent committed
438
        DEADLINE_SCHEDULER_FLAG_USER="False"
439
     elif [ "$HW" = "None" ] ; then 
laurent's avatar
laurent committed
440
        DEADLINE_SCHEDULER_FLAG_USER="False"
441 442 443 444 445
     else 
        echo_error "Unknown HW type $HW. Exiting now..."
        exit 
     fi
  else
laurent's avatar
laurent committed
446
     DEADLINE_SCHEDULER_FLAG_USER=$FORCE_DEADLINE_SCHEDULER_FLAG_USER
447 448
  fi

449
  #Disable CPU Affinity for deadline scheduler
laurent's avatar
laurent committed
450
  if [ "$DEADLINE_SCHEDULER_FLAG_USER" = "True" ] ; then 
451 452
     CPU_AFFINITY_FLAG_USER="False"
  fi
453

laurent's avatar
laurent committed
454
  echo_info "Flags for Deadline scheduler: $DEADLINE_SCHEDULER_FLAG_USER"
455
  echo_info "Flags for CPU Affinity: $CPU_AFFINITY_FLAG_USER"
Aikaterini's avatar
Aikaterini committed
456

457 458 459 460
  if [ -n "$UHD_IMAGES_DIR" ] && [ -z "$INSTALL_EXTERNAL" ]; then
    echo_error "UHD images download settings will not be applied without -I present"
    exit
  fi
461 462 463
  ############################################
  # setting and printing OAI envs, we should check here
  ############################################
Lionel Gauthier's avatar
Lionel Gauthier committed
464

465
  echo_info "2. Setting the OAI PATHS ..."
thomasl's avatar
thomasl committed
466

467
  cecho "OPENAIR_DIR    = $OPENAIR_DIR" $green
thomasl's avatar
thomasl committed
468

469 470 471 472 473 474 475 476 477 478
  # 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
479

480

481 482 483 484
  if [ "$CLEAN_ALL" = "1" ] ; then
    clean_all_files
    echo_info "Erased all previously producted files"
  fi
485

486 487 488 489 490 491 492
  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
493 494 495
    if [ "$HW" == "OAI_USRP" ] ; then
      echo_info "installing packages for USRP support"
      check_install_usrp_uhd_driver
496
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
497
        install_usrp_uhd_driver $UHD_IMAGES_DIR
498
      fi
499
    fi 
root's avatar
root committed
500 501 502 503
    if [ "$HW" == "OAI_ADRV9371_ZC706" ] ; then
      echo_info "\nInstalling packages for ADRV9371_ZC706 support"
      check_install_libiio_driver
    fi 
504
    if [ "$HW" == "OAI_BLADERF" ] ; then
505
      echo_info "installing packages for BLADERF support"
506
      check_install_bladerf_driver
507 508 509
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
        flash_firmware_bladerf
      fi
510
    fi
511 512 513
    echo_info "installing protobuf/protobuf-c for flexran agent support"
    install_protobuf_from_source
    install_protobuf_c_from_source
514 515 516 517 518 519 520
  fi

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

521
  if [ "$oaisim" = "1" ] ; then
522
      #to be discussed
523
      # there is no RF device  transport protocol 
524
      HW="None" 
525
      TP="ETHERNET"
526
      
527 528 529 530 531 532
      if [ "$XFORMS" == "True" ] ; then 
	  PRINT_STATS="True"
      fi 
  fi
  
  
533 534 535
  echo_info "3. building the compilation directives ..."

  DIR=$OPENAIR_DIR/cmake_targets
536
  if [ "$NOS1" = "1" ] ; then
Guy De Souza's avatar
Guy De Souza committed
537
      build_dir=noS1_ran_build
538 539 540 541 542 543 544 545 546
      if [ "$gNB" = "1" ] ; then
         exec=nr-softmodem-nos1
       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
547
  else
Guy De Souza's avatar
Guy De Souza committed
548
      build_dir=ran_build
549 550 551 552 553 554 555 556 557
      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
558
  fi
559

560 561 562
# configuration module libraries, one currently available, using libconfig 
  config_libconfig_shlib=params_libconfig
  
563
  # first generate the CMakefile in the right directory
Guy De Souza's avatar
Guy De Souza committed
564
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" -o "$HW" = "EXMIMO" ] ; then
565

Guy De Souza's avatar
Guy De Souza committed
566 567 568 569
    # softmodem compilation
    [ "$CLEAN" = "1" ] && rm -rf $DIR/$build_dir/build
    mkdir -p $DIR/$build_dir/build
    cmake_file=$DIR/$build_dir/CMakeLists.txt
570 571
    echo "cmake_minimum_required(VERSION 2.8)"   >  $cmake_file
    if [ "$NOS1" = "1" ] ; then
Guy De Souza's avatar
Guy De Souza committed
572
	cat  $DIR/$build_dir/CMakeLists.template >>  $cmake_file
573
    fi
574
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
575
    echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >>  $cmake_file
576 577
    echo "set ( XFORMS $XFORMS )"                  >>  $cmake_file
    echo "set ( RRC_ASN1_VERSION \"${REL}\")"      >>  $cmake_file
578
    echo "set ( NR_RRC_ASN1_VERSION \"${NR_REL}\")"      >>  $cmake_file
579 580
    echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )"     >>  $cmake_file
    echo "set ( RF_BOARD \"${HW}\")"               >>  $cmake_file
581
    echo "set ( TRANSP_PRO \"${TP}\")"             >>  $cmake_file
Guy De Souza's avatar
Guy De Souza committed
582
    echo "set(PACKAGE_NAME \"${exec}\")"       >>  $cmake_file
laurent's avatar
laurent committed
583
    echo "set (DEADLINE_SCHEDULER \"${DEADLINE_SCHEDULER_FLAG_USER}\" )"    >>$cmake_file
584
    echo "set (CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )"      >>$cmake_file
585
    echo "set ( T_TRACER $T_TRACER )"              >>  $cmake_file
586
    echo "set (UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE)"        >>  $cmake_file
gabrielC's avatar
gabrielC committed
587 588
    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
589
    echo "set (DISABLE_LOG_X $DISABLE_LOG_X)"        >>  $cmake_file
590
    echo "set (USRP_REC_PLAY $USRP_REC_PLAY)"        >>  $cmake_file
gabrielC's avatar
gabrielC committed
591 592 593 594 595
    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
596
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
Guy De Souza's avatar
Guy De Souza committed
597
    cd  $DIR/$build_dir/build
598
    eval $CMAKE_CMD
599 600
  fi

Guy De Souza's avatar
Guy De Souza committed
601 602
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" ] ; then
    echo_info "Compiling $exec"
603
    compilations \
Guy De Souza's avatar
Guy De Souza committed
604 605
	  $build_dir $exec \
	  $exec $dbin/$exec.$REL
606

607 608
# mandatory shared lib
    compilations \
Guy De Souza's avatar
Guy De Souza committed
609
	  $build_dir $config_libconfig_shlib \
610
	  lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
611
    compilations \
Guy De Souza's avatar
Guy De Souza committed
612
          $build_dir coding \
613
          libcoding.so $dbin/libcoding.so
614
	  
615 616
    if [ "$NOS1" = "1" ] ; then
	compilations \
Guy De Souza's avatar
Guy De Souza committed
617
	    $build_dir nasmesh \
618 619
	    CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko
	compilations \
Guy De Souza's avatar
Guy De Souza committed
620
	    $build_dir rb_tool \
621 622 623
	    rb_tool $dbin/rb_tool
	cp $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 $dbin
    fi
624
  fi
625

Florian Kaltenberger's avatar
Florian Kaltenberger committed
626
  if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
627 628 629
    # ue_ip driver compilation
    echo_info "Compiling UE specific part"
    compilations \
Guy De Souza's avatar
Guy De Souza committed
630
      $build_dir ue_ip \
Lionel Gauthier's avatar
Lionel Gauthier committed
631
      CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
632

Lionel Gauthier's avatar
Lionel Gauthier committed
633 634
#    mkdir -p $DIR/at_commands/build
#    cd $DIR/at_commands/build
635
#    eval $CMAKE_CMD
Lionel Gauthier's avatar
Lionel Gauthier committed
636 637 638
#    compilations \
#      at_commands at_nas_ue \
#      at_nas_ue $dbin/at_nas_ue
639
    
Lionel Gauthier's avatar
Lionel Gauthier committed
640
    [ "$CLEAN" = "1" ] && rm -rf $DIR/nas_sim_tools/build
641 642
    mkdir -p $DIR/nas_sim_tools/build
    cd $DIR/nas_sim_tools/build
Lionel Gauthier's avatar
Lionel Gauthier committed
643
    
644
    eval $CMAKE_CMD
thomasl's avatar
thomasl committed
645
    compilations \
646 647
      nas_sim_tools usim \
      usim $dbin/usim
thomasl's avatar
thomasl committed
648
    compilations \
649 650
      nas_sim_tools nvram \
      nvram $dbin/nvram
thomasl's avatar
thomasl committed
651
    compilations \
652 653
        nas_sim_tools conf2uedata \
        conf2uedata $dbin/conf2uedata
654 655

    # generate USIM data
656 657
    if [ -f $dbin/conf2uedata ]; then
      install_nas_tools $conf_nvram_path $gen_nvram_path
Guy De Souza's avatar
Guy De Souza committed
658 659 660 661
      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
662 663 664
    else
      echo_warning "not generated UE NAS files: binaries not found"
    fi
665
  fi
thomasl's avatar
thomasl committed
666

667
  if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then
668 669 670 671 672
    cd $OPENAIR_DIR/cmake_targets/lte-simulators
    [ "$CLEAN" = "1" ] && rm -rf build
    mkdir -p build
    cd build
    rm -f *sim
673
    eval $CMAKE_CMD
674
  fi
675

676 677 678
  if [ "$SIMUS_PHY" = "1" ] ; then
    # lte unitary simulators compilation
    echo_info "Compiling unitary tests simulators"
679
    simlist="dlsim_tm4 dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
680 681 682 683 684 685
    for f in $simlist ; do
      compilations \
      lte-simulators $f \
	  $f $dbin/$f.$REL
    done
  fi
thomasl's avatar
thomasl committed
686

Lionel Gauthier's avatar
Lionel Gauthier committed
687
  # Core simulators
688 689 690 691 692 693 694 695 696 697 698
  #############
  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 \
	  lte-simulators test_$f \
	  test_$f $dbin/test_$f.$REL
    done
  fi
thomasl's avatar
thomasl committed
699

700 701
  # EXMIMO drivers & firmware loader
  ###############
702
  if [ "$HW" = "EXMIMO" ] ; then
Lionel Gauthier's avatar
Lionel Gauthier committed
703
    
704 705
    echo_info "Compiling Express MIMO 2 board drivers"
    compilations \
Guy De Souza's avatar
Guy De Souza committed
706
        $build_dir openair_rf \
thomasl's avatar
thomasl committed
707
        CMakeFiles/openair_rf/openair_rf.ko $dbin/openair_rf.ko
708
    compilations \
Guy De Souza's avatar
Guy De Souza committed
709
	  $build_dir updatefw \
Lionel Gauthier's avatar
Lionel Gauthier committed
710
	  updatefw $dbin/updatefw
711
    echo_info "Compiling oarf tools. The logfile for compilation is here: $dlog/oarf.txt"
Guy De Souza's avatar
Guy De Souza committed
712 713
    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
714 715 716 717 718
    if [ -s $dbin/oarf_config_exmimo.oct ] ; then
	echo_success "oarf tools compiled"
    else
	echo_error "oarf tools compilation failed"
    fi
719
    cp $OPENAIR_DIR/cmake_targets/tools/init_exmimo2 $dbin
720
  fi
thomasl's avatar
thomasl committed
721

722 723
  # oaisim compilation
  ###############
724
  if [ "$oaisim" = "1" ] ; then
725
    dconf=$OPENAIR_DIR/targets/bin
726 727 728 729 730 731 732
      if [ "$NOS1" =  "1" ] ; then
	  oaisim_build_dir=oaisim_noS1_build_oai
	  oaisim_exec=oaisim_nos1
      else
	  oaisim_build_dir=oaisim_build_oai
	  oaisim_exec=oaisim
      fi
733
    
734 735 736
    echo_info "Compiling $oaisim_exec ($oaisim_build_dir)"
    cmake_file=$DIR/$oaisim_build_dir/CMakeLists.txt
    cp $DIR/$oaisim_build_dir/CMakeLists.template $cmake_file
737
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
738
    echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >>  $cmake_file
739 740 741 742
    echo "set ( XFORMS $XFORMS )" >>  $cmake_file
    echo "set ( PRINT_STATS $PRINT_STATS )" >>  $cmake_file
    echo "set ( RRC_ASN1_VERSION \"${REL}\")" >>  $cmake_file
    echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )" >>  $cmake_file
743
    echo "set ( T_TRACER $T_TRACER )"          >>  $cmake_file
744
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
745 746 747
    [ "$CLEAN" = "1" ] && rm -rf $DIR/$oaisim_build_dir/build
    mkdir -p $DIR/$oaisim_build_dir/build
    cd $DIR/$oaisim_build_dir/build
748
    eval $CMAKE_CMD
749
    compilations \
750 751 752 753 754 755 756 757 758
	  $oaisim_build_dir $oaisim_exec \
	  $oaisim_exec $dbin/$oaisim_exec.$REL

    if [ "$NOS1" != "1" ] ; then

	[ "$CLEAN" = "1" ] && rm -rf $DIR/at_commands/build
    	echo_info "Compiling at_nas_ue"
	mkdir -p $DIR/at_commands/build
	cd $DIR/at_commands/build
759
	eval $CMAKE_CMD
760 761 762 763 764 765 766 767 768 769 770 771 772
	compilations \
	    at_commands at_nas_ue \
	    at_nas_ue $dbin/at_nas_ue

	# ue_ip driver compilation
	echo_info "Compiling UE specific part (ue_ip driver and usim tools)"
	compilations \
	    oaisim_build_oai ue_ip \
	    CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko

	[ "$CLEAN" = "1" ] && rm -rf $DIR/nas_sim_tools/build
	mkdir -p $DIR/nas_sim_tools/build
	cd $DIR/nas_sim_tools/build
773
	eval $CMAKE_CMD
774 775 776 777 778 779 780
	compilations \
	    nas_sim_tools usim \
	    usim $dbin/usim
	compilations \
	    nas_sim_tools nvram \
	    nvram $dbin/nvram
	compilations \
781 782
        nas_sim_tools conf2uedata \
        conf2uedata $dbin/conf2uedata
783 784

	# generate USIM data
785 786
	if [ -f $dbin/conf2uedata ]; then
	    install_nas_tools $conf_nvram_path $gen_nvram_path
787 788 789
	else
	    echo_warning "not generated UE NAS files: binaries not found"
	fi
790 791
    else

792 793 794
	compilations \
	    $oaisim_build_dir rb_tool \
	    rb_tool $dbin/rb_tool
Lionel Gauthier's avatar
Lionel Gauthier committed
795

796 797 798 799
	# nasmesh driver compilation
	compilations \
	    $oaisim_build_dir nasmesh \
	    CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko
800

801
	#oai_nw_drv
802 803 804
	#compilations \
	#    $oaisim_build_dir oai_nw_drv \
	#    CMakeFiles/oai_nw_drv/oai_nw_drv.ko $dbin/oai_nw_drv.ko
805
    fi
806

807 808 809 810
    if [ "$TP" == "ETHERNET" ] ; then
	compilations \
	    $oaisim_build_dir oai_eth_transpro \
	    liboai_eth_transpro.so $dbin/liboai_eth_transpro.so.$REL
811 812
	ln -sf liboai_eth_transpro.so liboai_transpro.so
	ln -sf $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
813 814 815
	echo_info "liboai_transpro.so is linked with ETHERNET library"	 
    fi
      
816 817
    cmake_file=$DIR/oaisim_mme_build_oai/CMakeLists.txt
    cp $DIR/oaisim_mme_build_oai/CMakeLists.template $cmake_file
818 819 820 821
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
    echo "set ( XFORMS $XFORMS )" >>  $cmake_file
    echo "set ( RRC_ASN1_VERSION \"${REL}\")" >>  $cmake_file
    echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )" >>  $cmake_file
822
    echo "set ( T_TRACER $T_TRACER )"        >>  $cmake_file
823
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
824 825 826
    #[ "$CLEAN" = "1" ] && rm -rf $DIR/oaisim_mme_build_oai/build
    #mkdir -p $DIR/oaisim_mme_build_oai/build
    #cd $DIR/oaisim_mme_build_oai/build
827
    #eval $CMAKE_CMD
828 829 830
    #compilations \
	#  oaisim_mme_build_oai oaisim_mme \
	#  oaisim_mme $dbin/oaisim_mme.$REL
831 832
  fi

oai's avatar
oai committed
833 834 835
  # Telnet server compilation
  #####################
  if [ "$BUILD_TELNETSRV" = "1" ] ; then
Guy De Souza's avatar
Guy De Souza committed
836
              build_dir=$build_dir
837 838 839
              compilations \
                  $build_dir telnetsrv \
                  libtelnetsrv.so $dbin/libtelnetsrv.so
oai's avatar
oai committed
840 841

  fi  
root's avatar
root committed
842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897
  # 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  
 
898 899
  # build RF device and transport protocol libraries
  #####################################
root's avatar
root committed
900
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" - o "$HWLAT" = "1" ] ; then
901

Guy De Souza's avatar
Guy De Souza committed
902
      build_dir=$build_dir
903

904
      # build RF device libraries
905
      if [ "$HW" != "None" ] ; then
906
	  rm -f liboai_device.so
907
	  rm -f $dbin/liboai_device.so
908

909
	  # link liboai_device.so with the selected RF device library
910
	  if [ "$HW" == "EXMIMO" ] ; then
911 912 913
	      compilations \
		  $build_dir oai_exmimodevif \
		  liboai_exmimodevif.so $dbin/liboai_exmimodevif.so.$REL
914 915 916

	      ln -sf liboai_exmimodevif.so liboai_device.so
	      ln -sf $dbin/liboai_exmimodevif.so.$REL $dbin/liboai_device.so
917
	      echo_info "liboai_device.so is linked to EXMIMO device library"       
root's avatar
root committed
918 919 920 921 922
	  elif [ "$HW" == "OAI_ADRV9371_ZC706" ] ; then

        ln -sf $OPENAIR_DIR/targets/ARCH/ADRV9371_ZC706/slib/libadrv9371_zc706.so liboai_device.so

	      echo_info "liboai_device.so is linked to ADRV9371_ZC706 device library"        
923
	  elif [ "$HW" == "OAI_USRP" ] ; then
924 925 926
              compilations \
                  $build_dir oai_usrpdevif \
                  liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
927

928 929
	      ln -sf liboai_usrpdevif.so liboai_device.so
	      ln -sf $dbin/liboai_usrpdevif.so.$REL $dbin/liboai_device.so
930 931
	      echo_info "liboai_device.so is linked to USRP device library"        
	  elif [ "$HW" == "OAI_BLADERF" ] ; then
932 933 934 935 936 937
	      if [ -f "/usr/include/libbladeRF.h" ] ; then
		  compilations \
		      $build_dir oai_bladerfdevif \
		      liboai_bladerfdevif.so $dbin/liboai_bladerfdevif.so.$REL
	      fi

938 939
	      ln -sf liboai_bladerfdevif.so liboai_device.so
	      ln -sf $dbin/liboai_bladerfdevif.so.$REL $dbin/liboai_device.so
940
	      echo_info "liboai_device.so is linked to BLADERF device library"	 
941 942 943 944 945 946 947
	  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

948 949
	      ln -sf liboai_lmssdrdevif.so liboai_device.so
	      ln -sf $dbin/liboai_lmssdrdevif.so.$REL $dbin/liboai_device.so
950
	      echo_info "liboai_device.so is linked to LMSSDR device library"	 
951 952 953 954 955 956
	  else 
	      echo_info "liboai_device.so is not linked to any device library"	    
	  fi
      fi
      
      # build trasport protocol libraries (currently only ETHERNET is available)
957
      if [ "$TP" != "None" ] ; then
958
	  rm -f liboai_transpro.so
959 960
	  rm -f $dbin/liboai_transpro.so

961
	  if [ "$TP" == "ETHERNET" ] ; then
962 963 964
	      compilations \
		  $build_dir oai_eth_transpro \
		  liboai_eth_transpro.so $dbin/liboai_eth_transpro.so.$REL
965 966
	      ln -sf liboai_eth_transpro.so liboai_transpro.so
	      ln -sf $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
967 968 969 970 971
	      echo_info "liboai_transpro.so is linked with ETHERNET library"	 
	  fi      
      fi
fi

972

973 974 975 976 977 978 979 980 981 982 983
  # 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
984
    eval $CMAKE_CMD
985 986
    make doc
    ) >& $doxygen_log
987 988
  fi

Lionel Gauthier's avatar
Lionel Gauthier committed
989 990 991
  # Auto-tests
  #####################
  if [ "$OAI_TEST" = "1" ]; then
thomasl's avatar
thomasl committed
992
    echo_info "10. Running OAI pre commit tests (pre-ci) ..."
993 994 995 996
    echo_error "These scripts ASSUME that user is in /etc/sudoers and can execute commands without PASSWORD prompt"
    echo_error "Add the following lines in /etc/sudoers file to make your __user_name__ sudo without password prompt"
    echo_error " __your_user_name__ ALL = (ALL:ALL) NOPASSWD: ALL"
    echo_error " __your_user_name__ ALL = (ALL) NOPASSWD: ALL "
997 998
    echo_info "The log file for the autotest script for debugging is located here: $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log "
    echo_info "The results of autotests results is located here: $OPENAIR_DIR/cmake_targets/autotests/log/results_autotests.xml "
999
    echo_info "You can hit CTRL-C any time to terminate the autotests..."
1000 1001 1002
    echo "Current User Name: $USER"
    read -s -p "Enter Password: " mypassword
    echo -e "\n"
1003 1004
    rm -fr $OPENAIR_DIR/cmake_targets/autotests/log
    mkdir -p $OPENAIR_DIR/cmake_targets/autotests/log
1005
    if [ "$RUN_GROUP" -eq "1" ]; then
1006
        $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -g "$TEST_CASE_GROUP" -p $mypassword >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log &
1007
    else
1008
        $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -p $mypassword >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log &
1009
    fi
1010
    wait
Lionel Gauthier's avatar
Lionel Gauthier committed
1011
  else
thomasl's avatar
thomasl committed
1012
    echo_info "10. Bypassing the Tests ..."
Lionel Gauthier's avatar
Lionel Gauthier committed
1013
  fi
1014 1015 1016
}

main "$@"