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

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

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

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

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

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

43
MSC_GEN=0
44
XFORMS="True"
Xu Bo's avatar
Xu Bo committed
45
UE_EXPANSION="False"
46
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
gauthier's avatar
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"
Gabriel's avatar
Gabriel 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"
Cedric Roux's avatar
Cedric Roux committed
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
79
80
81
82
83
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
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, ...
gauthier's avatar
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
-r | --3gpp-release
Cedric Roux's avatar
Cedric Roux committed
107
   default is Rel14,
108
   Rel8 limits the implementation to 3GPP Release 8 version
Cedric Roux's avatar
Cedric Roux committed
109
   Rel10 limits the implementation to 3GPP Release 10 version
110
-w | --hardware
Clayton Shepard's avatar
Clayton Shepard committed
111
   EXMIMO, USRP, BLADERF, ETHERNET, LMSSDR, IRIS, None (Default)
112
   Adds this RF board support (in external packages installation and in compilation)
113
114
115
-t | --transport protocol
   ETHERNET , None
   Adds this trasport protocol support in compilation
116
117
118
119
120
121
--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
122
123
--run-group 
   runs only specified test cases specified here. This flag is only valid with -s
124
125
126
-V | --vcd
   Adds a debgging facility to the binary files: GUI with major internal synchronization events
-x | --xforms
127
   Adds a software oscilloscope feature to the produced binaries. 
128
--install-system-files
gauthier's avatar
gauthier committed
129
   Install OpenArInterface required files in Linux system
130
   (will ask root password)
131
--noS1 
132
   Compiles lte-softmodem without S1 interface, using direct link to IP instead
133
134
--verbose-compile
   Shows detailed compilation instructions in makefile
135
136
--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
137
138
--build-doxygen
   Builds doxygen based documentation.
139
--disable-deadline
140
141
   Disables deadline scheduler of Linux kernel (>=3.14.x).
--enable-deadline
laurent's avatar
laurent committed
142
   Enable deadline scheduler of Linux kernel (>=3.14.x). 
Rohit Gupta's avatar
Rohit Gupta committed
143
--disable-cpu-affinity
144
   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
145
146
--disable-T-Tracer
   Disables the T tracer.
Rohit Gupta's avatar
Rohit Gupta committed
147
148
--disable-hardware-dependency
   Disable HW dependency during installation
149
150
--ue-autotest-trace
    Enable specific traces for UE autotest framework
Gabriel's avatar
Gabriel committed
151
152
153
154
--ue-trace
    Enable traces for UE debugging
--ue-timing
    Enable traces for timing
Cedric Roux's avatar
Cedric Roux committed
155
156
--disable-log
   Disable all LOG_* macros
157
158
--build-eclipse
   Build eclipse project files. Paths are auto corrected by fixprj.sh
159
160
161
162
--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)
163
164
--usrp-recplay
   Build for I/Q record-playback modes
165
166
--ue-nas-use-tun
   Use TUN devices for the UEs instead of ue_ip.ko
Cedric Roux's avatar
Cedric Roux committed
167
168
169
--basic-simulator
   Generates a basic [1 UE + 1 eNB + no channel] simulator.
   See targets/ARCH/tcp_bridge/README.tcp_bridge_oai for documentation.
170
Usage (first build):
171
 NI/ETTUS B201  + COTS UE : ./build_oai -I  --eNB -x --install-system-files -w USRP
172
173
Usage (Regular):
 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;;
222
223
224
225
       --musim)
            UESIM_EXPANSION="True"
            echo_info "Will compile with UESIM_EXPANSION"
            shift;;
Cedric Roux's avatar
Cedric Roux committed
226
       --UE-conf-nvram)
227
            conf_nvram_path=$(readlink -f $2)
Cedric Roux's avatar
Cedric Roux committed
228
229
            shift 2;;
        --UE-gen-nvram)
230
231
            gen_nvram_path=$(readlink -f $2)
            shift 2;;
thomasl's avatar
thomasl committed
232
       -r | --3gpp-release)
gauthier's avatar
gauthier committed
233
            REL=$2
234
            echo_info "Setting release to: $REL"
