abad0660001bee48c0eb4b62c39aeab8f533b601
[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 6), WinNT (cygwin)
7
8 auto_gen=lex.yy.c cfg.tab.c   #lexx, yacc etc
9
10 #include  source related defs
11 include Makefile.sources
12
13 exclude_modules=CVS cpl cpl-c ext radius_acc radius_auth snmp
14 static_modules=
15 static_modules_path=$(addprefix modules/, $(static_modules))
16 extra_sources=$(wildcard $(addsuffix /*.c, $(static_modules_path)))
17 extra_objs=$(extra_sources:.c=.o)
18
19 static_defs= $(foreach  mod, $(static_modules), \
20                 -DSTATIC_$(shell echo $(mod) | tr [:lower:] [:upper:]) )
21 DEFS+=$(static_defs)
22 modules=$(filter-out $(addprefix modules/, \
23                         $(exclude_modules) $(static_modules)), \
24                         $(wildcard modules/*))
25 modules_names=$(shell echo $(modules)| \
26                                 sed -e 's/modules\/\([^/ ]*\)\/*/\1.so/g' )
27 #modules_names=$(patsubst modules/%, %.so, $(modules))
28 modules_full_path=$(join  $(modules), $(addprefix /, $(modules_names)))
29
30 NAME=ser
31
32 ALLDEP=Makefile Makefile.sources Makefile.defs Makefile.rules
33
34 #include general defs (like CC, CFLAGS  a.s.o)
35 include Makefile.defs
36
37 #export relevant variables to the sub-makes
38 export DEFS PROFILE CC  LD MKDEP MKTAGS CFLAGS LDFLAGS MOD_CFLAGS MOD_LDFLAGS
39 export LEX YACC YACC_FLAGS
40
41
42 # include the common rules
43 include Makefile.rules
44
45 #extra targets 
46
47 $(NAME): static_modules
48
49 lex.yy.c: cfg.lex $(ALLDEP)
50         $(LEX) $<
51
52 cfg.tab.c: cfg.y $(ALLDEP)
53         $(YACC) $(YACC_FLAGS) $<
54
55 .PHONY: all
56 all: $(NAME) modules
57
58
59
60 .PHONY: modules
61 modules:
62         -@for r in $(modules) "" ; do \
63                 if [ -n "$$r" ]; then \
64                         echo  "" ; \
65                         echo  "" ; \
66                         $(MAKE) -C $$r ; \
67                 fi ; \
68         done 
69
70 .PHONY: static_modules
71 static_modules:
72         -@echo "Extra objs: $(extra_objs)" 
73         -@for r in $(static_modules_path) "" ; do \
74                 if [ -n "$$r" ]; then \
75                         echo  "" ; \
76                         echo  "Making static module $r" ; \
77                         $(MAKE) -C $$r static ; \
78                 fi ; \
79         done 
80
81
82         
83 dbg: ser
84         gdb -command debug.gdb
85
86
87 tar: mantainer-clean 
88         tar -C .. -zcf ../$(NAME)-$(RELEASE)_src.tar.gz  $(notdir $(CURDIR)) 
89
90
91 install: all mk-install-dirs install-cfg install-bin install-modules \
92         install-doc install-man
93
94 .PHONY: dbinstall
95 dbinstall:
96         -@echo "Initializing ser database"
97         scripts/ser_mysql.sh create
98         -@echo "Done"
99
100 mk-install-dirs: $(cfg-prefix)/$(cfg-dir) $(bin-prefix)/$(bin-dir) \
101                         $(modules-prefix)/$(modules-dir) $(doc-prefix)/$(doc-dir) \
102                         $(man-prefix)/$(man-dir)/man8 $(man-prefix)/$(man-dir)/man5
103
104 $(cfg-prefix)/$(cfg-dir): 
105                 mkdir -p $(cfg-prefix)/$(cfg-dir)
106
107 $(bin-prefix)/$(bin-dir):
108                 mkdir -p $(bin-prefix)/$(bin-dir)
109
110 $(modules-prefix)/$(modules-dir):
111                 mkdir -p $(modules-prefix)/$(modules-dir)
112
113
114 $(doc-prefix)/$(doc-dir):
115                 mkdir -p $(doc-prefix)/$(doc-dir)
116
117 $(man-prefix)/$(man-dir)/man8:
118                 mkdir -p $(man-prefix)/$(man-dir)/man8
119
120 $(man-prefix)/$(man-dir)/man5:
121                 mkdir -p $(man-prefix)/$(man-dir)/man5
122
123 install-cfg:
124                 $(INSTALL-CFG) etc/ser.cfg $(cfg-prefix)/$(cfg-dir)
125
126 install-bin:
127                 $(INSTALL-BIN) ser $(bin-prefix)/$(bin-dir)
128
129
130 install-modules:
131         -@for r in $(modules_full_path) "" ; do \
132                 if [ -n "$$r" ]; then \
133                         $(INSTALL-MODULES)  $$r  $(modules-prefix)/$(modules-dir) ; \
134                 fi ; \
135         done 
136
137
138 install-doc:
139         $(INSTALL-DOC) README $(doc-prefix)/$(doc-dir)
140
141 install-man:
142         $(INSTALL-MAN)  ser.8 $(man-prefix)/$(man-dir)/man8
143         $(INSTALL-MAN)  ser.cfg.5 $(man-prefix)/$(man-dir)/man5
144