build_oai 35.9 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=0
44
XFORMS="True"
Xu Bo's avatar
Xu Bo committed
45
UE_EXPANSION="False"
46
UESIM_EXPANSION="False"
47
PRINT_STATS="False"
thomasl's avatar
thomasl committed
48
VCD_TIMING="False"
laurent's avatar
laurent committed
49 50
DEADLINE_SCHEDULER_FLAG_USER="False"
FORCE_DEADLINE_SCHEDULER_FLAG_USER=""
51
CPU_AFFINITY_FLAG_USER="False" #Only valid when lowlatecy flag is set to False
Cedric Roux's avatar
Cedric Roux committed
52
REL="Rel14"
53
HW="None"
54
TP="None"
Florian Kaltenberger's avatar
Florian Kaltenberger committed
55
NOS1=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="True"
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
72
UE_NAS_USE_TUN="False"
73
BASIC_SIMULATOR=0
74 75
trap handle_ctrl_c INT

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


function main() {
184

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

laurent's avatar
laurent committed
428
  echo_info "Flags for Deadline scheduler: $DEADLINE_SCHEDULER_FLAG_USER"
429
  echo_info "Flags for CPU Affinity: $CPU_AFFINITY_FLAG_USER"
Aikaterini's avatar
Aikaterini committed
430

431 432 433 434
  if [ -n "$UHD_IMAGES_DIR" ] && [ -z "$INSTALL_EXTERNAL" ]; then
    echo_error "UHD images download settings will not be applied without -I present"
    exit
  fi
435 436 437
  ############################################
  # setting and printing OAI envs, we should check here
  ############################################
Lionel Gauthier's avatar
Lionel Gauthier committed
438

439
  echo_info "2. Setting the OAI PATHS ..."
thomasl's avatar
thomasl committed
440

441
  cecho "OPENAIR_DIR    = $OPENAIR_DIR" $green
thomasl's avatar
thomasl committed
442

443 444 445 446 447 448 449 450 451 452
  # 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
453

454

455 456 457 458
  if [ "$CLEAN_ALL" = "1" ] ; then
    clean_all_files
    echo_info "Erased all previously producted files"
  fi
459

460 461 462 463 464 465
  dbin=$OPENAIR_DIR/targets/bin
  dlog=$OPENAIR_DIR/cmake_targets/log
  mkdir -p $dbin $dlog

  if [ "$INSTALL_EXTERNAL" = "1" ] ; then
    echo_info "Installing packages"
466
    check_install_oai_software
467 468 469
    if [ "$HW" == "OAI_USRP" ] ; then
      echo_info "installing packages for USRP support"
      check_install_usrp_uhd_driver
470
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
471
        install_usrp_uhd_driver $UHD_IMAGES_DIR
472
      fi
473 474
    fi 
    if [ "$HW" == "OAI_BLADERF" ] ; then
475
      echo_info "installing packages for BLADERF support"
476
      check_install_bladerf_driver
477 478 479
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
        flash_firmware_bladerf
      fi
480
    fi
481 482 483 484 485 486
    if [ "$HW" == "OAI_IRIS" ] ; then
      echo_info "installing packages for IRIS support"
      check_install_soapy
      #if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
      #  flash_firmware_iris
      #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 499
  
  
500 501 502
  echo_info "3. building the compilation directives ..."

  DIR=$OPENAIR_DIR/cmake_targets
503 504 505
    
    if [ "$T_TRACER" =  "False" ] ; then
        noLOGDirsuffix="_noLOG"
506
      fi
507 508 509
    if [ "$NOS1" =  "1" ] ; then
        noS1Dir="_noS1"
        bin_suffix="-nos1"
510 511
  else
      lte_build_dir=lte_build_oai
512
        bin_suffix=""
513
  fi
514 515

    lte_build_dir="lte${noS1Dir}_build_oai${noLOGDirsuffix}"
516 517 518
# configuration module libraries, one currently available, using libconfig 
  config_libconfig_shlib=params_libconfig
  
519 520
  # first generate the CMakefile in the right directory
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$HW" = "EXMIMO" ] ; then
521

522
    # LTE softmodem compilation
523 524 525 526
    [ "$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
527 528 529
#    if [ "$NOS1" = "1" ] ; then
#	cat  $DIR/$lte_build_dir/CMakeLists.template >>  $cmake_file
#    fi
530
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
531
    echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >>  $cmake_file
532
    echo "set ( XFORMS $XFORMS )"                  >>  $cmake_file
Xu Bo's avatar
Xu Bo committed
533
    echo "set ( UE_EXPANSION $UE_EXPANSION )"      >>  $cmake_file
534
#    echo "set ( PHY_TX_THREAD $UE_EXPANSION )"     >>  $cmake_file
535
    echo "set ( PRE_SCD_THREAD $UE_EXPANSION )"    >>  $cmake_file
536
    echo "set ( UESIM_EXPANSION $UESIM_EXPANSION )"      >>  $cmake_file
537 538 539
    echo "set ( RRC_ASN1_VERSION \"${REL}\")"      >>  $cmake_file
    echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )"     >>  $cmake_file
    echo "set ( RF_BOARD \"${HW}\")"               >>  $cmake_file
540 541
    echo "set ( TRANSP_PRO \"${TP}\")"             >>  $cmake_file
    echo "set(PACKAGE_NAME \"${lte_exec}\")"       >>  $cmake_file
laurent's avatar
laurent committed
542
    echo "set (DEADLINE_SCHEDULER \"${DEADLINE_SCHEDULER_FLAG_USER}\" )"    >>$cmake_file
543
    echo "set (CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )"      >>$cmake_file
544
    echo "set ( T_TRACER $T_TRACER )"              >>  $cmake_file
545
    echo "set (UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE)"        >>  $cmake_file
gabrielC's avatar
gabrielC committed
546 547
    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
548
    echo "set (DISABLE_LOG_X $DISABLE_LOG_X)"        >>  $cmake_file
549
    echo "set (USRP_REC_PLAY $USRP_REC_PLAY)"        >>  $cmake_file
gabrielC's avatar
gabrielC committed
550 551 552 553 554
    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
555
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
556
    cd  $DIR/$lte_build_dir/build
557
    eval $CMAKE_CMD
558 559
  fi

560 561
  if [ "$eNB" = "1" ] ; then
    lte_exec=lte-softmodem${bin_suffix}
562
    compilations \
563 564 565
	  $lte_build_dir $lte_exec \
	  $lte_exec $dbin/$lte_exec.$REL

566 567 568 569
# mandatory shared lib
    compilations \
	  $lte_build_dir $config_libconfig_shlib \
	  lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
570 571 572
    compilations \
          $lte_build_dir coding \
          libcoding.so $dbin/libcoding.so
573
	  
574 575 576 577 578 579 580 581 582
    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
583
  fi
584

585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607
  if [ "$UE" = 1  ] ; then
        lte_exec=lte-uesoftmodem${bin_suffix}
        compilations \
            $lte_build_dir $lte_exec \
            $lte_exec $dbin/$lte_exec.$REL
        
        # mandatory shared lib
        compilations \
            $lte_build_dir $config_libconfig_shlib \
            lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
        compilations \
            $lte_build_dir coding \
            libcoding.so $dbin/libcoding.so
        
        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
        else        
608 609 610
    # ue_ip driver compilation
    echo_info "Compiling UE specific part"
    compilations \
611
      $lte_build_dir ue_ip \
Lionel Gauthier's avatar
Lionel Gauthier committed
612
      CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
613

Lionel Gauthier's avatar
Lionel Gauthier committed
614 615
#    mkdir -p $DIR/at_commands/build
#    cd $DIR/at_commands/build
616
#    eval $CMAKE_CMD
Lionel Gauthier's avatar
Lionel Gauthier committed
617 618 619
#    compilations \
#      at_commands at_nas_ue \
#      at_nas_ue $dbin/at_nas_ue
620
    
Lionel Gauthier's avatar
Lionel Gauthier committed
621
    [ "$CLEAN" = "1" ] && rm -rf $DIR/nas_sim_tools/build
622 623
    mkdir -p $DIR/nas_sim_tools/build
    cd $DIR/nas_sim_tools/build
Lionel Gauthier's avatar
Lionel Gauthier committed
624
    
625
    eval $CMAKE_CMD
thomasl's avatar
thomasl committed
626
    compilations \
627 628
      nas_sim_tools usim \
      usim $dbin/usim
thomasl's avatar
thomasl committed
629
    compilations \
630 631
      nas_sim_tools nvram \
      nvram $dbin/nvram
thomasl's avatar
thomasl committed
632
    compilations \
633 634
        nas_sim_tools conf2uedata \
        conf2uedata $dbin/conf2uedata
635 636

    # generate USIM data
637 638
    if [ -f $dbin/conf2uedata ]; then
      install_nas_tools $conf_nvram_path $gen_nvram_path
639
      echo_info "Copying UE specific part to $DIR/$lte_build_dir/build"
640 641 642
      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
643 644 645
    else
      echo_warning "not generated UE NAS files: binaries not found"
    fi
646
  fi
647
    fi
thomasl's avatar
thomasl committed
648

649
  if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then
650 651 652 653 654
    cd $OPENAIR_DIR/cmake_targets/lte-simulators
    [ "$CLEAN" = "1" ] && rm -rf build
    mkdir -p build
    cd build
    rm -f *sim
655
    eval $CMAKE_CMD
656
  fi
657

658 659 660
  if [ "$SIMUS_PHY" = "1" ] ; then
    # lte unitary simulators compilation
    echo_info "Compiling unitary tests simulators"
661 662 663
    # TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim
    #simlist="dlsim_tm4 dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
    simlist="dlsim ulsim"
664 665 666 667 668
    for f in $simlist ; do
      compilations \
      lte-simulators $f \
	  $f $dbin/$f.$REL
    done
669 670 671
    compilations \
          lte-simulators coding \
          libcoding.so $dbin/libcoding.so
672 673 674
#    compilations \
#	  lte-simulators $config_libconfig_shlib \
#	  lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
675
  fi
thomasl's avatar
thomasl committed
676

Lionel Gauthier's avatar
Lionel Gauthier committed
677
  # Core simulators
678 679 680 681 682 683 684 685 686 687 688
  #############
  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
689

690 691
  # EXMIMO drivers & firmware loader
  ###############
692
  if [ "$HW" = "EXMIMO" ] ; then
Lionel Gauthier's avatar
Lionel Gauthier committed
693
    
694 695
    echo_info "Compiling Express MIMO 2 board drivers"
    compilations \
696
        $lte_build_dir openair_rf \
thomasl's avatar
thomasl committed
697
        CMakeFiles/openair_rf/openair_rf.ko $dbin/openair_rf.ko
698
    compilations \
699
	  $lte_build_dir updatefw \
Lionel Gauthier's avatar
Lionel Gauthier committed
700
	  updatefw $dbin/updatefw
701
    echo_info "Compiling oarf tools. The logfile for compilation is here: $dlog/oarf.txt"
702 703 704 705 706 707 708
    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
709
    cp $OPENAIR_DIR/cmake_targets/tools/init_exmimo2 $dbin
710
  fi
thomasl's avatar
thomasl committed
711

oai's avatar
oai committed
712
  # Telnet server compilation
713
  #####################
oai's avatar
oai committed
714
  if [ "$BUILD_TELNETSRV" = "1" ] ; then
715
              compilations \
716
            $lte_build_dir telnetsrv \
717
                  libtelnetsrv.so $dbin/libtelnetsrv.so
Aikaterini's avatar
Aikaterini committed
718

719
  fi 
720
    # msc library compilation
721 722 723
  #####################
  if [ "$MSC_GEN" = "1" ] ; then
              compilations \
724
            $lte_build_dir msc \
725 726
                  libmsc.so $dbin/libmsc.so

oai's avatar
oai committed
727
  fi  
728 729
  # build RF device and transport protocol libraries
  #####################################
730
  if [ "$eNB" = "1" -o "$UE" = "1" ] ; then
731

732
      # build RF device libraries
733
      if [ "$HW" != "None" ] ; then
734
	  rm -f liboai_device.so
735
	  rm -f $dbin/liboai_device.so
736

737
	  # link liboai_device.so with the selected RF device library
738
	  if [ "$HW" == "EXMIMO" ] ; then
739
	      compilations \
740
                    $lte_build_dir oai_exmimodevif \
741
		  liboai_exmimodevif.so $dbin/liboai_exmimodevif.so.$REL
742 743 744

	      ln -sf liboai_exmimodevif.so liboai_device.so
	      ln -sf $dbin/liboai_exmimodevif.so.$REL $dbin/liboai_device.so
745 746
	      echo_info "liboai_device.so is linked to EXMIMO device library"       
	  elif [ "$HW" == "OAI_USRP" ] ; then
747
              compilations \
748
                    $lte_build_dir oai_usrpdevif \
749
                  liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
750

751 752
	      ln -sf liboai_usrpdevif.so liboai_device.so
	      ln -sf $dbin/liboai_usrpdevif.so.$REL $dbin/liboai_device.so
753 754
	      echo_info "liboai_device.so is linked to USRP device library"        
	  elif [ "$HW" == "OAI_BLADERF" ] ; then
755 756
	      if [ -f "/usr/include/libbladeRF.h" ] ; then
		  compilations \
757
                        $lte_build_dir oai_bladerfdevif \
758 759 760
		      liboai_bladerfdevif.so $dbin/liboai_bladerfdevif.so.$REL
	      fi

761 762
	      ln -sf liboai_bladerfdevif.so liboai_device.so
	      ln -sf $dbin/liboai_bladerfdevif.so.$REL $dbin/liboai_device.so
763
	      echo_info "liboai_device.so is linked to BLADERF device library"	 
764
	  elif [ "$HW" == "OAI_LMSSDR" ] ; then
765
                #       if [ -f "/usr/include/libbladeRF.h" ] ; then
766
		  compilations \
767
                    $lte_build_dir oai_lmssdrdevif \
768
		      liboai_lmssdrdevif.so $dbin/liboai_lmssdrdevif.so.$REL
769
                #       fi
770

771 772
	      ln -sf liboai_lmssdrdevif.so liboai_device.so
	      ln -sf $dbin/liboai_lmssdrdevif.so.$REL $dbin/liboai_device.so
773
	      echo_info "liboai_device.so is linked to LMSSDR device library"	 
774 775
          elif [ "$HW" == "OAI_IRIS" ] ; then
                  compilations \
776
                    $lte_build_dir oai_irisdevif \
777 778 779 780 781
                      liboai_irisdevif.so $dbin/liboai_irisdevif.so.$REL

              ln -s liboai_irisdevif.so liboai_device.so
              ln -s $dbin/liboai_irisdevif.so.$REL $dbin/liboai_device.so
              echo_info "liboai_device.so is linked to IRIS device library"
782 783 784 785 786
	  else 
	      echo_info "liboai_device.so is not linked to any device library"	    
	  fi
      fi
      
787 788 789 790 791 792 793 794 795 796 797
        # build simulators devices
        echo_info "Compiling rfsimulator"
        compilations \
            $lte_build_dir rfsimulator \
            librfsimulator.so $dbin/librfsimulator.so.$REL
        echo_info "Compiling basicsimulator"
        compilations \
            $lte_build_dir tcp_bridge_oai \
            libtcp_bridge_oai.so $dbin/libtcp_bridge_oai.so.$REL
        # build transport protocol libraries (currently only ETHERNET is available)

798
	  rm -f liboai_transpro.so
799
	  rm -f $dbin/liboai_transpro.so
800
	      compilations \
801
            $lte_build_dir oai_eth_transpro \
802
		  liboai_eth_transpro.so $dbin/liboai_eth_transpro.so.$REL
803 804
	      ln -sf liboai_eth_transpro.so liboai_transpro.so
	      ln -sf $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
805
        echo_info "liboai_transpro.so is linked to ETHERNET transport"
806 807
      fi

808 809 810 811 812 813
    if [ "$RFSIMULATOR" == "true" -o "$HW" == "OAI_SIMU" ] ; then
        echo_info "Compiling rfsimulator"
        compilations \
            $lte_build_dir rfsimulator \
            librfsimulator.so $dbin/librfsimulator.so.$REL
    fi
814

815 816 817 818 819 820 821 822 823 824 825
  # 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
826
    eval $CMAKE_CMD
827 828
    make doc
    ) >& $doxygen_log
