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

78
function print_help() {
Cedric Roux's avatar
Cedric Roux committed
79
  echo_info "
80
This program installs OpenAirInterface Software
Thomas Laurent's avatar
Thomas Laurent committed
81
You should have ubuntu 16.xx or 18.04 updated
82
83
Options
-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
Guy De Souza's avatar
Guy De Souza committed
99
100
101
102
103
  Makes the LTE softmodem
--gNB
  Makes the NR softmodem
--nrUE
  Makes the NR UE softmodem
104
--UE
105
   Makes the UE specific parts (ue_ip, usim, nvram) from the given configuration file
Cedric Roux's avatar
Cedric Roux committed
106
107
108
109
--UE-conf-nvram [configuration file]
   Specify conf_nvram_path (default \"$conf_nvram_path\")
--UE-gen-nvram [output path]
   Specify gen_nvram_path (default \"$gen_nvram_path\")
Wang's avatar
Wang committed
110
111
--HWLAT
    Makes test program for haw latency tests
112
-r | --3gpp-release
Cedric Roux's avatar
Cedric Roux committed
113
   default is Rel14,
114
   Rel8 limits the implementation to 3GPP Release 8 version
Cedric Roux's avatar
Cedric Roux committed
115
   Rel10 limits the implementation to 3GPP Release 10 version
116
-w | --hardware
Thomas Laurent's avatar
Thomas Laurent committed
117
   EXMIMO, USRP, BLADERF, ETHERNET, LMSSDR, ADRV9371_ZC706, SIMU, None (Default)
118
   Adds this RF board support (in external packages installation and in compilation)
119
120
121
-t | --transport protocol
   ETHERNET , None
   Adds this trasport protocol support in compilation
122
123
124
125
126
127
--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
128
129
--run-group 
   runs only specified test cases specified here. This flag is only valid with -s
130
131
132
-V | --vcd
   Adds a debgging facility to the binary files: GUI with major internal synchronization events
-x | --xforms
133
   Adds a software oscilloscope feature to the produced binaries. 
134
--install-system-files
gauthier's avatar
gauthier committed
135
   Install OpenArInterface required files in Linux system
136
   (will ask root password)
137
--noS1 
138
   Compiles lte-softmodem without S1 interface, using direct link to IP instead
139
140
--verbose-compile
   Shows detailed compilation instructions in makefile
141
142
--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
143
144
--build-doxygen
   Builds doxygen based documentation.
145
--disable-deadline
146
147
   Disables deadline scheduler of Linux kernel (>=3.14.x).
--enable-deadline
laurent's avatar
laurent committed
148
   Enable deadline scheduler of Linux kernel (>=3.14.x). 
Rohit Gupta's avatar
Rohit Gupta committed
149
--disable-cpu-affinity
150
   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
151
152
--disable-T-Tracer
   Disables the T tracer.
Rohit Gupta's avatar
Rohit Gupta committed
153
154
--disable-hardware-dependency
   Disable HW dependency during installation
155
156
--ue-autotest-trace
    Enable specific traces for UE autotest framework
Gabriel's avatar
Gabriel committed
157
158
159
160
--ue-trace
    Enable traces for UE debugging
--ue-timing
    Enable traces for timing
Cedric Roux's avatar
Cedric Roux committed
161
162
--disable-log
   Disable all LOG_* macros
163
164
--build-eclipse
   Build eclipse project files. Paths are auto corrected by fixprj.sh
165
166
167
168
--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)
169
170
--usrp-recplay
   Build for I/Q record-playback modes
171
172
--ue-nas-use-tun
   Use TUN devices for the UEs instead of ue_ip.ko
Cedric Roux's avatar
Cedric Roux committed
173
174
175
--basic-simulator
   Generates a basic [1 UE + 1 eNB + no channel] simulator.
   See targets/ARCH/tcp_bridge/README.tcp_bridge_oai for documentation.
Thomas Laurent's avatar
Thomas Laurent committed
176
177
178
--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
179
Usage (first build):
180
 NI/ETTUS B201  + COTS UE : ./build_oai -I  --eNB -x --install-system-files -w USRP
181
182
Usage (Regular):
 Eurecom EXMIMO + OAI ENB : ./build_oai --eNB -x 
Cedric Roux's avatar
Cedric Roux committed
183
 NI/ETTUS B201  + OAI ENB : ./build_oai --eNB -x -w USRP"
184
185
186
187
}


function main() {
188

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

424
  #########################################################
Guy De Souza's avatar
Guy De Souza committed
425
  # check validity of HW and TP parameters for eNB / gNB
426
  #########################################################
427
  # to be discussed
428
  
Guy De Souza's avatar
Guy De Souza committed
429
  if [ "$eNB" = "1" -o "$gNB" = "1" ] ; then
430
431
      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!"
432
      fi
433
434
      if [ "$HW" = "None" ] ; then 
	  echo_info "No radio head has been selected (HW set to $HW)"	
435
      fi
436
437
      if [ "$TP" = "None" ] ; then
	  echo_info "No transport protocol has been selected (TP set to $TP)"	
438
439
440
      fi
  fi
  
Wang's avatar
Wang committed
441
442
443
444
445
446
  if [ "$HWLAT" = "1" ] ; then
      if [ "$HW" = "None" ] ; then
    echo_info "No radio head has been selected (HW set to $HW)" 
      fi
  fi

Thomas Laurent's avatar
Thomas Laurent committed
447
448
449
450
451
452
453
454
455
456
457
458
    echo_info "RF HW set to $HW" 
    # 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")
		DEADLINE_SCHEDULER_FLAG_USER="True"
		;;
            *)
		DEADLINE_SCHEDULER_FLAG_USER="False"
		;;
	esac
    fi
459

Rohit Gupta's avatar
Rohit Gupta committed
460
  #Disable CPU Affinity for deadline scheduler
laurent's avatar
laurent committed
461
  if [ "$DEADLINE_SCHEDULER_FLAG_USER" = "True" ] ; then 
Rohit Gupta's avatar
Rohit Gupta committed
462
463
     CPU_AFFINITY_FLAG_USER="False"
  fi
464

laurent's avatar
laurent committed
465
  echo_info "Flags for Deadline scheduler: $DEADLINE_SCHEDULER_FLAG_USER"
Rohit Gupta's avatar
Rohit Gupta committed
466
  echo_info "Flags for CPU Affinity: $CPU_AFFINITY_FLAG_USER"
467

468
469
470
471
  if [ -n "$UHD_IMAGES_DIR" ] && [ -z "$INSTALL_EXTERNAL" ]; then
    echo_error "UHD images download settings will not be applied without -I present"
    exit
  fi
472
473
474
  ############################################
  # setting and printing OAI envs, we should check here
  ############################################
gauthier's avatar
gauthier committed
475

476
  echo_info "2. Setting the OAI PATHS ..."
thomasl's avatar
thomasl committed
477

478
  cecho "OPENAIR_DIR    = $OPENAIR_DIR" $green
thomasl's avatar
thomasl committed
479

480
481
482
483
484
485
486
487
488
489
  # 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
490

491

492
493
494
495
  if [ "$CLEAN_ALL" = "1" ] ; then
    clean_all_files
    echo_info "Erased all previously producted files"
  fi
496

497
498
499
500
501
502
503
  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
504
505
506
    if [ "$HW" == "OAI_USRP" ] ; then
      echo_info "installing packages for USRP support"
      check_install_usrp_uhd_driver
507
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
508
        install_usrp_uhd_driver $UHD_IMAGES_DIR
509
      fi
510
    fi 
frobinet's avatar
frobinet committed
511
512
513
514
#    if [ "$HW" == "OAI_ADRV9371_ZC706" ] ; then
#      echo_info "\nInstalling packages for ADRV9371_ZC706 support"
#      check_install_libiio_driver
#    fi 
515
    if [ "$HW" == "OAI_BLADERF" ] ; then
516
      echo_info "installing packages for BLADERF support"
517
      check_install_bladerf_driver
518
519
520
      if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
        flash_firmware_bladerf
      fi
521
    fi
522
523
524
    echo_info "installing protobuf/protobuf-c for flexran agent support"
    install_protobuf_from_source
    install_protobuf_c_from_source
525
526
527
528
529
530
531
  fi

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

532
533
  
  
534
535
536
  echo_info "3. building the compilation directives ..."

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

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

Guy De Souza's avatar
Guy De Souza committed
607
608
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" ] ; then
    echo_info "Compiling $exec"
609
    compilations \
Guy De Souza's avatar
Guy De Souza committed
610
611
	  $build_dir $exec \
	  $exec $dbin/$exec.$REL
612

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

Florian Kaltenberger's avatar
Florian Kaltenberger committed
632
  if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
633
634
635
    # ue_ip driver compilation
    echo_info "Compiling UE specific part"
    compilations \
Guy De Souza's avatar
Guy De Souza committed
636
      $build_dir ue_ip \
gauthier's avatar
gauthier committed
637
      CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
638

gauthier's avatar
gauthier committed
639
640
#    mkdir -p $DIR/at_commands/build
#    cd $DIR/at_commands/build
641
#    eval $CMAKE_CMD
gauthier's avatar
gauthier committed
642
643
644
#    compilations \
#      at_commands at_nas_ue \
#      at_nas_ue $dbin/at_nas_ue
645
    
gauthier's avatar
gauthier committed
646
    [ "$CLEAN" = "1" ] && rm -rf $DIR/nas_sim_tools/build
647
648
    mkdir -p $DIR/nas_sim_tools/build
    cd $DIR/nas_sim_tools/build
gauthier's avatar
gauthier committed
649
    
650
    eval $CMAKE_CMD
thomasl's avatar
thomasl committed
651
    compilations \
652
653
      nas_sim_tools usim \
      usim $dbin/usim
thomasl's avatar
thomasl committed
654
    compilations \
655
656
      nas_sim_tools nvram \
      nvram $dbin/nvram
thomasl's avatar
thomasl committed
657
    compilations \
658
659
        nas_sim_tools conf2uedata \
        conf2uedata $dbin/conf2uedata
660
661

    # generate USIM data
662
663
    if [ -f $dbin/conf2uedata ]; then
      install_nas_tools $conf_nvram_path $gen_nvram_path
Guy De Souza's avatar
Guy De Souza committed
664
665
666
667
      echo_info "Copying UE specific part to $DIR/$build_dir/build"
      cp -Rvf $dbin/.ue_emm.nvram0 $DIR/$build_dir/build
      cp -Rvf $dbin/.ue.nvram0 $DIR/$build_dir/build
      cp -Rvf $dbin/.usim.nvram0 $DIR/$build_dir/build
668
669
670
    else
      echo_warning "not generated UE NAS files: binaries not found"
    fi
671
  fi
thomasl's avatar
thomasl committed
672

673
  if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then
674
    cd $OPENAIR_DIR/cmake_targets/phy_simulators
675
676
677
678
    [ "$CLEAN" = "1" ] && rm -rf build
    mkdir -p build
    cd build
    rm -f *sim
679
    eval $CMAKE_CMD
680
  fi
681

682
683
684
  if [ "$SIMUS_PHY" = "1" ] ; then
    # lte unitary simulators compilation
    echo_info "Compiling unitary tests simulators"
Cedric Roux's avatar
Cedric Roux committed
685
686
    # TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim
    #simlist="dlsim_tm4 dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
687
    simlist="dlsim ulsim polartest ldpctest smallblocktest nr_pbchsim nr_dlschsim nr_dlsim nr_ulschsim"
688
689
    for f in $simlist ; do
      compilations \
690
      phy_simulators $f \
691
692
	  $f $dbin/$f.$REL
    done
Cedric Roux's avatar
Cedric Roux committed
693
    compilations \
694
          phy_simulators coding \
Cedric Roux's avatar
Cedric Roux committed
695
          libcoding.so $dbin/libcoding.so
696
  fi
thomasl's avatar
thomasl committed
697

gauthier's avatar
gauthier committed
698
  # Core simulators
699
700
701
702
703
704
705
  #############
  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 \
706
	  phy_simulators test_$f \
707
708
709
	  test_$f $dbin/test_$f.$REL
    done
  fi
thomasl's avatar
thomasl committed
710

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

733
734


oai's avatar
oai committed
735
736
737
  # Telnet server compilation
  #####################
  if [ "$BUILD_TELNETSRV" = "1" ] ; then
Guy De Souza's avatar
Guy De Souza committed
738
              build_dir=$build_dir
739
740
741
              compilations \
                  $build_dir telnetsrv \
                  libtelnetsrv.so $dbin/libtelnetsrv.so
oai's avatar
oai committed
742

743
744
745
746
747
748
749
750
751
  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
752
  fi  
Wang's avatar
Wang committed
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
  # HWLAT compilation
  #####################
  if [ "$HWLAT" = "1" ] ; then

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

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

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

  fi  
 
809
810
  # build RF device and transport protocol libraries
  #####################################
811
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" -o "$HWLAT" = "1" ] ; then
812

Guy De Souza's avatar
Guy De Souza committed
813
      build_dir=$build_dir
814

815
      # build RF device libraries
816
      if [ "$HW" != "None" ] ; then
817
	  rm -f liboai_device.so
818
	  rm -f $dbin/liboai_device.so
819

820
	  # link liboai_device.so with the selected RF device library
821
	  if [ "$HW" == "EXMIMO" ] ; then
822
823
824
	      compilations \
		  $build_dir oai_exmimodevif \
		  liboai_exmimodevif.so $dbin/liboai_exmimodevif.so.$REL
825
826
827

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

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

843
	  elif [ "$HW" == "OAI_USRP" ] ; then
844
845
846
              compilations \
                  $build_dir oai_usrpdevif \
                  liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
847

848
849
	      ln -sf liboai_usrpdevif.so liboai_device.so
	      ln -sf $dbin/liboai_usrpdevif.so.$REL $dbin/liboai_device.so
850
851
	      echo_info "liboai_device.so is linked to USRP device library"        
	  elif [ "$HW" == "OAI_BLADERF" ] ; then
852
853
854
855
856
857
	      if [ -f "/usr/include/libbladeRF.h" ] ; then
		  compilations \
		      $build_dir oai_bladerfdevif \
		      liboai_bladerfdevif.so $dbin/liboai_bladerfdevif.so.$REL
	      fi

858
859
	      ln -sf liboai_bladerfdevif.so liboai_device.so
	      ln -sf $dbin/liboai_bladerfdevif.so.$REL $dbin/liboai_device.so
860
	      echo_info "liboai_device.so is linked to BLADERF device library"	 
861
862
863
864
865
866
867
	  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

868
869
	      ln -sf liboai_lmssdrdevif.so liboai_device.so
	      ln -sf $dbin/liboai_lmssdrdevif.so.$REL $dbin/liboai_device.so
870
	      echo_info "liboai_device.so is linked to LMSSDR device library"	 
871
872
873
874
875
876
	  else 
	      echo_info "liboai_device.so is not linked to any device library"	    
	  fi
      fi
      
      # build trasport protocol libraries (currently only ETHERNET is available)
877
      if [ "$TP" != "None" ] ; then
878
	  rm -f liboai_transpro.so
879
880
	  rm -f $dbin/liboai_transpro.so

881
	  if [ "$TP" == "ETHERNET" ] ; then
882
883
884
	      compilations \
		  $build_dir oai_eth_transpro \
		  liboai_eth_transpro.so $dbin/liboai_eth_transpro.so.$REL
885
886
	      ln -sf liboai_eth_transpro.so liboai_transpro.so
	      ln -sf $dbin/liboai_eth_transpro.so.$REL $dbin/liboai_transpro.so
887
888
889
890
891
	      echo_info "liboai_transpro.so is linked with ETHERNET library"	 
	  fi      
      fi
fi

892

893
894
895
896
897
898
899
900
901
902
903
  # 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
904
    eval $CMAKE_CMD
905
906
    make doc
    ) >& $doxygen_log
