build_oai 38.6 KB
Newer Older
thomasl's avatar
thomasl committed
1
#!/bin/bash
2
3
4
5
6
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements.  See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
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
PRINT_STATS="False"
thomasl's avatar
thomasl committed
47
VCD_TIMING="False"
laurent's avatar
laurent committed
48
49
DEADLINE_SCHEDULER_FLAG_USER="False"
FORCE_DEADLINE_SCHEDULER_FLAG_USER=""
50
CPU_AFFINITY_FLAG_USER="False" #Only valid when lowlatecy flag is set to False
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
81
82
83
84
85
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
86
   Erase all files to make a rebuild from start
87
-C | --clean-all
Cedric Roux's avatar
Cedric Roux committed
88
   Erase all files made by previous compilations, installations
89
90
--clean-kernel
   Erase previously installed features in kernel: iptables, drivers, ...
gauthier's avatar
gauthier committed
91
-I | --install-external-packages
92
93
94
95
96
   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
97
   Add debugging symbols to compilation directives. It also disables any compiler optimization. Only for debugging. Do not use in normal operation!
98
99
100
-h | --help
   Print this help
--eNB
Guy De Souza's avatar
Guy De Souza committed
101
102
103
104
105
  Makes the LTE softmodem
--gNB
  Makes the NR softmodem
--nrUE
  Makes the NR UE softmodem
106
--UE
107
   Makes the UE specific parts (ue_ip, usim, nvram) from the given configuration file
Cedric Roux's avatar
Cedric Roux committed
108
109
110
111
--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
112
113
--HWLAT
    Makes test program for haw latency tests
114
-r | --3gpp-release
Cedric Roux's avatar
Cedric Roux committed
115
   default is Rel14,
116
   Rel8 limits the implementation to 3GPP Release 8 version
Cedric Roux's avatar
Cedric Roux committed
117
   Rel10 limits the implementation to 3GPP Release 10 version
118
-w | --hardware
Wang's avatar
Wang committed
119
   EXMIMO, USRP, BLADERF, ETHERNET, LMSSDR, ADRV9371_ZC706, None (Default)
120
   Adds this RF board support (in external packages installation and in compilation)
121
122
123
-t | --transport protocol
   ETHERNET , None
   Adds this trasport protocol support in compilation
124
125
126
127
128
129
--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
130
131
--run-group 
   runs only specified test cases specified here. This flag is only valid with -s
132
133
134
-V | --vcd
   Adds a debgging facility to the binary files: GUI with major internal synchronization events
-x | --xforms
135
   Adds a software oscilloscope feature to the produced binaries. 
136
--install-system-files
gauthier's avatar
gauthier committed
137
   Install OpenArInterface required files in Linux system
138
   (will ask root password)
139
--noS1 
140
   Compiles lte-softmodem without S1 interface, using direct link to IP instead
141
142
--verbose-compile
   Shows detailed compilation instructions in makefile
143
144
--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
145
146
--build-doxygen
   Builds doxygen based documentation.
147
--disable-deadline
148
149
   Disables deadline scheduler of Linux kernel (>=3.14.x).
--enable-deadline
laurent's avatar
laurent committed
150
   Enable deadline scheduler of Linux kernel (>=3.14.x). 
Rohit Gupta's avatar
Rohit Gupta committed
151
--disable-cpu-affinity
152
   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
153
154
--disable-T-Tracer
   Disables the T tracer.
Rohit Gupta's avatar
Rohit Gupta committed
155
156
--disable-hardware-dependency
   Disable HW dependency during installation
157
158
--ue-autotest-trace
    Enable specific traces for UE autotest framework
Gabriel's avatar
Gabriel committed
159
160
161
162
--ue-trace
    Enable traces for UE debugging
--ue-timing
    Enable traces for timing
Cedric Roux's avatar
Cedric Roux committed
163
164
--disable-log
   Disable all LOG_* macros
165
166
--build-eclipse
   Build eclipse project files. Paths are auto corrected by fixprj.sh
167
168
169
170
--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)
171
172
--usrp-recplay
   Build for I/Q record-playback modes
173
174
--ue-nas-use-tun
   Use TUN devices for the UEs instead of ue_ip.ko
Cedric Roux's avatar
Cedric Roux committed
175
176
177
--basic-simulator
   Generates a basic [1 UE + 1 eNB + no channel] simulator.
   See targets/ARCH/tcp_bridge/README.tcp_bridge_oai for documentation.