829 830
  fi

Lionel Gauthier's avatar
Lionel Gauthier committed
831 832 833
  # Auto-tests
  #####################
  if [ "$OAI_TEST" = "1" ]; then
thomasl's avatar
thomasl committed
834
    echo_info "10. Running OAI pre commit tests (pre-ci) ..."
835 836 837 838
    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 "
839 840
    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 "
841
    echo_info "You can hit CTRL-C any time to terminate the autotests..."
842 843 844
    echo "Current User Name: $USER"
    read -s -p "Enter Password: " mypassword
    echo -e "\n"
845 846
    rm -fr $OPENAIR_DIR/cmake_targets/autotests/log
    mkdir -p $OPENAIR_DIR/cmake_targets/autotests/log
847
    if [ "$RUN_GROUP" -eq "1" ]; then
848
        $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -g "$TEST_CASE_GROUP" -p $mypassword >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log &
849
    else
850
        $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -p $mypassword >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log &
851
    fi
852
    wait
Lionel Gauthier's avatar
Lionel Gauthier committed
853
  else
thomasl's avatar
thomasl committed
854
    echo_info "10. Bypassing the Tests ..."
Lionel Gauthier's avatar
Lionel Gauthier committed
855
  fi
856 857 858 859 860 861

  # basic simulator
  #####################
  if [ "$BASIC_SIMULATOR" = "1" ]; then
    echo_info "Build basic simulator"
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/basic_simulator
862
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
863 864 865
    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
