1#
2# %CopyrightBegin%
3#
4# Copyright Ericsson AB 1999-2019. 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
88ifeq ($(USE_MEGACO_HIPE),true)
89ERL_COMPILE_FLAGS += +native -Dmegaco_hipe_special=true
90endif
91
92ERL_COMPILE_FLAGS += $(MEGACO_ERL_COMPILE_FLAGS)
93
94# We have a behaviour in the test catalog (megaco_test_generator)
95ERL_COMPILE_FLAGS += -pa ../../megaco/test
96
97ERL_PATH = -pa ../../megaco/examples/simple \
98           -pa ../../megaco/ebin \
99           -pa ../../et/ebin
100
101ifndef SUITE
102SUITE = megaco_SUITE
103endif
104
105ESTOP = -s init stop
106
107ifeq ($(DONT_STOP),true)
108MAYBE_ESTOP =
109else
110MAYBE_ESTOP = $(ESTOP)
111endif
112
113ETVIEW = -s et_viewer
114ifeq ($(USE_ET_VIEWER),true)
115MAYBE_ETVIEW =
116else
117MAYBE_ETVIEW = $(ETVIEW)
118endif
119
120ifeq ($(MERL),)
121MERL = erl
122endif
123
124ARGS += -noshell
125
126ifeq ($(DISABLE_TC_TIMEOUT),true)
127ARGS += -megaco_test_timeout
128endif
129
130
131# ----------------------------------------------------
132# Targets
133# ----------------------------------------------------
134
135tests debug opt: $(BUILDTARGET)
136
137targets: $(TARGET_FILES)
138
139.PHONY: emakebuild
140
141emakebuild: $(EMAKEFILE)
142
143$(EMAKEFILE):
144	$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) '*_SUITE_make' | grep -v Warning > $(EMAKEFILE)
145	$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES) | grep -v Warning >> $(EMAKEFILE)
146
147clean:
148	rm -f $(EMAKEFILE)
149	rm -f $(TARGET_FILES)
150	rm -f errs core *~
151
152docs:
153
154info:
155	@echo "MAKE_EMAKE        = $(MAKE_EMAKE)"
156	@echo "EMAKEFILE         = $(EMAKEFILE)"
157	@echo "BUILDTARGET       = $(BUILDTARGET)"
158	@echo ""
159	@echo "ERL_COMPILE_FLAGS = $(ERL_COMPILE_FLAGS)"
160	@echo "ERL  = $(ERL)"
161	@echo "MERL = $(MERL)"
162	@echo ""
163	@echo "ARGS = $(ARGS)"
164	@echo ""
165	@echo "HRL_FILES    = $(HRL_FILES)"
166	@echo "ERL_FILES    = $(ERL_FILES)"
167	@echo "TARGET_FILES = $(TARGET_FILES)"
168	@echo ""
169
170help:
171	@echo ""
172	@echo "This Makefile controls the test of the $(APPLICATION) application. "
173	@echo ""
174	@echo "There are two separate ways to perform the test of $(APPLICATION)."
175	@echo ""
176	@echo "  a) Run the official OTP test-server (which we do not describe here)"
177	@echo ""
178	@echo "  b) Run the test-server provided with this application. "
179	@echo "     There are a number of targets to run the entire or parts"
180	@echo "     of this applications ($(APPLICATION)) test-suite"
181	@echo ""
182	@echo "Targets:"
183	@echo ""
184	@echo "    help"
185	@echo "      Print this info"
186	@echo ""
187	@echo "    info"
188	@echo "      Prints various environment variables. "
189	@echo "      May be useful when debugging the Makefile. "
190	@echo ""
191	@echo "    tests | debug | opt "
192	@echo "      Compile all test-code. "
193	@echo ""
194	@echo "    clean "
195	@echo "      Remove all targets. "
196	@echo ""
197
198
199# ----------------------------------------------------
200# Special Targets
201# ----------------------------------------------------
202
203make: targets
204
205utest: make
206	$(MERL) $(ARGS) -sname megaco_utest $(ERL_PATH) \
207            $(MAYBE_ETVIEW) \
208            -s megaco_test_lib t $(SUITE) \
209            $(ESTOP)
210
211ftest: make
212	$(MERL) $(ARGS) -sname megaco_ftest $(ERL_PATH) \
213            -s megaco_filter \
214            -s megaco_test_lib t $(SUITE) \
215            $(ESTOP)
216
217decode_compact_prof1: make
218	$(MERL) $(ARGS) -sname megaco_profile_decode_compact $(ERL_PATH) \
219            -s megaco_codec_v1_SUITE profile_decode_compact_text_messages \
220            $(ESTOP)
221
222decode_compact_flex_prof1: make
223	$(MERL) $(ARGS) -sname megaco_profile_decode_compact_flex $(ERL_PATH) \
224            -s megaco_codec_v1_SUITE profile_decode_compact_flex_text_messages \
225            $(ESTOP)
226
227decode_compact_prof2: make
228	$(MERL) $(ARGS) -sname megaco_profile_decode_compact $(ERL_PATH) \
229            -s megaco_codec_v2_SUITE profile_decode_compact_text_messages \
230            $(ESTOP)
231
232decode_compact_flex_prof2: make
233	$(MERL) $(ARGS) -sname megaco_profile_decode_compact_flex $(ERL_PATH) \
234            -s megaco_codec_v2_SUITE profile_decode_compact_flex_text_messages \
235            $(ESTOP)
236
237decode_pretty_prof1: make
238	$(MERL) $(ARGS) -sname megaco_profile_decode_pretty $(ERL_PATH) \
239            -s megaco_codec_v1_SUITE profile_decode_pretty_text_messages \
240            $(ESTOP)
241
242decode_pretty_flex_prof1: make
243	$(MERL) $(ARGS) -sname megaco_profile_decode_pretty_flex $(ERL_PATH) \
244            -s megaco_codec_v1_SUITE profile_decode_pretty_flex_text_messages \
245            $(ESTOP)
246
247decode_pretty_prof2: make
248	$(MERL) $(ARGS) -sname megaco_profile_decode_pretty $(ERL_PATH) \
249            -s megaco_codec_v2_SUITE profile_decode_pretty_text_messages \
250            $(ESTOP)
251
252decode_pretty_flex_prof2: make
253	$(MERL) $(ARGS) -sname megaco_profile_decode_pretty_flex $(ERL_PATH) \
254            -s megaco_codec_v2_SUITE profile_decode_pretty_flex_text_messages \
255            $(ESTOP)
256
257encode_compact_prof1: make
258	$(MERL) $(ARGS) -sname megaco_profile_encode_compact $(ERL_PATH) \
259            -s megaco_codec_v1_SUITE profile_encode_compact_text_messages \
260            $(ESTOP)
261
262encode_compact_prof2: make
263	$(MERL) $(ARGS) -sname megaco_profile_encode_compact $(ERL_PATH) \
264            -s megaco_codec_v2_SUITE profile_encode_compact_text_messages \
265            $(ESTOP)
266
267encode_pretty_prof1: make
268	$(MERL) $(ARGS) -sname megaco_profile_encode_pretty $(ERL_PATH) \
269            -s megaco_codec_v1_SUITE profile_encode_pretty_text_messages \
270            $(ESTOP)
271
272encode_pretty_prof2: make
273	$(MERL) $(ARGS) -sname megaco_profile_encode_pretty $(ERL_PATH) \
274            -s megaco_codec_v2_SUITE profile_encode_pretty_text_messages \
275            $(ESTOP)
276
277
278##########################
279
280time1: make
281	$(MERL) $(ARGS) -sname megaco_time1 $(ERL_PATH) \
282            -run megaco_codec_v1_SUITE tt $(TT_DIR) \
283            $(ESTOP)
284
285time2: make
286	$(MERL) $(ARGS) -sname megaco_time2 $(ERL_PATH) \
287            -run megaco_codec_v2_SUITE tt $(TT_DIR) \
288            $(ESTOP)
289
290timeo1: make
291	$(MERL) $(ARGS) -sname megaco_timeo1 $(ERL_PATH) \
292            -run megaco_codec_v1_SUITE tt_official $(TT_DIR) \
293            $(ESTOP)
294
295timeo2: make
296	$(MERL) $(ARGS) -sname megaco_timeo2 $(ERL_PATH) \
297            -run megaco_codec_v2_SUITE tt_official $(TT_DIR) \
298            $(ESTOP)
299
300timeo3: make
301	$(MERL) $(ARGS) -sname megaco_timeo3 $(ERL_PATH) \
302            -run megaco_codec_v3_SUITE tt_official $(TT_DIR) \
303            $(ESTOP)
304
305timet1: make
306	$(MERL) $(ARGS) -sname megaco_timet1 $(ERL_PATH) \
307            -run megaco_codec_v1_SUITE tt_texts $(TT_DIR) \
308            $(ESTOP)
309
310timet2: make
311	$(MERL) $(ARGS) -sname megaco_timet2 $(ERL_PATH) \
312            -run megaco_codec_v2_SUITE tt_texts $(TT_DIR) \
313            $(ESTOP)
314
315timet3: make
316	$(MERL) $(ARGS) -sname megaco_timet3 $(ERL_PATH) \
317            -run megaco_codec_v3_SUITE tt_texts $(TT_DIR) \
318            $(ESTOP)
319
320timeb1: make
321	$(MERL) $(ARGS) -sname megaco_timeb1 $(ERL_PATH) \
322            -run megaco_codec_v1_SUITE tt_bins $(TT_DIR) \
323            $(ESTOP)
324
325timeb2: make
326	$(MERL) $(ARGS) -sname megaco_timeb2 $(ERL_PATH) \
327            -run megaco_codec_v2_SUITE tt_bins $(TT_DIR) \
328            $(ESTOP)
329
330timeb3: make
331	$(MERL) $(ARGS) -sname megaco_timeb3 $(ERL_PATH) \
332            -run megaco_codec_v3_SUITE tt_bins $(TT_DIR) \
333            $(ESTOP)
334
335
336###################
337
338gnuplot_gif: make
339	$(MERL) $(ARGS) -sname megaco_gnuplot_gif $(ERL_PATH) \
340            -s megaco_call_flow_SUITE gnuplot_gif \
341            $(ESTOP)
342
343display_v1: make
344	$(MERL) $(ARGS) -sname megaco_display_text_msgs_v1 $(ERL_PATH) \
345            -s megaco_codec_v1_SUITE display_text_messages \
346            $(ESTOP)
347
348generate_v1: make
349	$(MERL) $(ARGS) -sname megaco_generate_text_msgs_v1 $(ERL_PATH) \
350            -s megaco_codec_v1_SUITE generate_text_messages \
351            $(ESTOP)
352
353display_v2: make
354	$(MERL) $(ARGS) -sname megaco_display_text_msgs_v2 $(ERL_PATH) \
355            -s megaco_codec_v2_SUITE display_text_messages \
356            $(ESTOP)
357
358generate_v2: make
359	$(MERL) $(ARGS) -sname megaco_generate_text_msgs_v2 $(ERL_PATH) \
360            -s megaco_codec_v2_SUITE generate_text_messages \
361            $(ESTOP)
362
363display_prev3a: make
364	$(MERL) $(ARGS) -sname megaco_display_text_msgs_prev3a $(ERL_PATH) \
365            -s megaco_codec_prev3a_SUITE display_text_messages \
366            $(ESTOP)
367
368display_prev3b: make
369	$(MERL) $(ARGS) -sname megaco_display_text_msgs_prev3b $(ERL_PATH) \
370            -s megaco_codec_prev3b_SUITE display_text_messages \
371            $(ESTOP)
372
373generate_prev3b: make
374	$(MERL) $(ARGS) -sname megaco_generate_text_msgs_prev3b $(ERL_PATH) \
375            -s megaco_codec_prev3b_SUITE generate_text_messages \
376            $(ESTOP)
377
378display_prev3c: make
379	$(MERL) $(ARGS) -sname megaco_display_text_msgs_prev3c $(ERL_PATH) \
380            -s megaco_codec_prev3c_SUITE display_text_messages \
381            $(ESTOP)
382
383generate_prev3c: make
384	$(MERL) $(ARGS) -sname megaco_generate_text_msgs_prev3c $(ERL_PATH) \
385            -s megaco_codec_prev3c_SUITE generate_text_messages \
386            $(ESTOP)
387
388display_v3: make
389	$(MERL) $(ARGS) -sname megaco_display_text_msgs_v3 $(ERL_PATH) \
390            -s megaco_codec_v3_SUITE display_text_messages \
391            $(ESTOP)
392
393generate_v3: make
394	$(MERL) $(ARGS) -sname megaco_generate_text_msgs_v3 $(ERL_PATH) \
395            -s megaco_codec_v3_SUITE generate_text_messages \
396            $(ESTOP)
397
398generate: make
399	$(MERL) $(ARGS) -sname megaco_generate_text_msgs $(ERL_PATH) \
400            -s megaco_codec_v1_SUITE generate_text_messages \
401            -s megaco_codec_v2_SUITE generate_text_messages \
402            -s megaco_codec_v3_SUITE generate_text_messages \
403            $(ESTOP)
404
405node:
406	$(MERL) -sname megaco $(ERL_PATH)
407
408
409# ----------------------------------------------------
410# Release Targets
411# ----------------------------------------------------
412
413include $(ERL_TOP)/make/otp_release_targets.mk
414
415release_spec:
416
417release_docs_spec:
418
419release_tests_spec: tests
420	$(INSTALL_DIR)  "$(RELSYSDIR)"
421	$(INSTALL_DATA) $(RELTEST_FILES) "$(RELSYSDIR)"
422#	$(INSTALL_DATA) $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) \
423#                        $(HRL_FILES) $(ERL_FILES) \
424#                        "$(RELSYSDIR)"
425#
426	chmod -R u+w "$(RELSYSDIR)"
427
428