From e5b9466bf28ad73d157214960299a91f77edbb77 Mon Sep 17 00:00:00 2001 From: thomasl <thomasl@eurecom.fr> Date: Tue, 17 Mar 2015 11:25:16 +0000 Subject: [PATCH] More targets implemented git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6823 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- cmake_targets/CMakeLists.txt | 102 ++++---- cmake_targets/build_helper.bash | 192 ++++++-------- cmake_targets/build_oai.bash | 241 +++++++++--------- .../epc_build_oai/CMakeLists.template | 3 +- cmake_targets/lte-simulators/CMakeLists.txt | 1 + 5 files changed, 243 insertions(+), 296 deletions(-) diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 324e42f9e4..2a60080b9a 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -115,7 +115,7 @@ set(CMAKE_BUILD_TYPE "RelWithDebInfo") # set(CMAKE_C_FLAGS - "${CMAKE_C_FLAGS} -msse4.2 -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing -rdynamic -funroll-loops -Wno-packed-bitfield-compat -fPIC") + "${CMAKE_C_FLAGS} -msse4.2 -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing -rdynamic -funroll-loops -Wno-packed-bitfield-compat -fPIC ") # add autotools definitions that were maybe used! set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP" @@ -172,6 +172,7 @@ if (${ENABLE_ITTI}) ${ITTI_DIR}/timer.c ) set(ITTI_LIB ITTI) + set(GTPU_need_ITTI ${OPENAIRCN_DIR}/GTPV1-U/gtpv1u_eNB.c) set(EXMIMO_IOT) endif (${ENABLE_ITTI}) @@ -357,6 +358,7 @@ add_boolean_option(ENABLE_USE_PCAP_FOR_SGI False "SGI option") add_boolean_option(ENABLE_USE_RAW_SOCKET_FOR_SGI False "As per name") add_boolean_option(ENABLE_VCD_FIFO True "Seems legacy: always true now") add_boolean_option(ENB_MODE True "???") +add_boolean_option(EPC_BUILD False "???") add_boolean_option(HARD_RT False "???") add_boolean_option(JUMBO_FRAME True "???") add_boolean_option(LARGE_SCALE False "specific to oaisim: defines max eNB=2 and max UE=120") @@ -430,9 +432,7 @@ if(ENB_MODE) include_directories("${OPENAIR2_DIR}/UTIL/LOG") include_directories("${OPENAIRCN_DIR}/COMMON") include_directories("${OPENAIRCN_DIR}/UTILS") -message("openair2 first") else() -message(openair-cn first) include_directories("${OPENAIRCN_DIR}/COMMON") include_directories("${OPENAIRCN_DIR}/UTILS") include_directories("${OPENAIR2_DIR}/COMMON") @@ -453,7 +453,6 @@ include_directories("${OPENAIR3_DIR}/RAL-LTE/INTERFACE-802.21/INCLUDE") include_directories("${OPENAIR3_DIR}/RAL-LTE/LTE_RAL_ENB/INCLUDE") include_directories("${OPENAIR3_DIR}/RAL-LTE/LTE_RAL_UE/INCLUDE") include_directories("${OPENAIR_DIR}/common/utils") -include_directories("${OPENAIR_DIR}/common/utils/collection/hashtable") include_directories("${OPENAIR_DIR}/common/utils/itti") include_directories("${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/api/network") include_directories("${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/include") @@ -495,28 +494,13 @@ include_directories("${OPENAIRCN_DIR}/SGI") include_directories("${OPENAIRCN_DIR}/S6A") include_directories("${OPENAIR_DIR}") -# define where are the source files -################################## -#add_subdirectory (${OPENAIR_DIR} .) - -# define libraries -#add_library(MathFunctions mysqrt.cxx) -function(add_whole_dir dir lib_name) - file(GLOB mylist ${dir}) - add_library(${lib_name} ${mylist}) -endfunction(add_whole_dir) - -function(add_whole_tree dir lib_name) - file(GLOB_RECURSE mylist "${dir}/*.c") - add_library(${lib_name} ${mylist}) -endfunction(add_whole_tree) - # Utilities Library ################ add_library(HASHTABLE - ${OPENAIR_DIR}/common/utils/collection/hashtable/hashtable.c - ${OPENAIR_DIR}/common/utils/collection/hashtable/obj_hashtable.c + ${OPENAIRCN_DIR}/UTILS/HASHTABLE/hashtable.c + ${OPENAIRCN_DIR}/UTILS/HASHTABLE/obj_hashtable.c ) +include_directories(${OPENAIRCN_DIR}/UTILS/HASHTABLE) set(UTIL_SRC ${OPENAIR2_DIR}/UTIL/CLI/cli.c @@ -585,7 +569,8 @@ add_library(SECU_CN ${SECU_CN_SRC}) # Scheduler ################################" -add_whole_dir(${OPENAIR1_DIR}/SCHED/*.c SCHED_LIB) +file(GLOB SCHED_SRC ${OPENAIR1_DIR}/SCHED/*.c) +add_library(SCHED_LIB ${SCHED_SRC}) # Layer 1 ############################# @@ -877,7 +862,6 @@ target_compile_definitions(xt_GTPURH_lib PRIVATE -DIPTVERSION=${IPTVERSION} -DIPTABLES_VERSION_STRING=${IPTABLES_VERSION_STRING} ) - set(SGI_DIR ${OPENAIRCN_DIR}/SGI) set(SGI_SRC ${SGI_DIR}/sgi_task.c @@ -899,7 +883,6 @@ if (ENABLE_USE_NETFILTER_FOR_SGI) endif() add_library(SGI ${SGI_SRC}) - set(SCTP_SRC ${OPENAIRCN_DIR}/SCTP/sctp_common.c ${OPENAIRCN_DIR}/SCTP/sctp_eNB_task.c @@ -928,6 +911,7 @@ add_library(S11 ${S11_DIR}/s11_sgw_session_manager.c ${S11_DIR}/s11_sgw_bearer_manager.c ) +include_directories(${S11_DIR}) set(S6A_DIR ${OPENAIRCN_DIR}/S6A) add_library(S6A @@ -940,7 +924,6 @@ add_library(S6A ${S6A_DIR}/s6a_up_loc.c ) - set(SGW_DIR ${OPENAIRCN_DIR}/SGW-LITE) add_library (SGW ${SGW_DIR}/spgw_config.c @@ -951,7 +934,6 @@ add_library (SGW ${SGW_DIR}/pgw_lite_paa.c ) - set(MME_DIR ${OPENAIRCN_DIR}/MME_APP) add_library(MME_APP ${MME_DIR}/mme_app_capabilities.c @@ -964,7 +946,6 @@ add_library(MME_APP ${MME_DIR}/s6a_2_nas_cause.c ) - set(NAS_SRC ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/) set(libnas_api_OBJS ${NAS_SRC}api/mme/mme_api.c @@ -973,7 +954,6 @@ set(libnas_api_OBJS ${NAS_SRC}api/network/network_api.c ) - set(libnas_emm_OBJS ${NAS_SRC}emm/Attach.c ${NAS_SRC}emm/Authentication.c @@ -1207,13 +1187,17 @@ set(libnas_usim_OBJS ${NAS_SRC}api/usim/usim_api.c ) -set(libnas_OBJS +add_library(NAS_UE ${OPENAIRCN_DIR}/NAS/nas_ue_task.c +) + +set(libnas_OBJS + ${OPENAIRCN_DIR}/NAS/nas_itti_messaging.c -# ${OPENAIRCN_DIR}/NAS/nas_main.c ${NAS_SRC}nas_parser.c ${NAS_SRC}nas_proc.c ${NAS_SRC}nas_user.c + ${NAS_SRC}nas_network.c ${libnas_utils_OBJS} ${libnas_user_OBJS} ${libnas_usim_OBJS} @@ -1229,7 +1213,7 @@ set(libnas_OBJS add_library(NAS ${libnas_OBJS}) if(NAS_UE) - set(NAS_LIB NAS) + set(NAS_LIB NAS NAS_UE) endif() include_directories(${NAS_SRC}) @@ -1350,6 +1334,9 @@ if (${XFORMS}) set(XFORMS_LIBRARIES "forms") endif (${XFORMS}) +# Hack on a test of asn1c version (already dirty) +add_definitions(-DASN1_MINIMUM_VERSION=924) + ################################# # add executables for operation #################################"" @@ -1369,7 +1356,7 @@ add_executable(lte-softmodem ${OPENAIR_TARGETS}/SIMU/USER/init_lte.c ${OPENAIR_TARGETS}/COMMON/create_tasks.c ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c - ${GTPV1U_DIR}/gtpv1u_eNB.c + ${GTPU_need_ITTI} ${HW_SOURCE} ${RTAI_SOURCE} ${XFORMS_SOURCE} @@ -1390,10 +1377,11 @@ add_executable(oai_epc ${OPENAIRCN_DIR}/OAI_EPC/oai_epc.c ${GTPV1U_DIR}/gtpv1u_task.c ${OPENAIRCN_DIR}/SCTP/sctp_primitives_server.c + ${OPENAIRCN_DIR}/NAS/nas_main.c ) target_link_libraries (oai_epc -Wl,--start-group - S1AP_LIB S1AP_EPC GTPV1U GTPV2C SCTP_SERVER UDP_SERVER SECU_CN SECU_OSA SGI S6A SGW MME_APP LFDS ${NAS_LIB} ${ITTI_LIB} CN_UTILS HASHTABLE + NAS S1AP_LIB S1AP_EPC GTPV1U GTPV2C SCTP_SERVER UDP_SERVER SECU_CN SECU_OSA SGI S6A SGW MME_APP LFDS ${ITTI_LIB} CN_UTILS HASHTABLE -Wl,--end-group pthread m sctp rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore ) @@ -1407,7 +1395,7 @@ add_executable(oai_sgw ) target_link_libraries (oai_sgw -Wl,--start-group - GTPV1U SECU_CN SECU_OSA SGI S6A SGW UTIL LFDS ${ITTI_LIB} + GTPV1U SECU_CN SECU_OSA SGI S6A SGW CN_UTILS LFDS ${ITTI_LIB} -Wl,--end-group pthread m sctp rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore ) @@ -1417,14 +1405,14 @@ target_link_libraries (oai_sgw add_executable(usim_data ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/tools/usim_data.c ) -target_link_libraries (usim_data nettle crypto m) +target_link_libraries (usim_data ${NAS_LIB} UTIL ${ITTI_LIB} LFDS pthread rt nettle crypto m) # ??? ##################### add_executable(ue_data ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/tools/ue_data.c ) -target_link_libraries (ue_data nettle crypto m) +target_link_libraries (ue_data ${NAS_LIB} UTIL ${ITTI_LIB} LFDS pthread rt nettle crypto m) ###################################" # Addexecutables for tests @@ -1433,28 +1421,29 @@ target_link_libraries (ue_data nettle crypto m) # A all in one network simulator ################ add_executable(oaisim -${rrc_h} -${s1ap_h} -${OPENAIR_BIN_DIR}/messages_xml.h -${OPENAIR_TARGETS}/SIMU/USER/channel_sim.c -${OPENAIR_TARGETS}/SIMU/USER/init_lte.c -${OPENAIR_TARGETS}/SIMU/USER/oaisim_config.c -${OPENAIR_TARGETS}/SIMU/USER/sinr_sim.c -${OPENAIR_TARGETS}/SIMU/USER/cor_SF_sim.c -${OPENAIR_TARGETS}/SIMU/USER/oaisim_functions.c -${OPENAIR_TARGETS}/SIMU/USER/event_handler.c -${OPENAIR_TARGETS}/SIMU/USER/oaisim.c -${OPENAIR2_DIR}/RRC/NAS/nas_config.c -${OPENAIR2_DIR}/RRC/NAS/rb_config.c -${OPENAIR2_DIR}/UTIL/OMG/sumo.c -${OPENAIR_TARGETS}/COMMON/create_tasks.c -${HW_SOURCE} -${XFORMS_SOURCE} + ${rrc_h} + ${s1ap_h} + ${OPENAIR_BIN_DIR}/messages_xml.h + ${OPENAIR_TARGETS}/SIMU/USER/channel_sim.c + ${OPENAIR_TARGETS}/SIMU/USER/init_lte.c + ${OPENAIR_TARGETS}/SIMU/USER/oaisim_config.c + ${OPENAIR_TARGETS}/SIMU/USER/sinr_sim.c + ${OPENAIR_TARGETS}/SIMU/USER/cor_SF_sim.c + ${OPENAIR_TARGETS}/SIMU/USER/oaisim_functions.c + ${OPENAIR_TARGETS}/SIMU/USER/event_handler.c + ${OPENAIR_TARGETS}/SIMU/USER/oaisim.c + ${OPENAIR2_DIR}/RRC/NAS/nas_config.c + ${OPENAIR2_DIR}/RRC/NAS/rb_config.c + ${OPENAIR2_DIR}/UTIL/OMG/sumo.c + ${GTPU_need_ITTI} + ${OPENAIR_TARGETS}/COMMON/create_tasks.c + ${HW_SOURCE} + ${XFORMS_SOURCE} ) target_include_directories(oaisim PUBLIC ${OPENAIR_TARGETS}/SIMU/USER) target_link_libraries (oaisim -Wl,--start-group - RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN UTIL SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2 ${RAL_LIB} ${NAS_LIB} SIMU SIMU_ETH SECU_OSA ${ITTI_LIB} ${MIH_LIB} + RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2 ${RAL_LIB} ${NAS_LIB} SIMU SIMU_ETH SECU_OSA ${ITTI_LIB} ${MIH_LIB} -Wl,--end-group ) target_link_libraries (oaisim ${LIBXML2_LIBRARIES} ${LAPACK_LIBRARIES}) target_link_libraries (oaisim pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${option_USRP} @@ -1495,7 +1484,7 @@ foreach(myExe s1ap ${OPENAIRCN_DIR}/TEST/test_${myExe}.c ) target_link_libraries (test_${myExe} - -Wl,--start-group UTIL LFDS -Wl,--end-group fdproto fdcore + -Wl,--start-group SECU_CN UTIL LFDS -Wl,--end-group m rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore ) endforeach(myExe) @@ -1570,7 +1559,6 @@ EXECUTE_PROCESS(COMMAND uname -r OUTPUT_VARIABLE os_release OUTPUT_STRIP_TRAILING_WHITESPACE) SET(module_build_path /lib/modules/${os_release}/build) -message("Kernel build path = ${module_build_path}") function(make_driver name dir) file(MAKE_DIRECTORY ${OPENAIR_BIN_DIR}/${name}) diff --git a/cmake_targets/build_helper.bash b/cmake_targets/build_helper.bash index 238e32ad72..2f53d32c50 100755 --- a/cmake_targets/build_helper.bash +++ b/cmake_targets/build_helper.bash @@ -80,17 +80,14 @@ Options The configuration file to install -I | --install-external-packages Installs required packages such as LibXML, asn1.1 compiler, freediameter, ... + This option will require root password -g | --run-with-gdb Add debugging symbols to compilation directives --eNB +--eNB Makes the eNB LTE softmodem --UE +--UE Makes the UE softmodem --oaisim - Makes the oaisim simulator --unit_simulators - Makes the unitary tests Layer 1 simulators --EPC +--EPC Makes the EPC -r | --3gpp-release default is Rel10, @@ -98,13 +95,22 @@ Options -w | --hardware EXMIMO (Default), USRP, None Adds this RF board support (in external packages installation and in compilation) +--oaisim + Makes the oaisim simulator +--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 -V | --vcd Adds a debgging facility to the binary files: GUI with major internal synchronization events -x | --xforms Adds a software oscilloscope feature to the produced binaries -Typical Options for a quick startup with a COTS UE and Eurecom RF board: build_oai.bash -I -g -eNB -EPC -x' +--install-system-files + Install OpenArInterface required files in Linux system + (will ask root password) +Typical Options for a quick startup with a COTS UE and Eurecom RF board: build_oai.bash -I -g -eNB -EPC -x --install-system-files' } ########################### @@ -142,20 +148,16 @@ clean_all_files() { ################################### compilations() { - cd $OPENAIR_DIR/cmake_targets/$1 + cd $OPENAIR_DIR/cmake_targets/$1/build { - [ "$CLEAN" = "1" ] && rm -rf build - mkdir -p build - cd build rm -f $3 - cmake .. make -j4 $2 - } > $5 2>&1 + } > $dlog/$2.$REL.txt 2>&1 if [ -s $3 ] ; then - cp $3 $4 - echo_success "$6" + cp $3 $dbin/$2.$REL + echo_success "$2 compiled" else - echo_error "$7" + echo_error "$2 compilation failed" fi } @@ -164,6 +166,22 @@ run_tests() { grep } +test_compile() { + mkdir -p $tdir/$1/build + cd $tdir/$1/build + { + cmake .. + rm -f $3 + make -j4 $2 + } > $tdir/log/$1.txt + if [ -s $3 ] ; then + cp $3 $tdir/bin/$3.$1 + echo_success "$1 test compiled" + else + echo_error "$1 test compilation failed" + fi +} + run_compilation_autotests() { tdir=$OPENAIR_DIR/cmake_targets/autotests mkdir -p $tdir/bin $tdir/log @@ -173,71 +191,48 @@ run_compilation_autotests() { fi compilations \ test.0101 oaisim \ - oaisim $tdir/bin/oaisim.r8 \ - $tdir/log/test0101.txt \ - "test 0101:oaisim Rel8 passed" \ - "test 0101:oaisim Rel8 failed" + oaisim $tdir/bin/oaisim.r8 compilations \ test.0102 oaisim \ - oaisim $tdir/bin/oaisim.r8.nas \ - $tdir/log/test0102.oaisim.txt \ - "test 0102:oaisim Rel8 nas passed" \ - "test 0102:oaisim Rel8 nas failed" + oaisim $tdir/bin/oaisim.r8.nas + compilations \ test.0103 oaisim \ - oaisim $tdir/bin/oaisim.r8.rf \ - $tdir/log/test0103.txt \ - "test 0103:oaisim rel8 rf passed" \ - "test 0103:oaisim rel8 rf failed" + oaisim $tdir/bin/oaisim.r8.rf + compilations \ test.0104 dlsim \ - dlsim $tdir/bin/dlsim \ - $tdir/log/test0104.txt \ - "test 0104:dlsim passed" \ - "test 0104:dlsim failed" + dlsim $tdir/bin/dlsim + compilations \ test.0104 ulsim \ - ulsim $tdir/bin/ulsim \ - $tdir/log/test0105.txt \ - "test 0105: ulsim passed" \ - "test 0105: ulsim failed" + ulsim $tdir/bin/ulsim + compilations \ test.0106 oaisim \ - oaisim $tdir/bin/oaisim.r8.itti \ - $tdir/log/test0106.txt \ - "test 0103:oaisim rel8 itti passed" \ - "test 0103:oaisim rel8 itti failed" + oaisim $tdir/bin/oaisim.r8.itti + compilations \ test.0107 oaisim \ - oaisim $tdir/bin/oaisim.r10 \ - $tdir/log/test0107.txt \ - "test 0103:oaisim rel10 passed" \ - "test 0103:oaisim rel10 failed" + oaisim $tdir/bin/oaisim.r10 + compilations \ test.0108 oaisim \ - oaisim $tdir/bin/oaisim.r10.itti \ - $tdir/log/test0108.txt \ - "test 0108:oaisim rel10 itti passed" \ - "test 0108:oaisim rel10 itti failed" + oaisim $tdir/bin/oaisim.r10.itti + compilations \ test.0114 oaisim \ - oaisim $tdir/bin/oaisim.r8.itti.ral \ - $tdir/log/test0114.txt \ - "test 0114:oaisim rel8 itti ral passed" \ - "test 0114:oaisim rel8 itti ral failed" + oaisim $tdir/bin/oaisim.r8.itti.ral + compilations \ test.0115 oaisim \ - oaisim $tdir/bin/oaisim.r10.itti.ral \ - $tdir/log/test0115.txt \ - "test 0114:oaisim rel10 itti ral passed" \ - "test 0114:oaisim rel10 itti ral failed" + oaisim $tdir/bin/oaisim.r10.itti.ral + compilations \ test.0102 nasmesh \ - CMakeFiles/nasmesh/nasmesh.ko $tdir/bin/nasmesh.ko \ - $tdir/log/test0120.txt \ - "test 0120: nasmesh.ko passed" \ - "test 0120: nasmesk.ko failed" + CMakeFiles/nasmesh/nasmesh.ko $tdir/bin/nasmesh.ko + } ########################################## @@ -414,11 +409,17 @@ check_install_oai_software() { $SUDO apt-get install -y libgnutls-dev nettle-dev nettle-bin fi install_freediameter_from_source - check_install_asn1c + install_asn1c_from_source } -check_install_asn1c(){ - $SUDO $OPENAIR_TARGETS/SCRIPTS/install_asn1c_0.9.24.modified.bash +install_asn1c_from_source(){ + mkdir /tmp/asn1c-r1516 + cd /tmp/asn1c-r1516 + svn co https://github.com/vlm/asn1c/trunk /tmp/asn1c-r1516 -r 1516 + patch -p0 < $OPENAIRCN_DIR/S1AP/MESSAGES/ASN1/asn1cpatch.p0 + ./configure + make + $SUDO make install } ################################################# @@ -429,17 +430,19 @@ compile_hss() { if [ "$CLEAN" = "1" ]; then echo_info "build a clean HSS" - rm -rfv obj* m4 .autom4* configure + rm -rf obj* m4 .autom4* configure fi echo_success "Invoking autogen" ./autogen.sh || return 1 mkdir -p objs ; cd objs echo_success "Invoking configure" - ./configure || return 1 + ../configure || return 1 if [ -f Makefile ]; then echo_success "Compiling..." make -j4 + # seems a bug in hss compilation: run make twice to work around + make -j4 if [ $? -ne 0 ]; then echo_error "Build failed, exiting" return 1 @@ -452,62 +455,27 @@ compile_hss() { return 1 } -compile_nas_tools() { - - export NVRAM_DIR=$OPENAIR_TARGETS/bin - - cd $NVRAM_DIR - - if [ ! -f /tmp/nas_cleaned ]; then - echo_success "make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS/tools veryveryclean" - make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS/tools veryveryclean - fi - echo_success "make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS/tools all" - make --directory=$OPENAIRCN_DIR/NAS/EURECOM-NAS/tools all - rm .ue.nvram - rm .usim.nvram - touch /tmp/nas_cleaned -} TDB() { if [ $2 = "USRP" ]; then echo_info " 8.2 [USRP] " fi - - # ENB_S1 - if [ $3 = 0 ]; then - cd $OPENAIR2_DIR && make clean && make nasmesh_netlink.ko #|| exit 1 - cd $OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL && make clean && make # || exit 1 - fi - -} - -# arg1 is ENB_S1 'boolean' -install_oaisim() { - if [ $1 = 0 ]; then - cd $OPENAIR2_DIR && make clean && make nasmesh_netlink.ko #|| exit 1 - cd $OPENAIR2_DIR/NAS/DRIVER/MESH/RB_TOOL && make clean && make # || exit 1 - else - compile_ue_ip_nw_driver - install_nas_tools - fi -} - + install_nas_tools() { - cd $OPENAIR_TARGETS/bin + cd $1 if [ ! -f .ue.nvram ]; then echo_success "generate .ue_emm.nvram .ue.nvram" - $OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/ue_data --gen + ./ue_data --gen fi if [ ! -f .usim.nvram ]; then echo_success "generate .usim.nvram" - $OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/usim_data --gen + ./usim_data --gen fi - $OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/ue_data --print - $OPENAIRCN_DIR/NAS/EURECOM-NAS/bin/usim_data --print + ./ue_data --print + ./usim_data --print } install_nasmesh(){ @@ -537,8 +505,6 @@ create_hss_database(){ echo_fatal "Usage: $0 dbuser dbpass hssuser hsspass databasename" rv=1 fi - - set_openair_env # removed % #Q1="GRANT ALL PRIVILEGES ON *.* TO '$3'@'%' IDENTIFIED BY '$4' WITH GRANT OPTION;" @@ -553,7 +519,6 @@ create_hss_database(){ echo_success "$3 permissions succeeded" fi - Q1="CREATE DATABASE IF NOT EXISTS ${BTICK}$5${BTICK};" SQL="${Q1}" $MYSQL -u $3 --password=$4 -e "$SQL" @@ -564,7 +529,6 @@ create_hss_database(){ echo_success "$5 creation succeeded" fi - # test if tables have been created mysql -u $3 --password=$4 -e "desc $5.users" > /dev/null 2>&1 @@ -577,7 +541,6 @@ create_hss_database(){ echo_success "$5 tables creation succeeded" fi fi - return 0 } @@ -585,14 +548,12 @@ create_hss_database(){ # set_openair_env ############################### set_openair_env(){ - fullpath=`readlink -f $BASH_SOURCE` [ -f "/.$fullpath" ] || fullpath=`readlink -f $PWD/$fullpath` openair_path=${fullpath%/cmake_targets/*} openair_path=${openair_path%/targets/*} openair_path=${openair_path%/openair-cn/*} - openair_path=${openair_path%/openair[123]/*} - + openair_path=${openair_path%/openair[123]/*} export OPENAIR_DIR=$openair_path export OPENAIR_HOME=$openair_path export OPENAIR1_DIR=$openair_path/openair1 @@ -600,6 +561,5 @@ set_openair_env(){ export OPENAIR3_DIR=$openair_path/openair3 export OPENAIRCN_DIR=$openair_path/openair-cn export OPENAIR_TARGETS=$openair_path/targets - } diff --git a/cmake_targets/build_oai.bash b/cmake_targets/build_oai.bash index e997ee8cf8..a0183a421b 100755 --- a/cmake_targets/build_oai.bash +++ b/cmake_targets/build_oai.bash @@ -54,84 +54,80 @@ do CLEAN=1 clean_all_files echo_info "Erased all previously producted files" - shift; - ;; + shift;; --clean-kernel) clean_kernel echo_info "Erased iptables config and removed modules from kernel" - shift; - ;; + shift;; -C | --config-file) CONFIG_FILE=$2 echo_info "Will install the config file $CONFIG_FILE" - shift 2; - ;; + shift 2;; -I | --install-external-packages) INSTALL_EXTERNAL echo_info "Will install external packages" - shift; - ;; + shift;; -g | --run-with-gdb) GDB=1 echo_info "Will Compile with gdb symbols" - shift; - ;; - -eNB) + shift;; + --eNB) eNB=1 echo_info "Will compile eNB" shift;; - -UE) + --UE) UE=1 echo_info "Will compile UE" shift;; - -unit_simulators) - SIMUS=1 - echo_info "Will compile dlsim, ulsim, ..." - shift;; - -oaisim) - oaisim=1 - echo_info "Will compile oaisim and drivers nasmesh, ..." - shift;; - -EPC) + --EPC) EPC=1 echo_info "Will compile EPC" shift;; - -h | --help) - print_help - exit 1 - ;; -r | --3gpp-release) REL=$2 echo_info "setting release to: $REL" - shift 2 ; - ;; + shift 2;; + -w | --hardware) + HW="$2" #"${i#*=}" + echo_info "setting hardware to: $HW" + shift 2;; + --oaisim) + oaisim=1 + echo_info "Will compile oaisim and drivers nasmesh, ..." + shift;; + --phy_simulators) + SIMUS_PHY=1 + echo_info "Will compile dlsim, ulsim, ..." + shift;; + --core_simulators) + SIMUS_CORE=1 + echo_info "Will compile security unitary tests" + shift;; -s | --check) OAI_TEST=1 echo_info "Will run auto-tests" - shift; - ;; + shift;; -V | --vcd) echo_info "setting gtk-wave output" VCD_TIMING=1 EXE_ARGUMENTS="$EXE_ARGUMENTS -V" - shift ; - ;; - -w | --hardware) - HW="$2" #"${i#*=}" - echo_info "setting hardware to: $HW" - shift 2 ; - ;; + shift;; -x | --xforms) XFORMS=1 EXE_ARGUMENTS="$EXE_ARGUMENTS -d" echo_info "Will generate the software oscilloscope features" - shift; - ;; - *) + shift;; + --install-system-files) + INSTALL_SYSTEM_FILES=1 + echo_info "Will copy OpenAirInterface files in Linux directories" + shift;; + -h | --help) + print_help + exit 1;; + *) print_help echo_fatal "Unknown option $1" - break ; - ;; + break;; esac done @@ -163,8 +159,11 @@ echo_info "3. building the compilation directives ..." DIR=$OPENAIR_HOME/cmake_targets -# Create the cmake directives for selected options -mkdir -p $DIR/lte_build_oai +# Create and configure the building directories +#####################################" + +# For eNB, UE, ... +mkdir -p $DIR/lte_build_oai/build cmake_file=$DIR/lte_build_oai/CMakeLists.txt echo "cmake_minimum_required(VERSION 2.8)" > $cmake_file echo "set(XFORMS $XFORMS )" >> $cmake_file @@ -173,16 +172,43 @@ echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >> $cmake_file echo "set(RF_BOARD \"${HW}\")" >> $cmake_file echo 'set(PACKAGE_NAME "\"lte-softmodem\"")' >> $cmake_file echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file +cd $DIR/lte_build_oai/build +cmake .. + +# For EPC +cmake_file=$DIR/epc_build_oai/CMakeLists.txt +cp $DIR/epc_build_oai/CMakeLists.template $cmake_file +echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >> $cmake_file +echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file +mkdir -p $DIR/epc_build_oai/build +cd $DIR/epc_build_oai/build +cmake .. + +# For oaisim +cmake_file=$DIR/oaisim_build_oai/CMakeLists.txt +cp $DIR/oaisim_build_oai/CMakeLists.template $cmake_file +echo "set(XFORMS $XFORMS )" >> $cmake_file +echo "set(RRC_ASN1_VERSION \"${REL}\")" >> $cmake_file +echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >> $cmake_file +echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file +mkdir -p $DIR/oaisim_build_oai/build +cd $DIR/oaisim_build_oai/build +cmake .. + +# For unitary test simulators +cd $OPENAIR_DIR/cmake_targets/lte-simulators +[ "$CLEAN" = "1" ] && rm -rf build +mkdir -p build +cd build +rm -f *sim +cmake .. if [ "$eNB" = "1" -o "UE" = "1" ] ; then # LTE softmodem compilation echo_info "Compiling LTE softmodem" compilations \ lte_build_oai lte-softmodem \ - lte-softmodem $dbin/lte-softmodem.$REL \ - $dlog/lte-softmodem.$REL.txt \ - "lte-softmodem compiled" \ - "lte-softmodem compilation failed" + lte-softmodem lte-softmodem.$REL fi if [ "$UE" = 1 ] ; then @@ -190,31 +216,35 @@ if [ "$UE" = 1 ] ; then echo_info "Compiling UE specific part" compilations \ lte_build_oai ue_ip \ - CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko \ - $dlog/ue_ip.txt \ - "ue_ip driver compiled" \ - "ue_ip driver compilation failed" + CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko + compilations \ + lte_build_oai usim_data \ + usim_data $dbin/usim_data.$REL + compilations \ + lte_build_oai ue_data \ + ue_data $dbin/ue_data.$REL fi -if [ "SIMUS" = "1" ] ; then +if [ "$SIMUS_PHY" = "1" ] ; then # lte unitary simulators compilation echo_info "Compiling unitary tests simulators" simlist="dlsim ulsim pucchsim prachsim pdcchsim pbchsim mbmssim" - log=$dlog/lte-simulators.log - cd $OPENAIR_DIR/cmake_targets/lte-simulators - [ "$CLEAN" = "1" ] && rm -rf build - mkdir -p build - cd build - rm -f *sim - cmake .. > $log 2>&1 for f in $simlist ; do - make -j4 $f > $log 2>&1 - if [ -s $f ] ; then - echo_success "$f compiled" - cp $f $OPENAIR_DIR/cmake_targets/bin - else - echo_error "$f compilation failed" - fi + compilations \ + lte-simulators $f \ + $f $dbin/$f.$REL + done +fi + +# Core simulators +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 secu_knas_stream_int secu_knas_encrypt_eea2 secu_knas secu_knas_encrypt_eea1 kdf aes128_cmac_encrypt secu_knas_encrypt_eia2" + for f in $simlist ; do + compilations \ + lte-simulators test_$f \ + test_$f $dbin/test_$f.$REL done fi @@ -223,93 +253,61 @@ if [ "$HW" = "EXMIMO" ] ; then echo_info "Compiling Express MIMO 2 board drivers" compilations \ lte_build_oai openair_rf \ - CMakeFiles/openair_rf/openair_rf.ko $dbin/openair_rf.ko \ - $dlog/openair_rf.txt 2>&1 \ - "EXMIMO driver compiled" \ - "EXMIMO driver compilation failed" + CMakeFiles/openair_rf/openair_rf.ko $dbin/openair_rf.ko compilations \ lte_build_oai updatefw \ - updatefw $dbin/updatefw \ - $dlog/updatefw.txt 2>&1 \ - "EXMIMO firmware loader compiled" \ - "EXMIMO firmware loader compilation failed" + updatefw $dbin/updatefw fi if [ "$oaisim" = "1" ] ; then - # oasim compilation - echo_info "Compiling oaisim simulator" - cmake_file=$DIR/oaisim_build_oai/CMakeLists.txt - cp $DIR/oaisim_build_oai/CMakeLists.template $cmake_file - echo "set(XFORMS $XFORMS )" >> $cmake_file - echo "set(RRC_ASN1_VERSION \"${REL}\")" >> $cmake_file - echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >> $cmake_file - echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file + echo_info "Compiling oaisim" compilations \ oaisim_build_oai oaisim \ - oaisim $dbin/oaisim.$REL \ - $dlog/oaisim.$REL.txt 2>&1 \ - "oaisim compiled" \ - "oaisim compilation failed" - + oaisim $dbin/oaisim.$REL + compilations \ + oaisim_build_oai oaisim_mme \ + oaisim_mme $dbin/oaisim_mme.$REL #oai_nw_drv compilations \ oaisim_build_oai oai_nw_drv \ - CMakeFiles/oai_nw_drv/oai_nw_drv.ko $dbin/oai_nw_drv.ko \ - $dlog/oai_nw_drv.txt \ - "oai_nw_drv driver compiled" \ - "oai_nw_drv driver compilation failed" - + CMakeFiles/oai_nw_drv/oai_nw_drv.ko $dbin/oai_nw_drv.ko # nasmesh driver compilation compilations \ oaisim_build_oai nasmesh \ - CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko \ - $dlog/nasmesh.txt \ - "nasmesh driver compiled" \ - "nasmesh driver compilation failed" + CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko fi # EPC compilation ################## if [ "$EPC" = "1" ] ; then echo_info "Compiling EPC" - cmake_file=$DIR/epc_build_oai/CMakeLists.txt - cp $DIR/epc_build_oai/CMakeLists.template $cmake_file - echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >> $cmake_file - echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file + compilations \ epc_build_oai oai_epc \ - oai_epc $dbin/oai_epc.$REL \ - $dlog/oai_epc.$REL.txt \ - "oai_epc compiled" \ - "oai_epc compilation failed" + oai_epc $dbin/oai_epc.$REL + compilations \ + epc_build_oai oai_sgw \ + oai_sgw $dbin/oai_sgw.$REL compilations \ epc_build_oai xt_GTPUAH_lib \ - libxt_GTPUAH_lib.so $dbin \ - $dlog/xt_GTPUAH.txt \ - "library xt_GTPUAH compiled" \ - "library xt_GTPUAH compilation failed" + libxt_GTPUAH_lib.so $dbin compilations \ epc_build_oai xt_GTPURH_lib \ - libxt_GTPURH_lib.so $dbin \ - $dlog/xt_GTPURH.txt \ - "library xt_GTPURH compiled" \ - "library xt_GTPURH compilation failed" + libxt_GTPURH_lib.so $dbin compilations \ epc_build_oai xt_GTPURH \ - CMakeFiles/xt_GTPURH/xt_GTPURH.ko $dbin \ - $dlog/xt_GTPURH.txt \ - "module xt_GTPURH driver compiled" \ - "module xt_GTPURH driver compilation failed" + CMakeFiles/xt_GTPURH/xt_GTPURH.ko $dbin compilations \ epc_build_oai xt_GTPUAH \ - CMakeFiles/xt_GTPUAH/xt_GTPUAH.ko $dbin \ - $dlog/xt_GTPUAH.txt \ - "module xt_GTPUAH driver compiled" \ - "module xt_GTPUAH compilation failed" + CMakeFiles/xt_GTPUAH/xt_GTPUAH.ko $dbin + + compile_hss +fi + +if [ "$INSTALL_SYSTEM_FILES" = "1" ] ;then echo_info "Copying iptables libraries into system directory: /lib/xtables" $SUDO ln -s $dbin/libxt_GTPURH_lib.so /lib/xtables/libxt_GTPURH.so $SUDO ln -s $dbin/libxt_GTPUAH_lib.so /lib/xtables/libxt_GTPUAH.so - compile_hss fi # Install config file @@ -403,7 +401,6 @@ if [ $RUN -ne 0 ]; then 'ENB') if [ $TARGET == "SOFTMODEM" ]; then if [ $HW == "EXMIMO" ]; then - $SUDO chmod 777 $OPENAIR_TARGETS/RT/USER/init_exmimo2.sh $SUDO $OPENAIR_TARGETS/RT/USER/init_exmimo2.sh fi echo "############# running ltesoftmodem #############" diff --git a/cmake_targets/epc_build_oai/CMakeLists.template b/cmake_targets/epc_build_oai/CMakeLists.template index 1bbccf04c9..0e84606f16 100644 --- a/cmake_targets/epc_build_oai/CMakeLists.template +++ b/cmake_targets/epc_build_oai/CMakeLists.template @@ -21,6 +21,7 @@ set ( ENABLE_USE_GTPU_IN_KERNEL True ) set ( ENABLE_USE_MME False ) set ( ENABLE_VCD_FIFO False ) set ( ENB_MODE False ) +set ( EPC_BUILD True ) set ( EXMIMO_IOT False ) set ( HARD_RT False ) set ( JUMBO_FRAME False ) @@ -37,7 +38,7 @@ set ( MIH_C_MEDIEVAL_EXTENSIONS False ) set ( MSG_PRINT False ) set ( MU_RECEIVER False ) set ( NAS_ADDRESS_FIX False ) -set ( NAS_MME False ) +set ( NAS_MME True ) set ( NAS_NETLINK False ) set ( NAS_UE False ) set ( NB_ANTENNAS_RX "2" ) diff --git a/cmake_targets/lte-simulators/CMakeLists.txt b/cmake_targets/lte-simulators/CMakeLists.txt index 1adc15b67f..7e38c9d594 100644 --- a/cmake_targets/lte-simulators/CMakeLists.txt +++ b/cmake_targets/lte-simulators/CMakeLists.txt @@ -9,5 +9,6 @@ set(MU_RECIEVER Flase) set(RANDOM_BF False) set(PBS_SIM False) set(PERFECT_CE False) +set(NAS_UE False) include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt) -- GitLab