866
    mkdir -p $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
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

    # 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"
893
    set +e
894 895 896
    {
      cd $OPENAIR_DIR/cmake_targets/basic_simulator/enb
      cmake .
897 898
      make -j`nproc` lte-softmodem
      make -j`nproc` coding params_libconfig tcp_bridge_oai
899 900 901
      ln -sf libtcp_bridge_oai.so liboai_device.so
      cd ../..
    } > $dlog/basic_simulator_enb.txt 2>&1
902 903 904 905 906 907 908 909 910 911 912
    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
913 914 915 916

    # ue

    echo_info "Compile conf2uedata"
917 918
    cd $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
    eval $CMAKE_CMD
919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934
    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
935
    echo "set ( T_TRACER \"True\" )"                  >>  $cmake_file
936 937 938 939 940 941 942 943
    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
frtabu's avatar
frtabu committed
944
#    echo "set (UE_NAS_USE_TUN \"True\" )"             >>  $cmake_file
945 946 947 948
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../../CMakeLists.txt)' >> $cmake_file

    echo_info "Build UE"
    echo_info "logs are in $dlog/basic_simulator_ue.txt"
949
    set +e
950 951 952
    {
      cd $OPENAIR_DIR/cmake_targets/basic_simulator/ue
      cmake .
953 954
      make -j`nproc` lte-uesoftmodem
      make -j`nproc` coding params_libconfig tcp_bridge_oai
955 956 957
      ln -sf libtcp_bridge_oai.so liboai_device.so
      cd ../..
    } > $dlog/basic_simulator_ue.txt 2>&1
958 959 960 961 962 963 964 965 966 967 968
    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
969 970 971 972 973

    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
974 975 976
}

main "$@"