# Check that the submodule exists or init+update if not if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/flexric/CMakeLists.txt) message(STATUS "E2AP submoduled not detected, therefore $git submodule init && git submodule update.") execute_process(COMMAND git submodule init) execute_process(COMMAND git submodule update) else() message(STATUS "E2AP submodule detected.") endif() if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/flexric/CMakeLists.txt) message(FATAL_ERROR "The submodules for E2 agent were not downloaded!") endif() set(BUILDING_LIBRARY "STATIC" CACHE STRING "Static or dynamic library") set_property(CACHE BUILDING_LIBRARY PROPERTY STRINGS "STATIC" "DYNAMIC") message(STATUS "Selected LIBRARY TYPE: ${BUILDING_LIBRARY}") set(CMAKE_POSITION_INDEPENDENT_CODE ON) if(BUILDING_LIBRARY STREQUAL "STATIC") add_compile_options("-W;-Wall;-Wextra;-g;-Wno-unused-result;") elseif(BUILDING_LIBRARY STREQUAL "DYNAMIC") # -fPIC flag set(CMAKE_POSITION_INDEPENDENT_CODE ON) add_compile_options("-W;-Wall;-Wextra;-g") else() message(FATAL_ERROR "Unknown building type. Either choose a static or a dynamic library") endif() set(E2AP_ENCODING "ASN" CACHE STRING "The E2AP encoding to use") set_property(CACHE E2AP_ENCODING PROPERTY STRINGS "ASN" "FLATBUFFERS") message(STATUS "Selected E2AP_ENCODING: ${E2AP_ENCODING}") ####### ## Service Models ####### add_definitions(-DSERVICE_MODEL_DIR_PATH="${SM_DIR_PATH}/") # KPM service Model encoding definitions set(SM_ENCODING_KPM "ASN" CACHE STRING "The KPM SM encoding to use") set_property(CACHE SM_ENCODING_KPM PROPERTY STRINGS "PLAIN" "ASN" "FLATBUFFERS") message(STATUS "Selected KPM SM_ENCODING: ${SM_ENCODING_KPM}") # RC service Model encoding definitions set(SM_ENCODING_RC "ASN" CACHE STRING "The RC SM encoding to use") set_property(CACHE SM_ENCODING_RC PROPERTY STRINGS "PLAIN" "ASN" "FLATBUFFERS") message(STATUS "Selected RC SM_ENCODING: ${SM_ENCODING_RC}") # MAC Service Model set(SM_ENCODING_MAC "PLAIN" CACHE STRING "The MAC SM encoding to use") set_property(CACHE SM_ENCODING_MAC PROPERTY STRINGS "PLAIN" "ASN" "FLATBUFFERS") message(STATUS "Selected MAC SM_ENCODING: ${SM_ENCODING_MAC}") # RLC Service Model set(SM_ENCODING_RLC "PLAIN" CACHE STRING "The RLC SM encoding to use") set_property(CACHE SM_ENCODING_RLC PROPERTY STRINGS "PLAIN" "ASN" "FLATBUFFERS") message(STATUS "Selected RLC SM_ENCODING: ${SM_ENCODING_RLC}") # PDCP Service Model set(SM_ENCODING_PDCP "PLAIN" CACHE STRING "The PDCP SM encoding to use") set_property(CACHE SM_ENCODING_PDCP PROPERTY STRINGS "PLAIN" "ASN" "FLATBUFFERS") message(STATUS "Selected PDCP SM_ENCODING: ${SM_ENCODING_PDCP}") # SLICE Service Model set(SM_ENCODING_SLICE "PLAIN" CACHE STRING "The SLICE SM encoding to use") set_property(CACHE SM_ENCODING_SLICE PROPERTY STRINGS "PLAIN" "ASN" "FLATBUFFERS") message(STATUS "Selected SLICE SM_ENCODING: ${SM_ENCODING_SLICE}") # GTP Service Model set(SM_ENCODING_GTP "PLAIN" CACHE STRING "The GTP SM encoding to use") set_property(CACHE SM_ENCODING_GTP PROPERTY STRINGS "PLAIN") message(STATUS "Selected GTP SM_ENCODING: ${SM_ENCODING_GTP}") ######## ### Flatbuffer ######## set(FlatCC_INCLUDE_DIR "" CACHE STRING "The Flatbuffers include directory") set(FlatCC_LIB_DIR "" CACHE STRING "The Flatbuffers lib directory") if(E2AP_ENCODING STREQUAL "FLATBUFFERS") find_library(FlatCC NAMES flatccrt_d HINTS ${FlatCC_LIB_DIR} ) endif() include_directories(flexric/src) add_subdirectory(flexric/src/agent) add_subdirectory(flexric/src/lib) add_subdirectory(flexric/src/sm) add_subdirectory(flexric/src/util) add_subdirectory(RAN_FUNCTION)