CMakeLists.txt 99.1 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

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

pkg_search_module(OPENSSL openssl REQUIRED)
include_directories(${OPENSSL_INCLUDE_DIRS})

pkg_search_module(CONFIG libconfig REQUIRED)
include_directories(${CONFIG_INCLUDE_DIRS})

pkg_search_module(CRYPTO libcrypto REQUIRED)
include_directories(${CRYPTO_INCLUDE_DIRS})

Laurent THOMAS's avatar
Laurent THOMAS committed
49 50
#uhd 4.0 and iris installs by default in /usr/local
include_directories("/usr/local/include/")
Laurent's avatar
Laurent committed
51
#use native cmake method as this package is not in pkg-config
Robert Schmidt's avatar
Robert Schmidt committed
52
add_list2_option(RF_BOARD "None" "RF head type" "None" "OAI_USRP" "OAI_BLADERF" "OAI_LMSSDR" "OAI_SIMU")
Laurent's avatar
Laurent committed
53 54 55 56
if (${RF_BOARD} STREQUAL "OAI_USRP")
  find_package(Boost REQUIRED)

elseif (${RF_BOARD} STREQUAL "OAI_IRIS")
57
    include_directories("radio/IRIS/USERSPACE/LIB/")
Laurent THOMAS's avatar
Laurent THOMAS committed
58

Laurent's avatar
Laurent committed
59
    set(HW_SOURCE ${HW_SOURCE}
60
           radio/IRIS/USERSPACE/LIB/iris_lib.cpp)
Laurent's avatar
Laurent committed
61 62 63
    LINK_DIRECTORIES("/usr/local/lib")
    set(option_HW_lib "-lSoapySDR -rdynamic -ldl")

64
elseif (${RF_BOARD} STREQUAL "OAI_AW2SORI")
65
    include_directories("radio/AW2SORI")
66
    set(HW_SOURCE ${HW_SOURCE}
francescomani's avatar
francescomani committed
67
	    ${OPENAIR_DIR}/radio/AW2SORI/ARCH/AW2SORI/oaiori.c)
68 69
    LINK_DIRECTORIES("/usr/local/lib")
    set(openair_HW_lib "-shared -fPIC -msse4 -g -ggdb -lori")
70

Laurent's avatar
Laurent committed
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
endif (${RF_BOARD} STREQUAL "OAI_USRP")

pkg_search_module(OPENPGM openpgm-5.1 openpgm-5.2)
if(NOT ${OPENPGM_FOUND})
  message("PACKAGE openpgm-5.1 is required by binaries such as oaisim: will fail later if this target is built")
else()
  include_directories(${OPENPGM_INCLUDE_DIRS})
endif()

pkg_search_module(XPM xpm)
if(NOT ${XPM_FOUND})
  message("PACKAGE xpm not found: some targets will fail")
else()
  include_directories(${XPM_INCLUDE_DIRS})
endif()

# Atlas is required by some packages, but not found in pkg-config
# So, here are some hacks here. Hope this gets fixed in future!
if(EXISTS "/usr/include/atlas/cblas.h" OR EXISTS "/usr/include/cblas.h")
  include_directories("/usr/include/atlas")
  LINK_DIRECTORIES("/usr/lib/lapack")
  LINK_DIRECTORIES("/usr/lib64")
  LINK_DIRECTORIES("/usr/lib64/atlas") #Added because atlas libraries in CentOS 7 are here!

  if(EXISTS "/usr/lib64/libblas.so" OR EXISTS "/usr/lib/libblas.so") #Case for CentOS7
     list(APPEND ATLAS_LIBRARIES blas)

  else() # Case for Ubuntu
     list(APPEND ATLAS_LIBRARIES cblas)
  endif()

  if(EXISTS "/usr/lib/atlas/libtatlas.so" OR EXISTS "/usr/lib64/atlas/libtatlas.so") #Case for CentOS7
     list(APPEND ATLAS_LIBRARIES tatlas)
  else()
     list(APPEND ATLAS_LIBRARIES atlas) #Case for Ubuntu
  endif()

  list(APPEND ATLAS_LIBRARIES lapack)

# for ubuntu 17.10, directories are different
elseif(EXISTS "/usr/include/x86_64-linux-gnu/cblas.h")
112
  
Laurent's avatar
Laurent committed
113 114 115 116 117
  include_directories("/usr/include/x86_64-linux-gnu")
  LINK_DIRECTORIES("/usr/lib/x86_64-linux-gnu")
  list(APPEND ATLAS_LIBRARIES cblas)
  list(APPEND ATLAS_LIBRARIES atlas)
  list(APPEND ATLAS_LIBRARIES lapack)
118
  
Laurent's avatar
Laurent committed
119 120 121 122
else()
  message("No Blas/Atlas libs found, some targets will fail")
endif()

123 124 125
#########################################################
# Base directories, compatible with legacy OAI building #
#########################################################
Cedric Roux's avatar
Cedric Roux committed
126 127
set (NFAPI_DIR       ${OPENAIR_DIR}/nfapi/open-nFAPI)
set (NFAPI_USER_DIR  ${OPENAIR_DIR}/nfapi/oai_integration)
thomasl's avatar
thomasl committed
128 129 130
set (OPENAIR1_DIR    ${OPENAIR_DIR}/openair1)
set (OPENAIR2_DIR    ${OPENAIR_DIR}/openair2)
set (OPENAIR3_DIR    ${OPENAIR_DIR}/openair3)
131
set (OPENAIR3_DIR    ${OPENAIR_DIR}/openair3)
thomasl's avatar
thomasl committed
132 133 134 135 136
set (OPENAIR_CMAKE   ${OPENAIR_DIR}/cmake_targets)
set (OPENAIR_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})

project (OpenAirInterface)

137
####################################################
thomasl's avatar
thomasl committed
138 139
# compilation flags
#############################################
140

141
#set(CMAKE_BUILD_TYPE "Debug")
thomasl's avatar
thomasl committed
142 143 144
if (CMAKE_BUILD_TYPE STREQUAL "")
   set(CMAKE_BUILD_TYPE "RelWithDebInfo")
endif()
145
message(STATUS "CMAKE_BUILD_TYPE is ${CMAKE_BUILD_TYPE}")
146
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
147

