CMakeLists.txt 93.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/fapi_nr_ue_l1.c
cig's avatar
cig committed
722
  ${OPENAIR1_DIR}/SCHED_NR_UE/phy_frame_config_nr_ue.c
723 724 725 726
  ${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})
727
target_link_libraries(SCHED_NR_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
728

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_ue_rf_helpers.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1090
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_pbch.c
1091
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
1092
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1093
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1094
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
1095
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
1096
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
1097
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_dmrs.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1098
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/
Agustin's avatar
Agustin committed
1099
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_prach.c
Agustin's avatar
Agustin committed
1100
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/dci_nr.c
1101
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/pucch_nr.c
1102
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/csi_rx.c
Francesco Mani's avatar
Francesco Mani committed
1103
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_uci_tools_common.c
1104
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
1105
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1106
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
1107
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
adk's avatar
adk committed
1108
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1109
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold_ue.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
1110
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1111
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
hongzhi wang's avatar
hongzhi wang committed
1112
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1113 1114
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_adjust_gain.c
1115 1116
  ${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
1117
 # ${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
1118 1119 1120 1121 1122 1123 1124 1125
  ${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
1126
  ${OPENAIR1_DIR}/PHY/TOOLS/simde_operations.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1127
  ${OPENAIR1_DIR}/PHY/INIT/nr_init_ue.c
Agustin's avatar
Agustin committed
1128
  #  ${OPENAIR1_DIR}/SIMULATION/NR_UE_PHY/unit_tests/src/pucch_uci_test.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1129
  ${PHY_POLARSRC}
1130
  ${PHY_SMALLBLOCKSRC}
1131
  ${PHY_NR_CODINGIF}
1132 1133
  )

1134

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

1139
set(PHY_SRC_UE ${PHY_SRC_UE} ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c)
1140

1141
add_library(PHY_COMMON ${PHY_SRC_COMMON})
1142
target_link_libraries(PHY_COMMON PRIVATE shlib_loader)
frtabu's avatar
frtabu committed
1143
add_dependencies(PHY_COMMON dfts)
1144
target_link_libraries(PHY_COMMON PRIVATE asn1_lte_rrc_hdrs)
1145

1146
add_library(PHY ${PHY_SRC})
1147
target_link_libraries(PHY PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1148

1149 1150 1151
pkg_check_modules(blas REQUIRED blas)
pkg_check_modules(lapacke REQUIRED lapacke)

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

1160
add_library(PHY_NR_COMMON ${PHY_NR_SRC_COMMON})
1161

1162
add_library(PHY_NR ${PHY_NR_SRC})
1163

1164
add_library(PHY_NR_UE ${PHY_NR_UE_SRC})
1165
target_link_libraries(PHY_NR_UE PRIVATE asn1_nr_rrc_hdrs)
1166

1167
add_library(PHY_RU ${PHY_SRC_RU})
1168
target_link_libraries(PHY_RU PRIVATE asn1_lte_rrc_hdrs)
thomasl's avatar
thomasl committed
1169

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

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

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

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

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

1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271
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
  )
1272

Cedric Roux's avatar
Cedric Roux committed
1273
set(L2_LTE_SRC
Cedric Roux's avatar
Cedric Roux committed
1274
  ${RLC_V2}
Cedric Roux's avatar
Cedric Roux committed
1275 1276
  )

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

1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305
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
1306
  )
1307

1308 1309 1310 1311 1312
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
1313 1314
  )

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

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

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

1371

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

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

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

1406 1407
set (GNB_APP_SRC
  ${OPENAIR2_DIR}/GNB_APP/gnb_app.c
1408
  ${OPENAIR2_DIR}/E1AP/e1ap_setup.c
1409 1410
  ${OPENAIR2_DIR}/GNB_APP/gnb_config.c
  )
1411 1412 1413 1414 1415

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

1420
add_library(MISC_NFAPI_LTE_LIB ${MISC_NFAPI_LTE})
1421

Mahesh's avatar
Mahesh committed
1422 1423 1424 1425
set (MISC_NFAPI_NR
 ${OPENAIR1_DIR}/SCHED/nfapi_nr_dummy.c
 )

1426 1427
add_library(MISC_NFAPI_NR_LIB ${MISC_NFAPI_NR})

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

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

thomasl's avatar
thomasl committed
1442

1443
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
1444
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1445

