1#-*-makefile-*-   ; force emacs to enter makefile-mode
2
3# %CopyrightBegin%
4#
5# Copyright Ericsson AB 1997-2020. All Rights Reserved.
6#
7# Licensed under the Apache License, Version 2.0 (the "License");
8# you may not use this file except in compliance with the License.
9# You may obtain a copy of the License at
10#
11#     http://www.apache.org/licenses/LICENSE-2.0
12#
13# Unless required by applicable law or agreed to in writing, software
14# distributed under the License is distributed on an "AS IS" BASIS,
15# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16# See the License for the specific language governing permissions and
17# limitations under the License.
18#
19# %CopyrightEnd%
20
21include $(ERL_TOP)/make/target.mk
22include $(ERL_TOP)/make/$(TARGET)/otp.mk
23
24
25# ----------------------------------------------------
26# Application version
27# ----------------------------------------------------
28include ../vsn.mk
29
30VSN = $(SNMP_VSN)
31
32
33# ----------------------------------------------------
34# Target Specs
35# ----------------------------------------------------
36
37include modules.mk
38
39SNMP_ROOT = ..
40
41ERL_FILES = $(MODULES:%=%.erl)
42
43SNMP_TEST_DATA = snmp_test_data
44
45SNMP_MIB_DIR = $(SNMP_TEST_DATA)
46
47SNMP_BIN_TARGET_DIR = $(SNMP_TEST_DATA)
48
49MIB_SOURCE  = $(MIB_FILES:%.mib=$(SNMP_MIB_DIR)/%.mib)
50
51MIB_TARGETS = \
52	$(MIB_FILES:%.mib=$(SNMP_BIN_TARGET_DIR)/%.bin) \
53	$(MIB_FILES:%.mib=$(SNMP_BIN_TARGET_DIR)/%.hrl)
54ERL_TARGETS = $(MODULES:%=$(EBIN)/%.$(EMULATOR))
55
56TEST_SERVER_TARGETS = $(TEST_SERVER_MODULES:%=$(EBIN)/%.$(EMULATOR))
57
58TARGET_FILES = $(ERL_TARGETS)
59
60SOURCE = $(ERL_FILES) $(HRL_FILES)
61
62# The script 'make_emakefile' only exist in R9 and later
63# So, if it does not exist, then use the old method
64# (compile the erl-files and install the beam-files)
65EMAKEFILE  = Emakefile
66MAKE_EMAKE = $(wildcard $(ERL_TOP)/make/make_emakefile)
67
68ifeq ($(MAKE_EMAKE),)
69BUILDTARGET   = $(TARGET_FILES)
70RELTEST_FILES = $(SPECS) $(SOURCE) $(TARGET_FILES)
71else
72BUILDTARGET   = $(MIB_TARGETS) emakebuild
73RELTEST_FILES = $(EMAKEFILE) $(SPECS) $(SOURCE)
74endif
75
76COVER_SPEC_FILE = snmp.cover
77
78
79# ----------------------------------------------------
80# Release directory specification
81# ----------------------------------------------------
82RELSYSDIR = $(RELEASE_PATH)/snmp_test
83
84
85# ----------------------------------------------------
86# SNMP FLAGS
87# ----------------------------------------------------
88ifeq ($(SNMP_DEBUG),)
89  # SNMP_DEBUG = d
90endif
91
92ifeq ($(SNMP_DEBUG),d)
93  SNMP_FLAGS += -Dsnmp_debug
94endif
95
96ifeq ($(DONT_USE_TS),true)
97  SNMP_FLAGS += -DDONT_USE_TEST_SERVER
98endif
99
100SNMP_MIB_FLAGS += -pa ../ebin +version
101
102ifneq ($(MIBS_VERBOSITY),)
103  SNMP_MIB_FLAGS += +'{verbosity,$(MIBS_VERBOSITY)}'
104endif
105
106ifeq ($(SNMP_DESC),true)
107  USE_DESCRIPTION = +'{description,true}'
108endif
109
110GROUP_CHECK = +'{group_check,false}'
111
112SNMP_MIB_FLAGS += $(GROUP_CHECK) $(USE_DESCRIPTION) -I$(SNMP_BIN_TARGET_DIR)
113
114ESTOP = -s init stop
115
116ifeq ($(DONT_STOP),true)
117MAYBE_ESTOP =
118else
119MAYBE_ESTOP = $(ESTOP)
120endif
121
122ifeq ($(MERL),)
123MERL = erl
124endif
125
126ARGS += -noshell
127
128ifeq ($(DISABLE_TC_TIMEOUT),true)
129ARGS += -snmp_test_timeout
130endif
131
132
133# ----------------------------------------------------
134# FLAGS
135# ----------------------------------------------------
136EBIN = .
137
138ERL_COMPILE_FLAGS += -I../../snmp/src/app \
139                     -I../../snmp/src/misc \
140                     -I../../snmp/src/agent \
141                     -I../../snmp/src/manager \
142                     -I../../snmp/include \
143                     -Dsnmp_test_data=snmp_test_data \
144                     -Dversion=\"$(VSN)$(PRE_VSN)\" \
145                     +'{parse_transform,sys_pre_attributes}' \
146                     +'{attribute,insert,app_vsn,$(APP_VSN)}' \
147                     $(SNMP_FLAGS)
148
149ERL_SNMP_FLAGS = $(SNMP_MIB_FLAGS) \
150                 -I../priv/mibs
151
152$(SNMP_BIN_TARGET_DIR)/%.bin: $(SNMP_MIB_DIR)/%.mib
153	$(ERLC) $(ERL_SNMP_FLAGS) -o $(SNMP_MIB_DIR) $<
154
155$(SNMP_BIN_TARGET_DIR)/%.hrl: $(SNMP_BIN_TARGET_DIR)/%.bin
156	$(ERLC) $(ERL_SNMP_FLAGS) -o $(SNMP_BIN_TARGET_DIR) $<
157
158
159# ----------------------------------------------------
160# Targets
161# ----------------------------------------------------
162
163tests debug opt: $(BUILDTARGET)
164
165.PHONY: emakebuild
166
167emakebuild: $(EMAKEFILE)
168
169targets: mib $(EMAKEFILE)
170	erl -make
171
172old_targets: mib $(TARGET_FILES)
173
174$(EMAKEFILE):  Makefile
175	$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) '*_SUITE_make' > $(EMAKEFILE)
176	$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES) >> $(EMAKEFILE)
177
178clean:
179	rm -f $(EMAKEFILE)
180	rm -f $(TARGET_FILES)
181	rm -f core
182
183docs:
184
185mib: $(MIB_TARGETS)
186
187make: old_targets
188
189test: agent manager
190
191agent: make
192	$(MERL) $(ARGS) -sname snmp_agent_test $(ERL_PATH) \
193            -s snmp_test_server run snmp_agent_SUITE \
194            $(MAYBE_ESTOP)
195
196manager: make
197	$(MERL) $(ARGS) -sname snmp_manager_test $(ERL_PATH) \
198            -s snmp_test_server run snmp_manager_SUITE \
199            $(MAYBE_ESTOP)
200
201
202$(SNMP_BIN_TARGET_DIR)/Klas4.bin: $(SNMP_BIN_TARGET_DIR)/Klas3.bin
203
204$(SNMP_BIN_TARGET_DIR)/SA-MIB.bin: $(SNMP_BIN_TARGET_DIR)/OLD-SNMPEA-MIB.bin
205
206$(SNMP_BIN_TARGET_DIR)/Test3.bin: $(SNMP_BIN_TARGET_DIR)/Test2.bin
207
208
209# ----------------------------------------------------
210# Release Target
211# ----------------------------------------------------
212include $(ERL_TOP)/make/otp_release_targets.mk
213
214release_spec:
215
216release_tests_spec: opt
217	$(INSTALL_DIR) "$(RELSYSDIR)"
218	$(INSTALL_DATA) $(RELTEST_FILES) $(COVER_SPEC_FILE) "$(RELSYSDIR)"
219	chmod -R u+w "$(RELSYSDIR)"
220	tar cf - snmp_test_data | (cd "$(RELSYSDIR)"; tar xf -)
221	tar cf - *_SUITE_data | (cd "$(RELSYSDIR)"; tar xf -)
222
223release_docs_spec:
224
225
226info:
227	@echo "SNMP_DEBUG        = $(SNMP_DEBUG)"
228	@echo "SNMP_FLAGS        = $(SNMP_FLAGS)"
229	@echo ""
230	@echo "SNMP_MIB_DIR      = $(SNMP_MIB_DIR)"
231	@echo "MIB_SOURCE        = $(MIB_SOURCE)"
232	@echo "MIB_TARGETS       = $(MIB_TARGETS)"
233	@echo "SNMP_MIB_FLAGS    = $(SNMP_MIB_FLAGS)"
234	@echo ""
235	@echo "ERL_COMPILE_FLAGS = $(ERL_COMPILE_FLAGS)"
236	@echo ""
237	@echo "RELSYSDIR         = "$(RELSYSDIR)""
238	@echo ""
239	@echo "SOURCE            = $(SOURCE)"
240	@echo ""
241	@echo "TARGET_FILES      = $(TARGET_FILES)"
242	@echo ""
243	@echo "EMAKEFILE         = $(EMAKEFILE)"
244	@echo "MAKE_EMAKE        = $(MAKE_EMAKE)"
245	@echo "BUILDTARGET       = $(BUILDTARGET)"
246	@echo "RELTEST_FILES     = $(RELTEST_FILES)"
247	@echo ""
248
249
250