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
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"
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
Cedric Roux's avatar
Cedric Roux committed
51
REL="Rel14"
52
HW="None"
53
TP="None"
Florian Kaltenberger's avatar
Florian Kaltenberger committed
54
NOS1=0
Lionel Gauthier's avatar
Lionel Gauthier committed
55
EPC=0
56
VERBOSE_COMPILE=0
57
CFLAGS_PROCESSOR_USER=""
58 59
RUN_GROUP=0
TEST_CASE_GROUP=""
60
BUILD_DOXYGEN=0
61
T_TRACER="False"
Rohit Gupta's avatar
Rohit Gupta committed
62
DISABLE_HARDWARE_DEPENDENCY="False"
63
CMAKE_BUILD_TYPE=""
64
CMAKE_CMD="$CMAKE"
65
UE_AUTOTEST_TRACE="False"
gabrielC's avatar
gabrielC committed
66 67
UE_DEBUG_TRACE="False"
UE_TIMING_TRACE="False"
Cedric Roux's avatar
Cedric Roux committed
68
DISABLE_LOG_X="False"
69
USRP_REC_PLAY="False"
70
BUILD_ECLIPSE=0
71
UE_NAS_USE_TUN="False"
72
BASIC_SIMULATOR=0
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
98
   Makes the LTE softmodem
99
--UE
100
   Makes the UE specific parts (ue_ip, usim, nvram) from the given configuration file
Cedric Roux's avatar
Cedric Roux committed
101 102 103 104
--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\")
105
-r | --3gpp-release
Cedric Roux's avatar
Cedric Roux committed
106
   default is Rel14,
107
   Rel8 limits the implementation to 3GPP Release 8 version
Cedric Roux's avatar
Cedric Roux committed
108
   Rel10 limits the implementation to 3GPP Release 10 version
109
-w | --hardware
110
   EXMIMO, USRP, BLADERF, ETHERNET, LMSSDR, None (Default)
111
   Adds this RF board support (in external packages installation and in compilation)
112 113 114
-t | --transport protocol
   ETHERNET , None
   Adds this trasport protocol support in compilation
115
--oaisim
Cedric Roux's avatar
Cedric Roux committed
116
   Makes the oaisim simulator. Hardware will be defaulted to \"None\".
117 118 119 120 121 122
--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
123 124
--run-group 
   runs only specified test cases specified here. This flag is only valid with -s
125 126 127
-V | --vcd
   Adds a debgging facility to the binary files: GUI with major internal synchronization events
-x | --xforms
128
   Adds a software oscilloscope feature to the produced binaries. If oaisim, then enable PRINT_STATS.
129
--install-system-files
Lionel Gauthier's avatar
Lionel Gauthier committed
130
   Install OpenArInterface required files in Linux system
131
   (will ask root password)
132 133
--noS1 
   Compiles oaisim or lte-softmodem without S1 interface, using direct link to IP instead
134 135
--verbose-compile
   Shows detailed compilation instructions in makefile
136 137
--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
138 139
--build-doxygen
   Builds doxygen based documentation.
140
--disable-deadline
141 142
   Disables deadline scheduler of Linux kernel (>=3.14.x).
--enable-deadline
laurent's avatar
laurent committed
143
   Enable deadline scheduler of Linux kernel (>=3.14.x). 
144
--disable-cpu-affinity
145
   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
146 147
--T-tracer
   Enables the T tracer.
Rohit Gupta's avatar
Rohit Gupta committed
148 149
--disable-hardware-dependency
   Disable HW dependency during installation
150 151
--ue-autotest-trace
    Enable specific traces for UE autotest framework
gabrielC's avatar
gabrielC committed
152 153 154 155
--ue-trace
    Enable traces for UE debugging
--ue-timing
    Enable traces for timing
Cedric Roux's avatar
Cedric Roux committed
156 157
--disable-log
   Disable all LOG_* macros
