From b6965099af3c6516f6503ca98d605223bcbb59f4 Mon Sep 17 00:00:00 2001
From: Lionel Gauthier <lionel.gauthier@eurecom.fr>
Date: Mon, 13 Apr 2015 19:44:36 +0000
Subject: [PATCH] oaisim_build_oai is for playing with MME/S-GW as far as I
 understood, So i built oaisim_noS1_build_oai  for not playing with MME/S-GW

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7142 818b1a75-f10b-46b9-bf7c-635c3b92a50f
---
 cmake_targets/CMakeLists.txt                  | 216 +++++++++++-------
 cmake_targets/build_oai                       |  85 +++++--
 .../oaisim_build_oai/CMakeLists.template      |  12 +-
 3 files changed, 199 insertions(+), 114 deletions(-)

diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index 058eeb4872..ba05e8ba41 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -125,10 +125,10 @@ endif()
 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_C_FLAGS 
+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 
+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
@@ -172,7 +172,7 @@ add_boolean_option(XFORMS False "This adds the possibility to see the signal osc
 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_library(ITTI
     # add .h files if depend on (this one is generated)
     ${ITTI_DIR}/intertask_interface.h
     ${ITTI_DIR}/intertask_interface.c
@@ -203,7 +203,7 @@ endif (${RTAI})
 # 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) 
+# New C code source file, cmake must be re-run (instead of re-running make only)
 #############
 set(asn1c_call "${OPENAIR_CMAKE}/tools/generate_asn1")
 set(asn1_generated_dir ${OPENAIR_BIN_DIR})
@@ -258,17 +258,17 @@ else(${S1AP_VERSION} STREQUAL "R8")
 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-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 
+set(S1AP_OAI_generated
   ${S1AP_C_DIR}/s1ap_decoder.c
   ${S1AP_C_DIR}/s1ap_encoder.c
   ${S1AP_C_DIR}/s1ap_xer_print.c
@@ -281,10 +281,10 @@ 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} 
+  DEPENDS ${S1AP_ASN_FILES}
   )
-add_library(S1AP_LIB 
-  ${S1AP_OAI_generated} 
+add_library(S1AP_LIB
+  ${S1AP_OAI_generated}
   ${S1AP_source}
   ${S1AP_DIR}/s1ap_common.c
   )
@@ -318,7 +318,7 @@ add_library(S1AP_EPC
   ${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")
@@ -331,9 +331,9 @@ 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)   
+  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 "OAI_USRP")
   include_directories("${OPENAIR_TARGETS}/ARCH/USRP/USERSPACE/LIB/")
@@ -354,7 +354,7 @@ elseif (${RF_BOARD} STREQUAL "CPRIGW")
   include_directories("${OPENAIR_TARGETS}/ARCH/CPRIGW/USERSPACE/LIB/")
    set(option_HW_lib "-rdynamic dl")
 endif (${RF_BOARD} STREQUAL "EXMIMO")
- 
+
 include_directories ("${OPENAIR_TARGETS}/ARCH/COMMON")
 
 
@@ -524,7 +524,7 @@ endif(${EMOS})
 # 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 
+# 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})
@@ -613,7 +613,7 @@ add_library(MSC
 )
 include_directories(${OPENAIR_DIR}/common/utils/msc)
 
-set(UTIL_SRC 
+set(UTIL_SRC
   ${OPENAIR2_DIR}/UTIL/CLI/cli.c
   ${OPENAIR2_DIR}/UTIL/CLI/cli_cmd.c
   ${OPENAIR2_DIR}/UTIL/CLI/cli_server.c
@@ -685,7 +685,7 @@ add_library(SCHED_LIB ${SCHED_SRC})
 
 # Layer 1
 #############################
-set(PHY_SRC 
+set(PHY_SRC
   # depend on code generation from asn1c
   ${RRC_FULL_DIR}/asn1_constants.h
   # actual source
@@ -850,9 +850,9 @@ set (ENB_APP_SRC
   ${OPENAIR2_DIR}/ENB_APP/enb_config.c
   )
 
-add_library(L2 
-  ${L2_SRC} 
-  ${MAC_SRC} 
+add_library(L2
+  ${L2_SRC}
+  ${MAC_SRC}
   ${ENB_APP_SRC}
   ${OPENAIR2_DIR}/RRC/L2_INTERFACE/openair_rrc_L2_interface.c)
 
@@ -908,14 +908,14 @@ endif()
 # CN libs
 ##########################
 
-add_library(CN_UTILS 
+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
@@ -940,7 +940,7 @@ 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 
+  COMMAND /sbin/iptables -V
   OUTPUT_VARIABLE iptables_version
   )
 string(REGEX REPLACE "[a-zA-Z .\r\n]" "" IPTVERSION ${iptables_version})
@@ -950,27 +950,27 @@ string(REGEX REPLACE "[a-zA-Z \r\n]" "" IPTABLES_VERSION_STRING ${iptables_versi
 # 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 
+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 
+-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 
+-D_LARGEFILE_SOURCE=1
+-D_LARGE_FILES
+-D_FILE_OFFSET_BITS=64
+-D_REENTRANT
+-D_INIT=libxt_GTPURH_init
 -DKVERSION=3
--DPIC 
+-DPIC
 -DIPTVERSION=${IPTVERSION} -DIPTABLES_VERSION_STRING=${IPTABLES_VERSION_STRING}
 )
 
@@ -979,7 +979,7 @@ set(SGI_SRC
   ${SGI_DIR}/sgi_task.c
   ${SGI_DIR}/sgi_socket.c
   ${SGI_DIR}/sgi_egress.c
-  ${SGI_DIR}/sgi_util.c 
+  ${SGI_DIR}/sgi_util.c
 )
 if(ENABLE_USE_PCAP_FOR_SGI)
   set(SGI_SRC ${SGI_SRC}
@@ -1014,7 +1014,7 @@ 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	
+add_library(S11
   ${S11_DIR}/s11_common.c
   ${S11_DIR}/s11_ie_formatter.c
   ${S11_DIR}/s11_mme_task.c
@@ -1081,7 +1081,7 @@ set(libnas_emm_OBJS
   ${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
@@ -1187,7 +1187,7 @@ set(libnas_esm_msg_OBJS
   ${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
@@ -1293,7 +1293,7 @@ set (libnas_user_OBJS
   ${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
@@ -1304,7 +1304,7 @@ add_library(NAS_UE
 )
 
 set(libnas_OBJS
-  
+
   ${OPENAIRCN_DIR}/NAS/nas_itti_messaging.c
   ${NAS_SRC}nas_parser.c
   ${NAS_SRC}nas_proc.c
@@ -1348,7 +1348,7 @@ file(GLOB lfds_stack ${lfds}/lfds611_stack/*.c/)
 file(GLOB lfds_freelist ${lfds}/lfds611_freelist/*.c)
 
 include_directories(${lfds})
-add_library(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
@@ -1436,7 +1436,7 @@ endif()
 
 if (${XFORMS})
   include_directories ("/usr/include/X11")
-  set(XFORMS_SOURCE 
+  set(XFORMS_SOURCE
     ${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope.c
     )
   set(XFORMS_SOURCE_SOFTMODEM
@@ -1457,7 +1457,7 @@ add_definitions(-DASN1_MINIMUM_VERSION=924)
 
 # lte-softmodem is both eNB and UE implementation
 ###################################################
-add_executable(lte-softmodem 
+add_executable(lte-softmodem
   ${rrc_h}
   ${s1ap_h}
   ${OPENAIR_BIN_DIR}/messages_xml.h
@@ -1476,8 +1476,8 @@ add_executable(lte-softmodem
   ${XFORMS_SOURCE}
   ${XFORMS_SOURCE_SOFTMODEM}
   )
-target_link_libraries (lte-softmodem 
-  -Wl,--start-group 
+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 MSC ${RAL_LIB} ${NAS_LIB} ${ITTI_LIB} ${MIH_LIB}
   -Wl,--end-group )
 target_link_libraries (lte-softmodem ${LIBXML2_LIBRARIES})
@@ -1488,16 +1488,16 @@ target_link_libraries (lte-softmodem ${LIBBOOST_LIBRARIES})
 ################################
 add_executable(mme_gw
   ${OPENAIR_BIN_DIR}/messages_xml.h
-  ${OPENAIRCN_DIR}/OAI_EPC/oai_epc_log.c 
+  ${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
   ${OPENAIRCN_DIR}/NAS/nas_main.c
   )
 target_link_libraries (mme_gw
-  -Wl,--start-group 
+  -Wl,--start-group
    NAS S1AP_LIB S1AP_EPC GTPV1U GTPV2C SCTP_SERVER UDP_SERVER SECU_CN SECU_OSA SGI S6A SGW MME_APP LFDS MSC ${ITTI_LIB} CN_UTILS HASHTABLE
-  -Wl,--end-group 
+  -Wl,--end-group
   pthread m sctp  rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
   )
 
@@ -1563,13 +1563,13 @@ IF( EPC_BUILD )
   execute_process(COMMAND sudo ${OPENAIR_CMAKE}/tools/check_mme_s6a_certificate ${FREEDIAMETER_PATH}/.. ${MME_FQDN} WORKING_DIRECTORY ${OPENAIR_CMAKE})
 
   configure_file(
-    ${OPENAIR_CMAKE}/tools/s6a.conf.in 
+    ${OPENAIR_CMAKE}/tools/s6a.conf.in
     ${CMAKE_CURRENT_BINARY_DIR}/mme_fd.conf)
   configure_file(
-    ${OPENAIR_CMAKE}/tools/epc.local.enb.conf.in 
+    ${OPENAIR_CMAKE}/tools/epc.local.enb.conf.in
     ${CMAKE_CURRENT_BINARY_DIR}/epc.local.enb.conf)
   configure_file(
-    ${OPENAIR_CMAKE}/tools/epc.conf.in 
+    ${OPENAIR_CMAKE}/tools/epc.conf.in
     ${CMAKE_CURRENT_BINARY_DIR}/epc.conf)
 ENDIF( EPC_BUILD )
 
@@ -1581,25 +1581,33 @@ add_executable(oai_sgw
   ${OPENAIRCN_DIR}/OAI_SGW/oai_sgw.c
   )
 target_link_libraries (oai_sgw
-  -Wl,--start-group 
+  -Wl,--start-group
   GTPV1U SECU_CN SECU_OSA SGI S6A SGW CN_UTILS LFDS MSC ${ITTI_LIB}
-  -Wl,--end-group  
+  -Wl,--end-group
   pthread m sctp  rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
   )
 
-# USIM process 
+# USIM process
 #################
-add_executable(usim
-  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/tools/usim_data.c
-  )
-target_link_libraries (usim ${NAS_LIB} UTIL ${ITTI_LIB} LFDS pthread rt nettle crypto m)
+#add_executable(usim
+#  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/tools/usim_data.c
+#  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/api/usim/usim_api.c
+#  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/api/usim/aka_functions.c
+#  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/util/memory.c
+#  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/util/nas_log.c
+#  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/util/OctetString.c
+#  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/util/TLVEncoder.c
+#  )
+#target_link_libraries (usim ${NAS_LIB} UTIL ${ITTI_LIB} LFDS pthread rt nettle crypto m)
 
 # ???
 #####################
-add_executable(nvram 
-  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/tools/ue_data.c
-  )
-target_link_libraries (nvram ${NAS_LIB} UTIL ${ITTI_LIB} LFDS pthread rt nettle crypto m)
+#add_executable(nvram
+#  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/tools/ue_data.c
+#  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/util/memory.c
+#  ${OPENAIRCN_DIR}/NAS/EURECOM-NAS/src/util/nas_log.c
+#  )
+#target_link_libraries (nvram ${NAS_LIB} UTIL ${ITTI_LIB} LFDS pthread rt nettle crypto m)
 
 ###################################"
 # Addexecutables for tests
@@ -1629,40 +1637,74 @@ add_executable(oaisim
 )
 target_include_directories(oaisim PUBLIC  ${OPENAIR_TARGETS}/SIMU/USER)
 target_link_libraries (oaisim
-  -Wl,--start-group 
+  -Wl,--start-group
   RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS L2 MSC ${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_HW_lib} 
+target_link_libraries (oaisim pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES}  ${NETTLE_LIBRARIES} sctp ${option_HW_lib}
   ${ATLAS_LIBRARIES} ${XFORMS_LIBRARIES} ${OPENPGM_LIBRARIES})
 #Force link with forms, regardless XFORMS option
 target_link_libraries (oaisim forms)
 
+
+# A all in one network simulator
+################
+add_executable(oaisim_nos1
+  ${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_nos1 PUBLIC  ${OPENAIR_TARGETS}/SIMU/USER)
+target_link_libraries (oaisim_nos1
+  -Wl,--start-group
+  RRC_LIB    SECU_CN UTIL HASHTABLE  UDP SCHED_LIB PHY LFDS L2 MSC ${RAL_LIB} ${NAS_LIB} SIMU SIMU_ETH SECU_OSA ${ITTI_LIB}  ${MIH_LIB}
+  -Wl,--end-group )
+target_link_libraries (oaisim_nos1 ${LIBXML2_LIBRARIES} ${LAPACK_LIBRARIES})
+target_link_libraries (oaisim_nos1 pthread m ${CONFIG_LIBRARIES} rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES}  ${NETTLE_LIBRARIES}  ${option_HW_lib}
+  ${ATLAS_LIBRARIES} ${XFORMS_LIBRARIES} ${OPENPGM_LIBRARIES})
+#Force link with forms, regardless XFORMS option
+target_link_libraries (oaisim_nos1 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} 
+    ${XFORMS_SOURCE}
     )
   target_link_libraries (${myExe}
-    -Wl,--start-group SIMU UTIL SCHED_LIB PHY LFDS  ${ITTI_LIB} -Wl,--end-group 
+    -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 
+foreach(myExe s1ap
+    secu_knas_encrypt_eia1
     secu_kenb
-    aes128_ctr_encrypt 
-    aes128_ctr_decrypt 
-    secu_knas_encrypt_eea2 
-    secu_knas secu_knas_encrypt_eea1 
-    kdf 
-    aes128_cmac_encrypt 
+    aes128_ctr_encrypt
+    aes128_ctr_decrypt
+    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
@@ -1688,9 +1730,9 @@ add_executable(oaisim_mme
   ${OPENAIRCN_DIR}/NAS/nas_main.c
 )
 target_link_libraries (oaisim_mme
-  -Wl,--start-group 
+  -Wl,--start-group
    NAS S1AP_LIB S1AP_EPC GTPV1U GTPV2C SCTP_SERVER UDP_SERVER SECU_CN SECU_OSA SGI S6A S11 SGW MME_APP LFDS MSC ${ITTI_LIB} CN_UTILS HASHTABLE
-  -Wl,--end-group 
+  -Wl,--end-group
   pthread m sctp  rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES} fdproto fdcore
 )
 
@@ -1715,7 +1757,7 @@ 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} 
+  COMMAND gccxml ${itti_compiler_options} -fxml=${OPENAIR_BIN_DIR}/messages.xml ${ITTI_H}
   DEPENDS ${S1AP_OAI_generated} ${RRC_FULL_DIR}/asn1_constants.h
   )
 
@@ -1767,10 +1809,10 @@ function(make_driver name dir)
   add_custom_target(${name} DEPENDS ${name}.ko)
 endfunction(make_driver name dir src)
 
-# nashmesh module 
+# 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, 
+# 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")
@@ -1785,7 +1827,7 @@ 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)
@@ -1811,9 +1853,9 @@ if(OAI_NW_DRIVER_USE_NETLINK)
 endif()
 make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src})
 
-# GTP 
+# GTP
 ########################
-# KVERSION is not used in the code, but required 
+# 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 "")
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index 45c6b505e5..aacc2097f1 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -263,12 +263,23 @@ function main() {
     compilations \
 	  lte_build_oai ue_ip \
 	  CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
+
+    mkdir -p $DIR/nas_sim_tools/build
+    cd $DIR/nas_sim_tools/build
+    cmake ..
     compilations \
-	  lte_build_oai usim \
-	  usim $dbin/usim
+      nas_sim_tools usim \
+      usim $dbin/usim
     compilations \
-	  lte_build_oai nvram \
-	  nvram $dbin/nvram
+      nas_sim_tools nvram \
+      nvram $dbin/nvram
+
+    # generate USIM data
+    if [ -f $dbin/nvram ]; then
+      install_nas_tools $dbin $dconf
+    else
+      echo_warning "not generated UE NAS files: binaries not found"
+    fi
   fi
 
   if [ "$SIMUS_PHY" = "1" -o "$SIMUS_CORE" = "1" ] ; then
@@ -317,6 +328,8 @@ function main() {
   fi
 
   if [ "$oaisim" = "1" ] ; then
+    dconf=$OPENAIR_DIR/targets/bin
+
     echo_info "Compiling oaisim"
     cmake_file=$DIR/oaisim_build_oai/CMakeLists.txt
     cp $DIR/oaisim_build_oai/CMakeLists.template $cmake_file
@@ -328,17 +341,55 @@ function main() {
     cd $DIR/oaisim_build_oai/build
     cmake ..
     compilations \
-	oaisim_build_oai oaisim \
-	oaisim $dbin/oaisim.$REL
+	  oaisim_build_oai oaisim \
+	  oaisim $dbin/oaisim.$REL
+
+    # ue_ip driver compilation
+    echo_info "Compiling UE specific part (ue_ip driver and usim tools)"
+    compilations \
+	  oaisim_build_oai ue_ip \
+	  CMakeFiles/ue_ip/ue_ip.ko $dbin/ue_ip.ko
+
+    mkdir -p $DIR/nas_sim_tools/build
+    cd $DIR/nas_sim_tools/build
+    cmake ..
+    compilations \
+	  nas_sim_tools usim \
+	  usim $dbin/usim
+    compilations \
+	  nas_sim_tools nvram \
+	  nvram $dbin/nvram
+
+    # generate USIM data
+    if [ -f $dbin/nvram ]; then
+      install_nas_tools $dbin $dconf
+    else
+      echo_warning "not generated UE NAS files: binaries not found"
+    fi
+
+    echo_info "Compiling oaisim_nos1"
+    cmake_file=$DIR/oaisim_noS1_build_oai/CMakeLists.txt
+    cp $DIR/oaisim_noS1_build_oai/CMakeLists.template $cmake_file
+    echo "set(XFORMS $XFORMS )" >>  $cmake_file
+    echo "set(RRC_ASN1_VERSION \"${REL}\")" >>  $cmake_file
+    echo "set(ENABLE_VCD_FIFO $VCD_TIMING )" >>  $cmake_file
+    echo 'include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)' >> $cmake_file
+    mkdir -p $DIR/oaisim_noS1_build_oai/build
+    cd $DIR/oaisim_noS1_build_oai/build
+    cmake ..
+    compilations \
+	  oaisim_noS1_build_oai oaisim_nos1 \
+	  oaisim_nos1 $dbin/oaisim_nos1.$REL
 
     # nasmesh driver compilation
     compilations \
-	oaisim_build_oai nasmesh \
-	CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko
+	  oaisim_noS1_build_oai nasmesh \
+	  CMakeFiles/nasmesh/nasmesh.ko $dbin/nasmesh.ko
     #oai_nw_drv
     compilations \
-	oaisim_build_oai oai_nw_drv \
-	CMakeFiles/oai_nw_drv/oai_nw_drv.ko $dbin/oai_nw_drv.ko
+	  oaisim_noS1_build_oai oai_nw_drv \
+	  CMakeFiles/oai_nw_drv/oai_nw_drv.ko $dbin/oai_nw_drv.ko
+
     cmake_file=$DIR/oaisim_mme_build_oai/CMakeLists.txt
     cp $DIR/oaisim_mme_build_oai/CMakeLists.template $cmake_file
     echo "set(XFORMS $XFORMS )" >>  $cmake_file
@@ -349,8 +400,8 @@ function main() {
     cd $DIR/oaisim_mme_build_oai/build
     cmake ..
     compilations \
-	oaisim_mme_build_oai oaisim_mme \
-	oaisim_mme $dbin/oaisim_mme.$REL
+	  oaisim_mme_build_oai oaisim_mme \
+	  oaisim_mme $dbin/oaisim_mme.$REL
   fi
 
   # EPC compilation
@@ -405,18 +456,10 @@ function main() {
       echo_warning "not installed GTP-U iptables: binaries not found"
     fi
 
-    dconf=$OPENAIR_TARGETS/bin
+    dconf=$OPENAIR_DIR/targets/bin
     mkdir -p $dconf
     #cp $ORIGIN_PATH/$CONFIG_FILE $dconf || echo_error "config file $ORIGIN_PATH/$CONFIG_FILE not found"
 
-    # generate USIM data
-    if [ -f $dbin/nvram ]; then
-      install_nas_tools $dbin $dconf
-    else
-      echo_warning "not generated UE NAS files: binaries not found"
-    fi
-
-
     # Do EPC
     if [ -f $DIR/epc_build_oai/build/mme_fd.conf ] ; then
       cp $DIR/epc_build_oai/build/epc.*.conf $dconf
diff --git a/cmake_targets/oaisim_build_oai/CMakeLists.template b/cmake_targets/oaisim_build_oai/CMakeLists.template
index 9b36a341dd..ea977dca4a 100644
--- a/cmake_targets/oaisim_build_oai/CMakeLists.template
+++ b/cmake_targets/oaisim_build_oai/CMakeLists.template
@@ -9,7 +9,7 @@ set (  DRIVER2013 True )
 set (  EMOS False )
 set (  ENABLE_FXP True )
 set (  ENABLE_ITTI True )
-set (  ENABLE_NAS_UE_LOGGING False )
+set (  ENABLE_NAS_UE_LOGGING True )
 set (  ENABLE_NEW_MULTICAST True )
 set (  ENABLE_PDCP_NETLINK_FIFO False )
 set (  ENABLE_PGM_TRANSPORT True )
@@ -17,7 +17,7 @@ set (  ENABLE_RAL False )
 set (  ENABLE_SECURITY True )
 set (  ENABLE_STANDALONE_EPC False)
 set (  ENABLE_USE_CPU_EXECUTION_TIME True )
-set (  ENABLE_USE_MME False )
+set (  ENABLE_USE_MME True )
 set (  ENABLE_USE_RAW_SOCKET_FOR_SGI True)
 set (  ENABLE_VCD_FIFO True )
 set (  ENB_MODE True )
@@ -25,7 +25,7 @@ set (  EXMIMO_IOT True )
 set (  HARD_RT False )
 set (  JUMBO_FRAME True )
 set (  LARGE_SCALE False )
-set (  LINK_ENB_PDCP_TO_GTPV1U False)
+set (  LINK_ENB_PDCP_TO_GTPV1U True)
 set (  LINUX_LIST False )
 set (  LINUX True )
 set (  LOCALIZATION False )
@@ -37,9 +37,9 @@ set (  MIH_C_MEDIEVAL_EXTENSIONS False )
 set (  MSG_PRINT False )
 set (  MU_RECEIVER False )
 set (  NAS_ADDRESS_FIX False )
-set (  NAS_BUILT_IN_UE False)
+set (  NAS_BUILT_IN_UE True)
 set (  NAS_MME False )
-set (  NAS_UE False )
+set (  NAS_UE True )
 set (  NB_ANTENNAS_RX "2" )
 set (  NB_ANTENNAS_TX "2" )
 set (  NB_ANTENNAS_TXRX "2" )
@@ -47,7 +47,7 @@ set (  NEW_FFT True )
 set (  NO_RRM True )
 set (  OAI_EMU True )
 set (  OAISIM True )
-set (  OAI_NW_DRIVER_TYPE_ETHERNET True )
+set (  OAI_NW_DRIVER_TYPE_ETHERNET False )
 set (  OAI_NW_DRIVER_USE_NETLINK True )
 set (  OPENAIR1 True )
 set (  OPENAIR2 True )
-- 
GitLab