thomasl's avatar
thomasl committed
235
236
237
            shift 2;;
       -w | --hardware)
            HW="$2" #"${i#*=}"
238
            # Use OAI_USRP  as the key word USRP is used inside UHD driver           
Clayton Shepard's avatar
Clayton Shepard committed
239
            if [ "$HW" != "BLADERF" -a  "$HW" != "USRP" -a "$HW" != "LMSSDR" -a  "$HW" != "None" -a  "$HW" != "EXMIMO" -a  "$HW" != "IRIS"  ] ; then 
240
241
242
243
244
245
246
247
		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
248
249
250
		if [ "$HW" == "LMSSDR" ] ; then 
		    HW="OAI_LMSSDR"
		fi 
Clayton Shepard's avatar
Clayton Shepard committed
251
252
253
                if [ "$HW" == "IRIS" ] ; then
                    HW="OAI_IRIS"
                fi
254
255
		echo_info "Setting hardware to: $HW"
	    fi
thomasl's avatar
thomasl committed
256
            shift 2;;
257
258
	-t | --transport_protocol)
            TP="$2" #"${i#*=}"
259
260
261
262
263
	    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
264
            shift 2;;
265
       --phy_simulators)
thomasl's avatar
thomasl committed
266
            SIMUS_PHY=1
267
268
269
270
271
272
            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
273
274
       -s | --check)
            OAI_TEST=1
275
            echo_info "Will run auto-tests"
thomasl's avatar
thomasl committed
276
            shift;;
277
278
279
280
281
       --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
282
       -V | --vcd)
283
            echo_info "Setting gtk-wave output"
thomasl's avatar
thomasl committed
284
285
            VCD_TIMING=1
            EXE_ARGUMENTS="$EXE_ARGUMENTS -V"
thomasl's avatar
thomasl committed
286
            shift;;
thomasl's avatar
thomasl committed
287
       -x | --xforms)
288
            XFORMS="True"
thomasl's avatar
thomasl committed
289
            EXE_ARGUMENTS="$EXE_ARGUMENTS -d"
290
            echo_info "Will generate the software oscilloscope features"
thomasl's avatar
thomasl committed
291
            shift;;
292
293
294
295
       --install-system-files)
            INSTALL_SYSTEM_FILES=1
            echo_info "Will copy OpenAirInterface files in Linux directories"
            shift;;
296
297
298
299
       --noS1)
	    NOS1=1
            echo_info "Will compile without S1 interface"
            shift;;
300
301
302
303
       --verbose-compile)
	    VERBOSE_COMPILE=1
            echo_info "Will compile with verbose instructions"
            shift;;
304
305
       --cflags_processor)
            CFLAGS_PROCESSOR_USER=$2
306
            echo_info "Setting CPU FLAGS from USER to: $CFLAGS_PROCESSOR_USER"
307
            shift 2;;
308
309
310
311
       --build-doxygen)
	    BUILD_DOXYGEN=1
            echo_info "Will build doxygen support"
            shift;;     
312
       --disable-deadline)
laurent's avatar
laurent committed
313
            FORCE_DEADLINE_SCHEDULER_FLAG_USER="False"
314
315
            echo_info "Disabling the usage of deadline scheduler"
            shift 1;;
316
       --enable-deadline)
laurent's avatar
laurent committed
317
            FORCE_DEADLINE_SCHEDULER_FLAG_USER="True"
318
319
            echo_info "Enabling the usage of deadline scheduler"
            shift 1;;
Rohit Gupta's avatar
Rohit Gupta committed
320
321
322
323
       --disable-cpu-affinity)
            CPU_AFFINITY_FLAG_USER="False"
            echo_info "Disabling CPU Affinity (only valid when not using deadline scheduler)"
            shift 1;;
324
325
326
       --disable-T-Tracer)
            T_TRACER="False"
            echo_info "Disabling the T tracer"
327
            shift 1;;
328
329
330
331
       --disable-hardware-dependency)
            echo_info "Disabling hardware dependency for compiling software"
            DISABLE_HARDWARE_DEPENDENCY="True"
            shift 1;;
