mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
Make all targets compile This MR enables us to compile all targets, and does that in one CI test. This closes #726. Now, this should work: cd ~/openairinterface5g mkdir build && cd build cmake .. -GNinja && ninja To achieve this, I did the following: - some targets have been fixed (warnings, errors) - some targets have been removed when they did not seem to serve a good purpose (e.g., an almost empty test) - some targets have been commented (e.g., LTE simulators, some unitary tests) which we maybe want to revive in the future - some targets built when just building with ninja, but not all. For instance, telnetsrv_enb would typically build, but it was missing a dependency. Doing cmake .. -GNinja && ninja telnetsrv_enb would show this (in develop) To help with the last bullet point, there is a script compile_targets.sh that can compile targets independently (and in parallel, to not wait for ages) to show that targets compile properly compile-targets.patch. In almost all cases, the problem is that a specific module uses the logging module, which depends on T, which needs to dynamically create headers. The way to do this is to have a dependency, and many targets use generate_T or {T_LIB} ({} intentional: T might be absent, so then it evaluates to nothing). However, not all do this, and those that depend on T actually don't depend on T, but on the logging module, which in turn depends on T. So in many places, a simple dependency onto log_headers fixes this problem, and generate_T or {T_LIB} simplifies the dependency (but not always). The commits should have more info. Note that at least the targets in FlexRIC do not all compile, at least in the configuration that we use in docker/Dockerfile.build.ubuntu. So for the latter, we cannot build with a simple ninja, but FlexRIC seems to be the only one that does not compile. Since FlexRIC is a separate repository, that needs to be addressed in the corresponding repository.
2155 lines
82 KiB
CMake
2155 lines
82 KiB
CMake
#/*
|
|
# * 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
|
|
# */
|
|
|
|
cmake_minimum_required (VERSION 3.16)
|
|
project (OpenAirInterface LANGUAGES C CXX)
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
#########################################################
|
|
# Base directories, compatible with legacy OAI building #
|
|
#########################################################
|
|
set (OPENAIR_DIR ${CMAKE_SOURCE_DIR})
|
|
|
|
include("cmake_targets/macros.cmake")
|
|
if(NOT DEFINED ENV{CPM_SOURCE_CACHE})
|
|
set(CPM_SOURCE_CACHE ~/.cache/cpm/ CACHE FILEPATH "Directory to download CPM dependencies")
|
|
endif()
|
|
include("cmake_targets/CPM.cmake")
|
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODULE_PATH}")
|
|
|
|
##############################
|
|
### CCache: reduce compilation time
|
|
##############################
|
|
#use ccache if available
|
|
option(CCACHE_ACTIVE "CCache" ON)
|
|
find_program(CCACHE_FOUND ccache)
|
|
if(CCACHE_FOUND AND CCACHE_ACTIVE)
|
|
if(${CMAKE_VERSION} VERSION_LESS "3.4.0")
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
|
|
message(STATUS "Found ccache in ${CCACHE_FOUND}. Using ccache. CMake < 3.4")
|
|
else()
|
|
set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_FOUND}")
|
|
set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_FOUND}")
|
|
message(STATUS "Found ccache in ${CCACHE_FOUND}. Using ccache. CMake >= 3.4")
|
|
endif()
|
|
else()
|
|
message(STATUS "Ccache not found. Consider installing it for faster compilation. Command: sudo apt/dnf install ccache")
|
|
endif()
|
|
|
|
# System packages that are required
|
|
# We use either the cmake buildin, in ubuntu are in: /usr/share/cmake*/Modules/
|
|
# or cmake provide a generic interface to pkg-config that widely used
|
|
###################################
|
|
include(FindPkgConfig)
|
|
|
|
# Check if asn1c is installed, and check if it supports all options we need
|
|
# a user can provide ASN1C_EXEC to override an asn1c to use (e.g., parallel
|
|
# installation)
|
|
find_program(ASN1C_EXEC_PATH asn1c HINTS /opt/asn1c/bin)
|
|
set(ASN1C_EXEC ${ASN1C_EXEC_PATH} CACHE FILEPATH "path to asn1c executable")
|
|
if(NOT ASN1C_EXEC)
|
|
message(FATAL_ERROR "No asn1c found!
|
|
You might want to re-run ./build_oai -I
|
|
Or provide a path to asn1c using
|
|
./build_oai ... --cmake-opt -DASN1C_EXEC=/path/to/asn1c
|
|
")
|
|
endif()
|
|
check_option(${ASN1C_EXEC} -gen-APER ASN1C_EXEC)
|
|
check_option(${ASN1C_EXEC} -no-gen-UPER ASN1C_EXEC)
|
|
check_option(${ASN1C_EXEC} -no-gen-JER ASN1C_EXEC)
|
|
check_option(${ASN1C_EXEC} -no-gen-BER ASN1C_EXEC)
|
|
check_option(${ASN1C_EXEC} -no-gen-OER ASN1C_EXEC)
|
|
|
|
#########################################################
|
|
# Base directories, compatible with legacy OAI building #
|
|
#########################################################
|
|
set (NFAPI_DIR ${OPENAIR_DIR}/nfapi/open-nFAPI)
|
|
set (NFAPI_USER_DIR ${OPENAIR_DIR}/nfapi/oai_integration)
|
|
set (OPENAIR1_DIR ${OPENAIR_DIR}/openair1)
|
|
set (OPENAIR2_DIR ${OPENAIR_DIR}/openair2)
|
|
set (OPENAIR3_DIR ${OPENAIR_DIR}/openair3)
|
|
set (OPENAIR3_DIR ${OPENAIR_DIR}/openair3)
|
|
set (OPENAIR_CMAKE ${OPENAIR_DIR}/cmake_targets)
|
|
|
|
project (OpenAirInterface)
|
|
|
|
####################################################
|
|
# compilation flags
|
|
#############################################
|
|
|
|
#set(CMAKE_BUILD_TYPE "Debug")
|
|
if (CMAKE_BUILD_TYPE STREQUAL "")
|
|
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
|
|
endif()
|
|
message(STATUS "CMAKE_BUILD_TYPE is ${CMAKE_BUILD_TYPE}")
|
|
add_list_string_option(CMAKE_BUILD_TYPE "RelWithDebInfo" "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." Debug Release RelWithDebInfo MinSizeRel)
|
|
|
|
# in case /proc/cpuinfo exists we want to inspect available Intrinsics
|
|
# -so not to go always through SIMDE emulation
|
|
# -so to avoid AVX512 instructions generation by gcc
|
|
if(EXISTS "/proc/cpuinfo" AND NOT CROSS_COMPILE)
|
|
file(STRINGS "/proc/cpuinfo" CPUFLAGS REGEX flags LIMIT_COUNT 1)
|
|
file(STRINGS "/proc/cpuinfo" CPUPART REGEX "CPU part" LIMIT_COUNT 1)
|
|
else()
|
|
message(WARNING "did not find /proc/cpuinfo -- not setting any x86-specific compilation variables")
|
|
endif()
|
|
|
|
eval_boolean(AUTODETECT_AVX512 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx512")
|
|
add_boolean_option(AVX512 ${AUTODETECT_AVX512} "Whether AVX512 intrinsics is available on the host processor" ON)
|
|
|
|
eval_boolean(AUTODETECT_AVX2 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx2")
|
|
add_boolean_option(AVX2 ${AUTODETECT_AVX2} "Whether AVX2 intrinsics is available on the host processor" ON)
|
|
|
|
message(STATUS "CPU architecture is ${CMAKE_SYSTEM_PROCESSOR}")
|
|
if (CROSS_COMPILE)
|
|
message(STATUS "setting as aarch64")
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -lgcc -lrt")
|
|
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
|
# The following intrinsics are assumed to be available on any x86 system
|
|
# (avx, f16c, fma, gnfi, mmx, pclmul, sse, sse2, sse3, xop)
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_F16C_NATIVE -DSIMDE_X86_FMA_NATIVE -DSIMDE_X86_GFNI_NATIVE -DSIMDE_X86_MMX_NATIVE -DSIMDE_X86_PCLMUL_NATIVE -DSIMDE_X86_SSE2_NATIVE -DSIMDE_X86_SSE3_NATIVE -DSIMDE_X86_SSE_NATIVE -DSIMDE_X86_XOP_HAVE_COM_ -DSIMDE_X86_XOP_NATIVE")
|
|
message(STATUS "AVX512 intrinsics are ${AVX512}")
|
|
if(${AVX512})
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX512BW_NATIVE -DSIMDE_X86_AVX512F_NATIVE -DSIMDE_X86_AVX512VL_NATIVE -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512")
|
|
else()
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mno-avx512f -march=native")
|
|
endif()
|
|
message(STATUS "AVX2 intrinsics are ${AVX2}")
|
|
if(${AVX2})
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE")
|
|
endif()
|
|
if (CPUINFO MATCHES "sse4_1")
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_1_NATIVE")
|
|
endif()
|
|
if(CPUINFO MATCHES "sse4_2")
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_2_NATIVE")
|
|
endif()
|
|
if(CPUINFO MATCHES "ssse3")
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSSE3_NATIVE")
|
|
endif()
|
|
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -mfloat-abi=hard -mfpu=neon -lgcc -lrt")
|
|
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
|
# Neoverse CPU part codes available at https://github.com/util-linux/util-linux/blob/master/sys-utils/lscpu-arm.c
|
|
if (CPUPART MATCHES "0xd40") # Neoverse-V1
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -mcpu=neoverse-v1 -lgcc -lrt")
|
|
elseif (CPUPART MATCHES "0xd4f") # Neoverse-V2
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -mcpu=neoverse-v2 -ftree-vectorize -lgcc -lrt")
|
|
elseif (CPUPART MATCHES "0xd0c") # Neoverse-N1
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -mcpu=neoverse-n1 -lgcc -lrt")
|
|
elseif (CPUPART MATCHES "0xd49") # Neoverse-N2
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -mcpu=neoverse-n2 -ftree-vectorize -lgcc -lrt")
|
|
else ()
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -mcpu=native -lgcc -lrt")
|
|
endif()
|
|
else()
|
|
message(FATAL_ERROR "compile for CPU architecture ${CPUARCH}, CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}")
|
|
endif()
|
|
|
|
if (NOT CROSS_COMPILE)
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=native")
|
|
else ()
|
|
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=armv8.2-a")
|
|
endif()
|
|
|
|
# we need -rdynamic to incorporate all symbols in shared objects, see man page
|
|
set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing -rdynamic")
|
|
# GNU C/C++ Compiler might throw many warnings without packed-bitfield-compat, see man page
|
|
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
set(commonOpts "${commonOpts} -Wno-packed-bitfield-compat")
|
|
endif()
|
|
# clang: suppress complaints about unused command line argument (-rdynamic only
|
|
# used during linking)
|
|
if(CMAKE_C_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
set(commonOpts "${commonOpts} -Wno-unused-command-line-argument")
|
|
endif()
|
|
|
|
set(CMAKE_C_FLAGS
|
|
"${C_FLAGS_PROCESSOR} ${commonOpts} -std=gnu11 -funroll-loops ${CMAKE_C_FLAGS}")
|
|
set(CMAKE_CXX_FLAGS
|
|
"${C_FLAGS_PROCESSOR} ${commonOpts} -std=c++11 ${CMAKE_CXX_FLAGS}")
|
|
|
|
|
|
add_boolean_option(SANITIZE_ADDRESS OFF "enable the address sanitizer (ASan)" ON)
|
|
if (SANITIZE_ADDRESS)
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common")
|
|
endif ()
|
|
|
|
add_boolean_option(SANITIZE_THREAD OFF "enable the address sanitizer (TSan)" ON)
|
|
if (SANITIZE_THREAD)
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread -fno-omit-frame-pointer -fno-common")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fno-omit-frame-pointer -fno-common")
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=thread")
|
|
endif()
|
|
|
|
add_boolean_option(SANITIZE_UNDEFINED OFF "enable the undefined behavior sanitizer (UBSan)" ON)
|
|
if (SANITIZE_UNDEFINED)
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined -fno-sanitize-recover=all")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=undefined -fno-sanitize-recover=all")
|
|
endif ()
|
|
|
|
add_boolean_option(SANITIZE_MEMORY OFF "enable the memory sanitizer (MSan, requires clang, incompatible with ASan/UBSan)" ON)
|
|
if(SANITIZE_MEMORY)
|
|
if (SANITIZE_UNDEFINED OR SANITIZE_ADDRESS)
|
|
message(FATAL_ERROR "memory sanitizer cannot coexist with address sanitizer or undefined behavior sanitizer, please disable either MSan or ASan and UBSan")
|
|
endif()
|
|
if (NOT CMAKE_C_COMPILER_ID STREQUAL "Clang" OR NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
|
|
message(FATAL_ERROR "memory sanitizer requires clang, please set clang using CC=/usr/bin/clang CXX=/usr/bin/clang++ ./build_oai ...")
|
|
endif()
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -fsanitize-recover=memory")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=memory -fsanitize-memory-track-origins -fno-omit-frame-pointer -fsanitize-recover=memory")
|
|
endif()
|
|
|
|
add_definitions("-DASN_DISABLE_OER_SUPPORT -DHAVE_CONFIG_H -DHAVE_CONFIG_H_")
|
|
|
|
#########################
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -ggdb2 -Wl,-rpath -Wl,${CMAKE_CURRENT_BINARY_DIR}")
|
|
#########################
|
|
# set a flag for changes in the source code
|
|
# these changes are related to hardcoded path to include .h files
|
|
set(debugOpt "-ggdb2 -DMALLOC_CHECK_=3 -fno-delete-null-pointer-checks")
|
|
set(CMAKE_C_FLAGS_DEBUG "${debugOpt} -O0")
|
|
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${debugOpt} -O2")
|
|
set(CMAKE_C_FLAGS_RELEASE "-O3")
|
|
|
|
# Enable assert() for RelWithDebInfo builds
|
|
string(REPLACE "-DNDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
|
string(REPLACE "-DNDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
|
|
|
set(GIT_BRANCH "UNKNOWN")
|
|
set(GIT_COMMIT_HASH "UNKNOWN")
|
|
set(GIT_COMMIT_DATE "UNKNOWN")
|
|
|
|
find_package(Git)
|
|
if(GIT_FOUND)
|
|
# Get the current working branch
|
|
execute_process(
|
|
COMMAND git rev-parse --abbrev-ref HEAD
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_BRANCH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# Get the latest abbreviated commit hash of the working branch
|
|
execute_process(
|
|
COMMAND git log -1 --format=%h
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_COMMIT_HASH
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
# Get the latest commit date of the working branch
|
|
execute_process(
|
|
COMMAND git log -1 --format=%cd
|
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
|
OUTPUT_VARIABLE GIT_COMMIT_DATE
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
endif()
|
|
|
|
# Debug related options
|
|
#########################################
|
|
# asn1c skeletons have hardcoded this flag to make customized debug logs
|
|
# OAI uses this feature to re-use OAI LOG_I(ASN1, ...)
|
|
# see common/utils/config.h
|
|
add_boolean_option(TRACE_ASN1C_ENC_DEC OFF "Enable ASN1 encoder/decoder debug traces via OAI logging system" ON)
|
|
add_boolean_option(T_TRACER ON "Activate the T tracer, a debugging/monitoring framework" ON)
|
|
add_boolean_option(ENABLE_LTTNG OFF "Activate the LTTNG tracer, a debugging/monitoring framework" ON)
|
|
add_boolean_option(UE_DEBUG_TRACE OFF "Activate UE debug trace" ON)
|
|
add_boolean_option(UE_TIMING_TRACE OFF "Activate UE timing trace" ON)
|
|
|
|
add_boolean_option(TRACY_ENABLE OFF "Enable tracy instrumentation" ON)
|
|
if (TRACY_ENABLE)
|
|
# the tracy version here should match the tracy server version
|
|
# below is latest release as of this commit
|
|
CPMAddPackage("gh:wolfpld/tracy#0.12.2")
|
|
endif()
|
|
|
|
set (OCP_ITTI ${OPENAIR_DIR}/common/utils/ocp_itti)
|
|
add_library(ITTI ${OCP_ITTI}/intertask_interface.cpp)
|
|
target_link_libraries(ITTI PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
|
|
# asn1c skeletons need this
|
|
add_definitions(-DHAVE_NETINET_IN_H)
|
|
|
|
#########################
|
|
##### E2 AGENT
|
|
#########################
|
|
set(E2_AGENT "OFF" CACHE STRING "O-RAN-compliant E2 Agent")
|
|
set_property(CACHE E2_AGENT PROPERTY STRINGS "ON" "OFF")
|
|
|
|
if (E2_AGENT)
|
|
set(E2AP_VERSION "E2AP_V2" CACHE STRING "E2AP version")
|
|
set_property(CACHE E2AP_VERSION PROPERTY STRINGS "E2AP_V1" "E2AP_V2" "E2AP_V3")
|
|
message(STATUS "Selected E2AP version: ${E2AP_VERSION}")
|
|
|
|
set(KPM_VERSION "KPM_V2_03" CACHE STRING "The KPM SM version to use")
|
|
set_property(CACHE KPM_VERSION PROPERTY STRINGS "KPM_V2_03" "KPM_V3_00")
|
|
message(STATUS "Selected KPM version: ${KPM_VERSION}")
|
|
endif()
|
|
|
|
add_boolean_option(ENABLE_IMSCOPE OFF "Enable phy scope based on imgui" OFF)
|
|
add_boolean_option(ENABLE_IMSCOPE_RECORD OFF "Enable recording IQ data for imscope" OFF)
|
|
|
|
##################################################
|
|
# ASN.1 grammar C code generation & dependencies #
|
|
##################################################
|
|
|
|
# RRC
|
|
######
|
|
add_library(lte_rrc
|
|
${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1_msg.c
|
|
${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c)
|
|
target_link_libraries(lte_rrc PUBLIC asn1_lte_rrc)
|
|
target_link_libraries(lte_rrc PRIVATE nr_rrc)
|
|
|
|
|
|
#NR RRC
|
|
#######
|
|
add_library(nr_rrc ${OPENAIR2_DIR}/RRC/NR/MESSAGES/asn1_msg.c)
|
|
target_link_libraries(nr_rrc PUBLIC asn1_nr_rrc asn1_lte_rrc)
|
|
|
|
# S1AP
|
|
##############
|
|
set(S1AP_DIR ${OPENAIR3_DIR}/S1AP)
|
|
include_directories ("${S1AP_DIR}")
|
|
add_library(s1ap
|
|
${S1AP_DIR}/s1ap_eNB.c
|
|
${S1AP_DIR}/s1ap_eNB_context_management_procedures.c
|
|
${S1AP_DIR}/s1ap_eNB_decoder.c
|
|
${S1AP_DIR}/s1ap_eNB_encoder.c
|
|
${S1AP_DIR}/s1ap_eNB_handlers.c
|
|
${S1AP_DIR}/s1ap_eNB_itti_messaging.c
|
|
${S1AP_DIR}/s1ap_eNB_management_procedures.c
|
|
${S1AP_DIR}/s1ap_eNB_nas_procedures.c
|
|
${S1AP_DIR}/s1ap_eNB_nnsf.c
|
|
${S1AP_DIR}/s1ap_eNB_overload.c
|
|
${S1AP_DIR}/s1ap_eNB_trace.c
|
|
${S1AP_DIR}/s1ap_eNB_ue_context.c
|
|
)
|
|
target_link_libraries(s1ap PUBLIC asn1_s1ap)
|
|
target_link_libraries(s1ap PRIVATE nr_rrc asn1_nr_rrc_hdrs lte_rrc)
|
|
|
|
# NGAP
|
|
##############
|
|
set(NGAP_DIR ${OPENAIR3_DIR}/NGAP)
|
|
include_directories ("${NGAP_DIR}")
|
|
add_library(ngap
|
|
${NGAP_DIR}/ngap_gNB.c
|
|
${NGAP_DIR}/ngap_common.c
|
|
${NGAP_DIR}/ngap_gNB_context_management_procedures.c
|
|
${NGAP_DIR}/ngap_gNB_mobility_management.c
|
|
${NGAP_DIR}/ngap_gNB_decoder.c
|
|
${NGAP_DIR}/ngap_gNB_encoder.c
|
|
${NGAP_DIR}/ngap_gNB_handlers.c
|
|
${NGAP_DIR}/ngap_gNB_itti_messaging.c
|
|
${NGAP_DIR}/ngap_gNB_management_procedures.c
|
|
${NGAP_DIR}/ngap_gNB_nas_procedures.c
|
|
${NGAP_DIR}/ngap_gNB_nnsf.c
|
|
${NGAP_DIR}/ngap_gNB_overload.c
|
|
${NGAP_DIR}/ngap_gNB_trace.c
|
|
${NGAP_DIR}/ngap_gNB_ue_context.c
|
|
)
|
|
target_link_libraries(ngap PUBLIC asn1_ngap)
|
|
target_link_libraries(ngap PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
|
|
#M2AP
|
|
##############
|
|
set(M2AP_DIR ${OPENAIR2_DIR}/M2AP)
|
|
add_library(m2ap
|
|
${M2AP_DIR}/m2ap_common.c
|
|
${M2AP_DIR}/m2ap_eNB.c
|
|
${M2AP_DIR}/m2ap_MCE.c
|
|
${M2AP_DIR}/m2ap_decoder.c
|
|
${M2AP_DIR}/m2ap_encoder.c
|
|
${M2AP_DIR}/m2ap_MCE_handler.c
|
|
${M2AP_DIR}/m2ap_eNB_handler.c
|
|
${M2AP_DIR}/m2ap_itti_messaging.c
|
|
${M2AP_DIR}/m2ap_eNB_management_procedures.c
|
|
${M2AP_DIR}/m2ap_eNB_generate_messages.c
|
|
${M2AP_DIR}/m2ap_MCE_management_procedures.c
|
|
${M2AP_DIR}/m2ap_MCE_generate_messages.c
|
|
${M2AP_DIR}/m2ap_ids.c
|
|
${M2AP_DIR}/m2ap_timers.c
|
|
${M2AP_DIR}/m2ap_MCE_interface_management.c
|
|
${M2AP_DIR}/m2ap_eNB_interface_management.c
|
|
)
|
|
target_link_libraries(m2ap PUBLIC asn1_m2ap)
|
|
target_link_libraries(m2ap PRIVATE lte_rrc nr_rrc)
|
|
target_include_directories(m2ap PRIVATE "${M2AP_DIR}")
|
|
|
|
#M3AP
|
|
##############
|
|
set(M3AP_DIR ${OPENAIR3_DIR}/M3AP)
|
|
add_library(m3ap
|
|
${M3AP_DIR}/m3ap_common.c
|
|
${M3AP_DIR}/m3ap_decoder.c
|
|
${M3AP_DIR}/m3ap_encoder.c
|
|
${M3AP_DIR}/m3ap_MCE_handler.c
|
|
${M3AP_DIR}/m3ap_MME_handler.c
|
|
${M3AP_DIR}/m3ap_MME.c
|
|
${M3AP_DIR}/m3ap_MME_management_procedures.c
|
|
${M3AP_DIR}/m3ap_MME_interface_management.c
|
|
${M3AP_DIR}/m3ap_MCE.c
|
|
${M3AP_DIR}/m3ap_MCE_management_procedures.c
|
|
${M3AP_DIR}/m3ap_MCE_interface_management.c
|
|
${M3AP_DIR}/m3ap_itti_messaging.c
|
|
${M3AP_DIR}/m3ap_ids.c
|
|
${M3AP_DIR}/m3ap_timers.c
|
|
)
|
|
target_link_libraries(m3ap PUBLIC asn1_m3ap)
|
|
target_link_libraries(m3ap PRIVATE m2ap)
|
|
target_link_libraries(m3ap PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
target_include_directories(m3ap PUBLIC "${M3AP_DIR}")
|
|
|
|
#X2AP
|
|
##############
|
|
set(X2AP_DIR ${OPENAIR2_DIR}/X2AP)
|
|
include_directories ("${X2AP_DIR}")
|
|
add_library(x2ap
|
|
${X2AP_DIR}/x2ap_common.c
|
|
${X2AP_DIR}/x2ap_eNB.c
|
|
${X2AP_DIR}/x2ap_eNB_decoder.c
|
|
${X2AP_DIR}/x2ap_eNB_encoder.c
|
|
${X2AP_DIR}/x2ap_eNB_handler.c
|
|
${X2AP_DIR}/x2ap_eNB_itti_messaging.c
|
|
${X2AP_DIR}/x2ap_eNB_management_procedures.c
|
|
${X2AP_DIR}/x2ap_eNB_generate_messages.c
|
|
${X2AP_DIR}/x2ap_ids.c
|
|
${X2AP_DIR}/x2ap_timers.c
|
|
)
|
|
target_link_libraries(x2ap PUBLIC asn1_x2ap)
|
|
target_link_libraries(x2ap PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
|
|
# F1AP
|
|
##############
|
|
set(F1AP_DIR ${OPENAIR2_DIR}/F1AP)
|
|
add_library(f1ap
|
|
${F1AP_DIR}/f1ap_common.c
|
|
${F1AP_DIR}/f1ap_ids.c
|
|
${F1AP_DIR}/f1ap_cu_interface_management.c
|
|
${F1AP_DIR}/f1ap_cu_paging.c
|
|
${F1AP_DIR}/f1ap_cu_rrc_message_transfer.c
|
|
${F1AP_DIR}/f1ap_cu_task.c
|
|
${F1AP_DIR}/f1ap_cu_ue_context_management.c
|
|
${F1AP_DIR}/f1ap_du_interface_management.c
|
|
${F1AP_DIR}/f1ap_du_paging.c
|
|
${F1AP_DIR}/f1ap_du_rrc_message_transfer.c
|
|
${F1AP_DIR}/f1ap_du_task.c
|
|
${F1AP_DIR}/f1ap_du_ue_context_management.c
|
|
${F1AP_DIR}/f1ap_encoder.c
|
|
${F1AP_DIR}/f1ap_handlers.c
|
|
${F1AP_DIR}/f1ap_itti_messaging.c)
|
|
target_include_directories(f1ap PUBLIC F1AP_DIR)
|
|
target_link_libraries(f1ap PUBLIC asn1_f1ap GTPV1U)
|
|
target_link_libraries(f1ap PRIVATE ngap nr_rrc HASHTABLE f1ap_lib)
|
|
target_include_directories(f1ap PRIVATE ${F1AP_DIR}/lib)
|
|
|
|
# LPP
|
|
##############
|
|
# target asn1_lpp in openair3/LPP/MESSAGES/CMakeLists.txt used below
|
|
|
|
# Hardware dependant options
|
|
###################################
|
|
add_list1_option(NB_ANTENNAS_RX "4" "Number of antennas in reception" "1" "2" "4")
|
|
add_list1_option(NB_ANTENNAS_TX "4" "Number of antennas in transmission" "1" "2" "4")
|
|
|
|
set (CONFIG_ROOTDIR ${OPENAIR_DIR}/common/config)
|
|
add_library(config_internals OBJECT
|
|
${CONFIG_ROOTDIR}/config_common.c
|
|
)
|
|
|
|
add_library(CONFIG_LIB
|
|
${CONFIG_ROOTDIR}/config_load_configmodule.c
|
|
${CONFIG_ROOTDIR}/config_userapi.c
|
|
${CONFIG_ROOTDIR}/config_cmdline.c
|
|
)
|
|
target_link_libraries(CONFIG_LIB PRIVATE config_internals dl UTIL)
|
|
|
|
# CONFIG_LIB is a wrapper around a particular config implementation, default is
|
|
# libconfig in params_libconfig below
|
|
pkg_check_modules(libconfig REQUIRED libconfig)
|
|
add_library(params_libconfig MODULE ${CONFIG_ROOTDIR}/libconfig/config_libconfig.c)
|
|
target_include_directories(params_libconfig PRIVATE ${libconfig_INCLUDE_DIRS})
|
|
target_link_libraries(params_libconfig PRIVATE config_internals ${libconfig_LIBRARIES})
|
|
|
|
# shared library loader
|
|
add_library(shlib_loader OBJECT common/utils/load_module_shlib.c)
|
|
target_link_libraries(shlib_loader PRIVATE CONFIG_LIB)
|
|
|
|
include_directories ("${OPENAIR_DIR}/radio/COMMON")
|
|
|
|
##############################################################
|
|
# ???!!! TO BE DOCUMENTED OPTIONS !!!???
|
|
##############################################################
|
|
|
|
add_boolean_option(UE_EXPANSION OFF "enable UE_EXPANSION with max 256 UE" ON)
|
|
add_boolean_option(PHY_TX_THREAD OFF "enable UE_EXPANSION with max 256 UE" ON)
|
|
add_boolean_option(PRE_SCD_THREAD OFF "enable UE_EXPANSION with max 256 UE" ON)
|
|
|
|
##########################
|
|
# SCHEDULING/REAL-TIME/PERF options
|
|
##########################
|
|
add_boolean_option(ENABLE_USE_CPU_EXECUTION_TIME OFF "Add data in vcd traces: disable it if perf issues" ON)
|
|
add_boolean_option(ENABLE_VCD OFF "always true now, time measurements of proc calls and var displays" ON)
|
|
add_boolean_option(ENABLE_VCD_FIFO OFF "time measurements of proc calls and var displays sent to FIFO (one more thread)" ON)
|
|
|
|
##########################
|
|
# PHY options
|
|
##########################
|
|
add_integer_option(MAX_NUM_CCs 1 "Carrier component data arrays size (oai doesn't support carrier aggregation for now)" ON)
|
|
add_boolean_option(SMBV OFF "Rohde&Schwarz SMBV100A vector signal generator" ON)
|
|
add_boolean_option(DEBUG_PHY OFF "Enable PHY layer debugging options" ON)
|
|
add_boolean_option(DEBUG_PHY_PROC OFF "Enable debugging of PHY layer procedures" ON)
|
|
|
|
##########################
|
|
# NAS LAYER OPTIONS
|
|
##########################
|
|
add_boolean_option(NAS_BUILT_IN_UE ON "UE NAS layer present in this executable" ON)
|
|
|
|
##########################
|
|
# RRC LAYER OPTIONS
|
|
##########################
|
|
add_boolean_option(RRC_DEFAULT_RAB_IS_AM ON "set the LTE RLC mode to AM for the default bearer, otherwise it is UM." ON)
|
|
|
|
# add the binary tree to the search path for include files
|
|
# We will find common/oai_version.h after generation in target directory
|
|
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
# Legacy exact order
|
|
|
|
include_directories("${OPENAIR_DIR}/executables")
|
|
include_directories("${OPENAIR2_DIR}/COMMON")
|
|
include_directories("${OPENAIR2_DIR}/UTIL")
|
|
include_directories("${OPENAIR3_DIR}/COMMON")
|
|
include_directories("${OPENAIR3_DIR}/UTILS")
|
|
include_directories("${NFAPI_DIR}/nfapi/public_inc")
|
|
include_directories("${NFAPI_DIR}/common/public_inc")
|
|
include_directories("${NFAPI_DIR}/pnf/public_inc")
|
|
include_directories("${NFAPI_DIR}/nfapi/inc")
|
|
include_directories("${NFAPI_DIR}/sim_common/inc")
|
|
include_directories("${NFAPI_DIR}/pnf_sim/inc")
|
|
include_directories("${OPENAIR1_DIR}")
|
|
include_directories("${OPENAIR2_DIR}")
|
|
include_directories("${OPENAIR3_DIR}/NAS/TOOLS")
|
|
include_directories("${OPENAIR2_DIR}/ENB_APP")
|
|
include_directories("${OPENAIR2_DIR}/GNB_APP")
|
|
include_directories("${OPENAIR2_DIR}/MCE_APP")
|
|
include_directories("${OPENAIR2_DIR}/LAYER2/RLC")
|
|
include_directories("${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0")
|
|
include_directories("${OPENAIR2_DIR}/RRC/LTE/MESSAGES")
|
|
include_directories("${OPENAIR2_DIR}/RRC/LTE")
|
|
include_directories("${OPENAIR_DIR}/common/utils")
|
|
include_directories("${OPENAIR_DIR}/common/utils/collection")
|
|
include_directories("${OPENAIR_DIR}/common/utils/ocp_itti")
|
|
include_directories("${OPENAIR3_DIR}/NAS/COMMON")
|
|
include_directories("${OPENAIR3_DIR}/NAS/COMMON/API/NETWORK")
|
|
include_directories("${OPENAIR3_DIR}/NAS/COMMON/EMM/MSG")
|
|
include_directories("${OPENAIR3_DIR}/NAS/COMMON/ESM/MSG")
|
|
include_directories("${OPENAIR3_DIR}/NAS/UE/ESM")
|
|
include_directories("${OPENAIR3_DIR}/NAS/UE/EMM")
|
|
include_directories("${OPENAIR3_DIR}/NAS/UE/API/USER")
|
|
include_directories("${OPENAIR3_DIR}/NAS/COMMON/IES")
|
|
include_directories("${OPENAIR3_DIR}/NAS/COMMON/UTIL")
|
|
include_directories("${OPENAIR3_DIR}/SECU")
|
|
include_directories("${OPENAIR3_DIR}/SCTP")
|
|
include_directories("${OPENAIR3_DIR}/S1AP")
|
|
include_directories("${OPENAIR2_DIR}/X2AP")
|
|
include_directories("${OPENAIR2_DIR}/M2AP")
|
|
include_directories("${OPENAIR2_DIR}/F1AP")
|
|
include_directories("${OPENAIR3_DIR}/ocp-gtpu")
|
|
include_directories("${OPENAIR3_DIR}/M3AP")
|
|
include_directories("${OPENAIR3_DIR}/MME_APP")
|
|
include_directories("${OPENAIR_DIR}/radio/COMMON")
|
|
include_directories("${OPENAIR2_DIR}/UTIL/MATH")
|
|
include_directories("${OPENAIR2_DIR}/UTIL/OTG")
|
|
include_directories("${OPENAIR2_DIR}/UTIL/OPT")
|
|
include_directories("${OPENAIR_DIR}")
|
|
|
|
###########
|
|
# Utilities
|
|
###############
|
|
|
|
# include T directory even if the T is off because T macros are in the code
|
|
# no matter what. Note: some files are generated, so we have both source and
|
|
# binary directories
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/common/utils/T
|
|
${CMAKE_CURRENT_BINARY_DIR}/common/utils/T)
|
|
|
|
# set the T_LIB name to T if the target exists, otherwise leave empty
|
|
set(T_LIB $<TARGET_NAME_IF_EXISTS:T>)
|
|
|
|
add_library(HASHTABLE
|
|
${OPENAIR_DIR}/common/utils/hashtable/hashtable.c
|
|
${OPENAIR_DIR}/common/utils/hashtable/obj_hashtable.c
|
|
)
|
|
include_directories(${OPENAIR_DIR}/common/utils/hashtable)
|
|
|
|
add_library(UTIL
|
|
${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
|
|
${OPENAIR2_DIR}/UTIL/OPT/probe.c
|
|
)
|
|
|
|
pkg_check_modules(cap libcap)
|
|
if (cap_FOUND)
|
|
# see system.c for more info
|
|
target_link_libraries(UTIL PRIVATE cap)
|
|
target_compile_definitions(UTIL PRIVATE HAVE_LIB_CAP)
|
|
endif()
|
|
target_link_libraries(UTIL PUBLIC ${T_LIB} pthread LOG thread-pool utils barrier actor)
|
|
target_link_libraries(UTIL PUBLIC instrumentation)
|
|
|
|
set(SECURITY_SRC
|
|
${OPENAIR3_DIR}/SECU/secu_defs.c
|
|
${OPENAIR3_DIR}/SECU/kdf.c
|
|
${OPENAIR3_DIR}/SECU/aes_128_ctr.c
|
|
${OPENAIR3_DIR}/SECU/aes_128_cbc_cmac.c
|
|
${OPENAIR3_DIR}/SECU/aes_128_ecb.c
|
|
${OPENAIR3_DIR}/SECU/sha_256_hmac.c
|
|
${OPENAIR3_DIR}/SECU/rijndael.c
|
|
${OPENAIR3_DIR}/SECU/snow3g.c
|
|
${OPENAIR3_DIR}/SECU/key_nas_deriver.c
|
|
${OPENAIR3_DIR}/SECU/nas_stream_eea0.c
|
|
${OPENAIR3_DIR}/SECU/nas_stream_eea1.c
|
|
${OPENAIR3_DIR}/SECU/nas_stream_eia1.c
|
|
${OPENAIR3_DIR}/SECU/nas_stream_eea2.c
|
|
${OPENAIR3_DIR}/SECU/nas_stream_eia2.c
|
|
)
|
|
|
|
pkg_check_modules(OpenSSL openssl REQUIRED)
|
|
add_library(SECURITY ${SECURITY_SRC} $<TARGET_OBJECTS:ds>)
|
|
target_include_directories(SECURITY PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
|
|
target_link_libraries(SECURITY PRIVATE ${OpenSSL_LIBRARIES})
|
|
|
|
# Physical Channel Procedures Scheduling
|
|
################################"
|
|
set(SCHED_SRC
|
|
${OPENAIR1_DIR}/SCHED/fapi_l1.c
|
|
${OPENAIR1_DIR}/SCHED/phy_procedures_lte_eNb.c
|
|
${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
|
|
)
|
|
add_library(SCHED_LIB ${SCHED_SRC})
|
|
target_link_libraries(SCHED_LIB PRIVATE asn1_lte_rrc_hdrs)
|
|
|
|
set(SCHED_NR_SRC
|
|
${OPENAIR1_DIR}/SCHED_NR/fapi_nr_l1.c
|
|
${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_gNB.c
|
|
${OPENAIR1_DIR}/SCHED_NR/nr_prach_procedures.c
|
|
${OPENAIR1_DIR}/SCHED_NR/phy_frame_config_nr.c
|
|
)
|
|
add_library(SCHED_NR_LIB ${SCHED_NR_SRC})
|
|
target_link_libraries(SCHED_NR_LIB PRIVATE asn1_nr_rrc_hdrs UTIL)
|
|
|
|
set(SCHED_SRC_RU
|
|
${OPENAIR1_DIR}/SCHED/ru_procedures.c
|
|
${OPENAIR1_DIR}/SCHED_NR/nr_ru_procedures.c
|
|
${OPENAIR1_DIR}/SCHED/prach_procedures.c
|
|
)
|
|
add_library(SCHED_RU_LIB ${SCHED_SRC_RU})
|
|
target_link_libraries(SCHED_RU_LIB PRIVATE asn1_lte_rrc_hdrs)
|
|
|
|
set(SCHED_SRC_UE
|
|
${OPENAIR1_DIR}/SCHED_UE/phy_procedures_lte_ue.c
|
|
${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
|
|
${OPENAIR1_DIR}/SCHED_UE/pucch_pc.c
|
|
${OPENAIR1_DIR}/SCHED_UE/pusch_pc.c
|
|
${OPENAIR1_DIR}/SCHED_UE/srs_pc.c
|
|
)
|
|
add_library(SCHED_UE_LIB ${SCHED_SRC_UE})
|
|
target_link_libraries(SCHED_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs UTIL)
|
|
|
|
set(SCHED_SRC_NR_UE
|
|
${OPENAIR1_DIR}/SCHED_NR_UE/phy_procedures_nr_ue.c
|
|
${OPENAIR1_DIR}/SCHED_NR_UE/phy_procedures_nr_ue_sl.c
|
|
${OPENAIR1_DIR}/SCHED_NR_UE/fapi_nr_ue_l1.c
|
|
${OPENAIR1_DIR}/SCHED_NR_UE/harq_nr.c
|
|
${OPENAIR1_DIR}/SCHED_NR_UE/pucch_uci_ue_nr.c
|
|
)
|
|
add_library(SCHED_NR_UE_LIB ${SCHED_SRC_NR_UE})
|
|
target_link_libraries(SCHED_NR_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs UTIL)
|
|
|
|
# nFAPI
|
|
#################################
|
|
set(NFAPI_SRC
|
|
${NFAPI_DIR}/nfapi/src/nfapi_p4.c
|
|
${NFAPI_DIR}/nfapi/src/nfapi_p5.c
|
|
${NFAPI_DIR}/nfapi/src/nfapi_p7.c
|
|
)
|
|
add_library(NFAPI_LIB ${NFAPI_SRC})
|
|
target_link_libraries(NFAPI_LIB PUBLIC nfapi_common)
|
|
target_link_libraries(NFAPI_LIB PUBLIC nr_fapi_p5 nr_fapi_p7)
|
|
|
|
if(OAI_WLS)
|
|
target_compile_definitions(NFAPI_LIB PRIVATE ENABLE_WLS)
|
|
else()
|
|
target_compile_definitions(NFAPI_LIB PRIVATE ENABLE_SOCKET)
|
|
endif()
|
|
include_directories(${NFAPI_DIR}/nfapi/public_inc)
|
|
include_directories(${NFAPI_DIR}/nfapi/inc)
|
|
|
|
set(NFAPI_PNF_SRC
|
|
${NFAPI_DIR}/pnf/src/pnf.c
|
|
${NFAPI_DIR}/pnf/src/pnf_interface.c
|
|
${NFAPI_DIR}/pnf/src/pnf_p7.c
|
|
${NFAPI_DIR}/pnf/src/pnf_p7_interface.c
|
|
)
|
|
add_library(NFAPI_PNF_LIB ${NFAPI_PNF_SRC})
|
|
target_link_libraries(NFAPI_PNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
target_link_libraries(NFAPI_PNF_LIB PUBLIC nr_fapi_p7)
|
|
|
|
if(OAI_WLS)
|
|
target_compile_definitions(NFAPI_PNF_LIB PRIVATE ENABLE_WLS)
|
|
endif()
|
|
include_directories(${NFAPI_DIR}/pnf/public_inc)
|
|
include_directories(${NFAPI_DIR}/pnf/inc)
|
|
|
|
set(NFAPI_VNF_SRC
|
|
${NFAPI_DIR}/vnf/src/vnf.c
|
|
${NFAPI_DIR}/vnf/src/vnf_interface.c
|
|
${NFAPI_DIR}/vnf/src/vnf_p7.c
|
|
${NFAPI_DIR}/vnf/src/vnf_p7_interface.c
|
|
)
|
|
add_library(NFAPI_VNF_LIB ${NFAPI_VNF_SRC})
|
|
target_link_libraries(NFAPI_VNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
target_link_libraries(NFAPI_VNF_LIB PRIVATE nr_fapi_p5 nr_fapi_p7)
|
|
if(OAI_AERIAL)
|
|
target_compile_definitions(NFAPI_VNF_LIB PRIVATE ENABLE_AERIAL)
|
|
endif()
|
|
include_directories(${NFAPI_DIR}/vnf/public_inc)
|
|
include_directories(${NFAPI_DIR}/vnf/inc)
|
|
|
|
if(OAI_WLS)
|
|
target_compile_definitions(NFAPI_VNF_LIB PRIVATE ENABLE_WLS)
|
|
endif()
|
|
# nFAPI user defined code
|
|
#############################
|
|
set(NFAPI_USER_SRC
|
|
${NFAPI_USER_DIR}/nfapi.c
|
|
${NFAPI_USER_DIR}/nfapi_pnf.c
|
|
${NFAPI_USER_DIR}/nfapi_vnf.c
|
|
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
|
)
|
|
add_library(NFAPI_USER_LIB ${NFAPI_USER_SRC})
|
|
if(OAI_WLS)
|
|
target_compile_definitions(NFAPI_USER_LIB PRIVATE ENABLE_WLS)
|
|
elseif (OAI_AERIAL)
|
|
target_compile_definitions(NFAPI_USER_LIB PRIVATE ENABLE_AERIAL)
|
|
else()
|
|
target_compile_definitions(NFAPI_USER_LIB PRIVATE ENABLE_SOCKET)
|
|
endif()
|
|
target_link_libraries(NFAPI_USER_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs UTIL)
|
|
target_link_libraries(NFAPI_USER_LIB PRIVATE nr_fapi_p7)
|
|
include_directories(${NFAPI_USER_DIR})
|
|
|
|
# Layer 1
|
|
#############################
|
|
set(PHY_POLARSRC
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_init.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_bitwise_operations.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_crc_byte.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_interleaving_pattern.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_kernal_operation.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_kronecker_power_matrices.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_matrix_and_array.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_procedures.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_sequence_pattern.c
|
|
)
|
|
set(PHY_SMALLBLOCKSRC
|
|
${OPENAIR1_DIR}/PHY/CODING/nrSmallBlock/encodeSmallBlock.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrSmallBlock/decodeSmallBlock.c
|
|
)
|
|
set(PHY_TURBOIF
|
|
${OPENAIR1_DIR}/PHY/CODING/coding_load.c
|
|
)
|
|
|
|
set(PHY_NRLDPC_CODINGIF
|
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_coding/nrLDPC_coding_interface_load.c
|
|
)
|
|
|
|
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts_neon.c)
|
|
|
|
add_library(crc_byte OBJECT ${OPENAIR1_DIR}/PHY/CODING/crc_byte.c)
|
|
|
|
set(PHY_SRC_COMMON
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools_common.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/get_pmi.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/group_hopping.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/phich_common.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pcfich_common.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pmch_common.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/power_control.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/prach_common.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pucch_common.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dlsch_scrambling.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/srs_modulation.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/ofdm_mod.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_time.c
|
|
${OPENAIR1_DIR}/PHY/LTE_REFSIG/lte_dl_cell_spec.c
|
|
${OPENAIR1_DIR}/PHY/LTE_REFSIG/lte_dl_uespec.c
|
|
${OPENAIR1_DIR}/PHY/LTE_REFSIG/lte_gold.c
|
|
${OPENAIR1_DIR}/PHY/LTE_REFSIG/lte_gold_mbsfn.c
|
|
${OPENAIR1_DIR}/PHY/LTE_REFSIG/lte_dl_mbsfn.c
|
|
${OPENAIR1_DIR}/PHY/LTE_REFSIG/lte_ul_ref.c
|
|
${OPENAIR1_DIR}/PHY/CODING/lte_segmentation.c
|
|
${OPENAIR1_DIR}/PHY/CODING/ccoding_byte.c
|
|
${OPENAIR1_DIR}/PHY/CODING/ccoding_byte_lte.c
|
|
${OPENAIR1_DIR}/PHY/CODING/3gpplte_sse.c
|
|
${PHY_TURBOIF}
|
|
${OPENAIR1_DIR}/PHY/CODING/lte_rate_matching.c
|
|
${OPENAIR1_DIR}/PHY/CODING/viterbi.c
|
|
${OPENAIR1_DIR}/PHY/CODING/viterbi_lte.c
|
|
${OPENAIR1_DIR}/PHY/INIT/init_top.c
|
|
${OPENAIR1_DIR}/PHY/INIT/lte_parms.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/dfts_load.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/cdot_prod.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/dB_routines.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/sqrt.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/get_sin_cos.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/oai_arith_operations.c
|
|
${OPENAIR1_DIR}/PHY/log_tools.c
|
|
)
|
|
|
|
set(PHY_SRC
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pss.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss_gen.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pilots.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pilots_mbsfn.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dlsch_coding.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dlsch_modulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pbch.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/edci.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/phich.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pcfich.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pucch.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pmch.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_decoding.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/rar_tools.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/uci_tools.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
|
|
${OPENAIR1_DIR}/PHY/INIT/lte_init.c
|
|
)
|
|
|
|
set(PHY_SRC_RU
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/if4_tools.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/drs_modulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_nr.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/gen_75KHz.cpp
|
|
${OPENAIR1_DIR}/PHY/MODULATION/beamforming.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/compute_bf_weights.c
|
|
${OPENAIR1_DIR}/PHY/INIT/lte_init_ru.c
|
|
${OPENAIR1_DIR}/PHY/INIT/nr_init_ru.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/prach.c
|
|
|
|
)
|
|
|
|
set(PHY_SRC_UE
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/sss_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss_gen.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/linear_preprocessing_rec.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_decoding.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dci_tools_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/uci_tools_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/pbch_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dci_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/phich_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/pcfich_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/pucch_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/prach_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/pmch_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/pch_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/slss.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/sldch.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/slsch.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/drs_modulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/ulsch_modulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/ulsch_coding.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/rar_tools_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/initial_sync.c
|
|
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_mbsfn.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_time.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_dl_bf_channel_estimation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_est_freq_offset.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ue_measurements.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/adjust_gain.c
|
|
${OPENAIR1_DIR}/PHY/INIT/lte_init_ue.c
|
|
)
|
|
|
|
set(PHY_NR_SRC_COMMON
|
|
${OPENAIR1_DIR}/PHY/CODING/nr_segmentation.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
|
|
${OPENAIR1_DIR}/PHY/nr_phy_common/src/nr_phy_common_csirs.c
|
|
${OPENAIR1_DIR}/PHY/nr_phy_common/src/nr_phy_common_srs.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/refsig.c
|
|
)
|
|
|
|
set(PHY_NR_SRC
|
|
${OPENAIR1_DIR}/PHY/INIT/nr_init.c
|
|
${OPENAIR1_DIR}/PHY/INIT/nr_parms.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/nr_modulation.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prs.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_pss.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sss.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_pbch.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dci.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dci_tools.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch_tools.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch_coding.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_dmrs.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
|
|
${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_freq_equalization.c
|
|
${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_measurements_gNB.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/cdot_prod.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/dB_routines.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/sqrt.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/oai_arith_operations.c
|
|
${PHY_POLARSRC}
|
|
${PHY_SMALLBLOCKSRC}
|
|
${PHY_NRLDPC_CODINGIF}
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/pucch_rx.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/srs_rx.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_uci_tools_common.c
|
|
)
|
|
set(PHY_NR_UE_SRC
|
|
${OPENAIR1_DIR}/PHY/INIT/nr_parms.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/nr_modulation.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/pss_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/sss_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/cic_filter_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_initial_sync_sl.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ue_rf_helpers.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_pbch.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_psbch_rx.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_psbch_tx.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_dmrs.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_prach.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/dci_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/pucch_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/csi_rx.c
|
|
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_uci_tools_common.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold_ue.c
|
|
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
|
|
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_adjust_gain.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/cdot_prod.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/dB_routines.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/sqrt.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/oai_arith_operations.c
|
|
${OPENAIR1_DIR}/PHY/INIT/nr_init_ue.c
|
|
${PHY_POLARSRC}
|
|
${PHY_SMALLBLOCKSRC}
|
|
${PHY_NRLDPC_CODINGIF}
|
|
)
|
|
|
|
|
|
if (${SMBV})
|
|
set(PHY_SRC "${PHY_SRC} ${OPENAIR1_DIR}/PHY/TOOLS/smbv.c")
|
|
endif (${SMBV})
|
|
|
|
add_library(PHY_COMMON ${PHY_SRC_COMMON})
|
|
target_link_libraries(PHY_COMMON
|
|
PRIVATE shlib_loader asn1_lte_rrc_hdrs crc_byte
|
|
PUBLIC UTIL
|
|
)
|
|
add_dependencies(PHY_COMMON dfts)
|
|
|
|
add_library(PHY ${PHY_SRC})
|
|
target_link_libraries(PHY PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
|
|
pkg_check_modules(blas REQUIRED blas)
|
|
pkg_check_modules(lapacke REQUIRED lapacke)
|
|
|
|
add_library(PHY_UE ${PHY_SRC_UE})
|
|
target_link_libraries(PHY_UE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs UTIL)
|
|
# RHEL needs also cblas, but Ubuntu does not have it. So `cblas_LIBRARIES` will
|
|
# be empty for Ubuntu, a no-op
|
|
pkg_check_modules(cblas cblas)
|
|
target_link_libraries(PHY_UE PRIVATE ${blas_LIBRARIES} ${cblas_LIBRARIES} ${lapacke_LIBRARIES})
|
|
target_include_directories(PHY_UE PRIVATE ${blas_INCLUDE_DIRS} ${lapacke_INCLUDE_DIRS})
|
|
|
|
add_library(PHY_NR_COMMON ${PHY_NR_SRC_COMMON})
|
|
target_link_libraries(PHY_NR_COMMON PUBLIC UTIL)
|
|
|
|
add_library(PHY_NR ${PHY_NR_SRC})
|
|
target_link_libraries(PHY_NR nr_phy_common nr_common nr_fapi_p5)
|
|
|
|
add_library(PHY_NR_NO_AVX_256 ${PHY_NR_SRC})
|
|
target_link_libraries(PHY_NR_NO_AVX_256 nr_phy_common nr_common)
|
|
target_compile_definitions(PHY_NR_NO_AVX_256 PUBLIC USE_128BIT)
|
|
|
|
add_library(PHY_NR_UE ${PHY_NR_UE_SRC})
|
|
target_link_libraries(PHY_NR_UE PRIVATE asn1_nr_rrc_hdrs nr_phy_common nr_common UTIL)
|
|
|
|
add_library(PHY_RU ${PHY_SRC_RU})
|
|
target_link_libraries(PHY_RU PRIVATE asn1_lte_rrc_hdrs UTIL)
|
|
|
|
#Layer 2 library
|
|
#####################
|
|
set(MAC_DIR ${OPENAIR2_DIR}/LAYER2/MAC)
|
|
set(NR_GNB_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_gNB)
|
|
set(NR_UE_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_UE)
|
|
set(PHY_INTERFACE_DIR ${OPENAIR2_DIR}/PHY_INTERFACE)
|
|
set(NR_PHY_INTERFACE_DIR ${OPENAIR2_DIR}/NR_PHY_INTERFACE)
|
|
set(NR_UE_PHY_INTERFACE_DIR ${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE)
|
|
set(RRC_DIR ${OPENAIR2_DIR}/RRC/LTE)
|
|
set(NR_RRC_DIR ${OPENAIR2_DIR}/RRC/NR)
|
|
set(NR_UE_RRC_DIR ${OPENAIR2_DIR}/RRC/NR_UE)
|
|
set(PDCP_DIR ${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0)
|
|
|
|
set(RLC_V2
|
|
${OPENAIR2_DIR}/LAYER2/rlc_v2/rlc_oai_api.c
|
|
${OPENAIR2_DIR}/LAYER2/rlc_v2/asn1_utils.c
|
|
${OPENAIR2_DIR}/LAYER2/rlc_v2/rlc_ue_manager.c
|
|
${OPENAIR2_DIR}/LAYER2/rlc_v2/rlc_entity.c
|
|
${OPENAIR2_DIR}/LAYER2/rlc_v2/rlc_entity_am.c
|
|
${OPENAIR2_DIR}/LAYER2/rlc_v2/rlc_entity_um.c
|
|
${OPENAIR2_DIR}/LAYER2/rlc_v2/rlc_pdu.c
|
|
${OPENAIR2_DIR}/LAYER2/rlc_v2/rlc_sdu.c
|
|
)
|
|
|
|
set(NR_PDCP_SRC
|
|
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
|
|
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_ue_manager.c
|
|
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_entity.c
|
|
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_sdu.c
|
|
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_timer_thread.c
|
|
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_security_nea2.c
|
|
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_security_nea1.c
|
|
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.c
|
|
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.c
|
|
${OPENAIR2_DIR}/LAYER2/nr_pdcp/asn1_utils.c
|
|
openair2/LAYER2/nr_pdcp/cucp_cuup_handler.c
|
|
openair2/LAYER2/nr_pdcp/cuup_cucp_if.c
|
|
openair2/LAYER2/nr_pdcp/cuup_cucp_direct.c
|
|
openair2/LAYER2/nr_pdcp/cuup_cucp_e1ap.c
|
|
)
|
|
|
|
set(NR_SDAP_SRC
|
|
${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap.c
|
|
${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap_entity.c
|
|
)
|
|
|
|
set(L2_SRC
|
|
${PDCP_DIR}/pdcp.c
|
|
${PDCP_DIR}/pdcp_fifo.c
|
|
${PDCP_DIR}/pdcp_sequence_manager.c
|
|
${PDCP_DIR}/pdcp_primitives.c
|
|
${PDCP_DIR}/pdcp_util.c
|
|
${PDCP_DIR}/pdcp_security.c
|
|
${OPENAIR2_DIR}/LAYER2/openair2_proc.c
|
|
${RRC_DIR}/rrc_eNB.c
|
|
${RRC_DIR}/rrc_eNB_endc.c
|
|
${RRC_DIR}/rrc_eNB_S1AP.c
|
|
${RRC_DIR}/rrc_eNB_M2AP.c
|
|
${RRC_DIR}/rrc_eNB_UE_context.c
|
|
${NR_RRC_DIR}/rrc_gNB_UE_context.c
|
|
${RRC_DIR}/rrc_common.c
|
|
${RRC_DIR}/L2_interface.c
|
|
${RRC_DIR}/L2_interface_common.c
|
|
${RRC_DIR}/L2_interface_ue.c
|
|
)
|
|
|
|
set(L2_RRC_SRC
|
|
${OPENAIR2_DIR}/LAYER2/openair2_proc.c
|
|
${RRC_DIR}/rrc_eNB.c
|
|
${RRC_DIR}/rrc_eNB_endc.c
|
|
${RRC_DIR}/rrc_eNB_S1AP.c
|
|
${RRC_DIR}/rrc_eNB_M2AP.c
|
|
${RRC_DIR}/rrc_eNB_UE_context.c
|
|
${RRC_DIR}/rrc_common.c
|
|
${RRC_DIR}/L2_interface.c
|
|
${RRC_DIR}/L2_interface_common.c
|
|
${RRC_DIR}/L2_interface_ue.c
|
|
)
|
|
|
|
set(L2_LTE_SRC
|
|
${RLC_V2}
|
|
)
|
|
|
|
set(L2_NR_SRC
|
|
${NR_PDCP_SRC}
|
|
${NR_SDAP_SRC}
|
|
${NR_RRC_DIR}/rrc_gNB.c
|
|
${NR_RRC_DIR}/mac_rrc_dl_direct.c
|
|
${NR_RRC_DIR}/mac_rrc_dl_f1ap.c
|
|
${NR_RRC_DIR}/rrc_gNB_asn1.c
|
|
${NR_RRC_DIR}/rrc_gNB_nsa.c
|
|
${NR_RRC_DIR}/rrc_gNB_UE_context.c
|
|
${NR_RRC_DIR}/rrc_gNB_NGAP.c
|
|
${NR_RRC_DIR}/rrc_gNB_radio_bearers.c
|
|
${NR_RRC_DIR}/rrc_gNB_cuup.c
|
|
${NR_RRC_DIR}/rrc_gNB_du.c
|
|
${NR_RRC_DIR}/rrc_gNB_mobility.c
|
|
)
|
|
|
|
set(L2_SRC_UE
|
|
${PDCP_DIR}/pdcp.c
|
|
${PDCP_DIR}/pdcp_fifo.c
|
|
${PDCP_DIR}/pdcp_sequence_manager.c
|
|
${PDCP_DIR}/pdcp_primitives.c
|
|
${PDCP_DIR}/pdcp_util.c
|
|
${PDCP_DIR}/pdcp_security.c
|
|
${RRC_DIR}/rrc_UE.c
|
|
${RRC_DIR}/rrc_common.c
|
|
${RRC_DIR}/L2_interface_common.c
|
|
${RRC_DIR}/L2_interface_ue.c
|
|
)
|
|
|
|
set(L2_RRC_SRC_UE
|
|
${RRC_DIR}/rrc_UE.c
|
|
${RRC_DIR}/rrc_common.c
|
|
${RRC_DIR}/L2_interface_common.c
|
|
${RRC_DIR}/L2_interface_ue.c
|
|
)
|
|
|
|
set(NR_L2_SRC_UE
|
|
${NR_PDCP_SRC}
|
|
${NR_SDAP_SRC}
|
|
${NR_UE_RRC_DIR}/L2_interface_ue.c
|
|
${NR_UE_RRC_DIR}/main_ue.c
|
|
${NR_UE_RRC_DIR}/rrc_UE.c
|
|
${NR_UE_RRC_DIR}/rrc_nsa.c
|
|
${NR_UE_RRC_DIR}/rrc_timers_and_constants.c
|
|
${NR_UE_RRC_DIR}/rrc_sl_preconfig.c
|
|
)
|
|
|
|
set (MAC_SRC
|
|
#${PHY_INTERFACE_DIR}/phy_stub_UE.c
|
|
${PHY_INTERFACE_DIR}/IF_Module.c
|
|
${MAC_DIR}/main.c
|
|
#${MAC_DIR}/main_ue.c
|
|
#${MAC_DIR}/ue_procedures.c
|
|
#${MAC_DIR}/ra_procedures.c
|
|
${MAC_DIR}/l1_helpers.c
|
|
${MAC_DIR}/rar_tools.c
|
|
#${MAC_DIR}/rar_tools_ue.c
|
|
${MAC_DIR}/eNB_scheduler.c
|
|
${MAC_DIR}/eNB_scheduler_dlsch.c
|
|
${MAC_DIR}/eNB_scheduler_ulsch.c
|
|
${MAC_DIR}/eNB_scheduler_mch.c
|
|
${MAC_DIR}/eNB_scheduler_bch.c
|
|
${MAC_DIR}/eNB_scheduler_primitives.c
|
|
${MAC_DIR}/eNB_scheduler_RA.c
|
|
${MAC_DIR}/eNB_scheduler_fairRR.c
|
|
${MAC_DIR}/eNB_scheduler_phytest.c
|
|
${MAC_DIR}/pre_processor.c
|
|
${MAC_DIR}/slicing/slicing.c
|
|
${MAC_DIR}/config.c
|
|
${MAC_DIR}/config_ue.c
|
|
)
|
|
|
|
set (MAC_NR_SRC
|
|
${NR_PHY_INTERFACE_DIR}/NR_IF_Module.c
|
|
${NR_PHY_INTERFACE_DIR}/nr_sched_response.c
|
|
${NR_GNB_MAC_DIR}/main.c
|
|
${NR_GNB_MAC_DIR}/config.c
|
|
${NR_GNB_MAC_DIR}/gNB_scheduler.c
|
|
${NR_GNB_MAC_DIR}/gNB_scheduler_bch.c
|
|
${NR_GNB_MAC_DIR}/gNB_scheduler_dlsch.c
|
|
${NR_GNB_MAC_DIR}/gNB_scheduler_ulsch.c
|
|
${NR_GNB_MAC_DIR}/gNB_scheduler_primitives.c
|
|
${NR_GNB_MAC_DIR}/gNB_scheduler_phytest.c
|
|
${NR_GNB_MAC_DIR}/gNB_scheduler_uci.c
|
|
${NR_GNB_MAC_DIR}/gNB_scheduler_srs.c
|
|
${NR_GNB_MAC_DIR}/gNB_scheduler_RA.c
|
|
${NR_GNB_MAC_DIR}/mac_rrc_dl_handler.c
|
|
${NR_GNB_MAC_DIR}/mac_rrc_ul_direct.c
|
|
${NR_GNB_MAC_DIR}/mac_rrc_ul_f1ap.c
|
|
${NR_GNB_MAC_DIR}/nr_radio_config.c
|
|
)
|
|
|
|
|
|
set (MAC_SRC_UE
|
|
${PHY_INTERFACE_DIR}/phy_stub_UE.c
|
|
${PHY_INTERFACE_DIR}/queue_t.c
|
|
${MAC_DIR}/main_ue.c
|
|
${MAC_DIR}/ue_procedures.c
|
|
${MAC_DIR}/ra_procedures.c
|
|
${MAC_DIR}/l1_helpers.c
|
|
${MAC_DIR}/rar_tools_ue.c
|
|
${MAC_DIR}/config_ue.c
|
|
)
|
|
|
|
set (MAC_NR_SRC_UE
|
|
${NR_UE_PHY_INTERFACE_DIR}/NR_IF_Module.c
|
|
${NR_UE_PHY_INTERFACE_DIR}/NR_Packet_Drop.c
|
|
${NR_UE_MAC_DIR}/config_ue.c
|
|
${NR_UE_MAC_DIR}/config_ue_sl.c
|
|
${NR_UE_MAC_DIR}/mac_tables.c
|
|
${NR_UE_MAC_DIR}/main_ue_nr.c
|
|
${NR_UE_MAC_DIR}/nr_ue_procedures.c
|
|
${NR_UE_MAC_DIR}/nr_ue_procedures_sl.c
|
|
${NR_UE_MAC_DIR}/nr_ue_scheduler.c
|
|
${NR_UE_MAC_DIR}/nr_ue_scheduler_sl.c
|
|
${NR_UE_MAC_DIR}/nr_ue_dci_configuration.c
|
|
)
|
|
|
|
set (ENB_APP_SRC
|
|
${OPENAIR2_DIR}/ENB_APP/enb_app.c
|
|
${OPENAIR2_DIR}/ENB_APP/enb_config.c
|
|
${OPENAIR2_DIR}/ENB_APP/enb_config_SL.c
|
|
${OPENAIR2_DIR}/ENB_APP/enb_config_eMTC.c
|
|
${OPENAIR2_DIR}/ENB_APP/RRC_config_tools.c
|
|
)
|
|
|
|
set (GNB_APP_SRC
|
|
${OPENAIR2_DIR}/GNB_APP/gnb_app.c
|
|
${OPENAIR2_DIR}/E1AP/e1ap_setup.c
|
|
${OPENAIR2_DIR}/GNB_APP/gnb_config.c
|
|
)
|
|
|
|
set (MCE_APP_SRC
|
|
${OPENAIR2_DIR}/MCE_APP/mce_app.c
|
|
${OPENAIR2_DIR}/MCE_APP/mce_config.c
|
|
)
|
|
set (MISC_NFAPI_LTE
|
|
${OPENAIR1_DIR}/SCHED/nfapi_lte_dummy.c
|
|
)
|
|
|
|
add_library(MISC_NFAPI_LTE_LIB ${MISC_NFAPI_LTE})
|
|
|
|
set (MISC_NFAPI_NR
|
|
${OPENAIR1_DIR}/SCHED/nfapi_nr_dummy.c
|
|
)
|
|
|
|
add_library(MISC_NFAPI_NR_LIB ${MISC_NFAPI_NR})
|
|
|
|
add_library(L2
|
|
${L2_SRC}
|
|
${MAC_SRC}
|
|
${ENB_APP_SRC}
|
|
${MCE_APP_SRC}
|
|
)
|
|
target_link_libraries(L2 PRIVATE x2ap s1ap lte_rrc m2ap)
|
|
target_link_libraries(L2 PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
|
|
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
|
|
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs PUBLIC nr_ue_power_procedures nr_ue_ra_procedures)
|
|
|
|
add_library(L2_LTE ${L2_LTE_SRC})
|
|
target_link_libraries(L2_LTE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
|
|
add_library(L2_NR
|
|
${L2_NR_SRC}
|
|
${MAC_NR_SRC}
|
|
${GNB_APP_SRC}
|
|
)
|
|
target_link_libraries(L2_NR PRIVATE ds alg)
|
|
target_link_libraries(L2_NR PRIVATE f1ap_lib)
|
|
target_include_directories(L2_NR PRIVATE ${F1AP_DIR}/lib)
|
|
|
|
add_library(e1_if
|
|
${NR_RRC_DIR}/cucp_cuup_direct.c
|
|
${NR_RRC_DIR}/cucp_cuup_e1ap.c
|
|
)
|
|
|
|
target_link_libraries(e1_if PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs asn1_f1ap SECURITY ${OPENSSL_LIBRARIES} e1ap GTPV1U)
|
|
|
|
target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc nr_common)
|
|
if(OAI_AERIAL)
|
|
target_compile_definitions(L2_NR PRIVATE ENABLE_AERIAL)
|
|
endif()
|
|
|
|
add_library(L2_LTE_NR
|
|
# temporary solution until 4G/5G code completely untangled (as evidenced by deletion of the following file)
|
|
${MAC_DIR}/dummy_functions.c
|
|
${ENB_APP_SRC}
|
|
)
|
|
|
|
target_link_libraries(L2_LTE_NR PRIVATE f1ap s1ap nr_rrc)
|
|
|
|
add_library(L2_UE
|
|
${L2_SRC_UE}
|
|
${MAC_SRC_UE}
|
|
)
|
|
target_link_libraries(L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
target_link_libraries(L2_UE PRIVATE GTPV1U)
|
|
|
|
target_link_libraries(L2_UE PRIVATE asn1_lte_rrc_hdrs)
|
|
|
|
add_library( NR_L2_UE ${NR_L2_SRC_UE} ${MAC_NR_SRC_UE} )
|
|
target_link_libraries(NR_L2_UE PRIVATE nr_rlc)
|
|
target_link_libraries(NR_L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs nr_common nr_ue_power_procedures nr_ue_ra_procedures)
|
|
target_link_libraries(NR_L2_UE PRIVATE nr_nas)
|
|
|
|
add_library(MAC_NR_COMMON
|
|
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
|
|
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common_tdd.c
|
|
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_compute_tbs_common.c
|
|
)
|
|
target_link_libraries(MAC_NR_COMMON PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
include_directories("${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE")
|
|
include_directories("${OPENAIR2_DIR}/LAYER2")
|
|
include_directories("${OPENAIR1_DIR}/SCHED_NR_UE")
|
|
#include_directories("${NFAPI_USER_DIR}"")
|
|
|
|
# L3 Libs
|
|
##########################
|
|
|
|
# CN libs
|
|
##########################
|
|
|
|
add_library (GTPV1U
|
|
${RRC_DIR}/rrc_eNB_GTPV1U.c
|
|
${OPENAIR3_DIR}/ocp-gtpu/gtp_itf.cpp
|
|
${OPENAIR3_DIR}/ocp-gtpu/gtpu_extensions.c
|
|
)
|
|
target_link_libraries(GTPV1U PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
target_link_libraries(GTPV1U PRIVATE SIMU ds)
|
|
include_directories(${OPENAIR3_DIR}/ocp-gtp)
|
|
|
|
set (MME_APP_SRC
|
|
${OPENAIR3_DIR}/MME_APP/mme_app.c
|
|
${OPENAIR3_DIR}/MME_APP/mme_config.c
|
|
)
|
|
add_library(MME_APP ${MME_APP_SRC})
|
|
target_link_libraries(MME_APP PRIVATE m2ap m3ap)
|
|
target_link_libraries(MME_APP PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
find_package(sctp REQUIRED)
|
|
set(SCTP_SRC
|
|
${OPENAIR3_DIR}/SCTP/sctp_common.c
|
|
${OPENAIR3_DIR}/SCTP/sctp_eNB_task.c
|
|
${OPENAIR3_DIR}/SCTP/sctp_eNB_itti_messaging.c
|
|
)
|
|
add_library(SCTP_CLIENT ${SCTP_SRC})
|
|
target_link_libraries(SCTP_CLIENT PRIVATE sctp::sctp)
|
|
target_link_libraries(SCTP_CLIENT PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
set(NAS_SRC ${OPENAIR3_DIR}/NAS/)
|
|
|
|
set(libnas_api_OBJS
|
|
${NAS_SRC}COMMON/API/NETWORK/as_message.c
|
|
${NAS_SRC}COMMON/API/NETWORK/nas_message.c
|
|
${NAS_SRC}COMMON/API/NETWORK/network_api.c
|
|
)
|
|
|
|
set(libnas_emm_msg_OBJS
|
|
${NAS_SRC}COMMON/EMM/MSG/AttachAccept.c
|
|
${NAS_SRC}COMMON/EMM/MSG/AttachComplete.c
|
|
${NAS_SRC}COMMON/EMM/MSG/AttachReject.c
|
|
${NAS_SRC}COMMON/EMM/MSG/AttachRequest.c
|
|
${NAS_SRC}COMMON/EMM/MSG/AuthenticationFailure.c
|
|
${NAS_SRC}COMMON/EMM/MSG/AuthenticationReject.c
|
|
${NAS_SRC}COMMON/EMM/MSG/AuthenticationRequest.c
|
|
${NAS_SRC}COMMON/EMM/MSG/AuthenticationResponse.c
|
|
${NAS_SRC}COMMON/EMM/MSG/CsServiceNotification.c
|
|
${NAS_SRC}COMMON/EMM/MSG/DetachAccept.c
|
|
${NAS_SRC}COMMON/EMM/MSG/DetachRequest.c
|
|
${NAS_SRC}COMMON/EMM/MSG/DownlinkNasTransport.c
|
|
${NAS_SRC}COMMON/EMM/MSG/EmmInformation.c
|
|
${NAS_SRC}COMMON/EMM/MSG/emm_msg.c
|
|
${NAS_SRC}COMMON/EMM/MSG/EmmStatus.c
|
|
${NAS_SRC}COMMON/EMM/MSG/ExtendedServiceRequest.c
|
|
${NAS_SRC}COMMON/EMM/MSG/GutiReallocationCommand.c
|
|
${NAS_SRC}COMMON/EMM/MSG/GutiReallocationComplete.c
|
|
${NAS_SRC}COMMON/EMM/MSG/IdentityRequest.c
|
|
${NAS_SRC}COMMON/EMM/MSG/IdentityResponse.c
|
|
${NAS_SRC}COMMON/EMM/MSG/SecurityModeCommand.c
|
|
${NAS_SRC}COMMON/EMM/MSG/SecurityModeComplete.c
|
|
${NAS_SRC}COMMON/EMM/MSG/SecurityModeReject.c
|
|
${NAS_SRC}COMMON/EMM/MSG/ServiceReject.c
|
|
${NAS_SRC}COMMON/EMM/MSG/ServiceRequest.c
|
|
${NAS_SRC}COMMON/EMM/MSG/TrackingAreaUpdateAccept.c
|
|
${NAS_SRC}COMMON/EMM/MSG/TrackingAreaUpdateComplete.c
|
|
${NAS_SRC}COMMON/EMM/MSG/TrackingAreaUpdateReject.c
|
|
${NAS_SRC}COMMON/EMM/MSG/TrackingAreaUpdateRequest.c
|
|
${NAS_SRC}COMMON/EMM/MSG/UplinkNasTransport.c
|
|
)
|
|
|
|
set(libnas_esm_msg_OBJS
|
|
${NAS_SRC}COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextAccept.c
|
|
${NAS_SRC}COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextReject.c
|
|
${NAS_SRC}COMMON/ESM/MSG/ActivateDedicatedEpsBearerContextRequest.c
|
|
${NAS_SRC}COMMON/ESM/MSG/ActivateDefaultEpsBearerContextAccept.c
|
|
${NAS_SRC}COMMON/ESM/MSG/ActivateDefaultEpsBearerContextReject.c
|
|
${NAS_SRC}COMMON/ESM/MSG/ActivateDefaultEpsBearerContextRequest.c
|
|
${NAS_SRC}COMMON/ESM/MSG/BearerResourceAllocationReject.c
|
|
${NAS_SRC}COMMON/ESM/MSG/BearerResourceAllocationRequest.c
|
|
${NAS_SRC}COMMON/ESM/MSG/BearerResourceModificationReject.c
|
|
${NAS_SRC}COMMON/ESM/MSG/BearerResourceModificationRequest.c
|
|
${NAS_SRC}COMMON/ESM/MSG/DeactivateEpsBearerContextAccept.c
|
|
${NAS_SRC}COMMON/ESM/MSG/DeactivateEpsBearerContextRequest.c
|
|
${NAS_SRC}COMMON/ESM/MSG/EsmInformationRequest.c
|
|
${NAS_SRC}COMMON/ESM/MSG/EsmInformationResponse.c
|
|
${NAS_SRC}COMMON/ESM/MSG/esm_msg.c
|
|
${NAS_SRC}COMMON/ESM/MSG/EsmStatus.c
|
|
${NAS_SRC}COMMON/ESM/MSG/ModifyEpsBearerContextAccept.c
|
|
${NAS_SRC}COMMON/ESM/MSG/ModifyEpsBearerContextReject.c
|
|
${NAS_SRC}COMMON/ESM/MSG/ModifyEpsBearerContextRequest.c
|
|
${NAS_SRC}COMMON/ESM/MSG/PdnConnectivityReject.c
|
|
${NAS_SRC}COMMON/ESM/MSG/PdnConnectivityRequest.c
|
|
${NAS_SRC}COMMON/ESM/MSG/PdnDisconnectReject.c
|
|
${NAS_SRC}COMMON/ESM/MSG/PdnDisconnectRequest.c
|
|
)
|
|
|
|
set(libnas_ies_OBJS
|
|
${NAS_SRC}COMMON/IES/AccessPointName.c
|
|
${NAS_SRC}COMMON/IES/AdditionalUpdateResult.c
|
|
${NAS_SRC}COMMON/IES/AdditionalUpdateType.c
|
|
${NAS_SRC}COMMON/IES/ApnAggregateMaximumBitRate.c
|
|
${NAS_SRC}COMMON/IES/AuthenticationFailureParameter.c
|
|
${NAS_SRC}COMMON/IES/AuthenticationParameterAutn.c
|
|
${NAS_SRC}COMMON/IES/AuthenticationParameterRand.c
|
|
${NAS_SRC}COMMON/IES/AuthenticationResponseParameter.c
|
|
${NAS_SRC}COMMON/IES/CipheringKeySequenceNumber.c
|
|
${NAS_SRC}COMMON/IES/Cli.c
|
|
${NAS_SRC}COMMON/IES/CsfbResponse.c
|
|
${NAS_SRC}COMMON/IES/DaylightSavingTime.c
|
|
${NAS_SRC}COMMON/IES/DetachType.c
|
|
${NAS_SRC}COMMON/IES/DrxParameter.c
|
|
${NAS_SRC}COMMON/IES/EmergencyNumberList.c
|
|
${NAS_SRC}COMMON/IES/EmmCause.c
|
|
${NAS_SRC}COMMON/IES/EpsAttachResult.c
|
|
${NAS_SRC}COMMON/IES/EpsAttachType.c
|
|
${NAS_SRC}COMMON/IES/EpsBearerContextStatus.c
|
|
${NAS_SRC}COMMON/IES/EpsBearerIdentity.c
|
|
${NAS_SRC}COMMON/IES/EpsMobileIdentity.c
|
|
${NAS_SRC}COMMON/IES/EpsNetworkFeatureSupport.c
|
|
${NAS_SRC}COMMON/IES/EpsQualityOfService.c
|
|
${NAS_SRC}COMMON/IES/EpsUpdateResult.c
|
|
${NAS_SRC}COMMON/IES/EpsUpdateType.c
|
|
${NAS_SRC}COMMON/IES/EsmCause.c
|
|
${NAS_SRC}COMMON/IES/EsmInformationTransferFlag.c
|
|
${NAS_SRC}COMMON/IES/EsmMessageContainer.c
|
|
${NAS_SRC}COMMON/IES/GprsTimer.c
|
|
${NAS_SRC}COMMON/IES/GutiType.c
|
|
${NAS_SRC}COMMON/IES/IdentityType2.c
|
|
${NAS_SRC}COMMON/IES/ImeisvRequest.c
|
|
${NAS_SRC}COMMON/IES/KsiAndSequenceNumber.c
|
|
${NAS_SRC}COMMON/IES/LcsClientIdentity.c
|
|
${NAS_SRC}COMMON/IES/LcsIndicator.c
|
|
${NAS_SRC}COMMON/IES/LinkedEpsBearerIdentity.c
|
|
${NAS_SRC}COMMON/IES/LlcServiceAccessPointIdentifier.c
|
|
${NAS_SRC}COMMON/IES/LocationAreaIdentification.c
|
|
${NAS_SRC}COMMON/IES/MessageType.c
|
|
${NAS_SRC}COMMON/IES/MobileIdentity.c
|
|
${NAS_SRC}COMMON/IES/MobileStationClassmark2.c
|
|
${NAS_SRC}COMMON/IES/MobileStationClassmark3.c
|
|
${NAS_SRC}COMMON/IES/MsNetworkCapability.c
|
|
${NAS_SRC}COMMON/IES/MsNetworkFeatureSupport.c
|
|
${NAS_SRC}COMMON/IES/NasKeySetIdentifier.c
|
|
${NAS_SRC}COMMON/IES/NasMessageContainer.c
|
|
${NAS_SRC}COMMON/IES/NasRequestType.c
|
|
${NAS_SRC}COMMON/IES/NasSecurityAlgorithms.c
|
|
${NAS_SRC}COMMON/IES/NetworkName.c
|
|
${NAS_SRC}COMMON/IES/Nonce.c
|
|
${NAS_SRC}COMMON/IES/PacketFlowIdentifier.c
|
|
${NAS_SRC}COMMON/IES/PagingIdentity.c
|
|
${NAS_SRC}COMMON/IES/PdnAddress.c
|
|
${NAS_SRC}COMMON/IES/PdnType.c
|
|
${NAS_SRC}COMMON/IES/PlmnList.c
|
|
${NAS_SRC}COMMON/IES/ProcedureTransactionIdentity.c
|
|
${NAS_SRC}COMMON/IES/ProtocolConfigurationOptions.c
|
|
${NAS_SRC}COMMON/IES/ProtocolDiscriminator.c
|
|
${NAS_SRC}COMMON/IES/PTmsiSignature.c
|
|
${NAS_SRC}COMMON/IES/QualityOfService.c
|
|
${NAS_SRC}COMMON/IES/RadioPriority.c
|
|
${NAS_SRC}COMMON/IES/SecurityHeaderType.c
|
|
${NAS_SRC}COMMON/IES/ServiceType.c
|
|
${NAS_SRC}COMMON/IES/ShortMac.c
|
|
${NAS_SRC}COMMON/IES/SsCode.c
|
|
${NAS_SRC}COMMON/IES/SupportedCodecList.c
|
|
${NAS_SRC}COMMON/IES/TimeZoneAndTime.c
|
|
${NAS_SRC}COMMON/IES/TimeZone.c
|
|
${NAS_SRC}COMMON/IES/TmsiStatus.c
|
|
${NAS_SRC}COMMON/IES/TrackingAreaIdentity.c
|
|
${NAS_SRC}COMMON/IES/TrackingAreaIdentityList.c
|
|
${NAS_SRC}COMMON/IES/TrafficFlowAggregateDescription.c
|
|
${NAS_SRC}COMMON/IES/TrafficFlowTemplate.c
|
|
${NAS_SRC}COMMON/IES/TransactionIdentifier.c
|
|
${NAS_SRC}COMMON/IES/UeNetworkCapability.c
|
|
${NAS_SRC}COMMON/IES/UeRadioCapabilityInformationUpdateNeeded.c
|
|
${NAS_SRC}COMMON/IES/UeSecurityCapability.c
|
|
${NAS_SRC}COMMON/IES/VoiceDomainPreferenceAndUeUsageSetting.c
|
|
)
|
|
|
|
set (libnas_utils_OBJS
|
|
${NAS_SRC}COMMON/UTIL/device.c
|
|
common/utils/mem/memory.c
|
|
${NAS_SRC}COMMON/UTIL/nas_timer.c
|
|
${NAS_SRC}COMMON/UTIL/socket.c
|
|
${NAS_SRC}COMMON/UTIL/stty.c
|
|
${NAS_SRC}COMMON/UTIL/TLVDecoder.c
|
|
${NAS_SRC}COMMON/UTIL/OctetString.c
|
|
)
|
|
|
|
set(libnas_ue_api_OBJS
|
|
${NAS_SRC}UE/API/USER/at_command.c
|
|
${NAS_SRC}UE/API/USER/at_error.c
|
|
${NAS_SRC}UE/API/USER/at_response.c
|
|
${NAS_SRC}UE/API/USER/user_api.c
|
|
${NAS_SRC}UE/API/USER/user_indication.c
|
|
${NAS_SRC}UE/API/USIM/aka_functions.c
|
|
${NAS_SRC}UE/API/USIM/usim_api.c
|
|
)
|
|
set(libnas_ue_emm_OBJS
|
|
${NAS_SRC}UE/EMM/Attach.c
|
|
${NAS_SRC}UE/EMM/Authentication.c
|
|
${NAS_SRC}UE/EMM/Detach.c
|
|
${NAS_SRC}UE/EMM/emm_main.c
|
|
${NAS_SRC}UE/EMM/EmmStatusHdl.c
|
|
${NAS_SRC}UE/EMM/Identification.c
|
|
${NAS_SRC}UE/EMM/IdleMode.c
|
|
${NAS_SRC}UE/EMM/LowerLayer.c
|
|
${NAS_SRC}UE/EMM/SecurityModeControl.c
|
|
${NAS_SRC}UE/EMM/ServiceRequestHdl.c
|
|
${NAS_SRC}UE/EMM/TrackingAreaUpdate.c
|
|
)
|
|
set(libnas_ue_emm_sap_OBJS
|
|
${NAS_SRC}UE/EMM/SAP/emm_as.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmDeregisteredAttachNeeded.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmDeregisteredAttemptingToAttach.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmDeregistered.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmDeregisteredInitiated.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmDeregisteredLimitedService.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmDeregisteredNoCellAvailable.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmDeregisteredNoImsi.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmDeregisteredNormalService.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmDeregisteredPlmnSearch.c
|
|
${NAS_SRC}UE/EMM/SAP/emm_esm.c
|
|
${NAS_SRC}UE/EMM/SAP/emm_fsm.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmNull.c
|
|
${NAS_SRC}UE/EMM/SAP/emm_recv.c
|
|
${NAS_SRC}UE/EMM/SAP/emm_reg.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmRegisteredAttemptingToUpdate.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmRegistered.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmRegisteredImsiDetachInitiated.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmRegisteredInitiated.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmRegisteredLimitedService.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmRegisteredNoCellAvailable.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmRegisteredNormalService.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmRegisteredPlmnSearch.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmRegisteredUpdateNeeded.c
|
|
${NAS_SRC}UE/EMM/SAP/emm_sap.c
|
|
${NAS_SRC}UE/EMM/SAP/emm_send.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmServiceRequestInitiated.c
|
|
${NAS_SRC}UE/EMM/SAP/EmmTrackingAreaUpdatingInitiated.c
|
|
)
|
|
set (libnas_ue_esm_OBJS
|
|
${NAS_SRC}UE/ESM/DedicatedEpsBearerContextActivation.c
|
|
${NAS_SRC}UE/ESM/DefaultEpsBearerContextActivation.c
|
|
${NAS_SRC}UE/ESM/EpsBearerContextDeactivation.c
|
|
${NAS_SRC}UE/ESM/esm_ebr.c
|
|
${NAS_SRC}UE/ESM/esm_ebr_context.c
|
|
${NAS_SRC}UE/ESM/esm_ip.c
|
|
${NAS_SRC}UE/ESM/esm_main.c
|
|
${NAS_SRC}UE/ESM/esm_pt.c
|
|
${NAS_SRC}UE/ESM/EsmStatusHdl.c
|
|
${NAS_SRC}UE/ESM/PdnConnectivity.c
|
|
${NAS_SRC}UE/ESM/PdnDisconnect.c
|
|
)
|
|
set(libnas_ue_esm_sap_OBJS
|
|
${NAS_SRC}UE/ESM/SAP/esm_recv.c
|
|
${NAS_SRC}UE/ESM/SAP/esm_send.c
|
|
${NAS_SRC}UE/ESM/SAP/esm_sap.c
|
|
)
|
|
|
|
add_library(LIB_NAS_UE
|
|
${NAS_SRC}UE/nas_itti_messaging.c
|
|
${NAS_SRC}UE/nas_network.c
|
|
${NAS_SRC}UE/nas_parser.c
|
|
${NAS_SRC}UE/nas_proc.c
|
|
${NAS_SRC}UE/nas_user.c
|
|
${libnas_api_OBJS}
|
|
${libnas_ue_api_OBJS}
|
|
${libnas_emm_msg_OBJS}
|
|
${libnas_esm_msg_OBJS}
|
|
${libnas_ies_OBJS}
|
|
${libnas_utils_OBJS}
|
|
${libnas_ue_emm_OBJS}
|
|
${libnas_ue_emm_sap_OBJS}
|
|
${libnas_ue_esm_OBJS}
|
|
${libnas_ue_esm_sap_OBJS}
|
|
$<TARGET_OBJECTS:ds>
|
|
)
|
|
target_include_directories(LIB_NAS_UE PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
|
|
set(NAS_UE_LIB LIB_NAS_UE)
|
|
target_link_libraries(LIB_NAS_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
include_directories(${NAS_SRC}NR_UE)
|
|
include_directories(${NAS_SRC}UE)
|
|
include_directories(${NAS_SRC}UE/API/USER)
|
|
include_directories(${NAS_SRC}UE/API/USIM)
|
|
include_directories(${NAS_SRC}UE/EMM)
|
|
include_directories(${NAS_SRC}UE/EMM/MSG)
|
|
include_directories(${NAS_SRC}UE/EMM/SAP)
|
|
include_directories(${NAS_SRC}UE/ESM)
|
|
include_directories(${NAS_SRC}UE/ESM/SAP)
|
|
|
|
# Simulation library
|
|
##########################
|
|
set (SIMUSRC
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_channel.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_tv_channel.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/abstraction.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/channel_sim.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/random_channel.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/rangen_double.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/phase_noise.c
|
|
${OPENAIR1_DIR}/SIMULATION/RF/rf.c
|
|
${OPENAIR1_DIR}/SIMULATION/RF/dac.c
|
|
${OPENAIR1_DIR}/SIMULATION/RF/adc.c
|
|
)
|
|
add_library(SIMU STATIC ${SIMUSRC} )
|
|
target_include_directories(SIMU PUBLIC ${OPENAIR1_DIR}/SIMULATION/TOOLS ${OPENAIR1_DIR}/SIMULATION/RF)
|
|
|
|
include_directories("${NFAPI_DIR}/nfapi/public_inc")
|
|
include_directories("${NFAPI_DIR}/common/public_inc")
|
|
include_directories("${NFAPI_DIR}/pnf/public_inc")
|
|
include_directories("${NFAPI_DIR}/nfapi/inc")
|
|
include_directories("${NFAPI_DIR}/sim_common/inc")
|
|
include_directories("${NFAPI_DIR}/pnf_sim/inc")
|
|
|
|
add_library(oai_iqplayer MODULE ${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c)
|
|
target_link_libraries(oai_iqplayer PRIVATE log_headers)
|
|
|
|
#################################
|
|
# add executables for operation
|
|
#################################
|
|
add_library(minimal_lib
|
|
${OPENAIR_DIR}/common/utils/minimal_stub.c
|
|
)
|
|
target_link_libraries(minimal_lib PUBLIC pthread dl ${T_LIB} LOG)
|
|
|
|
add_executable(measurement_display
|
|
${OPENAIR_DIR}/common/utils/threadPool/measurement_display.c)
|
|
target_link_libraries (measurement_display minimal_lib)
|
|
|
|
# lte-softmodem is both eNB and UE implementation
|
|
###################################################
|
|
|
|
add_executable(lte-softmodem
|
|
${OPENAIR_DIR}/executables/lte-enb.c
|
|
${OPENAIR_DIR}/executables/lte-ru.c
|
|
${OPENAIR_DIR}/executables/ru_control.c
|
|
${OPENAIR_DIR}/executables/lte-softmodem.c
|
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
|
${OPENAIR2_DIR}/ENB_APP/NB_IoT_interface.c
|
|
${OPENAIR_DIR}/executables/create_tasks.c
|
|
${OPENAIR_DIR}/executables/create_tasks_mbms.c
|
|
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
|
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
|
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
|
|
${PHY_INTERFACE_DIR}/queue_t.c
|
|
${OPENAIR_DIR}/common/utils/lte/ue_power.c
|
|
${OPENAIR_DIR}/common/utils/lte/prach_utils.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
|
|
)
|
|
add_dependencies(lte-softmodem oai_iqplayer)
|
|
|
|
target_link_libraries(lte-softmodem PRIVATE
|
|
-Wl,--start-group
|
|
lte_rrc nr_rrc s1ap m2ap x2ap m3ap GTPV1U SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB SCHED_RU_LIB
|
|
PHY_COMMON PHY PHY_RU L2 L2_LTE NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
|
|
${NAS_UE_LIB} ITTI SIMU shlib_loader
|
|
-Wl,--end-group z dl)
|
|
|
|
target_link_libraries(lte-softmodem PRIVATE pthread m CONFIG_LIB rt)
|
|
target_link_libraries(lte-softmodem PRIVATE ${T_LIB})
|
|
target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
target_link_libraries(lte-softmodem PRIVATE ${blas_LIBRARIES} ${cblas_LIBRARIES} ${lapacke_LIBRARIES} ${lapack_LIBRARIES})
|
|
|
|
if(E2_AGENT)
|
|
target_link_libraries(lte-softmodem PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
|
target_compile_definitions(lte-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
|
endif()
|
|
|
|
add_executable(oairu
|
|
${OPENAIR_DIR}/executables/lte-ru.c
|
|
${OPENAIR_DIR}/executables/ru_control.c
|
|
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
|
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
|
${OPENAIR_DIR}/openair1/SCHED/phy_procedures_lte_common.c
|
|
${OPENAIR_DIR}/executables/main_ru.c
|
|
${OPENAIR_DIR}/common/utils/lte/prach_utils.c
|
|
)
|
|
target_link_libraries(oairu PRIVATE
|
|
-Wl,--start-group
|
|
SCHED_RU_LIB PHY_COMMON PHY_RU UTIL shlib_loader
|
|
-Wl,--end-group z dl)
|
|
|
|
target_link_libraries(oairu PRIVATE pthread m CONFIG_LIB rt ${T_LIB})
|
|
target_link_libraries(oairu PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
# force the generation of ASN.1 so that we don't need to wait during the build
|
|
target_link_libraries(lte-softmodem PRIVATE
|
|
asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
|
|
|
|
|
|
# lte-uesoftmodem is UE implementation
|
|
#######################################
|
|
|
|
add_executable(lte-uesoftmodem
|
|
${OPENAIR_DIR}/executables/lte-ue.c
|
|
${OPENAIR_DIR}/executables/lte-uesoftmodem.c
|
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
|
${OPENAIR_DIR}/executables/create_tasks_ue.c
|
|
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
|
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
|
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
|
|
${OPENAIR_DIR}/common/utils/lte/ue_power.c
|
|
${OPENAIR_DIR}/common/utils/lte/prach_utils.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
|
|
)
|
|
|
|
target_link_libraries(lte-uesoftmodem PRIVATE
|
|
-Wl,--start-group
|
|
lte_rrc nr_rrc s1ap x2ap m2ap m3ap
|
|
SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
|
|
PHY_UE PHY_RU L2_UE L2_LTE SIMU NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
|
|
${NAS_UE_LIB} ITTI shlib_loader
|
|
-Wl,--end-group z dl)
|
|
|
|
target_link_libraries(lte-uesoftmodem PRIVATE pthread m CONFIG_LIB rt)
|
|
target_link_libraries(lte-uesoftmodem PRIVATE ${T_LIB})
|
|
target_link_libraries(lte-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
target_link_libraries(lte-uesoftmodem PRIVATE ${blas_LIBRARIES} ${cblas_LIBRARIES} ${lapacke_LIBRARIES} ${lapack_LIBRARIES})
|
|
|
|
# force the generation of ASN.1 so that we don't need to wait during the build
|
|
target_link_libraries(lte-uesoftmodem PRIVATE
|
|
asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
|
|
|
|
# nr-softmodem
|
|
###################################################
|
|
|
|
add_executable(nr-softmodem
|
|
${rrc_h}
|
|
${nr_rrc_h}
|
|
${s1ap_h}
|
|
${OPENAIR_DIR}/executables/nr-gnb.c
|
|
${OPENAIR_DIR}/executables/nr-ru.c
|
|
${OPENAIR_DIR}/executables/nr-softmodem.c
|
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
|
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
|
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
|
${OPENAIR_DIR}/common/utils/lte/ue_power.c
|
|
${OPENAIR_DIR}/common/utils/lte/prach_utils.c
|
|
${PHY_INTERFACE_DIR}/queue_t.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
|
|
)
|
|
|
|
target_link_libraries(nr-softmodem PRIVATE
|
|
-Wl,--start-group
|
|
UTIL HASHTABLE SCTP_CLIENT SCHED_LIB SCHED_RU_LIB SCHED_NR_LIB PHY_NR PHY PHY_COMMON PHY_NR_COMMON PHY_RU GTPV1U SECURITY
|
|
ITTI ${NAS_UE_LIB} lte_rrc nr_rrc
|
|
ngap s1ap L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB SIMU
|
|
x2ap f1ap m2ap m3ap e1ap shlib_loader
|
|
time_management
|
|
-Wl,--end-group z dl)
|
|
|
|
target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt)
|
|
target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
|
|
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
add_boolean_option(OAI_WLS OFF "Activate OAI's WLS driver" OFF)
|
|
if (OAI_WLS)
|
|
target_link_libraries(nr-softmodem PUBLIC wls_integration_lib)
|
|
else()
|
|
target_link_libraries(nr-softmodem PUBLIC nfapi_socket_lib)
|
|
endif()
|
|
add_boolean_option(OAI_AERIAL OFF "Activate OAI's AERIAL driver" OFF)
|
|
if (OAI_AERIAL)
|
|
target_compile_definitions(nr-softmodem PUBLIC ENABLE_AERIAL)
|
|
target_link_libraries(nr-softmodem PUBLIC aerial_lib)
|
|
endif()
|
|
if(E2_AGENT)
|
|
target_link_libraries(nr-softmodem PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
|
target_compile_definitions(nr-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
|
endif()
|
|
|
|
|
|
# force the generation of ASN.1 so that we don't need to wait during the build
|
|
target_link_libraries(nr-softmodem PRIVATE
|
|
asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp)
|
|
|
|
add_executable(nr-cuup
|
|
executables/nr-cuup.c
|
|
executables/softmodem-common.c
|
|
${NR_RRC_DIR}/rrc_gNB_UE_context.c
|
|
${OPENAIR2_DIR}/E1AP/e1ap_setup.c
|
|
${NR_PDCP_SRC}
|
|
${NR_SDAP_SRC}
|
|
)
|
|
|
|
target_link_libraries(nr-cuup PRIVATE
|
|
CONFIG_LIB ITTI SCTP_CLIENT
|
|
GTPV1U e1ap f1ap
|
|
time_management
|
|
alg
|
|
z dl pthread shlib_loader ${T_LIB})
|
|
target_link_libraries(nr-cuup PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
if(E2_AGENT)
|
|
target_link_libraries(nr-cuup PRIVATE e2_agent e2_agent_arg e2_ran_func_cuup)
|
|
target_compile_definitions(nr-cuup PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
|
endif()
|
|
|
|
# nr-uesoftmodem is UE implementation
|
|
#######################################
|
|
|
|
add_executable(nr-uesoftmodem
|
|
${rrc_h}
|
|
${s1ap_h}
|
|
${OPENAIR_DIR}/executables/nr-uesoftmodem.c
|
|
${OPENAIR_DIR}/executables/position_interface.c
|
|
${OPENAIR_DIR}/executables/nr-ue.c
|
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
|
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
|
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
|
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
|
|
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common_tdd.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
|
|
${NFAPI_USER_DIR}/nfapi.c
|
|
${PHY_INTERFACE_DIR}/queue_t.c
|
|
)
|
|
|
|
target_link_libraries(nr-uesoftmodem PRIVATE
|
|
-Wl,--start-group
|
|
nr_rrc SECURITY UTIL HASHTABLE SCHED_RU_LIB SCHED_NR_UE_LIB
|
|
PHY_COMMON PHY_NR_COMMON PHY_NR_UE NR_L2_UE MAC_NR_COMMON NFAPI_LIB
|
|
ITTI SIMU shlib_loader
|
|
time_management
|
|
-Wl,--end-group z dl)
|
|
|
|
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt nr_ue_phy_meas)
|
|
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
|
|
target_link_libraries(nr-uesoftmodem PRIVATE nr_nas lib_uicc usim_lib)
|
|
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
# force the generation of ASN.1 so that we don't need to wait during the build
|
|
target_link_libraries(nr-uesoftmodem PRIVATE
|
|
asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp)
|
|
|
|
###################################"
|
|
# Addexecutables for tests
|
|
####################################
|
|
|
|
|
|
# Unitary tests for each piece of L1: example, mbmssim is MBMS L1 simulator
|
|
#####################################
|
|
|
|
#special case for dlim TM4, which uses its own version of phy_scope code
|
|
#add_executable(dlsim_tm4
|
|
# ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/dlsim_tm4.c
|
|
# ${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope_tm4.c
|
|
# )
|
|
#target_link_libraries (dlsim_tm4
|
|
# -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
|
|
# pthread m rt CONFIG_LIB ${T_LIB}
|
|
# )
|
|
|
|
add_executable(rftest
|
|
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
|
|
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_scope.c
|
|
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
|
)
|
|
target_link_libraries(rftest PRIVATE minimal_lib PHY_NR_COMMON UTIL forms pthread dl m ${T_LIB} shlib_loader)
|
|
target_link_libraries(rftest PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
|
|
|
add_executable(polartest
|
|
${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/polartest.c
|
|
)
|
|
target_link_libraries(polartest PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_COMMON PHY_NR_UE CONFIG_LIB -Wl,--end-group
|
|
m pthread dl ${T_LIB}
|
|
)
|
|
|
|
add_executable(smallblocktest
|
|
${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/smallblocktest.c
|
|
)
|
|
|
|
target_link_libraries(smallblocktest PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON -Wl,--end-group
|
|
m pthread dl shlib_loader ${T_LIB}
|
|
)
|
|
|
|
|
|
add_executable(ldpctest
|
|
${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c
|
|
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c
|
|
)
|
|
target_link_libraries(ldpctest PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON -Wl,--end-group
|
|
m pthread dl shlib_loader ${T_LIB}
|
|
# link 'check_crc' to make it resolved in the LDPC coding libraries
|
|
# 'check_crc' is not used in ldpctest so it is not linked in the executable by default
|
|
# --whole-archive links 'check_crc' in the executable even though it is note used, see 'man ld'
|
|
-Wl,--whole-archive crc_byte -Wl,--no-whole-archive
|
|
)
|
|
|
|
add_library(physim_common OBJECT ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_unitary_common.c)
|
|
target_link_libraries(physim_common PRIVATE UTIL)
|
|
|
|
add_executable(nr_dlschsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlschsim.c)
|
|
target_link_libraries(nr_dlschsim PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group
|
|
m pthread ${T_LIB} ITTI dl shlib_loader physim_common
|
|
)
|
|
target_link_libraries(nr_dlschsim PRIVATE asn1_nr_rrc_hdrs)
|
|
|
|
add_executable(nr_pbchsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pbchsim.c)
|
|
target_link_libraries(nr_pbchsim PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group
|
|
m pthread ${T_LIB} ITTI dl shlib_loader physim_common
|
|
)
|
|
target_link_libraries(nr_pbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
add_executable(nr_psbchsim
|
|
${OPENAIR1_DIR}/SIMULATION/NR_PHY/psbchsim.c
|
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
|
${NR_UE_RRC_DIR}/rrc_nsa.c
|
|
${NFAPI_USER_DIR}/nfapi.c
|
|
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
|
${PHY_INTERFACE_DIR}/queue_t.c
|
|
)
|
|
target_link_libraries(nr_psbchsim PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON CONFIG_LIB L2_NR -lz -Wl,--end-group
|
|
m pthread ${T_LIB} ITTI dl shlib_loader physim_common
|
|
)
|
|
target_link_libraries(nr_psbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
add_executable(nr_pucchsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pucchsim.c)
|
|
target_link_libraries(nr_pucchsim PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group
|
|
m pthread ${T_LIB} ITTI dl shlib_loader physim_common
|
|
)
|
|
target_link_libraries(nr_pucchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
add_executable(nr_dlsim
|
|
${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
|
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
|
${NR_UE_RRC_DIR}/rrc_nsa.c
|
|
${NFAPI_USER_DIR}/nfapi.c
|
|
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
|
${PHY_INTERFACE_DIR}/queue_t.c
|
|
)
|
|
target_link_libraries(nr_dlsim PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
|
m pthread ${T_LIB} ITTI dl shlib_loader nr_ue_phy_meas physim_common
|
|
)
|
|
target_link_libraries(nr_dlsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
add_executable(nr_prachsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/prachsim.c)
|
|
target_link_libraries(nr_prachsim PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_RU PHY_NR_UE MAC_NR_COMMON SCHED_NR_LIB CONFIG_LIB -lz -Wl,--end-group
|
|
m pthread ${T_LIB} ITTI dl shlib_loader physim_common)
|
|
target_link_libraries(nr_prachsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
add_executable(nr_ulschsim
|
|
${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulschsim.c
|
|
${PHY_INTERFACE_DIR}/queue_t.c
|
|
)
|
|
target_link_libraries(nr_ulschsim PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group
|
|
m pthread ${T_LIB} ITTI dl shlib_loader physim_common
|
|
)
|
|
target_link_libraries(nr_ulschsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
add_executable(nr_ulsim
|
|
${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
|
|
${OPENAIR_DIR}/executables/softmodem-common.c
|
|
${NR_UE_RRC_DIR}/rrc_nsa.c
|
|
${NFAPI_USER_DIR}/nfapi.c
|
|
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
|
${PHY_INTERFACE_DIR}/queue_t.c
|
|
)
|
|
|
|
target_link_libraries(nr_ulsim PRIVATE
|
|
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
|
m pthread ${T_LIB} ITTI dl shlib_loader nr_ue_phy_meas physim_common
|
|
)
|
|
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
|
|
|
# these simulators do not compile:
|
|
# dlsim_tm7 pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim
|
|
foreach(myExe dlsim ulsim)
|
|
|
|
add_executable(${myExe}
|
|
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
|
|
${OPENAIR_DIR}/common/utils/lte/ue_power.c
|
|
${OPENAIR_DIR}/common/utils/lte/prach_utils.c
|
|
${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c
|
|
${NFAPI_USER_DIR}/nfapi.c
|
|
)
|
|
target_link_libraries (${myExe} PRIVATE
|
|
-Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_NR_COMMON PHY PHY_UE PHY_RU ITTI -Wl,--end-group
|
|
pthread m rt CONFIG_LIB ${T_LIB} dl shlib_loader
|
|
)
|
|
target_link_libraries(${myExe} PRIVATE asn1_lte_rrc_hdrs)
|
|
add_dependencies(${myExe} coding)
|
|
|
|
endforeach(myExe)
|
|
|
|
#unitary tests for Core NEtwork pieces
|
|
#################################
|
|
#foreach(myExe
|
|
# s1ap
|
|
# secu_knas_encrypt_eia1
|
|
# secu_kenb
|
|
# aes128_ctr
|
|
# secu_knas_encrypt_eea2
|
|
# secu_knas secu_knas_encrypt_eea1
|
|
# kdf
|
|
# aes128_cmac_encrypt
|
|
# secu_knas_encrypt_eia2)
|
|
# add_executable(test_${myExe}
|
|
# ${OPENAIR3_DIR}/TEST/test_${myExe}.c
|
|
# )
|
|
# target_link_libraries (test_${myExe}
|
|
# -Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
|
|
# )
|
|
#endforeach(myExe)
|
|
|
|
#ensure that the T header files are generated before targets depending on them
|
|
if (${T_TRACER})
|
|
foreach(i
|
|
#all "add_executable" definitions (except tests, updatefw)
|
|
lte-softmodem lte-uesoftmodem nr-softmodem
|
|
nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
|
|
ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
|
|
syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim
|
|
nr_ulschsim ldpctest polartest smallblocktest
|
|
#all "add_library" definitions
|
|
ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
|
|
params_libconfig
|
|
oai_eth_transpro HASHTABLE UTIL
|
|
SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB
|
|
NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
|
|
MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
|
|
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU
|
|
L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE MAC_NR_COMMON MAC_UE_NR ngap
|
|
GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE SIMU
|
|
dfts config_internals nr_common crc_byte)
|
|
if (TARGET ${i})
|
|
add_dependencies(${i} generate_T)
|
|
endif()
|
|
endforeach(i)
|
|
endif (${T_TRACER})
|
|
|
|
set(ENABLE_TESTS OFF CACHE STRING "Activate build of tests")
|
|
set_property(CACHE ENABLE_TESTS PROPERTY TYPE BOOL)
|
|
set(ENABLE_PHYSIM_TESTS OFF CACHE STRING "Activate build of physim tests")
|
|
set_property(CACHE ENABLE_PHYSIM_TESTS PROPERTY TYPE BOOL)
|
|
|
|
if(ENABLE_TESTS OR ENABLE_PHYSIM_TESTS)
|
|
# meta-target: each test is supposed to add_dependencies(tests ${NEWTEST})
|
|
# then, it is possible to build and execute all tests using "ninja tests && ctest"
|
|
add_custom_target(tests)
|
|
# activates globally adding tests such that they can be run using ctest
|
|
enable_testing()
|
|
endif()
|
|
|
|
if(ENABLE_TESTS)
|
|
find_package(GTest)
|
|
if (NOT GTest_FOUND)
|
|
message(STATUS "GTest package not found, will download googletest automatically. To prevent that install google test on your system (libgtest-dev)")
|
|
CPMAddPackage(
|
|
NAME googletest
|
|
GITHUB_REPOSITORY google/googletest
|
|
GIT_TAG release-1.12.1
|
|
VERSION 1.12.1
|
|
OPTIONS "INSTALL_GTEST OFF" "gtest_force_shared_crt" "BUILD_GMOCK OFF"
|
|
)
|
|
endif()
|
|
|
|
find_package(benchmark)
|
|
if (NOT benchmark_FOUND)
|
|
message(STATUS "benchmark package not found, will download benchmark automatically. To prevent that install google benchmark on your system (libbenchmark-dev)")
|
|
CPMAddPackage(
|
|
NAME benchmark
|
|
GITHUB_REPOSITORY google/benchmark
|
|
VERSION 1.9.0
|
|
OPTIONS "BENCHMARK_ENABLE_TESTING OFF"
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
add_subdirectory(common)
|
|
add_subdirectory(doc)
|
|
add_subdirectory(nfapi)
|
|
add_subdirectory(openair1)
|
|
add_subdirectory(openair2)
|
|
add_subdirectory(openair3)
|
|
add_subdirectory(radio)
|
|
add_subdirectory(tests)
|