148 149 150
# 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   
151 152 153 154 155 156
execute_process(COMMAND uname -m OUTPUT_VARIABLE CPUARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
message(STATUS "CPUARCH ${CPUARCH}")
if(EXISTS "/proc/cpuinfo")
  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")
157
endif()
158

159
eval_boolean(AUTODETECT_AVX512 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx512")
160
add_boolean_option(AVX512 ${AUTODETECT_AVX512} "Whether AVX512 intrinsics is available on the host processor" ON)
161

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

165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190
if(${CPUARCH} STREQUAL "x86_64" AND DEFINED CPUFLAGS)
  # The following intrinsics are assumed to be available on any x86 system
  # (avx, f16c, fma, gnfi, mmx, pclmul, sse, sse2, sse3, xop)
  set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_F16C_NATIVE -DSIMDE_X86_FMA_NATIVE -DSIMDE_X86_GFNI_NATIVE -DSIMDE_X86_MMX_NATIVE -DSIMDE_X86_PCLMUL_NATIVE -DSIMDE_X86_SSE2_NATIVE -DSIMDE_X86_SSE3_NATIVE -DSIMDE_X86_SSE_NATIVE -DSIMDE_X86_XOP_HAVE_COM_ -DSIMDE_X86_XOP_NATIVE")
  message(STATUS "AVX512 intrinsics are ${AVX512}")
  if(${AVX512})
    set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX512BW_NATIVE -DSIMDE_X86_AVX512F_NATIVE -DSIMDE_X86_AVX512VL_NATIVE -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512")
  else()
    set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mno-avx512f -march=native")
  endif()
  message(STATUS "AVX2 intrinsics are ${AVX2}")
  if(${AVX2})
    set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE")
  endif()
  if (CPUINFO MATCHES "sse4_1")
    set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_1_NATIVE")
  endif()
  if(CPUINFO MATCHES "sse4_2")
    set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_2_NATIVE")
  endif()
  if(CPUINFO MATCHES "ssse3")
    set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSSE3_NATIVE")
  endif()
elseif(${CPUARCH} NOT STREQUAL "x86_64")
  message(FATAL_ERROR "Cannot compile for CPU architecture ${CPUARCH}")
endif()
191

192
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=native")
193 194

# add autotools definitions that were maybe used!
195
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")
196

197 198 199 200 201 202
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()
203 204

set(CMAKE_C_FLAGS
mir's avatar
mir committed
205
  "${CMAKE_C_FLAGS} ${C_FLAGS_PROCESSOR} ${commonOpts} -std=gnu11 -funroll-loops")
206
set(CMAKE_CXX_FLAGS
207
  "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR}  ${commonOpts} -std=c++11")
208

209

210
add_boolean_option(SANITIZE_ADDRESS False "enable the address sanitizer (ASan)" ON)
211
if (SANITIZE_ADDRESS)
212 213
  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")
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
  # 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.
230 231
endif ()

232
add_boolean_option(SANITIZE_UNDEFINED False "enable the undefined behavior sanitizer (UBSan)" ON)
233 234 235 236 237
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 ()

238
add_definitions("-DASN_DISABLE_OER_SUPPORT -DHAVE_CONFIG_H -DHAVE_CONFIG_H_")
239 240

#########################
241
set(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -ggdb2 -Wl,-rpath -Wl,${CMAKE_CURRENT_BINARY_DIR}")
242
#########################
243 244
# set a flag for changes in the source code
# these changes are related to hardcoded path to include .h files
245
set(debugOpt "-ggdb2 -DMALLOC_CHECK_=3 -fno-delete-null-pointer-checks")
246
set(CMAKE_C_FLAGS_DEBUG "${debugOpt} -O0")
247 248
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${debugOpt} -O2")
set(CMAKE_C_FLAGS_RELEASE "-O3")
249

250 251 252 253
# 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}")

254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274
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
  )
275

276 277 278 279 280 281 282 283
  # 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
284

285 286
# Below is a hard-coded info
set (FIRMWARE_VERSION "No svn information")
thomasl's avatar
thomasl committed
287
add_definitions("-DFIRMWARE_VERSION=\"${FIRMWARE_VERSION}\"")
288 289
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
290 291 292

# Debug related options
#########################################
293 294 295 296 297 298
add_boolean_option(DEBUG_ASN1      False "ASN1 coder/decoder Debug" OFF)
#add_boolean_option(DEBUG_MAC_INTERFACE False "print MAC-RLC PDU exchange to stdout") # if true, make sure that global and PDCP log levels are trace, not found in code, commented out, to be removed
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
299

laurent's avatar
laurent committed
300
set (OCP_ITTI ${OPENAIR_DIR}/common/utils/ocp_itti)
301
add_library(ITTI ${OCP_ITTI}/intertask_interface.cpp)
302
target_link_libraries(ITTI PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
thomasl's avatar
thomasl committed
303

304 305 306 307 308 309
# asn1c skeletons have hardcoded this flag to make customized debug logs
# OAI uses this feature to re-use OAI LOG_I(ASN, ...)
if (DEBUG_ASN1C)
  add_definitions(-DHAVE_CONFIG_H)
endif()

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

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

322

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


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

zhenghuangkun's avatar
zhenghuangkun committed
351 352 353 354
# NGAP
##############
set(NGAP_DIR ${OPENAIR3_DIR}/NGAP)
include_directories ("${NGAP_DIR}")
355
add_library(ngap
heshanyun's avatar
heshanyun committed
356 357 358 359 360 361 362 363 364 365 366 367 368
  ${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
  )
369 370
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
371

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

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

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

440

441
# F1AP
442 443
##############
set(F1AP_DIR ${OPENAIR2_DIR}/F1AP)
444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463
add_library(f1ap
            ${F1AP_DIR}/f1ap_common.c
            ${F1AP_DIR}/f1ap_cu_interface_management.c
            ${F1AP_DIR}/f1ap_cu_paging.c
            ${F1AP_DIR}/f1ap_cu_rrc_message_transfer.c
            ${F1AP_DIR}/f1ap_cu_task.c
            ${F1AP_DIR}/f1ap_cu_ue_context_management.c
            ${F1AP_DIR}/f1ap_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)
464
target_link_libraries(f1ap PRIVATE ngap nr_rrc)
465

466 467
# LPP
##############
468
# target asn1_lpp in openair3/LPP/MESSAGES/CMakeLists.txt used below
469

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

475
#NOKIA config enhancement
476 477
set (CONFIG_ROOTDIR ${OPENAIR_DIR}/common/config)
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 dl UTIL)
483
add_library(params_libconfig MODULE ${CONFIG_ROOTDIR}/libconfig/config_libconfig.c)
484
target_link_libraries(params_libconfig config)
oai's avatar
oai committed
485 486
# shared library loader
set (SHLIB_LOADER_SOURCES
487
  ${OPENAIR_DIR}/common/utils/load_module_shlib.c
oai's avatar
oai committed
488
)
489 490
# include RF devices / transport protocols library modules
######################################################################
thomasl's avatar
thomasl committed
491

492
set(HWLIB_USRP_SOURCE
francescomani's avatar
francescomani committed
493
  ${OPENAIR_DIR}/radio/USRP/USERSPACE/LIB/usrp_lib.cpp
494 495
  )
add_library(oai_usrpdevif MODULE ${HWLIB_USRP_SOURCE} )
496
target_include_directories(oai_usrpdevif PRIVATE
francescomani's avatar
francescomani committed
497
  "${OPENAIR_DIR}/radio/USRP/USERSPACE/LIB/"
498 499
  ${Boost_INCLUDE_DIR}
)
500
target_link_libraries(oai_usrpdevif uhd)
thomasl's avatar
thomasl committed
501

francescomani's avatar
francescomani committed
502
include_directories("${OPENAIR_DIR}/radio/BLADERF/USERSPACE/LIB/")
503
set(HWLIB_BLADERF_SOURCE
francescomani's avatar
francescomani committed
504
  ${OPENAIR_DIR}/radio/BLADERF/USERSPACE/LIB/bladerf_lib.c
505 506
  )
add_library(oai_bladerfdevif MODULE ${HWLIB_BLADERF_SOURCE} )
507
target_link_libraries(oai_bladerfdevif bladeRF)
508

francescomani's avatar
francescomani committed
509
include_directories("${OPENAIR_DIR}/radio/LMSSDR/USERSPACE/LIB/")
ignasj's avatar
ignasj committed
510

511
set(HWLIB_LMSSDR_SOURCE
francescomani's avatar
francescomani committed
512
  ${OPENAIR_DIR}/radio/LMSSDR/USERSPACE/LIB/lms_lib.cpp
513 514
  )
add_library(oai_lmssdrdevif MODULE ${HWLIB_LMSSDR_SOURCE} )
515 516
target_include_directories(oai_lmssdrdevif PRIVATE /usr/local/include/lime)
target_link_libraries(oai_lmssdrdevif LimeSuite )
517

518

francescomani's avatar
francescomani committed
519
include_directories("${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/")
520
set(TPLIB_ETHERNET_SOURCE
francescomani's avatar
francescomani committed
521 522 523
  ${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/ethernet_lib.c
  ${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/eth_udp.c
  ${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/eth_raw.c
524 525 526
  )
add_library(oai_eth_transpro MODULE ${TPLIB_ETHERNET_SOURCE} )

francescomani's avatar
francescomani committed
527
include_directories("${OPENAIR_DIR}/radio/AW2SORI/")
528 529
link_directories("/usr/local/lib")
set(HWLIB_AW2SORI_SOURCE
francescomani's avatar
francescomani committed
530
  ${OPENAIR_DIR}/radio/AW2SORI/oaiori.c
531 532 533 534 535
  )
add_library(aw2sori_transpro MODULE ${HWLIB_AW2SORI_SOURCE})
target_compile_options(aw2sori_transpro PRIVATE -shared -fPIC -msse4 -g -ggdb -DLITE_COMPILATION)
target_link_libraries(aw2sori_transpro libori.so)

francescomani's avatar
francescomani committed
536
include_directories("${OPENAIR_DIR}/radio/IRIS/USERSPACE/LIB/")
537 538
set(option_HWIRISLIB_lib "-l SoapySDR")
set(HWLIB_IRIS_SOURCE
francescomani's avatar
francescomani committed
539
  ${OPENAIR_DIR}/radio/IRIS/USERSPACE/LIB/iris_lib.cpp
540
  )
541
add_library(oai_irisdevif MODULE ${HWLIB_IRIS_SOURCE})
Rahman Doost's avatar
Rahman Doost committed
542
target_include_directories(oai_irisdevif PRIVATE /usr/local/lib/SoapySDR/modules0.7/)
543 544
target_link_libraries(oai_irisdevif SoapySDR)

545 546 547
# Benetel 4G library
######################################################################

hardy's avatar
hardy committed
548

Hongzhi Wang's avatar
Hongzhi Wang committed
549
include_directories ("/usr/include/dpdk")
hardy's avatar
hardy committed
550

551
set(HWLIB_BENETEL_4G_SOURCE
francescomani's avatar
francescomani committed
552 553 554 555 556
  ${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/benetel.c
  ${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/shared_buffers.c
  ${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/low.c
  ${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/low_dpdk.c
  ${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/dpdk_driver.c
557 558 559
  )
add_library(benetel_4g MODULE ${HWLIB_BENETEL_4G_SOURCE} )

560
set_target_properties(benetel_4g PROPERTIES COMPILE_FLAGS "-fvisibility=hidden -I$ENV{RTE_SDK}/$ENV{RTE_TARGET}/include")
561 562

SET(DPDK_LIBS "-Wl,-rpath,$ENV{RTE_SDK}/$ENV{RTE_TARGET}/lib -Wl,--whole-archive -L$ENV{RTE_SDK}/$ENV{RTE_TARGET}/lib -ldpdk -Wl,--no-whole-archive")
563 564
target_link_libraries(benetel_4g PRIVATE ${DPDK_LIBS})
target_link_libraries(benetel_4g PRIVATE pthread dl rt m numa)
565 566 567 568 569

# Benetel 5G library
######################################################################

set(HWLIB_BENETEL_5G_SOURCE
francescomani's avatar
francescomani committed
570 571 572 573 574
  ${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/benetel.c
  ${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/shared_buffers.c
  ${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/low.c
  ${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/low_dpdk.c
  ${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/dpdk_driver.c
575 576 577
  )
add_library(benetel_5g MODULE ${HWLIB_BENETEL_5G_SOURCE} )

578
set_target_properties(benetel_5g PROPERTIES COMPILE_FLAGS "-fvisibility=hidden -I$ENV{RTE_SDK}/$ENV{RTE_TARGET}/include")
579 580

SET(DPDK_LIBS "-Wl,-rpath,$ENV{RTE_SDK}/$ENV{RTE_TARGET}/lib -Wl,--whole-archive -L$ENV{RTE_SDK}/$ENV{RTE_TARGET}/lib -ldpdk -Wl,--no-whole-archive")
581 582
target_link_libraries(benetel_5g PRIVATE ${DPDK_LIBS})
target_link_libraries(benetel_5g PRIVATE pthread dl rt m numa)
583

584
##########################################################
585

586 587 588
# LDPC offload library
##########################################################

589
add_boolean_option(ENABLE_LDPC_T1 OFF "Build support for LDPC Offload to T1 library" OFF)
590 591 592 593 594 595 596 597 598 599
if (ENABLE_LDPC_T1)
  pkg_check_modules(LIBDPDK_T1 REQUIRED libdpdk=20.05.0)
  find_library(T1 NAMES rte_pmd_hpac_sdfec_pmd REQUIRED)
  if (NOT T1)
    message(FATAL_ERROR "Library rte_pmd_hpac_sdfec_pmd for T1 offload not found")
  endif()
  add_library(ldpc_t1 MODULE ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c)
  set_target_properties(ldpc_t1 PROPERTIES COMPILE_FLAGS "-DALLOW_EXPERIMENTAL_API")
  target_compile_options(ldpc_t1 PRIVATE ${LIBDPDK_T1_CFLAGS})
  target_link_libraries(ldpc_t1 ${LIBDPDK_T1_LDFLAGS} ${T1})
600 601
endif()

602 603
##########################################################

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

thomasl's avatar
thomasl committed
606 607 608
##############################################################
#    ???!!! TO BE DOCUMENTED OPTIONS !!!???
##############################################################
609

610 611 612
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????" ON)
add_boolean_option(NAS_NETLINK False "useless ??? Must be True to compile nasmesh driver without rtai ????" ON)
add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????" ON)
613

614 615 616 617
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
618

frtabu's avatar
frtabu committed
619
########################
thomasl's avatar
thomasl committed
620 621
# Include order
##########################
622
add_boolean_option(ENB_MODE True "Swap the include directories between openair2 and openair3" ON)
thomasl's avatar
thomasl committed
623 624 625 626

##########################
# SCHEDULING/REAL-TIME/PERF options
##########################
627 628 629 630 631
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)
add_boolean_option(LINUX                   False "used in weird memcpy() in pdcp.c ???" ON)
add_boolean_option(LINUX_LIST              False "used only in lists.c: either use OAI implementation of lists or Linux one (should be ON, but it is False" ON)
thomasl's avatar
thomasl committed
632 633 634 635

##########################
# PHY options
##########################
636 637 638 639 640 641 642
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(DEBUG_DLSCH             False "Enable debugging of DLSCH physical layer channel" ON)
add_boolean_option(MEX                     False "Enabling compilation with mex" ON)
thomasl's avatar
thomasl committed
643 644 645 646

##########################
# NAS LAYER OPTIONS
##########################
647 648 649
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
650 651 652 653 654


##########################
# PDCP LAYER OPTIONS
##########################
655 656
#add_boolean_option(LINK_ENB_PDCP_TO_IP_DRIVER  False "For eNB, PDCP communicate with a IP driver")
#add_boolean_option(LINK_ENB_PDCP_TO_GTPV1U     True  "For eNB, PDCP communicate with GTP-U protocol (eNB<->S-GW)")
thomasl's avatar
thomasl committed
657 658 659 660

##########################
# RRC LAYER OPTIONS
##########################
661
add_boolean_option(RRC_DEFAULT_RAB_IS_AM       True   "set the RLC mode to AM for the default bearer, otherwise it is UM." ON)
thomasl's avatar
thomasl committed
662 663 664 665 666


##########################
# S1AP LAYER OPTIONS
##########################
667
# none
thomasl's avatar
thomasl committed
668

669
# add the binary tree to the search path for include files
thomasl's avatar
thomasl committed
670 671 672 673
#######################################################
# We will find ConfigOAI.h after generation in target directory
include_directories("${OPENAIR_BIN_DIR}")
# add directories to find all include files
674
# the internal rule is to use generic names such as defs.h
thomasl's avatar
thomasl committed
675
# but to make it uniq name as adding the relative path in the include directtive
676
# example: #include "RRC/LTE/rrc_defs.h"
thomasl's avatar
thomasl committed
677 678 679 680 681
#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
682

laurent's avatar
laurent committed
683
include_directories("${OPENAIR_DIR}/executables")
684 685 686 687
if(ENB_MODE)
  include_directories("${OPENAIR2_DIR}/COMMON")
  include_directories("${OPENAIR2_DIR}/UTIL")
  include_directories("${OPENAIR2_DIR}/UTIL/LOG")
gauthier's avatar
gauthier committed
688 689
  include_directories("${OPENAIR3_DIR}/COMMON")
  include_directories("${OPENAIR3_DIR}/UTILS")
690
else()
gauthier's avatar
gauthier committed
691 692
  include_directories("${OPENAIR3_DIR}/COMMON")
  include_directories("${OPENAIR3_DIR}/UTILS")
693 694 695 696
  include_directories("${OPENAIR2_DIR}/COMMON")
  include_directories("${OPENAIR2_DIR}/UTIL")
  include_directories("${OPENAIR2_DIR}/UTIL/LOG")
endif()
697 698 699 700 701 702
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
703 704
include_directories("${OPENAIR1_DIR}")
include_directories("${OPENAIR2_DIR}")
705 706
include_directories("${OPENAIR3_DIR}/NAS/TOOLS")
include_directories("${OPENAIR2_DIR}/ENB_APP")
707
include_directories("${OPENAIR2_DIR}/GNB_APP")
708
include_directories("${OPENAIR2_DIR}/MCE_APP")
thomasl's avatar
thomasl committed
709 710
include_directories("${OPENAIR2_DIR}/LAYER2/RLC")
include_directories("${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0")
711 712
include_directories("${OPENAIR2_DIR}/RRC/LTE/MESSAGES")
include_directories("${OPENAIR2_DIR}/RRC/LTE")
thomasl's avatar
thomasl committed
713
include_directories("${OPENAIR_DIR}/common/utils")
laurent's avatar
laurent committed
714
include_directories("${OPENAIR_DIR}/common/utils/collection")
laurent's avatar
laurent committed
715
include_directories("${OPENAIR_DIR}/common/utils/ocp_itti")
gauthier's avatar
gauthier committed
716 717 718 719
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
720 721 722
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
723 724 725 726 727
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")
728
include_directories("${OPENAIR2_DIR}/X2AP")
729
include_directories("${OPENAIR2_DIR}/M2AP")
730
include_directories("${OPENAIR2_DIR}/F1AP")
Laurent THOMAS's avatar
Laurent THOMAS committed
731
include_directories("${OPENAIR3_DIR}/ocp-gtpu")
732 733
include_directories("${OPENAIR3_DIR}/M3AP")
include_directories("${OPENAIR3_DIR}/MME_APP")
francescomani's avatar
francescomani committed
734
include_directories("${OPENAIR_DIR}/radio/COMMON")
Robert Schmidt's avatar
Robert Schmidt committed
735
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/PHY")
736
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/MAC")
737
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/RRC")
738
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/PDCP")
739
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/S1AP")
thomasl's avatar
thomasl committed
740 741 742 743 744 745 746 747 748 749 750
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/OMG")
include_directories("${OPENAIR2_DIR}/UTIL/OTG")
include_directories("${OPENAIR2_DIR}/UTIL/CLI")
include_directories("${OPENAIR2_DIR}/UTIL/OPT")
include_directories("${OPENAIR2_DIR}/UTIL/OMV")
751
include_directories("${OPENAIR_DIR}")
thomasl's avatar
thomasl committed
752

753 754 755 756
###########
# Utilities
###############

757
add_library(HASHTABLE
758 759
  ${OPENAIR_DIR}/common/utils/hashtable/hashtable.c
  ${OPENAIR_DIR}/common/utils/hashtable/obj_hashtable.c
760
)
761
include_directories(${OPENAIR_DIR}/common/utils/hashtable)
762

763
add_library(UTIL
764
  ${OPENAIR_DIR}/common/utils/LOG/log.c
765
  ${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
thomasl's avatar
thomasl committed
766 767
  ${OPENAIR2_DIR}/UTIL/MATH/oml.c
  ${OPENAIR2_DIR}/UTIL/OPT/probe.c
768 769 770
  ${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
  ${OPENAIR_DIR}/common/utils/utils.c
  ${OPENAIR_DIR}/common/utils/system.c
771
  ${OPENAIR_DIR}/common/utils/time_meas.c
772
  ${OPENAIR_DIR}/common/utils/time_stat.c
Robert Schmidt's avatar
Robert Schmidt committed
773
)
774

mir's avatar
mir committed
775
set(SECURITY_SRC
776
  ${OPENAIR3_DIR}/SECU/secu_defs.c
gauthier's avatar
gauthier committed
777
  ${OPENAIR3_DIR}/SECU/kdf.c
778 779
  ${OPENAIR3_DIR}/SECU/aes_128_ctr.c
  ${OPENAIR3_DIR}/SECU/aes_128_cbc_cmac.c
mir's avatar
mir committed
780
  ${OPENAIR3_DIR}/SECU/aes_128_ecb.c
781
  ${OPENAIR3_DIR}/SECU/sha_256_hmac.c
gauthier's avatar
gauthier committed
782 783 784
  ${OPENAIR3_DIR}/SECU/rijndael.c
  ${OPENAIR3_DIR}/SECU/snow3g.c
  ${OPENAIR3_DIR}/SECU/key_nas_deriver.c
mir's avatar
mir committed
785
  ${OPENAIR3_DIR}/SECU/nas_stream_eea0.c
gauthier's avatar
gauthier committed
786 787 788 789
  ${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
790 791
  )

mir's avatar
mir committed
792 793
add_library(SECURITY ${SECURITY_SRC} $<TARGET_OBJECTS:ds>)
target_include_directories(SECURITY PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
794

795
# Physical Channel Procedures Scheduling
thomasl's avatar
thomasl committed
796
################################"
797
set(SCHED_SRC
798
  ${OPENAIR1_DIR}/SCHED/fapi_l1.c
799 800 801
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_eNb.c
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
)
thomasl's avatar
thomasl committed
802
add_library(SCHED_LIB ${SCHED_SRC})
803
target_link_libraries(SCHED_LIB PRIVATE asn1_lte_rrc_hdrs)
thomasl's avatar
thomasl committed
804

Guy De Souza's avatar
Guy De Souza committed
805
set(SCHED_NR_SRC
806
  ${OPENAIR1_DIR}/SCHED_NR/fapi_nr_l1.c
Guy De Souza's avatar
Guy De Souza committed
807
  ${OPENAIR1_DIR}/SCHED_NR/phy_procedures_nr_gNB.c
808
  ${OPENAIR1_DIR}/SCHED_NR/nr_prach_procedures.c
809
  ${OPENAIR1_DIR}/SCHED_NR/phy_frame_config_nr.c
Guy De Souza's avatar
Guy De Souza committed
810 811
)
add_library(SCHED_NR_LIB ${SCHED_NR_SRC})
812
target_link_libraries(SCHED_NR_LIB PRIVATE asn1_nr_rrc_hdrs)
813

814
set(SCHED_SRC_RU
815
  ${OPENAIR1_DIR}/SCHED/ru_procedures.c
816
  ${OPENAIR1_DIR}/SCHED_NR/nr_ru_procedures.c
817
  ${OPENAIR1_DIR}/SCHED/prach_procedures.c
818 819
)
add_library(SCHED_RU_LIB ${SCHED_SRC_RU})
820
target_link_libraries(SCHED_RU_LIB PRIVATE asn1_lte_rrc_hdrs)
821

822
set(SCHED_SRC_UE
823
  ${OPENAIR1_DIR}/SCHED_UE/phy_procedures_lte_ue.c
824
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
825 826 827
  ${OPENAIR1_DIR}/SCHED_UE/pucch_pc.c
  ${OPENAIR1_DIR}/SCHED_UE/pusch_pc.c
  ${OPENAIR1_DIR}/SCHED_UE/srs_pc.c
828 829
)
add_library(SCHED_UE_LIB ${SCHED_SRC_UE})
830
target_link_libraries(SCHED_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
831

832 833
set(SCHED_SRC_NR_UE
  ${OPENAIR1_DIR}/SCHED_NR_UE/phy_procedures_nr_ue.c
834
  ${OPENAIR1_DIR}/SCHED_NR_UE/fapi_nr_ue_l1.c
cig's avatar
cig committed
835
  ${OPENAIR1_DIR}/SCHED_NR_UE/phy_frame_config_nr_ue.c
836 837 838 839
  ${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})
840
target_link_libraries(SCHED_NR_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
841

842

843 844 845 846
# nFAPI
#################################
set(NFAPI_COMMON_SRC
  ${NFAPI_DIR}/common/src/debug.c
847
  )
848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869
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})
870
target_link_libraries(NFAPI_PNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
871 872 873 874 875 876 877 878 879 880 881

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})
882
target_link_libraries(NFAPI_VNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
883 884 885 886 887 888 889

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
890 891 892
  ${NFAPI_USER_DIR}/nfapi.c
  ${NFAPI_USER_DIR}/nfapi_pnf.c
  ${NFAPI_USER_DIR}/nfapi_vnf.c
893
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
894 895
)
add_library(NFAPI_USER_LIB ${NFAPI_USER_SRC})
896
target_link_libraries(NFAPI_USER_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
897 898
include_directories(${NFAPI_USER_DIR})

thomasl's avatar
thomasl committed
899 900
# Layer 1
#############################
901 902 903 904 905 906 907 908
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
909
set(PHY_POLARSRC
yilmazt's avatar
yilmazt committed
910
  ${OPENAIR1_DIR}/PHY/CODING/nr_polar_init.c
Guy De Souza's avatar
Guy De Souza committed
911 912 913
  ${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
914
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
Guy De Souza's avatar
Guy De Souza committed
915
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
yilmazt's avatar
yilmazt committed
916
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
917
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_interleaving_pattern.c
Guy De Souza's avatar
Guy De Souza committed
918 919 920
  ${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
921
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_procedures.c
Guy De Souza's avatar
Guy De Souza committed
922 923
  ${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_sequence_pattern.c
)
924 925 926 927
set(PHY_SMALLBLOCKSRC
  ${OPENAIR1_DIR}/PHY/CODING/nrSmallBlock/encodeSmallBlock.c
  ${OPENAIR1_DIR}/PHY/CODING/nrSmallBlock/decodeSmallBlock.c
)
928 929 930
set(PHY_TURBOIF
  ${OPENAIR1_DIR}/PHY/CODING/coding_load.c
)
931 932

set(PHY_LDPC_ORIG_SRC
933 934
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c
935
)
936

937 938 939 940 941 942 943 944 945 946 947 948
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
)
949
set(PHY_LDPC_CUDA_SRC
950
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
951 952 953
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
)

954 955 956 957
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
)
958
add_custom_target( nrLDPC_decoder_kernels_CL
959 960
                   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
961
)
962

963 964 965 966 967
set(PHY_NR_CODINGIF
  ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c;
)

add_library(ldpc_orig MODULE ${PHY_LDPC_ORIG_SRC} )
968
target_link_libraries(ldpc_orig PRIVATE ldpc_gen_HEADERS)
969
add_library(ldpc_optim MODULE ${PHY_LDPC_OPTIM_SRC} )
970
target_link_libraries(ldpc_optim PRIVATE ldpc_gen_HEADERS)
971
add_library(ldpc_optim8seg MODULE ${PHY_LDPC_OPTIM8SEG_SRC} )
972
target_link_libraries(ldpc_optim8seg PRIVATE ldpc_gen_HEADERS)
973 974
add_library(ldpc_cl MODULE ${PHY_LDPC_CL_SRC} )
target_link_libraries(ldpc_cl OpenCL)
975
add_dependencies(ldpc_cl nrLDPC_decoder_kernels_CL)
976

977 978 979 980 981

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

982
add_boolean_option(ENABLE_LDPC_CUDA OFF "Build support for CUDA" OFF)
983 984 985 986 987
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
988
  set_target_properties(ldpc_cuda PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
989 990 991 992
  if (NOT CUDA_FOUND)
    message(FATAL_ERROR "no CUDA found")
  endif()
endif()
frtabu's avatar
frtabu committed
993

994
add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
995
target_link_libraries(ldpc PRIVATE ldpc_gen_HEADERS)
996

997
add_library(coding MODULE ${PHY_TURBOSRC} )
998

frtabu's avatar
frtabu committed
999 1000 1001
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c )


1002 1003
set(PHY_SRC_COMMON
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools_common.c
thomasl's avatar
thomasl committed
1004
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
1005 1006 1007
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/slss.c
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sldch.c
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/slsch.c
1008
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/get_pmi.c
thomasl's avatar
thomasl committed
1009
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/group_hopping.c
1010 1011 1012 1013 1014 1015 1016
  ${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
1017
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/srs_modulation.c
thomasl's avatar
thomasl committed
1018 1019 1020 1021 1022 1023 1024 1025 1026
  ${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
1027
  ${OPENAIR1_DIR}/PHY/CODING/nr_segmentation.c
1028
  ${OPENAIR1_DIR}/PHY/CODING/nr_rate_matching.c
thomasl's avatar
thomasl committed
1029 1030
  ${OPENAIR1_DIR}/PHY/CODING/ccoding_byte.c
  ${OPENAIR1_DIR}/PHY/CODING/ccoding_byte_lte.c
1031
  ${OPENAIR1_DIR}/PHY/CODING/3gpplte_sse.c
thomasl's avatar
thomasl committed
1032
  ${OPENAIR1_DIR}/PHY/CODING/crc_byte.c
1033
  ${PHY_TURBOIF}
thomasl's avatar
thomasl committed
1034 1035 1036
  ${OPENAIR1_DIR}/PHY/CODING/lte_rate_matching.c
  ${OPENAIR1_DIR}/PHY/CODING/viterbi.c
  ${OPENAIR1_DIR}/PHY/CODING/viterbi_lte.c
1037 1038 1039
  ${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
1040
  ${OPENAIR1_DIR}/PHY/TOOLS/dfts_load.c
1041 1042 1043 1044 1045 1046 1047 1048 1049 1050
  ${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
  )

1051
set(PHY_SRC
1052 1053
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pss.c
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss.c
laurent's avatar
laurent committed
1054
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss_gen.c
1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066
  ${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
1067
#  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
1068 1069
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_decoding.c
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/rar_tools.c
1070
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/uci_tools.c
1071 1072
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
1073
#  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
1074 1075
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_eNB_measurements.c
  ${OPENAIR1_DIR}/PHY/INIT/lte_init.c
1076 1077 1078
  )

set(PHY_SRC_RU
1079
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/if4_tools.c
1080
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/drs_modulation.c
1081
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
1082
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_channel_estimation.c
1083 1084
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_eNB.c
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
1085
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.c
1086
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_nr.c
1087
  ${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz.c
laurent's avatar
laurent committed
1088
  ${OPENAIR1_DIR}/PHY/MODULATION/gen_75KHz.cpp
1089 1090
  ${OPENAIR1_DIR}/PHY/MODULATION/beamforming.c
  ${OPENAIR1_DIR}/PHY/MODULATION/compute_bf_weights.c
1091
  ${OPENAIR1_DIR}/PHY/INIT/lte_init_ru.c
1092
  ${OPENAIR1_DIR}/PHY/INIT/nr_init_ru.c
1093 1094
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/prach.c

1095 1096
  )

1097
set(PHY_SRC_UE
1098
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/sss_ue.c
laurent's avatar
laurent committed
1099
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss_gen.c
1100 1101
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_demodulation.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation.c
1102
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/linear_preprocessing_rec.c
1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113
  ${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
1114 1115 1116
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/slss.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/sldch.c
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/slsch.c
1117 1118 1119
  ${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
1120
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/rar_tools_ue.c
1121
  ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/initial_sync.c
1122 1123
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep.c
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_mbsfn.c
1124
  ${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz_ue.c
1125 1126
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_time.c
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
1127
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync_ue.c
1128 1129 1130 1131 1132 1133 1134
  ${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
1135
  )
1136

1137 1138
  set(PHY_NR_SRC_COMMON
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
1139
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_csi_rs.c
1140 1141
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c
1142
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
1143 1144
  )

1145
  set(PHY_NR_SRC
1146
  ${OPENAIR1_DIR}/PHY/INIT/nr_init.c
1147
  ${OPENAIR1_DIR}/PHY/INIT/nr_parms.c
1148
  ${OPENAIR1_DIR}/PHY/MODULATION/nr_modulation.c
ahadi's avatar
ahadi committed
1149
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prs.c
Guy De Souza's avatar
Guy De Souza committed
1150 1151
  ${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
1152
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_pbch.c
1153
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dci.c
1154
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dci_tools.c
1155 1156
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch.c
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch_tools.c
1157
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_dlsch_coding.c
1158
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_decoding.c
1159
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch.c
1160
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
Guy De Souza's avatar
Guy De Souza committed
1161
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_dmrs.c
1162
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach.c
1163
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_llr_computation.c
1164
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
dir's avatar
dir committed
1165
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
1166
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
Guy De Souza's avatar
Guy De Souza committed
1167
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c
1168
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
1169
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
adk's avatar
adk committed
1170
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
1171
  ${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
1172
  ${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_measurements_gNB.c
1173 1174
  ${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
1175
  #${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
1176 1177 1178 1179 1180 1181 1182 1183
  ${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
Guy De Souza's avatar
Guy De Souza committed
1184
  ${PHY_POLARSRC}
1185
  ${PHY_SMALLBLOCKSRC}
1186
  ${PHY_NR_CODINGIF}
1187
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/pucch_rx.c
1188
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/srs_rx.c
Francesco Mani's avatar
Francesco Mani committed
1189
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_uci_tools_common.c
1190 1191 1192
  )
  set(PHY_NR_UE_SRC
  ${OPENAIR1_DIR}/PHY/INIT/nr_parms.c
1193 1194
  ${OPENAIR1_DIR}/PHY/MODULATION/nr_modulation.c
  ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_nr.c
1195 1196 1197
  ${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
1198
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
1199
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ue_rf_helpers.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1200
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_pbch.c
1201
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
1202
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1203
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1204
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
1205
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
1206
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
1207
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_dmrs.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1208
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/
Agustin's avatar
Agustin committed
1209
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_prach.c
Agustin's avatar
Agustin committed
1210
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/dci_nr.c
1211
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/pucch_nr.c
1212
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/csi_rx.c
Francesco Mani's avatar
Francesco Mani committed
1213
  ${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_uci_tools_common.c
1214
  ${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
1215
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1216
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
1217
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
adk's avatar
adk committed
1218
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1219
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold_ue.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
1220
  ${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1221
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
hongzhi wang's avatar
hongzhi wang committed
1222
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1223 1224
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
  ${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_adjust_gain.c
1225 1226
  ${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
  ${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
1227
 # ${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
1228 1229 1230 1231 1232 1233 1234 1235
  ${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
Hongzhi Wang's avatar
Hongzhi Wang committed
1236
  ${OPENAIR1_DIR}/PHY/INIT/nr_init_ue.c
Agustin's avatar
Agustin committed
1237
  #  ${OPENAIR1_DIR}/SIMULATION/NR_UE_PHY/unit_tests/src/pucch_uci_test.c
Hongzhi Wang's avatar
Hongzhi Wang committed
1238
  ${PHY_POLARSRC}
1239
  ${PHY_SMALLBLOCKSRC}
1240
  ${PHY_NR_CODINGIF}
1241 1242
  )

1243

thomasl's avatar
thomasl committed
1244 1245 1246
if (${SMBV})
  set(PHY_SRC "${PHY_SRC} ${OPENAIR1_DIR}/PHY/TOOLS/smbv.c")
endif  (${SMBV})
1247

1248 1249
set(PHY_SRC_UE ${PHY_SRC_UE} ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c)
set(PHY_NR_UE_SRC ${PHY_NR_UE_SRC} ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c)
1250

1251
add_library(PHY_COMMON ${PHY_SRC_COMMON})
frtabu's avatar
frtabu committed
1252
add_dependencies(PHY_COMMON dfts)
1253
target_link_libraries(PHY_COMMON PRIVATE asn1_lte_rrc_hdrs)
1254

1255
add_library(PHY ${PHY_SRC})
1256
target_link_libraries(PHY PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1257

1258
add_library(PHY_UE ${PHY_SRC_UE})
1259
target_link_libraries(PHY_UE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1260

1261
add_library(PHY_NR_COMMON ${PHY_NR_SRC_COMMON})
1262

1263
add_library(PHY_NR ${PHY_NR_SRC})
1264

1265
add_library(PHY_NR_UE ${PHY_NR_UE_SRC})
1266

1267
add_library(PHY_RU ${PHY_SRC_RU})
1268
target_link_libraries(PHY_RU PRIVATE asn1_lte_rrc_hdrs)
thomasl's avatar
thomasl committed
1269

1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286
#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/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c
  ${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
  ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ue_measurements.c
1287
  ${OPENAIR_DIR}/common/utils/LOG/log.c
1288 1289
  ${OPENAIR_DIR}/common/utils/T/T.c
  ${OPENAIR_DIR}/common/utils/T/local_tracer.c
1290
  )
1291
add_library(PHY_MEX ${PHY_MEX_UE} ${CONFIG_LIB})
1292
target_link_libraries(PHY_MEX PRIVATE asn1_lte_rrc_hdrs)
1293

thomasl's avatar
thomasl committed
1294 1295 1296
#Layer 2 library
#####################
set(MAC_DIR ${OPENAIR2_DIR}/LAYER2/MAC)
1297
set(NR_GNB_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_gNB)
1298
set(NR_UE_MAC_DIR ${OPENAIR2_DIR}/LAYER2/NR_MAC_UE)
1299
set(PHY_INTERFACE_DIR ${OPENAIR2_DIR}/PHY_INTERFACE)
1300
set(NR_PHY_INTERFACE_DIR ${OPENAIR2_DIR}/NR_PHY_INTERFACE)
1301
set(NR_UE_PHY_INTERFACE_DIR ${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE)
1302
set(RRC_DIR ${OPENAIR2_DIR}/RRC/LTE)
1303
set(NR_RRC_DIR ${OPENAIR2_DIR}/RRC/NR)
1304
set(NR_UE_RRC_DIR ${OPENAIR2_DIR}/RRC/NR_UE)
thomasl's avatar
thomasl committed
1305
set(PDCP_DIR  ${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0)
Cedric Roux's avatar
Cedric Roux committed
1306

Cedric Roux's avatar
Cedric Roux committed
1307
set(RLC_V2
1308 1309 1310 1311 1312 1313 1314 1315 1316 1317
  ${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
  )

Cedric Roux's avatar
Cedric Roux committed
1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328
set(NR_RLC_SRC
  ${OPENAIR2_DIR}/LAYER2/nr_rlc/asn1_utils.c
  ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_entity.c
  ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_entity_am.c
  ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_entity_tm.c
  ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_entity_um.c
  ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_oai_api.c
  ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_pdu.c
  ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_sdu.c
  ${OPENAIR2_DIR}/LAYER2/nr_rlc/nr_rlc_ue_manager.c
  )
1329

1330 1331 1332 1333
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
1334 1335
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_sdu.c
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_timer_thread.c
1336
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_security_nea2.c
1337
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.c
Cedric Roux's avatar
Cedric Roux committed
1338
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.c
Cedric Roux's avatar
Cedric Roux committed
1339
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/asn1_utils.c
Cedric Roux's avatar
Cedric Roux committed
1340 1341 1342 1343
  #hack: include these files to compile the nr phy simulators
  #these files should not be here, will be removed at some point when the
  #computation is done directly inside nr_pdcp_integrity_nia1.c instead
  #of reusing code of osa_stream_eia.c
mir's avatar
mir committed
1344 1345
  #${OPENAIR2_DIR}/UTIL/OSA/osa_stream_eia.c
  #${OPENAIR2_DIR}/UTIL/OSA/osa_snow3g.c
1346
  )
Cedric Roux's avatar
Cedric Roux committed
1347

1348
set(NR_SDAP_SRC
1349 1350
  ${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap.c
  ${OPENAIR2_DIR}/SDAP/nr_sdap/nr_sdap_entity.c
1351 1352
  )
  
Cedric Roux's avatar
Cedric Roux committed
1353 1354 1355 1356 1357 1358 1359 1360
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
1361
#  ${RRC_DIR}/rrc_UE.c
thomasl's avatar
thomasl committed
1362
  ${RRC_DIR}/rrc_eNB.c
Cedric Roux's avatar
Cedric Roux committed
1363
  ${RRC_DIR}/rrc_eNB_endc.c
thomasl's avatar
thomasl committed
1364
  ${RRC_DIR}/rrc_eNB_S1AP.c
1365
  ${RRC_DIR}/rrc_eNB_M2AP.c
1366
  ${RRC_DIR}/rrc_eNB_UE_context.c
Xue Song's avatar
Xue Song committed
1367
  ${NR_RRC_DIR}/rrc_gNB_UE_context.c
thomasl's avatar
thomasl committed
1368 1369
  ${RRC_DIR}/rrc_common.c
  ${RRC_DIR}/L2_interface.c
1370 1371
  ${RRC_DIR}/L2_interface_common.c
  ${RRC_DIR}/L2_interface_ue.c
thomasl's avatar
thomasl committed
1372
  )
1373

1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386
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
  )
1387

Cedric Roux's avatar
Cedric Roux committed
1388
set(L2_LTE_SRC
Cedric Roux's avatar
Cedric Roux committed
1389
  ${RLC_V2}
Cedric Roux's avatar
Cedric Roux committed
1390 1391
  )

Guy De Souza's avatar
Guy De Souza committed
1392
set(L2_NR_SRC
Cedric Roux's avatar
Cedric Roux committed
1393
  ${NR_RLC_SRC}
1394
  ${NR_PDCP_SRC}
1395
  ${NR_SDAP_SRC}
1396 1397
  ${NR_RRC_DIR}/rrc_gNB.c
  ${NR_RRC_DIR}/nr_rrc_common.c
1398
  ${NR_RRC_DIR}/L2_nr_interface.c
1399 1400
  ${NR_RRC_DIR}/mac_rrc_dl_direct.c
  ${NR_RRC_DIR}/mac_rrc_dl_f1ap.c
1401
  ${NR_RRC_DIR}/nr_rrc_config.c
1402
  ${NR_RRC_DIR}/rrc_gNB_nsa.c
Raymond Knopp's avatar
Raymond Knopp committed
1403
  ${NR_RRC_DIR}/rrc_gNB_internode.c
1404 1405
  ${NR_RRC_DIR}/rrc_gNB_reconfig.c
  ${NR_RRC_DIR}/rrc_gNB_UE_context.c
Xue Song's avatar
Xue Song committed
1406
  ${NR_RRC_DIR}/rrc_gNB_NGAP.c
1407
  ${NR_RRC_DIR}/rrc_gNB_radio_bearers.c
1408 1409
  )

1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420
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
1421
  )
1422

1423 1424 1425 1426 1427
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
1428 1429
  )

1430
set(NR_L2_SRC_UE
Cedric Roux's avatar
Cedric Roux committed
1431
  ${NR_RLC_SRC}
1432
  ${NR_PDCP_SRC}
1433
  ${NR_SDAP_SRC}
1434 1435
  ${NR_UE_RRC_DIR}/L2_interface_ue.c
  ${NR_UE_RRC_DIR}/main_ue.c
1436
  ${NR_RRC_DIR}/nr_rrc_config.c
1437
  ${NR_UE_RRC_DIR}/rrc_UE.c
1438
  ${NR_UE_RRC_DIR}/rrc_nsa.c
rmagueta's avatar
rmagueta committed
1439
  ${NR_RRC_DIR}/nr_rrc_config.c
Guy De Souza's avatar
Guy De Souza committed
1440
  )
1441

thomasl's avatar
thomasl committed
1442
set (MAC_SRC
1443
  #${PHY_INTERFACE_DIR}/phy_stub_UE.c
1444
  ${PHY_INTERFACE_DIR}/IF_Module.c
thomasl's avatar
thomasl committed
1445
  ${MAC_DIR}/main.c
1446 1447 1448
  #${MAC_DIR}/main_ue.c
  #${MAC_DIR}/ue_procedures.c
  #${MAC_DIR}/ra_procedures.c
thomasl's avatar
thomasl committed
1449 1450
  ${MAC_DIR}/l1_helpers.c
  ${MAC_DIR}/rar_tools.c
1451
  #${MAC_DIR}/rar_tools_ue.c
thomasl's avatar
thomasl committed
1452 1453 1454 1455 1456 1457 1458
  ${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
1459
  ${MAC_DIR}/eNB_scheduler_fairRR.c
1460
  ${MAC_DIR}/eNB_scheduler_phytest.c
thomasl's avatar
thomasl committed
1461
  ${MAC_DIR}/pre_processor.c
Robert Schmidt's avatar
Robert Schmidt committed
1462
  ${MAC_DIR}/slicing/slicing.c
thomasl's avatar
thomasl committed
1463
  ${MAC_DIR}/config.c
1464
  ${MAC_DIR}/config_ue.c
1465 1466
 )

Guy De Souza's avatar
Guy De Souza committed
1467
set (MAC_NR_SRC
1468
  ${NR_PHY_INTERFACE_DIR}/NR_IF_Module.c
1469
  ${NR_PHY_INTERFACE_DIR}/nr_sched_response.c
1470 1471 1472 1473 1474 1475 1476 1477
  ${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
1478
  ${NR_GNB_MAC_DIR}/gNB_scheduler_uci.c
1479
  ${NR_GNB_MAC_DIR}/gNB_scheduler_srs.c
1480
  ${NR_GNB_MAC_DIR}/gNB_scheduler_RA.c
1481
  ${NR_GNB_MAC_DIR}/mac_rrc_dl_handler.c
1482 1483
  ${NR_GNB_MAC_DIR}/mac_rrc_ul_direct.c
  ${NR_GNB_MAC_DIR}/mac_rrc_ul_f1ap.c
1484 1485
 )

1486

1487
set (MAC_SRC_UE
1488
  ${PHY_INTERFACE_DIR}/phy_stub_UE.c
1489
  ${PHY_INTERFACE_DIR}/queue_t.c
1490 1491 1492 1493 1494 1495
  ${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
1496
 )
1497

1498 1499
set (MAC_NR_SRC_UE
  ${NR_UE_PHY_INTERFACE_DIR}/NR_IF_Module.c
1500
  ${NR_UE_PHY_INTERFACE_DIR}/NR_Packet_Drop.c
1501 1502 1503 1504
  ${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
1505
  ${NR_UE_MAC_DIR}/nr_ue_scheduler.c
1506
  ${NR_UE_MAC_DIR}/nr_ue_dci_configuration.c
1507
  ${NR_UE_MAC_DIR}/nr_ra_procedures.c
1508
  ${NR_UE_MAC_DIR}/nr_ue_power_procedures.c
1509
)
1510

thomasl's avatar
thomasl committed
1511 1512 1513
set (ENB_APP_SRC
  ${OPENAIR2_DIR}/ENB_APP/enb_app.c
  ${OPENAIR2_DIR}/ENB_APP/enb_config.c
1514 1515
  ${OPENAIR2_DIR}/ENB_APP/enb_config_SL.c
  ${OPENAIR2_DIR}/ENB_APP/enb_config_eMTC.c
1516
  ${OPENAIR2_DIR}/ENB_APP/RRC_config_tools.c
thomasl's avatar
thomasl committed
1517 1518
  )

1519 1520
set (GNB_APP_SRC
  ${OPENAIR2_DIR}/GNB_APP/gnb_app.c
1521
  ${OPENAIR2_DIR}/E1AP/e1ap_setup.c
1522 1523
  ${OPENAIR2_DIR}/GNB_APP/gnb_config.c
  )
1524 1525 1526 1527 1528

set (MCE_APP_SRC
  ${OPENAIR2_DIR}/MCE_APP/mce_app.c
  ${OPENAIR2_DIR}/MCE_APP/mce_config.c
  )
Mahesh's avatar
Mahesh committed
1529 1530 1531 1532
set (MISC_NFAPI_LTE
 ${OPENAIR1_DIR}/SCHED/nfapi_lte_dummy.c
 )

1533
add_library(MISC_NFAPI_LTE_LIB ${MISC_NFAPI_LTE})
1534

Mahesh's avatar
Mahesh committed
1535 1536 1537 1538
set (MISC_NFAPI_NR
 ${OPENAIR1_DIR}/SCHED/nfapi_nr_dummy.c
 )

1539 1540
add_library(MISC_NFAPI_NR_LIB ${MISC_NFAPI_NR})

1541 1542 1543
add_library(L2
  ${L2_SRC}
  ${MAC_SRC}
1544
  ${ENB_APP_SRC}
1545
  ${MCE_APP_SRC}
1546
  )
Robert Schmidt's avatar
Robert Schmidt committed
1547
target_link_libraries(L2 PRIVATE x2ap s1ap lte_rrc m2ap)
1548
target_link_libraries(L2 PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
thomasl's avatar
thomasl committed
1549

1550
add_library(MAC_NR ${MAC_NR_SRC})
1551
target_link_libraries(MAC_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1552

1553
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
1554
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
1555

1556
add_library(L2_LTE ${L2_LTE_SRC})
1557
target_link_libraries(L2_LTE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
Cedric Roux's avatar
Cedric Roux committed
1558

Guy De Souza's avatar
Guy De Souza committed
1559 1560 1561
add_library(L2_NR
  ${L2_NR_SRC}
  ${MAC_NR_SRC}
1562 1563
  ${GNB_APP_SRC}
  )
1564

1565 1566 1567 1568 1569
add_library(e1_if
  ${NR_RRC_DIR}/cucp_cuup_direct.c
  ${NR_RRC_DIR}/cucp_cuup_e1ap.c
  )

1570
target_link_libraries(e1_if PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs asn1_f1ap e1ap GTPV1U)
1571 1572 1573 1574 1575

add_library(e1_pdcp_if
  ${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_e1_api.c
  )

1576
target_link_libraries(e1_pdcp_if PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1577 1578

target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap)
1579

1580 1581 1582 1583 1584 1585
add_library(L2_LTE_NR
  ${L2_RRC_SRC}
  ${MAC_SRC}
  ${ENB_APP_SRC}
  ${MCE_APP_SRC}
)
1586

1587
target_link_libraries(L2_LTE_NR PRIVATE f1ap s1ap nr_rrc)
1588

1589 1590 1591 1592
add_library(L2_UE
  ${L2_SRC_UE}
  ${MAC_SRC_UE}
)
1593
target_link_libraries(L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1594

1595 1596 1597 1598
add_library(L2_UE_LTE_NR
  ${L2_RRC_SRC_UE}
  ${MAC_SRC_UE}
)
1599
target_link_libraries(L2_UE_LTE_NR PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1600

laurent's avatar
laurent committed
1601 1602 1603 1604
if (NOT ${NOS1})
target_compile_definitions(L2_UE PUBLIC -DPDCP_USE_NETLINK)
endif()

1605
target_link_libraries(L2_UE PRIVATE asn1_lte_rrc_hdrs)
1606

1607
add_library( NR_L2_UE ${NR_L2_SRC_UE} ${MAC_NR_SRC_UE} )
1608
target_link_libraries(NR_L2_UE PRIVATE f1ap)
1609
target_link_libraries(NR_L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1610

1611 1612 1613 1614
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
)
1615
target_link_libraries(MAC_NR_COMMON PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1616 1617

include_directories("${OPENAIR2_DIR}/NR_UE_PHY_INTERFACE")
1618
include_directories("${OPENAIR2_DIR}/LAYER2")
1619 1620
include_directories("${OPENAIR1_DIR}/SCHED_NR_UE")
#include_directories("${NFAPI_USER_DIR}"")
1621

thomasl's avatar
thomasl committed
1622 1623 1624 1625 1626
# L3 Libs
##########################

# CN libs
##########################
1627

Laurent THOMAS's avatar
Laurent THOMAS committed
1628
add_library (GTPV1U
Laurent Thomas's avatar
Laurent Thomas committed
1629
  ${NR_RRC_DIR}/rrc_gNB_GTPV1U.c
thomasl's avatar
thomasl committed
1630
  ${RRC_DIR}/rrc_eNB_GTPV1U.c
1631 1632
  ${OPENAIR3_DIR}/ocp-gtpu/gtp_itf.cpp
  )
1633
target_link_libraries(GTPV1U PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1634
target_link_libraries(GTPV1U PRIVATE SIMU)
Laurent Thomas's avatar
Laurent Thomas committed
1635
include_directories(${OPENAIR3_DIR}/ocp-gtp)
Laurent's avatar
Laurent committed
1636

1637 1638 1639 1640 1641
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})
1642
target_link_libraries(MME_APP PRIVATE m2ap m3ap)
1643
target_link_libraries(MME_APP PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1644

thomasl's avatar
thomasl committed
1645
set(SCTP_SRC
gauthier's avatar
gauthier committed
1646 1647 1648
  ${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
1649
)
1650
add_library(SCTP_CLIENT ${SCTP_SRC})
1651
target_link_libraries(SCTP_CLIENT PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1652

gauthier's avatar
gauthier committed
1653
set(NAS_SRC ${OPENAIR3_DIR}/NAS/)
gauthier's avatar
 
gauthier committed
1654 1655 1656 1657 1658
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
  )
1659

gauthier's avatar
 
gauthier committed
1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690
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
1691
)
1692

thomasl's avatar
thomasl committed
1693
set(libnas_esm_msg_OBJS
gauthier's avatar
 
gauthier committed
1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716
  ${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
1717 1718 1719
)

set(libnas_ies_OBJS
gauthier's avatar
 
gauthier committed
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
  ${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
1763
  ${NAS_SRC}COMMON/IES/MsNetworkFeatureSupport.c
gauthier's avatar
 
gauthier committed
1764 1765 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
  ${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
1798 1799 1800
)

set (libnas_utils_OBJS
gauthier's avatar
 
gauthier committed
1801 1802 1803 1804 1805 1806 1807 1808
  ${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
1809
)
1810

1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890
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
1891
  ${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishmentAccept.c
1892
  ${NAS_SRC}COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.c
1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925
  )

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}
1926
  $<TARGET_OBJECTS:ds>
1927
  )
1928
target_include_directories(LIB_NAS_SIMUE PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1929
target_link_libraries(LIB_NAS_SIMUE PRIVATE lte_rrc)
1930 1931 1932



1933
set(NAS_SIM_LIB LIB_NAS_SIMUE)
1934
target_link_libraries(LIB_NAS_SIMUE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951

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}
1952
  $<TARGET_OBJECTS:ds>
1953
  )
1954
target_include_directories(LIB_NAS_UE PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
1955
set(NAS_UE_LIB LIB_NAS_UE)
1956
target_link_libraries(LIB_NAS_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
1957 1958 1959 1960 1961 1962 1963 1964 1965

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

oai's avatar
oai committed
1967 1968 1969
# nbiot
add_definitions("-DNUMBER_OF_UE_MAX_NB_IoT=16")
set (NBIOT_SOURCES
1970 1971
  ${OPENAIR2_DIR}/ENB_APP/NB_IoT_config.c
  )
oai's avatar
oai committed
1972 1973 1974 1975
add_library(NB_IoT MODULE ${NBIOT_SOURCES} )

# shared library loader
set (SHLIB_LOADER_SOURCES
1976 1977
  ${OPENAIR_DIR}/common/utils/load_module_shlib.c
  )
thomasl's avatar
thomasl committed
1978

laurent's avatar
laurent committed
1979
add_library(LIB_5GNAS_GNB
1980 1981 1982 1983 1984
  ${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
  )
1985 1986

target_include_directories(LIB_5GNAS_GNB PRIVATE ${OPENAIR_DIR}/common/utils/ds/)
mir's avatar
mir committed
1987
target_link_libraries(LIB_5GNAS_GNB PRIVATE SECURITY ${CRYPTO_LIBRARIES})
1988
target_link_libraries(LIB_5GNAS_GNB PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
laurent's avatar
laurent committed
1989

thomasl's avatar
thomasl committed
1990 1991
# Simulation library
##########################
1992
set (SIMUSRC
laurent's avatar
laurent committed
1993 1994 1995 1996 1997
  ${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
1998 1999 2000
  ${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
2001 2002 2003
  ${OPENAIR1_DIR}/SIMULATION/RF/rf.c
  ${OPENAIR1_DIR}/SIMULATION/RF/dac.c
  ${OPENAIR1_DIR}/SIMULATION/RF/adc.c
2004 2005 2006
)
add_library(SIMU STATIC ${SIMUSRC} )
target_include_directories(SIMU PUBLIC ${OPENAIR1_DIR}/SIMULATION/TOOLS ${OPENAIR1_DIR}/SIMULATION/RF)
2007

2008 2009 2010 2011 2012
# 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")
2013 2014 2015
  set(QTSCOPE_SOURCE_NR
    ${OPENAIR1_DIR}/PHY/TOOLS/nr_phy_qt_scope.cpp
    ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c)
2016 2017 2018 2019
  # 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)
2020
  target_link_libraries(nrqtscope PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2021 2022
endif()

2023 2024 2025 2026
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
2027
)
2028
target_link_libraries(SIMU_ETH PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2029

2030 2031 2032 2033 2034 2035 2036
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")

2037 2038
list(APPEND ATLAS_LIBRARIES lapack lapacke)

yilmazt's avatar
yilmazt committed
2039

2040
add_library(rfsimulator MODULE
francescomani's avatar
francescomani committed
2041 2042
  ${OPENAIR_DIR}/radio/rfsimulator/simulator.c
  ${OPENAIR_DIR}/radio/rfsimulator/apply_channelmod.c
2043
  ${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
laurent's avatar
laurent committed
2044
	)
2045
target_link_libraries(rfsimulator PRIVATE SIMU ${ATLAS_LIBRARIES})
laurent's avatar
laurent committed
2046

2047
add_library(oai_iqplayer MODULE
francescomani's avatar
francescomani committed
2048
	${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c
2049
	)
2050 2051
set(CMAKE_MODULE_PATH "${OPENAIR_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODULE_PATH}")

2052 2053
#include T directory even if the T is off because T macros are in the code
#no matter what
2054
include_directories("${OPENAIR_DIR}/common/utils/T")
2055 2056 2057

if (${T_TRACER})
  set(T_SOURCE
2058
      ${OPENAIR_DIR}/common/utils/T/T_IDs.h
2059 2060
      ${OPENAIR_DIR}/common/utils/T/T.c
      ${OPENAIR_DIR}/common/utils/T/local_tracer.c)
2061
  set(T_LIB "rt")
2062 2063 2064 2065 2066 2067
endif (${T_TRACER})

#Some files in the T directory are generated.
#This rule and the following deal with it.
add_custom_command (
  OUTPUT ${OPENAIR_DIR}/common/utils/T/T_IDs.h
laurent's avatar
laurent committed
2068
  COMMAND make check_vcd
2069 2070
  WORKING_DIRECTORY ${OPENAIR_DIR}/common/utils/T
  DEPENDS ${OPENAIR_DIR}/common/utils/T/T_messages.txt
2071 2072
          ${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
          ${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.h
2073 2074
  )

Laurent THOMAS's avatar
Laurent THOMAS committed
2075 2076 2077 2078
execute_process (
  COMMAND make check_vcd
  WORKING_DIRECTORY ${OPENAIR_DIR}/common/utils/T
)
2079 2080 2081 2082 2083 2084 2085 2086 2087 2088
#This rule is specifically needed to generate T files
#before anything else in a project that uses the T.
#See below, there are some 'add_dependencies' showing that.
#Basically we create a custom target and we make other
#targets depend on it. That forces cmake to generate
#T files before anything else.
add_custom_target (
  generate_T
  DEPENDS ${OPENAIR_DIR}/common/utils/T/T_IDs.h
)
2089

thomasl's avatar
thomasl committed
2090 2091 2092
# Hack on a test of asn1c version (already dirty)
add_definitions(-DASN1_MINIMUM_VERSION=924)

2093 2094
#################################
# add executables for operation
2095
#################################
laurent's avatar
laurent committed
2096 2097 2098 2099 2100
add_library(minimal_lib
  ${OPENAIR_DIR}/common/utils/LOG/log.c
  ${OPENAIR_DIR}/common/utils/minimal_stub.c
  ${T_SOURCE}
  )
2101
target_link_libraries(minimal_lib pthread dl ${T_LIB} CONFIG_LIB)
2102

Kujou's avatar
Kujou committed
2103
add_executable(nfapi_test
Kujou's avatar
Kujou committed
2104 2105
  ${OPENAIR_DIR}/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c
  )
laurent's avatar
laurent committed
2106 2107

add_executable(replay_node
francescomani's avatar
francescomani committed
2108
  ${OPENAIR_DIR}/radio/rfsimulator/stored_node.c
laurent's avatar
laurent committed
2109 2110 2111 2112 2113 2114
  )
target_link_libraries (replay_node minimal_lib)

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

2116
add_executable(test5Gnas
2117 2118
  ${OPENAIR_DIR}/openair3/TEST/test5Gnas.c
)
Laurent's avatar
Laurent committed
2119
target_link_libraries (test5Gnas LIB_5GNAS_GNB CONFIG_LIB minimal_lib )
2120 2121


2122 2123
# lte-softmodem is both eNB and UE implementation
###################################################
2124

2125
add_executable(lte-softmodem
2126 2127 2128 2129
  ${OPENAIR_DIR}/executables/lte-enb.c
  ${OPENAIR_DIR}/executables/lte-ru.c
  ${OPENAIR_DIR}/executables/ru_control.c
  ${OPENAIR_DIR}/executables/lte-softmodem.c
2130
  ${OPENAIR_DIR}/executables/softmodem-common.c
oai's avatar
oai committed
2131
  ${OPENAIR2_DIR}/ENB_APP/NB_IoT_interface.c
2132 2133
  ${OPENAIR_DIR}/executables/create_tasks.c
  ${OPENAIR_DIR}/executables/create_tasks_mbms.c
francescomani's avatar
francescomani committed
2134 2135
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2136 2137
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
gauthier's avatar
gauthier committed
2138
  ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
2139
  ${PHY_INTERFACE_DIR}/queue_t.c
2140 2141
  ${OPENAIR_DIR}/common/utils/lte/ue_power.c
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2142
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2143
  ${T_SOURCE}
oai's avatar
oai committed
2144
  ${SHLIB_LOADER_SOURCES}
2145
  )
2146
add_dependencies(lte-softmodem oai_iqplayer)
navid's avatar
navid committed
2147

2148
target_link_libraries(lte-softmodem PRIVATE
2149
  -Wl,--start-group
mir's avatar
mir committed
2150
  lte_rrc nr_rrc s1ap m2ap x2ap m3ap GTPV1U SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB SCHED_RU_LIB
2151
  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
2152
  ${NAS_UE_LIB} ITTI SIMU SIMU_ETH
2153
  -Wl,--end-group z dl)
2154

Robert Schmidt's avatar
Robert Schmidt committed
2155
target_link_libraries(lte-softmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp)
2156
target_link_libraries(lte-softmodem PRIVATE ${T_LIB})
2157
target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2158

2159
add_executable(oairu
2160 2161
  ${OPENAIR_DIR}/executables/lte-ru.c
  ${OPENAIR_DIR}/executables/ru_control.c
francescomani's avatar
francescomani committed
2162 2163
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2164 2165 2166 2167
  ${OPENAIR_DIR}/executables/softmodem-common.c
  ${OPENAIR_DIR}/openair1/SCHED/phy_procedures_lte_common.c
  ${OPENAIR_DIR}/executables/main_ru.c
  ${T_SOURCE}
2168
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2169 2170
  ${SHLIB_LOADER_SOURCES}
)
2171
target_link_libraries(oairu PRIVATE
2172
  -Wl,--start-group
2173
  SCHED_RU_LIB
2174
  PHY_COMMON PHY_RU UTIL
2175
  -Wl,--end-group z dl)
2176

Robert Schmidt's avatar
Robert Schmidt committed
2177
target_link_libraries(oairu PRIVATE pthread m CONFIG_LIB rt ${T_LIB})
2178
target_link_libraries(oairu PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2179

2180 2181
# 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
2182
                      asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
2183

Raymond Knopp's avatar
Raymond Knopp committed
2184

2185 2186 2187 2188
# lte-uesoftmodem is  UE implementation
#######################################

add_executable(lte-uesoftmodem
2189 2190
  ${OPENAIR_DIR}/executables/lte-ue.c
  ${OPENAIR_DIR}/executables/lte-uesoftmodem.c
2191
  ${OPENAIR_DIR}/executables/softmodem-common.c
2192
  ${OPENAIR_DIR}/executables/create_tasks_ue.c
francescomani's avatar
francescomani committed
2193 2194
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2195 2196
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
2197
  ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
2198 2199
  ${OPENAIR_DIR}/common/utils/lte/ue_power.c
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2200
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2201 2202 2203 2204
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
  )

laurent's avatar
laurent committed
2205 2206 2207
if (NOT ${NOS1})
	target_compile_definitions(lte-uesoftmodem PRIVATE -DPDCP_USE_NETLINK)
endif()
2208
target_link_libraries(lte-uesoftmodem PRIVATE
2209
  -Wl,--start-group
2210
  lte_rrc nr_rrc s1ap x2ap m2ap m3ap
mir's avatar
mir committed
2211
  SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
2212
  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
Robert Schmidt's avatar
Robert Schmidt committed
2213
  ${NAS_UE_LIB} ITTI ${ATLAS_LIBRARIES}
2214 2215
  -Wl,--end-group z dl)

Robert Schmidt's avatar
Robert Schmidt committed
2216
target_link_libraries(lte-uesoftmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${ATLAS_LIBRARIES})
2217
target_link_libraries(lte-uesoftmodem PRIVATE ${T_LIB})
2218
target_link_libraries(lte-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2219

2220 2221
# 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
2222
                      asn1_lte_rrc asn1_s1ap asn1_m2ap asn1_m3ap asn1_x2ap)
2223

2224 2225 2226 2227
# nr-softmodem
###################################################

add_executable(nr-softmodem
2228
  ${rrc_h}
2229
  ${nr_rrc_h}
2230
  ${s1ap_h}
Raymond Knopp's avatar
Raymond Knopp committed
2231
#  ${OPENAIR_BIN_DIR}/messages_xml.h
laurent's avatar
laurent committed
2232 2233 2234
  ${OPENAIR_DIR}/executables/nr-gnb.c
  ${OPENAIR_DIR}/executables/nr-ru.c
  ${OPENAIR_DIR}/executables/nr-softmodem.c
2235
  ${OPENAIR_DIR}/executables/softmodem-common.c
francescomani's avatar
francescomani committed
2236 2237
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2238 2239
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
Raymond Knopp's avatar
Raymond Knopp committed
2240 2241
  ${OPENAIR_DIR}/common/utils/lte/ue_power.c
  ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2242
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2243
  ${PHY_INTERFACE_DIR}/queue_t.c
2244
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2245 2246 2247 2248
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
  )

2249
target_link_libraries(nr-softmodem PRIVATE
2250
  -Wl,--start-group
mir's avatar
mir committed
2251
  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
2252
  ITTI ${NAS_UE_LIB} lte_rrc nr_rrc
2253
  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
2254
  x2ap f1ap m2ap m3ap e1ap
2255 2256
  -Wl,--end-group z dl)

Robert Schmidt's avatar
Robert Schmidt committed
2257
target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${ATLAS_LIBRARIES})
2258
target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
2259
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2260

2261
add_dependencies(nr-softmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc)
2262

2263 2264 2265
if (ENABLE_LDPC_T1)
  add_dependencies(nr-softmodem ldpc_t1)
endif()
2266

2267 2268
# force the generation of ASN.1 so that we don't need to wait during the build
target_link_libraries(nr-softmodem PRIVATE
2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281
  asn1_lte_rrc asn1_nr_rrc asn1_s1ap asn1_ngap asn1_m2ap asn1_m3ap asn1_x2ap asn1_f1ap asn1_lpp)

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

2283 2284
target_link_libraries(nr-cuup PRIVATE
                      CONFIG_LIB ITTI SCTP_CLIENT
2285
                      GTPV1U e1ap e1_pdcp_if f1ap SIMU_ETH
mir's avatar
mir committed
2286
                      SECURITY ${OPENSSL_LIBRARIES} crypt z sctp dl pthread)
2287
target_link_libraries(nr-cuup PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
mir's avatar
mir committed
2288
                     
2289 2290 2291 2292 2293 2294
# nr-uesoftmodem is  UE implementation
#######################################

add_executable(nr-uesoftmodem
  ${rrc_h}
  ${s1ap_h}
Raymond Knopp's avatar
Raymond Knopp committed
2295
#  ${OPENAIR_BIN_DIR}/messages_xml.h
laurent's avatar
fixes  
laurent committed
2296
  ${OPENAIR_DIR}/executables/nr-uesoftmodem.c
laurent's avatar
laurent committed
2297
  ${OPENAIR_DIR}/executables/nr-ue.c
2298
  ${OPENAIR_DIR}/executables/softmodem-common.c
francescomani's avatar
francescomani committed
2299 2300
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
  ${OPENAIR_DIR}/radio/COMMON/record_player.c
2301
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
cig's avatar
cig committed
2302
  ${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
2303
  ${OPENAIR2_DIR}/RRC/NAS/rb_config.c
2304
  ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
2305
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2306
  ${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
2307 2308 2309 2310
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
  )

2311
target_link_libraries(nr-uesoftmodem PRIVATE
2312
  -Wl,--start-group
mir's avatar
mir committed
2313
  nr_rrc SECURITY UTIL HASHTABLE SCHED_RU_LIB SCHED_NR_UE_LIB
2314 2315
  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
2316
  ITTI ${ATLAS_LIBRARIES} LIB_5GNAS_GNB LIB_NAS_SIMUE ${NAS_SIM_LIB} SIMU SIMU_ETH
2317 2318
  -Wl,--end-group z dl)

Robert Schmidt's avatar
Robert Schmidt committed
2319
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${ATLAS_LIBRARIES})
2320
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
2321
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2322

2323
add_dependencies( nr-uesoftmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc )
2324 2325 2326 2327
if (ENABLE_LDPC_CUDA)
   add_dependencies(nr-uesoftmodem ldpc_cuda)
   add_dependencies(nr-softmodem ldpc_cuda)
endif()
2328

2329 2330 2331 2332
# 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)

2333 2334 2335 2336
###################################"
# Addexecutables for tests
####################################

2337

2338 2339 2340
# Unitary tests for each piece of L1: example, mbmssim is MBMS L1 simulator
#####################################

2341 2342 2343 2344 2345 2346 2347
#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
  ${T_SOURCE}
  )
target_link_libraries (dlsim_tm4
2348
  -Wl,--start-group SIMU UTIL SCHED_LIB SCHED_RU_LIB PHY ITTI -Wl,--end-group
2349
  pthread m rt CONFIG_LIB ${ATLAS_LIBRARIES} ${T_LIB}
2350 2351
  )

2352
add_executable(rftest
2353 2354
  ${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
  ${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_scope.c
francescomani's avatar
francescomani committed
2355
  ${OPENAIR_DIR}/radio/COMMON/common_lib.c
2356 2357 2358
  ${OPENAIR_DIR}/executables/softmodem-common.c
  ${SHLIB_LOADER_SOURCES}
)
2359
target_link_libraries(rftest PRIVATE minimal_lib CONFIG_LIB PHY_NR_COMMON UTIL pthread dl m ${T_LIB} )
2360
target_link_libraries(rftest PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
2361

2362
add_executable(polartest
laurent's avatar
laurent committed
2363
  ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/polartest.c
Raymond Knopp's avatar
Raymond Knopp committed
2364
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2365 2366 2367
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
  )
2368
target_link_libraries(polartest PRIVATE
2369
  -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_COMMON PHY_NR_UE CONFIG_LIB -Wl,--end-group
yilmazt's avatar
yilmazt committed
2370 2371
  m pthread ${ATLAS_LIBRARIES} dl
  )
2372

2373
add_executable(smallblocktest
2374
  ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/smallblocktest.c
2375
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2376 2377
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
2378
)
2379

2380
target_link_libraries(smallblocktest PRIVATE
2381
  -Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON CONFIG_LIB -Wl,--end-group
yilmazt's avatar
yilmazt committed
2382
  m pthread ${ATLAS_LIBRARIES} dl
2383
)
2384

2385

2386 2387 2388 2389 2390 2391
add_executable(ldpctest
   ${PHY_NR_CODINGIF}
   ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c
   ${T_SOURCE}
   ${SHLIB_LOADER_SOURCES}
   )
2392

2393
add_dependencies( ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc )
2394 2395 2396
if (ENABLE_LDPC_CUDA)
  add_dependencies(ldpctest ldpc_cuda)
endif()
2397
target_link_libraries(ldpctest PRIVATE
2398
  -Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON CONFIG_LIB -Wl,--end-group
yilmazt's avatar
yilmazt committed
2399 2400
  m pthread ${ATLAS_LIBRARIES} dl
  )
2401

2402 2403
add_executable(nr_dlschsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlschsim.c
2404
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2405
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2406 2407 2408
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
  )
2409
target_link_libraries(nr_dlschsim PRIVATE
2410
  -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
2411
  m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI dl
yilmazt's avatar
yilmazt committed
2412
  )
2413
target_link_libraries(nr_dlschsim PRIVATE asn1_nr_rrc_hdrs)
2414

2415 2416
add_executable(nr_pbchsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pbchsim.c
2417
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2418
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2419 2420 2421
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
  )
2422
target_link_libraries(nr_pbchsim PRIVATE
2423
  -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
2424
  m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI dl
2425
)
2426
target_link_libraries(nr_pbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2427

2428

2429
#PUCCH ---> Prashanth
2430 2431
add_executable(nr_pucchsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pucchsim.c
2432
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2433
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
yilmazt's avatar
yilmazt committed
2434 2435 2436
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
  )
2437
target_link_libraries(nr_pucchsim PRIVATE
2438
  -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
2439
  m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI dl
2440
)
2441
target_link_libraries(nr_pucchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2442

laurent's avatar
laurent committed
2443
add_executable(nr_dlsim
yilmazt's avatar
yilmazt committed
2444
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
2445
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2446
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2447
  ${OPENAIR_DIR}/executables/softmodem-common.c
2448
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
2449
  ${NR_UE_RRC_DIR}/rrc_nsa.c
2450
  ${NFAPI_USER_DIR}/nfapi.c
2451
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
2452
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2453 2454
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
2455
  )
2456
target_link_libraries(nr_dlsim PRIVATE
mir's avatar
mir committed
2457
  -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_NR MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
2458
  m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI ${OPENSSL_LIBRARIES} dl
yilmazt's avatar
yilmazt committed
2459
  )
2460
target_link_libraries(nr_dlsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2461

2462
add_executable(nr_prachsim
2463
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/prachsim.c
2464
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2465
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2466 2467
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES})
2468
target_link_libraries(nr_prachsim PRIVATE
2469
  -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
2470
  m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI ${OPENSSL_LIBRARIES} dl)
2471
target_link_libraries(nr_prachsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2472

Khalid Ahmed's avatar
Khalid Ahmed committed
2473 2474
add_executable(nr_ulschsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulschsim.c
2475
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
Sakthivel Velumani's avatar
Sakthivel Velumani committed
2476
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2477
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2478 2479 2480
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
  )
2481
target_link_libraries(nr_ulschsim PRIVATE
2482
  -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
2483
  m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI dl
2484
)
2485
target_link_libraries(nr_ulschsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
yilmazt's avatar
yilmazt committed
2486

2487 2488
add_executable(nr_ulsim
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
2489
  ${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
2490
  ${OPENAIR_DIR}/common/utils/nr/nr_common.c
2491
  ${OPENAIR_DIR}/executables/softmodem-common.c
2492
  ${OPENAIR2_DIR}/RRC/NAS/nas_config.c
2493
  ${NR_UE_RRC_DIR}/rrc_nsa.c
2494
  ${NFAPI_USER_DIR}/nfapi.c
2495
  ${NFAPI_USER_DIR}/gnb_ind_vars.c
2496
  ${PHY_INTERFACE_DIR}/queue_t.c
yilmazt's avatar
yilmazt committed
2497 2498 2499
  ${T_SOURCE}
  ${SHLIB_LOADER_SOURCES}
  )
2500

2501 2502 2503
if (ENABLE_LDPC_T1)
  add_dependencies(nr_ulsim ldpc_t1)
endif()
2504

2505
target_link_libraries(nr_ulsim PRIVATE
mir's avatar
mir committed
2506
  -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_NR MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
2507
  m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI ${OPENSSL_LIBRARIES} dl
yilmazt's avatar
yilmazt committed
2508
  )
2509
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
2510 2511

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

2513 2514
  add_executable(${myExe}
    ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
2515 2516
    ${OPENAIR_DIR}/common/utils/lte/ue_power.c
    ${OPENAIR_DIR}/common/utils/lte/prach_utils.c
2517
    ${OPENAIR1_DIR}/PHY/INIT/lte_param_init.c
2518
    ${T_SOURCE}
2519
    ${SHLIB_LOADER_SOURCES}
frtabu's avatar
frtabu committed
2520
    ${NFAPI_USER_DIR}/nfapi.c
2521
    )
2522
  target_link_libraries (${myExe} PRIVATE
2523
    -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
2524
    pthread m rt CONFIG_LIB ${ATLAS_LIBRARIES} ${T_LIB} dl
2525
    )
2526
  target_link_libraries(${myExe} PRIVATE asn1_lte_rrc_hdrs)
2527

2528
endforeach(myExe)
2529

gauthier's avatar
gauthier committed
2530 2531 2532 2533 2534
#unitary tests for Core NEtwork pieces
#################################
foreach(myExe s1ap
    secu_knas_encrypt_eia1
    secu_kenb
2535
    aes128_ctr
gauthier's avatar
gauthier committed
2536 2537 2538 2539 2540 2541 2542 2543 2544
    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}
mir's avatar
mir committed
2545
    -Wl,--start-group SECURITY UTIL -Wl,--end-group m rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} CONFIG_LIB
gauthier's avatar
gauthier committed
2546 2547 2548
    )
endforeach(myExe)

2549 2550 2551 2552
# to be added
#../targets/TEST/PDCP/test_pdcp.c
#../targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c

2553 2554
#ensure that the T header files are generated before targets depending on them
if (${T_TRACER})
2555 2556
  foreach(i
        #all "add_executable" definitions (except tests, rb_tool, updatefw)
2557
        lte-softmodem lte-uesoftmodem nr-softmodem
Robert Schmidt's avatar
Robert Schmidt committed
2558
        nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
2559
        ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
2560
        syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim
2561
        nr_ulschsim ldpctest polartest smallblocktest cu_test du_test
2562
        #all "add_library" definitions
2563
        ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
Robert Schmidt's avatar
Robert Schmidt committed
2564
        params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
Robert Schmidt's avatar
Robert Schmidt committed
2565
        oai_eth_transpro oai_mobipass coding HASHTABLE UTIL OMG_SUMO
mir's avatar
mir committed
2566
        SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
2567
        NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
cig's avatar
cig committed
2568
        PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
2569
        L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON MAC_NR MAC_UE_NR ngap
2570
        CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU SIMU_ETH OPENAIR0_LIB
2571
        ldpc_orig ldpc_optim ldpc_optim8seg ldpc dfts)
2572 2573 2574 2575
    if (TARGET ${i})
      add_dependencies(${i} generate_T)
    endif()
  endforeach(i)
2576
endif (${T_TRACER})
gauthier's avatar
 
gauthier committed
2577

2578 2579 2580 2581 2582 2583 2584
##################################################
# Generated specific cases is not regular code
###############################################

################
# Kernel modules
###############
2585 2586 2587 2588 2589
# 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
######################################

2590
# retrieve the compiler options to send it to gccxml
2591
get_directory_property(DirDefs COMPILE_DEFINITIONS )
2592
foreach( d ${DirDefs} )
2593
  set(module_cc_opt "${module_cc_opt} -D${d}")
2594 2595 2596
endforeach()
get_directory_property( DirDefs INCLUDE_DIRECTORIES )
foreach( d ${DirDefs} )
2597
  set(module_cc_opt "${module_cc_opt} -I${d}")
2598 2599 2600
endforeach()

EXECUTE_PROCESS(COMMAND uname -r
2601 2602
  OUTPUT_VARIABLE os_release
  OUTPUT_STRIP_TRAILING_WHITESPACE)
2603 2604 2605 2606 2607 2608 2609 2610 2611
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()
2612
  CONFIGURE_FILE(${OPENAIR_CMAKE}/tools/Kbuild.cmake ${OPENAIR_BIN_DIR}/${name}/Kbuild)
2613
  add_custom_command(OUTPUT ${name}.ko
2614
    COMMAND make -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name}
2615 2616 2617 2618 2619 2620 2621 2622
    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)

2623
# nashmesh module
2624 2625
################
list(APPEND nasmesh_src device.c common.c ioctl.c classifier.c tool.c mesh.c)
2626
set(module_cc_opt "${module_cc_opt} -DNAS_NETLINK -DPDCP_USE_NETLINK")
2627 2628 2629 2630 2631
# 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()
2632
make_driver(nasmesh  ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH ${nasmesh_src})
2633

2634 2635 2636 2637 2638 2639 2640 2641 2642 2643
# 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
2644
# ???
2645
####################
2646 2647 2648 2649
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()
2650
make_driver(oai_nw_drv ${OPENAIR2_DIR}/NETWORK_DRIVER/LTE ${oai_nw_drv_src})
2651 2652


2653 2654 2655 2656 2657 2658 2659 2660
# 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})

2661
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
2662

2663
add_subdirectory(common)
2664
add_subdirectory(doc)
2665
add_subdirectory(openair1)
2666
add_subdirectory(openair2)
2667
add_subdirectory(openair3)