pkg/kamailio/fedora/16: Updated rel in .spec to dev2
[sip-router] / Makefile.libs
1 #
2 # $Id$
3 #
4 # module Makefile
5 #(to be included from each library makefile)
6 #
7 # History:
8 # --------
9 #  2007-03-16  created by andrei
10 #  2007-05-19  rebuild on changed install name on darwin  (andrei)
11 #  2008-06-27  make cfg / config.mak support (andrei)
12
13 # NAME, MAJOR_VER and MINOR_VER should be pre-defined in the library 
14 # makefile
15 #
16
17 ifneq ($(makefile_defs_included), 1)
18 $(error "the local makefile does not include Makefile.defs!")
19 endif
20
21 ifneq   (,$(filter install% %install install, $(MAKECMDGOALS)))
22 compile_for_install:=yes
23 ifeq ($(quiet),verbose)
24 $(info install mode)
25 endif # verbose
26 endif
27
28 ifeq ($(NAME),)
29 $(error NAME, MAJOR_VER and MINOR_VER must be defined in the library Makefile)
30 endif
31 ifeq ($(MAJOR_VER),)
32 $(error NAME, MAJOR_VER and MINOR_VER must be defined in the library Makefile)
33 endif
34 ifeq ($(MINOR_VER),)
35 $(error NAME, MAJOR_VER and MINOR_VER must be defined in the library Makefile)
36 endif
37 ifeq ($(BUGFIX_VER),)
38         BUGFIX_VER:=0
39 endif
40
41 # if config was not loaded (makefile_defs!=1) ignore
42 # the rest of makefile and try only to remake the config
43 ifeq ($(makefile_defs),1)
44
45
46 ifeq ($(OS), darwin)
47         LIB_NAME:= \
48         $(LIB_PREFIX)$(NAME).$(MAJOR_VER).$(MINOR_VER).$(BUGFIX_VER)$(LIB_SUFFIX)
49         LIB_RUNTIME_NAME:=$(LIB_PREFIX)$(NAME).$(MAJOR_VER)$(LIB_SUFFIX)
50         LIB_LINK_NAME:=$(LIB_PREFIX)$(NAME)$(LIB_SUFFIX)
51         # on darwin we add an extra dependency on a file containing the install 
52         # name (we want to rebuild the library if the install path changed)
53         # this is needed because instead of a rpath link option, on darwin the
54         # path to a linked library is taken from the library itself (the path
55         # is built-in the library)
56         LIBINAME_F:=libiname.lst
57         NAME_LD_FLAGS= -compatibility_version $(MAJOR_VER).$(MINOR_VER) \
58                                         -current_version $(MAJOR_VER).$(MINOR_VER).$(BUGFIX_VER) \
59                                         -install_name $(LIB_INSTALL_NAME)
60
61 else
62         LIB_NAME:=$(LIB_PREFIX)$(NAME)$(LIB_SUFFIX).$(MAJOR_VER).$(MINOR_VER)
63         LIB_RUNTIME_NAME:=$(LIB_PREFIX)$(NAME)$(LIB_SUFFIX).$(MAJOR_VER)
64         LIB_LINK_NAME:=$(LIB_PREFIX)$(NAME)$(LIB_SUFFIX)
65         NAME_LD_FLAGS= $(LIB_SONAME)$(LIB_RUNTIME_NAME)
66         LIBINAME_F:=
67 endif
68
69 ifeq    ($(strip $(compile_for_install)),yes)
70         LIB_INSTALL_NAME:=$(lib_target)/$(LIB_RUNTIME_NAME)
71 else
72         LIB_INSTALL_NAME:=$(shell pwd)/$(LIB_RUNTIME_NAME)
73 endif
74
75
76 COREPATH ?=../..
77
78 ALLDEP=Makefile $(COREPATH)/Makefile.sources $(COREPATH)/Makefile.rules \
79  $(COREPATH)/Makefile.libs $(COREPATH)/config.mak
80
81
82 ifeq ($(MAKELEVEL), 0)
83 # make called directly in the library dir!
84 else
85 # called by the main Makefile
86
87 ALLDEP+=$(COREPATH)/Makefile $(COREPATH)/Makefile.defs
88
89 endif
90
91 include $(COREPATH)/Makefile.sources
92
93
94 CFLAGS:=$(LIB_CFLAGS)
95 LDFLAGS:=$(LIB_LDFLAGS) $(NAME_LD_FLAGS)
96 NAME:=$(LIB_NAME)
97
98
99 include $(COREPATH)/Makefile.targets
100 include $(COREPATH)/Makefile.rules
101
102 ifeq    (,$(filter clean %clean clean% proper %proper proper%, $(MAKECMDGOALS)))
103 ifneq ($(strip $(LIBINAME_F)),)
104 -include $(LIBINAME_F)
105 ifneq ($(strip $(LIB_INSTALL_NAME)), $(strip $(COMPILED_INAME)))
106 $(shell rm -f $(LIBINAME_F))
107 endif
108 endif
109 endif
110
111 $(NAME): $(LIB_RUNTIME_NAME) $(LIB_LINK_NAME) $(LIBINAME_F)
112
113 $(LIB_RUNTIME_NAME):
114         -@ln -s $(LIB_NAME) $(LIB_RUNTIME_NAME)
115
116 $(LIB_LINK_NAME):
117 ifeq ($(OS), freebsd)
118         -@ln -s $(LIB_RUNTIME_NAME) $(LIB_LINK_NAME)
119 else
120         -@ln -s $(LIB_NAME) $(LIB_LINK_NAME)
121 endif
122
123 .PHONY: link_clean
124 link_clean:
125         -@rm -f $(LIB_RUNTIME_NAME)
126         -@rm -f $(LIB_LINK_NAME)
127
128 local-clean: link_clean
129
130 .PHONY: libiname_clean
131 libiname_clean:
132         -@rm -f libiname.lst
133
134 local-clean: libiname_clean
135
136 $(lib_prefix)/$(lib_dir):
137         mkdir -p $(lib_prefix)/$(lib_dir)
138
139 .PHONY: install
140 install: $(LIB_NAME) $(lib_prefix)/$(lib_dir) $(LIBINAME_F)
141 ifeq ($(OS), freebsd)
142         $(INSTALL_TOUCH) $(lib_prefix)/$(lib_dir)/$(LIB_RUNTIME_NAME)
143         $(INSTALL_LIB) $(LIB_NAME) $(lib_prefix)/$(lib_dir)/$(LIB_RUNTIME_NAME)
144         rm -f $(lib_prefix)/$(lib_dir)/$(LIB_LINK_NAME)
145         cd $(lib_prefix)/$(lib_dir) ; ln -s $(LIB_RUNTIME_NAME) $(LIB_LINK_NAME)
146 else
147         $(INSTALL_TOUCH) $(lib_prefix)/$(lib_dir)/$(LIB_NAME)
148         $(INSTALL_LIB) $(LIB_NAME) $(lib_prefix)/$(lib_dir)
149         rm -f $(lib_prefix)/$(lib_dir)/$(LIB_RUNTIME_NAME) \
150                         $(lib_prefix)/$(lib_dir)/$(LIB_LINK_NAME) 
151         cd $(lib_prefix)/$(lib_dir) ; ln -s $(LIB_NAME) $(LIB_RUNTIME_NAME) 
152         cd $(lib_prefix)/$(lib_dir) ; ln -s $(LIB_NAME) $(LIB_LINK_NAME) 
153 endif
154
155
156 .PHONY:install-if-newer
157 install-if-newer: $(lib_prefix)/$(lib_dir)/$(LIB_RUNTIME_NAME)
158
159 $(lib_prefix)/$(lib_dir)/$(LIB_RUNTIME_NAME): $(LIB_NAME) $(LIBINAME_F)
160         @$(MAKE) install
161
162
163 ifneq ($(strip $(LIBINAME_F)),)
164 $(LIBINAME_F): $(ALLDEP)
165         @echo "COMPILED_INAME:=$(LIB_INSTALL_NAME)" > $(LIBINAME_F)
166 endif
167
168 endif # ifeq ($(makefile_defs),1)
169 include $(COREPATH)/Makefile.cfg