CMakeLists.txt 94.2 KB
Newer Older
1 2 3 4 5
#/*
# * 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
6
# * the OAI Public License, Version 1.1  (the "License"); you may not use this file
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
# * 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
# */

Raymond Knopp's avatar
Raymond Knopp committed
22
# Author: laurent THOMAS, Lionel GAUTHIER
thomasl's avatar
thomasl committed
23

Robert Schmidt's avatar
Robert Schmidt committed
24
cmake_minimum_required (VERSION 3.12)
25
project (OpenAirInterface LANGUAGES C CXX)
thomasl's avatar
thomasl committed
26

27 28 29 30 31
#########################################################
# Base directories, compatible with legacy OAI building #
#########################################################
set (OPENAIR_DIR     ${CMAKE_SOURCE_DIR})

32
include("cmake_targets/macros.cmake")
Laurent's avatar
Laurent committed
33

34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
##############################
### 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()

Laurent's avatar
Laurent committed
53 54 55 56 57 58
# 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)

59 60 61
# 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)
62
find_program(ASN1C_EXEC_PATH asn1c HINTS /opt/asn1c/bin)
63
set(ASN1C_EXEC ${ASN1C_EXEC_PATH} CACHE FILEPATH "path to asn1c executable")
64 65 66 67 68 69 70
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()
71 72 73 74 75 76
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)

77 78 79
#########################################################
# Base directories, compatible with legacy OAI building #
#########################################################
Cedric Roux's avatar
Cedric Roux committed
80 81
set (NFAPI_DIR       ${OPENAIR_DIR}/nfapi/open-nFAPI)
set (NFAPI_USER_DIR  ${OPENAIR_DIR}/nfapi/oai_integration)
thomasl's avatar
thomasl committed
82 83 84
set (OPENAIR1_DIR    ${OPENAIR_DIR}/openair1)
set (OPENAIR2_DIR    ${OPENAIR_DIR}/openair2)
set (OPENAIR3_DIR    ${OPENAIR_DIR}/openair3)
85
set (OPENAIR3_DIR    ${OPENAIR_DIR}/openair3)
thomasl's avatar
thomasl committed
86 87 88 89 90
set (OPENAIR_CMAKE   ${OPENAIR_DIR}/cmake_targets)
set (OPENAIR_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})

project (OpenAirInterface)

91
####################################################
thomasl's avatar
thomasl committed
92 93
# compilation flags
#############################################
94

95
#set(CMAKE_BUILD_TYPE "Debug")
thomasl's avatar
thomasl committed
96 97 98
if (CMAKE_BUILD_TYPE STREQUAL "")
   set(CMAKE_BUILD_TYPE "RelWithDebInfo")
endif()
99
message(STATUS "CMAKE_BUILD_TYPE is ${CMAKE_BUILD_TYPE}")
100
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)
thomasl's avatar
thomasl committed
101

102 103 104
# 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   
105
if(EXISTS "/proc/cpuinfo" AND NOT CROSS_COMPILE)
106 107 108
  file(STRINGS "/proc/cpuinfo" CPUFLAGS REGEX flags LIMIT_COUNT 1)
else()
  message(WARNING "did not find /proc/cpuinfo -- not setting any x86-specific compilation variables")
109
endif()
110
 
