CMakeLists.txt 92.9 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 303 304 305 306 307
set(E2AP_VERSION "E2AP_V2" CACHE STRING "E2AP version")
set_property(CACHE E2AP_VERSION PROPERTY STRINGS "E2AP_V1" "E2AP_V2" "E2AP_V3")
message(STATUS "Selected E2AP_VERSION: ${E2AP_VERSION}")

set(KPM_VERSION "KPM_V2" CACHE STRING "The KPM SM version to use")
set_property(CACHE KPM_VERSION PROPERTY STRINGS "KPM_V2" "KPM_V3")
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

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

thomasl's avatar
thomasl committed
499 500 501
##############################################################
#    ???!!! TO BE DOCUMENTED OPTIONS !!!???
##############################################################
502

503 504
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????" ON)
add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????" ON)
505

506 507 508 509
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
510

thomasl's avatar
thomasl committed
511 512 513
##########################
# SCHEDULING/REAL-TIME/PERF options
##########################
514 515 516
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
517 518 519 520

##########################
# PHY options
##########################
521 522 523 524 525 526
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
527 528 529 530

##########################
# NAS LAYER OPTIONS
##########################
531 532 533
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
534 535 536 537 538


##########################
# RRC LAYER OPTIONS
##########################
539
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
540

541
# add the binary tree to the search path for include files
thomasl's avatar
thomasl committed
542 543 544 545
#######################################################
# We will find ConfigOAI.h after generation in target directory
include_directories("${OPENAIR_BIN_DIR}")
# add directories to find all include files
546
# the internal rule is to use generic names such as defs.h
thomasl's avatar
thomasl committed
547
# but to make it uniq name as adding the relative path in the include directtive
548
# example: #include "RRC/LTE/rrc_defs.h"
thomasl's avatar
thomasl committed
549 550 551 552 553
#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
554

laurent's avatar
laurent committed
555
include_directories("${OPENAIR_DIR}/executables")
556 557 558 559 560
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")
561 562 563 564 565 566
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
567 568
include_directories("${OPENAIR1_DIR}")
include_directories("${OPENAIR2_DIR}")
569 570
include_directories("${OPENAIR3_DIR}/NAS/TOOLS")
include_directories("${OPENAIR2_DIR}/ENB_APP")
571
include_directories("${OPENAIR2_DIR}/GNB_APP")
572
include_directories("${OPENAIR2_DIR}/MCE_APP")
thomasl's avatar
thomasl committed
573 574
include_directories("${OPENAIR2_DIR}/LAYER2/RLC")
include_directories("${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0")
575 576
include_directories("${OPENAIR2_DIR}/RRC/LTE/MESSAGES")
include_directories("${OPENAIR2_DIR}/RRC/LTE")
thomasl's avatar
thomasl committed
577
include_directories("${OPENAIR_DIR}/common/utils")
laurent's avatar
laurent committed
578
include_directories("${OPENAIR_DIR}/common/utils/collection")
laurent's avatar
laurent committed
579
include_directories("${OPENAIR_DIR}/common/utils/ocp_itti")
gauthier's avatar
gauthier committed
580 581 582 583
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
584 585 586
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
587 588 589 590 591
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")
592
include_directories("${OPENAIR2_DIR}/X2AP")
593
include_directories("${OPENAIR2_DIR}/M2AP")
594
include_directories("${OPENAIR2_DIR}/F1AP")
Laurent THOMAS's avatar
Laurent THOMAS committed
595
include_directories("${OPENAIR3_DIR}/ocp-gtpu")
596 597
include_directories("${OPENAIR3_DIR}/M3AP")
include_directories("${OPENAIR3_DIR}/MME_APP")
francescomani's avatar
francescomani committed
598
include_directories("${OPENAIR_DIR}/radio/COMMON")
thomasl's avatar
thomasl committed
599 600 601 602 603 604 605 606
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")
607
include_directories("${OPENAIR_DIR}")
thomasl's avatar
thomasl committed
608

609 610 611 612
###########
# Utilities
###############

613 614 615 616 617 618 619 620 621
# 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>)

622
add_library(HASHTABLE
623 624
  ${OPENAIR_DIR}/common/utils/hashtable/hashtable.c
  ${OPENAIR_DIR}/common/utils/hashtable/obj_hashtable.c
625
)
626
include_directories(${OPENAIR_DIR}/common/utils/hashtable)
627