158 159
--build-eclipse
   Build eclipse project files. Paths are auto corrected by fixprj.sh
160 161
--usrp-recplay
   Build for I/Q record-playback modes
162 163
--ue-nas-use-tun
   Use TUN devices for the UEs instead of ue_ip.ko
164 165 166
--basic-simulator
   Generates a basic [1 UE + 1 eNB + no channel] simulator.
   See targets/ARCH/tcp_bridge/README.tcp_bridge_oai for documentation.
167
Usage (first build):
168 169 170
 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
171 172 173
Usage (Regular):
 oaisim : ./build_oai --oaisim -x 
 Eurecom EXMIMO + OAI ENB : ./build_oai --eNB -x 
Cedric Roux's avatar
Cedric Roux committed
174
 NI/ETTUS B201  + OAI ENB : ./build_oai --eNB -x -w USRP"
175 176 177 178
}


function main() {
179

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

430
  #Disable CPU Affinity for deadline scheduler
laurent's avatar
laurent committed
431
  if [ "$DEADLINE_SCHEDULER_FLAG_USER" = "True" ] ; then 
432 433
     CPU_AFFINITY_FLAG_USER="False"
  fi
434

laurent's avatar
laurent committed
435
  echo_info "Flags for Deadline scheduler: $DEADLINE_SCHEDULER_FLAG_USER"
436
  echo_info "Flags for CPU Affinity: $CPU_AFFINITY_FLAG_USER"
Aikaterini's avatar
Aikaterini committed
437

438 439 440 441
  if [ -n "$UHD_IMAGES_DIR" ] && [ -z "$INSTALL_EXTERNAL" ]; then
    echo_error "UHD images download settings will not be applied without -I present"
    exit
  fi
442 443 444
  ############################################
  # setting and printing OAI envs, we should check here
  ############################################
Lionel Gauthier's avatar
Lionel Gauthier committed
445

446
  echo_info "2. Setting the OAI PATHS ..."
thomasl's avatar
thomasl committed
447

448
  cecho "OPENAIR_DIR    = $OPENAIR_DIR" $green
thomasl's avatar
thomasl committed
449

450 451 452 453 454 455 456 457 458 459
  # 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
460

461

462 463 464 465
  if [ "$CLEAN_ALL" = "1" ] ; then
    clean_all_files
    echo_info "Erased all previously producted files"
  fi
466

467 468 469 470 471 472 473
  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
474 475 476
    if [ "$HW" == "OAI_USRP" ] ; then
      echo_info "installing packages for USRP support"
      check_install_usrp_uhd_driver
477
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
478
        install_usrp_uhd_driver $UHD_IMAGES_DIR
479
      fi
480 481
    fi 
    if [ "$HW" == "OAI_BLADERF" ] ; then
482
      echo_info "installing packages for BLADERF support"
483
      check_install_bladerf_driver
484 485 486
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
        flash_firmware_bladerf
      fi
487
    fi
488 489 490
    echo_info "installing protobuf/protobuf-c for flexran agent support"
    install_protobuf_from_source
    install_protobuf_c_from_source
491 492 493 494 495 496 497
  fi

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

498
  if [ "$oaisim" = "1" ] ; then
499
      #to be discussed
500
      # there is no RF device  transport protocol 
501
      HW="None" 
502
      TP="ETHERNET"
503
      
504 505 506 507 508 509
      if [ "$XFORMS" == "True" ] ; then 
	  PRINT_STATS="True"
      fi 
  fi
  
  
510 511 512
  echo_info "3. building the compilation directives ..."

  DIR=$OPENAIR_DIR/cmake_targets
513 514
  if [ "$NOS1" =  "1" ] ; then
      lte_build_dir=lte_noS1_build_oai
515 516 517 518 519 520
      if [ "$eNB" = "1" ] ; then
         lte_exec=lte-softmodem-nos1
      fi
      if [ "$UE" = "1" ] ; then
         lte_exec=lte-uesoftmodem-nos1
      fi
521 522
  else
      lte_build_dir=lte_build_oai
523 524 525 526 527 528
      if [ "$eNB" = "1" ] ; then
         lte_exec=lte-softmodem
      fi
      if [ "$UE" = "1" ] ; then
         lte_exec=lte-uesoftmodem
      fi
529
  fi
530

531 532 533
# configuration module libraries, one currently available, using libconfig 
  config_libconfig_shlib=params_libconfig
  
534 535
  # first generate the CMakefile in the right directory
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$HW" = "EXMIMO" ] ; then
536

537
    # LTE softmodem compilation
538 539 540 541 542 543 544
    [ "$CLEAN" = "1" ] && rm -rf $DIR/$lte_build_dir/build
    mkdir -p $DIR/$lte_build_dir/build
    cmake_file=$DIR/$lte_build_dir/CMakeLists.txt
    echo "cmake_minimum_required(VERSION 2.8)"   >  $cmake_file
    if [ "$NOS1" = "1" ] ; then
	cat  $DIR/$lte_build_dir/CMakeLists.template >>  $cmake_file
    fi
545
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
546
    echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >>  $cmake_file
547
    echo "set ( XFORMS $XFORMS )"                  >>  $cmake_file
Xu Bo's avatar
Xu Bo committed
548
    echo "set ( UE_EXPANSION $UE_EXPANSION )"      >>  $cmake_file
549
#    echo "set ( PHY_TX_THREAD $UE_EXPANSION )"     >>  $cmake_file
550
    echo "set ( PRE_SCD_THREAD $UE_EXPANSION )"    >>  $cmake_file
551 552 553
    echo "set ( RRC_ASN1_VERSION \"${REL}\")"      >>  $cmake_file
    echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )"     >>  $cmake_file
    echo "set ( RF_BOARD \"${HW}\")"               >>  $cmake_file
