CMakeLists.txt 94.6 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()

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

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

thomasl's avatar
thomasl committed
518 519 520
##############################################################
#    ???!!! TO BE DOCUMENTED OPTIONS !!!???
##############################################################
521

522 523
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????" ON)
add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????" ON)
524

525 526 527 528
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
529

thomasl's avatar
thomasl committed
530 531 532
##########################
# SCHEDULING/REAL-TIME/PERF options
##########################
533 534 535
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
536 537 538 539

##########################
# PHY options
##########################
540 541 542 543 544 545
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
546 547 548 549

##########################
# NAS LAYER OPTIONS
##########################
550 551 552
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
553 554 555 556 557


##########################
# RRC LAYER OPTIONS
##########################
558
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
559

560
# add the binary tree to the search path for include files
thomasl's avatar
thomasl committed
561 562 563 564
#######################################################
# We will find ConfigOAI.h after generation in target directory
include_directories("${OPENAIR_BIN_DIR}")
# add directories to find all include files
565
# the internal rule is to use generic names such as defs.h
thomasl's avatar
thomasl committed
566
# but to make it uniq name as adding the relative path in the include directtive
567
# example: #include "RRC/LTE/rrc_defs.h"
thomasl's avatar
thomasl committed
568 569 570 571 572
#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
573

laurent's avatar
laurent committed
574
include_directories("${OPENAIR_DIR}/executables")
575 576 577 578 579
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")
580 581 582 583 584 585
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
586 587
include_directories("${OPENAIR1_DIR}")
include_directories("${OPENAIR2_DIR}")
588 589
include_directories("${OPENAIR3_DIR}/NAS/TOOLS")
include_directories("${OPENAIR2_DIR}/ENB_APP")
590
include_directories("${OPENAIR2_DIR}/GNB_APP")
591
include_directories("${OPENAIR2_DIR}/MCE_APP")
thomasl's avatar
thomasl committed
592 593
include_directories("${OPENAIR2_DIR}/LAYER2/RLC")
include_directories("${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0")
594 595
include_directories("${OPENAIR2_DIR}/RRC/LTE/MESSAGES")
include_directories("${OPENAIR2_DIR}/RRC/LTE")
thomasl's avatar
thomasl committed
596
include_directories("${OPENAIR_DIR}/common/utils")
laurent's avatar
laurent committed
597
include_directories("${OPENAIR_DIR}/common/utils/collection")
laurent's avatar
laurent committed
598
include_directories("${OPENAIR_DIR}/common/utils/ocp_itti")
gauthier's avatar
gauthier committed
599 600 601 602
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
603 604 605
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
606 607 608 609 610
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")
611
include_directories("${OPENAIR2_DIR}/X2AP")
612
include_directories("${OPENAIR2_DIR}/M2AP")
613
include_directories("${OPENAIR2_DIR}/F1AP")
Laurent THOMAS's avatar
Laurent THOMAS committed
614
include_directories("${OPENAIR3_DIR}/ocp-gtpu")
615 616
include_directories("${OPENAIR3_DIR}/M3AP")
include_directories("${OPENAIR3_DIR}/MME_APP")
francescomani's avatar
francescomani committed
617
include_directories("${OPENAIR_DIR}/radio/COMMON")
thomasl's avatar
thomasl committed
618 619 620 621 622 623 624 625
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")
626
include_directories("${OPENAIR_DIR}")
thomasl's avatar
thomasl committed
627

628 629 630 631
###########
# Utilities
###############

632 633 634 635 636 637 638 639 640
# 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>)

641
add_library(HASHTABLE
642 643
  ${OPENAIR_DIR}/common/utils/hashtable/hashtable.c
  ${OPENAIR_DIR}/common/utils/hashtable/obj_hashtable.c
644
)
645
include_directories(${OPENAIR_DIR}/common/utils/hashtable)
646

