There is no radius_acc and radius_auth modules anymore.
[sip-router] / Makefile
1 # $Id$
2 #
3 # sip_router makefile
4 #
5 # WARNING: requires gmake (GNU Make)
6 #  Arch supported: Linux, FreeBSD, SunOS (tested on Solaris 8), OpenBSD (3.2),
7 #  NetBSD (1.6).
8 #
9 #  History:
10 #  --------
11 #              created by andrei
12 #  2003-02-24  make install no longer overwrites ser.cfg  - patch provided
13 #               by Maxim Sobolev   <sobomax@FreeBSD.org> and 
14 #                  Tomas Bj√∂rklund <tomas@webservices.se>
15 #  2003-03-11  PREFIX & LOCALBASE must also be exported (andrei)
16 #  2003-04-07  hacked to work with solaris install (andrei)
17 #  2003-04-17  exclude modules overwritable from env. or cmd. line,
18 #               added include_modules and skip_modules (andrei)
19 #  2003-05-30  added extra_defs & EXTRA_DEFS
20 #               Makefile.defs force-included to allow recursive make
21 #               calls -- see comment (andrei)
22 #  2003-06-02  make tar changes -- unpacks in $NAME-$RELEASE  (andrei)
23 #  2003-06-03  make install-cfg will properly replace the module path
24 #               in the cfg (re: /usr/.*lib/ser/modules)
25 #              ser.cfg.default is installed only if there is a previous
26 #               cfg. -- fixes packages containing ser.cfg.default (andrei)
27 #  2003-08-29  install-modules-doc split from install-doc, added 
28 #               install-modules-all, removed README.cfg (andrei)
29 #              added skip_cfg_install (andrei)
30 #
31
32 auto_gen=lex.yy.c cfg.tab.c   #lexx, yacc etc
33
34 #include  source related defs
35 include Makefile.sources
36
37 # whether or not to install ser.cfg or just ser.cfg.default
38 # (ser.cfg will never be overwritten by make install, this is usefull
39 #  when creating packages)
40 skip_cfg_install?=
41
42 #extra modules to exclude
43 skip_modules?=
44
45 # if not set on the cmd. line or the env, exclude this modules:
46 exclude_modules?=                       cpl ext extcmd \
47                                                         postgres snmp \
48                                                         im \
49                                                         jabber \
50                                                         cpl-c pa \
51                                                         auth_radius group_radius uri_radius 
52 # always exclude the CVS dir
53 override exclude_modules+= CVS $(skip_modules)
54
55 #always include this modules
56 include_modules?=
57
58 # first 2 lines are excluded because of the experimental or incomplete
59 # status of the modules
60 # the rest is excluded because it depends on external libraries
61 #
62 static_modules=
63 static_modules_path=$(addprefix modules/, $(static_modules))
64 extra_sources=$(wildcard $(addsuffix /*.c, $(static_modules_path)))
65 extra_objs=$(extra_sources:.c=.o)
66
67 static_defs= $(foreach  mod, $(static_modules), \
68                 -DSTATIC_$(shell echo $(mod) | tr [:lower:] [:upper:]) )
69
70 override extra_defs+=$(static_defs) $(EXTRA_DEFS)
71 export extra_defs
72
73 modules=$(filter-out $(addprefix modules/, \
74                         $(exclude_modules) $(static_modules)), \
75                         $(wildcard modules/*))
76 modules:=$(filter-out $(modules), $(addprefix modules/, $(include_modules) )) \
77                         $(modules)
78 modules_names=$(shell echo $(modules)| \
79                                 sed -e 's/modules\/\([^/ ]*\)\/*/\1.so/g' )
80 modules_basenames=$(shell echo $(modules)| \
81                                 sed -e 's/modules\/\([^/ ]*\)\/*/\1/g' )
82 #modules_names=$(patsubst modules/%, %.so, $(modules))
83 modules_full_path=$(join  $(modules), $(addprefix /, $(modules_names)))
84
85 NAME=ser
86
87 ALLDEP=Makefile Makefile.sources Makefile.defs Makefile.rules
88
89 #include general defs (like CC, CFLAGS  a.s.o)
90 # hack to force makefile.defs re-inclusion (needed when make calls itself with
91 # other options -- e.g. make bin)
92 makefile_defs=0
93 DEFS:=
94 include Makefile.defs
95
96 #export relevant variables to the sub-makes
97 export DEFS PROFILE CC  LD MKDEP MKTAGS CFLAGS LDFLAGS MOD_CFLAGS MOD_LDFLAGS
98 export LEX YACC YACC_FLAGS
99 export PREFIX LOCALBASE
100 # export relevant variables for recursive calls of this makefile 
101 # (e.g. make deb)
102 #export LIBS
103 #export TAR 
104 #export NAME RELEASE OS ARCH 
105 #export cfg-prefix cfg-dir bin-prefix bin-dir modules-prefix modules-dir
106 #export doc-prefix doc-dir man-prefix man-dir ut-prefix ut-dir
107 #export cfg-target modules-target
108 #export INSTALL INSTALL-CFG INSTALL-BIN INSTALL-MODULES INSTALL-DOC INSTALL-MAN 
109 #export INSTALL-TOUCH
110
111 ifneq ($(TLS),)
112         tar_extra_args+=
113 else
114         tar_extra_args+=--exclude=$(notdir $(CURDIR))/tls* 
115 endif
116 # include the common rules
117 include Makefile.rules
118
119 #extra targets 
120
121 $(NAME): static_modules
122
123 lex.yy.c: cfg.lex cfg.tab.h $(ALLDEP)
124         $(LEX) $<
125
126 cfg.tab.c cfg.tab.h: cfg.y  $(ALLDEP)
127         $(YACC) $(YACC_FLAGS) $<
128
129 .PHONY: all
130 all: $(NAME) modules
131
132
133
134 .PHONY: modules
135 modules:
136         -@for r in $(modules) "" ; do \
137                 if [ -n "$$r" ]; then \
138                         echo  "" ; \
139                         echo  "" ; \
140                         $(MAKE) -C $$r ; \
141                 fi ; \
142         done 
143
144 .PHONY: static_modules
145 static_modules:
146         -@echo "Extra objs: $(extra_objs)" 
147         -@for r in $(static_modules_path) "" ; do \
148                 if [ -n "$$r" ]; then \
149                         echo  "" ; \
150                         echo  "Making static module $r" ; \
151                         $(MAKE) -C $$r static ; \
152                 fi ; \
153         done 
154
155
156         
157 dbg: ser
158         gdb -command debug.gdb
159
160 .PHONY: tar
161 .PHONY: dist
162
163 dist: tar
164
165 tar: 
166         $(TAR) -C .. \
167                 --exclude=$(notdir $(CURDIR))/test* \
168                 --exclude=$(notdir $(CURDIR))/tmp* \
169                 --exclude=$(notdir $(CURDIR))/debian/ser* \
170                 --exclude=$(notdir $(CURDIR))/ser_tls* \
171                 --exclude=CVS* \
172                 --exclude=.cvsignore \
173                 --exclude=*.[do] \
174                 --exclude=*.so \
175                 --exclude=*.il \
176                 --exclude=$(notdir $(CURDIR))/ser \
177                 --exclude=*.gz \
178                 --exclude=*.bz2 \
179                 --exclude=*.tar \
180                 --exclude=*.patch \
181                 --exclude=.\#* \
182                 --exclude=*.swp \
183                 ${tar_extra_args} \
184                 -cf - $(notdir $(CURDIR)) | \
185                         (mkdir -p tmp/_tar1; mkdir -p tmp/_tar2 ; \
186                             cd tmp/_tar1; $(TAR) -xf - ) && \
187                             mv tmp/_tar1/$(notdir $(CURDIR)) \
188                                tmp/_tar2/"$(NAME)-$(RELEASE)" && \
189                             (cd tmp/_tar2 && $(TAR) \
190                                             -zcf ../../"$(NAME)-$(RELEASE)_src".tar.gz \
191                                                        "$(NAME)-$(RELEASE)" ) ; \
192                             rm -rf tmp/_tar1; rm -rf tmp/_tar2
193
194 # binary dist. tar.gz
195 .PHONY: bin
196 bin:
197         mkdir -p tmp/ser/usr/local
198         $(MAKE) install basedir=tmp/ser prefix=/usr/local 
199         $(TAR) -C tmp/ser/ -zcf ../$(NAME)-$(RELEASE)_$(OS)_$(ARCH).tar.gz .
200         rm -rf tmp/ser
201
202 .PHONY: deb
203 deb:
204         dpkg-buildpackage -rfakeroot -tc
205
206 .PHONY: sunpkg
207 sunpkg:
208         mkdir -p tmp/ser
209         mkdir -p tmp/ser_sun_pkg
210         $(MAKE) install basedir=tmp/ser prefix=/usr/local
211         (cd solaris; \
212         pkgmk -r ../tmp/ser/usr/local -o -d ../tmp/ser_sun_pkg/ -v "$(RELEASE)" ;\
213         cd ..)
214         cat /dev/null > ../$(NAME)-$(RELEASE)-$(OS)-$(ARCH)-local
215         pkgtrans -s tmp/ser_sun_pkg/ ../$(NAME)-$(RELEASE)-$(OS)-$(ARCH)-local \
216                 IPTELser
217         gzip -9 ../$(NAME)-$(RELEASE)-$(OS)-$(ARCH)-local
218         rm -rf tmp/ser
219         rm -rf tmp/ser_sun_pkg
220
221
222 install: all mk-install-dirs install-cfg install-bin install-modules \
223         install-doc install-man
224
225 .PHONY: dbinstall
226 dbinstall:
227         -@echo "Initializing ser database"
228         scripts/ser_mysql.sh create
229         -@echo "Done"
230
231 mk-install-dirs: $(cfg-prefix)/$(cfg-dir) $(bin-prefix)/$(bin-dir) \
232                         $(modules-prefix)/$(modules-dir) $(doc-prefix)/$(doc-dir) \
233                         $(man-prefix)/$(man-dir)/man8 $(man-prefix)/$(man-dir)/man5
234
235 $(cfg-prefix)/$(cfg-dir): 
236                 mkdir -p $(cfg-prefix)/$(cfg-dir)
237
238 $(bin-prefix)/$(bin-dir):
239                 mkdir -p $(bin-prefix)/$(bin-dir)
240
241 $(modules-prefix)/$(modules-dir):
242                 mkdir -p $(modules-prefix)/$(modules-dir)
243
244
245 $(doc-prefix)/$(doc-dir):
246                 mkdir -p $(doc-prefix)/$(doc-dir)
247
248 $(man-prefix)/$(man-dir)/man8:
249                 mkdir -p $(man-prefix)/$(man-dir)/man8
250
251 $(man-prefix)/$(man-dir)/man5:
252                 mkdir -p $(man-prefix)/$(man-dir)/man5
253                 
254 # note: on solaris 8 sed: ? or \(...\)* (a.s.o) do not work
255 install-cfg: $(cfg-prefix)/$(cfg-dir)
256                 sed -e "s#/usr/.*lib/ser/modules/#$(modules-target)#g" \
257                         < etc/ser.cfg > $(cfg-prefix)/$(cfg-dir)ser.cfg.sample
258                 chmod 644 $(cfg-prefix)/$(cfg-dir)ser.cfg.sample
259                 if [ -z "${skip_cfg_install}" -a \
260                                 ! -f $(cfg-prefix)/$(cfg-dir)ser.cfg ]; then \
261                         mv -f $(cfg-prefix)/$(cfg-dir)ser.cfg.sample \
262                                 $(cfg-prefix)/$(cfg-dir)ser.cfg; \
263                 fi
264 #               $(INSTALL-CFG) etc/ser.cfg $(cfg-prefix)/$(cfg-dir)
265
266 install-bin: $(bin-prefix)/$(bin-dir) utils/gen_ha1/gen_ha1 utils/serunix/serunix
267                 $(INSTALL-TOUCH) $(bin-prefix)/$(bin-dir)/ser 
268                 $(INSTALL-BIN) ser $(bin-prefix)/$(bin-dir)
269                 $(INSTALL-TOUCH)   $(bin-prefix)/$(bin-dir)/sc
270                 $(INSTALL-BIN) scripts/sc $(bin-prefix)/$(bin-dir)
271                 mv -f $(bin-prefix)/$(bin-dir)/sc $(bin-prefix)/$(bin-dir)/serctl
272                 $(INSTALL-TOUCH)   $(bin-prefix)/$(bin-dir)/ser_mysql.sh  
273                 $(INSTALL-BIN) scripts/ser_mysql.sh  $(bin-prefix)/$(bin-dir)
274                 $(INSTALL-TOUCH)   $(bin-prefix)/$(bin-dir)/gen_ha1
275                 $(INSTALL-BIN) utils/gen_ha1/gen_ha1 $(bin-prefix)/$(bin-dir)
276                 $(INSTALL-TOUCH)   $(bin-prefix)/$(bin-dir)/serunix
277                 $(INSTALL-BIN) utils/serunix/serunix $(bin-prefix)/$(bin-dir)
278
279 utils/gen_ha1/gen_ha1:
280                 cd utils/gen_ha1; $(MAKE) all
281
282 utils/serunix/serunix:
283                 cd utils/serunix; $(MAKE) all
284
285 install-modules: modules $(modules-prefix)/$(modules-dir)
286         -@for r in $(modules_full_path) "" ; do \
287                 if [ -n "$$r" ]; then \
288                         if [ -f "$$r" ]; then \
289                                 $(INSTALL-TOUCH) \
290                                         $(modules-prefix)/$(modules-dir)/`basename "$$r"` ; \
291                                 $(INSTALL-MODULES)  "$$r"  $(modules-prefix)/$(modules-dir) ; \
292                         else \
293                                 echo "ERROR: module $$r not compiled" ; \
294                         fi ;\
295                 fi ; \
296         done 
297
298
299 install-modules-all: install-modules install-modules-doc
300
301
302 install-doc: $(doc-prefix)/$(doc-dir) install-modules-doc
303         $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/INSTALL 
304         $(INSTALL-DOC) INSTALL $(doc-prefix)/$(doc-dir)
305         $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/README-MODULES 
306         $(INSTALL-DOC) README-MODULES $(doc-prefix)/$(doc-dir)
307         $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/AUTHORS 
308         $(INSTALL-DOC) AUTHORS $(doc-prefix)/$(doc-dir)
309         $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/NEWS
310         $(INSTALL-DOC) NEWS $(doc-prefix)/$(doc-dir)
311         $(INSTALL-TOUCH) $(doc-prefix)/$(doc-dir)/README 
312         $(INSTALL-DOC) README $(doc-prefix)/$(doc-dir)
313
314
315 install-modules-doc: $(doc-prefix)/$(doc-dir)
316         -@for r in $(modules_basenames) "" ; do \
317                 if [ -n "$$r" ]; then \
318                         if [ -f modules/"$$r"/README ]; then \
319                                 $(INSTALL-TOUCH)  $(doc-prefix)/$(doc-dir)/README ; \
320                                 $(INSTALL-DOC)  modules/"$$r"/README  \
321                                                                         $(doc-prefix)/$(doc-dir)/README ; \
322                                 mv -f $(doc-prefix)/$(doc-dir)/README \
323                                                 $(doc-prefix)/$(doc-dir)/README."$$r" ; \
324                         fi ; \
325                 fi ; \
326         done 
327
328
329 install-man: $(man-prefix)/$(man-dir)/man8 $(man-prefix)/$(man-dir)/man5
330         $(INSTALL-TOUCH)  $(man-prefix)/$(man-dir)/man8/ser.8 
331         $(INSTALL-MAN)  ser.8 $(man-prefix)/$(man-dir)/man8/
332         $(INSTALL-TOUCH)  $(man-prefix)/$(man-dir)/man5/ser.cfg.5 
333         $(INSTALL-MAN)  ser.cfg.5 $(man-prefix)/$(man-dir)/man5
334