332
333
334
335
        --ue-autotest-trace)
            UE_AUTOTEST_TRACE="True"
            echo_info "Enabling autotest specific trace for UE"
            shift 1;;
Gabriel's avatar
Gabriel committed
336
337
338
339
340
341
342
343
        --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
344
345
346
347
        --disable-log)
            DISABLE_LOG_X="True"
            echo_info "Disabling all LOG_* traces"
            shift 1;;
348
349
350
351
        --uhd-images-dir)
            UHD_IMAGES_DIR=$2
            echo_info "Downloading UHD images in the indicated location"
            shift 2;;
352
353
354
355
       --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
356
357
358
359
            shift 1;;
       --build-telnetsrv)
            BUILD_TELNETSRV=1
            echo_info "Build embedded telnet server"
360
361
362
363
            shift ;;
       --build-msc)
            MSC_GEN=1
            echo_info "Build MSC tracing utility"
oai's avatar
oai committed
364
            shift ;;			
365
366
367
368
        --usrp-recplay)
            USRP_REC_PLAY="True"
            echo_info "Enabling USRP record playback mode"
            shift 1;;
369
370
371
372
        --ue-nas-use-tun)
            UE_NAS_USE_TUN="True"
            echo_info "Enabling UE NAS TUN device usage instead of ue_ip.ko"
            shift 1;;
Cedric Roux's avatar
Cedric Roux committed
373
374
375
376
        --basic-simulator)
            BASIC_SIMULATOR=1
            echo_info "Compiling the basic simulator"
            shift 1;;
thomasl's avatar
thomasl committed
377
378
379
        -h | --help)
            print_help
            exit 1;;
gauthier's avatar
gauthier committed
380
	*)
381
382
	    print_help
            echo_fatal "Unknown option $1"
thomasl's avatar
thomasl committed
383
            break;;
thomasl's avatar
thomasl committed
384
   esac
385
  done
386
  
387
388
  CMAKE_CMD="$CMAKE_CMD .."
  echo_info "CMAKE_CMD=$CMAKE_CMD"
389
390
391
392
393
  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  
394
  #########################################################
395
  # check validity of HW and TP parameters for eNB
396
  #########################################################
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
  
knopp's avatar
knopp committed
411
  echo_info "RF HW set to $HW" 
412
413
414
415
  #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
416
  if [ "$FORCE_DEADLINE_SCHEDULER_FLAG_USER" = "" ]; then
417
     if [ "$HW" = "EXMIMO" ] ; then 
418
        DEADLINE_SCHEDULER_FLAG_USER="True"
419
     elif [ "$HW" = "ETHERNET" ] ; then 
420
        DEADLINE_SCHEDULER_FLAG_USER="False"
421
     elif [ "$HW" = "OAI_USRP" ] ; then 
laurent's avatar
laurent committed
422
        DEADLINE_SCHEDULER_FLAG_USER="False"
423
     elif [ "$HW" = "OAI_BLADERF" ] ; then 
laurent's avatar
laurent committed
424
        DEADLINE_SCHEDULER_FLAG_USER="False"
Clayton Shepard's avatar
Clayton Shepard committed
425
426
427
     elif [ "$HW" = "OAI_LMSSDR" ] ; then     
        DEADLINE_SCHEDULER_FLAG_USER="False" 
     elif [ "$HW" = "OAI_IRIS" ] ; then
laurent's avatar
laurent committed
428
        DEADLINE_SCHEDULER_FLAG_USER="False"
429
     elif [ "$HW" = "None" ] ; then 
laurent's avatar
laurent committed
430
        DEADLINE_SCHEDULER_FLAG_USER="False"
431
432
433
434
435
     else 
        echo_error "Unknown HW type $HW. Exiting now..."
        exit 
     fi
  else
laurent's avatar
laurent committed
436
     DEADLINE_SCHEDULER_FLAG_USER=$FORCE_DEADLINE_SCHEDULER_FLAG_USER
437
438
  fi

Rohit Gupta's avatar
Rohit Gupta committed
439
  #Disable CPU Affinity for deadline scheduler
