RIC:1060: Change in PTL
[ric-plt/e2.git] / RIC-E2-TERMINATION / CMakeLists.txt
1 # Copyright 2019 AT&T Intellectual Property
2 # Copyright 2019 Nokia
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #      http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 # This source code is part of the near-RT RIC (RAN Intelligent Controller)
17 # platform project (RICP).
18
19 cmake_minimum_required(VERSION 3.13)
20 project(e2)
21
22 set(CMAKE_VERBOSE_MAKEFILE off)
23
24 set(CMAKE_CXX_STANDARD 17)
25
26 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEV_PKG=1")
27 set(PROJECT_NAME "e2")
28 set(PROJECT_TEST_NAME "e2")
29
30
31 if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
32     #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -LRIC-E2-TERMINATION/tracelibcpp/build -ggdb3 -Wall -W -Wpedantic")
33     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")
34     #only c code with -O3
35     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")
36 else ()
37     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")
38     #only c code with -O3
39     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")
40
41 endif ()
42
43 include_directories(RIC-E2-TERMINATION
44         RIC-E2-TERMINATION/3rdparty/oranE2
45         RIC-E2-TERMINATION/3rdparty/oranE2SM
46         RIC-E2-TERMINATION/3rdparty/cxxopts/include
47         RIC-E2-TERMINATION/3rdparty/prometheus-cpp
48         RIC-E2-TERMINATION/3rdparty/prometheus-cpp/core/include
49         RIC-E2-TERMINATION/3rdparty
50         cmake-modules)
51
52 #E2AP library
53 file(GLOB E2AP_ASN_MODULE_SRCS "RIC-E2-TERMINATION/3rdparty/oranE2/*.c")
54 file(GLOB E2AP_ASN_MODULE_HDRS "RIC-E2-TERMINATION/3rdparty/oranE2/*.h")
55
56 add_library(asn1codec ${E2AP_ASN_MODULE_SRCS} ${E2AP_ASN_MODULE_HDRS})
57 install(TARGETS asn1codec DESTINATION /usr/lib)
58 install(FILES ${E2AP_E2AP_ASN_MODULE_HDRS} DESTINATION /usr/include/asn1c)
59
60
61 #E2SM library
62 file(GLOB E2SM_ASN_MODULE_SRCS "RIC-E2-TERMINATION/3rdparty/oranE2SM/*.c")
63 file(GLOB E2SM_ASN_MODULE_HDRS "RIC-E2-TERMINATION/3rdparty/oranE2SM/*.h")
64
65 add_library(asn1ce2smcodec ${E2SM_ASN_MODULE_SRCS} ${E2SM_ASN_MODULE_HDRS})
66 #add_custom_command(
67 #        TARGET asn1ce2smcodec
68 #        POST_BUILD
69 #        COMMAND objcopy
70 #        ARGS --prefix-symbols=e2sm_ libasn1ce2smcodec.a
71 #)
72
73 install(TARGETS asn1ce2smcodec DESTINATION /usr/lib)
74 install(FILES ${E2SM_ASN_MODULE_HDRS} DESTINATION /usr/include/asn1c)
75
76 include_directories(RIC-E2-TERMINATION/TEST)
77 include_directories(RIC-E2-TERMINATION/TEST/e2smTest)
78 include_directories(RIC-E2-TERMINATION/TEST/T1)
79 include_directories(RIC-E2-TERMINATION/TEST/T2)
80
81
82 add_definitions(-DBOOST_LOG_DYN_LINK)
83
84 link_libraries(nsl
85         sctp
86         gcov
87         c
88         m
89         dl
90         mdclog
91         rmr_si
92         asn1codec
93         asn1ce2smcodec
94         boost_system
95         boost_log_setup
96         boost_log
97         boost_date_time
98         boost_thread
99         boost_system
100         rt
101         tbb
102         boost_filesystem
103         cgreen
104         prometheus-cpp-core
105         prometheus-cpp-pull
106         prometheus-cpp-push
107         z
108         curl
109         pthread)
110
111 add_executable(e2 RIC-E2-TERMINATION/sctpThread.cpp
112         RIC-E2-TERMINATION/sctpThread.h
113         RIC-E2-TERMINATION/openTracing.h
114         RIC-E2-TERMINATION/mapWrapper.h
115         RIC-E2-TERMINATION/base64.h
116         RIC-E2-TERMINATION/base64.cpp
117         RIC-E2-TERMINATION/ReadConfigFile.h
118         RIC-E2-TERMINATION/BuildRunName.h
119         #        RIC-E2-TERMINATION/3rdparty/pugixml/src/pugiconfig.hpp
120         #        RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp
121         #        RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.hpp
122         #        RIC-E2-TERMINATION/BuildXml.h
123         )
124 target_link_libraries(e2 libasn1ce2smcodec.a)
125 target_link_libraries(e2 librmr_si.a)
126 target_link_libraries(e2 libicui18n.a)
127 target_link_libraries(e2 libicuuc.a)
128 target_link_libraries(e2 libicudata.a)
129 target_link_libraries(e2 prometheus-cpp-core.a)
130 target_link_libraries(e2 prometheus-cpp-pull.a)
131 target_link_libraries(e2 prometheus-cpp-push.a)
132
133 #target_link_libraries(e2 libnng.a)
134
135 add_executable(testConfigFile
136         RIC-E2-TERMINATION/ReadConfigFile.h
137         RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp)
138
139 add_executable(b64Test
140         RIC-E2-TERMINATION/base64.cpp
141         RIC-E2-TERMINATION/base64.h
142         RIC-E2-TERMINATION/TEST/base64/testBase64.cpp)
143
144
145 add_executable(sctpClient
146         RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp
147         RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.h
148         RIC-E2-TERMINATION/TEST/testAsn/rmrClient/rmrClient.h
149         RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp
150         RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.h
151         RIC-E2-TERMINATION/base64.h
152         RIC-E2-TERMINATION/base64.cpp
153         RIC-E2-TERMINATION/TEST/T1/E2Builder.h
154
155         #RIC-E2-TERMINATION/TEST/T1/Test1.cpp
156         #RIC-E2-TERMINATION/TEST/T1/
157         )
158 target_link_libraries(sctpClient libpistache.so)
159 target_link_libraries(sctpClient librmr_si.a)
160
161 add_executable(setUpMessages
162         RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp
163         RIC-E2-TERMINATION/BuildRunName.h
164         )
165
166 #find_package(RapidJSON)
167
168 add_executable(teste2
169         RIC-E2-TERMINATION/TEST/e2test.h
170         RIC-E2-TERMINATION/TEST/e2test.cpp
171         )
172
173
174 # Locate GTest
175 string(REPLACE " " ";" REPLACED_FLAGS ${CMAKE_CXX_FLAGS})
176 string(CONCAT FINAL_FLAG ${REPLACED_FLAGS} ";-DUNIT_TEST")
177 find_package(GTest REQUIRED)
178 include_directories(${GTEST_INCLUDE_DIRS})
179 # Link runTests with what we want to test and the GTest and pthread library
180 add_executable(sctp_test /opt/e2/RIC-E2-TERMINATION/TEST/sctp_thread_test.cpp
181         RIC-E2-TERMINATION/sctpThread.h
182         RIC-E2-TERMINATION/sctpThread.cpp
183         RIC-E2-TERMINATION/base64.h
184         RIC-E2-TERMINATION/base64.cpp
185
186         )
187 target_link_libraries(sctp_test ${GTEST_LIBRARIES} pthread)
188 target_compile_options(sctp_test PRIVATE ${FINAL_FLAG})
189
190
191 if (CMAKE_BUILD_TYPE STREQUAL "Debug")
192     LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_modules")
193     set(CMAKE_BUILD_TYPE "Debug")
194     include(cmake-modules/CodeCoverage.cmake)
195     target_link_libraries(${PROJECT_TEST_NAME} gcov)
196
197     set(LDFLAGS "--coverage -fprofile-arcs")
198     message("PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
199
200     #    setup_target_for_coverage_lcov(${PROJECT_NAME}_coverage ${PROJECT_TEST_NAME} coverage)
201      set(COVERAGE_LCOV_EXCLUDES "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/3rdparty/*"
202             "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/oranE2/*"
203             "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/TEST/*"
204             "${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/config/*")
205
206     set(COVERAGE_EXCLUDES '${PROJECT_SOURCE_DIR}/config'
207             ${PROJECT_SOURCE_DIR}/log'
208             '${PROJECT_SOURCE_DIR}/docs'
209             '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/3rdparty'
210             '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/oranE2'
211             '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/TEST'
212             '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/config')
213     append_coverage_compiler_flags()
214     SETUP_TARGET_FOR_COVERAGE_LCOV(NAME e2_coverage
215             EXECUTABLE e2 
216             DEPENDENCIES e2)
217 endif ()