Commit d01371a0 authored by thomasl's avatar thomasl

added oaisim target and better system libraries auto-configuraton

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6717 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 8b1777f4
...@@ -100,14 +100,10 @@ add_boolean_option(MSG_PRINT False "print debug messages") ...@@ -100,14 +100,10 @@ add_boolean_option(MSG_PRINT False "print debug messages")
add_boolean_option(DISABLE_XER_PRINT True "print XER Format") add_boolean_option(DISABLE_XER_PRINT True "print XER Format")
add_boolean_option(RRC_MSG_PRINT False "print RRC messages") add_boolean_option(RRC_MSG_PRINT False "print RRC messages")
add_boolean_option(PDCP_MSG_PRINT False "print PDCP messages") add_boolean_option(PDCP_MSG_PRINT False "print PDCP messages")
add_boolean_option(DEBUG_PHY False "for unitary tests with dlsim") add_boolean_option(TEST_OMG False "???")
add_boolean_option(DEBUG_OMG False "???")
add_boolean_option(XFORMS True "This adds the possibility to see the signal oscilloscope") add_boolean_option(XFORMS True "This adds the possibility to see the signal oscilloscope")
if (${XFORMS})
include_directories ("/usr/include/X11")
set(XFORMS_SOURCE ${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope.c)
set(option_lib_xforms "forms")
endif (${XFORMS})
# to be documented options # to be documented options
################### ###################
...@@ -124,7 +120,7 @@ add_boolean_option(LINK_PDCP_TO_GTPV1U True "????") ...@@ -124,7 +120,7 @@ add_boolean_option(LINK_PDCP_TO_GTPV1U True "????")
add_boolean_option(USER_MODE True "????") add_boolean_option(USER_MODE True "????")
add_boolean_option(LOG_NO_THREAD True "Disable thread for log, seems always set to true") add_boolean_option(LOG_NO_THREAD True "Disable thread for log, seems always set to true")
add_boolean_option(ENABLE_NAS_UE_LOGGING True "????") add_boolean_option(ENABLE_NAS_UE_LOGGING True "????")
add_boolean_option(ENABLE_USE_CPU_EXECUTION_TIME True "????") add_boolean_option(ENABLE_USE_CPU_EXECUTION_TIME True "Add data in vcd traces: disable it if perf issues")
add_boolean_option(OPENAIR2 True "????") add_boolean_option(OPENAIR2 True "????")
add_boolean_option(NO_RRM True "????") add_boolean_option(NO_RRM True "????")
add_boolean_option(PUCCH True "????") add_boolean_option(PUCCH True "????")
...@@ -147,16 +143,28 @@ add_boolean_option(MU_RECEIVER False "????") ...@@ -147,16 +143,28 @@ add_boolean_option(MU_RECEIVER False "????")
add_boolean_option(RANDOM_BF False "????") add_boolean_option(RANDOM_BF False "????")
add_boolean_option(PBS_SIM False "????") add_boolean_option(PBS_SIM False "????")
add_boolean_option(PERFECT_CE False "????") add_boolean_option(PERFECT_CE False "????")
add_boolean_option(ENABLE_VCD_FIFO True "Seems legacy: always true now")
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????")
add_boolean_option(OPENAIR_EMU False "specific to oaisim")
add_boolean_option(OAI_EMU False "specific to oaisim")
add_boolean_option(ENABLE_NEW_MULTICAST True "specific to oaisim")
add_boolean_option(ENABLE_PGM_TRANSPORT True "specific to oaisim")
add_boolean_option(MAC_CONTEXT False "specific to oaisim")
add_boolean_option(PHY_ABSTRACTION False "specific to oaisim")
add_boolean_option(ADDR_CONF False "specific to oaisim")
add_boolean_option(LARGE_SCALE False "specific to oaisim: defines max eNB=2 and max UE=120")
add_integer_option(RLC_STOP_ON_LOST_PDU False "Fatal assert in this case")
add_integer_option(USE_3GPP_ADDR_AS_LINK_ADDR False "As per attribute name")
add_boolean_option(EMOS False "????") add_boolean_option(EMOS False "????")
if(${EMOS}) if(${EMOS})
add_definitions("-D_FILE_OFFSET_BITS=64") add_definitions("-D_FILE_OFFSET_BITS=64")
add_library(gps) set(EMOS_LIB gps)
endif(${EMOS}) endif(${EMOS})
add_integer_option(MAX_NUM_CCs 1 "????") add_integer_option(MAX_NUM_CCs 1 "????")
add_integer_option(MAX_CONTEXT 1 "????")
add_integer_option(PHY_CONTEXT 1 "????")
add_boolean_option(ENABLE_ITTI True "ITTI is internal messaging, should remain enabled") add_boolean_option(ENABLE_ITTI True "ITTI is internal messaging, should remain enabled")
set (ITTI_DIR ${OPENAIR_DIR}/common/utils/itti) set (ITTI_DIR ${OPENAIR_DIR}/common/utils/itti)
...@@ -171,7 +179,7 @@ if (${ENABLE_ITTI}) ...@@ -171,7 +179,7 @@ if (${ENABLE_ITTI})
${ITTI_DIR}/signals.c ${ITTI_DIR}/signals.c
${ITTI_DIR}/timer.c ${ITTI_DIR}/timer.c
) )
set(option_ITTI ITTI) set(ITTI_LIB ITTI)
set(EXMIMO_IOT) set(EXMIMO_IOT)
endif (${ENABLE_ITTI}) endif (${ENABLE_ITTI})
...@@ -222,7 +230,7 @@ file(GLOB rrc_source ${RRC_FULL_DIR}/*.c) ...@@ -222,7 +230,7 @@ file(GLOB rrc_source ${RRC_FULL_DIR}/*.c)
set(rrc_source ${rrc_source} ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1_msg.c) set(rrc_source ${rrc_source} ${OPENAIR2_DIR}/RRC/LITE/MESSAGES/asn1_msg.c)
file(GLOB rrc_h ${RRC_FULL_DIR}/*.h) file(GLOB rrc_h ${RRC_FULL_DIR}/*.h)
set(rrc_h ${rrc_h} ${RRC_FULL_DIR}/asn1_constants.h) set(rrc_h ${rrc_h} ${RRC_FULL_DIR}/asn1_constants.h)
add_library(rrc_asn1 ${rrc_h} ${rrc_source}) add_library(RRC_LIB ${rrc_h} ${rrc_source})
include_directories ("${RRC_FULL_DIR}") include_directories ("${RRC_FULL_DIR}")
# add the command to generate the source code # add the command to generate the source code
...@@ -339,7 +347,6 @@ add_definitions("-D${RF_BOARD}=1") ...@@ -339,7 +347,6 @@ add_definitions("-D${RF_BOARD}=1")
if (${RF_BOARD} STREQUAL EXMIMO) if (${RF_BOARD} STREQUAL EXMIMO)
set(LOWLATENCY_KERNEL True) set(LOWLATENCY_KERNEL True)
set(ENABLE_VCD_FIFO True)
set(DRIVER2013) set(DRIVER2013)
include_directories ("${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/") include_directories ("${OPENAIR_TARGETS}/ARCH/EXMIMO/USERSPACE/LIB/")
include_directories ("${OPENAIR_TARGETS}/ARCH/EXMIMO/DEFS/") include_directories ("${OPENAIR_TARGETS}/ARCH/EXMIMO/DEFS/")
...@@ -425,24 +432,6 @@ include_directories("${OPENAIRCN_DIR}/NAS") ...@@ -425,24 +432,6 @@ include_directories("${OPENAIRCN_DIR}/NAS")
include_directories("${OPENAIRCN_DIR}/GTPV1-U/nw-gtpv1u/shared") include_directories("${OPENAIRCN_DIR}/GTPV1-U/nw-gtpv1u/shared")
include_directories("${OPENAIRCN_DIR}/GTPV1-U/nw-gtpv1u/include") include_directories("${OPENAIRCN_DIR}/GTPV1-U/nw-gtpv1u/include")
# trial for modernisation of include directories to be done
#include_directories("${ITTI_DIR}")
#include_directories("${OPENAIR_DIR}/common/utils/collection/hashtable")
#include_directories("${OPENAIR1_DIR}")
#include_directories("${OPENAIR1_DIR}/PHY")
#include_directories("${OPENAIR2_DIR}/")
#include_directories("${OPENAIR2_DIR}/ENB_APP")
#include_directories("${OPENAIR2_DIR}/COMMON")
#include_directories("${OPENAIR2_DIR}/UTIL/LOG")
#include_directories("${OPENAIR2_DIR}/UTIL/LISTS")
#include_directories("${OPENAIR2_DIR}/UTIL/MEM")
#include_directories("${OPENAIR2_DIR}/LAYER2/RLC")
#include_directories("${OPENAIR2_DIR}/LAYER2/RLC/AM_v9.3.0")
#include_directories("${OPENAIR2_DIR}/LAYER2/RLC/TM_v9.3.0")
#include_directories("${OPENAIR2_DIR}/LAYER2/RLC/UM_v9.3.0")
#include_directories("${OPENAIR3_DIR}")
#include_directories("${OPENAIRCN_DIR}")
# define where are the source files # define where are the source files
################################## ##################################
#add_subdirectory (${OPENAIR_DIR} .) #add_subdirectory (${OPENAIR_DIR} .)
...@@ -452,13 +441,11 @@ include_directories("${OPENAIRCN_DIR}/GTPV1-U/nw-gtpv1u/include") ...@@ -452,13 +441,11 @@ include_directories("${OPENAIRCN_DIR}/GTPV1-U/nw-gtpv1u/include")
function(add_whole_dir dir lib_name) function(add_whole_dir dir lib_name)
file(GLOB mylist ${dir}) file(GLOB mylist ${dir})
add_library(${lib_name} ${mylist}) add_library(${lib_name} ${mylist})
set (EXTRA_LIBS ${EXTRA_LIBS} ${lib_name} PARENT_SCOPE)
endfunction(add_whole_dir) endfunction(add_whole_dir)
function(add_whole_tree dir lib_name) function(add_whole_tree dir lib_name)
file(GLOB_RECURSE mylist "${dir}/*.c") file(GLOB_RECURSE mylist "${dir}/*.c")
add_library(${lib_name} ${mylist}) add_library(${lib_name} ${mylist})
set (EXTRA_LIBS ${EXTRA_LIBS} ${lib_name} PARENT_SCOPE)
endfunction(add_whole_tree) endfunction(add_whole_tree)
# Utilities Library # Utilities Library
...@@ -532,7 +519,7 @@ add_library(SECU_CN ${SECU_CN_SRC}) ...@@ -532,7 +519,7 @@ add_library(SECU_CN ${SECU_CN_SRC})
# Scheduler # Scheduler
################################" ################################"
add_whole_dir(${OPENAIR1_DIR}/SCHED/*.c sched) add_whole_dir(${OPENAIR1_DIR}/SCHED/*.c SCHED_LIB)
# Layer 1 # Layer 1
############################# #############################
...@@ -1074,21 +1061,80 @@ ${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_channel.c ...@@ -1074,21 +1061,80 @@ ${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_channel.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/abstraction.c ${OPENAIR1_DIR}/SIMULATION/TOOLS/abstraction.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_tv_channel.c ${OPENAIR1_DIR}/SIMULATION/TOOLS/multipath_tv_channel.c
${OPENAIR1_DIR}/SIMULATION/RF/rf.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 ${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 # System packages that are required
# the modules definition for cmake, in ubuntu are in: /usr/share/cmake*/Modules/ # 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
################################### ###################################
find_package(LibXml2 REQUIRED) include(FindPkgConfig)
include_directories(${LIBXML2_INCLUDE_DIR})
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") if (${RF_BOARD} STREQUAL "USRP")
find_package(Boost REQUIRED) find_package(Boost REQUIRED)
include_directories(${LIBBOOST_INCLUDE_DIR}) include_directories(${LIBBOOST_INCLUDE_DIR})
target_link_libraries (lte-softmodem ${LIBBOOST_LIBRARIES}) target_link_libraries (lte-softmodem ${LIBBOOST_LIBRARIES})
endif (${RF_BOARD} STREQUAL "USRP") 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_LIBRARIES "forms")
endif (${XFORMS})
# add executables # add executables
add_executable(lte-softmodem add_executable(lte-softmodem
...@@ -1103,33 +1149,57 @@ ${OPENAIR_TARGETS}/RT/USER/lte-ue.c ...@@ -1103,33 +1149,57 @@ ${OPENAIR_TARGETS}/RT/USER/lte-ue.c
${OPENAIR_TARGETS}/RT/USER/lte-softmodem.c ${OPENAIR_TARGETS}/RT/USER/lte-softmodem.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c ${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
${OPENAIR_TARGETS}/SIMU/USER/init_lte.c ${OPENAIR_TARGETS}/SIMU/USER/init_lte.c
${OPENAIR_TARGETS}/COMMON//create_tasks.c ${OPENAIR_TARGETS}/COMMON/create_tasks.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
${HW_SOURCE} ${HW_SOURCE}
${RTAI_SOURCE} ${RTAI_SOURCE}
${XFORMS_SOURCE} ${XFORMS_SOURCE}
) )
target_link_libraries (lte-softmodem target_link_libraries (lte-softmodem
-Wl,--start-group -Wl,--start-group
rrc_asn1 s1ap_asn1 GTPV1U SECU_CN SECU_OSA UTIL SCTP UDP sched PHY LFDS L2 RAL_LTE NAS ${option_ITTI} RRC_LIB s1ap_asn1 GTPV1U SECU_CN SECU_OSA UTIL SCTP UDP SCHED_LIB PHY LFDS L2 RAL_LTE NAS ${ITTI_LIB}
-Wl,--end-group ) -Wl,--end-group )
target_link_libraries (lte-softmodem ${LIBXML2_LIBRARIES}) target_link_libraries (lte-softmodem ${LIBXML2_LIBRARIES})
target_link_libraries (lte-softmodem pthread m config rt crypt crypto ssl nettle sctp ${option_USRP} ${option_lib_xforms} ) target_link_libraries (lte-softmodem pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} sctp ${option_USRP} ${XFORMS_LIBRARIES} )
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}/UTIL/OMG/sumo.c
${OPENAIR_TARGETS}/COMMON/create_tasks.c
)
target_include_directories(oaisim PUBLIC ${OPENAIR_TARGETS}/SIMU/USER)
target_link_libraries (oaisim
-Wl,--start-group
RRC_LIB s1ap_asn1 GTPV1U SECU_CN UTIL SCTP UDP SCHED_LIB PHY LFDS L2 RAL_LTE NAS SIMU SIMU_ETH SECU_OSA ${ITTI_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)
foreach(myExe dlsim ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim) foreach(myExe dlsim ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim)
add_executable(${myExe} add_executable(${myExe}
${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
${XFORMS_SOURCE} ${XFORMS_SOURCE}
) )
target_link_libraries (${myExe} target_link_libraries (${myExe}
-Wl,--start-group SIMU UTIL sched PHY LFDS ${option_ITTI} -Wl,--end-group -Wl,--start-group SIMU UTIL SCHED_LIB PHY LFDS ${ITTI_LIB} -Wl,--end-group
pthread m config rt blas ${option_lib_xforms} pthread m rt ${CONFIG_LIBRARIES} ${ATLAS_LIBRARIES} ${XFORMS_LIBRARIES}
) )
endforeach(myExe) endforeach(myExe)
################################################## ##################################################
# Generated specific cases is not regular code # Generated specific cases is not regular code
############################################### ###############################################
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment