Convert physim testcases defined in cmake_targets/autotests/test_case_list.xml into CTest based tests. These test are activated when '-DENABLE_PHYSIM_TESTS=ON' CMake flag is set. Note: Tests for dlsim_tm4 are excluded, due to compilation issues. CTest evaluates success based on return code: '0' = pass, non-zero = fail. The following table outlines the physim executables, their success expressions (`expr_true`), and the return codes for success (`ret_success`) and failure (`ret_fail`). The `expr_true` is used in test_case_list.xml to check for test results. | test_exec | expr_true | ret_succ | ret_fail | | ------------- | -------------- | --------------- | ----------------- | | dlsim | passed | 0 | -1 | | ulsim | passed | 0 (ret) | 1 (ret) | | ldpctest | BLER 0.000000 | 0 | 1 | | polartest | BLER= 0.000000 | 0 | 1 | | nr_pbchsim | PBCH test OK | 0 | 1 | | nr_dlsim | PDSCH test OK | 0 | 1 | | smallblocktest| BLER= 0.000000 | 0 | 1 | | nr_ulschsim | PUSCH test OK | 0 (n_errors) | n_errors | | nr_pucchsim | PUCCH test OK | 0 | 1 | | nr_ulsim | PUSCH test OK | 0 (ret) | -1 (ret) | | nr_prachsim | PRACH test OK | 0 (prach_errors)| > 0 (prach_errors)| | nr_psbchsim | PSBCH test OK | 0 (errors) | > 0 (errors) | Add CMake flag "ENABLE_PHYSIM_TESTS=ON" when building OAI with "-P" or "--phy_simulators" option. This allows physim-related ctest to be executed from build directory. Add dependency on coding lib for all 4G physims
557 lines
20 KiB
Bash
Executable File
557 lines
20 KiB
Bash
Executable File
#!/bin/bash
|
|
#/*
|
|
# * 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
|
|
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
|
# * 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
|
|
# */
|
|
|
|
# file build_oai
|
|
# brief OAI automated build tool that can be used to install, compile, run OAI.
|
|
# author Navid Nikaein, Lionel GAUTHIER, Laurent Thomas
|
|
|
|
set -e
|
|
|
|
# Include helper functions
|
|
THIS_SCRIPT_PATH=$(dirname $(readlink -f "$0"))
|
|
source "$THIS_SCRIPT_PATH"/tools/build_helper
|
|
|
|
# Set environment variables (OPENAIR_HOME, ...)
|
|
set_openair_env
|
|
|
|
# Variables for UE data generation
|
|
gen_nvram_path=$OPENAIR_DIR/cmake_targets/ran_build/build
|
|
conf_nvram_path=$OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
|
|
|
|
HW=""
|
|
VERBOSE_COMPILE=0
|
|
RUN_GROUP=0
|
|
TEST_CASE_GROUP=""
|
|
BUILD_DIR=ran_build
|
|
BUILD_DOXYGEN=0
|
|
DISABLE_HARDWARE_DEPENDENCY="False"
|
|
CMAKE_BUILD_TYPE="RelWithDebInfo"
|
|
CMAKE_CMD="$CMAKE"
|
|
OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope ldpc_cuda ldpc_t2 ldpc_xdma websrv oai_iqplayer imscope imscope_record"
|
|
TARGET_LIST=""
|
|
BUILD_TOOL_OPT="-j$(nproc)"
|
|
|
|
function print_help() {
|
|
echo_info "
|
|
This script compiles OpenAirInterface Software, and can install dependencies
|
|
for a number of distributions (Ubuntu 22-24, Fedora, RHEL9).
|
|
Options:
|
|
--arch-native
|
|
Passes -march=native to the compiler.
|
|
--build-tool-opt
|
|
Pass options to build tool (ninja/make), e.g. -k (\"keep going\")
|
|
-c | --clean
|
|
Erase all files to make a rebuild from start
|
|
-C | --clean-all
|
|
Erase all files made by previous compilations, installations
|
|
--clean-kernel
|
|
Erase previously installed features in kernel: iptables, drivers, ...
|
|
--cmake-opt
|
|
Pass the supplied option verbatim to cmake.
|
|
-d | --build-dir
|
|
Sets build directory (will be <oai-root>/cmake_targets/<build-dir>/build)
|
|
--build-e2
|
|
Enable the the E2 Agent
|
|
-I | --install-external-packages
|
|
Installs required packages such as LibXML, asn1.1 compiler, ...
|
|
This option will require root password
|
|
--install-optional-packages
|
|
Install useful but not mandatory packages such as valgrind
|
|
-g | --run-with-gdb <Release | RelWithDebInfo | MinSizeRel | Debug
|
|
specify the build mode used by cmake. defaults to Debug mode if -g is used alone, with no mode parameter
|
|
if -g is not specifies, Release mode is used.
|
|
-G | --cmaketrace
|
|
enable cmake debugging messages
|
|
--eNB
|
|
Makes the LTE softmodem
|
|
--gNB
|
|
Makes the NR softmodem
|
|
--RU
|
|
Makes the OAI RRU
|
|
--UE
|
|
Makes the UE specific parts (usim, nvram) from the given configuration file
|
|
--nrUE
|
|
Makes the NR UE softmodem
|
|
--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\")
|
|
-w | --hardware
|
|
USRP, BLADERF, LMSSDR, IRIS, SIMU, AW2SORI, AERIAL, None (Default)
|
|
Adds this RF board support (in external packages installation and in compilation)
|
|
-t | --transport
|
|
Selects the transport protocol type, options: None, Ethernet, benetel4g, benetel5g, oran_fhlib_5g, oran_fhlib_5g_mplane
|
|
-P | --phy_simulators
|
|
Makes the unitary tests Layer 1 simulators
|
|
-s | --check
|
|
runs a set of auto-tests based on simulators and several compilation tests
|
|
--run-group
|
|
runs only specified test cases specified here. This flag is only valid with -s
|
|
-V | --vcd
|
|
Adds a debgging facility to the binary files: GUI with major internal synchronization events
|
|
--verbose-compile
|
|
Shows detailed compilation instructions in makefile
|
|
--build-doxygen
|
|
Builds doxygen based documentation.
|
|
--trace-asn1c-enc-dec
|
|
Output asn1c logging traces via OAI logging system.
|
|
--enable-LTTNG
|
|
Enable LTTNG log. While lttng is enabled, T-Tracer will be disabled
|
|
--disable-T-Tracer
|
|
Disables the T tracer.
|
|
--disable-hardware-dependency
|
|
Disable HW dependency during installation
|
|
--ue-autotest-trace
|
|
Enable specific traces for UE autotest framework
|
|
--ue-trace
|
|
Enable traces for UE debugging
|
|
--ue-timing
|
|
Enable traces for timing
|
|
--uhd-images-dir
|
|
Download UHD images in the indicated location
|
|
--build-eclipse
|
|
Build eclipse project files.
|
|
--build-lib <libraries>
|
|
Build optional shared library, <libraries> can be one or several of $OPTIONAL_LIBRARIES or \"all\"
|
|
--noavx512
|
|
Disable AVX512 intrinsics whatever processor capability is
|
|
--noavx2
|
|
Disable AVX2 intrinsics whatever processor capability is
|
|
--ninja
|
|
Tell cmake to use the Ninja build system. Without, will generate make files
|
|
--sanitize
|
|
Shortcut for usage of --sanitize-address --sanitize-undefined
|
|
--sanitize-address | -fsanitize=address
|
|
Enable the address sanitizer on all targets
|
|
--sanitize-undefined | -fsanitize=undefined
|
|
Enable the undefined behavior sanitizer on all targets
|
|
--sanitize-memory | -fsanitize=memory
|
|
Enable the memory sanitizer on all targets. Requires clang, and is
|
|
incompatible with ASan/UBSan. To build, issue:
|
|
CC=/usr/bin/clang CXX=/usr/bin/clang++ ./build_oai ... --sanitize-memory
|
|
--sanitize-thread | -fsanitize=thread
|
|
Enable the thread sanitizer on all targets
|
|
-h | --help
|
|
Print this help"
|
|
}
|
|
|
|
|
|
function main() {
|
|
|
|
until [ -z "$1" ]
|
|
do
|
|
case "$1" in
|
|
--arch-native)
|
|
echo_fatal "Error: specify --arch-native on the command line to cmake directly: ./build_oai --cmake-opt \"-DCMAKE_C_FLAGS=-march=native -DCMAKE_CXX_FLAGS=-march=native\""
|
|
shift;;
|
|
--build-tool-opt)
|
|
BUILD_TOOL_OPT+=" $2"
|
|
shift 2;;
|
|
-c | --clean)
|
|
CLEAN=1
|
|
shift;;
|
|
-C | --clean-all)
|
|
CLEAN_ALL=1
|
|
shift;;
|
|
--clean-kernel)
|
|
clean_kernel
|
|
echo_info "Erased iptables config and removed modules from kernel"
|
|
shift;;
|
|
--cmake-opt)
|
|
CMAKE_CMD="$CMAKE_CMD $2"
|
|
shift 2;;
|
|
-d | --build-dir)
|
|
BUILD_DIR=$2
|
|
shift 2;;
|
|
--build-e2 )
|
|
CMAKE_CMD="$CMAKE_CMD -DE2_AGENT=ON"
|
|
shift
|
|
;;
|
|
-I | --install-external-packages)
|
|
INSTALL_EXTERNAL=1
|
|
echo_info "Will install external packages"
|
|
shift;;
|
|
--install-optional-packages)
|
|
INSTALL_OPTIONAL=1
|
|
echo_info "Will install optional packages"
|
|
shift;;
|
|
-g | --run-with-gdb)
|
|
case "$2" in
|
|
"Release")
|
|
CMAKE_BUILD_TYPE="Release"
|
|
echo_info "Will Compile without gdb symbols and with compiler optimization"
|
|
CMAKE_CMD="$CMAKE_CMD -DCMAKE_BUILD_TYPE=Release"
|
|
shift
|
|
;;
|
|
"RelWithDebInfo")
|
|
CMAKE_BUILD_TYPE="RelWithDebInfo"
|
|
echo_info "Will Compile with gdb symbols"
|
|
CMAKE_CMD="$CMAKE_CMD -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_EXPORT_COMPILE_COMMANDS=1"
|
|
shift
|
|
;;
|
|
"MinSizeRel")
|
|
CMAKE_BUILD_TYPE="MinSizeRel"
|
|
echo_info "Will Compile for minimal exec size"
|
|
CMAKE_CMD="$CMAKE_CMD -DCMAKE_BUILD_TYPE=MinSizeRel"
|
|
shift
|
|
;;
|
|
"Debug" | *)
|
|
CMAKE_BUILD_TYPE="Debug"
|
|
echo_info "Will Compile with gdb symbols and disable compiler optimization"
|
|
CMAKE_CMD="$CMAKE_CMD -DCMAKE_BUILD_TYPE=Debug"
|
|
if [ "$2" == "Debug" ] ; then
|
|
shift
|
|
fi
|
|
;;
|
|
esac
|
|
shift;;
|
|
-G | --cmaketrace)
|
|
CMAKE_CMD="$CMAKE_CMD --trace-expand"
|
|
shift;;
|
|
--eNB)
|
|
eNB=1
|
|
TARGET_LIST="$TARGET_LIST lte-softmodem"
|
|
echo_info "Will compile eNB"
|
|
shift;;
|
|
--gNB)
|
|
gNB=1
|
|
TARGET_LIST="$TARGET_LIST nr-softmodem nr-cuup"
|
|
echo_info "Will compile gNB"
|
|
shift;;
|
|
--RU)
|
|
RU=1
|
|
TARGET_LIST="$TARGET_LIST oairu"
|
|
echo_info "Will compile RRU"
|
|
shift;;
|
|
--UE)
|
|
UE=1
|
|
TARGET_LIST="$TARGET_LIST lte-uesoftmodem"
|
|
echo_info "Will compile UE"
|
|
shift;;
|
|
--nrUE)
|
|
nrUE=1
|
|
TARGET_LIST="$TARGET_LIST nr-uesoftmodem"
|
|
echo_info "Will compile NR UE"
|
|
shift;;
|
|
--mu)
|
|
CMAKE_CMD="$CMAKE_CMD -DUE_EXPANSION=True -DPRE_SCD_THREAD=True"
|
|
echo_info "Will compile with UE_EXPANSION"
|
|
shift;;
|
|
--UE-conf-nvram)
|
|
conf_nvram_path=$(readlink -f "$2")
|
|
shift 2;;
|
|
--UE-gen-nvram)
|
|
gen_nvram_path=$(readlink -f "$2")
|
|
shift 2;;
|
|
-w | --hardware)
|
|
case "$2" in
|
|
"USRP" | "BLADERF" | "LMSSDR" | "IRIS")
|
|
HW="OAI_"$2
|
|
TARGET_LIST="$TARGET_LIST oai_${2,,}devif" # ,, makes lowercase
|
|
CMAKE_CMD="$CMAKE_CMD -DOAI_$2=ON"
|
|
;;
|
|
"SIMU")
|
|
HW="OAI_"$2
|
|
TARGET_LIST="$TARGET_LIST rfsimulator"
|
|
CMAKE_CMD="$CMAKE_CMD -DOAI_$2=ON"
|
|
;;
|
|
"AW2SORI")
|
|
HW="OAI_"$2
|
|
TARGET_LIST="$TARGET_LIST aw2sori_transpro"
|
|
CMAKE_CMD="$CMAKE_CMD -DOAI_$2=ON"
|
|
;;
|
|
"AERIAL"|"Aerial"|"aerial")
|
|
HW="OAI_AERIAL"
|
|
CMAKE_CMD="$CMAKE_CMD -DOAI_AERIAL=ON"
|
|
;;
|
|
"None")
|
|
;;
|
|
*)
|
|
echo_fatal "Unknown hardware type $2: exit..."
|
|
;;
|
|
esac
|
|
shift 2;;
|
|
-t | --transport)
|
|
case "$2" in
|
|
"Ethernet")
|
|
TARGET_LIST="$TARGET_LIST oai_eth_transpro"
|
|
CMAKE_CMD="$CMAKE_CMD -DOAI_${2^^}=ON" # ^^ makes uppercase
|
|
;;
|
|
"benetel4g" | "benetel5g" | "oran_fhlib_4g")
|
|
TARGET_LIST="$TARGET_LIST $2"
|
|
CMAKE_CMD="$CMAKE_CMD -DOAI_${2^^}=ON" # ^^ makes uppercase
|
|
;;
|
|
"oran_fhlib_5g")
|
|
TARGET_LIST="$TARGET_LIST $2"
|
|
CMAKE_CMD="$CMAKE_CMD -DOAI_FHI72=ON"
|
|
;;
|
|
"oran_fhlib_5g_mplane")
|
|
TARGET_LIST="$TARGET_LIST $2"
|
|
CMAKE_CMD="$CMAKE_CMD -DOAI_FHI72=ON -DOAI_FHI72_MPLANE=ON"
|
|
;;
|
|
"None")
|
|
;;
|
|
*)
|
|
echo_fatal "Unknown transport type $2; exit..."
|
|
;;
|
|
esac
|
|
shift 2;;
|
|
-P | --phy_simulators)
|
|
SIMUS_PHY=1
|
|
CMAKE_CMD="$CMAKE_CMD -DENABLE_PHYSIM_TESTS=ON"
|
|
# TODO: fix: dlsim_tm4 pucchsim prachsim pdcchsim pbchsim mbmssim
|
|
TARGET_LIST="$TARGET_LIST dlsim ulsim ldpctest polartest smallblocktest nr_pbchsim nr_dlschsim nr_ulschsim nr_dlsim nr_ulsim nr_pucchsim nr_prachsim nr_psbchsim"
|
|
echo_info "Will compile dlsim, ulsim, ..."
|
|
shift;;
|
|
-s | --check)
|
|
OAI_TEST=1
|
|
echo_info "Will run auto-tests"
|
|
shift;;
|
|
--run-group)
|
|
RUN_GROUP=1
|
|
TEST_CASE_GROUP=$2
|
|
echo_info "executing test cases only in group: $TEST_CASE_GROUP"
|
|
shift 2;;
|
|
-V | --vcd)
|
|
echo_info "Setting gtk-wave output"
|
|
CMAKE_CMD="$CMAKE_CMD -DENABLE_VCD_FIFO=True"
|
|
shift;;
|
|
--verbose-compile)
|
|
VERBOSE_COMPILE=1
|
|
echo_info "Will compile with verbose instructions"
|
|
shift;;
|
|
--build-doxygen)
|
|
CMAKE_CMD="$CMAKE_CMD -DGENERATE_DOXYGEN=ON"
|
|
TARGET_LIST="$TARGET_LIST doc"
|
|
BUILD_DOXYGEN=1
|
|
echo_info "Will build doxygen support"
|
|
shift;;
|
|
--enable-LTTNG)
|
|
CMAKE_CMD="$CMAKE_CMD -DENABLE_LTTNG=ON -DT_TRACER=OFF"
|
|
echo_info "Enable LTTNG tracer"
|
|
USE_LTTNG=1
|
|
shift 1;;
|
|
--disable-T-Tracer)
|
|
CMAKE_CMD="$CMAKE_CMD -DT_TRACER=False"
|
|
echo_info "Disabling the T tracer"
|
|
shift 1;;
|
|
--disable-hardware-dependency)
|
|
echo_info "Disabling hardware dependency for compiling software"
|
|
DISABLE_HARDWARE_DEPENDENCY="True"
|
|
shift 1;;
|
|
--ue-autotest-trace)
|
|
CMAKE_CMD="$CMAKE_CMD -DUE_AUTOTEST_TRACE=True"
|
|
echo_info "Enabling autotest specific trace for UE"
|
|
shift 1;;
|
|
--ue-trace)
|
|
CMAKE_CMD="$CMAKE_CMD -DUE_DEBUG_TRACE=False"
|
|
echo_info "Enabling UE trace for debug"
|
|
shift 1;;
|
|
--ue-timing)
|
|
CMAKE_CMD="$CMAKE_CMD -DUE_TIMING_TRACE=True"
|
|
echo_info "Enabling UE timing trace"
|
|
shift 1;;
|
|
--uhd-images-dir)
|
|
UHD_IMAGES_DIR=$2
|
|
echo_info "Downloading UHD images in the indicated location"
|
|
shift 2;;
|
|
--build-eclipse)
|
|
CMAKE_CMD="$CMAKE_CMD"' -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=TRUE -G"Eclipse CDT4 - Unix Makefiles"'
|
|
echo_info "Enabling build eclipse project support"
|
|
shift 1;;
|
|
--build-lib)
|
|
if [ "$2" == "all" ] ; then
|
|
TARGET_LIST="$TARGET_LIST $OPTIONAL_LIBRARIES"
|
|
for lib in $OPTIONAL_LIBRARIES; do CMAKE_CMD="$CMAKE_CMD -DENABLE_${lib^^}=ON"; done
|
|
echo_info "Enabling build of all optional shared libraries ($OPTIONAL_LIBRARIES)"
|
|
else
|
|
for reqlib in $2; do
|
|
lib=$(echo $OPTIONAL_LIBRARIES | tr ' ' '\n' | grep -w $reqlib) # search given parameter in list
|
|
[[ $? -ne 0 ]] && echo_fatal "Unknown optional library in $reqlib, valid libraries are $OPTIONAL_LIBRARIES"
|
|
TARGET_LIST="$TARGET_LIST $lib" # will append the found library
|
|
CMAKE_CMD="$CMAKE_CMD -DENABLE_${lib^^}=ON"
|
|
echo_info "Enabling build of optional shared library $lib"
|
|
done
|
|
fi
|
|
shift 2;;
|
|
--noavx512)
|
|
CMAKE_CMD="$CMAKE_CMD -DAVX512=OFF"
|
|
echo_info "Disabling AVX512 instructions"
|
|
shift 1;;
|
|
--noavx2)
|
|
CMAKE_CMD="$CMAKE_CMD -DAVX2=OFF"
|
|
echo_info "Disabling AVX2 instructions"
|
|
shift 1;;
|
|
--ninja)
|
|
CMAKE_CMD="$CMAKE_CMD -GNinja"
|
|
shift;;
|
|
--sanitize)
|
|
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_ADDRESS=True -DSANITIZE_UNDEFINED=True"
|
|
shift;;
|
|
--sanitize-address | -fsanitize=address)
|
|
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_ADDRESS=True"
|
|
shift;;
|
|
--sanitize-undefined | -fsanitize=undefined)
|
|
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_UNDEFINED=True"
|
|
shift;;
|
|
--sanitize-memory | -fsanitize=memory)
|
|
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_MEMORY=ON -DSANITIZE_ADDRESS=OFF -DSANITIZE_UNDEFINED=OFF"
|
|
shift;;
|
|
--sanitize-thread | -fsanitize=thread)
|
|
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_THREAD=True"
|
|
shift;;
|
|
--trace-asn1c-enc-dec)
|
|
CMAKE_CMD="$CMAKE_CMD -DTRACE_ASN1C_ENC_DEC=ON"
|
|
echo_info "Enabling asn1c internal traces via OAI logging system"
|
|
shift 1;;
|
|
-h | --help)
|
|
print_help
|
|
exit 1;;
|
|
*)
|
|
print_help
|
|
echo_fatal "Unknown option $1"
|
|
break;;
|
|
esac
|
|
done
|
|
|
|
#######################################################
|
|
# Setting and printing OAI envs, we should check here #
|
|
#######################################################
|
|
|
|
echo "OPENAIR_DIR = $OPENAIR_DIR"
|
|
|
|
if [ "$CLEAN_ALL" = "1" ] ; then
|
|
clean_all_files
|
|
echo "Erased all previously producted files"
|
|
fi
|
|
|
|
dlog=$OPENAIR_DIR/cmake_targets/log
|
|
mkdir -p $dlog
|
|
|
|
if [ "$INSTALL_EXTERNAL" = "1" ] ; then
|
|
echo_info "Installing packages"
|
|
check_install_oai_software
|
|
if [ "$USE_LTTNG" = "1" ] ; then
|
|
echo_info "installing LTTng"
|
|
install_lttng $1
|
|
fi
|
|
if [ "$HW" == "OAI_USRP" ] ; then
|
|
echo_info "installing packages for USRP support"
|
|
check_install_usrp_uhd_driver
|
|
if [ ! -v BUILD_UHD_FROM_SOURCE ] && [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
|
|
install_usrp_uhd_driver $UHD_IMAGES_DIR
|
|
fi
|
|
fi
|
|
if [ "$HW" == "OAI_BLADERF" ] ; then
|
|
echo_info "installing packages for BLADERF support"
|
|
check_install_bladerf_driver
|
|
if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
|
|
flash_firmware_bladerf
|
|
fi
|
|
fi
|
|
if [ "$HW" == "OAI_IRIS" ] ; then
|
|
echo_info "installing packages for IRIS support"
|
|
check_install_soapy
|
|
#if [ ! "$DISABLE_HARDWARE_DEPENDENCY" == "True" ]; then
|
|
# flash_firmware_iris
|
|
#fi
|
|
fi
|
|
fi
|
|
|
|
if [ "$INSTALL_OPTIONAL" = "1" ] ; then
|
|
echo_info "Installing optional packages"
|
|
check_install_additional_tools
|
|
fi
|
|
|
|
DIR=$OPENAIR_DIR/cmake_targets
|
|
|
|
[ "$CLEAN" = "1" ] && rm -rf $DIR/$BUILD_DIR/build
|
|
|
|
if [[ $TARGET_LIST != "" ]] && [[ -f $OPENAIR_DIR/CMakeLists.txt ]]; then
|
|
# add some default libraries that should always be built
|
|
# for eNB, gNB, UEs, simulators
|
|
if [[ $gNB == 1 || $eNB == 1 || $UE == 1 || $nrUE == 1 || $SIMUS_PHY == 1 || $RU == 1 ]]; then
|
|
TARGET_LIST="$TARGET_LIST params_libconfig coding rfsimulator dfts params_yaml vrtsim"
|
|
fi
|
|
|
|
mkdir -p $DIR/$BUILD_DIR/build
|
|
cd $DIR/$BUILD_DIR/build
|
|
|
|
# for historical reasons we build in a subdirectory cmake_targets/XYZ/build,
|
|
# e.g., cmake_targets/ran_build/build, hence the ../../..
|
|
CMAKE_CMD="$CMAKE_CMD ../../.."
|
|
echo_info "Running \"$CMAKE_CMD\""
|
|
eval $CMAKE_CMD
|
|
compilations $BUILD_DIR all.txt "$TARGET_LIST" "${BUILD_TOOL_OPT}"
|
|
###################
|
|
# Doxygen Support #
|
|
###################
|
|
if [ "$BUILD_DOXYGEN" = "1" ] ; then
|
|
echo_info "Built Doxygen based documentation. The documentation file is located here: $DIR/$BUILD_DIR/build/doc/html/index.html"
|
|
fi
|
|
|
|
if [ "$UE" = 1 ] ; then
|
|
|
|
echo_info "Compiling UE specific part"
|
|
|
|
[ "$CLEAN" = "1" ] && rm -rf $DIR/nas_sim_tools/build
|
|
mkdir -p $DIR/nas_sim_tools/build
|
|
cd $DIR/nas_sim_tools/build
|
|
|
|
${CMAKE_CMD% *} ..
|
|
compilations nas_sim_tools usim.txt "usim" "${BUILD_TOOL_OPT}"
|
|
compilations nas_sim_tools nvram.txt "nvram" "${BUILD_TOOL_OPT}"
|
|
compilations nas_sim_tools conf2uedata.txt "conf2uedata" "${BUILD_TOOL_OPT}"
|
|
|
|
# generate USIM data
|
|
if [ -f conf2uedata ]; then
|
|
install_nas_tools $conf_nvram_path $DIR/$BUILD_DIR/build "$DIR/$BUILD_DIR/build/conf2uedata.txt"
|
|
else
|
|
echo_warning "not generated UE NAS files: binaries not found"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
##############
|
|
# Auto-tests #
|
|
##############
|
|
if [ "$OAI_TEST" = "1" ] ; then
|
|
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 "
|
|
echo_info "You can hit CTRL-C at any time to terminate the autotests..."
|
|
rm -fr $OPENAIR_DIR/cmake_targets/autotests/log
|
|
mkdir -p $OPENAIR_DIR/cmake_targets/autotests/log
|
|
if [ "$RUN_GROUP" -eq "1" ]; then
|
|
$OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -g "$TEST_CASE_GROUP" >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log
|
|
else
|
|
$OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log
|
|
fi
|
|
wait
|
|
else
|
|
echo_success "BUILD SHOULD BE SUCCESSFUL"
|
|
fi
|
|
|
|
}
|
|
|
|
main "$@"
|