1#
2# %CopyrightBegin%
3#
4# Copyright Ericsson AB 1997-2018. 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#
20#
21# For an outline of how this all_SUITE_data stuff works, see the
22# make file ../../ssl/test/Makefile.
23#
24include $(ERL_TOP)/make/target.mk
25include $(ERL_TOP)/make/$(TARGET)/otp.mk
26
27# ----------------------------------------------------
28# Application version
29# ----------------------------------------------------
30include ../vsn.mk
31VSN = $(TFTP_VSN)
32
33
34# ----------------------------------------------------
35# Release directory specification
36# ----------------------------------------------------
37RELSYSDIR = $(RELEASE_PATH)/lib/$(APPLICATION)-$(VSN)
38
39
40# ----------------------------------------------------
41# Target Specs
42# ----------------------------------------------------
43INCLUDES = -I. \
44	-I$(ERL_TOP)/lib/tftp/src
45
46CP = cp
47
48ifeq ($(TESTROOT_DIR),)
49TESTROOT_DIR = /ldisk/tests/$(USER)/tftp
50endif
51
52ifeq ($(TFTP_DATA_DIR),)
53TFTP_DATA_DIR = $(TESTROOT_DIR)/data_dir
54endif
55
56ifeq ($(TFTP_PRIV_DIR),)
57TFTP_PRIV_DIR = $(TESTROOT_DIR)/priv_dir
58endif
59
60TFTP_FLAGS = -Dtftp__data_dir='"$(TFTP_DATA_DIR)"'       \
61              -Dtftp_priv_dir='"$(TFTP_PRIV_DIR)"'
62
63
64###
65### test suite debug flags
66###
67ifeq ($(TFTP_DEBUG_CLIENT),)
68  TFTP_DEBUG_CLIENT = y
69endif
70
71ifeq ($(TFTP_DEBUG_CLIENT),)
72  TFTP_FLAGS += -Dtftp_debug_client
73endif
74
75ifeq ($(TFTP_TRACE_CLIENT),)
76  TFTP_DEBUG_CLIENT = y
77endif
78
79ifeq ($(TFTP_TRACE_CLIENT),y)
80  TFTP_FLAGS += -Dtftp_trace_client
81endif
82
83ifneq ($(TFTP_DEBUG),)
84  TFTP_DEBUG = s
85endif
86
87ifeq ($(TFTP_DEBUG),l)
88  TFTP_FLAGS += -Dtftp_log
89endif
90
91ifeq ($(TFTP_DEBUG),d)
92  TFTP_FLAGS += -Dtftp_debug -Dtftp_log
93endif
94
95
96TFTP_FLAGS += -pa ../tftp/ebin
97
98TFTP_ROOT = ../tftp
99
100MODULES =                 		\
101	tftp_SUITE 	  		\
102	tftp_test_lib
103
104
105EBIN = .
106
107HRL_FILES = \
108	../src/tftp.hrl \
109	tftp_test_lib.hrl
110
111ERL_FILES = $(MODULES:%=%.erl)
112
113SOURCE = $(ERL_FILES) $(HRL_FILES)
114
115TARGET_FILES = $(MODULES:%=$(EBIN)/%.$(EMULATOR))
116
117TFTP_SPECS = tftp.spec
118COVER_FILE = tftp.cover
119TFTP_FILES = tftp.config $(TFTP_SPECS)
120
121
122TFTP_DATADIRS   = tftp_SUITE_data
123
124DATADIRS     = $(TFTP_DATADIRS)
125
126EMAKEFILE  = Emakefile
127MAKE_EMAKE = $(wildcard $(ERL_TOP)/make/make_emakefile)
128
129ifeq ($(MAKE_EMAKE),)
130BUILDTARGET   = $(TARGET_FILES)
131RELTEST_FILES = $(COVER_FILE) $(TFTP_SPECS) $(SOURCE)
132else
133BUILDTARGET   = emakebuild
134RELTEST_FILES = $(EMAKEFILE) $(COVER_FILE) $(TFTP_SPECS) $(SOURCE)
135endif
136
137
138# ----------------------------------------------------
139# Release directory specification
140# ----------------------------------------------------
141
142RELTESTSYSDIR        = "$(RELEASE_PATH)/tftp_test"
143RELTESTSYSALLDATADIR = $(RELTESTSYSDIR)/all_SUITE_data
144RELTESTSYSBINDIR     = $(RELTESTSYSALLDATADIR)/bin
145
146
147# ----------------------------------------------------
148# FLAGS
149# The path to the test_server ebin dir is needed when
150# running the target "targets".
151# ----------------------------------------------------
152ERL_COMPILE_FLAGS += \
153	$(INCLUDES) \
154	$(TFTP_FLAGS)
155
156# ----------------------------------------------------
157# Targets
158# erl -sname kalle -pa ../ebin
159# If you intend to run the test suite locally (private), then
160# there is some requirements:
161# 1) TFTP_PRIV_DIR must be created
162# ----------------------------------------------------
163
164tests debug opt: $(BUILDTARGET)
165
166targets: $(TARGET_FILES)
167
168.PHONY: emakebuild
169
170emakebuild: $(EMAKEFILE)
171
172$(EMAKEFILE):
173	$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) '*_SUITE_make' | grep -v Warning > $(EMAKEFILE)
174	$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES) | grep -v Warning >> $(EMAKEFILE)
175
176clean:
177	rm -f $(EMAKEFILE)
178	rm -f $(TARGET_FILES)
179	rm -f core *~
180
181docs:
182
183
184# ----------------------------------------------------
185# Release Target
186# ----------------------------------------------------
187include $(ERL_TOP)/make/otp_release_targets.mk
188
189release_spec: opt
190	$(INSTALL_DIR)  "$(RELSYSDIR)/test"
191	$(INSTALL_DATA) $(HRL_FILES)   $(ERL_FILES) "$(RELSYSDIR)/test"
192	$(INSTALL_DATA) $(TFTP_FILES) "$(RELSYSDIR)/test"
193	@for d in $(DATADIRS); do \
194            echo "installing data dir $$d"; \
195            if test -f $$d/TAR.exclude; then \
196                echo $$d/TAR.exclude2 > $$d/TAR.exclude2; \
197                cat $$d/TAR.exclude >> $$d/TAR.exclude2; \
198                find $$d -name '*.contrib*'     >> $$d/TAR.exclude2; \
199                find $$d -name '*.keep*'        >> $$d/TAR.exclude2; \
200                find $$d -name '*.mkelem*'      >> $$d/TAR.exclude2; \
201                find $$d -name '*~'             >> $$d/TAR.exclude2; \
202                find $$d -name 'erl_crash.dump' >> $$d/TAR.exclude2; \
203                find $$d -name 'core'           >> $$d/TAR.exclude2; \
204                find $$d -name '.cmake.state'   >> $$d/TAR.exclude2; \
205                tar cfX - $$d/TAR.exclude2 $$d | (cd "$(RELSYSDIR)/test"; tar xf -); \
206            else \
207                tar cf - $$d | (cd "$(RELSYSDIR)/test"; tar xf -); \
208            fi; \
209        done
210
211release_tests_spec: opt
212	$(INSTALL_DIR) $(RELTESTSYSDIR)
213	$(INSTALL_DATA) $(RELTEST_FILES) $(RELTESTSYSDIR)
214	chmod -R u+w $(RELTESTSYSDIR)
215	tar chf - $(DATADIRS) | (cd $(RELTESTSYSDIR); tar xf -)
216	$(INSTALL_DIR) $(RELTESTSYSALLDATADIR)
217	$(INSTALL_DIR) $(RELTESTSYSBINDIR)
218	chmod -R +x $(RELTESTSYSBINDIR)
219	$(INSTALL_DIR) $(RELTESTSYSALLDATADIR)/win32/lib
220
221release_docs_spec:
222
223info:
224	@echo "MAKE_EMAKE        = $(MAKE_EMAKE)"
225	@echo "EMAKEFILE         = $(EMAKEFILE)"
226	@echo "BUILDTARGET       = $(BUILDTARGET)"
227	@echo ""
228	@echo "MODULES           = $(MODULES)"
229	@echo "ERL_FILES         = $(ERL_FILES)"
230	@echo "SOURCE            = $(SOURCE)"
231	@echo "TARGET_FILES      = $(TARGET_FILES)"
232	@echo ""
233	@echo "TFTP_SPECS       = $(TFTP_SPECS)"
234	@echo "TFTP_FILES       = $(TFTP_FILES)"
235	@echo ""
236	@echo "RELEASE_PATH      = "$(RELEASE_PATH)""
237	@echo "RELSYSDIR         = "$(RELSYSDIR)""
238	@echo "RELTESTSYSDIR     = $(RELTESTSYSDIR)"
239	@echo "RELTESTSYSALLDATADIR = $(RELTESTSYSALLDATADIR)"
240	@echo "RELTESTSYSBINDIR     = $(RELTESTSYSBINDIR)"
241	@echo ""
242	@echo "DATADIRS          = $(DATADIRS)"
243	@echo "REL_DATADIRS      = $(REL_DATADIRS)"
244	@echo ""
245	@echo "TFTP_DATA_DIR    = $(TFTP_DATA_DIR)"
246	@echo "TFTP_PRIV_DIR    = $(TFTP_PRIV_DIR)"
247	@echo "TFTP_ROOT        = $(TFTP_ROOT)"
248	@echo "TFTP_FLAGS       = $(TFTP_FLAGS)"
249
250
251