laurent's avatar
laurent committed
440
  if [ "$DEADLINE_SCHEDULER_FLAG_USER" = "True" ] ; then 
Rohit Gupta's avatar
Rohit Gupta committed
441
442
     CPU_AFFINITY_FLAG_USER="False"
  fi
443

laurent's avatar
laurent committed
444
  echo_info "Flags for Deadline scheduler: $DEADLINE_SCHEDULER_FLAG_USER"
Rohit Gupta's avatar
Rohit Gupta committed
445
  echo_info "Flags for CPU Affinity: $CPU_AFFINITY_FLAG_USER"
446

447
448
449
450
  if [ -n "$UHD_IMAGES_DIR" ] && [ -z "$INSTALL_EXTERNAL" ]; then
    echo_error "UHD images download settings will not be applied without -I present"
    exit
  fi
451
452
453
  ############################################
  # setting and printing OAI envs, we should check here
  ############################################
gauthier's avatar
gauthier committed
454

455
  echo_info "2. Setting the OAI PATHS ..."
thomasl's avatar
thomasl committed
456

457
  cecho "OPENAIR_DIR    = $OPENAIR_DIR" $green
thomasl's avatar
thomasl committed
458

459
460
461
462
463
464
465
466
467
468
  # 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
469

470

471
472
473
474
  if [ "$CLEAN_ALL" = "1" ] ; then
    clean_all_files
    echo_info "Erased all previously producted files"
  fi
475

476
477
478
479
480
481
482
  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
483
484
485
    if [ "$HW" == "OAI_USRP" ] ; then
      echo_info "installing packages for USRP support"
      check_install_usrp_uhd_driver
486
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
487
        install_usrp_uhd_driver $UHD_IMAGES_DIR
488
      fi
489
490
    fi 
    if [ "$HW" == "OAI_BLADERF" ] ; then
491
      echo_info "installing packages for BLADERF support"
492
      check_install_bladerf_driver
493
494
495
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
        flash_firmware_bladerf
      fi
496
    fi
Clayton Shepard's avatar
Clayton Shepard committed
497
498
499
500
501
502
503
    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
    fi
504
505
506
    echo_info "installing protobuf/protobuf-c for flexran agent support"
    install_protobuf_from_source
    install_protobuf_c_from_source
507
508
509
510
511
512
513
  fi

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

514
515
  
  
516
517
518
  echo_info "3. building the compilation directives ..."

  DIR=$OPENAIR_DIR/cmake_targets
519
520
  if [ "$NOS1" =  "1" ] ; then
      lte_build_dir=lte_noS1_build_oai
521
522
523
524
525
526
      if [ "$eNB" = "1" ] ; then
         lte_exec=lte-softmodem-nos1
      fi
      if [ "$UE" = "1" ] ; then
         lte_exec=lte-uesoftmodem-nos1
      fi
527
528
  else
      lte_build_dir=lte_build_oai
529
530
531
532
533
534
      if [ "$eNB" = "1" ] ; then
         lte_exec=lte-softmodem
      fi
      if [ "$UE" = "1" ] ; then
         lte_exec=lte-uesoftmodem
      fi
535
  fi
536
537
538
  if [ "$T_TRACER" =  "False" ] ; then
      lte_build_dir=${lte_build_dir}_noLOG
  fi
539
540
541
# configuration module libraries, one currently available, using libconfig 
  config_libconfig_shlib=params_libconfig
  
542
543
  # first generate the CMakefile in the right directory
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$HW" = "EXMIMO" ] ; then
544

545
    # LTE softmodem compilation