628
add_library(UTIL
629
  ${OPENAIR_DIR}/common/utils/LOG/log.c
630
  ${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
thomasl's avatar
thomasl committed
631 632
  ${OPENAIR2_DIR}/UTIL/MATH/oml.c
  ${OPENAIR2_DIR}/UTIL/OPT/probe.c
633 634 635
  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
  ${OPENAIR_DIR}/common/utils/utils.c
  ${OPENAIR_DIR}/common/utils/system.c
636
  ${OPENAIR_DIR}/common/utils/time_meas.c
637
  ${OPENAIR_DIR}/common/utils/time_stat.c
Robert Schmidt's avatar
Robert Schmidt committed
638
)
639
target_link_libraries(UTIL PUBLIC ${T_LIB} pthread)
640

mir's avatar
mir committed
641
set(SECURITY_SRC
642
  ${OPENAIR3_DIR}/SECU/secu_defs.c
gauthier's avatar
gauthier committed
643
  ${OPENAIR3_DIR}/SECU/kdf.c
644 645
  ${OPENAIR3_DIR}/SECU/aes_128_ctr.c
  ${OPENAIR3_DIR}/SECU/aes_128_cbc_cmac.c
mir's avatar
mir committed
646
  ${OPENAIR3_DIR}/SECU/aes_128_ecb.c
647
  ${OPENAIR3_DIR}/SECU/sha_256_hmac.c
gauthier's avatar
gauthier committed
648 649 650
  ${OPENAIR3_DIR}/SECU/rijndael.c
  ${OPENAIR3_DIR}/SECU/snow3g.c
  ${OPENAIR3_DIR}/SECU/key_nas_deriver.c
mir's avatar
mir committed
651
  ${OPENAIR3_DIR}/SECU/nas_stream_eea0.c
gauthier's avatar
gauthier committed
652 653 654 655
  ${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
656 657
  )

658
pkg_check_modules(OpenSSL openssl REQUIRED)
mir's avatar
mir committed
659 660
add_library(SECURITY ${SECURITY_SRC} $<TARGET_OBJECTS:ds>)
target_include_directories(SECURITY PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
661
target_link_libraries(SECURITY PRIVATE ${OpenSSL_LIBRARIES})
662

663
# Physical Channel Procedures Scheduling
thomasl's avatar
thomasl committed
664
################################"
665
set(SCHED_SRC
666
  ${OPENAIR1_DIR}/SCHED/fapi_l1.c
667 668 669
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_eNb.c
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
)
thomasl's avatar
thomasl committed
670
add_library(SCHED_LIB ${SCHED_SRC})
671
target_link_libraries(SCHED_LIB PRIVATE asn1_lte_rrc_hdrs)
thomasl's avatar
thomasl committed
672

Guy De Souza's avatar
Guy De Souza committed
673
set(SCHED_NR_SRC
674
  ${OPENAIR1_DIR}/SCHED_NR/fapi_nr_l1.c
Guy De Souza's avatar
Guy De Souza committed
675
  ${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_gNB.c
676
  ${OPENAIR1_DIR}/SCHED_NR/nr_prach_procedures.c
677
  ${OPENAIR1_DIR}/SCHED_NR/phy_frame_config_nr.c
Guy De Souza's avatar
Guy De Souza committed
678 679
)
add_library(SCHED_NR_LIB ${SCHED_NR_SRC})
680
target_link_libraries(SCHED_NR_LIB PRIVATE asn1_nr_rrc_hdrs)
681

682
set(SCHED_SRC_RU
683
  ${OPENAIR1_DIR}/SCHED/ru_procedures.c
684
  ${OPENAIR1_DIR}/SCHED_NR/nr_ru_procedures.c
685
  ${OPENAIR1_DIR}/SCHED/prach_procedures.c
686 687
)
add_library(SCHED_RU_LIB ${SCHED_SRC_RU})
688
target_link_libraries(SCHED_RU_LIB PRIVATE asn1_lte_rrc_hdrs)
689

690
set(SCHED_SRC_UE
691
  ${OPENAIR1_DIR}/SCHED_UE/phy_procedures_lte_ue.c
692
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
693 694 695
  ${OPENAIR1_DIR}/SCHED_UE/pucch_pc.c
  ${OPENAIR1_DIR}/SCHED_UE/pusch_pc.c
  ${OPENAIR1_DIR}/SCHED_UE/srs_pc.c
696 697
)
add_library(SCHED_UE_LIB ${SCHED_SRC_UE})
698
target_link_libraries(SCHED_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
699

700 701
set(SCHED_SRC_NR_UE
  ${OPENAIR1_DIR}/SCHED_NR_UE/phy_procedures_nr_ue.c
702
  ${OPENAIR1_DIR}/SCHED_NR_UE/fapi_nr_ue_l1.c
cig's avatar
cig committed
703
  ${OPENAIR1_DIR}/SCHED_NR_UE/phy_frame_config_nr_ue.c
704 705 706 707
  ${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})
708
target_link_libraries(SCHED_NR_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
709

710

711 712 713 714
# nFAPI
#################################
set(NFAPI_COMMON_SRC
  ${NFAPI_DIR}/common/src/debug.c
715
  )
716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737
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})
738
target_link_libraries(NFAPI_PNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
739 740 741 742 743 744 745 746 747 748 749

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})
750
target_link_libraries(NFAPI_VNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
751 752 753 754 755 756 757

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
758 759 760
  ${NFAPI_USER_DIR}/nfapi.c
  ${NFAPI_USER_DIR}/nfapi_pnf.c
  ${NFAPI_USER_DIR}/nfapi_vnf.c
761
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
762 763
)
add_library(NFAPI_USER_LIB ${NFAPI_USER_SRC})
764
target_link_libraries(NFAPI_USER_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
765 766
include_directories(${NFAPI_USER_DIR})

thomasl's avatar
thomasl committed
767 768
# Layer 1
#############################
769 770 771 772 773 774 775 776
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
777
set(PHY_POLARSRC
yilmazt's avatar
yilmazt committed
778
  ${OPENAIR1_DIR}/PHY/CODING/nr_polar_init.c
Guy De Souza's avatar
Guy De Souza committed
779 780 781
  ${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
782
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
Guy De Souza's avatar
Guy De Souza committed
783
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
yilmazt's avatar
yilmazt committed
784
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
785
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_interleaving_pattern.c
Guy De Souza's avatar
Guy De Souza committed
786 787 788
  ${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
789
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_procedures.c
Guy De Souza's avatar
Guy De Souza committed
790 791
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_sequence_pattern.c
)
792 793 794 795
set(PHY_SMALLBLOCKSRC
  ${OPENAIR1_DIR}/PHY/CODING/nrSmallBlock/encodeSmallBlock.c
  ${OPENAIR1_DIR}/PHY/CODING/nrSmallBlock/decodeSmallBlock.c
)
796 797 798
set(PHY_TURBOIF
  ${OPENAIR1_DIR}/PHY/CODING/coding_load.c
)
799 800

set(PHY_LDPC_ORIG_SRC
801 802
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c
803
)
804

805 806 807 808 809 810 811 812 813 814 815 816
set(PHY_LDPC_OPTIM_SRC
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim.c
)
set(PHY_LDPC_OPTIM8SEG_SRC
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8seg.c
)
set(PHY_LDPC_OPTIM8SEGMULTI_SRC
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
)
817
set(PHY_LDPC_CUDA_SRC
818
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
819 820 821
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
)

822 823 824 825
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
)
826
add_custom_target( nrLDPC_decoder_kernels_CL
827 828
                   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
829
)
830

831 832 833 834 835
set(PHY_NR_CODINGIF
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c;
)

add_library(ldpc_orig MODULE ${PHY_LDPC_ORIG_SRC} )
836
target_link_libraries(ldpc_orig PRIVATE ldpc_gen_HEADERS)
837
add_library(ldpc_optim MODULE ${PHY_LDPC_OPTIM_SRC} )
838
target_link_libraries(ldpc_optim PRIVATE ldpc_gen_HEADERS)
839
add_library(ldpc_optim8seg MODULE ${PHY_LDPC_OPTIM8SEG_SRC} )
840
target_link_libraries(ldpc_optim8seg PRIVATE ldpc_gen_HEADERS)
841 842
add_library(ldpc_cl MODULE ${PHY_LDPC_CL_SRC} )
target_link_libraries(ldpc_cl OpenCL)
843
add_dependencies(ldpc_cl nrLDPC_decoder_kernels_CL)
844

845 846 847 848 849

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

850
add_boolean_option(ENABLE_LDPC_CUDA OFF "Build support for CUDA" OFF)
851 852 853 854 855
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
856
  set_target_properties(ldpc_cuda PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
857 858 859 860
  if (NOT CUDA_FOUND)
    message(FATAL_ERROR "no CUDA found")
  endif()
endif()
frtabu's avatar
frtabu committed
861

862
add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
863
target_link_libraries(ldpc PRIVATE ldpc_gen_HEADERS)
864

laurent's avatar
laurent committed
865 866 867 868
add_library(ldpc_parityCheck MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
target_compile_definitions(ldpc_parityCheck PUBLIC NR_LDPC_ENABLE_PARITY_CHECK)
target_link_libraries(ldpc_parityCheck  PRIVATE ldpc_gen_HEADERS)

869
add_library(coding MODULE ${PHY_TURBOSRC} )
870

871
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts_neon.c)
frtabu's avatar
frtabu committed
872 873


874 875
set(PHY_SRC_COMMON
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools_common.c
thomasl's avatar
thomasl committed
876
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
877 878 879
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/slss.c
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sldch.c
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/slsch.c
880
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/get_pmi.c
thomasl's avatar
thomasl committed
881
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/group_hopping.c
882 883 884 885 886 887 888
  ${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
889
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/srs_modulation.c
thomasl's avatar
thomasl committed
890 891 892 893 894 895 896 897 898
  ${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
899
  ${OPENAIR1_DIR}/PHY/CODING/nr_segmentation.c
900
  ${OPENAIR1_DIR}/PHY/CODING/nr_rate_matching.c
thomasl's avatar
thomasl committed
901 902
  ${OPENAIR1_DIR}/PHY/CODING/ccoding_byte.c
  ${OPENAIR1_DIR}/PHY/CODING/ccoding_byte_lte.c
903
  ${OPENAIR1_DIR}/PHY/CODING/3gpplte_sse.c
thomasl's avatar
thomasl committed
904
  ${OPENAIR1_DIR}/PHY/CODING/crc_byte.c
905
  ${PHY_TURBOIF}
thomasl's avatar
thomasl committed
906 907 908
  ${OPENAIR1_DIR}/PHY/CODING/lte_rate_matching.c
  ${OPENAIR1_DIR}/PHY/CODING/viterbi.c
  ${OPENAIR1_DIR}/PHY/CODING/viterbi_lte.c
909 910 911
  ${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
912
  ${OPENAIR1_DIR}/PHY/TOOLS/dfts_load.c
913 914 915 916 917 918 919 920
  ${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
921
  ${OPENAIR1_DIR}/PHY/TOOLS/simde_operations.c
922 923
  )

924
set(PHY_SRC
925 926
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pss.c
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss.c
laurent's avatar
laurent committed
927
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss_gen.c
928 929 930 931 932 933 934 935 936 937 938 939
  ${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
940
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
941 942
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_decoding.c
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/rar_tools.c
943
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/uci_tools.c
944 945
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
946
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
947 948
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
  ${OPENAIR1_DIR}/PHY/INIT/lte_init.c
949 950 951
  )

set(PHY_SRC_RU
952
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/if4_tools.c
953
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/drs_modulation.c
954
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
955
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
956 957
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
958
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.c
959
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_nr.c
960
  ${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz.c
laurent's avatar
laurent committed
961
  ${OPENAIR1_DIR}/PHY/MODULATION/gen_75KHz.cpp
962 963
  ${OPENAIR1_DIR}/PHY/MODULATION/beamforming.c
  ${OPENAIR1_DIR}/PHY/MODULATION/compute_bf_weights.c
964
  ${OPENAIR1_DIR}/PHY/INIT/lte_init_ru.c
965
  ${OPENAIR1_DIR}/PHY/INIT/nr_init_ru.c
966 967
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/prach.c

968 969
  )

970
set(PHY_SRC_UE
971
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/sss_ue.c
laurent's avatar
laurent committed
972
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss_gen.c
973 974
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
975
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/linear_preprocessing_rec.c
976 977 978 979 980 981 982 983 984 985 986
  ${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
987 988 989
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/slss.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/sldch.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/slsch.c
990 991 992
  ${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
993
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/rar_tools_ue.c
994
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/initial_sync.c
995 996
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep.c
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_mbsfn.c
997
  ${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz_ue.c
998 999
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_time.c
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
1000
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c
1001 1002 1003 1004 1005 1006 1007
  ${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
1008
  )
1009

1010 1011
  set(PHY_NR_SRC_COMMON
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
1012
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_csi_rs.c
1013 1014
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c
1015
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
1016 1017
  )

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

1119

thomasl's avatar
thomasl committed
1120 1121 1122
if (${SMBV})
  set(PHY_SRC "${PHY_SRC} ${OPENAIR1_DIR}/PHY/TOOLS/smbv.c")
endif  (${SMBV})
1123

1124
set(PHY_SRC_UE ${PHY_SRC_UE} ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c)
1125

1126
add_library(PHY_COMMON ${PHY_SRC_COMMON})
1127
target_link_libraries(PHY_COMMON PRIVATE shlib_loader)
frtabu's avatar
frtabu committed
1128
add_dependencies(PHY_COMMON dfts)
1129
target_link_libraries(PHY_COMMON PRIVATE asn1_lte_rrc_hdrs)
1130

1131
add_library(PHY ${PHY_SRC})
1132
target_link_libraries(PHY PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1133

1134 1135 1136
pkg_check_modules(blas REQUIRED blas)
pkg_check_modules(lapacke REQUIRED lapacke)

1137
add_library(PHY_UE ${PHY_SRC_UE})
1138
target_link_libraries(PHY_UE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1139 1140 1141 1142 1143
# 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})
1144

1145
add_library(PHY_NR_COMMON ${PHY_NR_SRC_COMMON})
1146

1147
add_library(PHY_NR ${PHY_NR_SRC})
1148

1149
add_library(PHY_NR_UE ${PHY_NR_UE_SRC})
1150
target_link_libraries(PHY_NR_UE PRIVATE asn1_nr_rrc_hdrs)
1151

1152
add_library(PHY_RU ${PHY_SRC_RU})
1153
target_link_libraries(PHY_RU PRIVATE asn1_lte_rrc_hdrs)
thomasl's avatar
thomasl committed
1154

1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169
#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
1170 1171
  ${OPENAIR1_DIR}/PHY/TOOLS/simde_operations.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c
1172
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ue_measurements.c
1173
  ${OPENAIR_DIR}/common/utils/LOG/log.c
1174
  )
1175
add_library(PHY_MEX ${PHY_MEX_UE})
1176
target_link_libraries(PHY_MEX PRIVATE asn1_lte_rrc_hdrs)
1177

thomasl's avatar
thomasl committed
1178 1179 1180
#Layer 2 library
#####################
set(MAC_DIR ${OPENAIR2_DIR}/LAYER2/MAC)
1181
set(NR_GNB_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_gNB)
1182
set(NR_UE_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_UE)
1183
set(PHY_INTERFACE_DIR ${OPENAIR2_DIR}/PHY_INTERFACE)
1184
set(NR_PHY_INTERFACE_DIR ${OPENAIR2_DIR}/NR_PHY_INTERFACE)
1185
set(NR_UE_PHY_INTERFACE_DIR ${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE)
1186
set(RRC_DIR ${OPENAIR2_DIR}/RRC/LTE)
1187
set(NR_RRC_DIR ${OPENAIR2_DIR}/RRC/NR)
1188
set(NR_UE_RRC_DIR ${OPENAIR2_DIR}/RRC/NR_UE)
thomasl's avatar
thomasl committed
1189
set(PDCP_DIR  ${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0)
Cedric Roux's avatar
Cedric Roux committed
1190

Cedric Roux's avatar
Cedric Roux committed
1191
set(RLC_V2
1192 1193 1194 1195 1196 1197 1198 1199 1200 1201
  ${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
  )

1202 1203 1204 1205
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
1206 1207
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_sdu.c
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_timer_thread.c
1208
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_security_nea2.c
1209
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.c
Cedric Roux's avatar
Cedric Roux committed
1210
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.c
Cedric Roux's avatar
Cedric Roux committed
1211
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/asn1_utils.c
1212 1213 1214 1215
  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
1216
  )
Cedric Roux's avatar
Cedric Roux committed
1217

1218
set(NR_SDAP_SRC
1219 1220
  ${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap.c
  ${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap_entity.c
1221 1222
  )
  
Cedric Roux's avatar
Cedric Roux committed
1223 1224 1225 1226 1227 1228 1229 1230
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
1231
#  ${RRC_DIR}/rrc_UE.c
thomasl's avatar
thomasl committed
1232
  ${RRC_DIR}/rrc_eNB.c
Cedric Roux's avatar
Cedric Roux committed
1233
  ${RRC_DIR}/rrc_eNB_endc.c
thomasl's avatar
thomasl committed
1234
  ${RRC_DIR}/rrc_eNB_S1AP.c
1235
  ${RRC_DIR}/rrc_eNB_M2AP.c
1236
  ${RRC_DIR}/rrc_eNB_UE_context.c
Xue Song's avatar
Xue Song committed
1237
  ${NR_RRC_DIR}/rrc_gNB_UE_context.c
thomasl's avatar
thomasl committed
1238 1239
  ${RRC_DIR}/rrc_common.c
  ${RRC_DIR}/L2_interface.c
1240 1241
  ${RRC_DIR}/L2_interface_common.c
  ${RRC_DIR}/L2_interface_ue.c
thomasl's avatar
thomasl committed
1242
  )
1243

1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256
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
  )
1257

Cedric Roux's avatar
Cedric Roux committed
1258
set(L2_LTE_SRC
Cedric Roux's avatar
Cedric Roux committed
1259
  ${RLC_V2}
Cedric Roux's avatar
Cedric Roux committed
1260 1261
  )

Guy De Souza's avatar
Guy De Souza committed
1262
set(L2_NR_SRC
1263
  ${NR_PDCP_SRC}
1264
  ${NR_SDAP_SRC}
1265 1266
  ${NR_RRC_DIR}/rrc_gNB.c
  ${NR_RRC_DIR}/nr_rrc_common.c
1267 1268
  ${NR_RRC_DIR}/mac_rrc_dl_direct.c
  ${NR_RRC_DIR}/mac_rrc_dl_f1ap.c
1269
  ${NR_RRC_DIR}/nr_rrc_config.c
1270
  ${NR_RRC_DIR}/rrc_gNB_nsa.c
Raymond Knopp's avatar
Raymond Knopp committed
1271
  ${NR_RRC_DIR}/rrc_gNB_internode.c
1272 1273
  ${NR_RRC_DIR}/rrc_gNB_reconfig.c
  ${NR_RRC_DIR}/rrc_gNB_UE_context.c
Xue Song's avatar
Xue Song committed
1274
  ${NR_RRC_DIR}/rrc_gNB_NGAP.c
1275
  ${NR_RRC_DIR}/rrc_gNB_radio_bearers.c
1276
  ${NR_RRC_DIR}/rrc_gNB_cuup.c
1277
  ${NR_RRC_DIR}/rrc_gNB_du.c
1278 1279
  )

1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290
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
1291
  )
1292

1293 1294 1295 1296 1297
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
1298 1299
  )

1300
set(NR_L2_SRC_UE
1301
  ${NR_PDCP_SRC}
1302
  ${NR_SDAP_SRC}
1303 1304
  ${NR_UE_RRC_DIR}/L2_interface_ue.c
  ${NR_UE_RRC_DIR}/main_ue.c
1305
  ${NR_RRC_DIR}/nr_rrc_config.c
1306
  ${NR_UE_RRC_DIR}/rrc_UE.c
1307
  ${NR_UE_RRC_DIR}/rrc_nsa.c
1308
  ${NR_UE_RRC_DIR}/rrc_timers_and_constants.c
1309
  ${NR_UE_RRC_DIR}/rrc_sl_preconfig.c
Guy De Souza's avatar
Guy De Souza committed
1310
  )
1311

thomasl's avatar
thomasl committed
1312
set (MAC_SRC
1313
  #${PHY_INTERFACE_DIR}/phy_stub_UE.c
1314
  ${PHY_INTERFACE_DIR}/IF_Module.c
thomasl's avatar
thomasl committed
1315
  ${MAC_DIR}/main.c
1316 1317 1318
  #${MAC_DIR}/main_ue.c
  #${MAC_DIR}/ue_procedures.c
  #${MAC_DIR}/ra_procedures.c
thomasl's avatar
thomasl committed
1319 1320
  ${MAC_DIR}/l1_helpers.c
  ${MAC_DIR}/rar_tools.c
1321
  #${MAC_DIR}/rar_tools_ue.c
thomasl's avatar
thomasl committed
1322 1323 1324 1325 1326 1327 1328
  ${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
1329
  ${MAC_DIR}/eNB_scheduler_fairRR.c
1330
  ${MAC_DIR}/eNB_scheduler_phytest.c
thomasl's avatar
thomasl committed
1331
  ${MAC_DIR}/pre_processor.c
Robert Schmidt's avatar
Robert Schmidt committed
1332
  ${MAC_DIR}/slicing/slicing.c
thomasl's avatar
thomasl committed
1333
  ${MAC_DIR}/config.c
1334
  ${MAC_DIR}/config_ue.c
1335 1336
 )

Guy De Souza's avatar
Guy De Souza committed
1337
set (MAC_NR_SRC
1338
  ${NR_PHY_INTERFACE_DIR}/NR_IF_Module.c
1339
  ${NR_PHY_INTERFACE_DIR}/nr_sched_response.c
1340 1341 1342 1343 1344 1345 1346 1347
  ${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
1348
  ${NR_GNB_MAC_DIR}/gNB_scheduler_uci.c
1349
  ${NR_GNB_MAC_DIR}/gNB_scheduler_srs.c
1350
  ${NR_GNB_MAC_DIR}/gNB_scheduler_RA.c
1351
  ${NR_GNB_MAC_DIR}/mac_rrc_dl_handler.c
1352 1353
  ${NR_GNB_MAC_DIR}/mac_rrc_ul_direct.c
  ${NR_GNB_MAC_DIR}/mac_rrc_ul_f1ap.c
1354 1355
 )

1356

1357
set (MAC_SRC_UE
1358
  ${PHY_INTERFACE_DIR}/phy_stub_UE.c
1359
  ${PHY_INTERFACE_DIR}/queue_t.c
1360 1361 1362 1363 1364 1365
  ${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
1366
 )
1367

1368 1369
set (MAC_NR_SRC_UE
  ${NR_UE_PHY_INTERFACE_DIR}/NR_IF_Module.c
1370
  ${NR_UE_PHY_INTERFACE_DIR}/NR_Packet_Drop.c
1371 1372 1373 1374
  ${NR_UE_MAC_DIR}/config_ue.c
  ${NR_UE_MAC_DIR}/mac_vars.c
  ${NR_UE_MAC_DIR}/main_ue_nr.c
  ${NR_UE_MAC_DIR}/nr_ue_procedures.c
1375
  ${NR_UE_MAC_DIR}/nr_ue_scheduler.c
1376
  ${NR_UE_MAC_DIR}/nr_ue_dci_configuration.c
1377
  ${NR_UE_MAC_DIR}/nr_ra_procedures.c
1378
  ${NR_UE_MAC_DIR}/nr_ue_power_procedures.c
1379
)
1380

thomasl's avatar
thomasl committed
1381 1382 1383
set (ENB_APP_SRC
  ${OPENAIR2_DIR}/ENB_APP/enb_app.c
  ${OPENAIR2_DIR}/ENB_APP/enb_config.c
1384 1385
  ${OPENAIR2_DIR}/ENB_APP/enb_config_SL.c
  ${OPENAIR2_DIR}/ENB_APP/enb_config_eMTC.c
1386
  ${OPENAIR2_DIR}/ENB_APP/RRC_config_tools.c
thomasl's avatar
thomasl committed
1387 1388
  )

1389 1390
set (GNB_APP_SRC
  ${OPENAIR2_DIR}/GNB_APP/gnb_app.c
1391
  ${OPENAIR2_DIR}/E1AP/e1ap_setup.c
1392 1393
  ${OPENAIR2_DIR}/GNB_APP/gnb_config.c
  )
1394 1395 1396 1397 1398

set (MCE_APP_SRC
  ${OPENAIR2_DIR}/MCE_APP/mce_app.c
  ${OPENAIR2_DIR}/MCE_APP/mce_config.c
  )
Mahesh's avatar
Mahesh committed
1399 1400 1401 1402
set (MISC_NFAPI_LTE
 ${OPENAIR1_DIR}/SCHED/nfapi_lte_dummy.c
 )

1403
add_library(MISC_NFAPI_LTE_LIB ${MISC_NFAPI_LTE})
1404

Mahesh's avatar
Mahesh committed
1405 1406 1407 1408
set (MISC_NFAPI_NR
 ${OPENAIR1_DIR}/SCHED/nfapi_nr_dummy.c
 )

1409 1410
add_library(MISC_NFAPI_NR_LIB ${MISC_NFAPI_NR})

1411 1412 1413
add_library(L2
  ${L2_SRC}
  ${MAC_SRC}
1414
  ${ENB_APP_SRC}
1415
  ${MCE_APP_SRC}
1416
  )
Robert Schmidt's avatar
Robert Schmidt committed
1417
target_link_libraries(L2 PRIVATE x2ap s1ap lte_rrc m2ap)
1418
target_link_libraries(L2 PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1419

1420 1421 1422
if(E2_AGENT)
  target_link_libraries(L2 PUBLIC e2_agent e2_ran_func)
  target_compile_definitions(L2 PRIVATE E2_AGENT)
1423
  target_compile_definitions(L2 PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
1424 1425
endif()

thomasl's avatar
thomasl committed
1426

1427
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
1428
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1429

1430
add_library(L2_LTE ${L2_LTE_SRC})
1431
target_link_libraries(L2_LTE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
Cedric Roux's avatar
Cedric Roux committed
1432

Guy De Souza's avatar
Guy De Souza committed
1433 1434 1435
add_library(L2_NR
  ${L2_NR_SRC}
  ${MAC_NR_SRC}
1436 1437
  ${GNB_APP_SRC}
  )
1438

1439 1440 1441 1442 1443
add_library(e1_if
  ${NR_RRC_DIR}/cucp_cuup_direct.c
  ${NR_RRC_DIR}/cucp_cuup_e1ap.c
  )

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

1446
target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc)
1447 1448
if(E2_AGENT)
  target_link_libraries(L2_NR PUBLIC e2_agent e2_ran_func)
1449
  target_compile_definitions(L2_NR PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
1450 1451 1452
  target_compile_definitions(L2_NR PRIVATE E2_AGENT)
endif()

1453 1454 1455 1456 1457 1458
add_library(L2_LTE_NR
  ${L2_RRC_SRC}
  ${MAC_SRC}
  ${ENB_APP_SRC}
  ${MCE_APP_SRC}
)
1459

1460
target_link_libraries(L2_LTE_NR PRIVATE f1ap s1ap nr_rrc)
1461

1462 1463 1464 1465
add_library(L2_UE
  ${L2_SRC_UE}
  ${MAC_SRC_UE}
)
1466
target_link_libraries(L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1467

1468 1469 1470 1471
add_library(L2_UE_LTE_NR
  ${L2_RRC_SRC_UE}
  ${MAC_SRC_UE}
)
1472
target_link_libraries(L2_UE_LTE_NR PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1473

laurent's avatar
laurent committed
1474 1475 1476 1477
if (NOT ${NOS1})
target_compile_definitions(L2_UE PUBLIC -DPDCP_USE_NETLINK)
endif()

1478
target_link_libraries(L2_UE PRIVATE asn1_lte_rrc_hdrs)
1479

1480
add_library( NR_L2_UE ${NR_L2_SRC_UE} ${MAC_NR_SRC_UE} )
1481
target_link_libraries(NR_L2_UE PRIVATE f1ap nr_rlc)
1482
target_link_libraries(NR_L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1483

1484 1485 1486 1487
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
)
1488
target_link_libraries(MAC_NR_COMMON PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1489 1490

include_directories("${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE")
1491
include_directories("${OPENAIR2_DIR}/LAYER2")
1492 1493
include_directories("${OPENAIR1_DIR}/SCHED_NR_UE")
#include_directories("${NFAPI_USER_DIR}"")
1494

thomasl's avatar
thomasl committed
1495 1496 1497 1498 1499
# L3 Libs
##########################

# CN libs
##########################
1500

Laurent THOMAS's avatar
Laurent THOMAS committed
1501
add_library (GTPV1U
Laurent Thomas's avatar
Laurent Thomas committed
1502
  ${NR_RRC_DIR}/rrc_gNB_GTPV1U.c
thomasl's avatar
thomasl committed
1503
  ${RRC_DIR}/rrc_eNB_GTPV1U.c
1504 1505
  ${OPENAIR3_DIR}/ocp-gtpu/gtp_itf.cpp
  )
1506
target_link_libraries(GTPV1U PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1507
target_link_libraries(GTPV1U PRIVATE SIMU)
Laurent Thomas's avatar
Laurent Thomas committed
1508
include_directories(${OPENAIR3_DIR}/ocp-gtp)
Laurent's avatar
Laurent committed
1509

1510 1511 1512 1513 1514
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})
1515
target_link_libraries(MME_APP PRIVATE m2ap m3ap)
1516
target_link_libraries(MME_APP PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1517

thomasl's avatar
thomasl committed
1518
set(SCTP_SRC
gauthier's avatar
gauthier committed
1519 1520 1521
  ${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
1522
)
1523
add_library(SCTP_CLIENT ${SCTP_SRC})
1524
target_link_libraries(SCTP_CLIENT PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1525

gauthier's avatar
gauthier committed
1526
set(NAS_SRC ${OPENAIR3_DIR}/NAS/)
gauthier's avatar
 
gauthier committed
1527 1528 1529 1530 1531
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
  )
1532

gauthier's avatar
 
gauthier committed
1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563
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
1564
)
1565

thomasl's avatar
thomasl committed
1566
set(libnas_esm_msg_OBJS
gauthier's avatar
 
gauthier committed
1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589
  ${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
1590 1591 1592
)

set(libnas_ies_OBJS
gauthier's avatar
 
gauthier committed
1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 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
  ${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
1636
  ${NAS_SRC}COMMON/IES/MsNetworkFeatureSupport.c
gauthier's avatar
 
gauthier committed
1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670
  ${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
1671 1672 1673
)

set (libnas_utils_OBJS
gauthier's avatar
 
gauthier committed
1674 1675 1676 1677 1678 1679 1680 1681
  ${NAS_SRC}COMMON/UTIL/device.c
  ${NAS_SRC}COMMON/UTIL/memory.c
  ${NAS_SRC}COMMON/UTIL/nas_timer.c
  ${NAS_SRC}COMMON/UTIL/socket.c
  ${NAS_SRC}COMMON/UTIL/stty.c
  ${NAS_SRC}COMMON/UTIL/TLVEncoder.c
  ${NAS_SRC}COMMON/UTIL/TLVDecoder.c
  ${NAS_SRC}COMMON/UTIL/OctetString.c
thomasl's avatar
thomasl committed
1682
)
1683

1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 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
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
1764
  ${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishmentAccept.c
1765
  ${NAS_SRC}COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.c
1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798
  )

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}
1799
  $<TARGET_OBJECTS:ds>
1800
  )
1801
target_include_directories(LIB_NAS_SIMUE PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1802
target_link_libraries(LIB_NAS_SIMUE PRIVATE lte_rrc)
1803 1804 1805



1806
set(NAS_SIM_LIB LIB_NAS_SIMUE)
1807
target_link_libraries(LIB_NAS_SIMUE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824

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}
1825
  $<TARGET_OBJECTS:ds>
1826
  )
1827
target_include_directories(LIB_NAS_UE PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1828
set(NAS_UE_LIB LIB_NAS_UE)
1829
target_link_libraries(LIB_NAS_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1830 1831 1832 1833 1834 1835 1836 1837 1838

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

oai's avatar
oai committed
1840 1841 1842
# nbiot
add_definitions("-DNUMBER_OF_UE_MAX_NB_IoT=16")
set (NBIOT_SOURCES
1843 1844
  ${OPENAIR2_DIR}/ENB_APP/NB_IoT_config.c
  )
oai's avatar
oai committed
1845 1846
add_library(NB_IoT MODULE ${NBIOT_SOURCES} )

laurent's avatar
laurent committed
1847
add_library(LIB_5GNAS_GNB
1848 1849 1850 1851 1852
  ${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
  )
1853 1854

target_include_directories(LIB_5GNAS_GNB PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1855
target_link_libraries(LIB_5GNAS_GNB PRIVATE SECURITY)
1856
target_link_libraries(LIB_5GNAS_GNB PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
laurent's avatar
laurent committed
1857

thomasl's avatar
thomasl committed
1858 1859
# Simulation library
##########################
1860
set (SIMUSRC
laurent's avatar
laurent committed
1861 1862 1863 1864 1865
  ${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
1866 1867 1868
  ${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
1869 1870 1871
  ${OPENAIR1_DIR}/SIMULATION/RF/rf.c
  ${OPENAIR1_DIR}/SIMULATION/RF/dac.c
  ${OPENAIR1_DIR}/SIMULATION/RF/adc.c
1872 1873 1874
)
add_library(SIMU STATIC ${SIMUSRC} )
target_include_directories(SIMU PUBLIC ${OPENAIR1_DIR}/SIMULATION/TOOLS ${OPENAIR1_DIR}/SIMULATION/RF)
1875

1876 1877 1878 1879 1880
# 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")
1881 1882 1883
  set(QTSCOPE_SOURCE_NR
    ${OPENAIR1_DIR}/PHY/TOOLS/nr_phy_qt_scope.cpp
    ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c)
1884 1885 1886 1887
  # 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)
1888
  target_link_libraries(nrqtscope PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1889 1890
endif()

1891 1892 1893 1894
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
1895
)
1896
target_link_libraries(SIMU_ETH PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1897

1898 1899 1900 1901 1902 1903 1904
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")

1905
add_library(oai_iqplayer MODULE
francescomani's avatar
francescomani committed
1906
	${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c
1907
	)
1908 1909
set(CMAKE_MODULE_PATH "${OPENAIR_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODULE_PATH}")

1910 1911
#################################
# add executables for operation
1912
#################################
laurent's avatar
laurent committed
1913 1914 1915 1916
add_library(minimal_lib
  ${OPENAIR_DIR}/common/utils/LOG/log.c
  ${OPENAIR_DIR}/common/utils/minimal_stub.c
  )
1917
target_link_libraries(minimal_lib pthread dl ${T_LIB})
1918

Kujou's avatar
Kujou committed
1919
add_executable(nfapi_test
Kujou's avatar
Kujou committed
1920 1921
  ${OPENAIR_DIR}/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c
  )
laurent's avatar
laurent committed
1922 1923 1924 1925

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

1927
add_executable(test5Gnas
1928 1929
  ${OPENAIR_DIR}/openair3/TEST/test5Gnas.c
)
1930
target_link_libraries (test5Gnas LIB_5GNAS_GNB minimal_lib )
1931 1932


1933 1934
# lte-softmodem is both eNB and UE implementation
###################################################
1935

1936
add_executable(lte-softmodem
1937 1938 1939 1940
  ${OPENAIR_DIR}/executables/lte-enb.c
  ${OPENAIR_DIR}/executables/lte-ru.c
  ${OPENAIR_DIR}/executables/ru_control.c
  ${OPENAIR_DIR}/executables/lte-softmodem.c
1941
  ${OPENAIR_DIR}/executables/softmodem-common.c
oai's avatar
oai committed
1942
  ${OPENAIR2_DIR}/ENB_APP/NB_IoT_interface.c
1943 1944
  ${OPENAIR_DIR}/executables/create_tasks.c
  ${OPENAIR_DIR}/executables/create_tasks_mbms.c
francescomani's avatar
francescomani committed
1945 1946
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
1947 1948
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
gauthier's avatar
gauthier committed
1949
  ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
1950
  ${PHY_INTERFACE_DIR}/queue_t.c
1951 1952
  ${OPENAIR_DIR}/common/utils/lte/ue_power.c
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
1953
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
1954
  )
1955
add_dependencies(lte-softmodem oai_iqplayer)
navid's avatar
navid committed
1956

1957
target_link_libraries(lte-softmodem PRIVATE
1958
  -Wl,--start-group
mir's avatar
mir committed
1959
  lte_rrc nr_rrc s1ap m2ap x2ap m3ap GTPV1U SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB SCHED_RU_LIB
1960
  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
1961
  ${NAS_UE_LIB} ITTI SIMU SIMU_ETH shlib_loader
1962
  -Wl,--end-group z dl)
1963

1964
target_link_libraries(lte-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
1965
target_link_libraries(lte-softmodem PRIVATE ${T_LIB})
1966
target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1967

1968 1969
if(E2_AGENT)
  target_compile_definitions(lte-softmodem PRIVATE E2_AGENT)
1970
  target_compile_definitions(lte-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
1971 1972
endif()

1973
add_executable(oairu
1974 1975
  ${OPENAIR_DIR}/executables/lte-ru.c
  ${OPENAIR_DIR}/executables/ru_control.c
francescomani's avatar
francescomani committed
1976 1977
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
1978 1979 1980
  ${OPENAIR_DIR}/executables/softmodem-common.c
  ${OPENAIR_DIR}/openair1/SCHED/phy_procedures_lte_common.c
  ${OPENAIR_DIR}/executables/main_ru.c
1981
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
1982
)
1983
target_link_libraries(oairu PRIVATE
1984
  -Wl,--start-group
1985
  SCHED_RU_LIB PHY_COMMON PHY_RU UTIL shlib_loader
1986
  -Wl,--end-group z dl)
1987

Robert Schmidt's avatar
Robert Schmidt committed
1988
target_link_libraries(oairu PRIVATE pthread m CONFIG_LIB rt ${T_LIB})
1989
target_link_libraries(oairu PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1990

1991 1992
# 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
1993
                      asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
1994

Raymond Knopp's avatar
Raymond Knopp committed
1995

1996 1997 1998 1999
# lte-uesoftmodem is  UE implementation
#######################################

add_executable(lte-uesoftmodem
2000 2001
  ${OPENAIR_DIR}/executables/lte-ue.c
  ${OPENAIR_DIR}/executables/lte-uesoftmodem.c
2002
  ${OPENAIR_DIR}/executables/softmodem-common.c
2003
  ${OPENAIR_DIR}/executables/create_tasks_ue.c
francescomani's avatar
francescomani committed
2004 2005
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2006 2007
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
2008
  ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
2009 2010
  ${OPENAIR_DIR}/common/utils/lte/ue_power.c
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2011
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2012 2013
  )

laurent's avatar
laurent committed
2014 2015 2016
if (NOT ${NOS1})
	target_compile_definitions(lte-uesoftmodem PRIVATE -DPDCP_USE_NETLINK)
endif()
2017
target_link_libraries(lte-uesoftmodem PRIVATE
2018
  -Wl,--start-group
2019
  lte_rrc nr_rrc s1ap x2ap m2ap m3ap
mir's avatar
mir committed
2020
  SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
2021
  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
2022
  ${NAS_UE_LIB} ITTI shlib_loader
2023 2024
  -Wl,--end-group z dl)

2025
target_link_libraries(lte-uesoftmodem PRIVATE pthread m CONFIG_LIB rt sctp)
2026
target_link_libraries(lte-uesoftmodem PRIVATE ${T_LIB})
2027
target_link_libraries(lte-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2028

2029 2030
# 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
2031
                      asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
2032

2033 2034 2035 2036
# nr-softmodem
###################################################

add_executable(nr-softmodem
2037
  ${rrc_h}
2038
  ${nr_rrc_h}
2039
  ${s1ap_h}
Raymond Knopp's avatar
Raymond Knopp committed
2040
#  ${OPENAIR_BIN_DIR}/messages_xml.h
laurent's avatar
laurent committed
2041 2042 2043
  ${OPENAIR_DIR}/executables/nr-gnb.c
  ${OPENAIR_DIR}/executables/nr-ru.c
  ${OPENAIR_DIR}/executables/nr-softmodem.c
2044
  ${OPENAIR_DIR}/executables/softmodem-common.c
francescomani's avatar
francescomani committed
2045 2046
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2047 2048
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
Raymond Knopp's avatar
Raymond Knopp committed
2049 2050
  ${OPENAIR_DIR}/common/utils/lte/ue_power.c
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2051
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2052
  ${PHY_INTERFACE_DIR}/queue_t.c
2053
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2054 2055
  )

2056
target_link_libraries(nr-softmodem PRIVATE
2057
  -Wl,--start-group
mir's avatar
mir committed
2058
  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
2059
  ITTI ${NAS_UE_LIB} lte_rrc nr_rrc
2060
  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
2061
  x2ap f1ap m2ap m3ap e1ap shlib_loader
2062 2063
  -Wl,--end-group z dl)

2064
target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
2065
target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
2066
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2067 2068 2069 2070 2071
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
if(E2_AGENT)
  target_compile_definitions(nr-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
endif()

2072

2073
add_dependencies(nr-softmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc)
2074

2075 2076
# force the generation of ASN.1 so that we don't need to wait during the build
target_link_libraries(nr-softmodem PRIVATE
2077
  asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp)
2078 2079 2080 2081
if(E2_AGENT)
  target_compile_definitions(nr-softmodem PRIVATE E2_AGENT)
endif()

2082 2083 2084 2085 2086 2087 2088 2089 2090 2091

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}
  )
2092

2093 2094
target_link_libraries(nr-cuup PRIVATE
                      CONFIG_LIB ITTI SCTP_CLIENT
2095
                      GTPV1U e1ap f1ap SIMU_ETH
2096
                      z sctp dl pthread shlib_loader ${T_LIB})
2097
target_link_libraries(nr-cuup PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
mir's avatar
mir committed
2098
                     
2099 2100 2101 2102 2103 2104
# nr-uesoftmodem is  UE implementation
#######################################

add_executable(nr-uesoftmodem
  ${rrc_h}
  ${s1ap_h}
Raymond Knopp's avatar
Raymond Knopp committed
2105
#  ${OPENAIR_BIN_DIR}/messages_xml.h
laurent's avatar
fixes  
laurent committed
2106
  ${OPENAIR_DIR}/executables/nr-uesoftmodem.c
laurent's avatar
laurent committed
2107
  ${OPENAIR_DIR}/executables/nr-ue.c
2108
  ${OPENAIR_DIR}/executables/softmodem-common.c
francescomani's avatar
francescomani committed
2109 2110
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2111
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
cig's avatar
cig committed
2112
  ${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
2113
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
2114
  ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
2115
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2116
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2117 2118
  )

2119
target_link_libraries(nr-uesoftmodem PRIVATE
2120
  -Wl,--start-group
mir's avatar
mir committed
2121
  nr_rrc SECURITY UTIL HASHTABLE SCHED_RU_LIB SCHED_NR_UE_LIB
2122 2123
  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
2124
  ITTI LIB_5GNAS_GNB LIB_NAS_SIMUE ${NAS_SIM_LIB} SIMU SIMU_ETH shlib_loader
2125 2126
  -Wl,--end-group z dl)

2127
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt)
2128
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
2129
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2130

2131
add_dependencies( nr-uesoftmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc )
2132 2133 2134 2135
if (ENABLE_LDPC_CUDA)
   add_dependencies(nr-uesoftmodem ldpc_cuda)
   add_dependencies(nr-softmodem ldpc_cuda)
endif()
2136

2137 2138 2139 2140
# 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)

2141 2142 2143 2144
###################################"
# Addexecutables for tests
####################################

2145

2146 2147 2148
# Unitary tests for each piece of L1: example, mbmssim is MBMS L1 simulator
#####################################

2149 2150 2151 2152 2153 2154
#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
2155
  -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
2156
  pthread m rt CONFIG_LIB ${T_LIB}
2157 2158
  )

2159
add_executable(rftest
2160 2161
  ${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
  ${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_scope.c
francescomani's avatar
francescomani committed
2162
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
2163 2164
  ${OPENAIR_DIR}/executables/softmodem-common.c
)
2165
target_link_libraries(rftest PRIVATE minimal_lib PHY_NR_COMMON UTIL forms pthread dl m ${T_LIB} shlib_loader)
2166
target_link_libraries(rftest PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
2167

2168
add_executable(polartest
laurent's avatar
laurent committed
2169
  ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/polartest.c
Raymond Knopp's avatar
Raymond Knopp committed
2170
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2171
  )
2172
target_link_libraries(polartest PRIVATE
2173
  -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_COMMON PHY_NR_UE CONFIG_LIB -Wl,--end-group
2174
  m pthread dl ${T_LIB}
yilmazt's avatar
yilmazt committed
2175
  )
2176

2177
add_executable(smallblocktest
2178
  ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/smallblocktest.c
2179 2180
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
)
2181

2182
target_link_libraries(smallblocktest PRIVATE
2183
  -Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON -Wl,--end-group
2184
  m pthread dl shlib_loader ${T_LIB}
2185
)
2186

2187

2188 2189 2190 2191
add_executable(ldpctest
   ${PHY_NR_CODINGIF}
   ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c
   )
2192

laurent's avatar
laurent committed
2193
add_dependencies( ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc ldpc_parityCheck)
2194 2195 2196
if (ENABLE_LDPC_CUDA)
  add_dependencies(ldpctest ldpc_cuda)
endif()
2197
target_link_libraries(ldpctest PRIVATE
2198
  -Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON -Wl,--end-group
2199
  m pthread dl shlib_loader ${T_LIB}
yilmazt's avatar
yilmazt committed
2200
  )
2201

2202 2203
add_executable(nr_dlschsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlschsim.c
2204
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2205
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2206
  )
2207
target_link_libraries(nr_dlschsim PRIVATE
2208
  -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
2209
  m pthread ${T_LIB} ITTI dl shlib_loader
yilmazt's avatar
yilmazt committed
2210
  )
2211
target_link_libraries(nr_dlschsim PRIVATE asn1_nr_rrc_hdrs)
2212

2213 2214
add_executable(nr_pbchsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pbchsim.c
2215
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2216
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2217
  )
2218
target_link_libraries(nr_pbchsim PRIVATE
2219
  -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
2220
  m pthread ${T_LIB} ITTI dl shlib_loader
2221
)
2222
target_link_libraries(nr_pbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2223

2224

2225
#PUCCH ---> Prashanth
2226 2227
add_executable(nr_pucchsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pucchsim.c
2228
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2229
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2230
  )
2231
target_link_libraries(nr_pucchsim PRIVATE
2232
  -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
2233
  m pthread ${T_LIB} ITTI dl shlib_loader
2234
)
2235
target_link_libraries(nr_pucchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2236

laurent's avatar
laurent committed
2237
add_executable(nr_dlsim
yilmazt's avatar
yilmazt committed
2238
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
2239
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2240
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2241
  ${OPENAIR_DIR}/executables/softmodem-common.c
2242
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
2243
  ${NR_UE_RRC_DIR}/rrc_nsa.c
2244
  ${NFAPI_USER_DIR}/nfapi.c
2245
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
2246
  ${PHY_INTERFACE_DIR}/queue_t.c
2247
  )
2248
target_link_libraries(nr_dlsim PRIVATE
2249
  -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
2250
  m pthread ${T_LIB} ITTI dl shlib_loader
yilmazt's avatar
yilmazt committed
2251
  )
2252
target_link_libraries(nr_dlsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2253

2254
add_executable(nr_prachsim
2255
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/prachsim.c
2256
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2257
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2258
)
2259
target_link_libraries(nr_prachsim PRIVATE
2260
  -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
2261
  m pthread ${T_LIB} ITTI dl shlib_loader)
2262
target_link_libraries(nr_prachsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2263

Khalid Ahmed's avatar
Khalid Ahmed committed
2264 2265
add_executable(nr_ulschsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulschsim.c
2266
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2267
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2268
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2269
  )
2270
target_link_libraries(nr_ulschsim PRIVATE
2271
  -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
2272
  m pthread ${T_LIB} ITTI dl shlib_loader
2273
)
2274
target_link_libraries(nr_ulschsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
yilmazt's avatar
yilmazt committed
2275

2276 2277
add_executable(nr_ulsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
2278
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2279
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2280
  ${OPENAIR_DIR}/executables/softmodem-common.c
2281
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
2282
  ${NR_UE_RRC_DIR}/rrc_nsa.c
2283
  ${NFAPI_USER_DIR}/nfapi.c
2284
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
2285
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2286
  )
2287

2288
target_link_libraries(nr_ulsim PRIVATE
2289
  -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
2290
  m pthread ${T_LIB} ITTI dl shlib_loader
yilmazt's avatar
yilmazt committed
2291
  )
2292
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2293 2294

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

2296 2297
  add_executable(${myExe}
    ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
2298 2299
    ${OPENAIR_DIR}/common/utils/lte/ue_power.c
    ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2300
    ${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c
frtabu's avatar
frtabu committed
2301
    ${NFAPI_USER_DIR}/nfapi.c
2302
    )
2303
  target_link_libraries (${myExe} PRIVATE
2304
    -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
2305
    pthread m rt CONFIG_LIB ${T_LIB} dl shlib_loader
2306
    )
2307
  target_link_libraries(${myExe} PRIVATE asn1_lte_rrc_hdrs)
2308

2309
endforeach(myExe)
2310

gauthier's avatar
gauthier committed
2311 2312 2313 2314 2315
#unitary tests for Core NEtwork pieces
#################################
foreach(myExe s1ap
    secu_knas_encrypt_eia1
    secu_kenb
2316
    aes128_ctr
gauthier's avatar
gauthier committed
2317 2318 2319 2320 2321 2322 2323 2324 2325
    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}
2326
    -Wl,--start-group SECURITY UTIL -Wl,--end-group m rt CONFIG_LIB
gauthier's avatar
gauthier committed
2327 2328 2329
    )
endforeach(myExe)

2330 2331 2332 2333
# to be added
#../targets/TEST/PDCP/test_pdcp.c
#../targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c

2334 2335
#ensure that the T header files are generated before targets depending on them
if (${T_TRACER})
2336 2337
  foreach(i
        #all "add_executable" definitions (except tests, rb_tool, updatefw)
2338
        lte-softmodem lte-uesoftmodem nr-softmodem
Robert Schmidt's avatar
Robert Schmidt committed
2339
        nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
2340
        ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
2341
        syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim
2342
        nr_ulschsim ldpctest polartest smallblocktest cu_test du_test
2343
        #all "add_library" definitions
2344
        ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
Robert Schmidt's avatar
Robert Schmidt committed
2345
        params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
Robert Schmidt's avatar
Robert Schmidt committed
2346
        oai_eth_transpro oai_mobipass coding HASHTABLE UTIL OMG_SUMO
mir's avatar
mir committed
2347
        SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
2348
        NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
2349
        MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
cig's avatar
cig committed
2350
        PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
2351
        L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON MAC_UE_NR ngap
2352
        CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU SIMU_ETH OPENAIR0_LIB
2353
        ldpc_orig ldpc_optim ldpc_optim8seg ldpc dfts config_internals)
2354 2355 2356 2357
    if (TARGET ${i})
      add_dependencies(${i} generate_T)
    endif()
  endforeach(i)
2358
endif (${T_TRACER})
gauthier's avatar
 
gauthier committed
2359

2360 2361 2362 2363 2364 2365 2366
##################################################
# Generated specific cases is not regular code
###############################################

################
# Kernel modules
###############
2367 2368 2369 2370 2371
# 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
######################################

2372
# retrieve the compiler options to send it to gccxml
2373
get_directory_property(DirDefs COMPILE_DEFINITIONS )
2374
foreach( d ${DirDefs} )
2375
  set(module_cc_opt "${module_cc_opt} -D${d}")
2376 2377 2378
endforeach()
get_directory_property( DirDefs INCLUDE_DIRECTORIES )
foreach( d ${DirDefs} )
2379
  set(module_cc_opt "${module_cc_opt} -I${d}")
2380 2381 2382
endforeach()

EXECUTE_PROCESS(COMMAND uname -r
2383 2384
  OUTPUT_VARIABLE os_release
  OUTPUT_STRIP_TRAILING_WHITESPACE)
2385 2386 2387 2388 2389 2390 2391 2392 2393
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()
2394
  CONFIGURE_FILE(${OPENAIR_CMAKE}/tools/Kbuild.cmake ${OPENAIR_BIN_DIR}/${name}/Kbuild)
2395
  add_custom_command(OUTPUT ${name}.ko
2396
    COMMAND make -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name}
2397 2398 2399 2400 2401 2402 2403 2404
    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)

2405
# nashmesh module
2406 2407
################
list(APPEND nasmesh_src device.c common.c ioctl.c classifier.c tool.c mesh.c)
2408
set(module_cc_opt "${module_cc_opt} -DNAS_NETLINK -DPDCP_USE_NETLINK")
2409 2410 2411 2412 2413
# 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()
2414
make_driver(nasmesh  ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH ${nasmesh_src})
2415

2416 2417 2418 2419 2420 2421 2422 2423 2424 2425
# user space tool for configuring MESH IP driver
################
add_executable(rb_tool
  ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH/constant.h
  ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH/ioctl.h
  ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH/rrc_nas_primitives.h
  ${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
2426
# ???
2427
####################
2428 2429 2430 2431
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()
2432
make_driver(oai_nw_drv ${OPENAIR2_DIR}/NETWORK_DRIVER/LTE ${oai_nw_drv_src})
2433 2434


2435 2436 2437 2438 2439 2440 2441 2442
# 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})

2443
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
2444

2445 2446 2447 2448 2449 2450 2451 2452 2453 2454
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()

2455
add_subdirectory(common)
2456
add_subdirectory(doc)
2457
add_subdirectory(openair1)
2458
add_subdirectory(openair2)
2459
add_subdirectory(openair3)
2460
add_subdirectory(radio)