1446
add_library(L2_LTE ${L2_LTE_SRC})
1447
target_link_libraries(L2_LTE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
Cedric Roux's avatar
Cedric Roux committed
1448

Guy De Souza's avatar
Guy De Souza committed
1449 1450 1451
add_library(L2_NR
  ${L2_NR_SRC}
  ${MAC_NR_SRC}
1452 1453
  ${GNB_APP_SRC}
  )
1454

1455 1456 1457 1458 1459
add_library(e1_if
  ${NR_RRC_DIR}/cucp_cuup_direct.c
  ${NR_RRC_DIR}/cucp_cuup_e1ap.c
  )

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

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

1468 1469 1470 1471 1472 1473
add_library(L2_LTE_NR
  ${L2_RRC_SRC}
  ${MAC_SRC}
  ${ENB_APP_SRC}
  ${MCE_APP_SRC}
)
1474

1475
target_link_libraries(L2_LTE_NR PRIVATE f1ap s1ap nr_rrc)
1476

1477 1478 1479 1480
add_library(L2_UE
  ${L2_SRC_UE}
  ${MAC_SRC_UE}
)
1481
target_link_libraries(L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1482

1483 1484 1485 1486
add_library(L2_UE_LTE_NR
  ${L2_RRC_SRC_UE}
  ${MAC_SRC_UE}
)
1487
target_link_libraries(L2_UE_LTE_NR PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1488

laurent's avatar
laurent committed
1489 1490 1491 1492
if (NOT ${NOS1})
target_compile_definitions(L2_UE PUBLIC -DPDCP_USE_NETLINK)
endif()

1493
target_link_libraries(L2_UE PRIVATE asn1_lte_rrc_hdrs)
1494

1495
add_library( NR_L2_UE ${NR_L2_SRC_UE} ${MAC_NR_SRC_UE} )
1496
target_link_libraries(NR_L2_UE PRIVATE f1ap nr_rlc)
1497
target_link_libraries(NR_L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1498

1499 1500 1501 1502
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
)
1503
target_link_libraries(MAC_NR_COMMON PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1504 1505

include_directories("${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE")
1506
include_directories("${OPENAIR2_DIR}/LAYER2")
1507 1508
include_directories("${OPENAIR1_DIR}/SCHED_NR_UE")
#include_directories("${NFAPI_USER_DIR}"")
1509

thomasl's avatar
thomasl committed
1510 1511 1512 1513 1514
# L3 Libs
##########################

# CN libs
##########################
1515

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

1525 1526 1527 1528 1529
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})
1530
target_link_libraries(MME_APP PRIVATE m2ap m3ap)
1531
target_link_libraries(MME_APP PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1532

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

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

gauthier's avatar
 
gauthier committed
1548 1549 1550 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
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
1579
)
1580

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

set(libnas_ies_OBJS
gauthier's avatar
 
gauthier committed
1608 1609 1610 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
  ${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
1651
  ${NAS_SRC}COMMON/IES/MsNetworkFeatureSupport.c
gauthier's avatar
 
gauthier committed
1652 1653 1654 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
  ${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
1686 1687 1688
)

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

1699 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
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
1779
  ${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishmentAccept.c
1780
  ${NAS_SRC}COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.c
1781 1782 1783 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
  )

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



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

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

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

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

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

target_include_directories(LIB_5GNAS_GNB PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1870
target_link_libraries(LIB_5GNAS_GNB PRIVATE SECURITY)
1871
target_link_libraries(LIB_5GNAS_GNB PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
laurent's avatar
laurent committed
1872

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

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

1906 1907 1908 1909
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
1910
)
1911
target_link_libraries(SIMU_ETH PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1912

1913 1914 1915 1916 1917 1918 1919
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")

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

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

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

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

1942
add_executable(test5Gnas
1943 1944
  ${OPENAIR_DIR}/openair3/TEST/test5Gnas.c
)
1945
target_link_libraries (test5Gnas LIB_5GNAS_GNB minimal_lib )
1946 1947


1948 1949
# lte-softmodem is both eNB and UE implementation
###################################################
1950

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

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

1979
target_link_libraries(lte-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
1980
target_link_libraries(lte-softmodem PRIVATE ${T_LIB})
1981
target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1982

1983
if(E2_AGENT)
1984
  target_compile_definitions(lte-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
1985 1986
endif()

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

Robert Schmidt's avatar
Robert Schmidt committed
2002
target_link_libraries(oairu PRIVATE pthread m CONFIG_LIB rt ${T_LIB})
2003
target_link_libraries(oairu PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2004

2005 2006
# 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
2007
                      asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
2008

Raymond Knopp's avatar
Raymond Knopp committed
2009

2010 2011 2012 2013
# lte-uesoftmodem is  UE implementation
#######################################

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

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

2039
target_link_libraries(lte-uesoftmodem PRIVATE pthread m CONFIG_LIB rt sctp)
2040
target_link_libraries(lte-uesoftmodem PRIVATE ${T_LIB})
2041
target_link_libraries(lte-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2042

2043 2044
# 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
2045
                      asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
2046

2047 2048 2049 2050
# nr-softmodem
###################################################

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

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

2077
target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
2078
target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
2079
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2080 2081
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
if(E2_AGENT)
2082
  target_compile_definitions(nr-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
2083 2084
endif()

2085

2086
add_dependencies(nr-softmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc)
2087

2088 2089 2090 2091
if (ENABLE_LDPC_T2)
  add_dependencies(nr-softmodem ldpc_t2)
endif()

2092 2093
# force the generation of ASN.1 so that we don't need to wait during the build
target_link_libraries(nr-softmodem PRIVATE
2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104
  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}
  )
2105

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

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

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

2143
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt)
2144
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
2145
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2146

2147
add_dependencies( nr-uesoftmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc )
2148 2149 2150 2151
if (ENABLE_LDPC_CUDA)
   add_dependencies(nr-uesoftmodem ldpc_cuda)
   add_dependencies(nr-softmodem ldpc_cuda)
endif()
2152

2153 2154 2155 2156
# 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)

2157 2158 2159 2160
###################################"
# Addexecutables for tests
####################################

2161

2162 2163 2164
# Unitary tests for each piece of L1: example, mbmssim is MBMS L1 simulator
#####################################

2165 2166 2167 2168 2169 2170
#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
2171
  -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
2172
  pthread m rt CONFIG_LIB ${T_LIB}
2173 2174
  )

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

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

2193
add_executable(smallblocktest
2194
  ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/smallblocktest.c
2195 2196
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
)
2197

2198
target_link_libraries(smallblocktest PRIVATE
2199
  -Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON -Wl,--end-group
2200
  m pthread dl shlib_loader ${T_LIB}
2201
)
2202

2203

2204 2205 2206 2207
add_executable(ldpctest
   ${PHY_NR_CODINGIF}
   ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c
   )
2208

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

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

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

2240

2241
#PUCCH ---> Prashanth
2242 2243
add_executable(nr_pucchsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pucchsim.c
2244
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2245
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2246
  )
2247
target_link_libraries(nr_pucchsim PRIVATE
2248
  -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group
2249
  m pthread ${T_LIB} ITTI dl shlib_loader
2250
)
2251
target_link_libraries(nr_pucchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2252

laurent's avatar
laurent committed
2253
add_executable(nr_dlsim
yilmazt's avatar
yilmazt committed
2254
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
2255
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2256
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2257
  ${OPENAIR_DIR}/executables/softmodem-common.c
2258
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
2259
  ${NR_UE_RRC_DIR}/rrc_nsa.c
2260
  ${NFAPI_USER_DIR}/nfapi.c
2261
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
2262
  ${PHY_INTERFACE_DIR}/queue_t.c
2263
  )
2264
target_link_libraries(nr_dlsim PRIVATE
2265
  -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
2266
  m pthread ${T_LIB} ITTI dl shlib_loader
yilmazt's avatar
yilmazt committed
2267
  )
2268
target_link_libraries(nr_dlsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2269

2270
add_executable(nr_prachsim
2271
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/prachsim.c
2272
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2273
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2274
)
2275
target_link_libraries(nr_prachsim PRIVATE
2276
  -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
2277
  m pthread ${T_LIB} ITTI dl shlib_loader)
2278
target_link_libraries(nr_prachsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2279

Khalid Ahmed's avatar
Khalid Ahmed committed
2280 2281
add_executable(nr_ulschsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulschsim.c
2282
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2283
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2284
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2285
  )
2286
target_link_libraries(nr_ulschsim PRIVATE
2287
  -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
2288
  m pthread ${T_LIB} ITTI dl shlib_loader
2289
)
2290
target_link_libraries(nr_ulschsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
yilmazt's avatar
yilmazt committed
2291

2292 2293
add_executable(nr_ulsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
2294
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2295
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2296
  ${OPENAIR_DIR}/executables/softmodem-common.c
2297
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
2298
  ${NR_UE_RRC_DIR}/rrc_nsa.c
2299
  ${NFAPI_USER_DIR}/nfapi.c
2300
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
2301
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2302
  )
2303

2304 2305 2306 2307
if (ENABLE_LDPC_T2)
  add_dependencies(nr_ulsim ldpc_t2)
endif()

2308
target_link_libraries(nr_ulsim PRIVATE
2309
  -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
2310
  m pthread ${T_LIB} ITTI dl shlib_loader
yilmazt's avatar
yilmazt committed
2311
  )
2312
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2313 2314

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

2316 2317
  add_executable(${myExe}
    ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
2318 2319
    ${OPENAIR_DIR}/common/utils/lte/ue_power.c
    ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2320
    ${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c
frtabu's avatar
frtabu committed
2321
    ${NFAPI_USER_DIR}/nfapi.c
2322
    )
2323
  target_link_libraries (${myExe} PRIVATE
2324
    -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
2325
    pthread m rt CONFIG_LIB ${T_LIB} dl shlib_loader
2326
    )
2327
  target_link_libraries(${myExe} PRIVATE asn1_lte_rrc_hdrs)
2328

2329
endforeach(myExe)
2330

gauthier's avatar
gauthier committed
2331 2332 2333 2334 2335
#unitary tests for Core NEtwork pieces
#################################
foreach(myExe s1ap
    secu_knas_encrypt_eia1
    secu_kenb
2336
    aes128_ctr
gauthier's avatar
gauthier committed
2337 2338 2339 2340 2341 2342 2343 2344 2345
    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}
2346
    -Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
gauthier's avatar
gauthier committed
2347 2348 2349
    )
endforeach(myExe)

2350 2351 2352 2353
# to be added
#../targets/TEST/PDCP/test_pdcp.c
#../targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c

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

2380 2381 2382 2383 2384 2385 2386
##################################################
# Generated specific cases is not regular code
###############################################

################
# Kernel modules
###############
2387 2388 2389 2390 2391
# 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
######################################

2392
# retrieve the compiler options to send it to gccxml
2393
get_directory_property(DirDefs COMPILE_DEFINITIONS )
2394
foreach( d ${DirDefs} )
2395
  set(module_cc_opt "${module_cc_opt} -D${d}")
2396 2397 2398
endforeach()
get_directory_property( DirDefs INCLUDE_DIRECTORIES )
foreach( d ${DirDefs} )
2399
  set(module_cc_opt "${module_cc_opt} -I${d}")
2400 2401 2402
endforeach()

EXECUTE_PROCESS(COMMAND uname -r
2403 2404
  OUTPUT_VARIABLE os_release
  OUTPUT_STRIP_TRAILING_WHITESPACE)
2405 2406 2407 2408 2409 2410 2411 2412 2413
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()
2414
  CONFIGURE_FILE(${OPENAIR_CMAKE}/tools/Kbuild.cmake ${OPENAIR_BIN_DIR}/${name}/Kbuild)
2415
  add_custom_command(OUTPUT ${name}.ko
2416
    COMMAND make -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name}
2417 2418 2419 2420 2421 2422 2423 2424
    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)

2425
# nashmesh module
2426 2427
################
list(APPEND nasmesh_src device.c common.c ioctl.c classifier.c tool.c mesh.c)
2428
set(module_cc_opt "${module_cc_opt} -DNAS_NETLINK -DPDCP_USE_NETLINK")
2429 2430 2431 2432 2433
# 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()
2434
make_driver(nasmesh  ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH ${nasmesh_src})
2435

2436 2437 2438 2439 2440 2441 2442
# 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
2443
# ???
2444
####################
2445 2446 2447 2448
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()
2449
make_driver(oai_nw_drv ${OPENAIR2_DIR}/NETWORK_DRIVER/LTE ${oai_nw_drv_src})
2450 2451


2452 2453 2454 2455 2456 2457 2458 2459
# 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})

2460
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
2461

2462 2463 2464 2465 2466 2467 2468 2469 2470 2471
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()

2472
add_subdirectory(common)
2473
add_subdirectory(doc)
2474
add_subdirectory(openair1)
2475
add_subdirectory(openair2)
2476
add_subdirectory(openair3)
2477
add_subdirectory(radio)