CMakeLists.txt 93.7 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
Cedric Roux's avatar
Cedric Roux committed
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
# */

knopp's avatar
knopp committed
22
# Author: laurent THOMAS, Lionel GAUTHIER
thomasl's avatar
thomasl committed
23 24 25

cmake_minimum_required (VERSION 2.8)

26
#############################################
thomasl's avatar
thomasl committed
27 28 29
# Base directories, compatible with legacy OAI building
################################################
set (OPENAIR_DIR     $ENV{OPENAIR_DIR})
Cedric Roux's avatar
Cedric Roux committed
30 31
set (NFAPI_DIR       ${OPENAIR_DIR}/nfapi/open-nFAPI)
set (NFAPI_USER_DIR  ${OPENAIR_DIR}/nfapi/oai_integration)
thomasl's avatar
thomasl committed
32 33 34 35
set (OPENAIR1_DIR    ${OPENAIR_DIR}/openair1)
set (OPENAIR2_DIR    ${OPENAIR_DIR}/openair2)
set (OPENAIR3_DIR    ${OPENAIR_DIR}/openair3)
set (OPENAIR_TARGETS ${OPENAIR_DIR}/targets)
36
set (OPENAIR3_DIR    ${OPENAIR_DIR}/openair3)
thomasl's avatar
thomasl committed
37 38 39 40 41
set (OPENAIR_CMAKE   ${OPENAIR_DIR}/cmake_targets)
set (OPENAIR_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})

project (OpenAirInterface)

thomasl's avatar
thomasl committed
42 43 44
###########################################
# macros to define options as there is numerous options in oai
################################################
thomasl's avatar
thomasl committed
45 46 47 48 49 50 51 52 53 54
macro(add_option name val helpstr)
  if(DEFINED ${name})
    set(value ${${name}})
  else(DEFINED ${name})
    set(value ${val})
  endif()
  set(${name} ${value} CACHE STRING "${helpstr}")
  add_definitions("-D${name}=${value}")
endmacro(add_option)

thomasl's avatar
thomasl committed
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 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
macro(add_boolean_option name val helpstr)
  if(DEFINED ${name})
    set(value ${${name}})
  else(DEFINED ${name})
    set(value ${val})
  endif()
  set(${name} ${value} CACHE STRING "${helpstr}")
  set_property(CACHE ${name} PROPERTY TYPE BOOL)
  if (${value})
    add_definitions("-D${name}")
  endif (${value})
endmacro(add_boolean_option)

macro(add_integer_option name val helpstr)
  if(DEFINED ${name})
    set(value ${${name}})
  else(DEFINED ${name})
    set(value ${val})
  endif()
  set(${name} ${value} CACHE STRING "${helpstr}")
  add_definitions("-D${name}=${value}")
endmacro(add_integer_option)

macro(add_list1_option name val helpstr)
  if(DEFINED ${name})
    set(value ${${name}})
  else(DEFINED ${name})
    set(value ${val})
  endif()
  set(${name} ${value} CACHE STRING "${helpstr}")
  set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
  if(NOT "${value}" STREQUAL "False")
    add_definitions("-D${name}=${value}")
  endif()
endmacro(add_list1_option)

macro(add_list2_option name val helpstr)
  if(DEFINED ${name})
    set(value ${${name}})
  else(DEFINED ${name})
    set(value ${val})
  endif()
  set(${name} ${value} CACHE STRING "${helpstr}")
  set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
  if(NOT "${value}" STREQUAL "False")
    add_definitions("-D${value}=1")
  endif()
endmacro(add_list2_option)

104 105 106 107 108 109 110 111 112 113 114 115
macro(add_list_string_option name val helpstr)
  if(DEFINED ${name})
    set(value ${${name}})
  else(DEFINED ${name})
    set(value ${val})
  endif()
  set(${name} ${value} CACHE STRING "${helpstr}")
  set_property(CACHE ${name} PROPERTY STRINGS ${ARGN})
  if(NOT "${value}" STREQUAL "False")
    add_definitions("-D${name}=\"${value}\"")
  endif()
endmacro(add_list_string_option)
116 117 118 119 120 121 122 123

function(make_version VERSION_VALUE)
  math(EXPR RESULT "0")
  foreach (ARG ${ARGN})
    math(EXPR RESULT "${RESULT} * 16 + ${ARG}")
  endforeach()
  set(${VERSION_VALUE} "${RESULT}" PARENT_SCOPE)
endfunction()
124
####################################################
thomasl's avatar
thomasl committed
125 126
# compilation flags
#############################################
127

128
#set(CMAKE_BUILD_TYPE "Debug")
thomasl's avatar
thomasl committed
129 130 131
if (CMAKE_BUILD_TYPE STREQUAL "")
   set(CMAKE_BUILD_TYPE "RelWithDebInfo")
endif()
132
message("CMAKE_BUILD_TYPE is ${CMAKE_BUILD_TYPE}")
133
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
134

135 136
Message("Architecture is ${CMAKE_SYSTEM_PROCESSOR}")
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
137
  set(C_FLAGS_PROCESSOR "-gdwarf-2 -mfloat-abi=hard -mfpu=neon -lgcc -lrt")
138
else (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
139 140 141 142
  if(EXISTS  "/proc/cpuinfo")
    file(STRINGS "/proc/cpuinfo" CPUINFO REGEX flags LIMIT_COUNT 1)
    if (CPUINFO MATCHES "avx2")
      set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mavx2")
143 144 145
      set(COMPILATION_AVX2 "True")
    else()
      set(COMPILATION_AVX2 "False")
146 147 148 149 150 151 152 153 154
    endif()
    if (CPUINFO MATCHES "sse4_1")
      set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -msse4.1")
    endif()
    if (CPUINFO MATCHES "ssse3")
      set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mssse3")
    endif()
  else()
    Message("/proc/cpuinfo does not exit. We will use manual CPU flags")
155
  endif()
156
endif()
157 158 159

set(C_FLAGS_PROCESSOR " ${C_FLAGS_PROCESSOR} ${CFLAGS_PROCESSOR_USER}")

160 161
Message("C_FLAGS_PROCESSOR is ${C_FLAGS_PROCESSOR}")

162
if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86")
163
  if ( (NOT( C_FLAGS_PROCESSOR MATCHES "ssse3")) OR (NOT( C_FLAGS_PROCESSOR MATCHES "msse4.1")) )
164
    Message(FATAL_ERROR "For x86 Architecture, you must have following flags: -mssse3 -msse4.1. The current detected flags are: ${C_FLAGS_PROCESSOR}. You can pass the flags manually in build script, for example: ./build_oai --cflags_processor \"-mssse3 -msse4.1 -mavx2\" ")
165 166
  endif()
endif()
167

thomasl's avatar
thomasl committed
168
#
169
set(CMAKE_C_FLAGS
170
  "${CMAKE_C_FLAGS} ${C_FLAGS_PROCESSOR} -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing -rdynamic -funroll-loops -Wno-packed-bitfield-compat -fPIC ")
171
# add autotools definitions that were maybe used!
172
set(CMAKE_C_FLAGS
173
  "${CMAKE_C_FLAGS} -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 -D'MAKE_VERSION(a,b,c)=((a)*256+(b)*16+c)'"
174
)
175
set(CMAKE_CXX_FLAGS
knopp's avatar
knopp committed
176
  "${CMAKE_CXX_FLAGS} ${C_FLAGS_PROCESSOR} -std=c++11 "
177
)
178 179 180


#########################
181
set(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,${CMAKE_CURRENT_BINARY_DIR}")
182
#########################
183 184
# set a flag for changes in the source code
# these changes are related to hardcoded path to include .h files
185
add_definitions(-DCMAKER)
186
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS} -g -DMALLOC_CHECK_=3")
187
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS} -g -DMALLOC_CHECK_=3 -O2")
thomasl's avatar
thomasl committed
188

