git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6814 818b1a75-f10b-46b9-bf7c-635c3b92a50f
1647 lines
59 KiB
CMake
1647 lines
59 KiB
CMake
################################################################################
|
|
# OpenAirInterface
|
|
# Copyright(c) 1999 - 2014 Eurecom
|
|
#
|
|
# OpenAirInterface is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# OpenAirInterface is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with OpenAirInterface.The full GNU General Public License is
|
|
# included in this distribution in the file called "COPYING". If not,
|
|
# see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# Contact Information
|
|
# OpenAirInterface Admin: openair_admin@eurecom.fr
|
|
# OpenAirInterface Tech : openair_tech@eurecom.fr
|
|
# OpenAirInterface Dev : openair4g-devel@eurecom.fr
|
|
#
|
|
# Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
|
|
# Author: laurent THOMAS
|
|
###############################################################################
|
|
|
|
cmake_minimum_required (VERSION 2.8)
|
|
|
|
#############################################
|
|
# Base directories, compatible with legacy OAI building
|
|
################################################
|
|
set (OPENAIR_DIR $ENV{OPENAIR_DIR})
|
|
set (OPENAIR1_DIR ${OPENAIR_DIR}/openair1)
|
|
set (OPENAIR2_DIR ${OPENAIR_DIR}/openair2)
|
|
set (OPENAIR3_DIR ${OPENAIR_DIR}/openair3)
|
|
set (OPENAIR_TARGETS ${OPENAIR_DIR}/targets)
|
|
set (OPENAIRCN_DIR ${OPENAIR_DIR}/openair-cn)
|
|
set (OPENAIR_CMAKE ${OPENAIR_DIR}/cmake_targets)
|
|
set (OPENAIR_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
|
|
|
|
project (OpenAirInterface)
|
|
|
|
###########################################
|
|
# macros to define options as there is numerous options in oai
|
|
################################################
|
|
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)
|
|
|
|
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)
|
|
####################################################
|
|
# compilation flags
|
|
#############################################
|
|
|
|
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)
|
|
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
|
|
|
|
#
|
|
set(CMAKE_C_FLAGS
|
|
"${CMAKE_C_FLAGS} -msse4.2 -std=gnu99 -Wall -Wstrict-prototypes -fno-strict-aliasing -rdynamic -funroll-loops -Wno-packed-bitfield-compat -fPIC")
|
|
# add autotools definitions that were maybe used!
|
|
set(CMAKE_C_FLAGS
|
|
"${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"
|
|
)
|
|
# set a flag for changes in the source code
|
|
# these changes are related to hardcoded path to include .h files
|
|
add_definitions(-DCMAKER)
|
|
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -ggdb -DMALLOC_CHECK_=3")
|
|
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -ggdb -DMALLOC_CHECK_=3 -O3")
|
|
|
|
# Below has been put in comment because does not work with
|
|
# SVN authentication.
|
|
#
|
|
#find_package(Subversion)
|
|
#if(SUBVERSION_FOUND)
|
|
# Subversion_WC_INFO(${OPENAIR_DIR} openair)
|
|
# set (FIRMWARE_VERSION "${openair_WC_REVISION} - ${openair_WC_LAST_CHANGED_DATE}")
|
|
# Subversion_WC_LOG(${OPENAIR_DIR} Project)
|
|
#else()
|
|
# set (FIRMWARE_VERSION "No svn information")
|
|
#endif()
|
|
#add_definitions("-DFIRMWARE_VERSION=\"${FIRMWARE_VERSION}\"")
|
|
|
|
# Below is a hard-coded info
|
|
set (FIRMWARE_VERSION "No svn information")
|
|
add_definitions("-DFIRMWARE_VERSION=\"${FIRMWARE_VERSION}\"")
|
|
add_definitions("-DPACKAGE_VERSION=\"${FIRMWARE_VERSION}\"")
|
|
add_definitions("-DPACKAGE_BUGREPORT=\"OpenAirInterface web site\"")
|
|
|
|
|
|
|
|
# Debug related options
|
|
#########################################
|
|
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")
|
|
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(ENABLE_ITTI True "ITTI is internal messaging, should remain enabled for most targets")
|
|
set (ITTI_DIR ${OPENAIR_DIR}/common/utils/itti)
|
|
if (${ENABLE_ITTI})
|
|
add_library(ITTI
|
|
# 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
|
|
)
|
|
set(ITTI_LIB ITTI)
|
|
set(EXMIMO_IOT)
|
|
endif (${ENABLE_ITTI})
|
|
|
|
add_boolean_option(RTAI False "Use RTAI")
|
|
if (${RTAI})
|
|
set(LOWLATENCY False)
|
|
add_definitions("-DENABLE_RTAI_CLOCK")
|
|
add_definitions("-DCONFIG_RTAI_LXRT_INLINE")
|
|
include_directories ("/usr/realtime/include")
|
|
include_directories ("/usr/realtime/include/asm")
|
|
set(RTAI_SOURCE sched_dlsch.c sched_rx_pdsch.c rt_wrapper.c vcd_signal_dumper.c log.c)
|
|
endif (${RTAI})
|
|
|
|
#############################
|
|
# 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)
|
|
# New C code source file, cmake must be re-run (instead of re-running make only)
|
|
#############
|
|
set(asn1c_call "${OPENAIR_CMAKE}/tools/generate_asn1.bash")
|
|
set(asn1_generated_dir ${OPENAIR_BIN_DIR})
|
|
|
|
# RRC
|
|
######
|
|
add_list2_option(RRC_ASN1_VERSION "Rel10" "ASN.1 version of RRC interface" "Rel8" "Rel10" "CBA")
|
|
|
|
if (${RRC_ASN1_VERSION} STREQUAL "Rel8")
|
|
set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-86.asn)
|
|
elseif (${RRC_ASN1_VERSION} STREQUAL "Rel10")
|
|
set (RRC_GRAMMAR ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1c/ASN1_files/EUTRA-RRC-Definitions-a20.asn)
|
|
endif (${RRC_ASN1_VERSION} STREQUAL "Rel8")
|
|
|
|
set (RRC_FULL_DIR ${asn1_generated_dir}/${RRC_ASN1_VERSION})
|
|
if(NOT EXISTS ${asn1c_call})
|
|
message( FATAL_ERROR "The script ${asn1c_call} must be present" )
|
|
endif(NOT EXISTS ${asn1c_call})
|
|
execute_process(COMMAND ${asn1c_call} ${RRC_FULL_DIR} ${RRC_GRAMMAR})
|
|
file(GLOB rrc_source ${RRC_FULL_DIR}/*.c)
|
|
set(rrc_source ${rrc_source} ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1_msg.c)
|
|
file(GLOB rrc_h ${RRC_FULL_DIR}/*.h)
|
|
set(rrc_h ${rrc_h} ${RRC_FULL_DIR}/asn1_constants.h)
|
|
add_library(RRC_LIB ${rrc_h} ${rrc_source})
|
|
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}
|
|
DEPENDS ${RRC_GRAMMAR}
|
|
)
|
|
|
|
# S1AP
|
|
# Same limitation as described in RRC: unknown generated file list
|
|
# so we generate it at cmake time
|
|
##############
|
|
add_list1_option(S1AP_VERSION R10 "S1AP Asn.1 grammar version" R8 R9 R10)
|
|
|
|
set(S1AP_DIR ${OPENAIRCN_DIR}/S1AP)
|
|
if (${S1AP_VERSION} STREQUAL "R10")
|
|
set (ASN1RELDIR R10.5)
|
|
add_definitions("-DUPDATE_RELEASE_9 -DUPDATE_RELEASE_10")
|
|
elseif (${S1AP_VERSION} STREQUAL "R9")
|
|
set (ASN1RELDIR R9.8)
|
|
add_definitions("-DUPDATE_RELEASE_9")
|
|
else(${S1AP_VERSION} STREQUAL "R8")
|
|
set (ASN1RELDIR R8.10)
|
|
endif(${S1AP_VERSION} STREQUAL "R10")
|
|
set(S1AP_ASN_DIR ${S1AP_DIR}/MESSAGES/ASN1/${ASN1RELDIR})
|
|
set(S1AP_ASN_FILES
|
|
${S1AP_ASN_DIR}/S1AP-CommonDataTypes.asn
|
|
${S1AP_ASN_DIR}/S1AP-Constants.asn
|
|
${S1AP_ASN_DIR}/S1AP-IEs.asn
|
|
${S1AP_ASN_DIR}/S1AP-PDU.asn
|
|
)
|
|
set(S1AP_C_DIR ${asn1_generated_dir}/${ASN1RELDIR})
|
|
|
|
execute_process(COMMAND ${asn1c_call} ${S1AP_C_DIR} ${S1AP_ASN_FILES})
|
|
file(GLOB S1AP_source ${S1AP_C_DIR}/*.c)
|
|
|
|
set(S1AP_OAI_generated
|
|
${S1AP_C_DIR}/s1ap_decoder.c
|
|
${S1AP_C_DIR}/s1ap_encoder.c
|
|
${S1AP_C_DIR}/s1ap_xer_print.c
|
|
${S1AP_C_DIR}/s1ap_ies_defs.h
|
|
)
|
|
file(GLOB s1ap_h ${S1AP_C_DIR}/*.h)
|
|
set(s1ap_h ${s1ap_h} )
|
|
|
|
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}
|
|
DEPENDS ${S1AP_ASN_FILES}
|
|
)
|
|
add_library(S1AP_LIB
|
|
${S1AP_OAI_generated}
|
|
${S1AP_source}
|
|
${S1AP_DIR}/s1ap_common.c
|
|
)
|
|
|
|
include_directories ("${S1AP_C_DIR}")
|
|
include_directories ("${S1AP_DIR}")
|
|
|
|
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
|
|
)
|
|
|
|
add_library(S1AP_EPC
|
|
${S1AP_C_DIR}/s1ap_ies_defs.h
|
|
${S1AP_DIR}/s1ap_mme_encoder.c
|
|
${S1AP_DIR}/s1ap_mme_decoder.c
|
|
${S1AP_DIR}/s1ap_mme_handlers.c
|
|
${S1AP_DIR}/s1ap_mme_nas_procedures.c
|
|
${S1AP_DIR}/s1ap_mme.c
|
|
${S1AP_DIR}/s1ap_mme_itti_messaging.c
|
|
${S1AP_DIR}/s1ap_mme_retransmission.c
|
|
${S1AP_DIR}/s1ap_mme_ta.c
|
|
)
|
|
# Hardware dependant options
|
|
###################################
|
|
add_list1_option(NB_ANTENNAS_RX "2" "Number of antennas in reception" "1" "2" "4")
|
|
add_list1_option(NB_ANTENNAS_TX "2" "Number of antennas in transmission" "1" "2" "4")
|
|
add_list1_option(NB_ANTENNAS_TXRX "2" "Number of antennas in ????" "1" "2" "4")
|
|
|
|
add_list2_option(RF_BOARD "EXMIMO" "RF head type" "False" "EXMIMO" "USRP" "ETHERNET")
|
|
|
|
if (${RF_BOARD} STREQUAL "EXMIMO")
|
|
set(DRIVER2013)
|
|
include_directories ("${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/")
|
|
include_directories ("${OPENAIR_TARGETS}/ARCH/EXMIMO/DEFS/")
|
|
set(HW_SOURCE ${HW_SOURCE}
|
|
${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.c
|
|
${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/gain_control.c)
|
|
|
|
elseif (${RF_BOARD} STREQUAL "USRP")
|
|
include_directories("/opt/include/uhd")
|
|
LINK_DIRECTORIES("/opt/lib")
|
|
set(option_USRP "uhd")
|
|
|
|
elseif (${RF_BOARD} STREQUAL "ETHERNET")
|
|
include_directories ("${OPENAIR_TARGETS}/ARCH/ETHERNET/USERSPACE/LIB")
|
|
|
|
endif (${RF_BOARD} STREQUAL "EXMIMO")
|
|
|
|
include_directories ("${OPENAIR_TARGETS}/ARCH/COMMON")
|
|
|
|
####################
|
|
# to be documented options
|
|
###################
|
|
add_boolean_option(ADDR_CONF False "specific to oaisim")
|
|
add_boolean_option(ASSERT True "???")
|
|
add_boolean_option(DISABLE_USE_NAS False "???")
|
|
add_boolean_option(DRIVER2013 True "????")
|
|
add_boolean_option(ENABLE_FXP True "????")
|
|
add_boolean_option(ENABLE_NAS_UE_LOGGING True "????")
|
|
add_boolean_option(ENABLE_NEW_MULTICAST False "specific to oaisim")
|
|
add_boolean_option(ENABLE_PDCP_NETLINK_FIFO False "????")
|
|
add_boolean_option(ENABLE_PGM_TRANSPORT False "specific to oaisim")
|
|
add_boolean_option(ENABLE_RAL False "????")
|
|
add_boolean_option(ENABLE_SECURITY True "???")
|
|
add_boolean_option(ENABLE_STANDALONE_EPC True "Compile MME, SGW and PGW in a single executable")
|
|
add_boolean_option(ENABLE_USE_CPU_EXECUTION_TIME True "Add data in vcd traces: disable it if perf issues")
|
|
add_boolean_option(ENABLE_USE_GTPU_IN_KERNEL True "as per name")
|
|
add_boolean_option(ENABLE_USE_MME True "???")
|
|
add_boolean_option(ENABLE_USE_NETFILTER_FOR_SGI False "SGI option")
|
|
add_boolean_option(ENABLE_USE_PCAP_FOR_SGI False "SGI option")
|
|
add_boolean_option(ENABLE_USE_RAW_SOCKET_FOR_SGI False "As per name")
|
|
add_boolean_option(ENABLE_VCD_FIFO True "Seems legacy: always true now")
|
|
add_boolean_option(ENB_MODE True "???")
|
|
add_boolean_option(HARD_RT False "???")
|
|
add_boolean_option(JUMBO_FRAME True "???")
|
|
add_boolean_option(LARGE_SCALE False "specific to oaisim: defines max eNB=2 and max UE=120")
|
|
add_boolean_option(LINK_PDCP_TO_GTPV1U True "????")
|
|
add_boolean_option(LINUX_LIST False "???")
|
|
add_boolean_option(LINUX True "???")
|
|
add_boolean_option(LOCALIZATION False "???")
|
|
add_boolean_option(LOG_NO_THREAD True "Disable thread for log, seems always set to true")
|
|
add_boolean_option(LOWLATENCY True "Use the Linux scheduler SCHED_DEADLINE: kernel >= 3.14")
|
|
add_boolean_option(MAC_CONTEXT True "specific to oaisim")
|
|
add_integer_option(MAX_NUM_CCs 1 "????")
|
|
add_boolean_option(MIH_C_MEDIEVAL_EXTENSIONS True "????")
|
|
add_boolean_option(MU_RECEIVER False "????")
|
|
add_boolean_option(NAS_ADDRESS_FIX False "specific to oaisim: for nasmesh driver")
|
|
add_boolean_option(NAS_MME False "NAS_UE and NAS_MME are incompatible options")
|
|
add_boolean_option(NAS_NETLINK False "???? Must be True to compile nasmesh driver without rtai")
|
|
add_boolean_option(NAS_UE True "NAS_UE and NAS_MME are incompatible options")
|
|
add_boolean_option(NEW_FFT True "????")
|
|
add_boolean_option(NO_RRM True "????")
|
|
add_boolean_option(OAI_EMU False "specific to oaisim")
|
|
add_boolean_option(OAISIM False "specific to oaisim")
|
|
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????")
|
|
add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????")
|
|
add_boolean_option(OPENAIR1 True "????")
|
|
add_boolean_option(OPENAIR2 True "????")
|
|
add_boolean_option(OPENAIR_EMU False "specific to oaisim")
|
|
add_boolean_option(OPENAIR_LTE True "Seems legacy: keep it to true")
|
|
add_boolean_option(PBS_SIM False "????")
|
|
add_boolean_option(PC_DSP True "????")
|
|
add_boolean_option(PC_TARGET True "????")
|
|
add_boolean_option(PERFECT_CE False "????")
|
|
add_boolean_option(PHY_ABSTRACTION False "specific to oaisim")
|
|
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(PHYSIM True "??? set in lte-softmodem, for L1 simulators dlsim, ulsim, ...?")
|
|
add_boolean_option(PUCCH True "????")
|
|
add_boolean_option(RANDOM_BF False "????")
|
|
add_boolean_option(RLC_STOP_ON_LOST_PDU False "Fatal assert in this case")
|
|
add_boolean_option(SECU False "???")
|
|
add_boolean_option(SMBV False "Rohde&Schwarz SMBV100A vector signal generator")
|
|
add_boolean_option(SPECTRA False "???")
|
|
add_boolean_option(UE_BUILD True "????")
|
|
add_boolean_option(USE_3GPP_ADDR_AS_LINK_ADDR False "As per attribute name")
|
|
add_boolean_option(USE_MME False "this flag is used only one time in lte-softmodem.c")
|
|
add_boolean_option(USER_MODE True "????")
|
|
add_list_string_option(PACKAGE_NAME "NotDefined" "As per attribute name")
|
|
|
|
add_boolean_option(EMOS False "????")
|
|
if(${EMOS})
|
|
add_definitions("-D_FILE_OFFSET_BITS=64")
|
|
set(EMOS_LIB gps)
|
|
endif(${EMOS})
|
|
|
|
|
|
# add the binary tree to the search path for include files
|
|
#######################################################
|
|
# We will find ConfigOAI.h after generation in target directory
|
|
include_directories("${OPENAIR_BIN_DIR}")
|
|
# add directories to find all include files
|
|
# the internal rule is to use generic names such as defs.h
|
|
# but to make it uniq name as adding the relative path in the include directtive
|
|
# example: #include "RRC/LITE/defs.h"
|
|
#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
|
|
if(ENB_MODE)
|
|
include_directories("${OPENAIR2_DIR}/COMMON")
|
|
include_directories("${OPENAIR2_DIR}/UTIL")
|
|
include_directories("${OPENAIR2_DIR}/UTIL/LOG")
|
|
include_directories("${OPENAIRCN_DIR}/COMMON")
|
|
include_directories("${OPENAIRCN_DIR}/UTILS")
|
|
message("openair2 first")
|
|
else()
|
|
message(openair-cn first)
|
|
include_directories("${OPENAIRCN_DIR}/COMMON")
|
|
include_directories("${OPENAIRCN_DIR}/UTILS")
|
|
include_directories("${OPENAIR2_DIR}/COMMON")
|
|
include_directories("${OPENAIR2_DIR}/UTIL")
|
|
include_directories("${OPENAIR2_DIR}/UTIL/LOG")
|
|
endif()
|
|
include_directories("${OPENAIR1_DIR}")
|
|
include_directories("${OPENAIR2_DIR}/NAS")
|
|
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")
|
|
include_directories("${OPENAIR2_DIR}/RRC/LITE/MESSAGES")
|
|
include_directories("${OPENAIR2_DIR}/RRC/LITE")
|
|
include_directories("${OPENAIR3_DIR}/RAL-LTE/INTERFACE-802.21/INCLUDE")
|
|
include_directories("${OPENAIR3_DIR}/RAL-LTE/LTE_RAL_ENB/INCLUDE")
|
|
include_directories("${OPENAIR3_DIR}/RAL-LTE/LTE_RAL_UE/INCLUDE")
|
|
include_directories("${OPENAIR_DIR}/common/utils")
|
|
include_directories("${OPENAIR_DIR}/common/utils/collection/hashtable")
|
|
include_directories("${OPENAIR_DIR}/common/utils/itti")
|
|
include_directories("${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/api/network")
|
|
include_directories("${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/include")
|
|
include_directories("${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/ies")
|
|
include_directories("${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/emm/msg")
|
|
include_directories("${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/esm/msg")
|
|
include_directories("${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/util")
|
|
include_directories("${OPENAIRCN_DIR}/SECU")
|
|
include_directories("${OPENAIRCN_DIR}/SCTP")
|
|
include_directories("${OPENAIR2_DIR}/X2AP")
|
|
include_directories("${OPENAIRCN_DIR}/S1AP")
|
|
include_directories("${OPENAIRCN_DIR}/UDP")
|
|
include_directories("${OPENAIRCN_DIR}/GTPV1-U")
|
|
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")
|
|
include_directories("${OPENAIR2_DIR}/UTIL/OSA")
|
|
include_directories("${OPENAIR2_DIR}/UTIL/LFDS/liblfds6.1.1/liblfds611/inc")
|
|
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")
|
|
include_directories("${OPENAIR2_DIR}/RRC/LITE/MESSAGES")
|
|
include_directories("${OPENAIRCN_DIR}/NAS")
|
|
include_directories("${OPENAIRCN_DIR}/GTPV1-U/nw-gtpv1u/shared")
|
|
include_directories("${OPENAIRCN_DIR}/GTPV1-U/nw-gtpv1u/include")
|
|
include_directories("${OPENAIRCN_DIR}/SGW-LITE")
|
|
include_directories("${OPENAIRCN_DIR}/MME_APP")
|
|
include_directories("${OPENAIRCN_DIR}/SGI")
|
|
include_directories("${OPENAIRCN_DIR}/S6A")
|
|
include_directories("${OPENAIR_DIR}")
|
|
|
|
# define where are the source files
|
|
##################################
|
|
#add_subdirectory (${OPENAIR_DIR} .)
|
|
|
|
# define libraries
|
|
#add_library(MathFunctions mysqrt.cxx)
|
|
function(add_whole_dir dir lib_name)
|
|
file(GLOB mylist ${dir})
|
|
add_library(${lib_name} ${mylist})
|
|
endfunction(add_whole_dir)
|
|
|
|
function(add_whole_tree dir lib_name)
|
|
file(GLOB_RECURSE mylist "${dir}/*.c")
|
|
add_library(${lib_name} ${mylist})
|
|
endfunction(add_whole_tree)
|
|
|
|
# Utilities Library
|
|
################
|
|
add_library(HASHTABLE
|
|
${OPENAIR_DIR}/common/utils/collection/hashtable/hashtable.c
|
|
${OPENAIR_DIR}/common/utils/collection/hashtable/obj_hashtable.c
|
|
)
|
|
|
|
set(UTIL_SRC
|
|
${OPENAIR2_DIR}/UTIL/CLI/cli.c
|
|
${OPENAIR2_DIR}/UTIL/CLI/cli_cmd.c
|
|
${OPENAIR2_DIR}/UTIL/CLI/cli_server.c
|
|
${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
|
|
${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/client_traci_OMG.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/common.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/grid.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/id_manager.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/job.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/mobility_parser.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/omg.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/omg_hashtable.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/rwalk.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/rwp.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/socket_traci_OMG.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/static.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/steadystaterwp.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/storage_traci_OMG.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/trace.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/trace_hashtable.c
|
|
${OPENAIR2_DIR}/UTIL/OPT/probe.c
|
|
${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
|
|
)
|
|
add_library(UTIL ${UTIL_SRC})
|
|
|
|
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
|
|
${OPENAIRCN_DIR}/SECU/kdf.c
|
|
${OPENAIRCN_DIR}/SECU/rijndael.c
|
|
${OPENAIRCN_DIR}/SECU/snow3g.c
|
|
${OPENAIRCN_DIR}/SECU/key_nas_deriver.c
|
|
${OPENAIRCN_DIR}/SECU/nas_stream_eea1.c
|
|
${OPENAIRCN_DIR}/SECU/nas_stream_eia1.c
|
|
${OPENAIRCN_DIR}/SECU/nas_stream_eea2.c
|
|
${OPENAIRCN_DIR}/SECU/nas_stream_eia2.c
|
|
)
|
|
add_library(SECU_CN ${SECU_CN_SRC})
|
|
|
|
# Scheduler
|
|
################################"
|
|
add_whole_dir(${OPENAIR1_DIR}/SCHED/*.c SCHED_LIB)
|
|
|
|
# Layer 1
|
|
#############################
|
|
set(PHY_SRC
|
|
# depend on code generation from asn1c
|
|
${RRC_FULL_DIR}/asn1_constants.h
|
|
# actual source
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pss.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/sss.c
|
|
${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/dlsch_demodulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dlsch_llr_computation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/power_control.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dlsch_decoding.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dlsch_scrambling.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci_tools.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/uci_tools.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/lte_mcs.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pbch.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/dci.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/prach.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/pmch.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/group_hopping.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/srs_modulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/drs_modulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_modulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_demodulation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_coding.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/ulsch_decoding.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/rar_tools.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/print_stats.c
|
|
${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/initial_sync.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/ofdm_mod.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_mbsfn.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.c
|
|
${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_time.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_adjust_sync.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_dl_channel_estimation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_dl_mbsfn_channel_estimation.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ul_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/lte_eNB_measurements.c
|
|
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/adjust_gain.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
|
|
${OPENAIR1_DIR}/PHY/CODING/ccoding_byte.c
|
|
${OPENAIR1_DIR}/PHY/CODING/ccoding_byte_lte.c
|
|
${OPENAIR1_DIR}/PHY/CODING/3gpplte_sse.c
|
|
${OPENAIR1_DIR}/PHY/CODING/crc_byte.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/lte_rate_matching.c
|
|
${OPENAIR1_DIR}/PHY/CODING/rate_matching.c
|
|
${OPENAIR1_DIR}/PHY/CODING/viterbi.c
|
|
${OPENAIR1_DIR}/PHY/CODING/viterbi_lte.c
|
|
${OPENAIR1_DIR}/PHY/INIT/lte_init.c
|
|
${OPENAIR1_DIR}/PHY/INIT/lte_parms.c
|
|
${OPENAIR1_DIR}/PHY/INIT/init_top.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/fft.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/lte_dfts.c
|
|
${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/cadd_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/time_meas.c
|
|
${OPENAIR1_DIR}/PHY/TOOLS/lut.c
|
|
)
|
|
if (${SMBV})
|
|
set(PHY_SRC "${PHY_SRC} ${OPENAIR1_DIR}/PHY/TOOLS/smbv.c")
|
|
endif (${SMBV})
|
|
add_library(PHY ${PHY_SRC})
|
|
|
|
#Layer 2 library
|
|
#####################
|
|
set(MAC_DIR ${OPENAIR2_DIR}/LAYER2/MAC)
|
|
set(RLC_DIR ${OPENAIR2_DIR}/LAYER2/RLC)
|
|
set(RLC_UM_DIR ${OPENAIR2_DIR}/LAYER2/RLC/UM_v9.3.0)
|
|
set(RLC_AM_DIR ${OPENAIR2_DIR}/LAYER2/RLC/AM_v9.3.0)
|
|
set(RLC_TM_DIR ${OPENAIR2_DIR}/LAYER2/RLC/TM_v9.3.0)
|
|
set(RRC_DIR ${OPENAIR2_DIR}/RRC/LITE)
|
|
set(PDCP_DIR ${OPENAIR2_DIR}/LAYER2/PDCP_v10.1.0)
|
|
set(L2_SRC
|
|
${OPENAIR2_DIR}/LAYER2/openair2_proc.c
|
|
${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
|
|
${PDCP_DIR}/pdcp_netlink.c
|
|
${RLC_AM_DIR}/rlc_am.c
|
|
${RLC_AM_DIR}/rlc_am_init.c
|
|
${RLC_AM_DIR}/rlc_am_timer_poll_retransmit.c
|
|
${RLC_AM_DIR}/rlc_am_timer_reordering.c
|
|
${RLC_AM_DIR}/rlc_am_timer_status_prohibit.c
|
|
${RLC_AM_DIR}/rlc_am_segment.c
|
|
${RLC_AM_DIR}/rlc_am_segments_holes.c
|
|
${RLC_AM_DIR}/rlc_am_in_sdu.c
|
|
${RLC_AM_DIR}/rlc_am_receiver.c
|
|
${RLC_AM_DIR}/rlc_am_retransmit.c
|
|
${RLC_AM_DIR}/rlc_am_windows.c
|
|
${RLC_AM_DIR}/rlc_am_rx_list.c
|
|
${RLC_AM_DIR}/rlc_am_reassembly.c
|
|
${RLC_AM_DIR}/rlc_am_status_report.c
|
|
${RLC_TM_DIR}/rlc_tm.c
|
|
${RLC_TM_DIR}/rlc_tm_init.c
|
|
${RLC_UM_DIR}/rlc_um.c
|
|
${RLC_UM_DIR}/rlc_um_fsm.c
|
|
${RLC_UM_DIR}/rlc_um_control_primitives.c
|
|
${RLC_UM_DIR}/rlc_um_segment.c
|
|
${RLC_UM_DIR}/rlc_um_reassembly.c
|
|
${RLC_UM_DIR}/rlc_um_receiver.c
|
|
${RLC_UM_DIR}/rlc_um_dar.c
|
|
${RLC_DIR}/rlc_mac.c
|
|
${RLC_DIR}/rlc.c
|
|
${RLC_DIR}/rlc_rrc.c
|
|
${RLC_DIR}/rlc_mpls.c
|
|
${RRC_DIR}/rrc_UE.c
|
|
${RRC_DIR}/rrc_eNB.c
|
|
${RRC_DIR}/rrc_eNB_S1AP.c
|
|
${RRC_DIR}/rrc_common.c
|
|
${RRC_DIR}/L2_interface.c
|
|
)
|
|
set (MAC_SRC
|
|
${MAC_DIR}/lte_transport_init.c
|
|
${MAC_DIR}/main.c
|
|
${MAC_DIR}/ue_procedures.c
|
|
${MAC_DIR}/ra_procedures.c
|
|
${MAC_DIR}/l1_helpers.c
|
|
${MAC_DIR}/rar_tools.c
|
|
${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
|
|
${MAC_DIR}/pre_processor.c
|
|
${MAC_DIR}/config.c
|
|
)
|
|
|
|
set (ENB_APP_SRC
|
|
${OPENAIR2_DIR}/ENB_APP/enb_app.c
|
|
${OPENAIR2_DIR}/ENB_APP/enb_config.c
|
|
)
|
|
|
|
add_library(L2
|
|
${L2_SRC}
|
|
${MAC_SRC}
|
|
${ENB_APP_SRC}
|
|
${OPENAIR2_DIR}/RRC/L2_INTERFACE/openair_rrc_L2_interface.c)
|
|
|
|
# L3 Libs
|
|
##########################
|
|
|
|
set(RAL_LTE_DIR ${OPENAIR3_DIR}/RAL-LTE/)
|
|
if (${ENABLE_RAL})
|
|
set(RAL_LTE_SRC
|
|
${RRC_DIR}/rrc_UE_ral.c
|
|
${RRC_DIR}/rrc_eNB_ral.c
|
|
${RAL_LTE_DIR}LTE_RAL_ENB/SRC/lteRALenb_action.c
|
|
${RAL_LTE_DIR}LTE_RAL_ENB/SRC/lteRALenb_main.c
|
|
${RAL_LTE_DIR}LTE_RAL_ENB/SRC/lteRALenb_mih_msg.c
|
|
${RAL_LTE_DIR}LTE_RAL_ENB/SRC/lteRALenb_parameters.c
|
|
${RAL_LTE_DIR}LTE_RAL_ENB/SRC/lteRALenb_process.c
|
|
${RAL_LTE_DIR}LTE_RAL_ENB/SRC/lteRALenb_rrc_msg.c
|
|
${RAL_LTE_DIR}LTE_RAL_ENB/SRC/lteRALenb_subscribe.c
|
|
${RAL_LTE_DIR}LTE_RAL_ENB/SRC/lteRALenb_thresholds.c
|
|
${RAL_LTE_DIR}LTE_RAL_UE/SRC/lteRALue_action.c
|
|
${RAL_LTE_DIR}LTE_RAL_UE/SRC/lteRALue_main.c
|
|
${RAL_LTE_DIR}LTE_RAL_UE/SRC/lteRALue_mih_msg.c
|
|
${RAL_LTE_DIR}LTE_RAL_UE/SRC/lteRALue_parameters.c
|
|
${RAL_LTE_DIR}LTE_RAL_UE/SRC/lteRALue_process.c
|
|
${RAL_LTE_DIR}LTE_RAL_UE/SRC/lteRALue_rrc_msg.c
|
|
${RAL_LTE_DIR}LTE_RAL_UE/SRC/lteRALue_subscribe.c
|
|
${RAL_LTE_DIR}LTE_RAL_UE/SRC/lteRALue_thresholds.c
|
|
)
|
|
add_library(RAL ${RAL_LTE_SRC})
|
|
set(RAL_LIB RAL)
|
|
endif()
|
|
|
|
if(MIH_C_MEDIEVAL_EXTENSIONS)
|
|
set(MIH_SRC
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_header_codec.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_msg_codec.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_primitive_codec.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_F1_basic_data_types_codec.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_F2_general_data_types_codec.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_F3_data_types_for_address_codec.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_F4_data_types_for_links_codec.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_F9_data_types_for_qos_codec.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_F13_data_types_for_information_elements_codec.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_L2_type_values_for_tlv_encoding.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_Medieval_extensions.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C_bit_buffer.c
|
|
${RAL_LTE_DIR}INTERFACE-802.21/C/MIH_C.c
|
|
)
|
|
add_library(MIH ${MIH_SRC})
|
|
set(MIH_LIB MIH)
|
|
endif()
|
|
|
|
# CN libs
|
|
##########################
|
|
|
|
add_library(CN_UTILS
|
|
${OPENAIRCN_DIR}/UTILS/conversions.c
|
|
${OPENAIRCN_DIR}/UTILS/enum_string.c
|
|
${OPENAIRCN_DIR}/UTILS/log.c
|
|
${OPENAIRCN_DIR}/UTILS/mme_config.c
|
|
${OPENAIRCN_DIR}/UTILS/mcc_mnc_itu.c
|
|
)
|
|
|
|
set(GTPV1U_DIR ${OPENAIRCN_DIR}/GTPV1-U)
|
|
set (GTPV1U_SRC
|
|
${RRC_DIR}/rrc_eNB_GTPV1U.c
|
|
${GTPV1U_DIR}/nw-gtpv1u/src/NwGtpv1uTunnelEndPoint.c
|
|
${GTPV1U_DIR}/nw-gtpv1u/src/NwGtpv1uTrxn.c
|
|
${GTPV1U_DIR}/nw-gtpv1u/src/NwGtpv1uMsg.c
|
|
${GTPV1U_DIR}/nw-gtpv1u/src/NwGtpv1u.c
|
|
${GTPV1U_DIR}/gtpv1u_teid_pool.c
|
|
)
|
|
add_library(GTPV1U ${GTPV1U_SRC})
|
|
|
|
set(GTPV2C_DIR ${OPENAIRCN_DIR}/GTPV2-C/nwgtpv2c-0.11/src)
|
|
add_library(GTPV2C
|
|
${GTPV2C_DIR}/NwGtpv2cTrxn.c
|
|
${GTPV2C_DIR}/NwGtpv2cTunnel.c
|
|
${GTPV2C_DIR}/NwGtpv2cMsg.c
|
|
${GTPV2C_DIR}/NwGtpv2cMsgIeParseInfo.c
|
|
${GTPV2C_DIR}/NwGtpv2cMsgParser.c
|
|
${GTPV2C_DIR}/NwGtpv2c.c
|
|
)
|
|
include_directories(${OPENAIRCN_DIR}/GTPV2-C/nwgtpv2c-0.11/include/)
|
|
include_directories(${OPENAIRCN_DIR}/GTPV2-C/nwgtpv2c-0.11/shared/)
|
|
|
|
execute_process(
|
|
COMMAND /sbin/iptables -V
|
|
OUTPUT_VARIABLE iptables_version
|
|
)
|
|
string(REGEX REPLACE "[a-zA-Z .\r\n]" "" IPTVERSION ${iptables_version})
|
|
string(REGEX REPLACE "[a-zA-Z \r\n]" "" IPTABLES_VERSION_STRING ${iptables_version})
|
|
|
|
# From original Polaris code, added _lib because cmake doesn't accept two targets with the same name
|
|
# and the driver is also named xt_GTPUAH
|
|
# the _lib suffix is removed during installation in /lib/xtables
|
|
add_library(xt_GTPUAH_lib SHARED ${OPENAIRCN_DIR}/GTPV1-U/GTPUAH/libxt_GTPUAH.c)
|
|
target_compile_definitions(xt_GTPUAH_lib PRIVATE
|
|
-D_LARGEFILE_SOURCE=1
|
|
-D_LARGE_FILES
|
|
-D_FILE_OFFSET_BITS=64
|
|
-D_REENTRANT
|
|
-D_INIT=libxt_GTPUAH_init
|
|
-DKVERSION=3
|
|
-DPIC
|
|
IPTVERSION=${IPTVERSION} -DIPTABLES_VERSION_STRING=\"${IPTABLES_VERSION_STRING}\"
|
|
)
|
|
|
|
|
|
add_library(xt_GTPURH_lib SHARED ${OPENAIRCN_DIR}/GTPV1-U/GTPURH/libxt_GTPURH.c)
|
|
target_compile_definitions(xt_GTPURH_lib PRIVATE
|
|
-D_LARGEFILE_SOURCE=1
|
|
-D_LARGE_FILES
|
|
-D_FILE_OFFSET_BITS=64
|
|
-D_REENTRANT
|
|
-D_INIT=libxt_GTPURH_init
|
|
-DKVERSION=3
|
|
-DPIC
|
|
-DIPTVERSION=${IPTVERSION} -DIPTABLES_VERSION_STRING=${IPTABLES_VERSION_STRING}
|
|
)
|
|
|
|
|
|
set(SGI_DIR ${OPENAIRCN_DIR}/SGI)
|
|
set(SGI_SRC
|
|
${SGI_DIR}/sgi_task.c
|
|
${SGI_DIR}/sgi_socket.c
|
|
${SGI_DIR}/sgi_egress.c
|
|
${SGI_DIR}/sgi_util.c
|
|
)
|
|
if(ENABLE_USE_PCAP_FOR_SGI)
|
|
set(SGI_SRC ${SGI_SRC}
|
|
${SGI_DIR}/sgi_pcap.c
|
|
)
|
|
set(SGI_option_lib ${SGI_option_lib} pcap)
|
|
endif()
|
|
if (ENABLE_USE_NETFILTER_FOR_SGI)
|
|
set(SGI_SRC ${SGI_SRC}
|
|
${SGI_DIR}/sgi_nf.c
|
|
)
|
|
set(SGI_option_lib ${SGI_option_lib} netfilter_queue nfnetlink)
|
|
endif()
|
|
add_library(SGI ${SGI_SRC})
|
|
|
|
|
|
set(SCTP_SRC
|
|
${OPENAIRCN_DIR}/SCTP/sctp_common.c
|
|
${OPENAIRCN_DIR}/SCTP/sctp_eNB_task.c
|
|
${OPENAIRCN_DIR}/SCTP/sctp_eNB_itti_messaging.c
|
|
)
|
|
add_library(SCTP_CLIENT ${SCTP_SRC})
|
|
|
|
add_library(SCTP_SERVER
|
|
${OPENAIRCN_DIR}/SCTP/sctp_common.c
|
|
${OPENAIRCN_DIR}/SCTP/sctp_itti_messaging.c
|
|
${OPENAIRCN_DIR}/SCTP/sctp_primitives_server.c
|
|
)
|
|
|
|
|
|
add_library(UDP ${OPENAIRCN_DIR}/UDP/udp_eNB_task.c)
|
|
|
|
add_library(UDP_SERVER ${OPENAIRCN_DIR}/UDP/udp_primitives_server.c)
|
|
|
|
set(S11_DIR ${OPENAIRCN_DIR}/S11)
|
|
add_library(S11
|
|
${S11_DIR}/s11_common.c
|
|
${S11_DIR}/s11_ie_formatter.c
|
|
${S11_DIR}/s11_mme_task.c
|
|
${S11_DIR}/s11_sgw.c
|
|
${S11_DIR}/s11_mme_session_manager.c
|
|
${S11_DIR}/s11_sgw_session_manager.c
|
|
${S11_DIR}/s11_sgw_bearer_manager.c
|
|
)
|
|
|
|
set(S6A_DIR ${OPENAIRCN_DIR}/S6A)
|
|
add_library(S6A
|
|
${S6A_DIR}/s6a_auth_info.c
|
|
${S6A_DIR}/s6a_dict.c
|
|
${S6A_DIR}/s6a_error.c
|
|
${S6A_DIR}/s6a_peer.c
|
|
${S6A_DIR}/s6a_subscription_data.c
|
|
${S6A_DIR}/s6a_task.c
|
|
${S6A_DIR}/s6a_up_loc.c
|
|
)
|
|
|
|
|
|
set(SGW_DIR ${OPENAIRCN_DIR}/SGW-LITE)
|
|
add_library (SGW
|
|
${SGW_DIR}/spgw_config.c
|
|
${SGW_DIR}/s11_causes.c
|
|
${SGW_DIR}/sgw_lite_task.c
|
|
${SGW_DIR}/sgw_lite_handlers.c
|
|
${SGW_DIR}/sgw_lite_context_manager.c
|
|
${SGW_DIR}/pgw_lite_paa.c
|
|
)
|
|
|
|
|
|
set(MME_DIR ${OPENAIRCN_DIR}/MME_APP)
|
|
add_library(MME_APP
|
|
${MME_DIR}/mme_app_capabilities.c
|
|
${MME_DIR}/mme_app_context.c
|
|
${MME_DIR}/mme_app_main.c
|
|
${MME_DIR}/mme_app_bearer.c
|
|
${MME_DIR}/mme_app_authentication.c
|
|
${MME_DIR}/mme_app_location.c
|
|
${MME_DIR}/mme_app_statistics.c
|
|
${MME_DIR}/s6a_2_nas_cause.c
|
|
)
|
|
|
|
|
|
set(NAS_SRC ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/)
|
|
set(libnas_api_OBJS
|
|
${NAS_SRC}api/mme/mme_api.c
|
|
${NAS_SRC}api/network/nas_message.c
|
|
${NAS_SRC}api/network/as_message.c
|
|
${NAS_SRC}api/network/network_api.c
|
|
)
|
|
|
|
|
|
set(libnas_emm_OBJS
|
|
${NAS_SRC}emm/Attach.c
|
|
${NAS_SRC}emm/Authentication.c
|
|
${NAS_SRC}emm/Detach.c
|
|
${NAS_SRC}emm/EmmCommon.c
|
|
${NAS_SRC}emm/emm_data_ctx.c
|
|
${NAS_SRC}emm/emm_main.c
|
|
${NAS_SRC}emm/EmmStatusHdl.c
|
|
${NAS_SRC}emm/Identification.c
|
|
${NAS_SRC}emm/IdleMode.c
|
|
${NAS_SRC}emm/LowerLayer.c
|
|
${NAS_SRC}emm/SecurityModeControl.c
|
|
${NAS_SRC}emm/ServiceRequestHdl.c
|
|
${NAS_SRC}emm/TrackingAreaUpdate.c
|
|
)
|
|
|
|
set(libnas_emm_msg_OBJS
|
|
${NAS_SRC}emm/msg/AttachAccept.c
|
|
${NAS_SRC}emm/msg/AuthenticationFailure.c
|
|
${NAS_SRC}emm/msg/CsServiceNotification.c
|
|
${NAS_SRC}emm/msg/ExtendedServiceRequest.c
|
|
${NAS_SRC}emm/msg/IdentityResponse.c
|
|
${NAS_SRC}emm/msg/EmmInformation.c
|
|
${NAS_SRC}emm/msg/ServiceReject.c
|
|
${NAS_SRC}emm/msg/TrackingAreaUpdateReject.c
|
|
${NAS_SRC}emm/msg/AttachComplete.c
|
|
${NAS_SRC}emm/msg/AuthenticationReject.c
|
|
${NAS_SRC}emm/msg/DetachAccept.c
|
|
${NAS_SRC}emm/msg/GutiReallocationCommand.c
|
|
${NAS_SRC}emm/msg/emm_msg.c
|
|
${NAS_SRC}emm/msg/SecurityModeCommand.c
|
|
${NAS_SRC}emm/msg/ServiceRequest.c
|
|
${NAS_SRC}emm/msg/TrackingAreaUpdateRequest.c
|
|
${NAS_SRC}emm/msg/AttachReject.c
|
|
${NAS_SRC}emm/msg/AuthenticationRequest.c
|
|
${NAS_SRC}emm/msg/DetachRequest.c
|
|
${NAS_SRC}emm/msg/GutiReallocationComplete.c
|
|
${NAS_SRC}emm/msg/SecurityModeComplete.c
|
|
${NAS_SRC}emm/msg/TrackingAreaUpdateAccept.c
|
|
${NAS_SRC}emm/msg/UplinkNasTransport.c
|
|
${NAS_SRC}emm/msg/AttachRequest.c
|
|
${NAS_SRC}emm/msg/AuthenticationResponse.c
|
|
${NAS_SRC}emm/msg/DownlinkNasTransport.c
|
|
${NAS_SRC}emm/msg/EmmStatus.c
|
|
${NAS_SRC}emm/msg/IdentityRequest.c
|
|
${NAS_SRC}emm/msg/SecurityModeReject.c
|
|
${NAS_SRC}emm/msg/TrackingAreaUpdateComplete.c
|
|
)
|
|
|
|
set(libnas_emm_sap_OBJS
|
|
${NAS_SRC}emm/sap/emm_as.c
|
|
${NAS_SRC}emm/sap/emm_cn.c
|
|
${NAS_SRC}emm/sap/EmmDeregisteredNoImsi.c
|
|
${NAS_SRC}emm/sap/emm_reg.c
|
|
${NAS_SRC}emm/sap/EmmRegisteredUpdateNeeded.c
|
|
${NAS_SRC}emm/sap/EmmDeregisteredNormalService.c
|
|
${NAS_SRC}emm/sap/emm_sap.c
|
|
${NAS_SRC}emm/sap/EmmDeregisteredPlmnSearch.c
|
|
${NAS_SRC}emm/sap/emm_esm.c
|
|
${NAS_SRC}emm/sap/EmmRegisteredAttemptingToUpdate.c
|
|
${NAS_SRC}emm/sap/emm_send.c
|
|
${NAS_SRC}emm/sap/EmmCommonProcedureInitiated.c
|
|
${NAS_SRC}emm/sap/EmmRegistered.c
|
|
${NAS_SRC}emm/sap/EmmDeregisteredAttachNeeded.c
|
|
${NAS_SRC}emm/sap/EmmRegisteredImsiDetachInitiated.c
|
|
${NAS_SRC}emm/sap/EmmServiceRequestInitiated.c
|
|
${NAS_SRC}emm/sap/EmmDeregisteredAttemptingToAttach.c
|
|
${NAS_SRC}emm/sap/emm_fsm.c
|
|
${NAS_SRC}emm/sap/EmmRegisteredInitiated.c
|
|
${NAS_SRC}emm/sap/EmmTrackingAreaUpdatingInitiated.c
|
|
${NAS_SRC}emm/sap/EmmDeregistered.c
|
|
${NAS_SRC}emm/sap/EmmRegisteredLimitedService.c
|
|
${NAS_SRC}emm/sap/EmmDeregisteredInitiated.c
|
|
${NAS_SRC}emm/sap/EmmNull.c
|
|
${NAS_SRC}emm/sap/EmmRegisteredNoCellAvailable.c
|
|
${NAS_SRC}emm/sap/EmmDeregisteredLimitedService.c
|
|
${NAS_SRC}emm/sap/emm_recv.c
|
|
${NAS_SRC}emm/sap/EmmRegisteredNormalService.c
|
|
${NAS_SRC}emm/sap/EmmDeregisteredNoCellAvailable.c
|
|
${NAS_SRC}emm/sap/EmmRegisteredPlmnSearch.c
|
|
)
|
|
|
|
set (libnas_esm_OBJS
|
|
${NAS_SRC}esm/esm_ebr_context.c
|
|
${NAS_SRC}esm/PdnConnectivity.c
|
|
${NAS_SRC}esm/esm_ebr.c
|
|
${NAS_SRC}esm/EpsBearerContextDeactivation.c
|
|
${NAS_SRC}esm/DefaultEpsBearerContextActivation.c
|
|
${NAS_SRC}esm/DedicatedEpsBearerContextActivation.c
|
|
${NAS_SRC}esm/PdnDisconnect.c
|
|
${NAS_SRC}esm/EsmStatusHdl.c
|
|
${NAS_SRC}esm/esm_main.c
|
|
${NAS_SRC}esm/esm_pt.c
|
|
${NAS_SRC}esm/esm_ip.c
|
|
)
|
|
|
|
set(libnas_esm_msg_OBJS
|
|
${NAS_SRC}esm/msg/ModifyEpsBearerContextRequest.c
|
|
${NAS_SRC}esm/msg/DeactivateEpsBearerContextRequest.c
|
|
${NAS_SRC}esm/msg/BearerResourceAllocationReject.c
|
|
${NAS_SRC}esm/msg/BearerResourceModificationRequest.c
|
|
${NAS_SRC}esm/msg/ActivateDedicatedEpsBearerContextRequest.c
|
|
${NAS_SRC}esm/msg/EsmInformationResponse.c
|
|
${NAS_SRC}esm/msg/PdnDisconnectReject.c
|
|
${NAS_SRC}esm/msg/ActivateDedicatedEpsBearerContextAccept.c
|
|
${NAS_SRC}esm/msg/PdnDisconnectRequest.c
|
|
${NAS_SRC}esm/msg/BearerResourceModificationReject.c
|
|
${NAS_SRC}esm/msg/ActivateDefaultEpsBearerContextAccept.c
|
|
${NAS_SRC}esm/msg/ActivateDedicatedEpsBearerContextReject.c
|
|
${NAS_SRC}esm/msg/ModifyEpsBearerContextAccept.c
|
|
${NAS_SRC}esm/msg/DeactivateEpsBearerContextAccept.c
|
|
${NAS_SRC}esm/msg/esm_msg.c
|
|
${NAS_SRC}esm/msg/EsmInformationRequest.c
|
|
${NAS_SRC}esm/msg/ActivateDefaultEpsBearerContextRequest.c
|
|
${NAS_SRC}esm/msg/ModifyEpsBearerContextReject.c
|
|
${NAS_SRC}esm/msg/EsmStatus.c
|
|
${NAS_SRC}esm/msg/PdnConnectivityReject.c
|
|
${NAS_SRC}esm/msg/ActivateDefaultEpsBearerContextReject.c
|
|
${NAS_SRC}esm/msg/PdnConnectivityRequest.c
|
|
${NAS_SRC}esm/msg/BearerResourceAllocationRequest.c
|
|
)
|
|
|
|
set(libnas_esm_sap_OBJS
|
|
${NAS_SRC}esm/sap/esm_recv.c
|
|
${NAS_SRC}esm/sap/esm_send.c
|
|
${NAS_SRC}esm/sap/esm_sap.c
|
|
)
|
|
|
|
set(libnas_ies_OBJS
|
|
${NAS_SRC}ies/UeSecurityCapability.c
|
|
${NAS_SRC}ies/SecurityHeaderType.c
|
|
${NAS_SRC}ies/RadioPriority.c
|
|
${NAS_SRC}ies/EpsAttachResult.c
|
|
${NAS_SRC}ies/ImeisvRequest.c
|
|
${NAS_SRC}ies/EmergencyNumberList.c
|
|
${NAS_SRC}ies/SupportedCodecList.c
|
|
${NAS_SRC}ies/EsmCause.c
|
|
${NAS_SRC}ies/NetworkName.c
|
|
${NAS_SRC}ies/AuthenticationResponseParameter.c
|
|
${NAS_SRC}ies/Cli.c
|
|
${NAS_SRC}ies/AccessPointName.c
|
|
${NAS_SRC}ies/DaylightSavingTime.c
|
|
${NAS_SRC}ies/LcsIndicator.c
|
|
${NAS_SRC}ies/PagingIdentity.c
|
|
${NAS_SRC}ies/EpsMobileIdentity.c
|
|
${NAS_SRC}ies/GutiType.c
|
|
${NAS_SRC}ies/NasKeySetIdentifier.c
|
|
${NAS_SRC}ies/CsfbResponse.c
|
|
${NAS_SRC}ies/PacketFlowIdentifier.c
|
|
${NAS_SRC}ies/ApnAggregateMaximumBitRate.c
|
|
${NAS_SRC}ies/EpsBearerContextStatus.c
|
|
${NAS_SRC}ies/MobileIdentity.c
|
|
${NAS_SRC}ies/AuthenticationFailureParameter.c
|
|
${NAS_SRC}ies/EpsUpdateResult.c
|
|
${NAS_SRC}ies/TimeZone.c
|
|
${NAS_SRC}ies/MessageType.c
|
|
${NAS_SRC}ies/EmmCause.c
|
|
${NAS_SRC}ies/MobileStationClassmark2.c
|
|
${NAS_SRC}ies/AuthenticationParameterRand.c
|
|
${NAS_SRC}ies/PdnAddress.c
|
|
${NAS_SRC}ies/MobileStationClassmark3.c
|
|
${NAS_SRC}ies/ServiceType.c
|
|
${NAS_SRC}ies/NasRequestType.c
|
|
${NAS_SRC}ies/PlmnList.c
|
|
${NAS_SRC}ies/EpsQualityOfService.c
|
|
${NAS_SRC}ies/NasMessageContainer.c
|
|
${NAS_SRC}ies/EsmInformationTransferFlag.c
|
|
${NAS_SRC}ies/TrafficFlowTemplate.c
|
|
${NAS_SRC}ies/LinkedEpsBearerIdentity.c
|
|
${NAS_SRC}ies/NasSecurityAlgorithms.c
|
|
${NAS_SRC}ies/LlcServiceAccessPointIdentifier.c
|
|
${NAS_SRC}ies/ShortMac.c
|
|
${NAS_SRC}ies/TrafficFlowAggregateDescription.c
|
|
${NAS_SRC}ies/PTmsiSignature.c
|
|
${NAS_SRC}ies/ProtocolDiscriminator.c
|
|
${NAS_SRC}ies/EpsBearerIdentity.c
|
|
${NAS_SRC}ies/TimeZoneAndTime.c
|
|
${NAS_SRC}ies/TrackingAreaIdentityList.c
|
|
${NAS_SRC}ies/QualityOfService.c
|
|
${NAS_SRC}ies/EpsUpdateType.c
|
|
${NAS_SRC}ies/PdnType.c
|
|
${NAS_SRC}ies/UeRadioCapabilityInformationUpdateNeeded.c
|
|
${NAS_SRC}ies/AuthenticationParameterAutn.c
|
|
${NAS_SRC}ies/EpsAttachType.c
|
|
${NAS_SRC}ies/IdentityType2.c
|
|
${NAS_SRC}ies/LcsClientIdentity.c
|
|
${NAS_SRC}ies/DetachType.c
|
|
${NAS_SRC}ies/LocationAreaIdentification.c
|
|
${NAS_SRC}ies/TrackingAreaIdentity.c
|
|
${NAS_SRC}ies/CipheringKeySequenceNumber.c
|
|
${NAS_SRC}ies/MsNetworkCapability.c
|
|
${NAS_SRC}ies/UeNetworkCapability.c
|
|
${NAS_SRC}ies/ProtocolConfigurationOptions.c
|
|
${NAS_SRC}ies/AdditionalUpdateType.c
|
|
${NAS_SRC}ies/TmsiStatus.c
|
|
${NAS_SRC}ies/EsmMessageContainer.c
|
|
${NAS_SRC}ies/Nonce.c
|
|
${NAS_SRC}ies/ProcedureTransactionIdentity.c
|
|
${NAS_SRC}ies/TransactionIdentifier.c
|
|
${NAS_SRC}ies/AdditionalUpdateResult.c
|
|
${NAS_SRC}ies/GprsTimer.c
|
|
${NAS_SRC}ies/EpsNetworkFeatureSupport.c
|
|
${NAS_SRC}ies/SsCode.c
|
|
${NAS_SRC}ies/DrxParameter.c
|
|
${NAS_SRC}ies/KsiAndSequenceNumber.c
|
|
${NAS_SRC}ies/VoiceDomainPreferenceAndUeUsageSetting.c
|
|
)
|
|
|
|
set (libnas_utils_OBJS
|
|
${NAS_SRC}util/device.c
|
|
${NAS_SRC}util/memory.c
|
|
${NAS_SRC}util/nas_log.c
|
|
${NAS_SRC}util/nas_timer.c
|
|
${NAS_SRC}util/socket.c
|
|
${NAS_SRC}util/stty.c
|
|
${NAS_SRC}util/TLVEncoder.c
|
|
${NAS_SRC}util/TLVDecoder.c
|
|
${NAS_SRC}util/OctetString.c
|
|
)
|
|
|
|
set (libnas_user_OBJS
|
|
${NAS_SRC}api/user/user_api.c
|
|
${NAS_SRC}api/user/user_indication.c
|
|
${NAS_SRC}api/user/at_command.c
|
|
${NAS_SRC}api/user/at_error.c
|
|
${NAS_SRC}api/user/at_response.c
|
|
)
|
|
|
|
set(libnas_usim_OBJS
|
|
${NAS_SRC}api/usim/aka_functions.c
|
|
${NAS_SRC}api/usim/usim_api.c
|
|
)
|
|
|
|
set(libnas_OBJS
|
|
${OPENAIRCN_DIR}/NAS/nas_ue_task.c
|
|
${OPENAIRCN_DIR}/NAS/nas_itti_messaging.c
|
|
# ${OPENAIRCN_DIR}/NAS/nas_main.c
|
|
${NAS_SRC}nas_parser.c
|
|
${NAS_SRC}nas_proc.c
|
|
${NAS_SRC}nas_user.c
|
|
${libnas_utils_OBJS}
|
|
${libnas_user_OBJS}
|
|
${libnas_usim_OBJS}
|
|
${libnas_emm_OBJS}
|
|
${libnas_emm_msg_OBJS}
|
|
${libnas_emm_sap_OBJS}
|
|
${libnas_esm_OBJS}
|
|
${libnas_esm_msg_OBJS}
|
|
${libnas_esm_sap_OBJS}
|
|
${libnas_ies_OBJS}
|
|
${libnas_api_OBJS}
|
|
)
|
|
add_library(NAS ${libnas_OBJS})
|
|
|
|
if(NAS_UE)
|
|
set(NAS_LIB NAS)
|
|
endif()
|
|
|
|
include_directories(${NAS_SRC})
|
|
include_directories(${NAS_SRC}/api/user)
|
|
include_directories(${NAS_SRC}/esm)
|
|
include_directories(${NAS_SRC}/esm/sap)
|
|
include_directories(${NAS_SRC}/emm)
|
|
include_directories(${NAS_SRC}/emm/sap)
|
|
include_directories(${NAS_SRC}/api/usim)
|
|
include_directories(${NAS_SRC}/api/mme)
|
|
|
|
# Make lfds as a own source code (even if it is a outside library)
|
|
# For better intergration with compilation flags & structure of cmake
|
|
###################################################################
|
|
set(lfds ${OPENAIR2_DIR}/UTIL/LFDS/liblfds6.1.1/liblfds611/src/)
|
|
file(GLOB lfds_queue ${lfds}/lfds611_queue/*.c)
|
|
file(GLOB lfds_ring ${lfds}/lfds611_ringbuffer/*.c)
|
|
file(GLOB lfds_slist ${lfds}/lfds611_slist/*.c)
|
|
file(GLOB lfds_stack ${lfds}/lfds611_stack/*.c/)
|
|
file(GLOB lfds_freelist ${lfds}/lfds611_freelist/*.c)
|
|
|
|
include_directories(${lfds})
|
|
add_library(LFDS
|
|
${lfds_queue} ${lfds_ring} ${lfds_slist} ${lfds_stack} ${lfds_freelist}
|
|
${lfds}/lfds611_liblfds/lfds611_liblfds_abstraction_test_helpers.c
|
|
${lfds}/lfds611_liblfds/lfds611_liblfds_aligned_free.c
|
|
${lfds}/lfds611_liblfds/lfds611_liblfds_aligned_malloc.c
|
|
${lfds}/lfds611_abstraction/lfds611_abstraction_free.c
|
|
${lfds}/lfds611_abstraction/lfds611_abstraction_malloc.c
|
|
)
|
|
|
|
# Simulation library
|
|
##########################
|
|
add_library(SIMU
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/random_channel.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/rangen_double.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_channel.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/abstraction.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_tv_channel.c
|
|
${OPENAIR1_DIR}/SIMULATION/RF/rf.c
|
|
${OPENAIR1_DIR}/SIMULATION/RF/dac.c
|
|
${OPENAIR1_DIR}/SIMULATION/RF/adc.c
|
|
${OPENAIR1_DIR}/USERSPACE_TOOLS/SCOPE/lte_scope.c
|
|
)
|
|
|
|
add_library(SIMU_ETH
|
|
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
|
|
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/multicast_link.c
|
|
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/socket.c
|
|
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/bypass_session_layer.c
|
|
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/emu_transport.c
|
|
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/pgm_link.c
|
|
)
|
|
|
|
# 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(LIBXML2 libxml-2.0 REQUIRED)
|
|
include_directories(${LIBXML2_INCLUDE_DIRS})
|
|
|
|
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})
|
|
|
|
#use native cmake method as this package is not in pkg-config
|
|
if (${RF_BOARD} STREQUAL "USRP")
|
|
find_package(Boost REQUIRED)
|
|
include_directories(${LIBBOOST_INCLUDE_DIR})
|
|
target_link_libraries (lte-softmodem ${LIBBOOST_LIBRARIES})
|
|
endif (${RF_BOARD} STREQUAL "USRP")
|
|
|
|
pkg_search_module(OPENPGM openpgm-5.1)
|
|
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(NETTLE nettle)
|
|
if(NOT ${NETTLE_FOUND})
|
|
message("PACKAGE nettle not found: some targets will fail")
|
|
else()
|
|
include_directories(${NETTLE_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
|
|
if(EXISTS "/usr/include/atlas/cblas.h")
|
|
include_directories("/usr/include/atlas")
|
|
list(APPEND ATLAS_LIBRARIES lapack cblas atlas)
|
|
else()
|
|
message("No Blas/Atlas libs found, some targets will fail")
|
|
endif()
|
|
|
|
if (${XFORMS})
|
|
include_directories ("/usr/include/X11")
|
|
set(XFORMS_SOURCE
|
|
${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope.c
|
|
)
|
|
set(XFORMS_SOURCE_SOFTMODEM
|
|
${OPENAIR_TARGETS}/RT/USER/stats.c
|
|
)
|
|
set(XFORMS_LIBRARIES "forms")
|
|
endif (${XFORMS})
|
|
|
|
#################################
|
|
# add executables for operation
|
|
#################################""
|
|
|
|
# lte-softmodem is both eNB and UE implementation
|
|
###################################################
|
|
add_executable(lte-softmodem
|
|
${rrc_h}
|
|
${s1ap_h}
|
|
${OPENAIR_BIN_DIR}/messages_xml.h
|
|
${OPENAIR_TARGETS}/RT/USER/sched_dlsch.c
|
|
${OPENAIR_TARGETS}/RT/USER/sched_rx_pdsch.c
|
|
${OPENAIR_TARGETS}/RT/USER/rt_wrapper.c
|
|
${OPENAIR_TARGETS}/RT/USER/lte-ue.c
|
|
${OPENAIR_TARGETS}/RT/USER/lte-softmodem.c
|
|
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
|
|
${OPENAIR_TARGETS}/SIMU/USER/init_lte.c
|
|
${OPENAIR_TARGETS}/COMMON/create_tasks.c
|
|
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
|
|
${GTPV1U_DIR}/gtpv1u_eNB.c
|
|
${HW_SOURCE}
|
|
${RTAI_SOURCE}
|
|
${XFORMS_SOURCE}
|
|
${XFORMS_SOURCE_SOFTMODEM}
|
|
)
|
|
target_link_libraries (lte-softmodem
|
|
-Wl,--start-group
|
|
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2 ${RAL_LIB} ${NAS_LIB} ${ITTI_LIB} ${MIH_LIB}
|
|
-Wl,--end-group )
|
|
target_link_libraries (lte-softmodem ${LIBXML2_LIBRARIES})
|
|
target_link_libraries (lte-softmodem pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${option_USRP} ${XFORMS_LIBRARIES} )
|
|
|
|
# EPC is ??? nodes implementation in one process
|
|
################################
|
|
add_executable(oai_epc
|
|
${OPENAIR_BIN_DIR}/messages_xml.h
|
|
${OPENAIRCN_DIR}/OAI_EPC/oai_epc_log.c
|
|
${OPENAIRCN_DIR}/OAI_EPC/oai_epc.c
|
|
${GTPV1U_DIR}/gtpv1u_task.c
|
|
${OPENAIRCN_DIR}/SCTP/sctp_primitives_server.c
|
|
)
|
|
target_link_libraries (oai_epc
|
|
-Wl,--start-group
|
|
S1AP_LIB S1AP_EPC GTPV1U GTPV2C SCTP_SERVER UDP_SERVER SECU_CN SECU_OSA SGI S6A SGW MME_APP LFDS ${NAS_LIB} ${ITTI_LIB} CN_UTILS HASHTABLE
|
|
-Wl,--end-group
|
|
pthread m sctp rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
|
|
)
|
|
|
|
# oai_sgw is SGW node implementation
|
|
################################
|
|
add_executable(oai_sgw
|
|
${OPENAIR_BIN_DIR}/messages_xml.h
|
|
${OPENAIRCN_DIR}/OAI_SGW/oai_sgw_log.c
|
|
${OPENAIRCN_DIR}/OAI_SGW/oai_sgw.c
|
|
)
|
|
target_link_libraries (oai_sgw
|
|
-Wl,--start-group
|
|
GTPV1U SECU_CN SECU_OSA SGI S6A SGW UTIL LFDS ${ITTI_LIB}
|
|
-Wl,--end-group
|
|
pthread m sctp rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
|
|
)
|
|
|
|
# USIM process
|
|
#################
|
|
add_executable(usim_data
|
|
${OPENAIRCN_DIR}/NAS/EURECOM-NAS/tools/usim_data.c
|
|
)
|
|
target_link_libraries (usim_data nettle crypto m)
|
|
|
|
# ???
|
|
#####################
|
|
add_executable(ue_data
|
|
${OPENAIRCN_DIR}/NAS/EURECOM-NAS/tools/ue_data.c
|
|
)
|
|
target_link_libraries (ue_data nettle crypto m)
|
|
|
|
###################################"
|
|
# Addexecutables for tests
|
|
####################################
|
|
|
|
# A all in one network simulator
|
|
################
|
|
add_executable(oaisim
|
|
${rrc_h}
|
|
${s1ap_h}
|
|
${OPENAIR_BIN_DIR}/messages_xml.h
|
|
${OPENAIR_TARGETS}/SIMU/USER/channel_sim.c
|
|
${OPENAIR_TARGETS}/SIMU/USER/init_lte.c
|
|
${OPENAIR_TARGETS}/SIMU/USER/oaisim_config.c
|
|
${OPENAIR_TARGETS}/SIMU/USER/sinr_sim.c
|
|
${OPENAIR_TARGETS}/SIMU/USER/cor_SF_sim.c
|
|
${OPENAIR_TARGETS}/SIMU/USER/oaisim_functions.c
|
|
${OPENAIR_TARGETS}/SIMU/USER/event_handler.c
|
|
${OPENAIR_TARGETS}/SIMU/USER/oaisim.c
|
|
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
|
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
|
|
${OPENAIR2_DIR}/UTIL/OMG/sumo.c
|
|
${OPENAIR_TARGETS}/COMMON/create_tasks.c
|
|
${HW_SOURCE}
|
|
${XFORMS_SOURCE}
|
|
)
|
|
target_include_directories(oaisim PUBLIC ${OPENAIR_TARGETS}/SIMU/USER)
|
|
target_link_libraries (oaisim
|
|
-Wl,--start-group
|
|
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN UTIL SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2 ${RAL_LIB} ${NAS_LIB} SIMU SIMU_ETH SECU_OSA ${ITTI_LIB} ${MIH_LIB}
|
|
-Wl,--end-group )
|
|
target_link_libraries (oaisim ${LIBXML2_LIBRARIES} ${LAPACK_LIBRARIES})
|
|
target_link_libraries (oaisim pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${option_USRP}
|
|
${ATLAS_LIBRARIES} ${XFORMS_LIBRARIES} ${OPENPGM_LIBRARIES})
|
|
#Force link with forms, regardless XFORMS option
|
|
target_link_libraries (oaisim forms)
|
|
|
|
# Unitary tests for each piece of L1: example, mbmssim is MBMS L1 simulator
|
|
#####################################
|
|
|
|
foreach(myExe dlsim ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim)
|
|
add_executable(${myExe}
|
|
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
|
|
${XFORMS_SOURCE}
|
|
)
|
|
target_link_libraries (${myExe}
|
|
-Wl,--start-group SIMU UTIL SCHED_LIB PHY LFDS ${ITTI_LIB} -Wl,--end-group
|
|
pthread m rt ${CONFIG_LIBRARIES} ${ATLAS_LIBRARIES} ${XFORMS_LIBRARIES}
|
|
)
|
|
endforeach(myExe)
|
|
|
|
#unitary tests for Core NEtwork pieces
|
|
#################################
|
|
foreach(myExe s1ap
|
|
secu_knas_encrypt_eia1
|
|
secu_kenb
|
|
aes128_ctr_encrypt
|
|
aes128_ctr_decrypt
|
|
secu
|
|
secu_knas_stream_int
|
|
secu_knas_encrypt_eea2
|
|
secu_knas secu_knas_encrypt_eea1
|
|
kdf
|
|
aes128_cmac_encrypt
|
|
secu_knas_encrypt_eia2)
|
|
add_executable(test_${myExe}
|
|
${OPENAIRCN_DIR}/TEST/test_util.c
|
|
${OPENAIRCN_DIR}/TEST/test_${myExe}.c
|
|
)
|
|
target_link_libraries (test_${myExe}
|
|
-Wl,--start-group UTIL LFDS -Wl,--end-group fdproto fdcore
|
|
)
|
|
endforeach(myExe)
|
|
|
|
|
|
# to be added
|
|
#../targets/TEST/PDCP/test_pdcp.c
|
|
#../targets/TEST/PDCP/with_rlc/test_pdcp_rlc.c
|
|
|
|
|
|
# ???
|
|
###########################
|
|
add_executable(oaisim_mme
|
|
${OPENAIRCN_DIR}/OAISIM_MME/oai_mme_log.c
|
|
${OPENAIRCN_DIR}/OAISIM_MME/oaisim_mme.c
|
|
)
|
|
target_link_libraries (oaisim_mme
|
|
${ITTI_LIB} ${NAS_LIB} S1AP_LIB S1AP_ENB
|
|
S11 S6A UTILS UDP MME_APP SECU_CN LFDS fdproto fdcore
|
|
)
|
|
|
|
##################################################
|
|
# Generated specific cases is not regular code
|
|
###############################################
|
|
|
|
##################""
|
|
# itti symbolic debug print require to generate a specific include file
|
|
########################################
|
|
|
|
# retrieve the compiler options to send it to gccxml
|
|
get_directory_property( DirDefs COMPILE_DEFINITIONS )
|
|
foreach( d ${DirDefs} )
|
|
list(APPEND itti_compiler_options "-D${d}")
|
|
endforeach()
|
|
get_directory_property( DirDefs INCLUDE_DIRECTORIES )
|
|
foreach( d ${DirDefs} )
|
|
list(APPEND itti_compiler_options "-I${d}")
|
|
endforeach()
|
|
|
|
set (ITTI_H ${ITTI_DIR}/intertask_interface_types.h)
|
|
add_custom_command (
|
|
OUTPUT ${OPENAIR_BIN_DIR}/messages.xml
|
|
COMMAND gccxml ${itti_compiler_options} -fxml=${OPENAIR_BIN_DIR}/messages.xml ${ITTI_H}
|
|
DEPENDS ${S1AP_OAI_generated} ${RRC_FULL_DIR}/asn1_constants.h
|
|
)
|
|
|
|
add_custom_command (
|
|
OUTPUT ${OPENAIR_BIN_DIR}/messages_xml.h
|
|
COMMAND sed -e 's/ *//' -e 's/\"/\\\\\"/g' -e 's/^/\"/' -e 's/$$/\\\\n\"/' ${OPENAIR_BIN_DIR}/messages.xml > ${OPENAIR_BIN_DIR}/messages_xml.h
|
|
DEPENDS ${OPENAIR_BIN_DIR}/messages.xml ${RRC_FULL_DIR}/asn1_constants.h
|
|
)
|
|
|
|
################
|
|
# Kernel modules
|
|
###############
|
|
# 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
|
|
######################################
|
|
|
|
# retrieve the compiler options to send it to gccxml
|
|
get_directory_property(DirDefs COMPILE_DEFINITIONS )
|
|
foreach( d ${DirDefs} )
|
|
set(module_cc_opt_tmp "${module_cc_opt_tmp} -D${d}")
|
|
endforeach()
|
|
string(REPLACE "-DUSER_MODE" "" module_cc_opt ${module_cc_opt_tmp})
|
|
get_directory_property( DirDefs INCLUDE_DIRECTORIES )
|
|
foreach( d ${DirDefs} )
|
|
set(module_cc_opt "${module_cc_opt} -I${d}")
|
|
endforeach()
|
|
|
|
EXECUTE_PROCESS(COMMAND uname -r
|
|
OUTPUT_VARIABLE os_release
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
SET(module_build_path /lib/modules/${os_release}/build)
|
|
message("Kernel build path = ${module_build_path}")
|
|
|
|
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()
|
|
CONFIGURE_FILE(${OPENAIR_CMAKE}/tools/Kbuild.cmake ${OPENAIR_BIN_DIR}/${name}/Kbuild)
|
|
add_custom_command(OUTPUT ${name}.ko
|
|
COMMAND make -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name}
|
|
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)
|
|
|
|
# nashmesh module
|
|
################
|
|
list(APPEND nasmesh_src device.c common.c ioctl.c classifier.c tool.c mesh.c)
|
|
# Actually nasty stuff to be FIXED: the hereafter flag is for RTAI compilation in the driver,
|
|
# but has different meaning in the other parts of the code
|
|
# We should change the constant name to xxx_RTAI or likely
|
|
if(NOT ${module_cc_opt} MATCHES "DRTAI")
|
|
set(module_cc_opt "${module_cc_opt} -DNAS_NETLINK")
|
|
else()
|
|
string(REPLACE "-DNAS_NETLINK" "" tmp "${module_cc_opt}")
|
|
set(module_cc_opt ${tmp})
|
|
endif()
|
|
# 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()
|
|
make_driver(nasmesh ${OPENAIR2_DIR}/NAS/DRIVER/MESH ${nasmesh_src})
|
|
|
|
# ???
|
|
####################
|
|
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()
|
|
make_driver(oai_nw_drv ${OPENAIR2_DIR}/NAS/DRIVER/LITE ${oai_nw_drv_src})
|
|
|
|
# Exmimo board drivers
|
|
#########################
|
|
list(APPEND openair_rf_src module_main.c irq.c fileops.c exmimo_fw.c)
|
|
make_driver(openair_rf ${OPENAIR_TARGETS}/ARCH/EXMIMO/DRIVER/eurecom ${openair_rf_src})
|
|
|
|
add_executable(updatefw
|
|
${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/OAI_FW_INIT/updatefw.c
|
|
)
|
|
|
|
# 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})
|
|
|
|
# GTP
|
|
########################
|
|
# KVERSION is not used in the code, but required
|
|
set(module_cc_opt "${module_cc_opt} -DKVERSION=3")
|
|
make_driver(xt_GTPUAH ${OPENAIRCN_DIR}/GTPV1-U/GTPUAH "")
|
|
make_driver(xt_GTPURH ${OPENAIRCN_DIR}/GTPV1-U/GTPURH "")
|
|
|
|
# add the install targets
|
|
#install (TARGETS Tutorial DESTINATION bin)
|
|
#install (FILES "${PROJECT_BIN_DIR}/TutorialConfig.h" DESTINATION include)
|