111
eval_boolean(AUTODETECT_AVX512 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx512")
112
add_boolean_option(AVX512 ${AUTODETECT_AVX512} "Whether AVX512 intrinsics is available on the host processor" ON)
113

114
eval_boolean(AUTODETECT_AVX2 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx2")
115
add_boolean_option(AVX2 ${AUTODETECT_AVX2} "Whether AVX2 intrinsics is available on the host processor" ON)
116

117
message(STATUS "CPU architecture is ${CMAKE_SYSTEM_PROCESSOR}")
118 119 120 121
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")
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
  # 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()
144 145 146 147 148 149
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")
  set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -lgcc -lrt")
else()
  message(FATAL_ERROR "compile for CPU architecture ${CPUARCH}, CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}")
150
endif()
151

152 153 154 155 156
if (NOT CROSS_COMPILE)
  set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=native")
else ()
  set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=armv8-a")
endif()
157 158

# add autotools definitions that were maybe used!
159
add_definitions("-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")
160

161 162 163 164 165 166
set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing")
# GNU C/C++ Compiler might throw many warnings without packed-bitfield-compat, see man page
# also, we need -rdynamic to incorporate all symbols in shared objects, again, see man page
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  set(commonOpts "${commonOpts} -Wno-packed-bitfield-compat -rdynamic")
endif()
167 168

set(CMAKE_C_FLAGS
mir's avatar
mir committed
169
  "${CMAKE_C_FLAGS} ${C_FLAGS_PROCESSOR} ${commonOpts} -std=gnu11 -funroll-loops")
170
set(CMAKE_CXX_FLAGS
171
  "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR}  ${commonOpts} -std=c++11")
172

173

174
add_boolean_option(SANITIZE_ADDRESS False "enable the address sanitizer (ASan)" ON)
175
if (SANITIZE_ADDRESS)
176 177
  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")
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
  # There seems to be some incompatibility with pthread_create and the RT scheduler, which
  # results in pthread_create hanging.
  #
  # When we switch from Ubuntu 16.04 to 18.04, we found that running with the address sanitizer,
  # the pthread_create function calls were not working. The inital thought was that we were
  # trying to create a thread that was not-blocking and would eventually crash the machine during
  # the run. After more debugging, we found that we would never even start the thread. We narrowed
  # down the first two instances of pthread_create in the gNB and NR UE to be sctp_eNB_task and
  # one_thread, respectively. We found that adding sleeps, and various other pauses to the threads
  # had not effect. From there, we found that if we add an abort(); prior to the thread loop, we
  # do not execute that. This indicated to us that the problem is not likely to be a non-blocking
  # thread, but perhaps and issue with pthread_create itself. From there we begain to research the
  # issue on the web. See: https://github.com/google/sanitizers/issues/1125
  #
  # Google searching indicates this appears to be a problem since at least 2018. This could be something
  # wrong in the pthread library, or something subtly wrong in this CMakeLists.txt. Use Ubuntu 20.04 instead.
194 195
endif ()

196 197 198 199 200 201 202
add_boolean_option(SANITIZE_THREAD False "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()

203
add_boolean_option(SANITIZE_UNDEFINED False "enable the undefined behavior sanitizer (UBSan)" ON)
204 205 206 207 208
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 ()

209 210
add_boolean_option(SANITIZE_MEMORY False "enable the memory sanitizer (MSan, requires clang, incompatible with ASan/UBSan)" ON)
if(SANITIZE_MEMORY)
211 212 213 214 215 216
  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()
217 218 219 220
  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()

221
add_definitions("-DASN_DISABLE_OER_SUPPORT -DHAVE_CONFIG_H -DHAVE_CONFIG_H_")
222 223

#########################
224
set(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -ggdb2 -Wl,-rpath -Wl,${CMAKE_CURRENT_BINARY_DIR}")
225
#########################
226 227
# set a flag for changes in the source code
# these changes are related to hardcoded path to include .h files
228
set(debugOpt "-ggdb2 -DMALLOC_CHECK_=3 -fno-delete-null-pointer-checks")
229
set(CMAKE_C_FLAGS_DEBUG "${debugOpt} -O0")
230 231
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${debugOpt} -O2")
set(CMAKE_C_FLAGS_RELEASE "-O3")
232

233 234 235 236
# 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}")

237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257
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
  )
258

259 260 261 262 263 264 265 266
  # 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()
thomasl's avatar
thomasl committed
267

268 269
# Below is a hard-coded info
set (FIRMWARE_VERSION "No svn information")
thomasl's avatar
thomasl committed
270
add_definitions("-DFIRMWARE_VERSION=\"${FIRMWARE_VERSION}\"")
271 272
add_definitions("-DPACKAGE_VERSION=\"Branch: ${GIT_BRANCH} Abrev. Hash: ${GIT_COMMIT_HASH} Date: ${GIT_COMMIT_DATE}\"")
add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"")
thomasl's avatar
thomasl committed
273 274 275

# Debug related options
#########################################
276 277 278 279 280
add_boolean_option(DEBUG_ASN1 False "Enable ASN1 debug logs" OFF)
# 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)
281 282 283 284
add_boolean_option(T_TRACER            True  "Activate the T tracer, a debugging/monitoring framework" ON)
add_boolean_option(UE_AUTOTEST_TRACE   False "Activate UE autotest specific logs" ON)
add_boolean_option(UE_DEBUG_TRACE      False "Activate UE debug trace" ON)
add_boolean_option(UE_TIMING_TRACE     False "Activate UE timing trace" ON)
thomasl's avatar
thomasl committed
285

laurent's avatar
laurent committed
286
set (OCP_ITTI ${OPENAIR_DIR}/common/utils/ocp_itti)
287
add_library(ITTI ${OCP_ITTI}/intertask_interface.cpp)
288
target_link_libraries(ITTI PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
thomasl's avatar
thomasl committed
289

290 291 292
# asn1c skeletons need this
add_definitions(-DHAVE_NETINET_IN_H)

293 294 295 296 297 298
#########################
##### E2 AGENT
#########################
set(E2_AGENT "OFF" CACHE STRING "O-RAN-compliant E2 Agent")
set_property(CACHE E2_AGENT PROPERTY STRINGS "ON" "OFF")

299 300 301 302
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}")

Teodora's avatar
Teodora committed
303 304
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")
305 306 307
message(STATUS "Selected KPM Version: ${KPM_VERSION}")


308 309 310
##################################################
# ASN.1 grammar C code generation & dependencies #
##################################################
thomasl's avatar
thomasl committed
311 312 313

# RRC
######
314
add_library(lte_rrc
315 316
    ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1_msg.c
    ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c)
317 318
target_link_libraries(lte_rrc PUBLIC asn1_lte_rrc)
target_link_libraries(lte_rrc PRIVATE nr_rrc)
thomasl's avatar
thomasl committed
319

320

321
#NR RRC
322
#######
323
add_library(nr_rrc ${OPENAIR2_DIR}/RRC/NR/MESSAGES/asn1_msg.c)
324
target_link_libraries(nr_rrc PUBLIC asn1_nr_rrc asn1_lte_rrc)
325

thomasl's avatar
thomasl committed
326 327
# S1AP
##############
gauthier's avatar
gauthier committed
328
set(S1AP_DIR ${OPENAIR3_DIR}/S1AP)
thomasl's avatar
thomasl committed
329
include_directories ("${S1AP_DIR}")
330 331
add_library(s1ap
  ${S1AP_DIR}/s1ap_common.c
332 333 334 335 336 337 338 339 340 341 342 343 344
  ${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
  )
345
target_link_libraries(s1ap PUBLIC asn1_s1ap)
346
target_link_libraries(s1ap PRIVATE nr_rrc asn1_nr_rrc_hdrs lte_rrc)
347

zhenghuangkun's avatar
zhenghuangkun committed
348 349 350 351
# NGAP
##############
set(NGAP_DIR ${OPENAIR3_DIR}/NGAP)
include_directories ("${NGAP_DIR}")
352
add_library(ngap
heshanyun's avatar
heshanyun committed
353 354 355 356 357 358 359 360 361 362 363 364 365
  ${NGAP_DIR}/ngap_gNB.c
  ${NGAP_DIR}/ngap_gNB_context_management_procedures.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
  )
366 367
target_link_libraries(ngap PUBLIC asn1_ngap)
target_link_libraries(ngap PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
zhenghuangkun's avatar
zhenghuangkun committed
368

369 370 371
#M2AP
##############
set(M2AP_DIR ${OPENAIR2_DIR}/M2AP)
372
add_library(m2ap
373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389
  ${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
 )
390 391 392
target_link_libraries(m2ap PUBLIC asn1_m2ap)
target_link_libraries(m2ap PRIVATE lte_rrc nr_rrc)
target_include_directories(m2ap PRIVATE "${M2AP_DIR}")
393 394 395 396

#M3AP
##############
set(M3AP_DIR ${OPENAIR3_DIR}/M3AP)
397
add_library(m3ap
398 399 400 401 402 403 404 405 406 407 408 409 410 411
  ${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
412 413
)
target_link_libraries(m3ap PUBLIC asn1_m3ap)
414
target_link_libraries(m3ap PRIVATE m2ap)
415
target_link_libraries(m3ap PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
416
target_include_directories(m3ap PUBLIC "${M3AP_DIR}")
417

418 419 420 421
#X2AP
##############
set(X2AP_DIR ${OPENAIR2_DIR}/X2AP)
include_directories ("${X2AP_DIR}")
422 423
add_library(x2ap
  ${X2AP_DIR}/x2ap_common.c
424
  ${X2AP_DIR}/x2ap_eNB.c
425 426
  ${X2AP_DIR}/x2ap_eNB_decoder.c
  ${X2AP_DIR}/x2ap_eNB_encoder.c
427
  ${X2AP_DIR}/x2ap_eNB_handler.c
428
  ${X2AP_DIR}/x2ap_eNB_itti_messaging.c
429
  ${X2AP_DIR}/x2ap_eNB_management_procedures.c
430
  ${X2AP_DIR}/x2ap_eNB_generate_messages.c
431
  ${X2AP_DIR}/x2ap_ids.c
Cedric Roux's avatar
Cedric Roux committed
432
  ${X2AP_DIR}/x2ap_timers.c
433
 )
434
target_link_libraries(x2ap PUBLIC asn1_x2ap)
435
target_link_libraries(x2ap PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
436

437
# F1AP
438 439
##############
set(F1AP_DIR ${OPENAIR2_DIR}/F1AP)
440 441
add_library(f1ap
            ${F1AP_DIR}/f1ap_common.c
442
            ${F1AP_DIR}/f1ap_ids.c
443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460
            ${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_cu_warning_message_transmission.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_system_information.c
            ${F1AP_DIR}/f1ap_du_task.c
            ${F1AP_DIR}/f1ap_du_ue_context_management.c
            ${F1AP_DIR}/f1ap_du_warning_message_transmission.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)
461
target_link_libraries(f1ap PRIVATE ngap nr_rrc HASHTABLE)
462

463 464
# LPP
##############
465
# target asn1_lpp in openair3/LPP/MESSAGES/CMakeLists.txt used below
466

thomasl's avatar
thomasl committed
467 468
# Hardware dependant options
###################################
469
add_list1_option(NB_ANTENNAS_RX "4" "Number of antennas in reception" "1" "2" "4")
Xiwen JIANG's avatar
Xiwen JIANG committed
470
add_list1_option(NB_ANTENNAS_TX "4" "Number of antennas in transmission" "1" "2" "4")
thomasl's avatar
thomasl committed
471

472
set (CONFIG_ROOTDIR ${OPENAIR_DIR}/common/config)
473 474 475 476
add_library(config_internals OBJECT
  ${CONFIG_ROOTDIR}/config_common.c
)

477
add_library(CONFIG_LIB
478 479 480
  ${CONFIG_ROOTDIR}/config_load_configmodule.c
  ${CONFIG_ROOTDIR}/config_userapi.c
  ${CONFIG_ROOTDIR}/config_cmdline.c
481
)
482
target_link_libraries(CONFIG_LIB PRIVATE config_internals dl UTIL)
483 484 485 486

# CONFIG_LIB is a wrapper around a particular config implementation, default is
# libconfig in params_libconfig below
pkg_check_modules(libconfig REQUIRED libconfig)
487
add_library(params_libconfig MODULE ${CONFIG_ROOTDIR}/libconfig/config_libconfig.c)
488
target_include_directories(params_libconfig PRIVATE ${libconfig_INCLUDE_DIRS})
489
target_link_libraries(params_libconfig PRIVATE config_internals ${libconfig_LIBRARIES})
490

oai's avatar
oai committed
491
# shared library loader
492 493
add_library(shlib_loader OBJECT common/utils/load_module_shlib.c)
target_link_libraries(shlib_loader PRIVATE CONFIG_LIB)
494

495
##########################################################
496

497 498 499 500 501 502
# LDPC offload library - AMD T2 Accelerator Card
##########################################################

add_boolean_option(ENABLE_LDPC_T2 OFF "Build support for LDPC Offload to T2 library" OFF)
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/x86_64-linux-gnu/pkgconfig")
if (ENABLE_LDPC_T2)
503 504
  pkg_check_modules(LIBDPDK_T2 REQUIRED libdpdk=20.11.9)
  find_library(PMD_T2 NAMES rte_baseband_accl_ldpc HINTS ${LIBDPDK_T2_LIBRARY_DIRS})
505
  if (NOT PMD_T2)
506
    message(FATAL_ERROR "could not find poll-mode driver for AccelerComm T2 LDPC Offload (rte_baseband_accl_ldpc.so)")
507 508 509 510 511 512 513 514 515
  endif()
  message(STATUS "T2 build: use ${PMD_T2}")
  add_library(ldpc_t2 MODULE ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c)
  set_target_properties(ldpc_t2 PROPERTIES COMPILE_FLAGS "-DALLOW_EXPERIMENTAL_API")
  target_link_libraries(ldpc_t2 ${LIBDPDK_T2_LDFLAGS} ${PMD_T2})
endif()

##########################################################

516 517 518 519 520 521 522 523
# LDPC offload with xdma driver
##########################################################

add_library(ldpc_xdma STATIC ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload_xdma.c)
target_include_directories(ldpc_xdma PRIVATE "${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder_offload_xdma")

##########################################################

francescomani's avatar
francescomani committed
524
include_directories ("${OPENAIR_DIR}/radio/COMMON")
thomasl's avatar
thomasl committed
525

thomasl's avatar
thomasl committed
526 527 528
##############################################################
#    ???!!! TO BE DOCUMENTED OPTIONS !!!???
##############################################################
529

530 531
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????" ON)
add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????" ON)
532

533 534 535 536
add_boolean_option(UE_EXPANSION             False         "enable UE_EXPANSION with max 256 UE" ON)
add_boolean_option(PHY_TX_THREAD            False         "enable UE_EXPANSION with max 256 UE" ON)
add_boolean_option(PRE_SCD_THREAD           False         "enable UE_EXPANSION with max 256 UE" ON)
add_boolean_option(UESIM_EXPANSION          False         "enable UESIM_EXPANSION with max 256 UE" ON)
rmagueta's avatar
rmagueta committed
537

thomasl's avatar
thomasl committed
538 539 540
##########################
# SCHEDULING/REAL-TIME/PERF options
##########################
541 542 543
add_boolean_option(ENABLE_USE_CPU_EXECUTION_TIME False "Add data in vcd traces: disable it if perf issues" ON)
add_boolean_option(ENABLE_VCD              False  "always true now, time measurements of proc calls and var displays" ON)
add_boolean_option(ENABLE_VCD_FIFO         False  "time measurements of proc calls and var displays sent to FIFO (one more thread)" ON)
thomasl's avatar
thomasl committed
544 545 546 547

##########################
# PHY options
##########################
548 549 550 551 552 553
add_boolean_option(LOCALIZATION            False "???" ON)
add_integer_option(MAX_NUM_CCs             1     "????" ON)
add_boolean_option(SMBV                    False "Rohde&Schwarz SMBV100A vector signal generator" ON)
add_boolean_option(DEBUG_PHY               False "Enable PHY layer debugging options" ON)
add_boolean_option(DEBUG_PHY_PROC          False "Enable debugging of PHY layer procedures" ON)
add_boolean_option(MEX                     False "Enabling compilation with mex" ON)
thomasl's avatar
thomasl committed
554 555 556 557

##########################
# NAS LAYER OPTIONS
##########################
558 559 560
add_boolean_option(ENABLE_NAS_UE_LOGGING   True  "????" ON)
add_boolean_option(NAS_BUILT_IN_UE         True  "UE NAS layer present in this executable" ON)
add_boolean_option(NAS_UE                  True  "NAS UE INSTANCE (<> NAS_MME)" ON)
thomasl's avatar
thomasl committed
561 562 563 564 565


##########################
# RRC LAYER OPTIONS
##########################
566
add_boolean_option(RRC_DEFAULT_RAB_IS_AM       True   "set the LTE RLC mode to AM for the default bearer, otherwise it is UM." ON)
thomasl's avatar
thomasl committed
567

568
# add the binary tree to the search path for include files
thomasl's avatar
thomasl committed
569 570 571 572
#######################################################
# We will find ConfigOAI.h after generation in target directory
include_directories("${OPENAIR_BIN_DIR}")
# add directories to find all include files
573
# the internal rule is to use generic names such as defs.h
thomasl's avatar
thomasl committed
574
# but to make it uniq name as adding the relative path in the include directtive
575
# example: #include "RRC/LTE/rrc_defs.h"
thomasl's avatar
thomasl committed
576 577 578 579 580
#find_path (include_dirs_all *.h ${OPENAIR_DIR})
#find_path (include_dirs_all *.h PATHS /usr/include NO_CMAKE_PATH)
#include_directories("${include_dirs_all}")

# Legacy exact order
laurent's avatar
laurent committed
581

laurent's avatar
laurent committed
582
include_directories("${OPENAIR_DIR}/executables")
583 584 585 586 587
include_directories("${OPENAIR2_DIR}/COMMON")
include_directories("${OPENAIR2_DIR}/UTIL")
include_directories("${OPENAIR2_DIR}/UTIL/LOG")
include_directories("${OPENAIR3_DIR}/COMMON")
include_directories("${OPENAIR3_DIR}/UTILS")
588 589 590 591 592 593
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")
thomasl's avatar
thomasl committed
594 595
include_directories("${OPENAIR1_DIR}")
include_directories("${OPENAIR2_DIR}")
596 597
include_directories("${OPENAIR3_DIR}/NAS/TOOLS")
include_directories("${OPENAIR2_DIR}/ENB_APP")
598
include_directories("${OPENAIR2_DIR}/GNB_APP")
599
include_directories("${OPENAIR2_DIR}/MCE_APP")
thomasl's avatar
thomasl committed
600 601
include_directories("${OPENAIR2_DIR}/LAYER2/RLC")
include_directories("${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0")
602 603
include_directories("${OPENAIR2_DIR}/RRC/LTE/MESSAGES")
include_directories("${OPENAIR2_DIR}/RRC/LTE")
thomasl's avatar
thomasl committed
604
include_directories("${OPENAIR_DIR}/common/utils")
laurent's avatar
laurent committed
605
include_directories("${OPENAIR_DIR}/common/utils/collection")
laurent's avatar
laurent committed
606
include_directories("${OPENAIR_DIR}/common/utils/ocp_itti")
gauthier's avatar
gauthier committed
607 608 609 610
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")
laurent's avatar
laurent committed
611 612 613
include_directories("${OPENAIR3_DIR}/NAS/UE/ESM")
include_directories("${OPENAIR3_DIR}/NAS/UE/EMM")
include_directories("${OPENAIR3_DIR}/NAS/UE/API/USER")
gauthier's avatar
gauthier committed
614 615 616 617 618
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")
619
include_directories("${OPENAIR2_DIR}/X2AP")
620
include_directories("${OPENAIR2_DIR}/M2AP")
621
include_directories("${OPENAIR2_DIR}/F1AP")
Laurent THOMAS's avatar
Laurent THOMAS committed
622
include_directories("${OPENAIR3_DIR}/ocp-gtpu")
623 624
include_directories("${OPENAIR3_DIR}/M3AP")
include_directories("${OPENAIR3_DIR}/MME_APP")
francescomani's avatar
francescomani committed
625
include_directories("${OPENAIR_DIR}/radio/COMMON")
thomasl's avatar
thomasl committed
626 627 628 629 630 631 632 633
include_directories("${OPENAIR2_DIR}/UTIL/OSA")
include_directories("${OPENAIR2_DIR}/UTIL/MEM")
include_directories("${OPENAIR2_DIR}/UTIL/LISTS")
include_directories("${OPENAIR2_DIR}/UTIL/FIFO")
include_directories("${OPENAIR2_DIR}/UTIL/MATH")
include_directories("${OPENAIR2_DIR}/UTIL/TIMER")
include_directories("${OPENAIR2_DIR}/UTIL/OTG")
include_directories("${OPENAIR2_DIR}/UTIL/OPT")
634
include_directories("${OPENAIR_DIR}")
thomasl's avatar
thomasl committed
635

636 637 638 639
###########
# Utilities
###############

640 641 642 643 644 645 646 647 648
# include T directory even if the T is off because T macros are in the code
# no matter what. Note: sone 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>)

649
add_library(HASHTABLE
650 651
  ${OPENAIR_DIR}/common/utils/hashtable/hashtable.c
  ${OPENAIR_DIR}/common/utils/hashtable/obj_hashtable.c
652
)
653
include_directories(${OPENAIR_DIR}/common/utils/hashtable)
654

655
add_library(UTIL
656
  ${OPENAIR_DIR}/common/utils/LOG/log.c
657
  ${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
thomasl's avatar
thomasl committed
658 659
  ${OPENAIR2_DIR}/UTIL/MATH/oml.c
  ${OPENAIR2_DIR}/UTIL/OPT/probe.c
660 661 662
  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
  ${OPENAIR_DIR}/common/utils/utils.c
  ${OPENAIR_DIR}/common/utils/system.c
663
  ${OPENAIR_DIR}/common/utils/time_meas.c
664
  ${OPENAIR_DIR}/common/utils/time_stat.c
Robert Schmidt's avatar
Robert Schmidt committed
665
)
666
target_link_libraries(UTIL PUBLIC ${T_LIB} pthread)
667

mir's avatar
mir committed
668
set(SECURITY_SRC
669
  ${OPENAIR3_DIR}/SECU/secu_defs.c
gauthier's avatar
gauthier committed
670
  ${OPENAIR3_DIR}/SECU/kdf.c
671 672
  ${OPENAIR3_DIR}/SECU/aes_128_ctr.c
  ${OPENAIR3_DIR}/SECU/aes_128_cbc_cmac.c
mir's avatar
mir committed
673
  ${OPENAIR3_DIR}/SECU/aes_128_ecb.c
674
  ${OPENAIR3_DIR}/SECU/sha_256_hmac.c
gauthier's avatar
gauthier committed
675 676 677
  ${OPENAIR3_DIR}/SECU/rijndael.c
  ${OPENAIR3_DIR}/SECU/snow3g.c
  ${OPENAIR3_DIR}/SECU/key_nas_deriver.c
mir's avatar
mir committed
678
  ${OPENAIR3_DIR}/SECU/nas_stream_eea0.c
gauthier's avatar
gauthier committed
679 680 681 682
  ${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
thomasl's avatar
thomasl committed
683 684
  )

685
pkg_check_modules(OpenSSL openssl REQUIRED)
mir's avatar
mir committed
686 687
add_library(SECURITY ${SECURITY_SRC} $<TARGET_OBJECTS:ds>)
target_include_directories(SECURITY PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
688
target_link_libraries(SECURITY PRIVATE ${OpenSSL_LIBRARIES})
689

690
# Physical Channel Procedures Scheduling
thomasl's avatar
thomasl committed
691
################################"
692
set(SCHED_SRC
693
  ${OPENAIR1_DIR}/SCHED/fapi_l1.c
694 695 696
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_eNb.c
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
)
thomasl's avatar
thomasl committed
697
add_library(SCHED_LIB ${SCHED_SRC})
698
target_link_libraries(SCHED_LIB PRIVATE asn1_lte_rrc_hdrs)
thomasl's avatar
thomasl committed
699

Guy De Souza's avatar
Guy De Souza committed
700
set(SCHED_NR_SRC
701
  ${OPENAIR1_DIR}/SCHED_NR/fapi_nr_l1.c
Guy De Souza's avatar
Guy De Souza committed
702
  ${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_gNB.c
703
  ${OPENAIR1_DIR}/SCHED_NR/nr_prach_procedures.c
704
  ${OPENAIR1_DIR}/SCHED_NR/phy_frame_config_nr.c
Guy De Souza's avatar
Guy De Souza committed
705 706
)
add_library(SCHED_NR_LIB ${SCHED_NR_SRC})
707
target_link_libraries(SCHED_NR_LIB PRIVATE asn1_nr_rrc_hdrs)
708

709
set(SCHED_SRC_RU
710
  ${OPENAIR1_DIR}/SCHED/ru_procedures.c
711
  ${OPENAIR1_DIR}/SCHED_NR/nr_ru_procedures.c
712
  ${OPENAIR1_DIR}/SCHED/prach_procedures.c
713 714
)
add_library(SCHED_RU_LIB ${SCHED_SRC_RU})
715
target_link_libraries(SCHED_RU_LIB PRIVATE asn1_lte_rrc_hdrs)
716

717
set(SCHED_SRC_UE
718
  ${OPENAIR1_DIR}/SCHED_UE/phy_procedures_lte_ue.c
719
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
720 721 722
  ${OPENAIR1_DIR}/SCHED_UE/pucch_pc.c
  ${OPENAIR1_DIR}/SCHED_UE/pusch_pc.c
  ${OPENAIR1_DIR}/SCHED_UE/srs_pc.c
723 724
)
add_library(SCHED_UE_LIB ${SCHED_SRC_UE})
725
target_link_libraries(SCHED_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
726

727 728
set(SCHED_SRC_NR_UE
  ${OPENAIR1_DIR}/SCHED_NR_UE/phy_procedures_nr_ue.c
729
  ${OPENAIR1_DIR}/SCHED_NR_UE/fapi_nr_ue_l1.c
cig's avatar
cig committed
730
  ${OPENAIR1_DIR}/SCHED_NR_UE/phy_frame_config_nr_ue.c
731 732 733 734
  ${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})
735
target_link_libraries(SCHED_NR_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
736

737

738 739 740 741
# nFAPI
#################################
set(NFAPI_COMMON_SRC
  ${NFAPI_DIR}/common/src/debug.c
742
  )
743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764
add_library(NFAPI_COMMON_LIB ${NFAPI_COMMON_SRC})

include_directories(${NFAPI_DIR}/common/public_inc)

set(NFAPI_SRC
  ${NFAPI_DIR}/nfapi/src/nfapi.c
  ${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})

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})
765
target_link_libraries(NFAPI_PNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
766 767 768 769 770 771 772 773 774 775 776

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})
777
target_link_libraries(NFAPI_VNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
778 779 780 781 782 783 784

include_directories(${NFAPI_DIR}/vnf/public_inc)
include_directories(${NFAPI_DIR}/vnf/inc)

# nFAPI user defined code
#############################
set(NFAPI_USER_SRC
Cedric Roux's avatar
Cedric Roux committed
785 786 787
  ${NFAPI_USER_DIR}/nfapi.c
  ${NFAPI_USER_DIR}/nfapi_pnf.c
  ${NFAPI_USER_DIR}/nfapi_vnf.c
788
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
789 790
)
add_library(NFAPI_USER_LIB ${NFAPI_USER_SRC})
791
target_link_libraries(NFAPI_USER_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
792 793
include_directories(${NFAPI_USER_DIR})

thomasl's avatar
thomasl committed
794 795
# Layer 1
#############################
796 797 798 799 800 801 802 803
set(PHY_TURBOSRC
  ${OPENAIR1_DIR}/PHY/CODING/3gpplte_sse.c
  ${OPENAIR1_DIR}/PHY/CODING/3gpplte.c
  ${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_sse_8bit.c
  ${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_sse_16bit.c
  ${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder_avx2_16bit.c
  ${OPENAIR1_DIR}/PHY/CODING/3gpplte_turbo_decoder.c
)
Guy De Souza's avatar
Guy De Souza committed
804
set(PHY_POLARSRC
yilmazt's avatar
yilmazt committed
805
  ${OPENAIR1_DIR}/PHY/CODING/nr_polar_init.c
Guy De Souza's avatar
Guy De Souza committed
806 807 808
  ${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_crc.c
yilmazt's avatar
yilmazt committed
809
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
Guy De Souza's avatar
Guy De Souza committed
810
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
yilmazt's avatar
yilmazt committed
811
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
812
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_interleaving_pattern.c
Guy De Souza's avatar
Guy De Souza committed
813 814 815
  ${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
yilmazt's avatar
yilmazt committed
816
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_procedures.c
Guy De Souza's avatar
Guy De Souza committed
817 818
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_sequence_pattern.c
)
819 820 821 822
set(PHY_SMALLBLOCKSRC
  ${OPENAIR1_DIR}/PHY/CODING/nrSmallBlock/encodeSmallBlock.c
  ${OPENAIR1_DIR}/PHY/CODING/nrSmallBlock/decodeSmallBlock.c
)
823 824 825
set(PHY_TURBOIF
  ${OPENAIR1_DIR}/PHY/CODING/coding_load.c
)
826 827

set(PHY_LDPC_ORIG_SRC
828 829
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c
830
)
831 832
add_library(ldpc_orig MODULE ${PHY_LDPC_ORIG_SRC} )
target_link_libraries(ldpc_orig PRIVATE ldpc_gen_HEADERS)
833

834 835 836
set(PHY_LDPC_OPTIM_SRC
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim.c
837 838 839 840
  )
add_library(ldpc_optim MODULE ${PHY_LDPC_OPTIM_SRC} )
target_link_libraries(ldpc_optim PRIVATE ldpc_gen_HEADERS)

841 842 843 844
set(PHY_LDPC_OPTIM8SEG_SRC
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8seg.c
)
845 846 847
add_library(ldpc_optim8seg MODULE ${PHY_LDPC_OPTIM8SEG_SRC} )
target_link_libraries(ldpc_optim8seg PRIVATE ldpc_gen_HEADERS)

848 849 850
set(PHY_LDPC_OPTIM8SEGMULTI_SRC
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
851 852 853 854
  )
add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
target_link_libraries(ldpc PRIVATE ldpc_gen_HEADERS)

855
set(PHY_LDPC_CUDA_SRC
856
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
857 858 859
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
)

860 861 862 863
set(PHY_LDPC_CL_SRC
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
)
864
add_custom_target( nrLDPC_decoder_kernels_CL
865 866
                   COMMAND gcc ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c -dD -DNRLDPC_KERNEL_SOURCE -E -o ${CMAKE_CURRENT_BINARY_DIR}/nrLDPC_decoder_kernels_CL.clc
                   SOURCES ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c
867
)
868 869
add_library(ldpc_cl MODULE ${PHY_LDPC_CL_SRC} )
target_link_libraries(ldpc_cl OpenCL)
870
add_dependencies(ldpc_cl nrLDPC_decoder_kernels_CL)
871

872 873 874
set(PHY_NR_CODINGIF
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c
)
875 876 877 878 879

##############################################
# Base CUDA setting
##############################################

880
add_boolean_option(ENABLE_LDPC_CUDA OFF "Build support for CUDA" OFF)
881 882 883 884 885
if (ENABLE_LDPC_CUDA)
  find_package(CUDA REQUIRED)
  SET(CUDA_NVCC_FLAG "${CUDA_NVCC_FLAGS};-arch=sm_60;")
  SET(CUDA_VERBOSE_BUILD ON)
  cuda_add_library(ldpc_cuda MODULE ${PHY_LDPC_CUDA_SRC})
frtabu's avatar
frtabu committed
886
  set_target_properties(ldpc_cuda PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
887 888 889 890
  if (NOT CUDA_FOUND)
    message(FATAL_ERROR "no CUDA found")
  endif()
endif()
frtabu's avatar
frtabu committed
891

892
add_library(coding MODULE ${PHY_TURBOSRC} )
893

894
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts_neon.c)
frtabu's avatar
frtabu committed
895 896


897 898
set(PHY_SRC_COMMON
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools_common.c
thomasl's avatar
thomasl committed
899
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
900 901 902
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/slss.c
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sldch.c
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/slsch.c
903
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/get_pmi.c
thomasl's avatar
thomasl committed
904
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/group_hopping.c
905 906 907 908 909 910 911
  ${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
912
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/srs_modulation.c
thomasl's avatar
thomasl committed
913 914 915 916 917 918 919 920 921
  ${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
922
  ${OPENAIR1_DIR}/PHY/CODING/nr_segmentation.c
923
  ${OPENAIR1_DIR}/PHY/CODING/nr_rate_matching.c
thomasl's avatar
thomasl committed
924 925
  ${OPENAIR1_DIR}/PHY/CODING/ccoding_byte.c
  ${OPENAIR1_DIR}/PHY/CODING/ccoding_byte_lte.c
926
  ${OPENAIR1_DIR}/PHY/CODING/3gpplte_sse.c
thomasl's avatar
thomasl committed
927
  ${OPENAIR1_DIR}/PHY/CODING/crc_byte.c
928
  ${PHY_TURBOIF}
thomasl's avatar
thomasl committed
929 930 931
  ${OPENAIR1_DIR}/PHY/CODING/lte_rate_matching.c
  ${OPENAIR1_DIR}/PHY/CODING/viterbi.c
  ${OPENAIR1_DIR}/PHY/CODING/viterbi_lte.c
932 933 934
  ${OPENAIR1_DIR}/PHY/INIT/init_top.c
  ${OPENAIR1_DIR}/PHY/INIT/lte_parms.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
frtabu's avatar
frtabu committed
935
  ${OPENAIR1_DIR}/PHY/TOOLS/dfts_load.c
936 937 938 939 940 941 942 943
  ${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cmult_sv.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cmult_vv.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/lut.c
944
  ${OPENAIR1_DIR}/PHY/TOOLS/simde_operations.c
945 946
  )

947
set(PHY_SRC
948 949
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pss.c
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss.c
laurent's avatar
laurent committed
950
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss_gen.c
951 952 953 954 955 956 957 958 959 960 961 962
  ${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
963
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
964 965
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_decoding.c
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/rar_tools.c
966
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/uci_tools.c
967 968
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
969
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
970 971
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
  ${OPENAIR1_DIR}/PHY/INIT/lte_init.c
972 973 974
  )

set(PHY_SRC_RU
975
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/if4_tools.c
976
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/drs_modulation.c
977
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
978
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
979 980
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
981
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.c
982
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_nr.c
983
  ${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz.c
laurent's avatar
laurent committed
984
  ${OPENAIR1_DIR}/PHY/MODULATION/gen_75KHz.cpp
985 986
  ${OPENAIR1_DIR}/PHY/MODULATION/beamforming.c
  ${OPENAIR1_DIR}/PHY/MODULATION/compute_bf_weights.c
987
  ${OPENAIR1_DIR}/PHY/INIT/lte_init_ru.c
988
  ${OPENAIR1_DIR}/PHY/INIT/nr_init_ru.c
989 990
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/prach.c

991 992
  )

993
set(PHY_SRC_UE
994
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/sss_ue.c
laurent's avatar
laurent committed
995
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss_gen.c
996 997
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
998
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/linear_preprocessing_rec.c
999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009
  ${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
1010 1011 1012
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/slss.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/sldch.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/slsch.c
1013 1014 1015
  ${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
1016
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/rar_tools_ue.c
1017
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/initial_sync.c
1018 1019
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep.c
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_mbsfn.c
1020
  ${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz_ue.c
1021 1022
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_time.c
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
1023
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c
1024 1025 1026 1027 1028 1029 1030
  ${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
thomasl's avatar
thomasl committed
1031
  )
1032

1033 1034
  set(PHY_NR_SRC_COMMON
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
1035
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_csi_rs.c
1036 1037
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c
1038
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
1039 1040
  )

1041
  set(PHY_NR_SRC
1042
  ${OPENAIR1_DIR}/PHY/INIT/nr_init.c
1043
  ${OPENAIR1_DIR}/PHY/INIT/nr_parms.c
1044
  ${OPENAIR1_DIR}/PHY/MODULATION/nr_modulation.c
ahadi's avatar
ahadi committed
1045
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prs.c
Guy De Souza's avatar
Guy De Souza committed
1046 1047
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_pss.c
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sss.c
Guy De Souza's avatar
Guy De Souza committed
1048
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_pbch.c
1049
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dci.c
1050
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dci_tools.c
1051 1052
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch.c
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch_tools.c
1053
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch_coding.c
1054
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
1055
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch.c
1056
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
Guy De Souza's avatar
Guy De Souza committed
1057
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_dmrs.c
1058
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach.c
1059
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c
1060
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
dir's avatar
dir committed
1061
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
1062
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
Guy De Souza's avatar
Guy De Souza committed
1063
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c
1064
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
1065
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
adk's avatar
adk committed
1066
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
1067
  ${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
1068
  ${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_freq_equalization.c
1069
  ${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_measurements_gNB.c
1070 1071
  ${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
1072
  #${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
1073 1074 1075 1076 1077 1078 1079 1080
  ${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cmult_sv.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cmult_vv.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/lut.c
1081
  ${OPENAIR1_DIR}/PHY/TOOLS/simde_operations.c
Guy De Souza's avatar
Guy De Souza committed
1082
  ${PHY_POLARSRC}
1083
  ${PHY_SMALLBLOCKSRC}
1084
  ${PHY_NR_CODINGIF}
1085
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/pucch_rx.c
1086
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/srs_rx.c
Francesco Mani's avatar
Francesco Mani committed
1087
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_uci_tools_common.c
1088 1089 1090
  )
  set(PHY_NR_UE_SRC
  ${OPENAIR1_DIR}/PHY/INIT/nr_parms.c
1091 1092
  ${OPENAIR1_DIR}/PHY/MODULATION/nr_modulation.c
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_nr.c
1093 1094 1095
  ${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
Hongzhi Wang's avatar
Hongzhi Wang committed
1096
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
1097
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ue_rf_helpers.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1098
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_pbch.c
1099
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
1100
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1101
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1102
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
1103
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
1104
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
1105
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_dmrs.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1106
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/
Agustin's avatar
Agustin committed
1107
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_prach.c
Agustin's avatar
Agustin committed
1108
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/dci_nr.c
1109
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/pucch_nr.c
1110
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/csi_rx.c
Francesco Mani's avatar
Francesco Mani committed
1111
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_uci_tools_common.c
1112
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
1113
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1114
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
1115
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
adk's avatar
adk committed
1116
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1117
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold_ue.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
1118
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1119
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
hongzhi wang's avatar
hongzhi wang committed
1120
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1121 1122
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_adjust_gain.c
1123 1124
  ${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
1125
 # ${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
1126 1127 1128 1129 1130 1131 1132 1133
  ${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cmult_sv.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cmult_vv.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/lut.c
1134
  ${OPENAIR1_DIR}/PHY/TOOLS/simde_operations.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1135
  ${OPENAIR1_DIR}/PHY/INIT/nr_init_ue.c
Agustin's avatar
Agustin committed
1136
  #  ${OPENAIR1_DIR}/SIMULATION/NR_UE_PHY/unit_tests/src/pucch_uci_test.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1137
  ${PHY_POLARSRC}
1138
  ${PHY_SMALLBLOCKSRC}
1139
  ${PHY_NR_CODINGIF}
1140 1141
  )

1142

thomasl's avatar
thomasl committed
1143 1144 1145
if (${SMBV})
  set(PHY_SRC "${PHY_SRC} ${OPENAIR1_DIR}/PHY/TOOLS/smbv.c")
endif  (${SMBV})
1146

1147
set(PHY_SRC_UE ${PHY_SRC_UE} ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c)
1148

1149
add_library(PHY_COMMON ${PHY_SRC_COMMON})
1150
target_link_libraries(PHY_COMMON PRIVATE shlib_loader)
frtabu's avatar
frtabu committed
1151
add_dependencies(PHY_COMMON dfts)
1152
target_link_libraries(PHY_COMMON PRIVATE asn1_lte_rrc_hdrs)
1153

1154
add_library(PHY ${PHY_SRC})
1155
target_link_libraries(PHY PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1156

1157 1158 1159
pkg_check_modules(blas REQUIRED blas)
pkg_check_modules(lapacke REQUIRED lapacke)

1160
add_library(PHY_UE ${PHY_SRC_UE})
1161
target_link_libraries(PHY_UE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1162 1163 1164 1165 1166
# 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})
1167

1168
add_library(PHY_NR_COMMON ${PHY_NR_SRC_COMMON})
1169

1170
add_library(PHY_NR ${PHY_NR_SRC})
1171

1172
add_library(PHY_NR_UE ${PHY_NR_UE_SRC})
1173
target_link_libraries(PHY_NR_UE PRIVATE asn1_nr_rrc_hdrs)
1174

1175
add_library(PHY_RU ${PHY_SRC_RU})
1176
target_link_libraries(PHY_RU PRIVATE asn1_lte_rrc_hdrs)
thomasl's avatar
thomasl committed
1177

1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192
#Library for mex functions
#########################3
set(PHY_MEX_UE
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/linear_preprocessing_rec.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
  ${OPENAIR1_DIR}/PHY/TOOLS/log2_approx.c
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/get_pmi.c
  ${OPENAIR1_DIR}/PHY/TOOLS/dB_routines.c
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pmch_common.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cmult_sv.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cmult_vv.c
  ${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
1193 1194
  ${OPENAIR1_DIR}/PHY/TOOLS/simde_operations.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c
1195
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ue_measurements.c
1196
  ${OPENAIR_DIR}/common/utils/LOG/log.c
1197
  )
1198
add_library(PHY_MEX ${PHY_MEX_UE})
1199
target_link_libraries(PHY_MEX PRIVATE asn1_lte_rrc_hdrs)
1200

thomasl's avatar
thomasl committed
1201 1202 1203
#Layer 2 library
#####################
set(MAC_DIR ${OPENAIR2_DIR}/LAYER2/MAC)
1204
set(NR_GNB_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_gNB)
1205
set(NR_UE_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_UE)
1206
set(PHY_INTERFACE_DIR ${OPENAIR2_DIR}/PHY_INTERFACE)
1207
set(NR_PHY_INTERFACE_DIR ${OPENAIR2_DIR}/NR_PHY_INTERFACE)
1208
set(NR_UE_PHY_INTERFACE_DIR ${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE)
1209
set(RRC_DIR ${OPENAIR2_DIR}/RRC/LTE)
1210
set(NR_RRC_DIR ${OPENAIR2_DIR}/RRC/NR)
1211
set(NR_UE_RRC_DIR ${OPENAIR2_DIR}/RRC/NR_UE)
thomasl's avatar
thomasl committed
1212
set(PDCP_DIR  ${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0)
Cedric Roux's avatar
Cedric Roux committed
1213

Cedric Roux's avatar
Cedric Roux committed
1214
set(RLC_V2
1215 1216 1217 1218 1219 1220 1221 1222 1223 1224
  ${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
  )

1225 1226 1227 1228
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
Cedric Roux's avatar
Cedric Roux committed
1229 1230
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_sdu.c
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_timer_thread.c
1231
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_security_nea2.c
1232
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.c
Cedric Roux's avatar
Cedric Roux committed
1233
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.c
Cedric Roux's avatar
Cedric Roux committed
1234
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/asn1_utils.c
1235 1236 1237 1238
  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
1239
  )
Cedric Roux's avatar
Cedric Roux committed
1240

1241
set(NR_SDAP_SRC
1242 1243
  ${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap.c
  ${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap_entity.c
1244 1245
  )
  
Cedric Roux's avatar
Cedric Roux committed
1246 1247 1248 1249 1250 1251 1252 1253
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
1254
#  ${RRC_DIR}/rrc_UE.c
thomasl's avatar
thomasl committed
1255
  ${RRC_DIR}/rrc_eNB.c
Cedric Roux's avatar
Cedric Roux committed
1256
  ${RRC_DIR}/rrc_eNB_endc.c
thomasl's avatar
thomasl committed
1257
  ${RRC_DIR}/rrc_eNB_S1AP.c
1258
  ${RRC_DIR}/rrc_eNB_M2AP.c
1259
  ${RRC_DIR}/rrc_eNB_UE_context.c
Xue Song's avatar
Xue Song committed
1260
  ${NR_RRC_DIR}/rrc_gNB_UE_context.c
thomasl's avatar
thomasl committed
1261 1262
  ${RRC_DIR}/rrc_common.c
  ${RRC_DIR}/L2_interface.c
1263 1264
  ${RRC_DIR}/L2_interface_common.c
  ${RRC_DIR}/L2_interface_ue.c
thomasl's avatar
thomasl committed
1265
  )
1266

1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279
set(L2_RRC_SRC
  ${OPENAIR2_DIR}/LAYER2/openair2_proc.c
  #  ${RRC_DIR}/rrc_UE.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
  )
1280

Cedric Roux's avatar
Cedric Roux committed
1281
set(L2_LTE_SRC
Cedric Roux's avatar
Cedric Roux committed
1282
  ${RLC_V2}
Cedric Roux's avatar
Cedric Roux committed
1283 1284
  )

Guy De Souza's avatar
Guy De Souza committed
1285
set(L2_NR_SRC
1286
  ${NR_PDCP_SRC}
1287
  ${NR_SDAP_SRC}
1288 1289
  ${NR_RRC_DIR}/rrc_gNB.c
  ${NR_RRC_DIR}/nr_rrc_common.c
1290 1291
  ${NR_RRC_DIR}/mac_rrc_dl_direct.c
  ${NR_RRC_DIR}/mac_rrc_dl_f1ap.c
1292
  ${NR_RRC_DIR}/nr_rrc_config.c
1293
  ${NR_RRC_DIR}/rrc_gNB_nsa.c
Raymond Knopp's avatar
Raymond Knopp committed
1294
  ${NR_RRC_DIR}/rrc_gNB_internode.c
1295 1296
  ${NR_RRC_DIR}/rrc_gNB_reconfig.c
  ${NR_RRC_DIR}/rrc_gNB_UE_context.c
Xue Song's avatar
Xue Song committed
1297
  ${NR_RRC_DIR}/rrc_gNB_NGAP.c
1298
  ${NR_RRC_DIR}/rrc_gNB_radio_bearers.c
1299
  ${NR_RRC_DIR}/rrc_gNB_cuup.c
1300
  ${NR_RRC_DIR}/rrc_gNB_du.c
1301 1302
  )

1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313
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
thomasl's avatar
thomasl committed
1314
  )
1315

1316 1317 1318 1319 1320
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
1321 1322
  )

1323
set(NR_L2_SRC_UE
1324
  ${NR_PDCP_SRC}
1325
  ${NR_SDAP_SRC}
1326 1327
  ${NR_UE_RRC_DIR}/L2_interface_ue.c
  ${NR_UE_RRC_DIR}/main_ue.c
1328
  ${NR_RRC_DIR}/nr_rrc_config.c
1329
  ${NR_UE_RRC_DIR}/rrc_UE.c
1330
  ${NR_UE_RRC_DIR}/rrc_nsa.c
1331
  ${NR_UE_RRC_DIR}/rrc_timers_and_constants.c
1332
  ${NR_UE_RRC_DIR}/rrc_sl_preconfig.c
Guy De Souza's avatar
Guy De Souza committed
1333
  )
1334

thomasl's avatar
thomasl committed
1335
set (MAC_SRC
1336
  #${PHY_INTERFACE_DIR}/phy_stub_UE.c
1337
  ${PHY_INTERFACE_DIR}/IF_Module.c
thomasl's avatar
thomasl committed
1338
  ${MAC_DIR}/main.c
1339 1340 1341
  #${MAC_DIR}/main_ue.c
  #${MAC_DIR}/ue_procedures.c
  #${MAC_DIR}/ra_procedures.c
thomasl's avatar
thomasl committed
1342 1343
  ${MAC_DIR}/l1_helpers.c
  ${MAC_DIR}/rar_tools.c
1344
  #${MAC_DIR}/rar_tools_ue.c
thomasl's avatar
thomasl committed
1345 1346 1347 1348 1349 1350 1351
  ${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
Masayuki HARADA's avatar
Masayuki HARADA committed
1352
  ${MAC_DIR}/eNB_scheduler_fairRR.c
1353
  ${MAC_DIR}/eNB_scheduler_phytest.c
thomasl's avatar
thomasl committed
1354
  ${MAC_DIR}/pre_processor.c
Robert Schmidt's avatar
Robert Schmidt committed
1355
  ${MAC_DIR}/slicing/slicing.c
thomasl's avatar
thomasl committed
1356
  ${MAC_DIR}/config.c
1357
  ${MAC_DIR}/config_ue.c
1358 1359
 )

Guy De Souza's avatar
Guy De Souza committed
1360
set (MAC_NR_SRC
1361
  ${NR_PHY_INTERFACE_DIR}/NR_IF_Module.c
1362
  ${NR_PHY_INTERFACE_DIR}/nr_sched_response.c
1363 1364 1365 1366 1367 1368 1369 1370
  ${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
1371
  ${NR_GNB_MAC_DIR}/gNB_scheduler_uci.c
1372
  ${NR_GNB_MAC_DIR}/gNB_scheduler_srs.c
1373
  ${NR_GNB_MAC_DIR}/gNB_scheduler_RA.c
1374
  ${NR_GNB_MAC_DIR}/mac_rrc_dl_handler.c
1375 1376
  ${NR_GNB_MAC_DIR}/mac_rrc_ul_direct.c
  ${NR_GNB_MAC_DIR}/mac_rrc_ul_f1ap.c
1377 1378
 )

1379

1380
set (MAC_SRC_UE
1381
  ${PHY_INTERFACE_DIR}/phy_stub_UE.c
1382
  ${PHY_INTERFACE_DIR}/queue_t.c
1383 1384 1385 1386 1387 1388
  ${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
1389
 )
1390

1391 1392
set (MAC_NR_SRC_UE
  ${NR_UE_PHY_INTERFACE_DIR}/NR_IF_Module.c
1393
  ${NR_UE_PHY_INTERFACE_DIR}/NR_Packet_Drop.c
1394 1395 1396 1397
  ${NR_UE_MAC_DIR}/config_ue.c
  ${NR_UE_MAC_DIR}/mac_vars.c
  ${NR_UE_MAC_DIR}/main_ue_nr.c
  ${NR_UE_MAC_DIR}/nr_ue_procedures.c
1398
  ${NR_UE_MAC_DIR}/nr_ue_scheduler.c
1399
  ${NR_UE_MAC_DIR}/nr_ue_dci_configuration.c
1400
  ${NR_UE_MAC_DIR}/nr_ra_procedures.c
1401
  ${NR_UE_MAC_DIR}/nr_ue_power_procedures.c
1402
)
1403

thomasl's avatar
thomasl committed
1404 1405 1406
set (ENB_APP_SRC
  ${OPENAIR2_DIR}/ENB_APP/enb_app.c
  ${OPENAIR2_DIR}/ENB_APP/enb_config.c
1407 1408
  ${OPENAIR2_DIR}/ENB_APP/enb_config_SL.c
  ${OPENAIR2_DIR}/ENB_APP/enb_config_eMTC.c
1409
  ${OPENAIR2_DIR}/ENB_APP/RRC_config_tools.c
thomasl's avatar
thomasl committed
1410 1411
  )

1412 1413
set (GNB_APP_SRC
  ${OPENAIR2_DIR}/GNB_APP/gnb_app.c
1414
  ${OPENAIR2_DIR}/E1AP/e1ap_setup.c
1415 1416
  ${OPENAIR2_DIR}/GNB_APP/gnb_config.c
  )
1417 1418 1419 1420 1421

set (MCE_APP_SRC
  ${OPENAIR2_DIR}/MCE_APP/mce_app.c
  ${OPENAIR2_DIR}/MCE_APP/mce_config.c
  )
Mahesh's avatar
Mahesh committed
1422 1423 1424 1425
set (MISC_NFAPI_LTE
 ${OPENAIR1_DIR}/SCHED/nfapi_lte_dummy.c
 )

1426
add_library(MISC_NFAPI_LTE_LIB ${MISC_NFAPI_LTE})
1427

Mahesh's avatar
Mahesh committed
1428 1429 1430 1431
set (MISC_NFAPI_NR
 ${OPENAIR1_DIR}/SCHED/nfapi_nr_dummy.c
 )

1432 1433
add_library(MISC_NFAPI_NR_LIB ${MISC_NFAPI_NR})

1434 1435 1436
add_library(L2
  ${L2_SRC}
  ${MAC_SRC}
1437
  ${ENB_APP_SRC}
1438
  ${MCE_APP_SRC}
1439
  )
Robert Schmidt's avatar
Robert Schmidt committed
1440
target_link_libraries(L2 PRIVATE x2ap s1ap lte_rrc m2ap)
1441
target_link_libraries(L2 PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1442

1443
if(E2_AGENT)
Teodora's avatar
Teodora committed
1444
  target_link_libraries(L2 PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
1445
  target_compile_definitions(L2 PRIVATE E2_AGENT)
1446
  target_compile_definitions(L2 PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
1447 1448
endif()

thomasl's avatar
thomasl committed
1449

1450
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
1451
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1452

1453
add_library(L2_LTE ${L2_LTE_SRC})
1454
target_link_libraries(L2_LTE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
Cedric Roux's avatar
Cedric Roux committed
1455

Guy De Souza's avatar
Guy De Souza committed
1456 1457 1458
add_library(L2_NR
  ${L2_NR_SRC}
  ${MAC_NR_SRC}
1459 1460
  ${GNB_APP_SRC}
  )
1461

1462 1463 1464 1465 1466
add_library(e1_if
  ${NR_RRC_DIR}/cucp_cuup_direct.c
  ${NR_RRC_DIR}/cucp_cuup_e1ap.c
  )

mir's avatar
mir committed
1467
target_link_libraries(e1_if PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs asn1_f1ap SECURITY ${OPENSSL_LIBRARIES} e1ap GTPV1U)
1468

1469
target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc)
1470
if(E2_AGENT)
Teodora's avatar
Teodora committed
1471
  target_link_libraries(L2_NR PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
1472
  target_compile_definitions(L2_NR PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
1473 1474 1475
  target_compile_definitions(L2_NR PRIVATE E2_AGENT)
endif()

1476 1477 1478 1479 1480 1481
add_library(L2_LTE_NR
  ${L2_RRC_SRC}
  ${MAC_SRC}
  ${ENB_APP_SRC}
  ${MCE_APP_SRC}
)
1482

1483
target_link_libraries(L2_LTE_NR PRIVATE f1ap s1ap nr_rrc)
1484

1485 1486 1487 1488
add_library(L2_UE
  ${L2_SRC_UE}
  ${MAC_SRC_UE}
)
1489
target_link_libraries(L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1490

1491 1492 1493 1494
add_library(L2_UE_LTE_NR
  ${L2_RRC_SRC_UE}
  ${MAC_SRC_UE}
)
1495
target_link_libraries(L2_UE_LTE_NR PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1496

laurent's avatar
laurent committed
1497 1498 1499 1500
if (NOT ${NOS1})
target_compile_definitions(L2_UE PUBLIC -DPDCP_USE_NETLINK)
endif()

1501
target_link_libraries(L2_UE PRIVATE asn1_lte_rrc_hdrs)
1502

1503
add_library( NR_L2_UE ${NR_L2_SRC_UE} ${MAC_NR_SRC_UE} )
1504
target_link_libraries(NR_L2_UE PRIVATE f1ap nr_rlc)
1505
target_link_libraries(NR_L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1506

1507 1508 1509 1510
add_library(MAC_NR_COMMON
            ${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
            ${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_compute_tbs_common.c
)
1511
target_link_libraries(MAC_NR_COMMON PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1512 1513

include_directories("${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE")
1514
include_directories("${OPENAIR2_DIR}/LAYER2")
1515 1516
include_directories("${OPENAIR1_DIR}/SCHED_NR_UE")
#include_directories("${NFAPI_USER_DIR}"")
1517

thomasl's avatar
thomasl committed
1518 1519 1520 1521 1522
# L3 Libs
##########################

# CN libs
##########################
1523

Laurent THOMAS's avatar
Laurent THOMAS committed
1524
add_library (GTPV1U
Laurent Thomas's avatar
Laurent Thomas committed
1525
  ${NR_RRC_DIR}/rrc_gNB_GTPV1U.c
thomasl's avatar
thomasl committed
1526
  ${RRC_DIR}/rrc_eNB_GTPV1U.c
1527 1528
  ${OPENAIR3_DIR}/ocp-gtpu/gtp_itf.cpp
  )
1529
target_link_libraries(GTPV1U PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1530
target_link_libraries(GTPV1U PRIVATE SIMU)
Laurent Thomas's avatar
Laurent Thomas committed
1531
include_directories(${OPENAIR3_DIR}/ocp-gtp)
Laurent's avatar
Laurent committed
1532

1533 1534 1535 1536 1537
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})
1538
target_link_libraries(MME_APP PRIVATE m2ap m3ap)
1539
target_link_libraries(MME_APP PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1540

thomasl's avatar
thomasl committed
1541
set(SCTP_SRC
gauthier's avatar
gauthier committed
1542 1543 1544
  ${OPENAIR3_DIR}/SCTP/sctp_common.c
  ${OPENAIR3_DIR}/SCTP/sctp_eNB_task.c
  ${OPENAIR3_DIR}/SCTP/sctp_eNB_itti_messaging.c
thomasl's avatar
thomasl committed
1545
)
1546
add_library(SCTP_CLIENT ${SCTP_SRC})
1547
target_link_libraries(SCTP_CLIENT PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1548

gauthier's avatar
gauthier committed
1549
set(NAS_SRC ${OPENAIR3_DIR}/NAS/)
gauthier's avatar
 
gauthier committed
1550 1551 1552 1553 1554
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
  )
1555

gauthier's avatar
 
gauthier committed
1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586
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
thomasl's avatar
thomasl committed
1587
)
1588

thomasl's avatar
thomasl committed
1589
set(libnas_esm_msg_OBJS
gauthier's avatar
 
gauthier committed
1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612
  ${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
thomasl's avatar
thomasl committed
1613 1614 1615
)

set(libnas_ies_OBJS
gauthier's avatar
 
gauthier committed
1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658
  ${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
1659
  ${NAS_SRC}COMMON/IES/MsNetworkFeatureSupport.c
gauthier's avatar
 
gauthier committed
1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693
  ${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
thomasl's avatar
thomasl committed
1694 1695 1696
)

set (libnas_utils_OBJS
gauthier's avatar
 
gauthier committed
1697
  ${NAS_SRC}COMMON/UTIL/device.c
1698
  common/utils/mem/memory.c
gauthier's avatar
 
gauthier committed
1699 1700 1701 1702 1703 1704
  ${NAS_SRC}COMMON/UTIL/nas_timer.c
  ${NAS_SRC}COMMON/UTIL/socket.c
  ${NAS_SRC}COMMON/UTIL/stty.c
  ${NAS_SRC}COMMON/UTIL/TLVEncoder.c
  ${NAS_SRC}COMMON/UTIL/TLVDecoder.c
  ${NAS_SRC}COMMON/UTIL/OctetString.c
thomasl's avatar
thomasl committed
1705
)
1706

1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786
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
  )

set(libnrnas_emm_msg_OBJS
  ${NAS_SRC}COMMON/EMM/MSG/RegistrationRequest.c
  ${NAS_SRC}COMMON/EMM/MSG/RegistrationAccept.c
  ${NAS_SRC}COMMON/EMM/MSG/FGSIdentityResponse.c
  ${NAS_SRC}COMMON/EMM/MSG/FGSAuthenticationResponse.c
  ${NAS_SRC}COMMON/EMM/MSG/FGSNASSecurityModeComplete.c
  ${NAS_SRC}COMMON/EMM/MSG/RegistrationComplete.c
  ${NAS_SRC}COMMON/EMM/MSG/FGSUplinkNasTransport.c
  ${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishRequest.c
1787
  ${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishmentAccept.c
1788
  ${NAS_SRC}COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.c
1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821
  )

set(libnrnas_ies_OBJS
  ${NAS_SRC}COMMON/IES/ExtendedProtocolDiscriminator.c
  ${NAS_SRC}COMMON/IES/FGSMobileIdentity.c
  ${NAS_SRC}COMMON/IES/FGSRegistrationType.c
  ${NAS_SRC}COMMON/IES/SpareHalfOctet.c
  ${NAS_SRC}COMMON/IES/FGSRegistrationResult.c
  ${NAS_SRC}COMMON/IES/FGMMCapability.c
  ${NAS_SRC}COMMON/IES/NrUESecurityCapability.c
  ${NAS_SRC}COMMON/IES/FGCNasMessageContainer.c
  ${NAS_SRC}COMMON/IES/SORTransparentContainer.c
  )

add_library(LIB_NAS_SIMUE
  ${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
  ${NAS_SRC}NR_UE/nr_nas_msg_sim.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}
  ${libnrnas_emm_msg_OBJS}
  ${libnrnas_ies_OBJS}
1822
  $<TARGET_OBJECTS:ds>
1823
  )
1824
target_include_directories(LIB_NAS_SIMUE PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1825
target_link_libraries(LIB_NAS_SIMUE PRIVATE lte_rrc)
1826 1827 1828



1829
set(NAS_SIM_LIB LIB_NAS_SIMUE)
1830
target_link_libraries(LIB_NAS_SIMUE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847

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}
1848
  $<TARGET_OBJECTS:ds>
1849
  )
1850
target_include_directories(LIB_NAS_UE PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1851
set(NAS_UE_LIB LIB_NAS_UE)
1852
target_link_libraries(LIB_NAS_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1853 1854 1855 1856 1857 1858 1859 1860 1861

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/SAP)
include_directories(${NAS_SRC}UE/ESM)
include_directories(${NAS_SRC}UE/ESM/SAP)
1862

oai's avatar
oai committed
1863 1864 1865
# nbiot
add_definitions("-DNUMBER_OF_UE_MAX_NB_IoT=16")
set (NBIOT_SOURCES
1866 1867
  ${OPENAIR2_DIR}/ENB_APP/NB_IoT_config.c
  )
oai's avatar
oai committed
1868 1869
add_library(NB_IoT MODULE ${NBIOT_SOURCES} )

laurent's avatar
laurent committed
1870
add_library(LIB_5GNAS_GNB
1871 1872 1873 1874 1875
  ${NAS_SRC}/COMMON/nr_common.c
  ${NAS_SRC}/gNB/network_process_nas.c
  ${NAS_SRC}/NR_UE/ue_process_nas.c
  ${OPENAIR3_DIR}//UICC/usim_interface.c
  )
1876 1877

target_include_directories(LIB_5GNAS_GNB PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1878
target_link_libraries(LIB_5GNAS_GNB PRIVATE SECURITY)
1879
target_link_libraries(LIB_5GNAS_GNB PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
laurent's avatar
laurent committed
1880

thomasl's avatar
thomasl committed
1881 1882
# Simulation library
##########################
1883
set (SIMUSRC
laurent's avatar
laurent committed
1884 1885 1886 1887 1888
  ${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
1889 1890 1891
  ${OPENAIR1_DIR}/SIMULATION/TOOLS/random_channel.c
  ${OPENAIR1_DIR}/SIMULATION/TOOLS/rangen_double.c
  ${OPENAIR1_DIR}/SIMULATION/TOOLS/phase_noise.c
laurent's avatar
laurent committed
1892 1893 1894
  ${OPENAIR1_DIR}/SIMULATION/RF/rf.c
  ${OPENAIR1_DIR}/SIMULATION/RF/dac.c
  ${OPENAIR1_DIR}/SIMULATION/RF/adc.c
1895 1896 1897
)
add_library(SIMU STATIC ${SIMUSRC} )
target_include_directories(SIMU PUBLIC ${OPENAIR1_DIR}/SIMULATION/TOOLS ${OPENAIR1_DIR}/SIMULATION/RF)
1898

1899 1900 1901 1902 1903
# Qt-based scope
add_boolean_option(ENABLE_NRQTSCOPE OFF "Build the Qt-Scope" OFF)
if (ENABLE_NRQTSCOPE)
  find_package(Qt5 REQUIRED COMPONENTS Widgets Charts)
  message ("Qt5 Widgets and Charts found for nrqtscope")
1904 1905 1906
  set(QTSCOPE_SOURCE_NR
    ${OPENAIR1_DIR}/PHY/TOOLS/nr_phy_qt_scope.cpp
    ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c)
1907 1908 1909 1910
  # Creates rules for calling the Meta-Object Compiler (moc) on the given source files
  qt5_wrap_cpp(QTSCOPE_SOURCE_NR ${OPENAIR1_DIR}/PHY/TOOLS/nr_phy_qt_scope.h)
  add_library(nrqtscope MODULE ${QTSCOPE_SOURCE_NR})
  target_link_libraries(nrqtscope PRIVATE Qt5::Widgets Qt5::Charts)
1911
  target_link_libraries(nrqtscope PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1912 1913
endif()

1914 1915 1916 1917
add_library(SIMU_ETH STATIC
  ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
  ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/multicast_link.c
  ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/socket.c
1918
)
1919
target_link_libraries(SIMU_ETH PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1920

1921 1922 1923 1924 1925 1926 1927
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")

1928
add_library(oai_iqplayer MODULE
francescomani's avatar
francescomani committed
1929
	${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c
1930
	)
1931 1932
set(CMAKE_MODULE_PATH "${OPENAIR_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODULE_PATH}")

1933 1934
#################################
# add executables for operation
1935
#################################
laurent's avatar
laurent committed
1936 1937 1938 1939
add_library(minimal_lib
  ${OPENAIR_DIR}/common/utils/LOG/log.c
  ${OPENAIR_DIR}/common/utils/minimal_stub.c
  )
1940
target_link_libraries(minimal_lib pthread dl ${T_LIB})
1941

Kujou's avatar
Kujou committed
1942
add_executable(nfapi_test
Kujou's avatar
Kujou committed
1943 1944
  ${OPENAIR_DIR}/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c
  )
laurent's avatar
laurent committed
1945 1946 1947 1948

add_executable(measurement_display
  ${OPENAIR_DIR}/common/utils/threadPool/measurement_display.c)
target_link_libraries (measurement_display minimal_lib)
thomasl's avatar
thomasl committed
1949

1950
add_executable(test5Gnas
1951 1952
  ${OPENAIR_DIR}/openair3/TEST/test5Gnas.c
)
1953
target_link_libraries (test5Gnas LIB_5GNAS_GNB minimal_lib )
1954 1955


1956 1957
# lte-softmodem is both eNB and UE implementation
###################################################
1958

1959
add_executable(lte-softmodem
1960 1961 1962 1963
  ${OPENAIR_DIR}/executables/lte-enb.c
  ${OPENAIR_DIR}/executables/lte-ru.c
  ${OPENAIR_DIR}/executables/ru_control.c
  ${OPENAIR_DIR}/executables/lte-softmodem.c
1964
  ${OPENAIR_DIR}/executables/softmodem-common.c
oai's avatar
oai committed
1965
  ${OPENAIR2_DIR}/ENB_APP/NB_IoT_interface.c
1966 1967
  ${OPENAIR_DIR}/executables/create_tasks.c
  ${OPENAIR_DIR}/executables/create_tasks_mbms.c
francescomani's avatar
francescomani committed
1968 1969
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
1970 1971
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
gauthier's avatar
gauthier committed
1972
  ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
1973
  ${PHY_INTERFACE_DIR}/queue_t.c
1974 1975
  ${OPENAIR_DIR}/common/utils/lte/ue_power.c
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
1976
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
1977
  )
1978
add_dependencies(lte-softmodem oai_iqplayer)
navid's avatar
navid committed
1979

1980
target_link_libraries(lte-softmodem PRIVATE
1981
  -Wl,--start-group
mir's avatar
mir committed
1982
  lte_rrc nr_rrc s1ap m2ap x2ap m3ap GTPV1U SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB SCHED_RU_LIB
1983
  PHY_COMMON PHY PHY_RU  L2 L2_LTE NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
1984
  ${NAS_UE_LIB} ITTI SIMU SIMU_ETH shlib_loader
1985
  -Wl,--end-group z dl)
1986

1987
target_link_libraries(lte-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
1988
target_link_libraries(lte-softmodem PRIVATE ${T_LIB})
1989
target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1990

1991 1992
if(E2_AGENT)
  target_compile_definitions(lte-softmodem PRIVATE E2_AGENT)
1993
  target_compile_definitions(lte-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
1994 1995
endif()

1996
add_executable(oairu
1997 1998
  ${OPENAIR_DIR}/executables/lte-ru.c
  ${OPENAIR_DIR}/executables/ru_control.c
francescomani's avatar
francescomani committed
1999 2000
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2001 2002 2003
  ${OPENAIR_DIR}/executables/softmodem-common.c
  ${OPENAIR_DIR}/openair1/SCHED/phy_procedures_lte_common.c
  ${OPENAIR_DIR}/executables/main_ru.c
2004
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2005
)
2006
target_link_libraries(oairu PRIVATE
2007
  -Wl,--start-group
2008
  SCHED_RU_LIB PHY_COMMON PHY_RU UTIL shlib_loader
2009
  -Wl,--end-group z dl)
2010

Robert Schmidt's avatar
Robert Schmidt committed
2011
target_link_libraries(oairu PRIVATE pthread m CONFIG_LIB rt ${T_LIB})
2012
target_link_libraries(oairu PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2013

2014 2015
# force the generation of ASN.1 so that we don't need to wait during the build
target_link_libraries(lte-softmodem PRIVATE
Robert Schmidt's avatar
Robert Schmidt committed
2016
                      asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
2017

Raymond Knopp's avatar
Raymond Knopp committed
2018

2019 2020 2021 2022
# lte-uesoftmodem is  UE implementation
#######################################

add_executable(lte-uesoftmodem
2023 2024
  ${OPENAIR_DIR}/executables/lte-ue.c
  ${OPENAIR_DIR}/executables/lte-uesoftmodem.c
2025
  ${OPENAIR_DIR}/executables/softmodem-common.c
2026
  ${OPENAIR_DIR}/executables/create_tasks_ue.c
francescomani's avatar
francescomani committed
2027 2028
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2029 2030
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
2031
  ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
2032 2033
  ${OPENAIR_DIR}/common/utils/lte/ue_power.c
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2034
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2035 2036
  )

laurent's avatar
laurent committed
2037 2038 2039
if (NOT ${NOS1})
	target_compile_definitions(lte-uesoftmodem PRIVATE -DPDCP_USE_NETLINK)
endif()
2040
target_link_libraries(lte-uesoftmodem PRIVATE
2041
  -Wl,--start-group
2042
  lte_rrc nr_rrc s1ap x2ap m2ap m3ap
mir's avatar
mir committed
2043
  SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
2044
  PHY_UE PHY_RU L2_UE L2_LTE SIMU SIMU_ETH NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
2045
  ${NAS_UE_LIB} ITTI shlib_loader
2046 2047
  -Wl,--end-group z dl)

2048
target_link_libraries(lte-uesoftmodem PRIVATE pthread m CONFIG_LIB rt sctp)
2049
target_link_libraries(lte-uesoftmodem PRIVATE ${T_LIB})
2050
target_link_libraries(lte-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2051

2052 2053
# force the generation of ASN.1 so that we don't need to wait during the build
target_link_libraries(lte-uesoftmodem PRIVATE
Robert Schmidt's avatar
Robert Schmidt committed
2054
                      asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
2055

2056 2057 2058 2059
# nr-softmodem
###################################################

add_executable(nr-softmodem
2060
  ${rrc_h}
2061
  ${nr_rrc_h}
2062
  ${s1ap_h}
laurent's avatar
laurent committed
2063 2064 2065
  ${OPENAIR_DIR}/executables/nr-gnb.c
  ${OPENAIR_DIR}/executables/nr-ru.c
  ${OPENAIR_DIR}/executables/nr-softmodem.c
2066
  ${OPENAIR_DIR}/executables/softmodem-common.c
francescomani's avatar
francescomani committed
2067 2068
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2069 2070
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
Raymond Knopp's avatar
Raymond Knopp committed
2071 2072
  ${OPENAIR_DIR}/common/utils/lte/ue_power.c
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2073
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2074
  ${PHY_INTERFACE_DIR}/queue_t.c
2075
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2076 2077
  )

2078
target_link_libraries(nr-softmodem PRIVATE
2079
  -Wl,--start-group
mir's avatar
mir committed
2080
  UTIL HASHTABLE SCTP_CLIENT SCHED_LIB SCHED_RU_LIB SCHED_NR_LIB PHY_NR PHY PHY_COMMON PHY_NR_COMMON PHY_RU GTPV1U SECURITY
Robert Schmidt's avatar
Robert Schmidt committed
2081
  ITTI ${NAS_UE_LIB} lte_rrc nr_rrc
2082
  ngap s1ap L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB SIMU SIMU_ETH
2083
  x2ap f1ap m2ap m3ap e1ap shlib_loader
2084
  -Wl,--end-group z dl ldpc_xdma)
2085

2086
target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
2087
target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
2088
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2089 2090 2091 2092 2093
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
if(E2_AGENT)
  target_compile_definitions(nr-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
endif()

2094

2095
add_dependencies(nr-softmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc)
2096

2097 2098 2099 2100
if (ENABLE_LDPC_T2)
  add_dependencies(nr-softmodem ldpc_t2)
endif()

2101 2102
# force the generation of ASN.1 so that we don't need to wait during the build
target_link_libraries(nr-softmodem PRIVATE
2103
  asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp)
2104 2105 2106 2107
if(E2_AGENT)
  target_compile_definitions(nr-softmodem PRIVATE E2_AGENT)
endif()

2108 2109 2110 2111 2112 2113 2114 2115 2116 2117

add_executable(nr-cuup
  executables/nr-cuup.c
  executables/softmodem-common.c
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${NR_RRC_DIR}/rrc_gNB_UE_context.c
  ${OPENAIR2_DIR}/E1AP/e1ap_setup.c
  ${NR_PDCP_SRC}
  ${NR_SDAP_SRC}
  )
2118

2119 2120
target_link_libraries(nr-cuup PRIVATE
                      CONFIG_LIB ITTI SCTP_CLIENT
2121
                      GTPV1U e1ap f1ap SIMU_ETH
2122
                      z sctp dl pthread shlib_loader ${T_LIB})
2123
target_link_libraries(nr-cuup PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
Teodora's avatar
Teodora committed
2124
if(E2_AGENT)
Teodora's avatar
Teodora committed
2125
  target_link_libraries(nr-cuup PRIVATE e2_agent e2_agent_arg e2_ran_func_cuup)
Teodora's avatar
Teodora committed
2126 2127
  target_compile_definitions(nr-cuup PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
endif()
mir's avatar
mir committed
2128
                     
2129 2130 2131 2132 2133 2134
# nr-uesoftmodem is  UE implementation
#######################################

add_executable(nr-uesoftmodem
  ${rrc_h}
  ${s1ap_h}
laurent's avatar
fixes  
laurent committed
2135
  ${OPENAIR_DIR}/executables/nr-uesoftmodem.c
laurent's avatar
laurent committed
2136
  ${OPENAIR_DIR}/executables/nr-ue.c
2137
  ${OPENAIR_DIR}/executables/softmodem-common.c
francescomani's avatar
francescomani committed
2138 2139
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2140
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
cig's avatar
cig committed
2141
  ${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
2142
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
2143
  ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
2144
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2145
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2146 2147
  )

2148
target_link_libraries(nr-uesoftmodem PRIVATE
2149
  -Wl,--start-group
mir's avatar
mir committed
2150
  nr_rrc SECURITY UTIL HASHTABLE SCHED_RU_LIB SCHED_NR_UE_LIB
2151 2152
  PHY_COMMON PHY_NR_COMMON PHY_NR_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB
  NFAPI_USER_LIB MISC_NFAPI_NR_LIB
2153
  ITTI LIB_5GNAS_GNB LIB_NAS_SIMUE ${NAS_SIM_LIB} SIMU SIMU_ETH shlib_loader
2154 2155
  -Wl,--end-group z dl)

2156
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt)
2157
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
2158
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2159

2160
add_dependencies( nr-uesoftmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc )
2161 2162 2163 2164
if (ENABLE_LDPC_CUDA)
   add_dependencies(nr-uesoftmodem ldpc_cuda)
   add_dependencies(nr-softmodem ldpc_cuda)
endif()
2165

2166 2167 2168 2169
# 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)

2170 2171 2172 2173
###################################"
# Addexecutables for tests
####################################

2174

2175 2176 2177
# Unitary tests for each piece of L1: example, mbmssim is MBMS L1 simulator
#####################################

2178 2179 2180 2181 2182 2183
#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
2184
  -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
2185
  pthread m rt CONFIG_LIB ${T_LIB}
2186 2187
  )

2188
add_executable(rftest
2189 2190
  ${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
  ${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_scope.c
francescomani's avatar
francescomani committed
2191
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
2192 2193
  ${OPENAIR_DIR}/executables/softmodem-common.c
)
2194
target_link_libraries(rftest PRIVATE minimal_lib PHY_NR_COMMON UTIL forms pthread dl m ${T_LIB} shlib_loader)
2195
target_link_libraries(rftest PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
2196

2197
add_executable(polartest
laurent's avatar
laurent committed
2198
  ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/polartest.c
Raymond Knopp's avatar
Raymond Knopp committed
2199
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2200
  )
2201
target_link_libraries(polartest PRIVATE
2202
  -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_COMMON PHY_NR_UE CONFIG_LIB -Wl,--end-group
2203
  m pthread dl ${T_LIB}
yilmazt's avatar
yilmazt committed
2204
  )
2205

2206
add_executable(smallblocktest
2207
  ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/smallblocktest.c
2208 2209
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
)
2210

2211
target_link_libraries(smallblocktest PRIVATE
2212
  -Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON -Wl,--end-group
2213
  m pthread dl shlib_loader ${T_LIB}
2214
)
2215

2216

2217 2218 2219 2220
add_executable(ldpctest
   ${PHY_NR_CODINGIF}
   ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c
   )
2221

2222
add_dependencies(ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc)
2223 2224 2225
if (ENABLE_LDPC_CUDA)
  add_dependencies(ldpctest ldpc_cuda)
endif()
2226
target_link_libraries(ldpctest PRIVATE
2227
  -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON -Wl,--end-group
2228
  m pthread dl shlib_loader ${T_LIB}
yilmazt's avatar
yilmazt committed
2229
  )
2230

2231 2232
add_executable(nr_dlschsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlschsim.c
2233
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2234
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2235
  )
2236
target_link_libraries(nr_dlschsim PRIVATE
2237
  -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
2238
  m pthread ${T_LIB} ITTI dl shlib_loader ldpc_xdma
yilmazt's avatar
yilmazt committed
2239
  )
2240
target_link_libraries(nr_dlschsim PRIVATE asn1_nr_rrc_hdrs)
2241

2242 2243
add_executable(nr_pbchsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pbchsim.c
2244
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2245
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2246
  )
2247
target_link_libraries(nr_pbchsim PRIVATE
2248
  -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
2249
  m pthread ${T_LIB} ITTI dl shlib_loader ldpc_xdma
2250
)
2251
target_link_libraries(nr_pbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2252

2253

2254
#PUCCH ---> Prashanth
2255 2256
add_executable(nr_pucchsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pucchsim.c
2257
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2258
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2259
  )
2260
target_link_libraries(nr_pucchsim PRIVATE
2261
  -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
2262
  m pthread ${T_LIB} ITTI dl shlib_loader ldpc_xdma
2263
)
2264
target_link_libraries(nr_pucchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2265

laurent's avatar
laurent committed
2266
add_executable(nr_dlsim
yilmazt's avatar
yilmazt committed
2267
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
2268
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2269
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2270
  ${OPENAIR_DIR}/executables/softmodem-common.c
2271
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
2272
  ${NR_UE_RRC_DIR}/rrc_nsa.c
2273
  ${NFAPI_USER_DIR}/nfapi.c
2274
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
2275
  ${PHY_INTERFACE_DIR}/queue_t.c
2276
  )
2277
target_link_libraries(nr_dlsim PRIVATE
2278
  -Wl,--start-group UTIL SIMU SIMU_ETH 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
2279
  m pthread ${T_LIB} ITTI dl shlib_loader ldpc_xdma
yilmazt's avatar
yilmazt committed
2280
  )
2281
target_link_libraries(nr_dlsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2282

2283
add_executable(nr_prachsim
2284
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/prachsim.c
2285
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2286
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2287
)
2288
target_link_libraries(nr_prachsim PRIVATE
2289
  -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
2290
  m pthread ${T_LIB} ITTI dl shlib_loader)
2291
target_link_libraries(nr_prachsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2292

Khalid Ahmed's avatar
Khalid Ahmed committed
2293 2294
add_executable(nr_ulschsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulschsim.c
2295
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2296
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2297
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2298
  )
2299
target_link_libraries(nr_ulschsim PRIVATE
2300
  -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
2301
  m pthread ${T_LIB} ITTI dl shlib_loader ldpc_xdma
2302
)
2303
target_link_libraries(nr_ulschsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
yilmazt's avatar
yilmazt committed
2304

2305 2306
add_executable(nr_ulsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
2307
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2308
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2309
  ${OPENAIR_DIR}/executables/softmodem-common.c
2310
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
2311
  ${NR_UE_RRC_DIR}/rrc_nsa.c
2312
  ${NFAPI_USER_DIR}/nfapi.c
2313
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
2314
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2315
  )
2316

2317 2318 2319 2320
if (ENABLE_LDPC_T2)
  add_dependencies(nr_ulsim ldpc_t2)
endif()

2321
target_link_libraries(nr_ulsim PRIVATE
2322
  -Wl,--start-group UTIL SIMU SIMU_ETH 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
2323
  m pthread ${T_LIB} ITTI dl shlib_loader ldpc_xdma
yilmazt's avatar
yilmazt committed
2324
  )
2325
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2326 2327

foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim)
2328

2329 2330
  add_executable(${myExe}
    ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
2331 2332
    ${OPENAIR_DIR}/common/utils/lte/ue_power.c
    ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2333
    ${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c
frtabu's avatar
frtabu committed
2334
    ${NFAPI_USER_DIR}/nfapi.c
2335
    )
2336
  target_link_libraries (${myExe} PRIVATE
2337
    -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
2338
    pthread m rt CONFIG_LIB ${T_LIB} dl shlib_loader
2339
    )
2340
  target_link_libraries(${myExe} PRIVATE asn1_lte_rrc_hdrs)
2341

2342
endforeach(myExe)
2343

gauthier's avatar
gauthier committed
2344 2345 2346 2347 2348
#unitary tests for Core NEtwork pieces
#################################
foreach(myExe s1ap
    secu_knas_encrypt_eia1
    secu_kenb
2349
    aes128_ctr
gauthier's avatar
gauthier committed
2350 2351 2352 2353 2354 2355 2356 2357 2358
    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}
2359
    -Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
gauthier's avatar
gauthier committed
2360 2361 2362
    )
endforeach(myExe)

2363 2364 2365 2366
# to be added
#../targets/TEST/PDCP/test_pdcp.c
#../targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c

2367 2368
#ensure that the T header files are generated before targets depending on them
if (${T_TRACER})
2369 2370
  foreach(i
        #all "add_executable" definitions (except tests, rb_tool, updatefw)
2371
        lte-softmodem lte-uesoftmodem nr-softmodem
Robert Schmidt's avatar
Robert Schmidt committed
2372
        nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
2373
        ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
2374
        syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim
2375
        nr_ulschsim ldpctest polartest smallblocktest cu_test du_test
2376
        #all "add_library" definitions
2377
        ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
Robert Schmidt's avatar
Robert Schmidt committed
2378
        params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
Robert Schmidt's avatar
Robert Schmidt committed
2379
        oai_eth_transpro oai_mobipass coding HASHTABLE UTIL OMG_SUMO
mir's avatar
mir committed
2380
        SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
2381
        NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
2382
        MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
cig's avatar
cig committed
2383
        PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
2384
        L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON MAC_UE_NR ngap
2385
        CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU SIMU_ETH OPENAIR0_LIB
2386
        ldpc_orig ldpc_optim ldpc_optim8seg ldpc_t2 ldpc_cl ldpc_cuda ldpc dfts config_internals)
2387 2388 2389 2390
    if (TARGET ${i})
      add_dependencies(${i} generate_T)
    endif()
  endforeach(i)
2391
endif (${T_TRACER})
gauthier's avatar
 
gauthier committed
2392

2393 2394 2395 2396 2397 2398 2399
##################################################
# Generated specific cases is not regular code
###############################################

################
# Kernel modules
###############
2400 2401 2402 2403 2404
# Set compiler options for kernel modules
# we need to get out cmake to use the regular Linux Kernel process
# this is documented as https://www.kernel.org/doc/Documentation/kbuild/modules.txt
######################################

2405
# retrieve the compiler options to send it to gccxml
2406
get_directory_property(DirDefs COMPILE_DEFINITIONS )
2407
foreach( d ${DirDefs} )
2408
  set(module_cc_opt "${module_cc_opt} -D${d}")
2409 2410 2411
endforeach()
get_directory_property( DirDefs INCLUDE_DIRECTORIES )
foreach( d ${DirDefs} )
2412
  set(module_cc_opt "${module_cc_opt} -I${d}")
2413 2414 2415
endforeach()

EXECUTE_PROCESS(COMMAND uname -r
2416 2417
  OUTPUT_VARIABLE os_release
  OUTPUT_STRIP_TRAILING_WHITESPACE)
2418 2419 2420 2421 2422 2423 2424 2425 2426
SET(module_build_path /lib/modules/${os_release}/build)

function(make_driver name dir)
  file(MAKE_DIRECTORY ${OPENAIR_BIN_DIR}/${name})
  foreach(f  IN  ITEMS ${ARGN})
    list(APPEND src_path_list ${dir}/${f})
    string(REGEX REPLACE "c *$" "o" obj ${f})
    set(objs "${objs} ${obj}")
  endforeach()
2427
  CONFIGURE_FILE(${OPENAIR_CMAKE}/tools/Kbuild.cmake ${OPENAIR_BIN_DIR}/${name}/Kbuild)
2428
  add_custom_command(OUTPUT ${name}.ko
2429
    COMMAND make -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name}
2430 2431 2432 2433 2434 2435 2436 2437
    WORKING_DIRECTORY ${OPENAIR_BIN_DIR}/${name}
    COMMENT "building ${module}.ko"
    VERBATIM
    SOURCES  ${src_path_list}
    )
  add_custom_target(${name} DEPENDS ${name}.ko)
endfunction(make_driver name dir src)

2438
# nashmesh module
2439 2440
################
list(APPEND nasmesh_src device.c common.c ioctl.c classifier.c tool.c mesh.c)
2441
set(module_cc_opt "${module_cc_opt} -DNAS_NETLINK -DPDCP_USE_NETLINK")
2442 2443 2444 2445 2446
# legacy Makefile was using NAS_NETLINK flag, but other drivers the hereafter flag
# so, this cmake use OAI_NW_DRIVER_USE_NETLINK everywhere
if (OAI_NW_DRIVER_USE_NETLINK)
  list(APPEND nasmesh_src netlink.c)
endif()
2447
make_driver(nasmesh  ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH ${nasmesh_src})
2448

2449 2450 2451 2452 2453 2454 2455
# user space tool for configuring MESH IP driver
################
add_executable(rb_tool
  ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH/RB_TOOL/rb_tool.c
)
target_include_directories(rb_tool PRIVATE ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH/)

thomasl's avatar
thomasl committed
2456
# ???
2457
####################
2458 2459 2460 2461
list(APPEND oai_nw_drv_src device.c common.c ioctl.c classifier.c tool.c)
if(OAI_NW_DRIVER_USE_NETLINK)
  list(APPEND oai_nw_drv_src netlink.c)
endif()
2462
make_driver(oai_nw_drv ${OPENAIR2_DIR}/NETWORK_DRIVER/LTE ${oai_nw_drv_src})
2463 2464


2465 2466 2467 2468 2469 2470 2471 2472
# ue_ip: purpose ???
###############
list(APPEND ue_ip_src device.c common.c)
if(OAI_NW_DRIVER_USE_NETLINK)
  list(APPEND ue_ip_src netlink.c)
endif()
make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src})

2473
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
2474

2475 2476 2477 2478 2479 2480 2481 2482 2483 2484
set(ENABLE_TESTS OFF CACHE STRING "Activate build of tests")
set_property(CACHE ENABLE_TESTS PROPERTY TYPE BOOL)
if(ENABLE_TESTS)
  # activates globally adding tests such that they can be run using ctest
  enable_testing()
  # 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)
endif()

2485
add_subdirectory(common)
2486
add_subdirectory(doc)
2487
add_subdirectory(openair1)
2488
add_subdirectory(openair2)
2489
add_subdirectory(openair3)
2490
add_subdirectory(radio)