189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211

set(GIT_BRANCH        "UNKNOWN")
set(GIT_COMMIT_HASH   "UNKNOWN")
set(GIT_COMMIT_DATE   "UNKNOWN")

find_package(Git)
if(GIT_FOUND)
  message("git found: ${GIT_EXECUTABLE}")
  # 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
  )
212

213 214 215 216 217 218 219 220
  # 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
221

thomasl's avatar
thomasl committed
222 223 224

# Below is a hard-coded info
set (FIRMWARE_VERSION "No svn information")
thomasl's avatar
thomasl committed
225
add_definitions("-DFIRMWARE_VERSION=\"${FIRMWARE_VERSION}\"")
226 227
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
228 229 230 231 232



# Debug related options
#########################################
233 234 235 236 237 238 239
add_boolean_option(ASN_DEBUG           False "ASN1 coder/decoder Debug")
add_boolean_option(EMIT_ASN_DEBUG      False "ASN1 coder/decoder Debug")
add_boolean_option(MSG_PRINT           False "print debug messages")
add_boolean_option(DISABLE_XER_PRINT   False "print XER Format")
add_boolean_option(XER_PRINT           False "print XER Format")
add_boolean_option(RRC_MSG_PRINT       False "print RRC messages")
add_boolean_option(PDCP_MSG_PRINT      False "print PDCP messages to /tmp/pdcp.log")
240 241 242
add_boolean_option(DEBUG_PDCP_PAYLOAD  False "print PDCP PDU to stdout")  # if true, make sure that global and PDCP log levels are trace
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
add_boolean_option(TRACE_RLC_PAYLOAD   False "print RLC PDU to stdout") # if true, make sure that global and PDCP log levels are trace
243 244 245 246
add_boolean_option(TEST_OMG            False "???")
add_boolean_option(DEBUG_OMG           False "???")
add_boolean_option(XFORMS              False "This adds the possibility to see the signal oscilloscope")
add_boolean_option(PRINT_STATS         False "This adds the possibility to see the status")
Cedric Roux's avatar
Cedric Roux committed
247
add_boolean_option(T_TRACER            False "Activate the T tracer, a debugging/monitoring framework" )
248
add_boolean_option(UE_AUTOTEST_TRACE   False "Activate UE autotest specific logs")
Gabriel's avatar
Gabriel committed
249 250
add_boolean_option(UE_DEBUG_TRACE      False "Activate UE debug trace")
add_boolean_option(UE_TIMING_TRACE     False "Activate UE timing trace")
Cedric Roux's avatar
Cedric Roux committed
251
add_boolean_option(DISABLE_LOG_X       False "Deactivate all LOG_* macros")
252
add_boolean_option(USRP_REC_PLAY       False "Enable USRP record playback mode")
253
add_boolean_option(UE_NAS_USE_TUN      False "Enable UE NAS TUN device instead of ue_ip.ko")
Cedric Roux's avatar
Cedric Roux committed
254
add_boolean_option(BASIC_SIMULATOR     False "Has to be True when building the basic simulator, False otherwise")
255

256
add_boolean_option(DEBUG_CONSOLE False "makes debugging easier, disables stdout/stderr buffering")
thomasl's avatar
thomasl committed
257

258
add_boolean_option(ENABLE_ITTI True "ITTI is internal messaging, should remain enabled for most targets")
thomasl's avatar
thomasl committed
259 260
set (ITTI_DIR ${OPENAIR_DIR}/common/utils/itti)
if (${ENABLE_ITTI})
261
  add_library(ITTI
thomasl's avatar
thomasl committed
262 263 264 265 266 267 268 269 270
    # add .h files if depend on (this one is generated)
    ${ITTI_DIR}/intertask_interface.h
    ${ITTI_DIR}/intertask_interface.c
    ${ITTI_DIR}/intertask_interface_dump.c
    ${ITTI_DIR}/backtrace.c
    ${ITTI_DIR}/memory_pools.c
    ${ITTI_DIR}/signals.c
    ${ITTI_DIR}/timer.c
    )
271
  set(ITTI_LIB ITTI)
gauthier's avatar
gauthier committed
272
  set(GTPU_need_ITTI ${OPENAIR3_DIR}/GTPV1-U/gtpv1u_eNB.c)
thomasl's avatar
thomasl committed
273 274 275 276 277 278 279 280 281
endif (${ENABLE_ITTI})

#############################
# ASN.1 grammar C code generation & dependancies
################################
# A difficulty: asn1c generates C code of a un-predictable list of files
# so, generate the c from asn1c once at cmake run time
# So, if someone modify the asn.1 source file in such as way that it will create
# (so creating new asn.1 objects instead of modifying the object attributes)
282
# New C code source file, cmake must be re-run (instead of re-running make only)
thomasl's avatar
thomasl committed
283
#############
284
set(asn1c_call "${OPENAIR_CMAKE}/tools/generate_asn1")
Cedric Roux's avatar
Cedric Roux committed
285
set(fix_asn1c_call "${OPENAIR_CMAKE}/tools/fix_asn1")
thomasl's avatar
thomasl committed
286 287
set(asn1_generated_dir ${OPENAIR_BIN_DIR})

288 289 290
set(protoc_call "${OPENAIR_CMAKE}/tools/generate_protobuf")
set(protobuf_generated_dir ${OPENAIR_BIN_DIR})

thomasl's avatar
thomasl committed
291 292
# RRC
######
Cedric Roux's avatar
Cedric Roux committed
293
add_list2_option(RRC_ASN1_VERSION "Rel14" "ASN.1 version of RRC interface" "Rel8" "Rel10" "Rel14" "CBA")
thomasl's avatar
thomasl committed
294 295

if (${RRC_ASN1_VERSION} STREQUAL "Rel8")
296
  make_version(RRC_VERSION 8 6 0)
297
  set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-86.asn)
thomasl's avatar
thomasl committed
298
elseif (${RRC_ASN1_VERSION} STREQUAL "CBA")
299 300
  make_version(RRC_VERSION 10 2 0)
  add_definitions(-DCBA)
301
  set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-a20-lola.asn)
Cedric Roux's avatar
Cedric Roux committed
302
elseif (${RRC_ASN1_VERSION} STREQUAL "Rel10")
303
  make_version(RRC_VERSION 10 2 0)
304
  set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-a20.asn)
Cedric Roux's avatar
Cedric Roux committed
305
else()
306
  make_version(RRC_VERSION 14 3 0)
307
  set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1c/ASN1_files/RRC-e30.asn)
thomasl's avatar
thomasl committed
308
endif  (${RRC_ASN1_VERSION} STREQUAL "Rel8")
309 310
add_definitions(-DRRC_VERSION=${RRC_VERSION})
set (RRC_FULL_DIR ${asn1_generated_dir}/RRC_${RRC_ASN1_VERSION})
thomasl's avatar
thomasl committed
311 312 313
if(NOT EXISTS ${asn1c_call})
  message( FATAL_ERROR "The script ${asn1c_call} must be present" )
endif(NOT EXISTS ${asn1c_call})
Cedric Roux's avatar
Cedric Roux committed
314 315 316 317 318
execute_process(COMMAND ${asn1c_call}  ${RRC_FULL_DIR} ${RRC_GRAMMAR}
                RESULT_VARIABLE ret)