554 555
    echo "set ( TRANSP_PRO \"${TP}\")"             >>  $cmake_file
    echo "set(PACKAGE_NAME \"${lte_exec}\")"       >>  $cmake_file
laurent's avatar
laurent committed
556
    echo "set (DEADLINE_SCHEDULER \"${DEADLINE_SCHEDULER_FLAG_USER}\" )"    >>$cmake_file
557
    echo "set (CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )"      >>$cmake_file
558
    echo "set ( T_TRACER $T_TRACER )"              >>  $cmake_file
559
    echo "set (UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE)"        >>  $cmake_file
gabrielC's avatar
gabrielC committed
560 561
    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
562
    echo "set (DISABLE_LOG_X $DISABLE_LOG_X)"        >>  $cmake_file
563
    echo "set (USRP_REC_PLAY $USRP_REC_PLAY)"        >>  $cmake_file
gabrielC's avatar
gabrielC committed
564 565 566 567 568
    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
569
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
570
    cd  $DIR/$lte_build_dir/build
571
    eval $CMAKE_CMD
572 573
  fi

Florian Kaltenberger's avatar
Florian Kaltenberger committed
574
  if [ "$eNB" = "1" -o "$UE" = "1" ] ; then
575
    echo_info "Compiling $lte_exec"
576
    compilations \
577 578 579
	  $lte_build_dir $lte_exec \
	  $lte_exec $dbin/$lte_exec.$REL

580 581 582 583
# mandatory shared lib
    compilations \
	  $lte_build_dir $config_libconfig_shlib \
	  lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
584 585 586
    compilations \
          $lte_build_dir coding \
          libcoding.so $dbin/libcoding.so
587
	  
588 589 590 591 592 593 594 595 596
    if [ "$NOS1" = "1" ] ; then
	compilations \
	    $lte_build_dir nasmesh \
	    CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko
	compilations \
	    $lte_build_dir rb_tool \
	    rb_tool $dbin/rb_tool
	cp $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 $dbin
    fi
597
  fi
598

Florian Kaltenberger's avatar
Florian Kaltenberger committed
599
  if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
