summaryrefslogtreecommitdiff
path: root/src/Makefile.in
blob: 57bb56333d7957ed2ce9cb712d39b77318d603ad (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# $Id$

CC = @CC@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@

EXPAT_CFLAGS = @EXPAT_CFLAGS@
ERLANG_CFLAGS= @ERLANG_CFLAGS@

EXPAT_LIBS = @EXPAT_LIBS@
ERLANG_LIBS = @ERLANG_LIBS@

ERLC_FLAGS += @ERLANG_SSL39@

ASN_FLAGS = -bber_bin +der +compact_bit_string +optimize +noobj
# make debug=true to compile Erlang module with debug informations.
ifdef debug
  ERLC_FLAGS+=+debug_info
endif

ifdef ejabberd_debug
  ERLC_FLAGS+=-Dejabberd_debug
endif

ifeq (@hipe@, true)
  ERLC_FLAGS+=+native
endif

ifeq (@roster_gateway_workaround@, true)
  ERLC_FLAGS+=-DROSTER_GATEWAY_WORKAROUND
endif

ifeq (@full_xml@, true)
  ERLC_FLAGS+=-DFULL_XML_SUPPORT
endif

ifeq (@transient_supervisors@, false)
  ERLC_FLAGS+=-DNO_TRANSIENT_SUPERVISORS
endif

INSTALL_EPAM=
ifeq (@pam@, pam)
  INSTALL_EPAM=install -m 750 epam $(PBINDIR)
endif

prefix = @prefix@
exec_prefix = @exec_prefix@

SUBDIRS = @mod_irc@ @mod_pubsub@ @mod_muc@ @mod_proxy65@ @eldap@ @pam@ @web@ stringprep @tls@ @odbc@ @ejabberd_zlib@
ERLSHLIBS = expat_erl.so
ERLBEHAVS = cyrsasl.erl gen_mod.erl p1_fsm.erl
SOURCES_ALL = $(wildcard *.erl)
SOURCES = $(filter-out $(ERLBEHAVS),$(SOURCES_ALL))
ERLBEHAVBEAMS = $(ERLBEHAVS:.erl=.beam)
BEAMS = $(SOURCES:.erl=.beam)

DESTDIR =

EJABBERDDIR = $(DESTDIR)@localstatedir@/lib/ejabberd
BEAMDIR = $(EJABBERDDIR)/ebin
PRIVDIR = $(EJABBERDDIR)/priv
SODIR = $(PRIVDIR)/lib
PBINDIR = $(PRIVDIR)/bin
MSGSDIR = $(PRIVDIR)/msgs
LOGDIR = $(DESTDIR)@localstatedir@/log/ejabberd
ETCDIR = $(DESTDIR)@sysconfdir@/ejabberd
SBINDIR = $(DESTDIR)@sbindir@

ifeq ($(shell uname),Darwin)
DYNAMIC_LIB_CFLAGS = -fPIC -bundle -flat_namespace -undefined suppress
else
# Assume Linux-style dynamic library flags
DYNAMIC_LIB_CFLAGS = -fpic -shared
endif

all: $(ERLSHLIBS) compile-beam all-recursive

compile-beam: XmppAddr.hrl $(ERLBEHAVBEAMS) $(BEAMS)

$(BEAMS): $(ERLBEHAVBEAMS)

all-recursive: $(ERLBEHAVBEAMS)

%.beam:       %.erl
	@ERLC@ -W $(ERLC_FLAGS) $<


all-recursive install-recursive uninstall-recursive \
clean-recursive distclean-recursive \
mostlyclean-recursive maintainer-clean-recursive:
	@subdirs="$(SUBDIRS)"; for subdir in $$subdirs; do \
	target=`echo $@|sed 's,-recursive,,'`; \
	echo making $$target in $$subdir; \
	(cd $$subdir && $(MAKE) $$target) || exit 1; \
	done


%.hrl: %.asn1
	@ERLC@ $(ASN_FLAGS) $<
	@ERLC@ -W $(ERLC_FLAGS) $*.erl

$(ERLSHLIBS):	%.so:	%.c
	$(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) \
		$(subst ../,,$(subst .so,.c,$@)) \
		$(EXPAT_LIBS) \
		$(EXPAT_CFLAGS) \
		$(ERLANG_LIBS) \
		$(ERLANG_CFLAGS) \
		-o $@ \
		$(DYNAMIC_LIB_CFLAGS)

install: all
	install -d $(BEAMDIR)
	install -m 644 *.beam $(BEAMDIR)
	rm -f $(BEAMDIR)/configure.beam
	install -m 644 *.app $(BEAMDIR)
	install -d $(SODIR)
	install -d $(PBINDIR)
	install -m 644 *.so $(SODIR)
	$(INSTALL_EPAM)
	install -d $(MSGSDIR)
	install -m 644 msgs/*.msg $(MSGSDIR)
	install -d $(ETCDIR)
	[ -f $(ETCDIR)/ejabberd.cfg ] && install -b -m 644 ejabberd.cfg.example $(ETCDIR)/ejabberd.cfg-new || install -b -m 644 ejabberd.cfg.example $(ETCDIR)/ejabberd.cfg
	sed -e "s*@rootdir@*@prefix@*" ejabberdctl.template > ejabberdctl.example
	[ -f $(ETCDIR)/ejabberdctl.cfg ] && install -b -m 644 ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg-new || install -b -m 644 ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg
	install -b -m 644 inetrc $(ETCDIR)/inetrc
	install -d $(SBINDIR)
	install -m 755 ejabberdctl.example $(SBINDIR)/ejabberdctl
	install -d $(LOGDIR)

uninstall: uninstall-binary

uninstall-binary:
	rm -rf $(BEAMDIR)
	rm -rf $(SODIR)
	rm -rf $(MSGSDIR)
	rm -rf $(PRIVDIR)
	rm -rf $(SBINDIR)/ejabberdctl

uninstall-all: uninstall-binary
	rm -rf $(ETCDIR)
	rm -rf $(LOGDIR)
	rm -rf $(EJABBERDDIR)

clean: clean-recursive clean-local

clean-local:
	rm -f *.beam $(ERLSHLIBS) epam
	rm -f XmppAddr.asn1db XmppAddr.erl XmppAddr.hrl

distclean: distclean-recursive clean-local
	rm -f config.status
	rm -f config.log
	rm -f Makefile

TAGS:
	etags *.erl

Makefile: Makefile.in

dialyzer: $(BEAMS)
	@dialyzer -c .