if (NOT ${ret} STREQUAL 0)
  message(FATAL_ERROR "${asn1c_call}: error")
endif (NOT ${ret} STREQUAL 0)
Cedric Roux's avatar
Cedric Roux committed
319 320 321
if(NOT EXISTS ${fix_asn1c_call})
  message( FATAL_ERROR "The script ${fix_asn1c_call} must be present" )
endif(NOT EXISTS ${fix_asn1c_call})
Cedric Roux's avatar
Cedric Roux committed
322 323
execute_process(COMMAND ${fix_asn1c_call} ${RRC_FULL_DIR} RRC ${RRC_ASN1_VERSION}
                RESULT_VARIABLE ret)
Cedric Roux's avatar
Cedric Roux committed
324 325 326
if (NOT ${ret} STREQUAL 0)
  message(FATAL_ERROR "${fix_asn1c_call}: error")
endif (NOT ${ret} STREQUAL 0)
thomasl's avatar
thomasl committed
327 328 329
file(GLOB rrc_source ${RRC_FULL_DIR}/*.c)
file(GLOB rrc_h ${RRC_FULL_DIR}/*.h)
set(rrc_h ${rrc_h} ${RRC_FULL_DIR}/asn1_constants.h)
330
set_source_files_properties(${rrc_source} PROPERTIES COMPILE_FLAGS -w) # suppress warnings from generated code
Cedric Roux's avatar
Cedric Roux committed
331
add_library(RRC_LIB ${rrc_h} ${rrc_source}
332 333
    ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1_msg.c
    ${OPENAIR2_DIR}/RRC/LTE/MESSAGES/asn1_msg_NB_IoT.c)
thomasl's avatar
thomasl committed
334 335 336 337 338 339 340
include_directories ("${RRC_FULL_DIR}")

# add the command to generate the source code
# Warning: if you modify ASN.1 source file to generate new C files, cmake should be re-run instead of make
add_custom_command (
  OUTPUT ${RRC_FULL_DIR}/asn1_constants.h
  COMMAND ${asn1c_call}  ${RRC_FULL_DIR} ${RRC_GRAMMAR}
Cedric Roux's avatar
Cedric Roux committed
341
  COMMAND ${fix_asn1c_call}  ${RRC_FULL_DIR} RRC ${RRC_ASN1_VERSION}
thomasl's avatar
thomasl committed
342 343 344 345 346 347 348
  DEPENDS ${RRC_GRAMMAR}
  )

# S1AP
# Same limitation as described in RRC: unknown generated file list
# so we generate it at cmake time
##############
349
add_list1_option(S1AP_RELEASE R10 "S1AP ASN.1 grammar version" R8 R9 R10)
thomasl's avatar
thomasl committed
350

gauthier's avatar
gauthier committed
351
set(S1AP_DIR ${OPENAIR3_DIR}/S1AP)
352 353
if (${S1AP_RELEASE} STREQUAL "R8")
  make_version(S1AP_VERSION 8 10 0)
thomasl's avatar
thomasl committed
354
  set (ASN1RELDIR R8.10)
355 356 357 358 359 360 361 362
elseif (${S1AP_RELEASE} STREQUAL "R9")
  make_version(S1AP_VERSION 9 8 0)
  set (ASN1RELDIR R9.8)
elseif (${S1AP_RELEASE} STREQUAL "R10")
  make_version(S1AP_VERSION 10 5 0)
  set (ASN1RELDIR R10.5)
endif(${S1AP_RELEASE} STREQUAL "R8")
add_definitions(-DS1AP_VERSION=${S1AP_VERSION})
thomasl's avatar
thomasl committed
363 364
set(S1AP_ASN_DIR ${S1AP_DIR}/MESSAGES/ASN1/${ASN1RELDIR})
set(S1AP_ASN_FILES
365 366 367
  ${S1AP_ASN_DIR}/S1AP-CommonDataTypes.asn
  ${S1AP_ASN_DIR}/S1AP-Constants.asn
  ${S1AP_ASN_DIR}/S1AP-IEs.asn
thomasl's avatar
thomasl committed
368 369
  ${S1AP_ASN_DIR}/S1AP-PDU.asn
  )
370
set(S1AP_C_DIR ${asn1_generated_dir}/S1AP_${ASN1RELDIR})
371
#message("calling ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}")
Cedric Roux's avatar
Cedric Roux committed
372 373
execute_process(COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}
                RESULT_VARIABLE ret)
374 375 376
if (NOT ${ret} STREQUAL 0)
  message(FATAL_ERROR "${asn1c_call}: error")
endif (NOT ${ret} STREQUAL 0)
Cedric Roux's avatar
Cedric Roux committed
377 378
execute_process(COMMAND python ${S1AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f${S1AP_ASN_DIR}/S1AP-PDU-Contents.asn -o${S1AP_C_DIR}
                RESULT_VARIABLE ret)
379 380 381
if (NOT ${ret} STREQUAL 0)
  message(FATAL_ERROR "asn1tostruct.py: error")
endif (NOT ${ret} STREQUAL 0)
382
execute_process(COMMAND ${fix_asn1c_call} ${S1AP_C_DIR} S1AP ${S1AP_RELEASE}
Cedric Roux's avatar
Cedric Roux committed
383
                RESULT_VARIABLE ret)
Cedric Roux's avatar
Cedric Roux committed
384 385 386
if (NOT ${ret} STREQUAL 0)
  message(FATAL_ERROR "${fix_asn1c_call}: error")
endif (NOT ${ret} STREQUAL 0)
thomasl's avatar
thomasl committed
387
file(GLOB S1AP_source ${S1AP_C_DIR}/*.c)
388

389
set(S1AP_OAI_generated
thomasl's avatar
thomasl committed
390 391 392
  ${S1AP_C_DIR}/s1ap_decoder.c
  ${S1AP_C_DIR}/s1ap_encoder.c
  ${S1AP_C_DIR}/s1ap_xer_print.c
393
  ${S1AP_C_DIR}/s1ap_compare.c
thomasl's avatar
thomasl committed
394 395 396
  ${S1AP_C_DIR}/s1ap_ies_defs.h
  )
file(GLOB s1ap_h ${S1AP_C_DIR}/*.h)
397 398
set(s1ap_h ${s1ap_h} )

thomasl's avatar
thomasl committed
399 400 401 402
add_custom_command (
  OUTPUT ${S1AP_OAI_generated}
  COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES}
  COMMAND python ${S1AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f${S1AP_ASN_DIR}/S1AP-PDU-Contents.asn -o${S1AP_C_DIR}
403
  COMMAND ${fix_asn1c_call} ${S1AP_C_DIR} S1AP ${S1AP_RELEASE}
404
  DEPENDS ${S1AP_ASN_FILES}
thomasl's avatar
thomasl committed
405
  )
406 407
add_library(S1AP_LIB
  ${S1AP_OAI_generated}
408 409 410 411
  ${S1AP_source}
  ${S1AP_DIR}/s1ap_common.c
  )

thomasl's avatar
thomasl committed
412 413
include_directories ("${S1AP_C_DIR}")
include_directories ("${S1AP_DIR}")
thomasl's avatar
thomasl committed
414

415 416 417 418 419 420 421 422 423 424 425 426 427 428 429
add_library(S1AP_ENB
  ${S1AP_C_DIR}/s1ap_ies_defs.h
  ${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
  )
thomasl's avatar
thomasl committed
430

431

432 433 434 435 436

#X2AP
# Same limitation as described in RRC/S1AP: unknown generated file list
# so we generate it at cmake time
##############
437
add_list1_option(X2AP_RELEASE R11 "X2AP ASN.1 grammar version" R10 R11)
438
set(X2AP_DIR ${OPENAIR2_DIR}/X2AP)
439 440
if (${X2AP_RELEASE} STREQUAL "R10")
  make_version(S1AP_VERSION 10 0 0)
441
  set (ASN1RELDIR R.UNKNOWN)
442 443 444 445 446
elseif (${X2AP_RELEASE} STREQUAL "R11")
  make_version(S1AP_VERSION 11 2 0)
  set (ASN1RELDIR R11.2)
endif(${X2AP_RELEASE} STREQUAL "R10")
add_definitions(-DX2AP_VERSION=${X2AP_VERSION})
447 448 449 450 451 452 453 454 455
set(X2AP_ASN_DIR ${X2AP_DIR}/MESSAGES/ASN1/${ASN1RELDIR})
set(X2AP_ASN_FILES
  ${X2AP_ASN_DIR}/X2AP-CommonDataTypes.asn
  ${X2AP_ASN_DIR}/X2AP-Constants.asn
  ${X2AP_ASN_DIR}/X2AP-IEs.asn
  ${X2AP_ASN_DIR}/X2AP-PDU.asn
  ${X2AP_ASN_DIR}/X2AP-Containers.asn
  )

456
set(X2AP_C_DIR ${asn1_generated_dir}/X2AP_${ASN1RELDIR})
457
#message("calling ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}")
Cedric Roux's avatar
Cedric Roux committed
458 459
execute_process(COMMAND ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}
                RESULT_VARIABLE ret)
460 461 462
if (NOT ${ret} STREQUAL 0)
  message(FATAL_ERROR "${asn1c_call}: error")
endif (NOT ${ret} STREQUAL 0)
Cedric Roux's avatar
Cedric Roux committed
463 464
execute_process(COMMAND python ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR}
                RESULT_VARIABLE ret)
465 466 467
if (NOT ${ret} STREQUAL 0)
  message(FATAL_ERROR "asn1tostruct.py: error")
endif (NOT ${ret} STREQUAL 0)
468
execute_process(COMMAND ${fix_asn1c_call} ${X2AP_C_DIR} X2AP ${X2AP_RELEASE}
Cedric Roux's avatar
Cedric Roux committed
469
                RESULT_VARIABLE ret)
Cedric Roux's avatar
Cedric Roux committed
470 471 472
if (NOT ${ret} STREQUAL 0)
  message(FATAL_ERROR "${fix_asn1c_call}: error")
endif (NOT ${ret} STREQUAL 0)
473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488
file(GLOB X2AP_source ${X2AP_C_DIR}/*.c)

set(X2AP_OAI_generated
  ${X2AP_C_DIR}/x2ap_decoder.c
  ${X2AP_C_DIR}/x2ap_encoder.c
  ${X2AP_C_DIR}/x2ap_xer_print.c
  ${X2AP_C_DIR}/x2ap_ies_defs.h
  )
file(GLOB x2ap_h ${X2AP_C_DIR}/*.h)
set(x2ap_h ${x2ap_h} )

#message("calling ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR}")
add_custom_command (
  OUTPUT ${X2AP_OAI_generated}
  COMMAND ${asn1c_call} ${X2AP_C_DIR} ${X2AP_ASN_FILES}
  COMMAND python ${X2AP_DIR}/MESSAGES/ASN1/asn1tostruct.py -f ${X2AP_ASN_DIR}/X2AP-PDU-Contents.asn -o ${X2AP_C_DIR}
489
  COMMAND ${fix_asn1c_call} ${X2AP_C_DIR} X2AP ${X2AP_RELEASE}
490 491 492 493 494 495 496 497 498 499 500 501
  DEPENDS ${X2AP_ASN_FILES}
  )

add_library(X2AP_LIB
  ${X2AP_OAI_generated}
  ${X2AP_source}
  ${X2AP_DIR}/x2ap_common.c
  )

include_directories ("${X2AP_C_DIR}")
include_directories ("${X2AP_DIR}")

thomasl's avatar
thomasl committed
502 503
# Hardware dependant options
###################################
thomasl's avatar
thomasl committed
504
add_list1_option(NB_ANTENNAS_RX "2" "Number of antennas in reception" "1" "2" "4")
Xiwen JIANG's avatar
Xiwen JIANG committed
505
add_list1_option(NB_ANTENNAS_TX "4" "Number of antennas in transmission" "1" "2" "4")
thomasl's avatar
thomasl committed
506

507
add_list2_option(RF_BOARD "EXMIMO" "RF head type" "None" "EXMIMO" "OAI_USRP" "OAI_BLADERF" "CPRIGW" "OAI_LMSSDR")
508

509
add_list2_option(TRANSP_PRO "None" "Transport protocol type" "None" "ETHERNET")
510 511 512 513 514 515 516 517 518 519 520 521 522 523
#NOKIA config enhancement
set (CONFIG_ROOTDIR
    ${OPENAIR_DIR}/common/config
   )
set (CONFIG_SOURCES
    ${CONFIG_ROOTDIR}/config_load_configmodule.c
    ${CONFIG_ROOTDIR}/config_userapi.c
    ${CONFIG_ROOTDIR}/config_cmdline.c
   ) 
set (CONFIG_LIBCONFIG_SOURCES
    ${CONFIG_ROOTDIR}/libconfig/config_libconfig.c
   )   
add_library(params_libconfig MODULE ${CONFIG_LIBCONFIG_SOURCES} )
target_link_libraries(params_libconfig config)  
oai's avatar
oai committed
524 525 526 527
# shared library loader
set (SHLIB_LOADER_SOURCES
    ${OPENAIR_DIR}/common/utils/load_module_shlib.c
)
528 529
# include RF devices / transport protocols library modules
######################################################################
thomasl's avatar
thomasl committed
530

531 532 533
include_directories("${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/")
include_directories ("${OPENAIR_TARGETS}/ARCH/EXMIMO/DEFS/")
#set (option_HWEXMIMOLIB_lib "-l ")
534
set(HWLIB_EXMIMO_SOURCE
535
  ${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
536
#  ${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/gain_control.c
537 538 539 540
  )
add_library(oai_exmimodevif MODULE ${HWLIB_EXMIMO_SOURCE} )

include_directories("${OPENAIR_TARGETS}/ARCH/USRP/USERSPACE/LIB/")
541
set(HWLIB_USRP_SOURCE
542 543 544
  ${OPENAIR_TARGETS}/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
  )
add_library(oai_usrpdevif MODULE ${HWLIB_USRP_SOURCE} )
545
target_link_libraries(oai_usrpdevif uhd)
thomasl's avatar
thomasl committed
546

547
include_directories("${OPENAIR_TARGETS}/ARCH/BLADERF/USERSPACE/LIB/")
548
set(HWLIB_BLADERF_SOURCE
549 550 551
  ${OPENAIR_TARGETS}/ARCH/BLADERF/USERSPACE/LIB/bladerf_lib.c
  )
add_library(oai_bladerfdevif MODULE ${HWLIB_BLADERF_SOURCE} )
552
target_link_libraries(oai_bladerfdevif bladeRF)
553

554
include_directories("${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/")
ignasj's avatar
LimeSDR  
ignasj committed
555

556
set(HWLIB_LMSSDR_SOURCE
557 558 559
  ${OPENAIR_TARGETS}/ARCH/LMSSDR/USERSPACE/LIB/lms_lib.cpp
  )
add_library(oai_lmssdrdevif MODULE ${HWLIB_LMSSDR_SOURCE} )
560 561
target_include_directories(oai_lmssdrdevif PRIVATE /usr/local/include/lime)
target_link_libraries(oai_lmssdrdevif LimeSuite )
562

563
include_directories("${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/")
564
set(TPLIB_ETHERNET_SOURCE
565 566 567 568 569 570
  ${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/ethernet_lib.c
  ${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/eth_udp.c
  ${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB/eth_raw.c
  )
add_library(oai_eth_transpro MODULE ${TPLIB_ETHERNET_SOURCE} )

Cedric Roux's avatar
Cedric Roux committed
571 572 573 574 575 576 577 578 579 580 581 582 583
include_directories("${OPENAIR_TARGETS}/ARCH/mobipass/")
set(TPLIB_MOBIPASS_SOURCE
  ${OPENAIR_TARGETS}/ARCH/mobipass/interface.c
  ${OPENAIR_TARGETS}/ARCH/mobipass/mobipass.c
  ${OPENAIR_TARGETS}/ARCH/mobipass/queues.c
  )
add_library(oai_mobipass MODULE ${TPLIB_MOBIPASS_SOURCE} )

# Hide all functions/variables in the mobipass library.
# Use __attribute__((__visibility__("default")))
# in the source code to unhide a function/variable.
get_target_property(mobipas_cflags oai_mobipass COMPILE_FLAGS)
set_target_properties(oai_mobipass PROPERTIES COMPILE_FLAGS "${mobipass_cflags} -fvisibility=hidden")
584

Cedric Roux's avatar
Cedric Roux committed
585 586 587 588
# TCP bridge libraries
######################################################################

# this one is for internal use at Eurecom and is not documented
Cedric Roux's avatar
Cedric Roux committed
589 590 591
set(HWLIB_TCP_BRIDGE_SOURCE
  ${OPENAIR_TARGETS}/ARCH/tcp_bridge/tcp_bridge.c
  )
Cedric Roux's avatar
Cedric Roux committed
592
add_library(tcp_bridge MODULE ${HWLIB_TCP_BRIDGE_SOURCE} )
Cedric Roux's avatar
Cedric Roux committed
593

Cedric Roux's avatar
Cedric Roux committed
594 595 596 597 598 599 600 601 602 603 604
#get_target_property(tcp_bridge_cflags tcp_bridge COMPILE_FLAGS)
#set_target_properties(tcp_bridge PROPERTIES COMPILE_FLAGS "${tcp_bridge_cflags} -fvisibility=hidden")
set_target_properties(tcp_bridge PROPERTIES COMPILE_FLAGS "-fvisibility=hidden")

# this one is to connect OAI eNB and OAI UE in the basic simulator
# see targets/ARCH/tcp_bridge/README.tcp_bridge_oai for usage
set(HWLIB_TCP_BRIDGE_OAI_SOURCE
  ${OPENAIR_TARGETS}/ARCH/tcp_bridge/tcp_bridge_oai.c
  )
add_library(tcp_bridge_oai MODULE ${HWLIB_TCP_BRIDGE_OAI_SOURCE} )
set_target_properties(tcp_bridge_oai PROPERTIES COMPILE_FLAGS "-fvisibility=hidden")
Cedric Roux's avatar
Cedric Roux committed
605

606
##########################################################
607

thomasl's avatar
thomasl committed
608 609
include_directories ("${OPENAIR_TARGETS}/ARCH/COMMON")

laurent's avatar
laurent committed
610
Message("DEADLINE_SCHEDULER flag  is ${DEADLINE_SCHEDULER}")
Rohit Gupta's avatar
Rohit Gupta committed
611
Message("CPU_Affinity flag is ${CPU_AFFINITY}")
thomasl's avatar
thomasl committed
612 613 614 615 616 617 618

##############################################################
#    ???!!! TO BE DOCUMENTED OPTIONS !!!???
##############################################################
add_boolean_option(ENABLE_SECURITY         True  "Enable LTE integrity and ciphering between RRC UE and eNB")
add_boolean_option(ENABLE_USE_MME          True  "eNB connected to MME (INTERFACE S1-C), not standalone eNB")
add_boolean_option(NO_RRM                  True  "DO WE HAVE A RADIO RESSOURCE MANAGER: NO")
619
add_boolean_option(RRC_DEFAULT_RAB_IS_AM False "set the RLC mode to AM for the default bearer")
thomasl's avatar
thomasl committed
620 621

add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????")
laurent's avatar
laurent committed
622
add_boolean_option(DEADLINE_SCHEDULER True "Use the Linux scheduler SCHED_DEADLINE: kernel >= 3.14")
Rohit Gupta's avatar
Rohit Gupta committed
623
add_boolean_option(CPU_AFFINITY False "Enable CPU Affinity of threads (only valid without deadline scheduler). It is enabled only with >2 CPUs")
624
add_boolean_option(NAS_ADDRESS_FIX False "specific to oaisim: for nasmesh driver")
625
add_boolean_option(NAS_NETLINK False "useless ??? Must be True to compile nasmesh driver without rtai ????")
thomasl's avatar
thomasl committed
626
add_boolean_option(OAISIM False "specific to oaisim")
thomasl's avatar
thomasl committed
627
add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????")
628

629
add_boolean_option(USE_MME False "this flag is used only one time in lte-softmodem.c")
630
add_list_string_option(PACKAGE_NAME "NotDefined" "As per attribute name")
631
add_boolean_option(MESSAGE_CHART_GENERATOR False         "For generating sequence diagrams")
gauthier's avatar
gauthier committed
632 633
add_boolean_option(MESSAGE_CHART_GENERATOR_RLC_MAC False "trace RLC-MAC exchanges in sequence diagrams")
add_boolean_option(MESSAGE_CHART_GENERATOR_PHY     False "trace some PHY exchanges in sequence diagrams")
634

Xu Bo's avatar
Xu Bo committed
635
add_boolean_option(UE_EXPANSION             False         "enable UE_EXPANSION with max 256 UE")
636 637
add_boolean_option(PHY_TX_THREAD            False         "enable UE_EXPANSION with max 256 UE")
add_boolean_option(PRE_SCD_THREAD           False         "enable UE_EXPANSION with max 256 UE")
638

thomasl's avatar
thomasl committed
639 640 641
########################
# Include order
##########################
gauthier's avatar
gauthier committed
642
add_boolean_option(ENB_MODE True "Swap the include directories between openair2 and openair3" )
thomasl's avatar
thomasl committed
643 644 645 646 647

##########################
# SCHEDULING/REAL-TIME/PERF options
##########################
add_boolean_option(ENABLE_USE_CPU_EXECUTION_TIME True "Add data in vcd traces: disable it if perf issues")
gauthier's avatar
gauthier committed
648 649
add_boolean_option(ENABLE_VCD              True  "always true now, time measurements of proc calls and var displays")
add_boolean_option(ENABLE_VCD_FIFO         True  "time measurements of proc calls and var displays sent to FIFO (one more thread)")
thomasl's avatar
thomasl committed
650 651 652 653 654 655 656 657
add_boolean_option(LINUX                   False "used in weird memcpy() in pdcp.c ???")
add_boolean_option(LINUX_LIST              False "used only in lists.c: either use OAI implementation of lists or Linux one (should be True, but it is False")
add_boolean_option(LOG_NO_THREAD           True  "Disable thread for log, seems always set to true")
add_boolean_option(OPENAIR_LTE             True "Seems legacy: keep it to true")

##########################
# PHY options
##########################
658
add_boolean_option(DRIVER2013              True "only relevant for EXMIMO")
thomasl's avatar
thomasl committed
659
add_boolean_option(ENABLE_NEW_MULTICAST    False "specific to oaisim")
thomasl's avatar
thomasl committed
660
add_boolean_option(EXMIMO_IOT              True "????")
thomasl's avatar
thomasl committed
661 662 663 664 665 666 667 668
add_boolean_option(LARGE_SCALE             False "specific to oaisim: defines max eNB=2 and max UE=120")
add_boolean_option(LOCALIZATION            False "???")
add_integer_option(MAX_NUM_CCs             1     "????")
add_boolean_option(MU_RECEIVER             False "????")
add_boolean_option(PHYSIM                  True  "for L1 simulators (dlsim, ulsim, ...)")
add_boolean_option(PHY_CONTEXT             True "not clear: must remain False for dlsim")
add_boolean_option(PHY_EMUL                False "not clear: must remain False for dlsim")
add_boolean_option(SMBV                    False "Rohde&Schwarz SMBV100A vector signal generator")
669 670 671
add_boolean_option(DEBUG_PHY               False "Enable PHY layer debugging options")
add_boolean_option(DEBUG_PHY_PROC          False "Enable debugging of PHY layer procedures")
add_boolean_option(DEBUG_DLSCH             False "Enable debugging of DLSCH physical layer channel")
thomasl's avatar
thomasl committed
672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693

##########################
# NAS LAYER OPTIONS
##########################
add_boolean_option(ENABLE_NAS_UE_LOGGING   True  "????")
add_boolean_option(NAS_BUILT_IN_UE         True  "UE NAS layer present in this executable")
add_boolean_option(NAS_UE                  True  "NAS UE INSTANCE (<> NAS_MME)")


##########################
# ACCESS STRATUM LAYER2 OPTIONS
##########################
add_boolean_option(MAC_CONTEXT             True  "specific to oaisim")
add_boolean_option(JUMBO_FRAME             True  "ENABLE LARGE SDU in ACCESS STRATUM (larger than common MTU)")

##########################
# RLC LAYER OPTIONS
##########################
add_boolean_option(OPENAIR2                True  "Access Stratum layer 2 built in executable")
add_boolean_option(TRACE_RLC_PAYLOAD       False "Fatal assert in this case")
add_boolean_option(RLC_STOP_ON_LOST_PDU    False "Fatal assert in this case")

knopp's avatar
mutexes  
knopp committed
694
add_boolean_option(TRACE_RLC_MUTEX         True  "TRACE for RLC, possible problem in thread scheduling")
thomasl's avatar
thomasl committed
695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731
add_boolean_option(TRACE_RLC_AM_BO         False "TRACE for RLC AM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_AM_FREE_SDU   False "TRACE for RLC AM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_AM_HOLE       False "TRACE for RLC AM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_AM_PDU        False "TRACE for RLC AM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_AM_RESEGMENT  False "TRACE for RLC AM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_AM_RX         False "TRACE for RLC AM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_AM_RX_DECODE  False "TRACE for RLC AM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_AM_TX         False "TRACE for RLC AM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_AM_TX_STATUS  False "TRACE for RLC AM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_AM_STATUS_CREATION   False "TRACE for RLC AM, TO BE CHANGED IN A MORE GENERAL FLAG")

add_boolean_option(STOP_ON_IP_TRAFFIC_OVERLOAD      False "")
add_boolean_option(TRACE_RLC_UM_DAR        False "TRACE for RLC UM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_UM_DISPLAY_ASCII_DATA  False "TRACE for RLC UM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_UM_PDU        False "TRACE for RLC UM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_UM_RX         False "TRACE for RLC UM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_UM_SEGMENT    False "TRACE for RLC UM, TO BE CHANGED IN A MORE GENERAL FLAG")
add_boolean_option(TRACE_RLC_UM_TX_STATUS  False "TRACE for RLC UM, TO BE CHANGED IN A MORE GENERAL FLAG")


##########################
# PDCP LAYER OPTIONS
##########################
add_boolean_option(PDCP_USE_NETLINK            False "For eNB, PDCP communicate with a NETLINK socket if connected to network driver, else could use a RT-FIFO")
add_boolean_option(PDCP_USE_NETLINK_QUEUES     False "When PDCP_USE_NETLINK is true, incoming IP packets are stored in queues")
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)")

##########################
# RRC LAYER OPTIONS
##########################
add_boolean_option(RRC_DEFAULT_RAB_IS_AM       False  "Otherwise it is UM, configure params are actually set in rrc_eNB.c:rrc_eNB_generate_defaultRRCConnectionReconfiguration(...)")


##########################
# S1AP LAYER OPTIONS
##########################
732
# none
thomasl's avatar
thomasl committed
733

734
# add the binary tree to the search path for include files
thomasl's avatar
thomasl committed
735 736 737 738
#######################################################
# We will find ConfigOAI.h after generation in target directory
include_directories("${OPENAIR_BIN_DIR}")
# add directories to find all include files
739
# the internal rule is to use generic names such as defs.h
thomasl's avatar
thomasl committed
740
# but to make it uniq name as adding the relative path in the include directtive
741
# example: #include "RRC/LTE/rrc_defs.h"
thomasl's avatar
thomasl committed
742 743 744 745 746
#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
747 748 749 750
if(ENB_MODE)
  include_directories("${OPENAIR2_DIR}/COMMON")
  include_directories("${OPENAIR2_DIR}/UTIL")
  include_directories("${OPENAIR2_DIR}/UTIL/LOG")
gauthier's avatar
gauthier committed
751 752
  include_directories("${OPENAIR3_DIR}/COMMON")
  include_directories("${OPENAIR3_DIR}/UTILS")
753
else()
gauthier's avatar
gauthier committed
754 755
  include_directories("${OPENAIR3_DIR}/COMMON")
  include_directories("${OPENAIR3_DIR}/UTILS")
756 757 758 759
  include_directories("${OPENAIR2_DIR}/COMMON")
  include_directories("${OPENAIR2_DIR}/UTIL")
  include_directories("${OPENAIR2_DIR}/UTIL/LOG")
endif()
760 761 762 763 764 765
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
766 767 768 769 770 771 772
include_directories("${OPENAIR1_DIR}")
include_directories("${OPENAIR2_DIR}")
include_directories("${OPENAIR2_DIR}/LAYER2/RLC")
include_directories("${OPENAIR2_DIR}/LAYER2/RLC/AM_v9.3.0")
include_directories("${OPENAIR2_DIR}/LAYER2/RLC/UM_v9.3.0")
include_directories("${OPENAIR2_DIR}/LAYER2/RLC/TM_v9.3.0")
include_directories("${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0")
773 774
include_directories("${OPENAIR2_DIR}/RRC/LTE/MESSAGES")
include_directories("${OPENAIR2_DIR}/RRC/LTE")
thomasl's avatar
thomasl committed
775 776
include_directories("${OPENAIR_DIR}/common/utils")
include_directories("${OPENAIR_DIR}/common/utils/itti")
gauthier's avatar
gauthier committed
777 778 779 780 781 782 783 784 785
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")
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")
786
include_directories("${OPENAIR2_DIR}/X2AP")
gauthier's avatar
gauthier committed
787 788
include_directories("${OPENAIR3_DIR}/UDP")
include_directories("${OPENAIR3_DIR}/GTPV1-U")
thomasl's avatar
thomasl committed
789 790 791 792 793
include_directories("${OPENAIR_DIR}/targets/COMMON")
include_directories("${OPENAIR_DIR}/targets/ARCH/COMMON")
include_directories("${OPENAIR_DIR}/targets/ARCH/EXMIMO/USERSPACE/LIB/")
include_directories("${OPENAIR_DIR}/targets/ARCH/EXMIMO/DEFS")
include_directories("${OPENAIR2_DIR}/ENB_APP")
794
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/MAC")
shahab's avatar
shahab committed
795
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/RRC")
796
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/PDCP")
thomasl's avatar
thomasl committed
797 798
include_directories("${OPENAIR2_DIR}/UTIL/OSA")
include_directories("${OPENAIR2_DIR}/UTIL/LFDS/liblfds6.1.1/liblfds611/inc")
Xenofon Foukas's avatar
Xenofon Foukas committed
799
include_directories("${OPENAIR2_DIR}/UTIL/LFDS/liblfds7.0.0/liblfds700/inc")
thomasl's avatar
thomasl committed
800 801 802 803 804 805 806 807 808 809 810
include_directories("${OPENAIR2_DIR}/UTIL/MEM")
include_directories("${OPENAIR2_DIR}/UTIL/LISTS")
include_directories("${OPENAIR2_DIR}/UTIL/FIFO")
include_directories("${OPENAIR2_DIR}/UTIL/OCG")
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")
811
include_directories("${OPENAIR2_DIR}/RRC/LTE/MESSAGES")
gauthier's avatar
gauthier committed
812 813
include_directories("${OPENAIR3_DIR}/GTPV1-U/nw-gtpv1u/shared")
include_directories("${OPENAIR3_DIR}/GTPV1-U/nw-gtpv1u/include")
814
include_directories("${OPENAIR_DIR}")
thomasl's avatar
thomasl committed
815 816 817

# Utilities Library
################
818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839
# set the version of protobuf messages, V3 not supported yet
add_list1_option(FLPT_VERSION V2 "FLPT MSG  protobuf  grammar version" V2 V3)

if (${FLPT_VERSION} STREQUAL "V2")
  set (FLPTDIR V2)
elseif (${FLPT_VERSION} STREQUAL "V3")
  set (FLPTDIR V3)
endif(${FLPT_VERSION} STREQUAL "V2")

set(FLPT_MSG_DIR ${OPENAIR2_DIR}/ENB_APP/MESSAGES/${FLPTDIR} )
set(FLPT_MSG_FILES
  ${FLPT_MSG_DIR}/header.proto
  ${FLPT_MSG_DIR}/flexran.proto
  ${FLPT_MSG_DIR}/stats_common.proto
  ${FLPT_MSG_DIR}/stats_messages.proto
  ${FLPT_MSG_DIR}/time_common.proto
  ${FLPT_MSG_DIR}/controller_commands.proto
  ${FLPT_MSG_DIR}/mac_primitives.proto
  ${FLPT_MSG_DIR}/config_messages.proto
  ${FLPT_MSG_DIR}/config_common.proto
  ${FLPT_MSG_DIR}/control_delegation.proto
  )
840

841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856
set(FLPT_C_DIR ${protobuf_generated_dir}/${FLPTDIR})
#message("calling protoc_call=${protoc_call} FLPT_C_DIR=${FLPT_C_DIR} FLPT_MSG_FILES=${FLPT_MSG_FILES}")
execute_process(COMMAND ${protoc_call} ${FLPT_C_DIR} ${FLPT_MSG_DIR} ${FLPT_MSG_FILES})
file(GLOB FLPT_source ${FLPT_C_DIR}/*.c)
set(FLPT_OAI_generated
  ${FLPT_C_DIR}/header.pb-c.c
  ${FLPT_C_DIR}/flexran.pb-c.c
  ${FLPT_C_DIR}/stats_common.pb-c.c
  ${FLPT_C_DIR}/stats_messages.pb-c.c
  ${FLPT_C_DIR}/time_common.pb-c.c
  ${FLPT_C_DIR}/controller_commands.pb-c.c
  ${FLPT_C_DIR}/mac_primitives.pb-c.c
  ${FLPT_C_DIR}/config_messages.pb-c.c
  ${FLPT_C_DIR}/config_common.pb-c.c
  ${FLPT_C_DIR}/control_delegation.pb-c.c
  )
857

858 859
file(GLOB flpt_h ${FLPT_C_DIR}/*.h)
set(flpt_h ${flpt_h} )
860

861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894
add_library(FLPT_MSG
  ${FLPT_OAI_generated}
  ${FLPT_source}
  )
set(FLPT_MSG_LIB FLPT_MSG)
#message("prpt c dir is : ${FLPT_C_DIR}")
include_directories (${FLPT_C_DIR})

add_library(ASYNC_IF
  ${OPENAIR2_DIR}/UTIL/ASYNC_IF/socket_link.c
  ${OPENAIR2_DIR}/UTIL/ASYNC_IF/link_manager.c
  ${OPENAIR2_DIR}/UTIL/ASYNC_IF/message_queue.c
  ${OPENAIR2_DIR}/UTIL/ASYNC_IF/ringbuffer_queue.c
  )
set(ASYNC_IF_LIB ASYNC_IF)
include_directories(${OPENAIR2_DIR}/UTIL/ASYNC_IF)

add_library(FLEXRAN_AGENT
  ${OPENAIR2_DIR}/ENB_APP/flexran_agent_handler.c
  ${OPENAIR2_DIR}/ENB_APP/flexran_agent_common.c
  ${OPENAIR2_DIR}/ENB_APP/flexran_agent_ran_api.c
  ${OPENAIR2_DIR}/ENB_APP/flexran_agent_timer.c
  ${OPENAIR2_DIR}/ENB_APP/flexran_agent_common_internal.c
  ${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac.c
  ${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/RRC/flexran_agent_rrc.c
  ${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/PDCP/flexran_agent_pdcp.c
  ${OPENAIR2_DIR}/ENB_APP/flexran_agent.c
  ${OPENAIR2_DIR}/ENB_APP/flexran_agent_task_manager.c
  ${OPENAIR2_DIR}/ENB_APP/flexran_agent_net_comm.c
  ${OPENAIR2_DIR}/ENB_APP/flexran_agent_async.c
  ${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/MAC/flexran_agent_mac_internal.c
  )
set(FLEXRAN_AGENT_LIB FLEXRAN_AGENT)
#include_directories(${OPENAIR2_DIR}/ENB_APP)
895

896
set(PROTOBUF_LIB "protobuf-c")
897

898 899
FIND_PATH(LIBYAML_INCLUDE_DIR NAMES yaml.h)
FIND_LIBRARY(LIBYAML_LIBRARIES NAMES yaml libyaml)
900

901 902 903
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Yaml DEFAULT_MSG LIBYAML_LIBRARIES LIBYAML_INCLUDE_DIR)
MARK_AS_ADVANCED(LIBYAML_INCLUDE_DIR LIBYAML_LIBRARIES)
904

905
#set(PROTOBUF_LIB "protobuf") #for Cpp
906

907

908
add_library(HASHTABLE
909 910
  ${OPENAIR_DIR}/common/utils/hashtable/hashtable.c
  ${OPENAIR_DIR}/common/utils/hashtable/obj_hashtable.c
911
)
912
include_directories(${OPENAIR_DIR}/common/utils/hashtable)
913

914
if (MESSAGE_CHART_GENERATOR)
915
  add_library(MSC
916
    ${OPENAIR_DIR}/common/utils/msc/msc.c
917
  )
918
  set(MSC_LIB MSC)
919
endif()
920 921
include_directories(${OPENAIR_DIR}/common/utils/msc)

922
set(UTIL_SRC
923 924 925
#  ${OPENAIR2_DIR}/UTIL/CLI/cli.c
#  ${OPENAIR2_DIR}/UTIL/CLI/cli_cmd.c
#  ${OPENAIR2_DIR}/UTIL/CLI/cli_server.c
thomasl's avatar
thomasl committed
926 927 928 929 930 931 932
  ${OPENAIR2_DIR}/UTIL/FIFO/pad_list.c
  ${OPENAIR2_DIR}/UTIL/LISTS/list.c
  ${OPENAIR2_DIR}/UTIL/LISTS/list2.c
  ${OPENAIR2_DIR}/UTIL/LOG/log.c
  ${OPENAIR2_DIR}/UTIL/LOG/vcd_signal_dumper.c
  ${OPENAIR2_DIR}/UTIL/MATH/oml.c
  ${OPENAIR2_DIR}/UTIL/MEM/mem_block.c
933 934 935 936 937 938 939 940 941 942 943 944
#  ${OPENAIR2_DIR}/UTIL/OCG/OCG.c
#  ${OPENAIR2_DIR}/UTIL/OCG/OCG_create_dir.c
#  ${OPENAIR2_DIR}/UTIL/OCG/OCG_detect_file.c
#  ${OPENAIR2_DIR}/UTIL/OCG/OCG_generate_report.c
#  ${OPENAIR2_DIR}/UTIL/OCG/OCG_parse_filename.c
#  ${OPENAIR2_DIR}/UTIL/OCG/OCG_parse_XML.c
#  ${OPENAIR2_DIR}/UTIL/OCG/OCG_save_XML.c
#  ${OPENAIR2_DIR}/UTIL/OMG/common.c
#  ${OPENAIR2_DIR}/UTIL/OMG/grid.c
#  ${OPENAIR2_DIR}/UTIL/OMG/job.c
#  ${OPENAIR2_DIR}/UTIL/OMG/mobility_parser.c
#  ${OPENAIR2_DIR}/UTIL/OMG/omg.c
Thomas Laurent's avatar
Thomas Laurent committed
945
  #${OPENAIR2_DIR}/UTIL/OMG/omg_hashtable.c
946 947 948 949 950 951
#  ${OPENAIR2_DIR}/UTIL/OMG/rwalk.c
#  ${OPENAIR2_DIR}/UTIL/OMG/rwp.c
#  ${OPENAIR2_DIR}/UTIL/OMG/static.c
#  ${OPENAIR2_DIR}/UTIL/OMG/steadystaterwp.c
#  ${OPENAIR2_DIR}/UTIL/OMG/trace.c
#  ${OPENAIR2_DIR}/UTIL/OMG/trace_hashtable.c
thomasl's avatar
thomasl committed
952
  ${OPENAIR2_DIR}/UTIL/OPT/probe.c
953 954 955 956 957 958
#  ${OPENAIR2_DIR}/UTIL/OTG/otg_tx.c
#  ${OPENAIR2_DIR}/UTIL/OTG/otg.c
#  ${OPENAIR2_DIR}/UTIL/OTG/otg_kpi.c
#  ${OPENAIR2_DIR}/UTIL/OTG/otg_models.c
#  ${OPENAIR2_DIR}/UTIL/OTG/otg_form.c
#  ${OPENAIR2_DIR}/UTIL/OTG/otg_rx.c
thomasl's avatar
thomasl committed
959 960 961
  )
add_library(UTIL ${UTIL_SRC})

962 963 964 965 966 967 968 969 970
#set(OMG_SUMO_SRC
#  ${OPENAIR2_DIR}/UTIL/OMG/client_traci_OMG.c
#  ${OPENAIR2_DIR}/UTIL/OMG/id_manager.c
#  ${OPENAIR2_DIR}/UTIL/OMG/sumo.c
#  ${OPENAIR2_DIR}/UTIL/OMG/socket_traci_OMG.c
#  ${OPENAIR2_DIR}/UTIL/OMG/storage_traci_OMG.c
#  )
#add_library(OMG_SUMO ${OMG_SUMO_SRC})

thomasl's avatar
thomasl committed
971 972 973 974 975 976 977 978 979 980
set(SECU_OSA_SRC
  ${OPENAIR2_DIR}/UTIL/OSA/osa_key_deriver.c
  ${OPENAIR2_DIR}/UTIL/OSA/osa_rijndael.c
  ${OPENAIR2_DIR}/UTIL/OSA/osa_snow3g.c
  ${OPENAIR2_DIR}/UTIL/OSA/osa_stream_eea.c
  ${OPENAIR2_DIR}/UTIL/OSA/osa_stream_eia.c
  )
add_library(SECU_OSA ${SECU_OSA_SRC})

set(SECU_CN_SRC
gauthier's avatar
gauthier committed
981 982 983 984 985 986 987 988
  ${OPENAIR3_DIR}/SECU/kdf.c
  ${OPENAIR3_DIR}/SECU/rijndael.c
  ${OPENAIR3_DIR}/SECU/snow3g.c
  ${OPENAIR3_DIR}/SECU/key_nas_deriver.c
  ${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
989 990 991
  )
add_library(SECU_CN ${SECU_CN_SRC})

knopp's avatar
knopp committed
992
# Physical Channel Procedures Scheduling  
thomasl's avatar
thomasl committed
993
################################"
994
set(SCHED_SRC
995
  ${OPENAIR1_DIR}/SCHED/fapi_l1.c
996 997 998
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_eNb.c
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
)
thomasl's avatar
thomasl committed
999
add_library(SCHED_LIB ${SCHED_SRC})
thomasl's avatar
thomasl committed
1000

knopp's avatar
knopp committed
1001
set(SCHED_SRC_RU
1002 1003
  ${OPENAIR1_DIR}/SCHED/ru_procedures.c
  ${OPENAIR1_DIR}/SCHED/prach_procedures.c
knopp's avatar
knopp committed
1004 1005 1006
)
add_library(SCHED_RU_LIB ${SCHED_SRC_RU})

1007
set(SCHED_SRC_UE
1008
  ${OPENAIR1_DIR}/SCHED_UE/phy_procedures_lte_ue.c
1009
  ${OPENAIR1_DIR}/SCHED/phy_procedures_lte_common.c
1010 1011 1012
  ${OPENAIR1_DIR}/SCHED_UE/pucch_pc.c
  ${OPENAIR1_DIR}/SCHED_UE/pusch_pc.c
  ${OPENAIR1_DIR}/SCHED_UE/srs_pc.c
1013 1014 1015
)
add_library(SCHED_UE_LIB ${SCHED_SRC_UE})

1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060
# nFAPI
#################################
set(NFAPI_COMMON_SRC
  ${NFAPI_DIR}/common/src/debug.c
)
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})

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

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
1061 1062 1063
  ${NFAPI_USER_DIR}/nfapi.c
  ${NFAPI_USER_DIR}/nfapi_pnf.c
  ${NFAPI_USER_DIR}/nfapi_vnf.c
1064 1065 1066 1067
)
add_library(NFAPI_USER_LIB ${NFAPI_USER_SRC})
include_directories(${NFAPI_USER_DIR})

thomasl's avatar
thomasl committed
1068 1069
# Layer 1
#############################
1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082
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
)
set(PHY_TURBOIF
  ${OPENAIR1_DIR}/PHY/CODING/coding_load.c
)

add_library(coding MODULE ${PHY_TURBOSRC} )
1083
set(PHY_SRC_COMMON
thomasl's avatar
thomasl committed
1084 1085 1086
  # depend on code generation from asn1c
  ${RRC_FULL_DIR}/asn1_constants.h
  # actual source
1087
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools_common.c
thomasl's avatar
thomasl committed
1088
  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
1089 1090