1 #==================================================================================
3 # Copyright (c) 2018-2019 AT&T Intellectual Property.
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #==================================================================================
19 CXX:= g++ -g -O2 -fprofile-arcs -ftest-coverage
20 CC:= gcc -g -O2 -fprofile-arcs -ftest-coverage
22 CXX:= g++ -g -fprofile-arcs -ftest-coverage
23 CC:= gcc -g -fprofile-arcs -ftest-coverage
27 PLUGINS=../src/plugin-interface
28 ASN1C_DIR=../asn1c_defs
29 E2AP_C_DIR=../src/E2AP-c
30 SUBSCR_DIR = ../src/E2AP-c/subscription
35 PROTECTOR=../src/protector-plugin
37 CLOGFLAGS= `pkg-config mdclog --cflags`
38 BASEFLAGS= -Wall -std=c++14 $(CLOGFLAGS) -DASN_DISABLE_OER_SUPPORT
39 C_BASEFLAGS= -Wall $(CLOGFLAGS) -DASN_DISABLE_OER_SUPPORT
40 XAPPFLAGS= -I$(SRC_DIR)
41 PLUGINFLAGS= -I$(PLUGINS)
42 E2FLAGS= -I$(E2AP_C_DIR) -I$(ASN1C_DIR)/
43 SUBSCRFLAGS= -I$(SUBSCR_DIR) -I$(ASN1C_DIR)
44 E2SMFLAGS = -I$(E2SM_DIR) -I$(ASN1C_DIR)/
45 X2FLAGS= -I$(X2AP_DIR) -I$(ASN1C_DIR)/
47 JSONFLAGS= -I$(JSON_DIR)
48 PROTECTORFLAGS= -I$(PROTECTOR)
50 LIBS= -lrmr_nng -lnng -lpthread -lm
53 LOGLIBS= `pkg-config mdclog --libs`
55 XAPP_UTILS_SRC= $(SRC_DIR)/xapp_utils.cc
56 XAPP_MPROC_SRC= $(SRC_DIR)/message_processor_class.cc
57 E2AP_SRC= $(wildcard $(E2AP)/*.cc)
58 X2AP_SRC= $(wildcard $(X2AP_DIR)/*.cc)
59 A1_SRC= $(wildcard $(A1)/*.cc)
60 PLUGINS_SRC = $(wildcard $(PLUGINS)/*.cc)
61 E2AP_C_SRC= $(wildcard $(E2AP_C_DIR)/*.cc)
62 SUBSCR_SRC= $(wildcard $(SUBSCR_DIR)/*.cc)
63 E2SM_SRC= $(wildcard $(E2SM_DIR)/*.cc)
64 X2AP_SRC = $(wildcard $(X2AP_DIR)/*.cc)
65 ASN1C_SRC = $(wildcard $(ASN1C_DIR)/*.c)
66 JSON_SRC = $(wildcard $(JSON_DIR)/*.cc)
67 PROTECTOR_SRC = $(wildcard $(PROTECTOR)/*.cc)
69 #===========================================
71 XAPP_UNIT_TEST = unit_test_xapp.o
72 X2PDU_UNIT_TEST= unit_test_pdu.o
73 E2SUB_UNIT_TEST= unit_test_subscription.o
74 SUBSCRIPTION_FLOW_UNIT_TEST = unit_test_subscription_flow.o
75 E2AP_IND_UNIT_TEST= unit_test_e2ap_indication.o
76 E2AP_CTRL_UNIT_TEST= unit_test_e2ap_control.o
77 E2SM_UNIT_TEST=unit_test_e2sm.o
78 JSON_UNIT_TEST = unit_test_json.o
79 SGNB_ADD_REQ_UNIT_TEST = unit_test_sgnb_addition_request.o
80 MESSAGE_PROC_UNIT_TEST = unit_test_message_processor.o
81 SLIDING_WINDOW_UNIT_TEST = unit_test_sliding_window.o
82 PROTECTOR_UNIT_TEST = unit_test_protector_plugin.o
83 ADMISSION_UNIT_TEST = unit_test_admission_policy.o
84 MOCK_E2TERM_OBJ= mock_e2term_server.o
85 MOCK_A1SERVER_OBJ = mock_a1_mediator.o
86 #===========================================
90 XAPP_UTILS_OBJ = $(XAPP_UTILS_SRC:.cc=.o)
91 XAPP_MPROC_OBJ= $(XAPP_MPROC_SRC:.cc=.o)
92 E2AP_OBJ=$(E2AP_SRC:.cc=.o)
93 X2AP_OBJ=$(X2AP_SRC:.cc=.o)
94 A1_OBJ= $(A1_SRC:.cc=.o)
95 PLUGINS_OBJ = $(PLUGINS_SRC:.cc=.o)
96 SUBSCR_OBJ= $(SUBSCR_SRC:.cc=.o)
97 E2AP_C_OBJ = $(E2AP_C_SRC:.cc=.o)
98 E2SM_OBJ = $(E2SM_SRC:.cc=.o)
99 ASN1C_MODULES = $(ASN1C_SRC:.c=.o)
100 X2AP_OBJ = $(X2AP_SRC:.cc=.o)
101 JSON_OBJ = $(JSON_SRC:.cc=.o)
102 PROTECTOR_OBJ = $(PROTECTOR_SRC:.cc=.o)
104 #===========================================
106 $(XAPP_UTILS_OBJ) $(XAPP_UNIT_TEST) :export CPPFLAGS= $(BASEFLAGS) $(XAPPFLAGS)
108 $(A1_OBJ) $(MOCK_A1SERVER_OBJ) $(JSON_UNIT_TEST) :export CPPFLAGS= $(BASEFLAGS) $(A1FLAGS) $(XAPPFLAGS)
110 $(XAPP_MPROC_OBJ) $(MESSAGE_PROC_UNIT_TEST) $(MOCK_SUB_CLIENT_OBJ): export CPPFLAGS=$(BASEFLAGS) $(JSONFLAGS) $(XAPPFLAGS) $(E2FLAGS) $(X2FLAGS) $(SUBSCRFLAGS) $(PLUGINFLAGS) $(PROTECTORFLAGS) $(E2SMFLAGS)
112 $(SUBSCRIPTION_FLOW_UNIT_TEST): export CPPFLAGS=$(BASEFLAGS) $(SUBSCRFLAGS) $(E2SMFLAGS)
114 $(E2AP_C_OBJ) $(E2AP_IND_UNIT_TEST) $(E2AP_CTRL_UNIT_TEST) : export CPPFLAGS=$(BASEFLAGS) $(E2FLAGS)
116 $(SUBSCR_OBJ) $(E2SUB_UNIT_TEST): export CPPFLAGS=$(BASEFLAGS) $(SUBSCRFLAGS)
118 $(E2SM_OBJ) $(E2SM_UNIT_TEST): export CPPFLAGS= $(BASEFLAGS) $(E2SMFLAGS)
120 $(ASN1C_MODULES): export CFLAGS = $(C_BASEFLAGS) -I$(ASN1C_DIR)/
122 $(X2AP_OBJ) $(SGNB_ADD_REQ_UNIT_TEST) : export CPPFLAGS= $(X2FLAGS) $(BASEFLAGS)
124 $(PLUGINS_OBJ) : export CPPFLAGS = $(BASEFLAGS) $(JSONFLAGS)
126 $(MOCK_E2TERM_OBJ): export CPPFLAGS = $(BASEFLAGS) $(SUBSCRFLAGS) $(E2FLAGS) $(E2SMFLAGS) $(XAPPFLAGS) $(X2FLAGS)
128 $(JSON_OBJ) $(JSON_UNIT_TEST): export CPPFLAGS= $(BASEFLAGS) $(JSONFLAGS)
130 $(PROTECTOR_OBJ) $(SLIDING_WINDOW_UNIT_TEST) $(PROTECTOR_UNIT_TEST) $(ADMISSION_UNIT_TEST): export CPPFLAGS = $(BASEFLAGS) $(PLUGINFLAGS) $(JSONFLAGS) $(PROTECTORFLAGS) $(X2FLAGS)
133 TEST_XAPP: $(XAPP_UTILS_OBJ) $(XAPP_UNIT_TEST)
134 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
136 TEST_SUBSCRIPTION_FLOW: $(SUBSCRIPTION_FLOW_UNIT_TEST) $(SUBSCR_OBJ) $(E2SM_OBJ) $(ASN1C_MODULES)
137 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
139 TEST_SUBSCRIPTION: $(SUBSCR_OBJ) $(E2SUB_UNIT_TEST) $(ASN1C_MODULES)
140 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
142 TEST_E2AP_INDICATION: $(E2AP_C_OBJ) $(E2AP_IND_UNIT_TEST) $(ASN1C_MODULES)
143 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
145 TEST_E2AP_CONTROL: $(E2AP_C_OBJ) $(E2AP_CTRL_UNIT_TEST) $(ASN1C_MODULES)
146 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
148 TEST_E2SM: $(E2SM_OBJ) $(E2SM_UNIT_TEST) $(ASN1C_MODULES)
149 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
151 TEST_X2_SGNB: $(X2AP_OBJ) $(SGNB_ADD_REQ_UNIT_TEST) $(ASN1C_MODULES)
152 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
154 TEST_JSON: $(JSON_OBJ) $(JSON_UNIT_TEST)
155 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
157 TEST_MESSAGE_PROCESSOR: $(MESSAGE_PROC_UNIT_TEST) $(XAPP_MPROC_OBJ) $(ASN1C_MODULES) $(E2AP_C_OBJ) $(PROTECTOR_OBJ) $(E2SM_OBJ) $(X2AP_OBJ) $(SUBSCR_OBJ) $(JSON_OBJ) $(PLUGINS_OBJ)
158 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
160 TEST_ADMISSION: $(ADMISSION_UNIT_TEST) $(PROTECTOR_OBJ) $(X2AP_OBJ) $(ASN1C_MODULES) $(PLUGINS_OBJ) $(JSON_OBJ)
161 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
163 TEST_PROTECTOR_PLUGIN: $(PROTECTOR_UNIT_TEST) $(PROTECTOR_OBJ) $(X2AP_OBJ) $(ASN1C_MODULES) $(PLUGINS_OBJ) $(JSON_OBJ)
164 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
166 TEST_SLIDING_WINDOW: $(SLIDING_WINDOW_UNIT_TEST) $(PROTECTOR_OBJ) $(X2AP_OBJ) $(ASN1C_MODULES) $(PLUGINS_OBJ) $(JSON_OBJ)
167 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
170 mock-e2term-server: $(XAPP_UTILS_OBJ) $(E2AP_C_OBJ) $(SUBSCR_OBJ) $(E2SM_OBJ) $(X2AP_OBJ) $(MOCK_E2TERM_OBJ) $(ASN1C_MODULES)
171 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS) $(CPPFLAGS)
174 mock-a1-server: $(A1_OBJ) $(MOCK_A1SERVER_OBJ) $(XAPP_UTILS_OBJ)
175 $(CXX) -o $@ $^ $(LIBS) $(LOGLIBS)
177 all_tests: TEST_XAPP TEST_SUBSCRIPTION TEST_ADMISSION TEST_E2AP_INDICATION TEST_E2AP_CONTROL TEST_E2SM TEST_X2_SGNB TEST_JSON TEST_SUBSCRIPTION_FLOW TEST_MESSAGE_PROCESSOR TEST_SLIDING_WINDOW TEST_PROTECTOR_PLUGIN
180 install: mock-e2term-server
181 install -D mock-e2term-server /usr/local/bin/mock-e2term-server
183 -rm TEST_* *.o e2e-test-client mock-e2term-server e2e-perf-client e2e-perf-server mock-a1-server
184 -cd ../src && make -f ../src/Makefile clean