blob: 64e200584f8ba112d6c3c242f6cc2158a4f5c593 (
plain) (
tree)
|
|
#
# %CopyrightBegin%
#
# Copyright Ericsson AB 2010-2011. All Rights Reserved.
#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# %CopyrightEnd%
ifeq ($(ERL_TOP),)
TOP = $(DIAMETER_TOP)
else
TOP = $(ERL_TOP)
DIAMETER_TOP = $(TOP)/lib/diameter
endif
include $(TOP)/make/target.mk
include $(TOP)/make/$(TARGET)/otp.mk
# ----------------------------------------------------
# Application version
# ----------------------------------------------------
include ../vsn.mk
VSN = $(DIAMETER_VSN)
# ----------------------------------------------------
# Release directory specification
# ----------------------------------------------------
RELSYSDIR = $(RELEASE_PATH)/diameter_test
ifeq ($(findstring win32,$(TARGET)),win32)
MAKEFILE_SRC = Makefile.win32.src
else
MAKEFILE_SRC = Makefile.src
endif
ifeq ($(TT_DIR),)
TT_DIR = /tmp
endif
# ----------------------------------------------------
# Target Specs
# ----------------------------------------------------
include modules.mk
EBIN = .
HRL_FILES = $(INTERNAL_HRL_FILES)
ERL_FILES = $(MODULES:%=%.erl)
SOURCE = $(HRL_FILES) $(ERL_FILES)
TARGET_FILES = $(MODULES:%=%.$(EMULATOR))
SUITE_MODULES = $(filter diameter_%_SUITE, $(MODULES))
SUITES = $(SUITE_MODULES:diameter_%_SUITE=%)
EMAKEFILE = Emakefile
MAKE_EMAKE = $(wildcard $(TOP)/make/make_emakefile)
ifeq ($(MAKE_EMAKE),)
BUILDTARGET = $(TARGET_FILES)
RELTEST_FILES = $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) $(SOURCE)
else
BUILDTARGET = emakebuild
RELTEST_FILES = $(EMAKEFILE) $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) $(SOURCE)
endif
# ----------------------------------------------------
# FLAGS
# ----------------------------------------------------
include ../src/app/diameter.mk
ifeq ($(USE_DIAMETER_TEST_CODE),true)
ERL_COMPILE_FLAGS += -DDIAMETER_TEST_CODE=mona_lisa_spelar_doom
endif
ifeq ($(USE_DIAMETER_HIPE),true)
ERL_COMPILE_FLAGS += +native -DDIAMETER_hipe_special=true
endif
ERL_COMPILE_FLAGS += $(DIAMETER_ERL_COMPILE_FLAGS) \
-DDIAMETER_CT=true \
-I $(DIAMETER_TOP)/src/app
# ----------------------------------------------------
# Targets
# ----------------------------------------------------
all test: $(SUITES)
tests debug opt: $(BUILDTARGET)
beam targets: $(TARGET_FILES)
emakebuild: $(EMAKEFILE)
$(EMAKEFILE):
$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o $(EBIN) '*_SUITE_make' $(MODULES) \
| grep -v Warning \
> $(EMAKEFILE)
clean:
rm -f $(EMAKEFILE)
rm -f $(TARGET_FILES)
rm -f depend.mk
realclean: clean
rm -f errs core *~
.PHONY: all emakebuild test tests debug opt beam targets clean realclean
docs:
info:
@echo "MAKE_EMAKE = $(MAKE_EMAKE)"
@echo "EMAKEFILE = $(EMAKEFILE)"
@echo "BUILDTARGET = $(BUILDTARGET)"
@echo
@echo "ERL_COMPILE_FLAGS = $(ERL_COMPILE_FLAGS)"
@echo "ERL = $(ERL)"
@echo "ERLC = $(ERLC)"
@echo
@echo "HRL_FILES = $(HRL_FILES)"
@echo "ERL_FILES = $(ERL_FILES)"
@echo "TARGET_FILES = $(TARGET_FILES)"
@echo
@echo "SUITE_MODULES = $(SUITE_MODULES)"
@echo "SUITES = $(SUITES)"
@echo
help:
@echo
@echo "This Makefile controls the test of the $(APPLICATION) application."
@echo
@echo "There are two separate ways to perform the test of $(APPLICATION)."
@echo
@echo " a) Run the official OTP test-server (which we do not describe here)"
@echo
@echo " b) Run individual suites using targets in this makefile, target"
@echo " xxx running the testcases contained in $(APPLICATION)_xxx_SUITE."
@echo
@echo "Targets:"
@echo
@echo " all"
@echo " Run all test suites."
@echo
@echo " $(SUITES)"
@echo " Run a specific test suite."
@echo
@echo " beam"
@echo " Compile all test-code."
@echo
@echo " clean"
@echo " Remove generated files."
@echo
@echo " info"
@echo " Prints various environment variables."
@echo " May be useful when debugging this Makefile."
@echo
@echo " help"
@echo " Print this info."
@echo
.PHONY: docs info help
# ----------------------------------------------------
# Special Targets
# ----------------------------------------------------
# Exit with a non-zero status if the output looks to indicate failure.
# diameter_ct:run/1 itself can't tell (it seems).
$(SUITES): log targets
$(ERL) -noshell \
-pa $(DIAMETER_TOP)/ebin \
-sname diameter_test_$@ \
-s diameter_ct run diameter_$@_SUITE \
-s init stop \
| awk '1{rc=0} {print} / FAILED /{rc=1} END{exit rc}'
# Shorter in sed but requires a GNU extension (ie. Q).
log:
mkdir $@
.PHONY: $(SUITES)
# ----------------------------------------------------
# Release Targets
# ----------------------------------------------------
include $(TOP)/make/otp_release_targets.mk
release_spec:
release_docs_spec:
release_tests_spec: tests
$(INSTALL_DIR) $(RELSYSDIR)
$(INSTALL_DATA) $(RELTEST_FILES) $(RELSYSDIR)
.PHONY: release_spec release_docs_spec release_test_specs
# ----------------------------------------------------
depend: depend.mk
# Generate dependencies makefile.
depend.mk: depend.sed $(MODULES:%=%.erl) Makefile
(for f in $(MODULES); do \
sed -f $< $$f.erl | sed "s@/@/$$f@"; \
done) \
> $@
-include depend.mk
.PHONY: depend
|