546
547
548
549
    [ "$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
550
551
552
#    if [ "$NOS1" = "1" ] ; then
#	cat  $DIR/$lte_build_dir/CMakeLists.template >>  $cmake_file
#    fi
553
    echo "set ( CMAKE_BUILD_TYPE $CMAKE_BUILD_TYPE )" >> $cmake_file
554
    echo "set ( CFLAGS_PROCESSOR_USER \"$CFLAGS_PROCESSOR_USER\" )" >>  $cmake_file
555
    echo "set ( XFORMS $XFORMS )"                  >>  $cmake_file
Xu Bo's avatar
Xu Bo committed
556
    echo "set ( UE_EXPANSION $UE_EXPANSION )"      >>  $cmake_file
557
#    echo "set ( PHY_TX_THREAD $UE_EXPANSION )"     >>  $cmake_file
558
    echo "set ( PRE_SCD_THREAD $UE_EXPANSION )"    >>  $cmake_file
559
    echo "set ( UESIM_EXPANSION $UESIM_EXPANSION )"      >>  $cmake_file
560
561
562
    echo "set ( RRC_ASN1_VERSION \"${REL}\")"      >>  $cmake_file
    echo "set ( ENABLE_VCD_FIFO $VCD_TIMING )"     >>  $cmake_file
    echo "set ( RF_BOARD \"${HW}\")"               >>  $cmake_file
563
564
    echo "set ( TRANSP_PRO \"${TP}\")"             >>  $cmake_file
    echo "set(PACKAGE_NAME \"${lte_exec}\")"       >>  $cmake_file
laurent's avatar
laurent committed
565
    echo "set (DEADLINE_SCHEDULER \"${DEADLINE_SCHEDULER_FLAG_USER}\" )"    >>$cmake_file
Rohit Gupta's avatar
Rohit Gupta committed
566
    echo "set (CPU_AFFINITY \"${CPU_AFFINITY_FLAG_USER}\" )"      >>$cmake_file
567
    echo "set ( T_TRACER $T_TRACER )"              >>  $cmake_file
568
    echo "set (UE_AUTOTEST_TRACE $UE_AUTOTEST_TRACE)"        >>  $cmake_file
Gabriel's avatar
Gabriel committed
569
570
    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
571
    echo "set (DISABLE_LOG_X $DISABLE_LOG_X)"        >>  $cmake_file
572
    echo "set (USRP_REC_PLAY $USRP_REC_PLAY)"        >>  $cmake_file
Gabriel's avatar
Gabriel committed
573
574
575
576
577
    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
578
    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
579
    cd  $DIR/$lte_build_dir/build
580
    eval $CMAKE_CMD
581
582
  fi

Florian Kaltenberger's avatar
Florian Kaltenberger committed
583
  if [ "$eNB" = "1" -o "$UE" = "1" ] ; then
584
    echo_info "Compiling $lte_exec"
585
    compilations \
586
587
588
	  $lte_build_dir $lte_exec \
	  $lte_exec $dbin/$lte_exec.$REL

589
590
591
592
# mandatory shared lib
    compilations \
	  $lte_build_dir $config_libconfig_shlib \
	  lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
593
594
595
    compilations \
          $lte_build_dir coding \
          libcoding.so $dbin/libcoding.so
596
	  
597
598
599
600
601
602
603
604
605
    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
606
  fi
thomasl's avatar
thomasl committed
607

Florian Kaltenberger's avatar
Florian Kaltenberger committed
608
  if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
609
610
611
    # ue_ip driver compilation
    echo_info "Compiling UE specific part"
    compilations \
612
      $lte_build_dir ue_ip \
gauthier's avatar
gauthier committed
613
      CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
614

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

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

gauthier's avatar
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
gauthier's avatar
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 \
gauthier's avatar
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

712
713


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

722
723
724
725
726
727
728
729
730
  fi 
  # Telnet server compilation
  #####################
  if [ "$MSC_GEN" = "1" ] ; then
              build_dir=$lte_build_dir
              compilations \
                  $build_dir msc \
                  libmsc.so $dbin/libmsc.so

oai's avatar
oai committed
731
  fi  
732
733
  # build RF device and transport protocol libraries
  #####################################
734
  if [ "$eNB" = "1" -o "$UE" = "1" ] ; then
735

736
      build_dir=$lte_build_dir	  
737

738
      # build RF device libraries
739
      if [ "$HW" != "None" ] ; then
740
	  rm -f liboai_device.so
741
	  rm -f $dbin/liboai_device.so
742

743
	  # link liboai_device.so with the selected RF device library
744
	  if [ "$HW" == "EXMIMO" ] ; then
745
746
747
	      compilations \
		  $build_dir oai_exmimodevif \
		  liboai_exmimodevif.so $dbin/liboai_exmimodevif.so.$REL
748
749
750

	      ln -sf liboai_exmimodevif.so liboai_device.so
	      ln -sf $dbin/liboai_exmimodevif.so.$REL $dbin/liboai_device.so
751
752
	      echo_info "liboai_device.so is linked to EXMIMO device library"       
	  elif [ "$HW" == "OAI_USRP" ] ; then
753
754
755
              compilations \
                  $build_dir oai_usrpdevif \
                  liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
756

757
758
	      ln -sf liboai_usrpdevif.so liboai_device.so
	      ln -sf $dbin/liboai_usrpdevif.so.$REL $dbin/liboai_device.so
759
760
	      echo_info "liboai_device.so is linked to USRP device library"        
	  elif [ "$HW" == "OAI_BLADERF" ] ; then
761
762
763
764
765
766
	      if [ -f "/usr/include/libbladeRF.h" ] ; then
		  compilations \
		      $build_dir oai_bladerfdevif \
		      liboai_bladerfdevif.so $dbin/liboai_bladerfdevif.so.$REL
	      fi

767
768
	      ln -sf liboai_bladerfdevif.so liboai_device.so
	      ln -sf $dbin/liboai_bladerfdevif.so.$REL $dbin/liboai_device.so
769
	      echo_info "liboai_device.so is linked to BLADERF device library"	 
770
771
772
773
774
775
776
	  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

777
778
	      ln -sf liboai_lmssdrdevif.so liboai_device.so
	      ln -sf $dbin/liboai_lmssdrdevif.so.$REL $dbin/liboai_device.so
779
	      echo_info "liboai_device.so is linked to LMSSDR device library"	 
Clayton Shepard's avatar
Clayton Shepard committed
780
781
782
783
784
785
786
787
          elif [ "$HW" == "OAI_IRIS" ] ; then
                  compilations \
                      $build_dir oai_irisdevif \
                      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"
788
789
790
791
792
793
	  else 
	      echo_info "liboai_device.so is not linked to any device library"	    
	  fi
      fi
      
      # build trasport protocol libraries (currently only ETHERNET is available)
794
      if [ "$TP" != "None" ] ; then
795
	  rm -f liboai_transpro.so
796
797
	  rm -f $dbin/liboai_transpro.so

798
	  if [ "$TP" == "ETHERNET" ] ; then
799
800
801
	      compilations \
		  $build_dir oai_eth_transpro \
		  liboai_eth_transpro.so $dbin/liboai_eth_transpro.so.$REL
802
803
	      ln -sf liboai_eth_transpro.so liboai_transpro.so
	      ln -sf $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
804
805
806
807
808
	      echo_info "liboai_transpro.so is linked with ETHERNET library"	 
	  fi      
      fi
fi

809

810
811
812
813
814
815
816
817
818
819
820
  # 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
821
    eval $CMAKE_CMD
822
823
    make doc
    ) >& $doxygen_log
824
825
  fi

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

  # basic simulator
  #####################
  if [ "$BASIC_SIMULATOR" = "1" ]; then
    echo_info "Build basic simulator"
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/basic_simulator
857
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
Cedric Roux's avatar
Cedric Roux committed
858
859
860
    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
861
    mkdir -p $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
Cedric Roux's avatar
Cedric Roux committed
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887

    # 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"
888
    set +e
Cedric Roux's avatar
Cedric Roux committed
889
890
891
    {
      cd $OPENAIR_DIR/cmake_targets/basic_simulator/enb
      cmake .
892
893
      make -j`nproc` lte-softmodem
      make -j`nproc` coding params_libconfig tcp_bridge_oai
Cedric Roux's avatar
Cedric Roux committed
894
895
896
      ln -sf libtcp_bridge_oai.so liboai_device.so
      cd ../..
    } > $dlog/basic_simulator_enb.txt 2>&1
897
898
899
900
901
902
903
904
905
906
907
    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
Cedric Roux's avatar
Cedric Roux committed
908
909
910
911

    # ue

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

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

    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
969
970
971
}

main "$@"