build system: Remove SVN ID and history
[sip-router] / Makefile.utils
1 # Kamailio build system
2 #
3 # utils Makefile
4 #(to be included from each util/ subdirectory)
5 #
6
7 #
8 # Variables that should be defined in the util Makefiles, prior to including
9 # this makefile:
10 #
11 # NAME - util binary name, with no path (MUST).
12 #
13 # COREPATH - path to the main/core directory (OPTIONAL, default ../..)
14 #
15 # DEFS - local extra defines (OPTIONAL)
16 #
17 # LIBS - local extra libs (OPTIONAL)
18 #
19 # SER_LIBS - ser/sr libs that should be compiled, linked against and installed
20 #           along the binary. The format is: <path>/<shortname>, e.g.
21 #           SER_LIBS=../../lib/srdb2/srdb2 for libsrdb2 with the sources
22 #            in ../../lib/srdb2. (OPTIONAL)
23 #
24
25 UTIL_NAME=$(NAME)
26
27 # default path to the core makefiles
28 COREPATH ?=../..
29
30 ALLDEP=Makefile $(COREPATH)/Makefile.sources $(COREPATH)/Makefile.rules \
31  $(COREPATH)/Makefile.utils $(COREPATH)/Makefile.dirs $(COREPATH)/config.mak
32
33 #override modules value, an util cannot have submodules
34 override modules=
35 override static_modules=
36 override static_modules_path=
37
38 # temporary def (visible only in the util makefile, not exported)
39 DEFS += -DMOD_NAME="utils/$(UTIL_NAME)"
40
41 ifneq ($(makefile_defs_included),1)
42 $(error "the local makefile does not include Makefile.defs!")
43 endif
44
45 ifeq ($(MAKELEVEL), 0)
46 # make called directly in the module dir!
47
48 else
49 # called by the main Makefile
50
51 ALLDEP+=$(COREPATH)/Makefile
52
53 endif
54
55 include $(COREPATH)/Makefile.sources
56
57
58 # if config was not loaded (makefile_defs!=1) ignore
59 # the rest of makefile and try only to remake the config
60 ifeq ($(makefile_defs),1)
61
62 # set CFLAGS & LDFLAGS
63 CFLAGS:=$(UTILS_CFLAGS)
64 LDFLAGS:=$(UTILS_LDFLAGS)
65
66 err_fail?=1
67
68 include $(COREPATH)/Makefile.dirs
69 include $(COREPATH)/Makefile.targets
70 include $(COREPATH)/Makefile.rules
71 include $(COREPATH)/Makefile.shared
72
73 # default: if not overwritten by the main Makefile, install in bin_dir
74 util_dst=$(bin_prefix)/$(bin_dir)
75
76 $(util_dst):
77                 mkdir -p $(util_dst)
78
79 modules:
80
81 .PHONY: install
82 .PHONY: install-libs
83 install: $(NAME) $(util_dst) install-libs install-util-man
84         $(INSTALL_TOUCH) $(util_dst)/$(NAME)
85         $(INSTALL_BIN)  $(NAME)  $(util_dst)
86
87 ifneq (,$(SER_LIBS))
88 install-libs:
89         @for lib in $(dir $(SER_LIBS)); do \
90                 $(call try_err, $(MAKE) -C "$${lib}" install-if-newer ) ;\
91         done; true
92
93 else
94 install-libs:
95
96 endif # $(SER_LIBS)
97
98 .PHONY: install-if-newer
99 install-if-newer: $(util_dst)/$(NAME)
100
101 $(util_dst)/$(NAME): $(NAME)
102         @$(MAKE) install
103
104 # README build rules
105 ifneq (,$(wildcard doc/Makefile))
106 #doc/Makefile present => we can generate README
107
108 README: doc/*.xml
109         $(MAKE) -C doc $(UTIL_NAME).txt
110         mv doc/$(UTIL_NAME).txt $@
111
112 else
113 # do nothing
114
115 README:
116 endif
117
118 #man page build rules
119 ifneq (,$(wildcard $(UTIL_NAME).xml))
120
121 $(UTIL_NAME).7: $(UTIL_NAME).xml
122         $(DOCBOOK) -s ../../doc/stylesheets/serdoc2man.xsl $<
123
124 man: $(UTIL_NAME).7
125
126 else
127
128 man:
129
130 endif
131
132 $(man_prefix)/$(man_dir)/man8:
133         mkdir -p $(man_prefix)/$(man_dir)/man8
134
135 .PHONY: install-util-man
136 #src-name man page install rules
137 ifneq (,$(wildcard $(UTIL_SRC_NAME).8))
138 install-util-man: $(man_prefix)/$(man_dir)/man8
139         sed -e "s#$(UTIL_SRC_NAME)#$(UTIL_NAME)#g" \
140                         -e "s#$(SRC_NAME)#$(MAIN_NAME)#g" \
141                         < $(UTIL_SRC_NAME).8 > $(man_prefix)/$(man_dir)/man8/$(UTIL_NAME).8
142         chmod 644  $(man_prefix)/$(man_dir)/man8/$(UTIL_NAME).8
143
144 else
145
146 install-util-man:
147
148 endif
149
150 endif # ifeq($(makefile_defs),1)
151
152 include $(COREPATH)/Makefile.cfg