#-*-makefile-*- ; force emacs to enter makefile-mode
# %CopyrightBegin%
#
# Copyright Ericsson AB 1997-2014. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# %CopyrightEnd%
include $(ERL_TOP)/make/target.mk
include $(ERL_TOP)/make/$(TARGET)/otp.mk
# ----------------------------------------------------
# Application version
# ----------------------------------------------------
include ../vsn.mk
VSN = $(SNMP_VSN)
# ----------------------------------------------------
# Target Specs
# ----------------------------------------------------
include modules.mk
SNMP_ROOT = ..
SNMP_SUITE = snmp_SUITE
ERL_FILES = $(MODULES:%=%.erl)
SNMP_TEST_DATA = snmp_test_data
SNMP_MIB_DIR = $(SNMP_TEST_DATA)
SNMP_BIN_TARGET_DIR = $(SNMP_TEST_DATA)
MIB_SOURCE = $(MIB_FILES:%.mib=$(SNMP_MIB_DIR)/%.mib)
MIB_TARGETS = \
$(MIB_FILES:%.mib=$(SNMP_BIN_TARGET_DIR)/%.bin) \
$(MIB_FILES:%.mib=$(SNMP_BIN_TARGET_DIR)/%.hrl)
ERL_TARGETS = $(MODULES:%=$(EBIN)/%.$(EMULATOR))
TEST_SERVER_TARGETS = $(TEST_SERVER_MODULES:%=$(EBIN)/%.$(EMULATOR))
TARGET_FILES = $(ERL_TARGETS)
SOURCE = $(ERL_FILES) $(HRL_FILES)
# The script 'make_emakefile' only exist in R9 and later
# So, if it does not exist, then use the old method
# (compile the erl-files and install the beam-files)
EMAKEFILE = Emakefile
MAKE_EMAKE = $(wildcard $(ERL_TOP)/make/make_emakefile)
ifeq ($(MAKE_EMAKE),)
BUILDTARGET = $(TARGET_FILES)
RELTEST_FILES = $(SPECS) $(SOURCE) $(TARGET_FILES)
else
BUILDTARGET = $(MIB_TARGETS) emakebuild
RELTEST_FILES = $(EMAKEFILE) $(SPECS) $(SOURCE)
endif
COVER_SPEC_FILE = snmp.cover
# ----------------------------------------------------
# Release directory specification
# ----------------------------------------------------
RELSYSDIR = $(RELEASE_PATH)/snmp_test
# ----------------------------------------------------
# SNMP FLAGS
# ----------------------------------------------------
ifeq ($(SNMP_DEBUG),)
# SNMP_DEBUG = d
endif
ifeq ($(SNMP_DEBUG),e)
SNMP_FLAGS += -Dsnmp_error
endif
ifeq ($(SNMP_DEBUG),l)
SNMP_FLAGS += -Dsnmp_error -Dsnmp_log
endif
ifeq ($(SNMP_DEBUG),d)
SNMP_FLAGS += -Dsnmp_error -Dsnmp_log -Dsnmp_debug
endif
ifeq ($(DONT_USE_TS),true)
SNMP_FLAGS += -DDONT_USE_TEST_SERVER
endif
SNMP_MIB_FLAGS += -pa ../ebin +version
ifneq ($(MIBS_VERBOSITY),)
SNMP_MIB_FLAGS += +'{verbosity,$(MIBS_VERBOSITY)}'
endif
ifeq ($(SNMP_DESC),true)
USE_DESCRIPTION = +'{description,true}'
endif
GROUP_CHECK = +'{group_check,false}'
SNMP_MIB_FLAGS += $(GROUP_CHECK) $(USE_DESCRIPTION) -I$(SNMP_BIN_TARGET_DIR)
ifndef SUITE
SUITE = snmp_SUITE
endif
ESTOP = -s init stop
ifeq ($(DONT_STOP),true)
MAYBE_ESTOP =
else
MAYBE_ESTOP = $(ESTOP)
endif
ifeq ($(MERL),)
MERL = erl
endif
ARGS += -noshell
ifeq ($(DISABLE_TC_TIMEOUT),true)
ARGS += -snmp_test_timeout
endif
# ----------------------------------------------------
# FLAGS
# ----------------------------------------------------
EBIN = .
ERL_COMPILE_FLAGS += -I../../snmp/src/app \
-I../../snmp/src/misc \
-I../../snmp/src/agent \
-I../../snmp/src/manager \
-I../../snmp/include \
-Dsnmp_test_data=snmp_test_data \
-Dversion=\"$(VSN)$(PRE_VSN)\" \
+'{parse_transform,sys_pre_attributes}' \
+'{attribute,insert,app_vsn,$(APP_VSN)}' \
$(SNMP_FLAGS)
ERL_SNMP_FLAGS = $(SNMP_MIB_FLAGS) \
-I../priv/mibs
$(SNMP_BIN_TARGET_DIR)/%.bin: $(SNMP_MIB_DIR)/%.mib
$(ERLC) $(ERL_SNMP_FLAGS) -o $(SNMP_MIB_DIR) $<
$(SNMP_BIN_TARGET_DIR)/%.hrl: $(SNMP_BIN_TARGET_DIR)/%.bin
$(ERLC) $(ERL_SNMP_FLAGS) -o $(SNMP_BIN_TARGET_DIR) $<
# ----------------------------------------------------
# Targets
# ----------------------------------------------------
tests debug opt: $(BUILDTARGET)
.PHONY: emakebuild
emakebuild: $(EMAKEFILE)
targets: mib $(EMAKEFILE)
erl -make
old_targets: $(TARGET_FILES) $(TEST_SERVER_TARGETS)
$(EMAKEFILE): Makefile
$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) '*_SUITE_make' > $(EMAKEFILE)
$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES) >> $(EMAKEFILE)
clean:
rm -f $(EMAKEFILE)
rm -f $(TARGET_FILES)
rm -f core
docs:
appup: snmp_appup_mgr.$(EMULATOR)
mib: $(MIB_TARGETS)
make: old_targets
test: make
$(MERL) $(ARGS) -sname snmp_test $(ERL_PATH) \
-s snmp_test_server run $(SUITE) \
$(MAYBE_ESTOP)
agent: make
$(MERL) $(ARGS) -sname snmp_agent_test $(ERL_PATH) \
-s snmp_test_server run snmp_agent_test \
$(MAYBE_ESTOP)
manager: make
$(MERL) $(ARGS) -sname snmp_manager_test $(ERL_PATH) \
-s snmp_test_server run snmp_manager_test \
$(MAYBE_ESTOP)
appup: make
$(MERL) $(ARGS) -sname snmp_appup_test $(ERL_PATH) \
-s snmp_test_server run snmp_appup_test \
$(MAYBE_ESTOP)
$(SNMP_BIN_TARGET_DIR)/Klas4.bin: $(SNMP_BIN_TARGET_DIR)/Klas3.bin
$(SNMP_BIN_TARGET_DIR)/SA-MIB.bin: $(SNMP_BIN_TARGET_DIR)/OLD-SNMPEA-MIB.bin
$(SNMP_BIN_TARGET_DIR)/Test3.bin: $(SNMP_BIN_TARGET_DIR)/Test2.bin
# ----------------------------------------------------
# Release Target
# ----------------------------------------------------
include $(ERL_TOP)/make/otp_release_targets.mk
release_spec:
release_tests_spec: opt
$(INSTALL_DIR) "$(RELSYSDIR)"
$(INSTALL_DATA) $(RELTEST_FILES) $(COVER_SPEC_FILE) "$(RELSYSDIR)"
chmod -R u+w "$(RELSYSDIR)"
tar cf - snmp_test_data | (cd "$(RELSYSDIR)"; tar xf -)
tar cf - *_SUITE_data | (cd "$(RELSYSDIR)"; tar xf -)
release_docs_spec:
info:
@echo "SNMP_DEBUG = $(SNMP_DEBUG)"
@echo "SNMP_FLAGS = $(SNMP_FLAGS)"
@echo ""
@echo "SNMP_MIB_DIR = $(SNMP_MIB_DIR)"
@echo "MIB_SOURCE = $(MIB_SOURCE)"
@echo "MIB_TARGETS = $(MIB_TARGETS)"
@echo "SNMP_MIB_FLAGS = $(SNMP_MIB_FLAGS)"
@echo ""
@echo "ERL_COMPILE_FLAGS = $(ERL_COMPILE_FLAGS)"
@echo ""
@echo "RELSYSDIR = "$(RELSYSDIR)""
@echo ""
@echo "SOURCE = $(SOURCE)"
@echo ""
@echo "TARGET_FILES = $(TARGET_FILES)"
@echo ""
@echo "EMAKEFILE = $(EMAKEFILE)"
@echo "MAKE_EMAKE = $(MAKE_EMAKE)"
@echo "BUILDTARGET = $(BUILDTARGET)"
@echo "RELTEST_FILES = $(RELTEST_FILES)"
@echo ""