# See the License for the specific language governing permissions and
# limitations under the License.
+# This source code is part of the near-RT RIC (RAN Intelligent Controller)
+# platform project (RICP).
+
cmake_minimum_required(VERSION 3.13)
project(e2)
-set(CMAKE_VERBOSE_MAKEFILE on)
+set(CMAKE_VERBOSE_MAKEFILE off)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEV_PKG=1")
-
-#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -LRIC-E2-TERMINATION/tracelibcpp/build -ggdb3 -Wall -W -Wpedantic")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -LRIC-E2-TERMINATION/base64/lib -O3 -Wall -Wpedantic")
-#only c code with -O3
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -LRIC-E2-TERMINATION/base64/lib -O3 -Wall -W -Wpedantic")
-
-include_directories(RIC-E2-TERMINATION)
-include_directories(RIC-E2-TERMINATION/asn1cFiles)
-
-file(GLOB ASN_MODULE_SRCS "RIC-E2-TERMINATION/asn1cFiles/*.c")
-file(GLOB ASN_MODULE_HDRS "RIC-E2-TERMINATION/asn1cFiles/*.h")
-
-add_library(asn1codec ${ASN_MODULE_SRCS} ${ASN_MODULE_HDRS})
-
+set(PROJECT_NAME "e2")
+set(PROJECT_TEST_NAME "e2")
+
+
+if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
+ #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -LRIC-E2-TERMINATION/tracelibcpp/build -ggdb3 -Wall -W -Wpedantic")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -g -ggdb3 -O3 -L/usr/lib -L/usr/local/lib -Wall -Wpedantic")
+ #only c code with -O3
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -O3 -L/usr/lib -L/usr/local/lib -Wall -W -Wpedantic")
+else ()
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -ggdb3 --coverage -L/usr/lib -L/usr/local/lib -Wall -Wpedantic")
+ #only c code with -O3
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -ggdb3 -L/usr/lib -L/usr/local/lib -Wall -W -Wpedantic")
+
+endif ()
+
+include_directories(RIC-E2-TERMINATION
+ RIC-E2-TERMINATION/3rdparty/oranE2
+ RIC-E2-TERMINATION/3rdparty/oranE2SM
+ RIC-E2-TERMINATION/3rdparty/cxxopts/include
+ RIC-E2-TERMINATION/3rdparty/prometheus-cpp
+ RIC-E2-TERMINATION/3rdparty/prometheus-cpp/core/include
+ RIC-E2-TERMINATION/3rdparty
+ cmake-modules)
+
+#E2AP library
+file(GLOB E2AP_ASN_MODULE_SRCS "RIC-E2-TERMINATION/3rdparty/oranE2/*.c")
+file(GLOB E2AP_ASN_MODULE_HDRS "RIC-E2-TERMINATION/3rdparty/oranE2/*.h")
+
+add_library(asn1codec ${E2AP_ASN_MODULE_SRCS} ${E2AP_ASN_MODULE_HDRS})
install(TARGETS asn1codec DESTINATION /usr/lib)
-install(FILES ${ASN_MODULE_HDRS} DESTINATION /usr/include/asn1c)
+install(FILES ${E2AP_E2AP_ASN_MODULE_HDRS} DESTINATION /usr/include/asn1c)
-#include_directories(RIC-E2-TERMINATION/TEST/asn1c)
-#
-#file(GLOB ASNE2SMC "RIC-E2-TERMINATION/TEST/asn1c/*.c")
-#file(GLOB ASNE2SMH "RIC-E2-TERMINATION/TEST/asn1c/*.h")
-#RIC-E2-TERMINATION/
-#add_library(asne2smcodec ${ASNE2SMC})
+#E2SM library
+file(GLOB E2SM_ASN_MODULE_SRCS "RIC-E2-TERMINATION/3rdparty/oranE2SM/*.c")
+file(GLOB E2SM_ASN_MODULE_HDRS "RIC-E2-TERMINATION/3rdparty/oranE2SM/*.h")
+add_library(asn1ce2smcodec ${E2SM_ASN_MODULE_SRCS} ${E2SM_ASN_MODULE_HDRS})
+#add_custom_command(
+# TARGET asn1ce2smcodec
+# POST_BUILD
+# COMMAND objcopy
+# ARGS --prefix-symbols=e2sm_ libasn1ce2smcodec.a
+#)
+
+install(TARGETS asn1ce2smcodec DESTINATION /usr/lib)
+install(FILES ${E2SM_ASN_MODULE_HDRS} DESTINATION /usr/include/asn1c)
include_directories(RIC-E2-TERMINATION/TEST)
include_directories(RIC-E2-TERMINATION/TEST/e2smTest)
include_directories(RIC-E2-TERMINATION/TEST/T1)
include_directories(RIC-E2-TERMINATION/TEST/T2)
-include_directories(RIC-E2-TERMINATION/base64/include)
-include_directories(RIC-E2-TERMINATION/base64/lib)
-add_library(e2sm
- RIC-E2-TERMINATION/TEST/e2sm.c
- RIC-E2-TERMINATION/TEST/e2sm.h
- ${ASN_MODULE_HDRS})
+
add_definitions(-DBOOST_LOG_DYN_LINK)
-link_libraries(nsl sctp c m dl mdclog rmr_nng nng e2sm asn1codec boost_system boost_log_setup boost_log boost_date_time boost_thread rt boost_filesystem pthread)
+link_libraries(nsl
+ sctp
+ gcov
+ c
+ m
+ dl
+ mdclog
+ rmr_si
+ asn1codec
+ asn1ce2smcodec
+ boost_system
+ boost_log_setup
+ boost_log
+ boost_date_time
+ boost_thread
+ boost_system
+ rt
+ tbb
+ boost_filesystem
+ cgreen
+ prometheus-cpp-core
+ prometheus-cpp-pull
+ prometheus-cpp-push
+ z
+ curl
+ pthread)
add_executable(e2 RIC-E2-TERMINATION/sctpThread.cpp
RIC-E2-TERMINATION/sctpThread.h
RIC-E2-TERMINATION/mapWrapper.h
RIC-E2-TERMINATION/base64.h
RIC-E2-TERMINATION/base64.cpp
+ RIC-E2-TERMINATION/ReadConfigFile.h
+ RIC-E2-TERMINATION/BuildRunName.h
+ # RIC-E2-TERMINATION/3rdparty/pugixml/src/pugiconfig.hpp
+ # RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp
+ # RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.hpp
+ # RIC-E2-TERMINATION/BuildXml.h
+ )
+target_link_libraries(e2 libasn1ce2smcodec.a)
+target_link_libraries(e2 librmr_si.a)
+target_link_libraries(e2 libicui18n.a)
+target_link_libraries(e2 libicuuc.a)
+target_link_libraries(e2 libicudata.a)
+target_link_libraries(e2 prometheus-cpp-core.a)
+target_link_libraries(e2 prometheus-cpp-pull.a)
+target_link_libraries(e2 prometheus-cpp-push.a)
+
+#target_link_libraries(e2 libnng.a)
+
+add_executable(testConfigFile
+ RIC-E2-TERMINATION/ReadConfigFile.h
+ RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp)
+
+add_executable(b64Test
+ RIC-E2-TERMINATION/base64.cpp
+ RIC-E2-TERMINATION/base64.h
+ RIC-E2-TERMINATION/TEST/base64/testBase64.cpp)
+
+
+add_executable(sctpClient
+ RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp
+ RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.h
+ RIC-E2-TERMINATION/TEST/testAsn/rmrClient/rmrClient.h
+ RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp
+ RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.h
+ RIC-E2-TERMINATION/base64.h
+ RIC-E2-TERMINATION/base64.cpp
+ RIC-E2-TERMINATION/TEST/T1/E2Builder.h
+
+ #RIC-E2-TERMINATION/TEST/T1/Test1.cpp
+ #RIC-E2-TERMINATION/TEST/T1/
+ )
+target_link_libraries(sctpClient libpistache.so)
+target_link_libraries(sctpClient librmr_si.a)
+
+add_executable(setUpMessages
+ RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp
+ RIC-E2-TERMINATION/BuildRunName.h
+ )
+
+#find_package(RapidJSON)
+
+add_executable(teste2
+ RIC-E2-TERMINATION/TEST/e2test.h
+ RIC-E2-TERMINATION/TEST/e2test.cpp
)
-add_executable(e2smtest
- RIC-E2-TERMINATION/TEST/e2smTest/e2smtest.cpp)
+
+# Locate GTest
+string(REPLACE " " ";" REPLACED_FLAGS ${CMAKE_CXX_FLAGS})
+string(CONCAT FINAL_FLAG ${REPLACED_FLAGS} ";-DUNIT_TEST")
+find_package(GTest REQUIRED)
+include_directories(${GTEST_INCLUDE_DIRS})
+# Link runTests with what we want to test and the GTest and pthread library
+add_executable(sctp_test /opt/e2/RIC-E2-TERMINATION/TEST/sctp_thread_test.cpp
+ RIC-E2-TERMINATION/sctpThread.h
+ RIC-E2-TERMINATION/sctpThread.cpp
+ RIC-E2-TERMINATION/base64.h
+ RIC-E2-TERMINATION/base64.cpp
+
+ )
+target_link_libraries(sctp_test ${GTEST_LIBRARIES} pthread)
+target_compile_options(sctp_test PRIVATE ${FINAL_FLAG})
+
+
+if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+ LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_modules")
+ set(CMAKE_BUILD_TYPE "Debug")
+ include(cmake-modules/CodeCoverage.cmake)
+ target_link_libraries(${PROJECT_TEST_NAME} gcov)
+
+ set(LDFLAGS "--coverage -fprofile-arcs")
+ message("PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
+
+ # setup_target_for_coverage_lcov(${PROJECT_NAME}_coverage ${PROJECT_TEST_NAME} coverage)
+ set(COVERAGE_LCOV_EXCLUDES "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/3rdparty/*"
+ "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/oranE2/*"
+ "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/TEST/*"
+ "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/config/*")
+
+ set(COVERAGE_EXCLUDES '${PROJECT_SOURCE_DIR}/config'
+ ${PROJECT_SOURCE_DIR}/log'
+ '${PROJECT_SOURCE_DIR}/docs'
+ '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/3rdparty'
+ '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/oranE2'
+ '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/TEST'
+ '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/config')
+ append_coverage_compiler_flags()
+ SETUP_TARGET_FOR_COVERAGE_LCOV(NAME e2_coverage
+ EXECUTABLE e2
+ DEPENDENCIES e2)
+endif ()