907
908
  fi

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

  # basic simulator
  #####################
  if [ "$BASIC_SIMULATOR" = "1" ]; then
    echo_info "Build basic simulator"
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/basic_simulator
940
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
Cedric Roux's avatar
Cedric Roux committed
941
942
943
    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
944
    mkdir -p $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
Cedric Roux's avatar
Cedric Roux committed
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970

    # 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"
971
    set +e
Cedric Roux's avatar
Cedric Roux committed
972
973
974
    {
      cd $OPENAIR_DIR/cmake_targets/basic_simulator/enb
      cmake .
975
976
      make -j`nproc` lte-softmodem
      make -j`nproc` coding params_libconfig tcp_bridge_oai
Cedric Roux's avatar
Cedric Roux committed
977
978
979
      ln -sf libtcp_bridge_oai.so liboai_device.so
      cd ../..
    } > $dlog/basic_simulator_enb.txt 2>&1
980
981
982
983
984
985
986
987
988
989
990
    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
991
992
993
994

    # ue

    echo_info "Compile conf2uedata"
995
996
    cd $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
    eval $CMAKE_CMD
Cedric Roux's avatar
Cedric Roux committed
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
    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
1013
    echo "set ( T_TRACER \"True\" )"                  >>  $cmake_file
Cedric Roux's avatar
Cedric Roux committed
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
    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"