mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-28 16:34:13 +01:00
258 lines
6.3 KiB
Makefile
258 lines
6.3 KiB
Makefile
|
REBAR = @ESCRIPT@ rebar
|
||
|
INSTALL = @INSTALL@
|
||
|
SED = @SED@
|
||
|
ERL = @ERL@
|
||
|
|
||
|
prefix = @prefix@
|
||
|
exec_prefix = @exec_prefix@
|
||
|
|
||
|
DESTDIR =
|
||
|
|
||
|
# /etc/ejabberd/
|
||
|
ETCDIR = $(DESTDIR)@sysconfdir@/ejabberd
|
||
|
|
||
|
# /sbin/
|
||
|
SBINDIR = $(DESTDIR)@sbindir@
|
||
|
|
||
|
# /lib/ejabberd/
|
||
|
EJABBERDDIR = $(DESTDIR)@libdir@/ejabberd
|
||
|
|
||
|
# /share/doc/ejabberd
|
||
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||
|
datarootdir = @datarootdir@
|
||
|
DOCDIR = $(DESTDIR)@docdir@
|
||
|
|
||
|
# /usr/lib/ejabberd/ebin/
|
||
|
BEAMDIR = $(EJABBERDDIR)/ebin
|
||
|
|
||
|
# /usr/lib/ejabberd/include/
|
||
|
INCLUDEDIR = $(EJABBERDDIR)/include
|
||
|
|
||
|
# /usr/lib/ejabberd/priv/
|
||
|
PRIVDIR = $(EJABBERDDIR)/priv
|
||
|
|
||
|
# /usr/lib/ejabberd/priv/bin
|
||
|
PBINDIR = $(PRIVDIR)/bin
|
||
|
|
||
|
# /usr/lib/ejabberd/priv/lib
|
||
|
SODIR = $(PRIVDIR)/lib
|
||
|
|
||
|
# /usr/lib/ejabberd/priv/msgs
|
||
|
MSGSDIR = $(PRIVDIR)/msgs
|
||
|
|
||
|
# /var/lib/ejabberd/
|
||
|
SPOOLDIR = $(DESTDIR)@localstatedir@/lib/ejabberd
|
||
|
|
||
|
# /var/lock/ejabberdctl
|
||
|
CTLLOCKDIR = $(DESTDIR)@localstatedir@/lock/ejabberdctl
|
||
|
|
||
|
# /var/lib/ejabberd/.erlang.cookie
|
||
|
COOKIEFILE = $(SPOOLDIR)/.erlang.cookie
|
||
|
|
||
|
# /var/log/ejabberd/
|
||
|
LOGDIR = $(DESTDIR)@localstatedir@/log/ejabberd
|
||
|
|
||
|
INSTALLUSER=@INSTALLUSER@
|
||
|
# if no user was enabled, don't set privileges or ownership
|
||
|
ifeq ($(INSTALLUSER),)
|
||
|
O_USER=
|
||
|
G_USER=
|
||
|
CHOWN_COMMAND=echo
|
||
|
CHOWN_OUTPUT=/dev/null
|
||
|
INIT_USER=root
|
||
|
else
|
||
|
O_USER=-o $(INSTALLUSER)
|
||
|
G_USER=-g $(INSTALLUSER)
|
||
|
CHOWN_COMMAND=chown
|
||
|
CHOWN_OUTPUT=&1
|
||
|
INIT_USER=$(INSTALLUSER)
|
||
|
endif
|
||
|
|
||
|
all: deps src
|
||
|
|
||
|
deps: deps/.got
|
||
|
|
||
|
deps/.got:
|
||
|
rm -rf deps/.got
|
||
|
rm -rf deps/.built
|
||
|
$(REBAR) get-deps && :> deps/.got
|
||
|
|
||
|
deps/.built:
|
||
|
$(REBAR) compile && :> deps/.built
|
||
|
|
||
|
src: deps/.built
|
||
|
$(REBAR) skip_deps=true compile
|
||
|
|
||
|
update:
|
||
|
rm -rf deps/.got
|
||
|
rm -rf deps/.built
|
||
|
$(REBAR) update-deps && :> deps/.got
|
||
|
|
||
|
translations:
|
||
|
contrib/extract_translations/prepare-translation.sh -updateall
|
||
|
|
||
|
doc:
|
||
|
echo making $$target in doc; \
|
||
|
(cd doc && $(MAKE) $$target) || exit 1
|
||
|
|
||
|
edoc:
|
||
|
$(ERL) -noinput +B -eval \
|
||
|
'case edoc:application(ejabberd, ".", []) of ok -> halt(0); error -> halt(1) end.'
|
||
|
|
||
|
spec:
|
||
|
$(ERL) -noinput +B -pa ebin -pa deps/*/ebin -eval \
|
||
|
'case xml_gen:compile("tools/xmpp_codec.spec") of ok -> halt(0); _ -> halt(1) end.'
|
||
|
|
||
|
install: all
|
||
|
#
|
||
|
# Configuration files
|
||
|
$(INSTALL) -d -m 750 $(G_USER) $(ETCDIR)
|
||
|
[ -f $(ETCDIR)/ejabberd.cfg ] \
|
||
|
&& $(INSTALL) -b -m 640 $(G_USER) ejabberd.cfg.example $(ETCDIR)/ejabberd.cfg-new \
|
||
|
|| $(INSTALL) -b -m 640 $(G_USER) ejabberd.cfg.example $(ETCDIR)/ejabberd.cfg
|
||
|
$(SED) -e "s*{{rootdir}}*@prefix@*" \
|
||
|
-e "s*{{installuser}}*@INSTALLUSER@*" \
|
||
|
-e "s*{{libdir}}*@libdir@*" \
|
||
|
-e "s*{{sysconfdir}}*@sysconfdir@*" \
|
||
|
-e "s*{{localstatedir}}*@localstatedir@*" \
|
||
|
-e "s*{{docdir}}*@docdir@*" \
|
||
|
-e "s*{{erl}}*@ERL@*" ejabberdctl.template \
|
||
|
> ejabberdctl.example
|
||
|
[ -f $(ETCDIR)/ejabberdctl.cfg ] \
|
||
|
&& $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg-new \
|
||
|
|| $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg
|
||
|
$(INSTALL) -b -m 644 $(G_USER) inetrc $(ETCDIR)/inetrc
|
||
|
#
|
||
|
# Administration script
|
||
|
[ -d $(SBINDIR) ] || $(INSTALL) -d -m 755 $(SBINDIR)
|
||
|
$(INSTALL) -m 550 $(G_USER) ejabberdctl.example $(SBINDIR)/ejabberdctl
|
||
|
#
|
||
|
# Init script
|
||
|
$(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*" \
|
||
|
-e "s*@installuser@*$(INIT_USER)*" ejabberd.init.template \
|
||
|
> ejabberd.init
|
||
|
chmod 755 ejabberd.init
|
||
|
#
|
||
|
# Binary Erlang files
|
||
|
$(INSTALL) -d $(BEAMDIR)
|
||
|
$(INSTALL) -m 644 ebin/*.app $(BEAMDIR)
|
||
|
$(INSTALL) -m 644 ebin/*.beam $(BEAMDIR)
|
||
|
$(INSTALL) -m 644 deps/*/ebin/*.app $(BEAMDIR)
|
||
|
$(INSTALL) -m 644 deps/*/ebin/*.beam $(BEAMDIR)
|
||
|
rm -f $(BEAMDIR)/configure.beam
|
||
|
#
|
||
|
# ejabberd header files
|
||
|
$(INSTALL) -d $(INCLUDEDIR)
|
||
|
$(INSTALL) -m 644 include/*.hrl $(INCLUDEDIR)
|
||
|
$(INSTALL) -m 644 deps/*/include/*.hrl $(INCLUDEDIR)
|
||
|
#
|
||
|
# Binary C programs
|
||
|
$(INSTALL) -d $(PBINDIR)
|
||
|
$(INSTALL) -m 750 $(O_USER) tools/captcha.sh $(PBINDIR)
|
||
|
#
|
||
|
# Binary system libraries
|
||
|
$(INSTALL) -d $(SODIR)
|
||
|
#$(INSTALL) -m 644 priv/lib/*.so $(SODIR)
|
||
|
$(INSTALL) -m 644 deps/*/priv/lib/*.so $(SODIR)
|
||
|
#
|
||
|
# Translated strings
|
||
|
$(INSTALL) -d $(MSGSDIR)
|
||
|
$(INSTALL) -m 644 priv/msgs/*.msg $(MSGSDIR)
|
||
|
#
|
||
|
# Spool directory
|
||
|
$(INSTALL) -d -m 750 $(O_USER) $(SPOOLDIR)
|
||
|
$(CHOWN_COMMAND) -R @INSTALLUSER@ $(SPOOLDIR) >$(CHOWN_OUTPUT)
|
||
|
chmod -R 750 $(SPOOLDIR)
|
||
|
[ ! -f $(COOKIEFILE) ] || { $(CHOWN_COMMAND) @INSTALLUSER@ $(COOKIEFILE) >$(CHOWN_OUTPUT) ; chmod 400 $(COOKIEFILE) ; }
|
||
|
#
|
||
|
# ejabberdctl lock directory
|
||
|
$(INSTALL) -d -m 750 $(O_USER) $(CTLLOCKDIR)
|
||
|
$(CHOWN_COMMAND) -R @INSTALLUSER@ $(CTLLOCKDIR) >$(CHOWN_OUTPUT)
|
||
|
chmod -R 750 $(CTLLOCKDIR)
|
||
|
#
|
||
|
# Log directory
|
||
|
$(INSTALL) -d -m 750 $(O_USER) $(LOGDIR)
|
||
|
$(CHOWN_COMMAND) -R @INSTALLUSER@ $(LOGDIR) >$(CHOWN_OUTPUT)
|
||
|
chmod -R 750 $(LOGDIR)
|
||
|
#
|
||
|
# Documentation
|
||
|
$(INSTALL) -d $(DOCDIR)
|
||
|
$(INSTALL) -m 644 doc/dev.html $(DOCDIR)
|
||
|
$(INSTALL) -m 644 doc/guide.html $(DOCDIR)
|
||
|
$(INSTALL) -m 644 doc/*.png $(DOCDIR)
|
||
|
$(INSTALL) -m 644 doc/*.txt $(DOCDIR)
|
||
|
[ -f doc/guide.pdf ] \
|
||
|
&& $(INSTALL) -m 644 doc/guide.pdf $(DOCDIR) \
|
||
|
|| echo "No doc/guide.pdf was built"
|
||
|
$(INSTALL) -m 644 COPYING $(DOCDIR)
|
||
|
|
||
|
uninstall: uninstall-binary
|
||
|
|
||
|
uninstall-binary:
|
||
|
rm -f $(SBINDIR)/ejabberdctl
|
||
|
rm -fr $(DOCDIR)
|
||
|
rm -f $(BEAMDIR)/*.beam
|
||
|
rm -f $(BEAMDIR)/*.app
|
||
|
rm -fr $(BEAMDIR)
|
||
|
rm -f $(INCLUDEDIR)/*.hrl
|
||
|
rm -fr $(INCLUDEDIR)
|
||
|
rm -fr $(PBINDIR)
|
||
|
rm -f $(SODIR)/*.so
|
||
|
rm -fr $(SODIR)
|
||
|
rm -f $(MSGSDIR)/*.msgs
|
||
|
rm -fr $(MSGSDIR)
|
||
|
rm -fr $(PRIVDIR)
|
||
|
rm -fr $(EJABBERDDIR)
|
||
|
|
||
|
uninstall-all: uninstall-binary
|
||
|
rm -rf $(ETCDIR)
|
||
|
rm -rf $(EJABBERDDIR)
|
||
|
rm -rf $(SPOOLDIR)
|
||
|
rm -rf $(CTLLOCKDIR)
|
||
|
rm -rf $(LOGDIR)
|
||
|
|
||
|
clean:
|
||
|
rm -rf deps/.got
|
||
|
rm -rf deps/.built
|
||
|
$(REBAR) clean
|
||
|
|
||
|
clean-rel:
|
||
|
rm -rf rel/ejabberd
|
||
|
|
||
|
distclean: clean clean-rel
|
||
|
rm -f config.status
|
||
|
rm -f config.log
|
||
|
rm -rf autom4te.cache
|
||
|
rm -rf deps
|
||
|
rm -rf ebin
|
||
|
rm -f Makefile
|
||
|
rm -f vars.config
|
||
|
rm -f src/ejabberd.app.src
|
||
|
[ ! -f ../ChangeLog ] || rm -f ../ChangeLog
|
||
|
|
||
|
rel: all
|
||
|
$(REBAR) generate
|
||
|
|
||
|
TAGS:
|
||
|
etags *.erl
|
||
|
|
||
|
Makefile: Makefile.in
|
||
|
|
||
|
erlang.plt:
|
||
|
-dialyzer --build_plt --output_plt erlang.plt \
|
||
|
--apps kernel stdlib sasl crypto public_key ssl mnesia \
|
||
|
inets odbc tools compiler erts webtool runtime_tools asn1 \
|
||
|
observer xmerl et gs wx syntax_tools deps/*/ebin
|
||
|
|
||
|
plt: erlang.plt
|
||
|
|
||
|
dialyzer: plt
|
||
|
-dialyzer --plt erlang.plt --add_to_plt --output_plt ejabberd.plt \
|
||
|
--get_warnings -o dialyzer.log ebin
|
||
|
|
||
|
test:
|
||
|
$(REBAR) skip_deps=true ct
|
||
|
|
||
|
.PHONY: src doc edoc dialyzer Makefile TAGS clean clean-rel distclean rel plt \
|
||
|
install uninstall uninstall-binary uninstall-all translations deps test spec
|