647
add_library(UTIL
648
  ${OPENAIR_DIR}/common/utils/LOG/log.c
649
  ${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
thomasl's avatar
thomasl committed
650 651
  ${OPENAIR2_DIR}/UTIL/MATH/oml.c
  ${OPENAIR2_DIR}/UTIL/OPT/probe.c
652 653 654
  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
  ${OPENAIR_DIR}/common/utils/utils.c
  ${OPENAIR_DIR}/common/utils/system.c
655
  ${OPENAIR_DIR}/common/utils/time_meas.c
656
  ${OPENAIR_DIR}/common/utils/time_stat.c
Robert Schmidt's avatar
Robert Schmidt committed
657
)
658
target_link_libraries(UTIL PUBLIC ${T_LIB} pthread)
659

mir's avatar
mir committed
660
set(SECURITY_SRC
661
  ${OPENAIR3_DIR}/SECU/secu_defs.c
gauthier's avatar
gauthier committed
662
  ${OPENAIR3_DIR}/SECU/kdf.c
663 664
  ${OPENAIR3_DIR}/SECU/aes_128_ctr.c
  ${OPENAIR3_DIR}/SECU/aes_128_cbc_cmac.c
mir's avatar
mir committed
665
  ${OPENAIR3_DIR}/SECU/aes_128_ecb.c
666
  ${OPENAIR3_DIR}/SECU/sha_256_hmac.c
gauthier's avatar
gauthier committed
667 668 669
  ${OPENAIR3_DIR}/SECU/rijndael.c
  ${OPENAIR3_DIR}/SECU/snow3g.c
  ${OPENAIR3_DIR}/SECU/key_nas_deriver.c
mir's avatar
mir committed
670
  ${OPENAIR3_DIR}/SECU/nas_stream_eea0.c
gauthier's avatar
gauthier committed
671 672 673 674
  ${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
675 676
  )

677
pkg_check_modules(OpenSSL openssl REQUIRED)
mir's avatar
mir committed
678 679
add_library(SECURITY ${SECURITY_SRC} $<TARGET_OBJECTS:ds>)
target_include_directories(SECURITY PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
680
target_link_libraries(SECURITY PRIVATE ${OpenSSL_LIBRARIES})
681

682
# Physical Channel Procedures Scheduling
thomasl's avatar
thomasl committed
683
################################"
684
set(SCHED_SRC
685
  ${OPENAIR1_DIR}/SCHED/fapi_l1.c
686 687 688
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_eNb.c
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
)
thomasl's avatar
thomasl committed
689
add_library(SCHED_LIB ${SCHED_SRC})
690
target_link_libraries(SCHED_LIB PRIVATE asn1_lte_rrc_hdrs)
thomasl's avatar
thomasl committed
691

Guy De Souza's avatar
Guy De Souza committed
692
set(SCHED_NR_SRC
693
  ${OPENAIR1_DIR}/SCHED_NR/fapi_nr_l1.c
Guy De Souza's avatar
Guy De Souza committed
694
  ${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_gNB.c
695
  ${OPENAIR1_DIR}/SCHED_NR/nr_prach_procedures.c
696
  ${OPENAIR1_DIR}/SCHED_NR/phy_frame_config_nr.c
Guy De Souza's avatar
Guy De Souza committed
697 698
)
add_library(SCHED_NR_LIB ${SCHED_NR_SRC})
699
target_link_libraries(SCHED_NR_LIB PRIVATE asn1_nr_rrc_hdrs)
700

701
set(SCHED_SRC_RU
702
  ${OPENAIR1_DIR}/SCHED/ru_procedures.c
703
  ${OPENAIR1_DIR}/SCHED_NR/nr_ru_procedures.c
704
  ${OPENAIR1_DIR}/SCHED/prach_procedures.c
705 706
)
add_library(SCHED_RU_LIB ${SCHED_SRC_RU})
707
target_link_libraries(SCHED_RU_LIB PRIVATE asn1_lte_rrc_hdrs)
708

709
set(SCHED_SRC_UE
710
  ${OPENAIR1_DIR}/SCHED_UE/phy_procedures_lte_ue.c
711
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
712 713 714
  ${OPENAIR1_DIR}/SCHED_UE/pucch_pc.c
  ${OPENAIR1_DIR}/SCHED_UE/pusch_pc.c
  ${OPENAIR1_DIR}/SCHED_UE/srs_pc.c
715 716
)
add_library(SCHED_UE_LIB ${SCHED_SRC_UE})
717
target_link_libraries(SCHED_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
718

719 720
set(SCHED_SRC_NR_UE
  ${OPENAIR1_DIR}/SCHED_NR_UE/phy_procedures_nr_ue.c
721
  ${OPENAIR1_DIR}/SCHED_NR_UE/phy_procedures_nr_ue_sl.c
722
  ${OPENAIR1_DIR}/SCHED_NR_UE/fapi_nr_ue_l1.c
cig's avatar
cig committed
723
  ${OPENAIR1_DIR}/SCHED_NR_UE/phy_frame_config_nr_ue.c
724 725 726 727
  ${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})
728
target_link_libraries(SCHED_NR_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
729

730 731 732 733
# nFAPI
#################################
set(NFAPI_COMMON_SRC
  ${NFAPI_DIR}/common/src/debug.c
734
  )
735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756
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})
757
target_link_libraries(NFAPI_PNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
758 759 760 761 762 763 764 765 766 767 768

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})
769
target_link_libraries(NFAPI_VNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
770 771 772 773 774 775 776

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
777 778 779
  ${NFAPI_USER_DIR}/nfapi.c
  ${NFAPI_USER_DIR}/nfapi_pnf.c
  ${NFAPI_USER_DIR}/nfapi_vnf.c
780
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
781 782
)
add_library(NFAPI_USER_LIB ${NFAPI_USER_SRC})
783
target_link_libraries(NFAPI_USER_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
784 785
include_directories(${NFAPI_USER_DIR})

thomasl's avatar
thomasl committed
786 787
# Layer 1
#############################
788 789 790 791 792 793 794 795
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
796
set(PHY_POLARSRC
yilmazt's avatar
yilmazt committed
797
  ${OPENAIR1_DIR}/PHY/CODING/nr_polar_init.c
Guy De Souza's avatar
Guy De Souza committed
798 799 800
  ${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
801
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
Guy De Souza's avatar
Guy De Souza committed
802
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
yilmazt's avatar
yilmazt committed
803
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
804
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_interleaving_pattern.c
Guy De Souza's avatar
Guy De Souza committed
805 806 807
  ${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
808
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_procedures.c
Guy De Souza's avatar
Guy De Souza committed
809 810
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_sequence_pattern.c
)
811 812 813 814
set(PHY_SMALLBLOCKSRC
  ${OPENAIR1_DIR}/PHY/CODING/nrSmallBlock/encodeSmallBlock.c
  ${OPENAIR1_DIR}/PHY/CODING/nrSmallBlock/decodeSmallBlock.c
)
815 816 817
set(PHY_TURBOIF
  ${OPENAIR1_DIR}/PHY/CODING/coding_load.c
)
818 819

set(PHY_LDPC_ORIG_SRC
820 821
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c
822
)
823 824
add_library(ldpc_orig MODULE ${PHY_LDPC_ORIG_SRC} )
target_link_libraries(ldpc_orig PRIVATE ldpc_gen_HEADERS)
825

826 827 828
set(PHY_LDPC_OPTIM_SRC
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim.c
829 830 831 832
  )
add_library(ldpc_optim MODULE ${PHY_LDPC_OPTIM_SRC} )
target_link_libraries(ldpc_optim PRIVATE ldpc_gen_HEADERS)

833 834 835 836
set(PHY_LDPC_OPTIM8SEG_SRC
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8seg.c
)
837 838 839
add_library(ldpc_optim8seg MODULE ${PHY_LDPC_OPTIM8SEG_SRC} )
target_link_libraries(ldpc_optim8seg PRIVATE ldpc_gen_HEADERS)

840 841 842
set(PHY_LDPC_OPTIM8SEGMULTI_SRC
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
843 844 845 846
  )
add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
target_link_libraries(ldpc PRIVATE ldpc_gen_HEADERS)

847
set(PHY_LDPC_CUDA_SRC
848
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
849 850 851
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
)

852 853 854 855
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
)
856
add_custom_target( nrLDPC_decoder_kernels_CL
857 858
                   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
859
)
860 861
add_library(ldpc_cl MODULE ${PHY_LDPC_CL_SRC} )
target_link_libraries(ldpc_cl OpenCL)
862
add_dependencies(ldpc_cl nrLDPC_decoder_kernels_CL)
863

864 865 866
set(PHY_NR_CODINGIF
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c
)
867 868 869 870 871

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

872
add_boolean_option(ENABLE_LDPC_CUDA OFF "Build support for CUDA" OFF)
873 874 875 876 877
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
878
  set_target_properties(ldpc_cuda PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
879 880 881 882
  if (NOT CUDA_FOUND)
    message(FATAL_ERROR "no CUDA found")
  endif()
endif()
frtabu's avatar
frtabu committed
883

884
add_library(coding MODULE ${PHY_TURBOSRC} )
885

886
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts_neon.c)
frtabu's avatar
frtabu committed
887 888


889 890
set(PHY_SRC_COMMON
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools_common.c
thomasl's avatar
thomasl committed
891
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
892 893 894
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/slss.c
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sldch.c
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/slsch.c
895
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/get_pmi.c
thomasl's avatar
thomasl committed
896
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/group_hopping.c
897 898 899 900 901 902 903
  ${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
904
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/srs_modulation.c
thomasl's avatar
thomasl committed
905 906 907 908 909 910 911 912 913
  ${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
914
  ${OPENAIR1_DIR}/PHY/CODING/nr_segmentation.c
915
  ${OPENAIR1_DIR}/PHY/CODING/nr_rate_matching.c
thomasl's avatar
thomasl committed
916 917
  ${OPENAIR1_DIR}/PHY/CODING/ccoding_byte.c
  ${OPENAIR1_DIR}/PHY/CODING/ccoding_byte_lte.c
918
  ${OPENAIR1_DIR}/PHY/CODING/3gpplte_sse.c
thomasl's avatar
thomasl committed
919
  ${OPENAIR1_DIR}/PHY/CODING/crc_byte.c
920
  ${PHY_TURBOIF}
thomasl's avatar
thomasl committed
921 922 923
  ${OPENAIR1_DIR}/PHY/CODING/lte_rate_matching.c
  ${OPENAIR1_DIR}/PHY/CODING/viterbi.c
  ${OPENAIR1_DIR}/PHY/CODING/viterbi_lte.c
924 925 926
  ${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
927
  ${OPENAIR1_DIR}/PHY/TOOLS/dfts_load.c
928 929 930 931 932 933 934 935
  ${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
936
  ${OPENAIR1_DIR}/PHY/TOOLS/simde_operations.c
937 938
  )

939
set(PHY_SRC
940 941
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pss.c
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss.c
laurent's avatar
laurent committed
942
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss_gen.c
943 944 945 946 947 948 949 950 951 952 953 954
  ${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
955
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
956 957
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_decoding.c
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/rar_tools.c
958
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/uci_tools.c
959 960
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
961
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
962 963
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
  ${OPENAIR1_DIR}/PHY/INIT/lte_init.c
964 965 966
  )

set(PHY_SRC_RU
967
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/if4_tools.c
968
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/drs_modulation.c
969
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
970
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
971 972
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
973
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.c
974
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_nr.c
975
  ${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz.c
laurent's avatar
laurent committed
976
  ${OPENAIR1_DIR}/PHY/MODULATION/gen_75KHz.cpp
977 978
  ${OPENAIR1_DIR}/PHY/MODULATION/beamforming.c
  ${OPENAIR1_DIR}/PHY/MODULATION/compute_bf_weights.c
979
  ${OPENAIR1_DIR}/PHY/INIT/lte_init_ru.c
980
  ${OPENAIR1_DIR}/PHY/INIT/nr_init_ru.c
981 982
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/prach.c

983 984
  )

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

1025 1026
  set(PHY_NR_SRC_COMMON
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
1027
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_csi_rs.c
1028 1029
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c
1030
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
1031 1032
  )

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

1137

thomasl's avatar
thomasl committed
1138 1139 1140
if (${SMBV})
  set(PHY_SRC "${PHY_SRC} ${OPENAIR1_DIR}/PHY/TOOLS/smbv.c")
endif  (${SMBV})
1141

1142
set(PHY_SRC_UE ${PHY_SRC_UE} ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c)
1143

1144
add_library(PHY_COMMON ${PHY_SRC_COMMON})
1145
target_link_libraries(PHY_COMMON PRIVATE shlib_loader)
frtabu's avatar
frtabu committed
1146
add_dependencies(PHY_COMMON dfts)
1147
target_link_libraries(PHY_COMMON PRIVATE asn1_lte_rrc_hdrs)
1148

1149
add_library(PHY ${PHY_SRC})
1150
target_link_libraries(PHY PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1151

1152 1153 1154
pkg_check_modules(blas REQUIRED blas)
pkg_check_modules(lapacke REQUIRED lapacke)

1155
add_library(PHY_UE ${PHY_SRC_UE})
1156
target_link_libraries(PHY_UE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1157 1158 1159 1160 1161
# 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})
1162

1163
add_library(PHY_NR_COMMON ${PHY_NR_SRC_COMMON})
1164

1165
add_library(PHY_NR ${PHY_NR_SRC})
1166

1167
add_library(PHY_NR_UE ${PHY_NR_UE_SRC})
1168
target_link_libraries(PHY_NR_UE PRIVATE asn1_nr_rrc_hdrs)
1169

1170
add_library(PHY_RU ${PHY_SRC_RU})
1171
target_link_libraries(PHY_RU PRIVATE asn1_lte_rrc_hdrs)
thomasl's avatar
thomasl committed
1172

1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187
#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
1188 1189
  ${OPENAIR1_DIR}/PHY/TOOLS/simde_operations.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c
1190
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ue_measurements.c
1191
  ${OPENAIR_DIR}/common/utils/LOG/log.c
1192
  )
1193
add_library(PHY_MEX ${PHY_MEX_UE})
1194
target_link_libraries(PHY_MEX PRIVATE asn1_lte_rrc_hdrs)
1195

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

Cedric Roux's avatar
Cedric Roux committed
1209
set(RLC_V2
1210 1211 1212 1213 1214 1215 1216 1217 1218 1219
  ${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
  )

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

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

1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274
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
  )
1275

Cedric Roux's avatar
Cedric Roux committed
1276
set(L2_LTE_SRC
Cedric Roux's avatar
Cedric Roux committed
1277
  ${RLC_V2}
Cedric Roux's avatar
Cedric Roux committed
1278 1279
  )

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

1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308
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
1309
  )
1310

1311 1312 1313 1314 1315
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
1316 1317
  )

1318
set(NR_L2_SRC_UE
1319
  ${NR_PDCP_SRC}
1320
  ${NR_SDAP_SRC}
1321 1322
  ${NR_UE_RRC_DIR}/L2_interface_ue.c
  ${NR_UE_RRC_DIR}/main_ue.c
1323
  ${NR_RRC_DIR}/nr_rrc_config.c
1324
  ${NR_UE_RRC_DIR}/rrc_UE.c
1325
  ${NR_UE_RRC_DIR}/rrc_nsa.c
1326
  ${NR_UE_RRC_DIR}/rrc_timers_and_constants.c
1327
  ${NR_UE_RRC_DIR}/rrc_sl_preconfig.c
Guy De Souza's avatar
Guy De Souza committed
1328
  )
1329

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

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

1374

1375
set (MAC_SRC_UE
1376
  ${PHY_INTERFACE_DIR}/phy_stub_UE.c
1377
  ${PHY_INTERFACE_DIR}/queue_t.c
1378 1379 1380 1381 1382 1383
  ${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
1384
 )
1385

1386 1387
set (MAC_NR_SRC_UE
  ${NR_UE_PHY_INTERFACE_DIR}/NR_IF_Module.c
1388
  ${NR_UE_PHY_INTERFACE_DIR}/NR_Packet_Drop.c
1389
  ${NR_UE_MAC_DIR}/config_ue.c
1390
  ${NR_UE_MAC_DIR}/config_ue_sl.c
1391 1392 1393
  ${NR_UE_MAC_DIR}/mac_vars.c
  ${NR_UE_MAC_DIR}/main_ue_nr.c
  ${NR_UE_MAC_DIR}/nr_ue_procedures.c
1394
  ${NR_UE_MAC_DIR}/nr_ue_procedures_sl.c
1395
  ${NR_UE_MAC_DIR}/nr_ue_scheduler.c
1396
  ${NR_UE_MAC_DIR}/nr_ue_dci_configuration.c
1397
  ${NR_UE_MAC_DIR}/nr_ra_procedures.c
1398
  ${NR_UE_MAC_DIR}/nr_ue_power_procedures.c
1399
)
1400

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

1409 1410
set (GNB_APP_SRC
  ${OPENAIR2_DIR}/GNB_APP/gnb_app.c
1411
  ${OPENAIR2_DIR}/E1AP/e1ap_setup.c
1412 1413
  ${OPENAIR2_DIR}/GNB_APP/gnb_config.c
  )
1414 1415 1416 1417 1418

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

1423
add_library(MISC_NFAPI_LTE_LIB ${MISC_NFAPI_LTE})
1424

Mahesh's avatar
Mahesh committed
1425 1426 1427 1428
set (MISC_NFAPI_NR
 ${OPENAIR1_DIR}/SCHED/nfapi_nr_dummy.c
 )

1429 1430
add_library(MISC_NFAPI_NR_LIB ${MISC_NFAPI_NR})

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

1440
if(E2_AGENT)
Teodora's avatar
Teodora committed
1441
  target_link_libraries(L2 PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
1442
  target_compile_definitions(L2 PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
1443 1444
endif()

thomasl's avatar
thomasl committed
1445

1446
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
1447
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1448

1449
add_library(L2_LTE ${L2_LTE_SRC})
1450
target_link_libraries(L2_LTE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
Cedric Roux's avatar
Cedric Roux committed
1451

Guy De Souza's avatar
Guy De Souza committed
1452 1453 1454
add_library(L2_NR
  ${L2_NR_SRC}
  ${MAC_NR_SRC}
1455 1456
  ${GNB_APP_SRC}
  )
1457

1458 1459 1460 1461 1462
add_library(e1_if
  ${NR_RRC_DIR}/cucp_cuup_direct.c
  ${NR_RRC_DIR}/cucp_cuup_e1ap.c
  )

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

1465
target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc)
1466
if(E2_AGENT)
Teodora's avatar
Teodora committed
1467
  target_link_libraries(L2_NR PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
1468
  target_compile_definitions(L2_NR PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
1469 1470
endif()

1471 1472 1473 1474 1475 1476
add_library(L2_LTE_NR
  ${L2_RRC_SRC}
  ${MAC_SRC}
  ${ENB_APP_SRC}
  ${MCE_APP_SRC}
)
1477

1478
target_link_libraries(L2_LTE_NR PRIVATE f1ap s1ap nr_rrc)
1479

1480 1481 1482 1483
add_library(L2_UE
  ${L2_SRC_UE}
  ${MAC_SRC_UE}
)
1484
target_link_libraries(L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1485

1486 1487 1488 1489
add_library(L2_UE_LTE_NR
  ${L2_RRC_SRC_UE}
  ${MAC_SRC_UE}
)
1490
target_link_libraries(L2_UE_LTE_NR PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1491

laurent's avatar
laurent committed
1492 1493 1494 1495
if (NOT ${NOS1})
target_compile_definitions(L2_UE PUBLIC -DPDCP_USE_NETLINK)
endif()

1496
target_link_libraries(L2_UE PRIVATE asn1_lte_rrc_hdrs)
1497

1498
add_library( NR_L2_UE ${NR_L2_SRC_UE} ${MAC_NR_SRC_UE} )
1499
target_link_libraries(NR_L2_UE PRIVATE f1ap nr_rlc)
1500
target_link_libraries(NR_L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1501

1502 1503 1504 1505
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
)
1506
target_link_libraries(MAC_NR_COMMON PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1507 1508

include_directories("${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE")
1509
include_directories("${OPENAIR2_DIR}/LAYER2")
1510 1511
include_directories("${OPENAIR1_DIR}/SCHED_NR_UE")
#include_directories("${NFAPI_USER_DIR}"")
1512

thomasl's avatar
thomasl committed
1513 1514 1515 1516 1517
# L3 Libs
##########################

# CN libs
##########################
1518

Laurent THOMAS's avatar
Laurent THOMAS committed
1519
add_library (GTPV1U
Laurent Thomas's avatar
Laurent Thomas committed
1520
  ${NR_RRC_DIR}/rrc_gNB_GTPV1U.c
thomasl's avatar
thomasl committed
1521
  ${RRC_DIR}/rrc_eNB_GTPV1U.c
1522 1523
  ${OPENAIR3_DIR}/ocp-gtpu/gtp_itf.cpp
  )
1524
target_link_libraries(GTPV1U PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1525
target_link_libraries(GTPV1U PRIVATE SIMU)
Laurent Thomas's avatar
Laurent Thomas committed
1526
include_directories(${OPENAIR3_DIR}/ocp-gtp)
Laurent's avatar
Laurent committed
1527

1528 1529 1530 1531 1532
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})
1533
target_link_libraries(MME_APP PRIVATE m2ap m3ap)
1534
target_link_libraries(MME_APP PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1535

thomasl's avatar
thomasl committed
1536
set(SCTP_SRC
gauthier's avatar
gauthier committed
1537 1538 1539
  ${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
1540
)
1541
add_library(SCTP_CLIENT ${SCTP_SRC})
1542
target_link_libraries(SCTP_CLIENT PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1543

gauthier's avatar
gauthier committed
1544
set(NAS_SRC ${OPENAIR3_DIR}/NAS/)
gauthier's avatar
 
gauthier committed
1545 1546 1547 1548 1549
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
  )
1550

gauthier's avatar
 
gauthier committed
1551 1552 1553 1554 1555 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
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
1582
)
1583

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

set(libnas_ies_OBJS
gauthier's avatar
 
gauthier committed
1611 1612 1613 1614 1615 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
  ${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
1654
  ${NAS_SRC}COMMON/IES/MsNetworkFeatureSupport.c
gauthier's avatar
 
gauthier committed
1655 1656 1657 1658 1659 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
  ${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
1689 1690 1691
)

set (libnas_utils_OBJS
gauthier's avatar
 
gauthier committed
1692
  ${NAS_SRC}COMMON/UTIL/device.c
1693
  common/utils/mem/memory.c
gauthier's avatar
 
gauthier committed
1694 1695 1696 1697 1698 1699
  ${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
1700
)
1701

1702 1703 1704 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
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
1782
  ${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishmentAccept.c
1783
  ${NAS_SRC}COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.c
1784 1785 1786 1787 1788 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
  )

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}
1817
  $<TARGET_OBJECTS:ds>
1818
  )
1819
target_include_directories(LIB_NAS_SIMUE PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1820
target_link_libraries(LIB_NAS_SIMUE PRIVATE lte_rrc)
1821 1822 1823



1824
set(NAS_SIM_LIB LIB_NAS_SIMUE)
1825
target_link_libraries(LIB_NAS_SIMUE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842

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}
1843
  $<TARGET_OBJECTS:ds>
1844
  )
1845
target_include_directories(LIB_NAS_UE PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1846
set(NAS_UE_LIB LIB_NAS_UE)
1847
target_link_libraries(LIB_NAS_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1848 1849 1850 1851 1852 1853 1854 1855 1856

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)
1857

oai's avatar
oai committed
1858 1859 1860
# nbiot
add_definitions("-DNUMBER_OF_UE_MAX_NB_IoT=16")
set (NBIOT_SOURCES
1861 1862
  ${OPENAIR2_DIR}/ENB_APP/NB_IoT_config.c
  )
oai's avatar
oai committed
1863 1864
add_library(NB_IoT MODULE ${NBIOT_SOURCES} )

laurent's avatar
laurent committed
1865
add_library(LIB_5GNAS_GNB
1866 1867 1868 1869 1870
  ${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
  )
1871 1872

target_include_directories(LIB_5GNAS_GNB PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1873
target_link_libraries(LIB_5GNAS_GNB PRIVATE SECURITY)
1874
target_link_libraries(LIB_5GNAS_GNB PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
laurent's avatar
laurent committed
1875

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

1894 1895 1896 1897 1898
# 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")
1899 1900 1901
  set(QTSCOPE_SOURCE_NR
    ${OPENAIR1_DIR}/PHY/TOOLS/nr_phy_qt_scope.cpp
    ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c)
1902 1903 1904 1905
  # 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)
1906
  target_link_libraries(nrqtscope PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1907 1908
endif()

1909 1910 1911 1912
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
1913
)
1914
target_link_libraries(SIMU_ETH PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1915

1916 1917 1918 1919 1920 1921 1922
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")

1923
add_library(oai_iqplayer MODULE
francescomani's avatar
francescomani committed
1924
	${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c
1925
	)
1926 1927
set(CMAKE_MODULE_PATH "${OPENAIR_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODULE_PATH}")

1928 1929
#################################
# add executables for operation
1930
#################################
laurent's avatar
laurent committed
1931 1932 1933 1934
add_library(minimal_lib
  ${OPENAIR_DIR}/common/utils/LOG/log.c
  ${OPENAIR_DIR}/common/utils/minimal_stub.c
  )
1935
target_link_libraries(minimal_lib pthread dl ${T_LIB})
1936

Kujou's avatar
Kujou committed
1937
add_executable(nfapi_test
Kujou's avatar
Kujou committed
1938 1939
  ${OPENAIR_DIR}/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c
  )
laurent's avatar
laurent committed
1940 1941 1942 1943

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

1945
add_executable(test5Gnas
1946 1947
  ${OPENAIR_DIR}/openair3/TEST/test5Gnas.c
)
1948
target_link_libraries (test5Gnas LIB_5GNAS_GNB minimal_lib )
1949 1950


1951 1952
# lte-softmodem is both eNB and UE implementation
###################################################
1953

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

1975
target_link_libraries(lte-softmodem PRIVATE
1976
  -Wl,--start-group
mir's avatar
mir committed
1977
  lte_rrc nr_rrc s1ap m2ap x2ap m3ap GTPV1U SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB SCHED_RU_LIB
1978
  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
1979
  ${NAS_UE_LIB} ITTI SIMU SIMU_ETH shlib_loader
1980
  -Wl,--end-group z dl)
1981

1982
target_link_libraries(lte-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
1983
target_link_libraries(lte-softmodem PRIVATE ${T_LIB})
1984
target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1985

1986
if(E2_AGENT)
1987
  target_compile_definitions(lte-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
1988 1989
endif()

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

Robert Schmidt's avatar
Robert Schmidt committed
2005
target_link_libraries(oairu PRIVATE pthread m CONFIG_LIB rt ${T_LIB})
2006
target_link_libraries(oairu PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2007

2008 2009
# 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
2010
                      asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
2011

Raymond Knopp's avatar
Raymond Knopp committed
2012

2013 2014 2015 2016
# lte-uesoftmodem is  UE implementation
#######################################

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

laurent's avatar
laurent committed
2031 2032 2033
if (NOT ${NOS1})
	target_compile_definitions(lte-uesoftmodem PRIVATE -DPDCP_USE_NETLINK)
endif()
2034
target_link_libraries(lte-uesoftmodem PRIVATE
2035
  -Wl,--start-group
2036
  lte_rrc nr_rrc s1ap x2ap m2ap m3ap
mir's avatar
mir committed
2037
  SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
2038
  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
2039
  ${NAS_UE_LIB} ITTI shlib_loader
2040 2041
  -Wl,--end-group z dl)

2042
target_link_libraries(lte-uesoftmodem PRIVATE pthread m CONFIG_LIB rt sctp)
2043
target_link_libraries(lte-uesoftmodem PRIVATE ${T_LIB})
2044
target_link_libraries(lte-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2045

2046 2047
# 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
2048
                      asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
2049

2050 2051 2052 2053
# nr-softmodem
###################################################

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

2072 2073
include(${OPENAIR_DIR}/nfapi/CMakeLists.txt)

2074
target_link_libraries(nr-softmodem PRIVATE
2075
  -Wl,--start-group
mir's avatar
mir committed
2076
  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
2077
  ITTI ${NAS_UE_LIB} lte_rrc nr_rrc
2078
  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
2079
  x2ap f1ap m2ap m3ap e1ap shlib_loader
2080 2081
  -Wl,--end-group z dl)

2082
target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
2083
target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
2084
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2085 2086
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
if(E2_AGENT)
2087
  target_compile_definitions(nr-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
2088 2089
endif()

2090

2091
add_dependencies(nr-softmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc)
2092

2093 2094 2095 2096
if (ENABLE_LDPC_T2)
  add_dependencies(nr-softmodem ldpc_t2)
endif()

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

add_executable(nr-cuup
  executables/nr-cuup.c
  executables/softmodem-common.c
  ${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}
  )
2110

2111 2112
target_link_libraries(nr-cuup PRIVATE
                      CONFIG_LIB ITTI SCTP_CLIENT
2113
                      GTPV1U e1ap f1ap SIMU_ETH
2114
                      z sctp dl pthread shlib_loader ${T_LIB})
2115
target_link_libraries(nr-cuup PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
Teodora's avatar
Teodora committed
2116
if(E2_AGENT)
Teodora's avatar
Teodora committed
2117
  target_link_libraries(nr-cuup PRIVATE e2_agent e2_agent_arg e2_ran_func_cuup)
Teodora's avatar
Teodora committed
2118 2119
  target_compile_definitions(nr-cuup PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
endif()
mir's avatar
mir committed
2120
                     
2121 2122 2123 2124 2125 2126
# nr-uesoftmodem is  UE implementation
#######################################

add_executable(nr-uesoftmodem
  ${rrc_h}
  ${s1ap_h}
laurent's avatar
fixes  
laurent committed
2127
  ${OPENAIR_DIR}/executables/nr-uesoftmodem.c
laurent's avatar
laurent committed
2128
  ${OPENAIR_DIR}/executables/nr-ue.c
2129
  ${OPENAIR_DIR}/executables/softmodem-common.c
francescomani's avatar
francescomani committed
2130 2131
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2132
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
cig's avatar
cig committed
2133
  ${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
2134
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
2135
  ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
2136
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2137
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2138 2139
  )

2140
target_link_libraries(nr-uesoftmodem PRIVATE
2141
  -Wl,--start-group
mir's avatar
mir committed
2142
  nr_rrc SECURITY UTIL HASHTABLE SCHED_RU_LIB SCHED_NR_UE_LIB
2143 2144
  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
2145
  ITTI LIB_5GNAS_GNB LIB_NAS_SIMUE ${NAS_SIM_LIB} SIMU SIMU_ETH shlib_loader
2146 2147
  -Wl,--end-group z dl)

2148
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt)
2149
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
2150
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2151

2152
add_dependencies( nr-uesoftmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc )
2153 2154 2155 2156
if (ENABLE_LDPC_CUDA)
   add_dependencies(nr-uesoftmodem ldpc_cuda)
   add_dependencies(nr-softmodem ldpc_cuda)
endif()
2157

2158 2159 2160 2161
# 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)

2162 2163 2164 2165
###################################"
# Addexecutables for tests
####################################

2166

2167 2168 2169
# Unitary tests for each piece of L1: example, mbmssim is MBMS L1 simulator
#####################################

2170 2171 2172 2173 2174 2175
#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
2176
  -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
2177
  pthread m rt CONFIG_LIB ${T_LIB}
2178 2179
  )

2180
add_executable(rftest
2181 2182
  ${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
  ${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_scope.c
francescomani's avatar
francescomani committed
2183
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
2184 2185
  ${OPENAIR_DIR}/executables/softmodem-common.c
)
2186
target_link_libraries(rftest PRIVATE minimal_lib PHY_NR_COMMON UTIL forms pthread dl m ${T_LIB} shlib_loader)
2187
target_link_libraries(rftest PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
2188

2189
add_executable(polartest
laurent's avatar
laurent committed
2190
  ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/polartest.c
Raymond Knopp's avatar
Raymond Knopp committed
2191
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2192
  )
2193
target_link_libraries(polartest PRIVATE
2194
  -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_COMMON PHY_NR_UE CONFIG_LIB -Wl,--end-group
2195
  m pthread dl ${T_LIB}
yilmazt's avatar
yilmazt committed
2196
  )
2197

2198
add_executable(smallblocktest
2199
  ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/smallblocktest.c
2200 2201
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
)
2202

2203
target_link_libraries(smallblocktest PRIVATE
2204
  -Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON -Wl,--end-group
2205
  m pthread dl shlib_loader ${T_LIB}
2206
)
2207

2208

2209 2210 2211 2212
add_executable(ldpctest
   ${PHY_NR_CODINGIF}
   ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c
   )
2213

2214
add_dependencies(ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc)
2215 2216 2217
if (ENABLE_LDPC_CUDA)
  add_dependencies(ldpctest ldpc_cuda)
endif()
2218
target_link_libraries(ldpctest PRIVATE
2219
  -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON -Wl,--end-group
2220
  m pthread dl shlib_loader ${T_LIB}
yilmazt's avatar
yilmazt committed
2221
  )
2222

2223 2224
add_executable(nr_dlschsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlschsim.c
2225
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2226
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2227
  )
2228
target_link_libraries(nr_dlschsim PRIVATE
2229
  -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
2230
  m pthread ${T_LIB} ITTI dl shlib_loader
yilmazt's avatar
yilmazt committed
2231
  )
2232
target_link_libraries(nr_dlschsim PRIVATE asn1_nr_rrc_hdrs)
2233

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

2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260
add_executable(nr_psbchsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/psbchsim.c
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
  ${OPENAIR_DIR}/executables/softmodem-common.c
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${NR_UE_RRC_DIR}/rrc_nsa.c
  ${NFAPI_USER_DIR}/nfapi.c
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
  ${PHY_INTERFACE_DIR}/queue_t.c
  )
target_link_libraries(nr_psbchsim PRIVATE
  -Wl,--start-group UTIL SIMU 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 CONFIG_LIB L2_NR -lz -Wl,--end-group
  m pthread ${T_LIB} ITTI dl shlib_loader
  )
target_link_libraries(nr_psbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2261

2262
#PUCCH ---> Prashanth
2263 2264
add_executable(nr_pucchsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pucchsim.c
2265
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2266
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2267
  )
2268
target_link_libraries(nr_pucchsim PRIVATE
2269
  -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
2270
  m pthread ${T_LIB} ITTI dl shlib_loader
2271
)
2272
target_link_libraries(nr_pucchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2273

laurent's avatar
laurent committed
2274
add_executable(nr_dlsim
yilmazt's avatar
yilmazt committed
2275
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
2276
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2277
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2278
  ${OPENAIR_DIR}/executables/softmodem-common.c
2279
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
2280
  ${NR_UE_RRC_DIR}/rrc_nsa.c
2281
  ${NFAPI_USER_DIR}/nfapi.c
2282
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
2283
  ${PHY_INTERFACE_DIR}/queue_t.c
2284
  )
2285
target_link_libraries(nr_dlsim PRIVATE
2286
  -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
2287
  m pthread ${T_LIB} ITTI dl shlib_loader
yilmazt's avatar
yilmazt committed
2288
  )
2289
target_link_libraries(nr_dlsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2290

2291
add_executable(nr_prachsim
2292
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/prachsim.c
2293
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2294
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2295
)
2296
target_link_libraries(nr_prachsim PRIVATE
2297
  -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
2298
  m pthread ${T_LIB} ITTI dl shlib_loader)
2299
target_link_libraries(nr_prachsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2300

Khalid Ahmed's avatar
Khalid Ahmed committed
2301 2302
add_executable(nr_ulschsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulschsim.c
2303
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2304
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2305
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2306
  )
2307
target_link_libraries(nr_ulschsim PRIVATE
2308
  -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
2309
  m pthread ${T_LIB} ITTI dl shlib_loader
2310
)
2311
target_link_libraries(nr_ulschsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
yilmazt's avatar
yilmazt committed
2312

2313 2314
add_executable(nr_ulsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
2315
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2316
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2317
  ${OPENAIR_DIR}/executables/softmodem-common.c
2318
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
2319
  ${NR_UE_RRC_DIR}/rrc_nsa.c
2320
  ${NFAPI_USER_DIR}/nfapi.c
2321
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
2322
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2323
  )
2324

2325 2326 2327 2328
if (ENABLE_LDPC_T2)
  add_dependencies(nr_ulsim ldpc_t2)
endif()

2329
target_link_libraries(nr_ulsim PRIVATE
2330
  -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
2331
  m pthread ${T_LIB} ITTI dl shlib_loader
yilmazt's avatar
yilmazt committed
2332
  )
2333
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2334 2335

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

2337 2338
  add_executable(${myExe}
    ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
2339 2340
    ${OPENAIR_DIR}/common/utils/lte/ue_power.c
    ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2341
    ${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c
frtabu's avatar
frtabu committed
2342
    ${NFAPI_USER_DIR}/nfapi.c
2343
    )
2344
  target_link_libraries (${myExe} PRIVATE
2345
    -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
2346
    pthread m rt CONFIG_LIB ${T_LIB} dl shlib_loader
2347
    )
2348
  target_link_libraries(${myExe} PRIVATE asn1_lte_rrc_hdrs)
2349

2350
endforeach(myExe)
2351

gauthier's avatar
gauthier committed
2352 2353 2354 2355 2356
#unitary tests for Core NEtwork pieces
#################################
foreach(myExe s1ap
    secu_knas_encrypt_eia1
    secu_kenb
2357
    aes128_ctr
gauthier's avatar
gauthier committed
2358 2359 2360 2361 2362 2363 2364 2365 2366
    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}
2367
    -Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
gauthier's avatar
gauthier committed
2368 2369 2370
    )
endforeach(myExe)

2371 2372 2373 2374
# to be added
#../targets/TEST/PDCP/test_pdcp.c
#../targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c

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

2401 2402 2403 2404 2405 2406 2407
##################################################
# Generated specific cases is not regular code
###############################################

################
# Kernel modules
###############
2408 2409 2410 2411 2412
# 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
######################################

2413
# retrieve the compiler options to send it to gccxml
2414
get_directory_property(DirDefs COMPILE_DEFINITIONS )
2415
foreach( d ${DirDefs} )
2416
  set(module_cc_opt "${module_cc_opt} -D${d}")
2417 2418 2419
endforeach()
get_directory_property( DirDefs INCLUDE_DIRECTORIES )
foreach( d ${DirDefs} )
2420
  set(module_cc_opt "${module_cc_opt} -I${d}")
2421 2422 2423
endforeach()

EXECUTE_PROCESS(COMMAND uname -r
2424 2425
  OUTPUT_VARIABLE os_release
  OUTPUT_STRIP_TRAILING_WHITESPACE)
2426 2427 2428 2429 2430 2431 2432 2433 2434
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()
2435
  CONFIGURE_FILE(${OPENAIR_CMAKE}/tools/Kbuild.cmake ${OPENAIR_BIN_DIR}/${name}/Kbuild)
2436
  add_custom_command(OUTPUT ${name}.ko
2437
    COMMAND make -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name}
2438 2439 2440 2441 2442 2443 2444 2445
    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)

2446
# nashmesh module
2447 2448
################
list(APPEND nasmesh_src device.c common.c ioctl.c classifier.c tool.c mesh.c)
2449
set(module_cc_opt "${module_cc_opt} -DNAS_NETLINK -DPDCP_USE_NETLINK")
2450 2451 2452 2453 2454
# 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()
2455
make_driver(nasmesh  ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH ${nasmesh_src})
2456

2457 2458 2459 2460 2461 2462 2463
# 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
2464
# ???
2465
####################
2466 2467 2468 2469
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()
2470
make_driver(oai_nw_drv ${OPENAIR2_DIR}/NETWORK_DRIVER/LTE ${oai_nw_drv_src})
2471 2472


2473 2474 2475 2476 2477 2478 2479 2480
# 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})

2481
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
2482

2483 2484 2485 2486 2487 2488 2489 2490 2491 2492
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()

2493
add_subdirectory(common)
2494
add_subdirectory(doc)
2495
add_subdirectory(openair1)
2496
add_subdirectory(openair2)
2497
add_subdirectory(openair3)
2498
add_subdirectory(radio)