1#
2# %CopyrightBegin%
3#
4# Copyright Ericsson AB 1999-2020. All Rights Reserved.
5#
6# Licensed under the Apache License, Version 2.0 (the "License");
7# you may not use this file except in compliance with the License.
8# You may obtain a copy of the License at
9#
10#     http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS,
14# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15# See the License for the specific language governing permissions and
16# limitations under the License.
17#
18# %CopyrightEnd%
19
20include $(ERL_TOP)/make/target.mk
21include $(ERL_TOP)/make/$(TARGET)/otp.mk
22
23
24# ----------------------------------------------------
25# Application version
26# ----------------------------------------------------
27include ../vsn.mk
28VSN=$(MEGACO_VSN)
29
30
31# ----------------------------------------------------
32# Release directory specification
33# ----------------------------------------------------
34RELSYSDIR = $(RELEASE_PATH)/megaco_test
35
36ifeq ($(findstring win32,$(TARGET)),win32)
37
38MAKEFILE_SRC = Makefile.win32.src
39
40else
41
42MAKEFILE_SRC = Makefile.src
43
44endif
45
46ifeq ($(TT_DIR),)
47TT_DIR = /tmp
48endif
49
50# ----------------------------------------------------
51# Target Specs
52# ----------------------------------------------------
53
54include modules.mk
55
56EBIN = .
57
58HRL_FILES = megaco_test_lib.hrl
59
60ERL_FILES = $(MODULES:%=%.erl)
61
62SOURCE = $(HRL_FILES) $(ERL_FILES)
63
64TARGET_FILES = $(MODULES:%=%.$(EMULATOR))
65
66EMAKEFILE  = Emakefile
67MAKE_EMAKE = $(wildcard $(ERL_TOP)/make/make_emakefile)
68
69ifeq ($(MAKE_EMAKE),)
70BUILDTARGET   = $(TARGET_FILES)
71RELTEST_FILES = $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) $(SOURCE)
72else
73BUILDTARGET   = emakebuild
74RELTEST_FILES = $(EMAKEFILE) $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) $(SOURCE)
75endif
76
77
78# ----------------------------------------------------
79# FLAGS
80# ----------------------------------------------------
81
82include ../src/app/megaco.mk
83
84ifeq ($(USE_MEGACO_TEST_CODE),true)
85ERL_COMPILE_FLAGS += -DMEGACO_TEST_CODE=mona_lisa_spelar_doom
86endif
87
88ERL_COMPILE_FLAGS += $(MEGACO_ERL_COMPILE_FLAGS)
89
90# We have a behaviour in the test catalog (megaco_test_generator)
91ERL_COMPILE_FLAGS += -pa ../../megaco/test
92
93ERL_PATH = -pa ../../megaco/examples/simple \
94           -pa ../../megaco/ebin \
95           -pa ../../et/ebin
96
97ifndef SUITE
98SUITE = megaco_SUITE
99endif
100
101ESTOP = -s init stop
102
103ifeq ($(DONT_STOP),true)
104MAYBE_ESTOP =
105else
106MAYBE_ESTOP = $(ESTOP)
107endif
108
109ETVIEW = -s et_viewer
110ifeq ($(USE_ET_VIEWER),true)
111MAYBE_ETVIEW =
112else
113MAYBE_ETVIEW = $(ETVIEW)
114endif
115
116ifeq ($(MERL),)
117MERL = erl
118endif
119
120ARGS += -noshell
121
122ifeq ($(DISABLE_TC_TIMEOUT),true)
123ARGS += -megaco_test_timeout
124endif
125
126
127# ----------------------------------------------------
128# Targets
129# ----------------------------------------------------
130
131tests debug opt: $(BUILDTARGET)
132
133targets: $(TARGET_FILES)
134
135.PHONY: emakebuild
136
137emakebuild: $(EMAKEFILE)
138
139$(EMAKEFILE):
140	$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) '*_SUITE_make' | grep -v Warning > $(EMAKEFILE)
141	$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES) | grep -v Warning >> $(EMAKEFILE)
142
143clean:
144	rm -f $(EMAKEFILE)
145	rm -f $(TARGET_FILES)
146	rm -f errs core *~
147
148docs:
149
150info:
151	@echo "MAKE_EMAKE        = $(MAKE_EMAKE)"
152	@echo "EMAKEFILE         = $(EMAKEFILE)"
153	@echo "BUILDTARGET       = $(BUILDTARGET)"
154	@echo ""
155	@echo "ERL_COMPILE_FLAGS = $(ERL_COMPILE_FLAGS)"
156	@echo "ERL  = $(ERL)"
157	@echo "MERL = $(MERL)"
158	@echo ""
159	@echo "ARGS = $(ARGS)"
160	@echo ""
161	@echo "HRL_FILES    = $(HRL_FILES)"
162	@echo "ERL_FILES    = $(ERL_FILES)"
163	@echo "TARGET_FILES = $(TARGET_FILES)"
164	@echo ""
165
166help:
167	@echo ""
168	@echo "This Makefile controls the test of the $(APPLICATION) application. "
169	@echo ""
170	@echo "There are two separate ways to perform the test of $(APPLICATION)."
171	@echo ""
172	@echo "  a) Run the official OTP test-server (which we do not describe here)"
173	@echo ""
174	@echo "  b) Run the test-server provided with this application. "
175	@echo "     There are a number of targets to run the entire or parts"
176	@echo "     of this applications ($(APPLICATION)) test-suite"
177	@echo ""
178	@echo "Targets:"
179	@echo ""
180	@echo "    help"
181	@echo "      Print this info"
182	@echo ""
183	@echo "    info"
184	@echo "      Prints various environment variables. "
185	@echo "      May be useful when debugging the Makefile. "
186	@echo ""
187	@echo "    tests | debug | opt "
188	@echo "      Compile all test-code. "
189	@echo ""
190	@echo "    clean "
191	@echo "      Remove all targets. "
192	@echo ""
193
194
195# ----------------------------------------------------
196# Special Targets
197# ----------------------------------------------------
198
199make: targets
200
201utest: make
202	$(MERL) $(ARGS) -sname megaco_utest $(ERL_PATH) \
203            $(MAYBE_ETVIEW) \
204            -s megaco_test_lib t $(SUITE) \
205            $(ESTOP)
206
207ftest: make
208	$(MERL) $(ARGS) -sname megaco_ftest $(ERL_PATH) \
209            -s megaco_filter \
210            -s megaco_test_lib t $(SUITE) \
211            $(ESTOP)
212
213decode_compact_prof1: make
214	$(MERL) $(ARGS) -sname megaco_profile_decode_compact $(ERL_PATH) \
215            -s megaco_codec_v1_SUITE profile_decode_compact_text_messages \
216            $(ESTOP)
217
218decode_compact_flex_prof1: make
219	$(MERL) $(ARGS) -sname megaco_profile_decode_compact_flex $(ERL_PATH) \
220            -s megaco_codec_v1_SUITE profile_decode_compact_flex_text_messages \
221            $(ESTOP)
222
223decode_compact_prof2: make
224	$(MERL) $(ARGS) -sname megaco_profile_decode_compact $(ERL_PATH) \
225            -s megaco_codec_v2_SUITE profile_decode_compact_text_messages \
226            $(ESTOP)
227
228decode_compact_flex_prof2: make
229	$(MERL) $(ARGS) -sname megaco_profile_decode_compact_flex $(ERL_PATH) \
230            -s megaco_codec_v2_SUITE profile_decode_compact_flex_text_messages \
231            $(ESTOP)
232
233decode_pretty_prof1: make
234	$(MERL) $(ARGS) -sname megaco_profile_decode_pretty $(ERL_PATH) \
235            -s megaco_codec_v1_SUITE profile_decode_pretty_text_messages \
236            $(ESTOP)
237
238decode_pretty_flex_prof1: make
239	$(MERL) $(ARGS) -sname megaco_profile_decode_pretty_flex $(ERL_PATH) \
240            -s megaco_codec_v1_SUITE profile_decode_pretty_flex_text_messages \
241            $(ESTOP)
242
243decode_pretty_prof2: make
244	$(MERL) $(ARGS) -sname megaco_profile_decode_pretty $(ERL_PATH) \
245            -s megaco_codec_v2_SUITE profile_decode_pretty_text_messages \
246            $(ESTOP)
247
248decode_pretty_flex_prof2: make
249	$(MERL) $(ARGS) -sname megaco_profile_decode_pretty_flex $(ERL_PATH) \
250            -s megaco_codec_v2_SUITE profile_decode_pretty_flex_text_messages \
251            $(ESTOP)
252
253encode_compact_prof1: make
254	$(MERL) $(ARGS) -sname megaco_profile_encode_compact $(ERL_PATH) \
255            -s megaco_codec_v1_SUITE profile_encode_compact_text_messages \
256            $(ESTOP)
257
258encode_compact_prof2: make
259	$(MERL) $(ARGS) -sname megaco_profile_encode_compact $(ERL_PATH) \
260            -s megaco_codec_v2_SUITE profile_encode_compact_text_messages \
261            $(ESTOP)
262
263encode_pretty_prof1: make
264	$(MERL) $(ARGS) -sname megaco_profile_encode_pretty $(ERL_PATH) \
265            -s megaco_codec_v1_SUITE profile_encode_pretty_text_messages \
266            $(ESTOP)
267
268encode_pretty_prof2: make
269	$(MERL) $(ARGS) -sname megaco_profile_encode_pretty $(ERL_PATH) \
270            -s megaco_codec_v2_SUITE profile_encode_pretty_text_messages \
271            $(ESTOP)
272
273
274##########################
275
276time1: make
277	$(MERL) $(ARGS) -sname megaco_time1 $(ERL_PATH) \
278            -run megaco_codec_v1_SUITE tt $(TT_DIR) \
279            $(ESTOP)
280
281time2: make
282	$(MERL) $(ARGS) -sname megaco_time2 $(ERL_PATH) \
283            -run megaco_codec_v2_SUITE tt $(TT_DIR) \
284            $(ESTOP)
285
286timeo1: make
287	$(MERL) $(ARGS) -sname megaco_timeo1 $(ERL_PATH) \
288            -run megaco_codec_v1_SUITE tt_official $(TT_DIR) \
289            $(ESTOP)
290
291timeo2: make
292	$(MERL) $(ARGS) -sname megaco_timeo2 $(ERL_PATH) \
293            -run megaco_codec_v2_SUITE tt_official $(TT_DIR) \
294            $(ESTOP)
295
296timeo3: make
297	$(MERL) $(ARGS) -sname megaco_timeo3 $(ERL_PATH) \
298            -run megaco_codec_v3_SUITE tt_official $(TT_DIR) \
299            $(ESTOP)
300
301timet1: make
302	$(MERL) $(ARGS) -sname megaco_timet1 $(ERL_PATH) \
303            -run megaco_codec_v1_SUITE tt_texts $(TT_DIR) \
304            $(ESTOP)
305
306timet2: make
307	$(MERL) $(ARGS) -sname megaco_timet2 $(ERL_PATH) \
308            -run megaco_codec_v2_SUITE tt_texts $(TT_DIR) \
309            $(ESTOP)
310
311timet3: make
312	$(MERL) $(ARGS) -sname megaco_timet3 $(ERL_PATH) \
313            -run megaco_codec_v3_SUITE tt_texts $(TT_DIR) \
314            $(ESTOP)
315
316timeb1: make
317	$(MERL) $(ARGS) -sname megaco_timeb1 $(ERL_PATH) \
318            -run megaco_codec_v1_SUITE tt_bins $(TT_DIR) \
319            $(ESTOP)
320
321timeb2: make
322	$(MERL) $(ARGS) -sname megaco_timeb2 $(ERL_PATH) \
323            -run megaco_codec_v2_SUITE tt_bins $(TT_DIR) \
324            $(ESTOP)
325
326timeb3: make
327	$(MERL) $(ARGS) -sname megaco_timeb3 $(ERL_PATH) \
328            -run megaco_codec_v3_SUITE tt_bins $(TT_DIR) \
329            $(ESTOP)
330
331
332###################
333
334gnuplot_gif: make
335	$(MERL) $(ARGS) -sname megaco_gnuplot_gif $(ERL_PATH) \
336            -s megaco_call_flow_SUITE gnuplot_gif \
337            $(ESTOP)
338
339display_v1: make
340	$(MERL) $(ARGS) -sname megaco_display_text_msgs_v1 $(ERL_PATH) \
341            -s megaco_codec_v1_SUITE display_text_messages \
342            $(ESTOP)
343
344generate_v1: make
345	$(MERL) $(ARGS) -sname megaco_generate_text_msgs_v1 $(ERL_PATH) \
346            -s megaco_codec_v1_SUITE generate_text_messages \
347            $(ESTOP)
348
349display_v2: make
350	$(MERL) $(ARGS) -sname megaco_display_text_msgs_v2 $(ERL_PATH) \
351            -s megaco_codec_v2_SUITE display_text_messages \
352            $(ESTOP)
353
354generate_v2: make
355	$(MERL) $(ARGS) -sname megaco_generate_text_msgs_v2 $(ERL_PATH) \
356            -s megaco_codec_v2_SUITE generate_text_messages \
357            $(ESTOP)
358
359display_v3: make
360	$(MERL) $(ARGS) -sname megaco_display_text_msgs_v3 $(ERL_PATH) \
361            -s megaco_codec_v3_SUITE display_text_messages \
362            $(ESTOP)
363
364generate_v3: make
365	$(MERL) $(ARGS) -sname megaco_generate_text_msgs_v3 $(ERL_PATH) \
366            -s megaco_codec_v3_SUITE generate_text_messages \
367            $(ESTOP)
368
369generate: make
370	$(MERL) $(ARGS) -sname megaco_generate_text_msgs $(ERL_PATH) \
371            -s megaco_codec_v1_SUITE generate_text_messages \
372            -s megaco_codec_v2_SUITE generate_text_messages \
373            -s megaco_codec_v3_SUITE generate_text_messages \
374            $(ESTOP)
375
376node:
377	$(MERL) -sname megaco $(ERL_PATH)
378
379
380# ----------------------------------------------------
381# Release Targets
382# ----------------------------------------------------
383
384include $(ERL_TOP)/make/otp_release_targets.mk
385
386release_spec:
387
388release_docs_spec:
389
390release_tests_spec: tests
391	$(INSTALL_DIR)  "$(RELSYSDIR)"
392	$(INSTALL_DATA) $(RELTEST_FILES) "$(RELSYSDIR)"
393#	$(INSTALL_DATA) $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) \
394#                        $(HRL_FILES) $(ERL_FILES) \
395#                        "$(RELSYSDIR)"
396#
397	chmod -R u+w "$(RELSYSDIR)"
398
399