kamailio.cfg: removed sample db_mode parameter for domain module
[sip-router] / Makefile.modules
1 #
2 # $Id$
3 #
4 # module Makefile
5 #(to be included from each module)
6 #
7 # History:
8 # --------
9 #  2007-03-29  if a module depends on SER_LIBS, it will be rebuilt on install
10 #               with the proper rpath; libraries will be automatically
11 #               installed if needed (andrei)
12 #  2008-06-23  added the README & man targets (andrei)
13 #  2008-06-27  make cfg / config.mak support (andrei)
14 #  2009-03-10  replaced DEFS with C_DEFS and INCLUDES with C_INCLUDES (DEFS
15 #              and INCLUDES are now used only for "temporary" defines/includes
16 #              inside modules or libs) (andrei)
17 #  2009-10-01  added support for automatically installing extra utils,
18 #               scripts and cfg files (andrei)
19 #  2010-03-04  don't overwrite already installed .cfgs, save the .cfg as
20 #              .sample in this case (andrei)
21 #
22
23 #
24 # Variables that should be defined in the modules, prior to including
25 # this makefile:
26 #
27 # NAME - module binary name, complete with .so and no path (MUST).
28 #
29 # COREPATH - path to the main/core directory (OPTIONAL, default ../..)
30 #
31 # DEFS - per module extra defines (OPTIONAL)
32 #
33 # LIBS - per module extra libs (OPTIONAL)
34 #
35 # SER_LIBS - ser/sr libs that should be compiled, linked against and installed
36 #           along the module. The format is: <path>/<shortname>, e.g.
37 #           SER_LIBS=../../lib/srdb2/srdb2 for libsrdb2 with the sources
38 #            in ../../lib/srdb2. (OPTIONAL)
39 #
40 # MOD_INSTALL_UTILS - list of utils directories that should be compiled and
41 #                     installed along the module. The utils must know how to
42 #                     install themselves (make install).
43 #                     E.g.: MOD_INSTALL_UTILS=../../utils/sercmd
44 #                     (OPTIONAL)
45 #
46 # MOD_INSTALL_SCRIPTS - list of scripts (complete path including the file name)
47 #                       that should be installed along the module.
48 #                       E.g.: MOD_INSTALL_SCRIPTS=../../scripts/foo/foo.sh
49 #                       (OPTIONAL)
50 #
51 # MOD_INSTALL_CFGS - list of extra config files that should be installed in
52 #                    the main config directory, along the module (OPTIONAL).
53 #
54 # MOD_INSTALL_SHARE - list of files to install into the arch-independent
55 #                     shared directory (by default
56 #                     /usr/local/share/$(MAIN_NAME))
57 #
58
59 MOD_NAME=$(NAME:.so=)
60
61 # allow placing modules in separate directory apart from ser core
62 COREPATH ?=../..
63
64 ALLDEP=Makefile $(COREPATH)/Makefile.sources $(COREPATH)/Makefile.rules \
65  $(COREPATH)/Makefile.modules $(COREPATH)/Makefile.dirs $(COREPATH)/config.mak
66
67 #override modules value, a module cannot have submodules
68 override modules=
69 override static_modules=
70 override static_modules_path=
71
72 # should be set in the Makefile of each module
73 # INCLUDES += -I$(COREPATH)
74
75 # temporary def (visible only in the module, not exported)
76 DEFS += -DMOD_NAME='"$(MOD_NAME)"'
77
78
79 ifeq (,$(findstring -DSER_MOD_INTERFACE, $(DEFS)))
80         MODIFACE=-DOPENSER_MOD_INTERFACE
81 else
82         MODIFACE=-DSER_MOD_INTERFACE
83 endif
84
85
86 ifneq ($(makefile_defs_included),1)
87 $(error "the local makefile does not include Makefile.defs!")
88 endif
89
90 ifeq ($(MAKELEVEL), 0)
91 # make called directly in the module dir!
92
93 #$(warning "you should run make from the main ser directory")
94
95 else
96 # called by the main Makefile
97
98 ALLDEP+=$(COREPATH)/Makefile
99
100 endif
101
102 include $(COREPATH)/Makefile.sources
103
104
105 # if config was not loaded (makefile_defs!=1) ignore
106 # the rest of makefile and try only to remake the config
107 ifeq ($(makefile_defs),1)
108
109 ifeq (,$(filter $(MOD_NAME), $(static_modules)))
110 CFLAGS:=$(MOD_CFLAGS)
111 LDFLAGS:=$(MOD_LDFLAGS)
112 endif
113
114
115 err_fail?=1
116
117 include $(COREPATH)/Makefile.dirs
118 include $(COREPATH)/Makefile.targets
119 include $(COREPATH)/Makefile.rules
120 include $(COREPATH)/Makefile.shared
121
122 # default: if not overwritten by the main Makefile, install in modules
123 mods_dst=$(modules_prefix)/$(modules_dir)/modules
124
125 $(mods_dst):
126                 mkdir -p $(mods_dst)
127
128 LIBS:=$(filter-out -ldl -lresolv, $(LIBS))
129
130
131 .PHONY: install
132 .PHONY: install-libs
133 .PHONY: install-utils
134 .PHONY: install-scripts
135 .PHONY: install-cfgs
136 install: $(NAME) $(mods_dst) install-libs install-utils install-scripts \
137                 install-cfg install-share
138         $(INSTALL_TOUCH) $(mods_dst)/$(NAME)
139         $(INSTALL_MODULES)  $(NAME)  $(mods_dst)
140
141 ifneq (,$(SER_LIBS))
142 install-libs:
143         @for lib in $(dir $(SER_LIBS)) ; do \
144                 $(call try_err, $(MAKE) -C "$${lib}" install-if-newer ) ;\
145         done; true
146
147 else
148 install-libs:
149
150 endif # $(SER_LIBS)
151
152 .PHONY: utils
153 .PHONY: clean-utils
154 .PHONY: proper-utils
155 .PHONY: distclean-utils
156 .PHONY: realclean-utils
157 .PHONY: maintainer-clean-utils
158 ifneq (,$(MOD_INSTALL_UTILS))
159 install-utils:
160         @for ut in $(MOD_INSTALL_UTILS) ; do \
161                 $(call try_err, $(MAKE) -C "$${ut}" install-if-newer ) ;\
162         done; true
163
164 utils:
165         @for r in $(MOD_INSTALL_UTILS) ; do \
166                 $(call try_err, $(MAKE) -C "$$r" ) ;\
167         done; true
168
169 clean-utils:
170         @for r in $(MOD_INSTALL_UTILS) ; do \
171                 if [ -d "$$r" ]; then \
172                          $(MAKE) -C "$$r" clean ; \
173                 fi ; \
174         done
175
176 proper-utils realclean-utils distclean-utils maintainer-clean-utils: \
177  clean_target=$(patsubst %-utils,%,$@)
178 proper-utils realclean-utils distclean-utils maintainer-clean-utils:
179         @for r in $(MOD_INSTALL_UTILS) ; do \
180                 if [ -d "$$r" ]; then \
181                          $(MAKE) -C "$$r" $(clean_target); \
182                 fi ; \
183         done
184
185 else
186 # ! MOD_INSTALL_UTILS
187 install-utils:
188 utils:
189 clean-utils:
190 proper-utils realclean-utils distclean-utils maintainer-clean-utils:
191
192 endif # $(MOD_INSTALL_UTILS)
193
194 ifneq (,$(MOD_INSTALL_SCRIPTS))
195 install-scripts: $(bin_prefix)/$(bin_dir)
196         @for r in $(MOD_INSTALL_SCRIPTS) ; do \
197                 if [ -n "$$r" ]; then \
198                         if [ -f "$$r" ]; then \
199                                 $(call try_err, $(INSTALL_TOUCH) \
200                                         $(bin_prefix)/$(bin_dir)/`basename "$$r"` ); \
201                                 $(call try_err,\
202                                         $(INSTALL_SCRIPT)  "$$r"  $(bin_prefix)/$(bin_dir) ); \
203                         else \
204                                 echo "ERROR: $$r not found" ; \
205                                 if [ ${err_fail} = 1 ] ; then \
206                                         exit 1; \
207                                 fi ; \
208                         fi ; \
209                 fi ; \
210         done; true
211
212 else
213 install-scripts:
214
215 endif # $(MOD_INSTALL_SCRIPTS)
216
217 ifneq (,$(MOD_INSTALL_CFGS))
218 install-cfg: $(cfg_prefix)/$(cfg_dir)
219         @for r in $(MOD_INSTALL_CFGS) ; do \
220                 if [ -n "$$r" ]; then \
221                         if [ -f "$$r" ]; then \
222                                 n=`basename "$$r"` ; \
223                                 $(call try_err, $(INSTALL_TOUCH) \
224                                         "$(cfg_prefix)/$(cfg_dir)/$$n.sample" ); \
225                                 $(call try_err,\
226                                         $(INSTALL_CFG)  "$$r"  \
227                                                 "$(cfg_prefix)/$(cfg_dir)/$$n.sample"); \
228                                 if [ -z "${skip_cfg_install}" -a \
229                                                 ! -f "$(cfg_prefix)/$(cfg_dir)$$n" ]; then \
230                                         mv -f $(cfg_prefix)/$(cfg_dir)$$n.sample \
231                                                 $(cfg_prefix)/$(cfg_dir)$$n; \
232                                 fi ; \
233                         else \
234                                 echo "ERROR: $$r not found" ; \
235                                 if [ ${err_fail} = 1 ] ; then \
236                                         exit 1; \
237                                 fi ; \
238                         fi ; \
239                 fi ; \
240         done; true
241
242 else
243 install-cfg:
244
245 endif # $(MOD_INSTALL_CFGS)
246
247 ifneq (,$(MOD_INSTALL_SHARE))
248 install-share: $(share_prefix)/$(share_dir)
249         @for r in $(MOD_INSTALL_SHARE) ; do \
250                 if [ -n "$$r" ]; then \
251                         if [ -f "$$r" ]; then \
252                                 $(call try_err, $(INSTALL_TOUCH) \
253                                         $(share_prefix)/$(share_dir)/`basename "$$r"` ); \
254                                 $(call try_err,\
255                                         $(INSTALL_SHARE)  "$$r"  $(share_prefix)/$(share_dir) ); \
256                         else \
257                                 echo "ERROR: $$r not found" ; \
258                                 if [ ${err_fail} = 1 ] ; then \
259                                         exit 1; \
260                                 fi ; \
261                         fi ; \
262                 fi ; \
263         done; true
264
265 else
266 install-share:
267
268 endif # $(MOD_INSTALL_SHARE)
269
270
271 $(bin_prefix)/$(bin_dir):
272         mkdir -p $@
273
274 $(cfg_prefix)/$(cfg_dir):
275         mkdir -p $@
276
277 $(share_prefix)/$(share_dir):
278         mkdir -p $@
279
280 # README build rules
281 ifneq (,$(wildcard doc/Makefile))
282 #doc/Makefile present => we can generate README
283
284 README: doc/*.xml ../../docbook/entities.xml
285         $(MAKE) -C doc $(MOD_NAME).txt
286         mv doc/$(MOD_NAME).txt $@
287
288 else
289 # do nothing
290
291 README:
292 endif
293
294 #man page build rules
295 ifneq (,$(wildcard $(MOD_NAME).xml))
296
297 $(MOD_NAME).7: $(MOD_NAME).xml
298         docbook2x-man -s ../../doc/stylesheets/serdoc2man.xsl $<
299
300 man: $(MOD_NAME).7
301
302 else
303
304 man:
305
306 endif
307
308
309 printmiface:
310         @echo -n $(MODIFACE)
311
312 endif # ifeq($(makefile_defs),1)
313
314 include $(COREPATH)/Makefile.cfg