makefile: modules install obeys $(err_fail)
[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 #
18
19 MOD_NAME=$(NAME:.so=)
20
21 # allow placing modules in separate directory apart from ser core
22 COREPATH ?=../..
23
24 ALLDEP=Makefile $(COREPATH)/Makefile.sources $(COREPATH)/Makefile.rules \
25  $(COREPATH)/Makefile.modules $(COREPATH)/Makefile.dirs $(COREPATH)/config.mak
26
27 #override modules value, a module cannot have submodules
28 override modules=
29 override static_modules=
30 override static_modules_path=
31
32 # should be set in the Makefile of each module
33 # INCLUDES += -I$(COREPATH)
34
35 # temporary def (visible only in the module, not exported)
36 DEFS += -DMOD_NAME='"$(MOD_NAME)"'
37
38 ifneq ($(makefile_defs_included),1)
39 $(error "the local makefile does not include Makefile.defs!")
40 endif
41
42 ifeq ($(MAKELEVEL), 0)
43 # make called directly in the module dir!
44
45 #$(warning "you should run make from the main ser directory")
46
47 else
48 # called by the main Makefile
49
50 ALLDEP+=$(COREPATH)/Makefile
51
52 endif
53
54 include $(COREPATH)/Makefile.sources
55
56
57 # if config was not loaded (makefile_defs!=1) ignore
58 # the rest of makefile and try only to remake the config
59 ifeq ($(makefile_defs),1)
60
61 ifeq (,$(filter $(MOD_NAME), $(static_modules)))
62 CFLAGS:=$(MOD_CFLAGS)
63 LDFLAGS:=$(MOD_LDFLAGS)
64 endif
65
66
67 err_fail?=1
68
69 include $(COREPATH)/Makefile.dirs
70 include $(COREPATH)/Makefile.targets
71 include $(COREPATH)/Makefile.rules
72 include $(COREPATH)/Makefile.shared
73
74 # default: if not overwritten by the main Makefile, install in modules
75 mods_dst=$(modules_prefix)/$(modules_dir)/modules
76
77 $(mods_dst):
78                 mkdir -p $(mods_dst)
79
80 LIBS:=$(filter-out -ldl -lresolv, $(LIBS))
81
82
83 .PHONY: install
84 .PHONY: install-libs
85 install: $(NAME) $(mods_dst) install-libs
86         $(INSTALL_TOUCH) $(mods_dst)/$(NAME)
87         $(INSTALL_MODULES)  $(NAME)  $(mods_dst)
88
89 install-libs:
90         @for lib in $(dir $(SER_LIBS)); do \
91                 $(call try_err, $(MAKE) -C "$${lib}" install-if-newer ) ;\
92         done
93
94 # README build rules
95 ifneq (,$(wildcard doc/Makefile))
96 #doc/Makefile present => we can generate README
97
98 README: doc/*.xml
99         $(MAKE) -C doc $(MOD_NAME).txt
100         mv doc/$(MOD_NAME).txt $@
101
102 else
103 # do nothing
104
105 README:
106 endif
107
108 #man page build rules
109 ifneq (,$(wildcard $(MOD_NAME).xml))
110
111 $(MOD_NAME).7: $(MOD_NAME).xml
112         docbook2x-man -s ../../doc/stylesheets/serdoc2man.xsl $<
113
114 man: $(MOD_NAME).7
115
116 else
117
118 man:
119
120 endif
121
122 endif # ifeq($(makefile_defs),1)
123
124 include $(COREPATH)/Makefile.cfg