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