Skip to content
98c2bb1 Mar 22, 2016
@nniclausse @cicku
384 lines (294 sloc) 12 KB
#### CONFIGURE VARIABLE
# export ERLC_EMULATOR to fix a bug in R9B with native compilation
ERLC_EMULATOR=@ERL@
export ERLC_EMULATOR
ERL=@ERL@
ERLC=@ERLC@
SED=@SED@
ERL_OPTS=@ERL_OPTS@
# FIXME
DIALYZER=@DIALYZER@
ERLDIR=@ERLANG_ROOT_DIR@
export ERLDIR
USENEWTIMEAPI=@erlang_cv_new_time_api@
ERLANG_XMERL_DIR=@ERLANG_LIB_DIR_xmerl@/include
raw_erlang_prefix=@libdir@/erlang/
PACKAGE_TARNAME=@PACKAGE_TARNAME@
prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
libdir=@libdir@
datadir=@datadir@
datarootdir=@datarootdir@
docdir=@docdir@
TEMPLATES_SUBDIR=@TEMPLATES_SUBDIR@
CONFIGURE_DEPENDENCIES=@CONFIGURE_DEPENDENCIES@
CONFIG_STATUS_DEPENDENCIES=@CONFIG_STATUS_DEPENDENCIES@
VERSION=@PACKAGE_VERSION@
PACKAGE=@PACKAGE_NAME@
DTD=@DTD@
#### END OF SUBSTITUTION
SVN_REVISION=$Revision$
ERL_COMPILER_OPTIONS="[warn_unused_vars]"
export ERL_COMPILER_OPTIONS
ifeq ($(TYPE),debug)
OPT =+debug_info -DDEBUG
else
ifeq ($(TYPE),native)
OPT:=+native
else
OPT = +strict_record_tests
endif
endif
EBIN = ./ebin
EBIN_TEST = ./ebin-test
ifeq ($(TYPE),test)
OPT =+export_all +debug_info
EBIN = $(EBIN_TEST)
endif
ifeq ($(USENEWTIMEAPI),yes)
OPT += -Dnew_time_api
endif
INC = ./include
CC = $(ERLC)
ESRC = ./src
ifeq ($(TYPE),snapshot)
DAY=$(shell date +"%Y%m%d")
distdir = $(PACKAGE)-$(VERSION)-$(DAY)
else
distdir = $(PACKAGE)-$(VERSION)
endif
# installation path
BINDIR = $(bindir)
LIBDIR = $(libdir)/tsung/
TOOLS_BINDIR = $(LIBDIR)/bin
CONFDIR = $(docdir)/examples
SHARE_DIR = $(datadir)/tsung/
TEMPLATES_DIR = $(datadir)/$(TEMPLATES_SUBDIR)
MAN_DIR = $(datadir)/man/man1/
DOC_DIR = $(docdir)
# custom behaviours
BEHAVIORS = $(EBIN)/ts_plugin.beam $(EBIN)/gen_ts_transport.beam
ERLANG_LIB_DIR = $(libdir)/erlang/lib
APPLICATION = tsung
CONTROLLER_APPLICATION = tsung_controller
RECORDER_APPLICATION = tsung_recorder
RECORDER_TARGETDIR = $(LIBDIR)/$(RECORDER_APPLICATION)-$(VERSION)
CONTROLLER_TARGETDIR = $(LIBDIR)/$(CONTROLLER_APPLICATION)-$(VERSION)
TARGETDIR = $(LIBDIR)/$(APPLICATION)-$(VERSION)
TEMPLATES = $(wildcard $(ESRC)/templates/*.thtml)
TEMPLATES_STYLE = $(wildcard $(ESRC)/templates/style/*.js)
TEMPLATES_STYLE += $(wildcard $(ESRC)/templates/style/*.css)
TMP = $(wildcard *~) $(wildcard src/*~) $(wildcard inc/*~)
INC_FILES = $(wildcard $(INC)/*.hrl)
LIBSRC = $(wildcard $(ESRC)/lib/*.erl)
TESTSRC = $(wildcard $(ESRC)/test/*.erl)
SRC = $(wildcard $(ESRC)/$(APPLICATION)/*.erl)
CONTROLLER_SRC = $(wildcard $(ESRC)/$(CONTROLLER_APPLICATION)/*.erl)
RECORDER_SRC = $(wildcard $(ESRC)/$(RECORDER_APPLICATION)/*.erl)
CONFFILE_SRC = $(wildcard examples/*.xml.in)
CONFFILE = $(basename $(CONFFILE_SRC))
TEST_CONFFILE_SRC = $(wildcard src/test/*.xml.in)
TEST_CONFFILE = $(basename $(TEST_CONFFILE_SRC))
USERMANUAL = docs/_build/latex/Tsung.pdf
USERMANUAL_IMG = $(wildcard docs/images/*.png)
USERMANUAL_SRC = $(wildcard docs/*.rst docs/*.txt)
MANPAGES = $(wildcard man/*.1)
PERL_SCRIPTS_SRC = $(wildcard $(ESRC)/*.pl.in)
PERL_SCRIPTS = $(basename $(PERL_SCRIPTS_SRC))
TSPLOT_SRC = $(wildcard $(ESRC)/tsung-plotter/*.py.in)
TSPLOT = $(basename $(TSPLOT_SRC))
TSUNG_PLOTTER_LIB= $(wildcard $(ESRC)/tsung-plotter/tsung/*.py)
TSUNG_PLOTTER_CONF= $(wildcard $(ESRC)/tsung-plotter/tsung/*.conf) $(wildcard $(ESRC)/tsung-plotter/*.conf)
TARGET = $(addsuffix .beam, $(basename \
$(addprefix $(EBIN)/, $(notdir $(SRC)))))
LIB_TARGET = $(addsuffix .beam, $(basename \
$(addprefix $(EBIN)/, $(notdir $(LIBSRC)))))
CONTROLLER_TARGET = $(addsuffix .beam, $(basename \
$(addprefix $(EBIN)/, $(notdir $(CONTROLLER_SRC)))))
RECORDER_TARGET = $(addsuffix .beam, $(basename \
$(addprefix $(EBIN)/, $(notdir $(RECORDER_SRC)))))
TEST_TARGET = $(addsuffix .beam, $(basename \
$(addprefix $(EBIN)/, $(notdir $(TESTSRC)))))
DEBIAN = debian/changelog debian/control debian/compat debian/copyright debian/docs debian/tsung.dirs debian/rules
APPFILES = $(EBIN)/$(APPLICATION).app
APPFILES_IN = $(ESRC)/$(APPLICATION)/$(APPLICATION).app.in
CONTROLLER_APPFILES = $(EBIN)/$(CONTROLLER_APPLICATION).app
CONTROLLER_APPFILES_IN = $(ESRC)/$(CONTROLLER_APPLICATION)/$(CONTROLLER_APPLICATION).app.in
RECORDER_APPFILES = $(EBIN)/$(RECORDER_APPLICATION).app
RECORDER_APPFILES_IN = $(ESRC)/$(RECORDER_APPLICATION)/$(RECORDER_APPLICATION).app.in
SCRIPT = $(BINDIR)/tsung
REC_SCRIPT = $(BINDIR)/tsung-recorder
PWD = $(shell pwd)
DIST_COMMON=Makefile.in $(CONFFILE_SRC) $(PERL_SCRIPTS_SRC) $(TSPLOT_SRC) tsung.sh.in tsung-recorder.sh.in tsung.spec.in $(CONTROLLER_APPFILES_IN)
DOC_OPTS={def,{version,\"$(VERSION)\"}}
.PHONY: doc
tsung: Makefile config.status $(PERL_SCRIPTS) $(TSPLOT) tsung.sh tsung-recorder.sh tsung.spec $(TARGET) $(RECORDER_TARGET) $(CONTROLLER_TARGET) $(LIB_TARGET) $(CONTROLLER_APPFILES) $(APPFILES) $(RECORDER_APPFILES)
buildtest: $(TEST_TARGET)
fulltest: clean test
test:
@mkdir -p $(EBIN_TEST)
$(MAKE) TYPE=test dotest
dotest: tsung buildtest $(CONFFILE) $(TEST_CONFFILE)
$(ERL) -noshell -pa $(EBIN_TEST) -s ts_test_all run -s init stop
edoc:
$(ERL) -noshell -eval "edoc:application($(APPLICATION), \"./$(ESRC)/$(APPLICATION)\", [$(DOC_OPTS)])" -s init stop
$(ERL) -noshell -eval "edoc:application($(CONTROLLER_APPLICATION), \
\"./$(ESRC)/$(CONTROLLER_APPLICATION)\", [$(DOC_OPTS)])" -s init stop
$(ERL) -noshell -eval "edoc:application($(RECORDER_APPLICATION), \
\"./$(ESRC)/$(RECORDER_APPLICATION)\", [$(DOC_OPTS)])" -s init stop
# TODO: remove -Wno_behaviours, but only if R15B became a requirement.
# see http://erlang.org/pipermail/erlang-questions/2012-January/063608.html
dialyzer:
$(DIALYZER) -r ebin -I ./include/ -Wno_undefined_callbacks
all: clean tsung
debug:
$(MAKE) TYPE=debug
native:
$(MAKE) TYPE=native
rpm: release tsung.spec
rpmbuild -ta $(distdir).tar.gz
validate: $(CONFFILE)
@for i in $(CONFFILE); do xmlproc_val $$i; done
deb:
fakeroot debian/rules clean
debian/rules build
fakeroot debian/rules binary
show:
@echo $(LIBSRC)
clean:
-rm -fr $(EBIN_TEST)
-rm -f $(TARGET) $(TMP)
-rm -f $(RECORDER_APPFILES) $(CONTROLLER_APPFILES) $(APPFILES)
-rm -f $(EBIN)/*.app $(PERL_SCRIPTS) $(TSPLOT) $(CONFFILE)
-rm -f $(EBIN)/*.beam tsung.sh tsung.spec tsung.xml tsung.sh tsung-recorder.sh
-rm -f *.xml config.log src/test/*.xml src/test/usersdb.csv
install: tsung doc install_recorder install_controller $(CONFFILE)
-rm -f $(TMP)
install -d $(DESTDIR)$(TARGETDIR)/priv
install -d $(DESTDIR)$(TARGETDIR)/ebin
install -d $(DESTDIR)$(TARGETDIR)/src
install -d $(DESTDIR)$(TARGETDIR)/include
install -d $(DESTDIR)$(TOOLS_BINDIR)/
install -d $(DESTDIR)$(BINDIR)/
install -pm 0644 $(INC_FILES) $(DESTDIR)$(TARGETDIR)/include/
install -pm 0644 $(TARGET) $(DESTDIR)$(TARGETDIR)/ebin/
install -pm 0644 $(LIB_TARGET) $(DESTDIR)$(TARGETDIR)/ebin/
install -pm 0644 $(APPFILES) $(DESTDIR)$(TARGETDIR)/ebin/
install -pm 0644 $(SRC) $(DESTDIR)$(TARGETDIR)/src/
# install the man page
install -d $(DESTDIR)$(MAN_DIR)
install -pm 0644 $(MANPAGES) $(DESTDIR)$(MAN_DIR)
# create startup script
install -pm 0755 tsung.sh $(DESTDIR)$(SCRIPT)
install -pm 0755 tsung-recorder.sh $(DESTDIR)$(REC_SCRIPT)
install -pm 0755 $(PERL_SCRIPTS) $(DESTDIR)$(TOOLS_BINDIR)
# tsung-plotter
install -pm 0755 $(TSPLOT) $(DESTDIR)$(BINDIR)/tsplot
install -d $(DESTDIR)$(LIBDIR)/tsung_plotter
install -d $(DESTDIR)$(SHARE_DIR)/tsung_plotter
install -pm 0644 $(TSUNG_PLOTTER_LIB) $(DESTDIR)$(LIBDIR)/tsung_plotter
install -pm 0644 $(TSUNG_PLOTTER_CONF) $(DESTDIR)$(SHARE_DIR)/tsung_plotter
install -d $(DESTDIR)$(CONFDIR)
install -pm 0644 $(CONFFILE) $(DESTDIR)$(CONFDIR)/
install -d $(DESTDIR)$(TEMPLATES_DIR)
install -d $(DESTDIR)$(TEMPLATES_DIR)/style
install -pm 0644 $(TEMPLATES) $(DESTDIR)$(TEMPLATES_DIR)/
install -pm 0644 $(TEMPLATES_STYLE) $(DESTDIR)$(TEMPLATES_DIR)/style
install -pm 0644 $(DTD) $(DESTDIR)$(SHARE_DIR)/
install_recorder:
install -d $(DESTDIR)$(RECORDER_TARGETDIR)/priv
install -d $(DESTDIR)$(RECORDER_TARGETDIR)/ebin
install -d $(DESTDIR)$(RECORDER_TARGETDIR)/src
install -d $(DESTDIR)$(RECORDER_TARGETDIR)/include
install -pm 0644 $(INC_FILES) $(DESTDIR)$(RECORDER_TARGETDIR)/include
install -pm 0644 $(RECORDER_TARGET) $(DESTDIR)$(RECORDER_TARGETDIR)/ebin
install -pm 0644 $(RECORDER_APPFILES) $(DESTDIR)$(RECORDER_TARGETDIR)/ebin
install -pm 0644 $(RECORDER_SRC) $(DESTDIR)$(RECORDER_TARGETDIR)/src
install_controller:
install -d $(DESTDIR)$(CONTROLLER_TARGETDIR)/priv
install -d $(DESTDIR)$(CONTROLLER_TARGETDIR)/ebin
install -d $(DESTDIR)$(CONTROLLER_TARGETDIR)/src
install -d $(DESTDIR)$(CONTROLLER_TARGETDIR)/include
install -pm 0644 $(INC_FILES) $(DESTDIR)$(CONTROLLER_TARGETDIR)/include
install -pm 0644 $(CONTROLLER_TARGET) $(DESTDIR)$(CONTROLLER_TARGETDIR)/ebin
install -pm 0644 $(CONTROLLER_APPFILES) $(DESTDIR)$(CONTROLLER_TARGETDIR)/ebin
install -pm 0644 $(CONTROLLER_SRC) $(DESTDIR)$(CONTROLLER_TARGETDIR)/src
uninstall:
rm -rf $(TARGETDIR) $(SCRIPT)
Makefile: Makefile.in config.status
@$(SHELL) ./config.status --file=$@
%.pl: %.pl.in vsn.mk
@$(SHELL) ./config.status --file=$@
%.py: %.py.in vsn.mk
@$(SHELL) ./config.status --file=$@
%.spec: %.spec.in vsn.mk
@$(SHELL) ./config.status --file=$@
%.xml: %.xml.in
@$(SHELL) ./config.status --file=$@
%.sh :%.sh.in vsn.mk
@$(SHELL) ./config.status --file=$@
$(APPFILES): $(APPFILES_IN)
@$(SHELL) ./config.status --file=$@:$<
$(CONTROLLER_APPFILES): $(CONTROLLER_APPFILES_IN)
@$(SHELL) ./config.status --file=$@:$<
$(RECORDER_APPFILES): $(RECORDER_APPFILES_IN)
@$(SHELL) ./config.status --file=$@:$<
config.status: configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
configure: configure.ac $(CONFIGURE_DEPENDENCIES)
@echo "running autoconf"
@autoconf
doc:
$(MAKE) -C man man
user_guide:
$(MAKE) -C docs latexpdf
release: Makefile tsung.spec doc user_guide
rm -fr $(distdir)
mkdir -p $(distdir)
tar zcf tmp.tgz $(SRC) $(APPFILES_IN) $(INC_FILES) $(LIBSRC) \
$(CONTROLLER_SRC) $(CONTROLLER_APPFILES_IN) $(TESTSRC) \
$(RECORDER_APPFILES_IN) \
$(RECORDER_SRC) $(TEMPLATES) $(TEMPLATES_STYLE)\
man/*.erl man/*.txt man/*.dia man/*.png man/Makefile man/*.sgml man/*.1 \
docs/*.rst docs/Makefile docs/*.txt docs/README docs/*.py docs/_static docs/_templates \
$(USERMANUAL) $(USERMANUAL_SRC) $(USERMANUAL_IMG) $(DTD) \
COPYING README.md LISEZMOI TODO $(CONFFILE_SRC) $(TEST_CONFFILE_SRC) \
tsung.sh.in vsn.mk src/test/*.csv src/test/*.txt \
src/test/*.out \
$(DEBIAN) $(PERL_SCRIPTS_SRC) CONTRIBUTORS CHANGES \
$(TSPLOT_SRC) $(TSUNG_PLOTTER_CONF) $(TSUNG_PLOTTER_LIB)\
configure configure.ac config.guess *.m4 config.sub Makefile.in \
install-sh tsung.spec.in tsung.spec tsung-recorder.sh.in
tar -C $(distdir) -zxf tmp.tgz
mkdir $(distdir)/ebin
tar zvcf $(distdir).tar.gz $(distdir)
rm -fr $(distdir)
rm -fr tmp.tgz
snapshot:
$(MAKE) TYPE=snapshot release
$(EBIN)/%.beam: src/test/%.erl $(INC_FILES)
@echo "Compiling test $< ... "
@$(CC) -W0 $(OPT) -I $(INC) -I $(ERLANG_XMERL_DIR) -o $(EBIN) $<
$(EBIN)/%.beam: src/lib/%.erl $(INC_FILES)
@echo "Compiling $< ... "
@$(CC) -W0 $(OPT) -I $(INC) -I $(ERLANG_XMERL_DIR) -o $(EBIN) $<
# to avoid circular dependency
$(EBIN)/ts_plugin.beam: src/$(APPLICATION)/ts_plugin.erl $(INC_FILES)
@echo "Compiling $< ... "
@$(CC) $(OPT) -I $(INC) -I $(ERLANG_XMERL_DIR) -pa $(EBIN) -o $(EBIN) $<
# to avoid circular dependency
$(EBIN)/gen_ts_transport.beam: src/$(APPLICATION)/gen_ts_transport.erl $(INC_FILES)
@echo "Compiling $< ... "
@$(CC) $(OPT) -I $(INC) -I $(ERLANG_XMERL_DIR) -pa $(EBIN) -o $(EBIN) $<
$(EBIN)/%.beam: src/$(APPLICATION)/%.erl $(INC_FILES) $(BEHAVIORS)
@echo "Compiling $< ... "
@$(CC) $(OPT) -I $(INC) -I $(ERLANG_XMERL_DIR) -pa $(EBIN) -o $(EBIN) $<
$(EBIN)/%.beam: src/$(RECORDER_APPLICATION)/%.erl $(INC_FILES) $(BEHAVIORS)
@echo "Compiling $< ... "
@$(CC) $(OPT) -I $(INC) -I $(ERLANG_XMERL_DIR) -pa $(EBIN) -o $(EBIN) $<
$(EBIN)/%.beam: src/$(CONTROLLER_APPLICATION)/%.erl $(INC_FILES) $(BEHAVIORS)
@echo "Compiling $< ... "
@$(CC) $(OPT) -I $(INC) -I $(ERLANG_XMERL_DIR) -pa $(EBIN) -o $(EBIN) $<
%:%.sh
# Override makefile default implicit rule
Something went wrong with that request. Please try again.