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 = $(FTP_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/ftp/src
45
46CP = cp
47
48ifeq ($(TESTROOT_DIR),)
49TESTROOT_DIR = /ldisk/tests/$(USER)/ftp
50endif
51
52ifeq ($(FTP_DATA_DIR),)
53FTP_DATA_DIR = $(TESTROOT_DIR)/data_dir
54endif
55
56ifeq ($(FTP_PRIV_DIR),)
57FTP_PRIV_DIR = $(TESTROOT_DIR)/priv_dir
58endif
59
60FTP_FLAGS = -Dftp__data_dir='"$(FTP_DATA_DIR)"'       \
61              -Dftp_priv_dir='"$(FTP_PRIV_DIR)"'
62
63
64###
65### test suite debug flags
66###
67ifeq ($(FTP_DEBUG_CLIENT),)
68  FTP_DEBUG_CLIENT = y
69endif
70
71ifeq ($(FTP_DEBUG_CLIENT),)
72  FTP_FLAGS += -Dftp_debug_client
73endif
74
75ifeq ($(FTP_TRACE_CLIENT),)
76  FTP_DEBUG_CLIENT = y
77endif
78
79ifeq ($(FTP_TRACE_CLIENT),y)
80  FTP_FLAGS += -Dftp_trace_client
81endif
82
83ifneq ($(FTP_DEBUG),)
84  FTP_DEBUG = s
85endif
86
87ifeq ($(FTP_DEBUG),l)
88  FTP_FLAGS += -Dftp_log
89endif
90
91ifeq ($(FTP_DEBUG),d)
92  FTP_FLAGS += -Dftp_debug -Dftp_log
93endif
94
95
96FTP_FLAGS += -pa ../ftp/ebin
97
98FTP_ROOT = ../ftp
99
100MODULES =                 		\
101	erl_make_certs                  \
102	ftp_SUITE 	  		\
103	ftp_format_SUITE                \
104	ftp_test_lib
105
106
107EBIN = .
108
109HRL_FILES = \
110	ftp_internal.hrl
111
112ERL_FILES = $(MODULES:%=%.erl)
113
114SOURCE = $(ERL_FILES) $(HRL_FILES)
115
116TARGET_FILES = $(MODULES:%=$(EBIN)/%.$(EMULATOR))
117
118FTP_SPECS = ftp.spec ftp_bench.spec
119COVER_FILE = ftp.cover
120FTP_FILES = ftp.config $(FTP_SPECS)
121
122
123FTP_DATADIRS   = ftp_SUITE_data
124
125DATADIRS     = $(FTP_DATADIRS)
126
127EMAKEFILE  = Emakefile
128MAKE_EMAKE = $(wildcard $(ERL_TOP)/make/make_emakefile)
129
130ifeq ($(MAKE_EMAKE),)
131BUILDTARGET   = $(TARGET_FILES)
132RELTEST_FILES = $(COVER_FILE) $(FTP_SPECS) $(SOURCE)
133else
134BUILDTARGET   = emakebuild
135RELTEST_FILES = $(EMAKEFILE) $(COVER_FILE) $(FTP_SPECS) $(SOURCE)
136endif
137
138
139# ----------------------------------------------------
140# Release directory specification
141# ----------------------------------------------------
142
143RELTESTSYSDIR        = "$(RELEASE_PATH)/ftp_test"
144RELTESTSYSALLDATADIR = $(RELTESTSYSDIR)/all_SUITE_data
145RELTESTSYSBINDIR     = $(RELTESTSYSALLDATADIR)/bin
146
147
148# ----------------------------------------------------
149# FLAGS
150# The path to the test_server ebin dir is needed when
151# running the target "targets".
152# ----------------------------------------------------
153ERL_COMPILE_FLAGS += \
154	$(INCLUDES) \
155	$(FTP_FLAGS)
156
157# ----------------------------------------------------
158# Targets
159# erl -sname kalle -pa ../ebin
160# If you intend to run the test suite locally (private), then
161# there is some requirements:
162# 1) FTP_PRIV_DIR must be created
163# ----------------------------------------------------
164
165tests debug opt: $(BUILDTARGET)
166
167targets: $(TARGET_FILES)
168
169.PHONY: emakebuild
170
171emakebuild: $(EMAKEFILE)
172
173$(EMAKEFILE):
174	$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) '*_SUITE_make' | grep -v Warning > $(EMAKEFILE)
175	$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES) | grep -v Warning >> $(EMAKEFILE)
176
177clean:
178	rm -f $(EMAKEFILE)
179	rm -f $(TARGET_FILES)
180	rm -f core *~
181
182docs:
183
184
185# ----------------------------------------------------
186# Release Target
187# ----------------------------------------------------
188include $(ERL_TOP)/make/otp_release_targets.mk
189
190release_spec: opt
191	$(INSTALL_DIR)  "$(RELSYSDIR)/test"
192	$(INSTALL_DATA) $(HRL_FILES)   $(ERL_FILES) "$(RELSYSDIR)/test"
193	$(INSTALL_DATA) $(FTP_FILES) "$(RELSYSDIR)/test"
194	@for d in $(DATADIRS); do \
195            echo "installing data dir $$d"; \
196            if test -f $$d/TAR.exclude; then \
197                echo $$d/TAR.exclude2 > $$d/TAR.exclude2; \
198                cat $$d/TAR.exclude >> $$d/TAR.exclude2; \
199                find $$d -name '*.contrib*'     >> $$d/TAR.exclude2; \
200                find $$d -name '*.keep*'        >> $$d/TAR.exclude2; \
201                find $$d -name '*.mkelem*'      >> $$d/TAR.exclude2; \
202                find $$d -name '*~'             >> $$d/TAR.exclude2; \
203                find $$d -name 'erl_crash.dump' >> $$d/TAR.exclude2; \
204                find $$d -name 'core'           >> $$d/TAR.exclude2; \
205                find $$d -name '.cmake.state'   >> $$d/TAR.exclude2; \
206                tar cfX - $$d/TAR.exclude2 $$d | (cd "$(RELSYSDIR)/test"; tar xf -); \
207            else \
208                tar cf - $$d | (cd "$(RELSYSDIR)/test"; tar xf -); \
209            fi; \
210        done
211
212release_tests_spec: opt
213	$(INSTALL_DIR) $(RELTESTSYSDIR)
214	$(INSTALL_DATA) $(RELTEST_FILES) $(RELTESTSYSDIR)
215	chmod -R u+w $(RELTESTSYSDIR)
216	tar chf - $(DATADIRS) | (cd $(RELTESTSYSDIR); tar xf -)
217	$(INSTALL_DIR) $(RELTESTSYSALLDATADIR)
218	$(INSTALL_DIR) $(RELTESTSYSBINDIR)
219	chmod -R +x $(RELTESTSYSBINDIR)
220	$(INSTALL_DIR) $(RELTESTSYSALLDATADIR)/win32/lib
221
222release_docs_spec:
223
224info:
225	@echo "MAKE_EMAKE        = $(MAKE_EMAKE)"
226	@echo "EMAKEFILE         = $(EMAKEFILE)"
227	@echo "BUILDTARGET       = $(BUILDTARGET)"
228	@echo ""
229	@echo "MODULES           = $(MODULES)"
230	@echo "ERL_FILES         = $(ERL_FILES)"
231	@echo "SOURCE            = $(SOURCE)"
232	@echo "TARGET_FILES      = $(TARGET_FILES)"
233	@echo ""
234	@echo "FTP_SPECS       = $(FTP_SPECS)"
235	@echo "FTP_FILES       = $(FTP_FILES)"
236	@echo ""
237	@echo "RELEASE_PATH      = "$(RELEASE_PATH)""
238	@echo "RELSYSDIR         = "$(RELSYSDIR)""
239	@echo "RELTESTSYSDIR     = $(RELTESTSYSDIR)"
240	@echo "RELTESTSYSALLDATADIR = $(RELTESTSYSALLDATADIR)"
241	@echo "RELTESTSYSBINDIR     = $(RELTESTSYSBINDIR)"
242	@echo ""
243	@echo "DATADIRS          = $(DATADIRS)"
244	@echo "REL_DATADIRS      = $(REL_DATADIRS)"
245	@echo ""
246	@echo "FTP_DATA_DIR    = $(FTP_DATA_DIR)"
247	@echo "FTP_PRIV_DIR    = $(FTP_PRIV_DIR)"
248	@echo "FTP_ROOT        = $(FTP_ROOT)"
249	@echo "FTP_FLAGS         = $(FTP_FLAGS)"
250
251
252