600 601 602
    # ue_ip driver compilation
    echo_info "Compiling UE specific part"
    compilations \
603
      $lte_build_dir ue_ip \
Lionel Gauthier's avatar
Lionel Gauthier committed
604
      CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
605

Lionel Gauthier's avatar
Lionel Gauthier committed
606 607
#    mkdir -p $DIR/at_commands/build
#    cd $DIR/at_commands/build
608
#    eval $CMAKE_CMD
Lionel Gauthier's avatar
Lionel Gauthier committed
609 610 611
#    compilations \
#      at_commands at_nas_ue \
#      at_nas_ue $dbin/at_nas_ue
612
    
Lionel Gauthier's avatar
Lionel Gauthier committed
613
    [ "$CLEAN" = "1" ] && rm -rf $DIR/nas_sim_tools/build
614 615
    mkdir -p $DIR/nas_sim_tools/build
    cd $DIR/nas_sim_tools/build
Lionel Gauthier's avatar
Lionel Gauthier committed
616
    
617
    eval $CMAKE_CMD
thomasl's avatar
thomasl committed
618
    compilations \
619 620
      nas_sim_tools usim \
      usim $dbin/usim
thomasl's avatar
thomasl committed
621
    compilations \
622 623
      nas_sim_tools nvram \
      nvram $dbin/nvram
thomasl's avatar
thomasl committed
624
    compilations \
625 626
        nas_sim_tools conf2uedata \
        conf2uedata $dbin/conf2uedata
627 628

    # generate USIM data
629 630
    if [ -f $dbin/conf2uedata ]; then
      install_nas_tools $conf_nvram_path $gen_nvram_path
631
      echo_info "Copying UE specific part to $DIR/$lte_build_dir/build"
632 633 634
      cp -Rvf $dbin/.ue_emm.nvram0 $DIR/$lte_build_dir/build
      cp -Rvf $dbin/.ue.nvram0 $DIR/$lte_build_dir/build
      cp -Rvf $dbin/.usim.nvram0 $DIR/$lte_build_dir/build
635 636 637
    else
      echo_warning "not generated UE NAS files: binaries not found"
    fi
638
  fi
thomasl's avatar
thomasl committed
639

640
  if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then
641 642 643 644 645
    cd $OPENAIR_DIR/cmake_targets/lte-simulators
    [ "$CLEAN" = "1" ] && rm -rf build
    mkdir -p build
    cd build
    rm -f *sim
646
    eval $CMAKE_CMD
647
  fi
648

649 650 651
  if [ "$SIMUS_PHY" = "1" ] ; then
    # lte unitary simulators compilation
    echo_info "Compiling unitary tests simulators"
652 653 654
    # TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim
    #simlist="dlsim_tm4 dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
    simlist="dlsim ulsim"
655 656 657 658 659
    for f in $simlist ; do
      compilations \
      lte-simulators $f \
	  $f $dbin/$f.$REL
    done
660 661 662
    compilations \
          lte-simulators coding \
          libcoding.so $dbin/libcoding.so
663
  fi
thomasl's avatar
thomasl committed
664

Lionel Gauthier's avatar
Lionel Gauthier committed
665
  # Core simulators
666 667 668 669 670 671 672 673 674 675 676
  #############
  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
677

678 679
  # EXMIMO drivers & firmware loader
  ###############
680
  if [ "$HW" = "EXMIMO" ] ; then
Lionel Gauthier's avatar
Lionel Gauthier committed
681
    
682 683
    echo_info "Compiling Express MIMO 2 board drivers"
    compilations \
684
        $lte_build_dir openair_rf \
thomasl's avatar
thomasl committed
685
        CMakeFiles/openair_rf/openair_rf.ko $dbin/openair_rf.ko
686
    compilations \
687
	  $lte_build_dir updatefw \
Lionel Gauthier's avatar
Lionel Gauthier committed
688
	  updatefw $dbin/updatefw