178
Usage (first build):
179
 NI/ETTUS B201  + COTS UE : ./build_oai -I  --eNB -x --install-system-files -w USRP
180
181
Usage (Regular):
 Eurecom EXMIMO + OAI ENB : ./build_oai --eNB -x 
Cedric Roux's avatar
Cedric Roux committed
182
 NI/ETTUS B201  + OAI ENB : ./build_oai --eNB -x -w USRP"
183
184
185
186
}


function main() {
187

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

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

knopp's avatar
knopp committed
440
  echo_info "RF HW set to $HW" 
441
442
443
444
  #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
445
  if [ "$FORCE_DEADLINE_SCHEDULER_FLAG_USER" = "" ]; then
446
     if [ "$HW" = "EXMIMO" ] ; then 
447
        DEADLINE_SCHEDULER_FLAG_USER="True"
448
     elif [ "$HW" = "ETHERNET" ] ; then 
449
        DEADLINE_SCHEDULER_FLAG_USER="False"
450
     elif [ "$HW" = "OAI_USRP" ] ; then 
laurent's avatar
laurent committed
451
        DEADLINE_SCHEDULER_FLAG_USER="False"
Wang's avatar
Wang committed
452
453
     elif [ "$HW" = "OAI_ADRV9371_ZC706" ] ; then 
        DEADLINE_SCHEDULER_FLAG_USER="False"
454
     elif [ "$HW" = "OAI_BLADERF" ] ; then 
laurent's avatar
laurent committed
455
        DEADLINE_SCHEDULER_FLAG_USER="False"
456
     elif [ "$HW" = "OAI_LMSSDR" ] ; then 
laurent's avatar
laurent committed
457
        DEADLINE_SCHEDULER_FLAG_USER="False"
458
     elif [ "$HW" = "None" ] ; then 
laurent's avatar
laurent committed
459
        DEADLINE_SCHEDULER_FLAG_USER="False"
460
461
462
463
464
     else 
        echo_error "Unknown HW type $HW. Exiting now..."
        exit 
     fi
  else
laurent's avatar
laurent committed
465
     DEADLINE_SCHEDULER_FLAG_USER=$FORCE_DEADLINE_SCHEDULER_FLAG_USER
466
467
  fi

Rohit Gupta's avatar
Rohit Gupta committed
468
  #Disable CPU Affinity for deadline scheduler
laurent's avatar
laurent committed
469
  if [ "$DEADLINE_SCHEDULER_FLAG_USER" = "True" ] ; then 
Rohit Gupta's avatar
Rohit Gupta committed
470
471
     CPU_AFFINITY_FLAG_USER="False"
  fi
472

laurent's avatar
laurent committed
473
  echo_info "Flags for Deadline scheduler: $DEADLINE_SCHEDULER_FLAG_USER"
Rohit Gupta's avatar
Rohit Gupta committed
474
  echo_info "Flags for CPU Affinity: $CPU_AFFINITY_FLAG_USER"
475

476
477
478
479
  if [ -n "$UHD_IMAGES_DIR" ] && [ -z "$INSTALL_EXTERNAL" ]; then
    echo_error "UHD images download settings will not be applied without -I present"
    exit
  fi
480
481
482
  ############################################
  # setting and printing OAI envs, we should check here
  ############################################
gauthier's avatar
gauthier committed
483

484
  echo_info "2. Setting the OAI PATHS ..."
thomasl's avatar
thomasl committed
485

486
  cecho "OPENAIR_DIR    = $OPENAIR_DIR" $green
thomasl's avatar
thomasl committed
487

488
489
490
491
492
493
494
495
496
497
  # 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
498

499

500
501
502
503
  if [ "$CLEAN_ALL" = "1" ] ; then
    clean_all_files
    echo_info "Erased all previously producted files"
  fi
504

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

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

540
541
  
  
542
543
544
  echo_info "3. building the compilation directives ..."

  DIR=$OPENAIR_DIR/cmake_targets
Guy De Souza's avatar
Guy De Souza committed
545
  if [ "$NOS1" = "1" ] ; then
Guy De Souza's avatar
Guy De Souza committed
546
      build_dir=noS1_ran_build
Guy De Souza's avatar
Guy De Souza committed
547
      if [ "$gNB" = "1" ] ; then
tct-labo4's avatar
tct-labo4 committed
548
         exec=nr-softmodem-nos1
Guy De Souza's avatar
Guy De Souza committed
549
550
551
552
553
554
555
       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
556
  else
Guy De Souza's avatar
Guy De Souza committed
557
      build_dir=ran_build
Guy De Souza's avatar
Guy De Souza committed
558
559
560
561
562
563
564
565
566
      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
567
  fi
568
569
570
  if [ "$T_TRACER" =  "False" ] ; then
      lte_build_dir=${lte_build_dir}_noLOG
  fi
571
572
573
# configuration module libraries, one currently available, using libconfig 
  config_libconfig_shlib=params_libconfig
  
574
  # first generate the CMakefile in the right directory
Guy De Souza's avatar
Guy De Souza committed
575
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" -o "$HW" = "EXMIMO" ] ; then
576

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

Guy De Souza's avatar
Guy De Souza committed
615
616
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" ] ; then
    echo_info "Compiling $exec"
617
    compilations \
Guy De Souza's avatar
Guy De Souza committed
618
619
	  $build_dir $exec \
	  $exec $dbin/$exec.$REL
620

621
622
# mandatory shared lib
    compilations \
Guy De Souza's avatar
Guy De Souza committed
623
	  $build_dir $config_libconfig_shlib \
624
	  lib$config_libconfig_shlib.so $dbin/lib$config_libconfig_shlib.so
625
    compilations \
Guy De Souza's avatar
Guy De Souza committed
626
          $build_dir coding \
627
          libcoding.so $dbin/libcoding.so
628
	  
629
630
    if [ "$NOS1" = "1" ] ; then
	compilations \
Guy De Souza's avatar
Guy De Souza committed
631
	    $build_dir nasmesh \
632
633
	    CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko
	compilations \
Guy De Souza's avatar
Guy De Souza committed
634
	    $build_dir rb_tool \
635
636
637
	    rb_tool $dbin/rb_tool
	cp $OPENAIR_DIR/cmake_targets/tools/init_nas_nos1 $dbin
    fi
638
  fi
thomasl's avatar
thomasl committed
639

Florian Kaltenberger's avatar
Florian Kaltenberger committed
640
  if [ "$UE" = 1 -a "$NOS1" = "0" ] ; then
641
642
643
    # ue_ip driver compilation
    echo_info "Compiling UE specific part"
    compilations \
Guy De Souza's avatar
Guy De Souza committed
644
      $build_dir ue_ip \
gauthier's avatar
gauthier committed
645
      CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
646

gauthier's avatar
gauthier committed
647
648
#    mkdir -p $DIR/at_commands/build
#    cd $DIR/at_commands/build
649
#    eval $CMAKE_CMD
gauthier's avatar
gauthier committed
650
651
652
#    compilations \
#      at_commands at_nas_ue \
#      at_nas_ue $dbin/at_nas_ue
653
    
gauthier's avatar
gauthier committed
654
    [ "$CLEAN" = "1" ] && rm -rf $DIR/nas_sim_tools/build
655
656
    mkdir -p $DIR/nas_sim_tools/build
    cd $DIR/nas_sim_tools/build
gauthier's avatar
gauthier committed
657
    
658
    eval $CMAKE_CMD
thomasl's avatar
thomasl committed
659
    compilations \
660
661
      nas_sim_tools usim \
      usim $dbin/usim
thomasl's avatar
thomasl committed
662
    compilations \
663
664
      nas_sim_tools nvram \
      nvram $dbin/nvram
thomasl's avatar
thomasl committed
665
    compilations \
666
667
        nas_sim_tools conf2uedata \
        conf2uedata $dbin/conf2uedata
668
669

    # generate USIM data
670
671
    if [ -f $dbin/conf2uedata ]; then
      install_nas_tools $conf_nvram_path $gen_nvram_path
Guy De Souza's avatar
Guy De Souza committed
672
673
674
675
      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
676
677
678
    else
      echo_warning "not generated UE NAS files: binaries not found"
    fi
679
  fi
thomasl's avatar
thomasl committed
680

681
  if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then
682
    cd $OPENAIR_DIR/cmake_targets/phy_simulators
683
684
685
686
    [ "$CLEAN" = "1" ] && rm -rf build
    mkdir -p build
    cd build
    rm -f *sim
687
    eval $CMAKE_CMD
688
  fi
689

690
691
692
  if [ "$SIMUS_PHY" = "1" ] ; then
    # lte unitary simulators compilation
    echo_info "Compiling unitary tests simulators"
Cedric Roux's avatar
Cedric Roux committed
693
694
    # TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim
    #simlist="dlsim_tm4 dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim"
695
    simlist="dlsim ulsim polartest ldpctest nr_pbchsim"
696
697
    for f in $simlist ; do
      compilations \
698
      phy_simulators $f \
699
700
	  $f $dbin/$f.$REL
    done
Cedric Roux's avatar
Cedric Roux committed
701
    compilations \
702
          phy_simulators coding \
Cedric Roux's avatar
Cedric Roux committed
703
          libcoding.so $dbin/libcoding.so
704
  fi
thomasl's avatar
thomasl committed
705

gauthier's avatar
gauthier committed
706
  # Core simulators
707
708
709
710
711
712
713
  #############
  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 \
714
	  phy_simulators test_$f \
715
716
717
	  test_$f $dbin/test_$f.$REL
    done
  fi
thomasl's avatar
thomasl committed
718

719
720
  # EXMIMO drivers & firmware loader
  ###############
721
  if [ "$HW" = "EXMIMO" ] ; then
gauthier's avatar
gauthier committed
722
    
723
724
    echo_info "Compiling Express MIMO 2 board drivers"
    compilations \
Guy De Souza's avatar
Guy De Souza committed
725
        $build_dir openair_rf \
thomasl's avatar
thomasl committed
726
        CMakeFiles/openair_rf/openair_rf.ko $dbin/openair_rf.ko
727
    compilations \
Guy De Souza's avatar
Guy De Souza committed
728
	  $build_dir updatefw \
gauthier's avatar
gauthier committed
729
	  updatefw $dbin/updatefw
730
    echo_info "Compiling oarf tools. The logfile for compilation is here: $dlog/oarf.txt"
Guy De Souza's avatar
Guy De Souza committed
731
732
    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
733
734
735
736
737
    if [ -s $dbin/oarf_config_exmimo.oct ] ; then
	echo_success "oarf tools compiled"
    else
	echo_error "oarf tools compilation failed"
    fi
738
    cp $OPENAIR_DIR/cmake_targets/tools/init_exmimo2 $dbin
739
  fi
thomasl's avatar
thomasl committed
740

741
742


oai's avatar
oai committed
743
744
745
  # Telnet server compilation
  #####################
  if [ "$BUILD_TELNETSRV" = "1" ] ; then
Guy De Souza's avatar
Guy De Souza committed
746
              build_dir=$build_dir
747
748
749
              compilations \
                  $build_dir telnetsrv \
                  libtelnetsrv.so $dbin/libtelnetsrv.so
oai's avatar
oai committed
750

751
752
753
754
755
756
757
758
759
  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
760
  fi  
Wang's avatar
Wang committed
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
809
810
811
812
813
814
815
816
  # 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  
 
817
818
  # build RF device and transport protocol libraries
  #####################################
819
  if [ "$eNB" = "1" -o "$UE" = "1" -o "$gNB" = "1" -o "$nrUE" = "1" -o "$HWLAT" = "1" ] ; then
820

Guy De Souza's avatar
Guy De Souza committed
821
      build_dir=$build_dir
822

823
      # build RF device libraries
824
      if [ "$HW" != "None" ] ; then
825
	  rm -f liboai_device.so
826
	  rm -f $dbin/liboai_device.so
827

828
	  # link liboai_device.so with the selected RF device library
829
	  if [ "$HW" == "EXMIMO" ] ; then
830
831
832
	      compilations \
		  $build_dir oai_exmimodevif \
		  liboai_exmimodevif.so $dbin/liboai_exmimodevif.so.$REL
833
834
835

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

frobinet's avatar
frobinet committed
839
840
841
842
843
844
845
846
847
848
849
			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
850

851
	  elif [ "$HW" == "OAI_USRP" ] ; then
852
853
854
              compilations \
                  $build_dir oai_usrpdevif \
                  liboai_usrpdevif.so $dbin/liboai_usrpdevif.so.$REL
855

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

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

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

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

900

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

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

  # basic simulator
  #####################
  if [ "$BASIC_SIMULATOR" = "1" ]; then
    echo_info "Build basic simulator"
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/basic_simulator
948
    [ "$CLEAN" = "1" ] && rm -rf $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
Cedric Roux's avatar
Cedric Roux committed
949
950
951
    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
952
    mkdir -p $OPENAIR_DIR/cmake_targets/nas_sim_tools/build
Cedric Roux's avatar
Cedric Roux committed
953
954
955
956
957
958
959
960
961
962
963 </