689
    echo_info "Compiling oarf tools. The logfile for compilation is here: $dlog/oarf.txt"
690 691 692 693 694 695 696
    make -C $OPENAIR_DIR/cmake_targets/$lte_build_dir/build oarf > $dlog/oarf.txt 2>&1
    cp $OPENAIR_DIR/cmake_targets/$lte_build_dir/build/*.oct $dbin
    if [ -s $dbin/oarf_config_exmimo.oct ] ; then
	echo_success "oarf tools compiled"
    else
	echo_error "oarf tools compilation failed"
    fi
697
    cp $OPENAIR_DIR/cmake_targets/tools/init_exmimo2 $dbin
698
  fi
thomasl's avatar
thomasl committed
699

700 701
  # oaisim compilation
  ###############
702
  if [ "$oaisim" = "1" ] ; then
703
    dconf=$OPENAIR_DIR/targets/bin
704 705 706 707 708 709 710
      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
711
    
712 713 714
    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
715
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
716
    echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >>  $cmake_file
717
    echo "set ( XFORMS $XFORMS )" >>  $cmake_file
Xu Bo's avatar
Xu Bo committed
718
    echo "set ( UE_EXPANSION $UE_EXPANSION )"      >>  $cmake_file
719 720
    echo "set ( PHY_TX_THREAD $UE_EXPANSION )"     >>  $cmake_file
    echo "set ( PRE_SCD_THREAD $UE_EXPANSION )"    >>  $cmake_file
721 722 723
    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
724
    echo "set ( T_TRACER $T_TRACER )"          >>  $cmake_file
725
    echo "set ( UE_NAS_USE_TUN $UE_NAS_USE_TUN )" >>  $cmake_file
726
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
727 728 729
    [ "$CLEAN" = "1" ] && rm -rf $DIR/$oaisim_build_dir/build
    mkdir -p $DIR/$oaisim_build_dir/build
    cd $DIR/$oaisim_build_dir/build
730
    eval $CMAKE_CMD
731
    compilations \
732 733
	  $oaisim_build_dir $oaisim_exec \
	  $oaisim_exec $dbin/$oaisim_exec.$REL
734 735 736 737 738 739
    compilations \
	  $oaisim_build_dir $config_libconfig_shlib \
	  lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
    compilations \
          $oaisim_build_dir coding \
          libcoding.so $dbin/libcoding.so
740 741 742 743 744 745 746

    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
747
	eval $CMAKE_CMD
748 749 750 751 752 753 754 755 756 757 758 759 760
	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
761
	eval $CMAKE_CMD
762 763 764 765 766 767 768
	compilations \
	    nas_sim_tools usim \
	    usim $dbin/usim
	compilations \
	    nas_sim_tools nvram \
	    nvram $dbin/nvram
	compilations \
769 770
        nas_sim_tools conf2uedata \
        conf2uedata $dbin/conf2uedata
771 772

	# generate USIM data
773 774
	if [ -f $dbin/conf2uedata ]; then
	    install_nas_tools $conf_nvram_path $gen_nvram_path
775 776 777
	else
	    echo_warning "not generated UE NAS files: binaries not found"
	fi
778 779
    else

780 781 782
	compilations \
	    $oaisim_build_dir rb_tool \
	    rb_tool $dbin/rb_tool
Lionel Gauthier's avatar
Lionel Gauthier committed
783

784 785 786 787
	# nasmesh driver compilation
	compilations \
	    $oaisim_build_dir nasmesh \
	    CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko
788

789
	#oai_nw_drv
790 791 792
	#compilations \
	#    $oaisim_build_dir oai_nw_drv \
	#    CMakeFiles/oai_nw_drv/oai_nw_drv.ko $dbin/oai_nw_drv.ko
793
    fi
794

795 796 797 798
    if [ "$TP" == "ETHERNET" ] ; then
	compilations \
	    $oaisim_build_dir oai_eth_transpro \
	    liboai_eth_transpro.so $dbin/liboai_eth_transpro.so.$REL
799 800
	ln -sf liboai_eth_transpro.so liboai_transpro.so
	ln -sf $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
801 802 803
	echo_info "liboai_transpro.so is linked with ETHERNET library"	 
    fi
      
804 805
    cmake_file=$DIR/oaisim_mme_build_oai/CMakeLists.txt
    cp $DIR/oaisim_mme_build_oai/CMakeLists.template $cmake_file
806 807
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
    echo "set ( XFORMS $XFORMS )" >>  $cmake_file
Xu Bo's avatar
Xu Bo committed
808
    echo "set ( UE_EXPANSION $UE_EXPANSION )"      >>  $cmake_file
809 810
    echo "set ( PHY_TX_THREAD $UE_EXPANSION )"     >>  $cmake_file
    echo "set ( PRE_SCD_THREAD $UE_EXPANSION )"    >>  $cmake_file
811 812
    echo "set ( RRC_ASN1_VERSION \"${REL}\")" >>  $cmake_file
    echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )" >>  $cmake_file
813
    echo "set ( T_TRACER $T_TRACER )"        >>  $cmake_file
814
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
815 816 817
    #[ "$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
818
    #eval $CMAKE_CMD
819 820 821
    #compilations \
	#  oaisim_mme_build_oai oaisim_mme \
	#  oaisim_mme $dbin/oaisim_mme.$REL
822 823
  fi

oai's avatar
oai committed
824 825 826
  # Telnet server compilation
  #####################
  if [ "$BUILD_TELNETSRV" = "1" ] ; then
827 828 829 830
              build_dir=$lte_build_dir
              compilations \
                  $build_dir telnetsrv \
                  libtelnetsrv.so $dbin/libtelnetsrv.so
oai's avatar
oai committed
831 832

  fi  
833 834
  # build RF device and transport protocol libraries
  #####################################
835
  if [ "$eNB" = "1" -o "$UE" = "1" ] ; then
836

837
      build_dir=$lte_build_dir	  
838

839
      # build RF device libraries
840
      if [ "$HW" != "None" ] ; then
841
	  rm -f liboai_device.so
842
	  rm -f $dbin/liboai_device.so
843

844
	  # link liboai_device.so with the selected RF device library
845
	  if [ "$HW" == "EXMIMO" ] ; then
846 847 848
	      compilations \
		  $build_dir oai_exmimodevif \
		  liboai_exmimodevif.so $dbin/liboai_exmimodevif.so.$REL
849 850 851

	      ln -sf liboai_exmimodevif.so liboai_device.so
	      ln -sf $dbin/liboai_exmimodevif.so.$REL $dbin/liboai_device.so
852 853
	      echo_info "liboai_device.so is linked to EXMIMO device library"       
	  elif [ "$HW" == "OAI_USRP" ] ; then
854 855 856
              compilations \
                  $build_dir oai_usrpdevif \
                  liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
857

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

868 869
	      ln -sf liboai_bladerfdevif.so liboai_device.so
	      ln -sf $dbin/liboai_bladerfdevif.so.$REL $dbin/liboai_device.so
870
	      echo_info "liboai_device.so is linked to BLADERF device library"	 
871 872 873 874 875 876 877
	  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

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

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

902

903 904 905 906 907 908 909 910 911 912 913
  # 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
914
    eval $CMAKE_CMD
915 916
    make doc
    ) >& $doxygen_log
917 918
  fi

Lionel Gauthier's avatar
Lionel Gauthier committed
919 920 921
  # Auto-tests
  #####################
  if [ "$OAI_TEST" = "1" ]; then
thomasl's avatar
thomasl committed
922
    echo_info "10. Running OAI pre commit tests (pre-ci) ..."
923 924 925 926
    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 "
927 928
    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 "
929
    echo_info "You can hit CTRL-C any time to terminate the autotests..."
930 931 932
    echo "Current User Name: $USER"
    read -s -p "Enter Password: " mypassword
    echo -e "\n"
933 934
    rm -fr $OPENAIR_DIR/cmake_targets/autotests/log
    mkdir -p $OPENAIR_DIR/cmake_targets/autotests/log
935
    if [ "$RUN_GROUP" -eq "1" ]; then
936
        $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -g "$TEST_CASE_GROUP" -p $mypassword >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log &
937
    else
938
        $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -p $mypassword >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log &
939
    fi
940
    wait
Lionel Gauthier's avatar
Lionel Gauthier committed
941
  else
thomasl's avatar
thomasl committed
942
    echo_info "10. Bypassing the Tests ..."
Lionel Gauthier's avatar
Lionel Gauthier committed
943
  fi
944 945 946 947 948 949

  # basic simulator
  #####################
  if [ "$BASIC_SIMULATOR" = "1" ]; then
    echo_info "Build basic simulator"
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/basic_simulator
950
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
951 952 953
    mkdir -p $OPENAIR_DIR/cmake_targets/basic_simulator
    mkdir -p $OPENAIR_DIR/cmake_targets/basic_simulator/enb
    mkdir -p $OPENAIR_DIR/cmake_targets/basic_simulator/ue
954
    mkdir -p $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980

    # enb

    cmake_file=$OPENAIR_DIR/cmake_targets/basic_simulator/enb/CMakeLists.txt
    echo "cmake_minimum_required(VERSION 2.8)"         >  $cmake_file
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )"  >> $cmake_file
    echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >>  $cmake_file
    echo "set ( RRC_ASN1_VERSION \"${REL}\")"          >>  $cmake_file
    echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )"         >>  $cmake_file
    echo "set ( XFORMS $XFORMS )"                      >>  $cmake_file
    echo "set ( RF_BOARD \"OAI_USRP\")"                >>  $cmake_file
    echo "set ( TRANSP_PRO \"None\")"                  >>  $cmake_file
    echo "set(PACKAGE_NAME \"simulator_enb\")"         >>  $cmake_file
    echo "set (DEADLINE_SCHEDULER \"False\" )"         >>  $cmake_file
    echo "set (CPU_AFFINITY \"False\" )"               >>  $cmake_file
    echo "set ( T_TRACER \"True\" )"                   >>  $cmake_file
    echo "set (UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE)"  >>  $cmake_file
    echo "set (UE_DEBUG_TRACE $UE_DEBUG_TRACE)"        >>  $cmake_file
    echo "set (UE_TIMING_TRACE $UE_TIMING_TRACE)"      >>  $cmake_file
    echo "set (DISABLE_LOG_X $DISABLE_LOG_X)"          >>  $cmake_file
    echo "set (USRP_REC_PLAY $USRP_REC_PLAY)"          >>  $cmake_file
    echo "set (BASIC_SIMULATOR \"True\" )"             >>  $cmake_file
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)' >> $cmake_file

    echo_info "Build eNB"
    echo_info "logs are in $dlog/basic_simulator_enb.txt"
981
    set +e
982 983 984
    {
      cd $OPENAIR_DIR/cmake_targets/basic_simulator/enb
      cmake .
985 986
      make -j`nproc` lte-softmodem
      make -j`nproc` coding params_libconfig tcp_bridge_oai
987 988 989
      ln -sf libtcp_bridge_oai.so liboai_device.so
      cd ../..
    } > $dlog/basic_simulator_enb.txt 2>&1
990 991 992 993 994 995 996 997 998 999 1000
    set -e
    if [ -s $OPENAIR_DIR/cmake_targets/basic_simulator/enb/lte-softmodem          -a \
         -s $OPENAIR_DIR/cmake_targets/basic_simulator/enb/libcoding.so           -a \
         -s $OPENAIR_DIR/cmake_targets/basic_simulator/enb/libparams_libconfig.so -a \
         -s $OPENAIR_DIR/cmake_targets/basic_simulator/enb/libtcp_bridge_oai.so ] ; then
      echo_success "eNB compiled"
      check_warnings "$dlog/basic_simulator_enb.txt"
    else
      echo_error "eNB compilation failed"
      exit 1
    fi
1001 1002 1003 1004

    # ue

    echo_info "Compile conf2uedata"
1005 1006
    cd $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
    eval $CMAKE_CMD
1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036
    compilations \
        nas_sim_tools conf2uedata \
        conf2uedata $dbin/conf2uedata

    cmake_file=$OPENAIR_DIR/cmake_targets/basic_simulator/ue/CMakeLists.txt
    echo "cmake_minimum_required(VERSION 2.8)"        >  $cmake_file
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
    echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >>  $cmake_file
    echo "set ( RRC_ASN1_VERSION \"${REL}\")"         >>  $cmake_file
    echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )"        >>  $cmake_file
    echo "set ( XFORMS $XFORMS )"                     >>  $cmake_file
    echo "set ( RF_BOARD \"OAI_USRP\")"               >>  $cmake_file
    echo "set ( TRANSP_PRO \"None\")"                 >>  $cmake_file
    echo "set(PACKAGE_NAME \"simulator_ue\")"         >>  $cmake_file
    echo "set (DEADLINE_SCHEDULER \"False\" )"        >>  $cmake_file
    echo "set (CPU_AFFINITY \"False\" )"              >>  $cmake_file
    echo "set ( T_TRACER \"False\" )"                 >>  $cmake_file
    echo "set (UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE)" >>  $cmake_file
    echo "set (UE_DEBUG_TRACE $UE_DEBUG_TRACE)"       >>  $cmake_file
    echo "set (UE_TIMING_TRACE $UE_TIMING_TRACE)"     >>  $cmake_file
    echo "set (DISABLE_LOG_X $DISABLE_LOG_X)"         >>  $cmake_file
    echo "set (USRP_REC_PLAY $USRP_REC_PLAY)"         >>  $cmake_file
    echo "set (LINUX True )"                          >>  $cmake_file
    echo "set (PDCP_USE_NETLINK True )"               >>  $cmake_file
    echo "set (BASIC_SIMULATOR \"True\" )"            >>  $cmake_file
    echo "set (UE_NAS_USE_TUN \"True\" )"             >>  $cmake_file
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)' >> $cmake_file

    echo_info "Build UE"
    echo_info "logs are in $dlog/basic_simulator_ue.txt"
1037
    set +e
1038 1039 1040
    {
      cd $OPENAIR_DIR/cmake_targets/basic_simulator/ue
      cmake .
1041 1042
      make -j`nproc` lte-uesoftmodem
      make -j`nproc` coding params_libconfig tcp_bridge_oai
1043 1044 1045
      ln -sf libtcp_bridge_oai.so liboai_device.so
      cd ../..
    } > $dlog/basic_simulator_ue.txt 2>&1
1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056
    set -e
    if [ -s $OPENAIR_DIR/cmake_targets/basic_simulator/ue/lte-uesoftmodem -a \
         -s $OPENAIR_DIR/cmake_targets/basic_simulator/ue/libcoding.so -a \
         -s $OPENAIR_DIR/cmake_targets/basic_simulator/ue/libparams_libconfig.so -a \
         -s $OPENAIR_DIR/cmake_targets/basic_simulator/ue/libtcp_bridge_oai.so ] ; then
      echo_success "UE compiled"
      check_warnings "$dlog/basic_simulator_ue.txt"
    else
      echo_error "UE compilation failed"
      exit 1
    fi
1057 1058 1059 1060 1061

    echo_info "Generate UE SIM data"
    $OPENAIR_DIR/targets/bin/conf2uedata -c $OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf -o $OPENAIR_DIR/cmake_targets/basic_simulator/ue

  fi
1062 1063 1064
}

main "$@"