5 #(to be included from each library makefile)
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)
13 # NAME, MAJOR_VER and MINOR_VER should be pre-defined in the library
17 ifneq ($(makefile_defs_included), 1)
18 $(error "the local makefile does not include Makefile.defs!")
21 ifneq (,$(filter install% %install install, $(MAKECMDGOALS)))
22 compile_for_install:=yes
23 ifeq ($(quiet),verbose)
29 $(error NAME, MAJOR_VER and MINOR_VER must be defined in the library Makefile)
32 $(error NAME, MAJOR_VER and MINOR_VER must be defined in the library Makefile)
35 $(error NAME, MAJOR_VER and MINOR_VER must be defined in the library Makefile)
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)
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)
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)
69 ifeq ($(strip $(compile_for_install)),yes)
70 LIB_INSTALL_NAME:=$(lib_target)/$(LIB_RUNTIME_NAME)
72 LIB_INSTALL_NAME:=$(shell pwd)/$(LIB_RUNTIME_NAME)
78 ALLDEP=Makefile $(COREPATH)/Makefile.sources $(COREPATH)/Makefile.rules \
79 $(COREPATH)/Makefile.libs $(COREPATH)/config.mak
82 ifeq ($(MAKELEVEL), 0)
83 # make called directly in the library dir!
85 # called by the main Makefile
87 ALLDEP+=$(COREPATH)/Makefile $(COREPATH)/Makefile.defs
91 include $(COREPATH)/Makefile.sources
95 LDFLAGS:=$(LIB_LDFLAGS) $(NAME_LD_FLAGS)
99 include $(COREPATH)/Makefile.targets
100 include $(COREPATH)/Makefile.rules
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))
111 $(NAME): $(LIB_RUNTIME_NAME) $(LIB_LINK_NAME) $(LIBINAME_F)
114 -@ln -s $(LIB_NAME) $(LIB_RUNTIME_NAME)
117 ifeq ($(OS), freebsd)
118 -@ln -s $(LIB_RUNTIME_NAME) $(LIB_LINK_NAME)
120 -@ln -s $(LIB_NAME) $(LIB_LINK_NAME)
125 -@rm -f $(LIB_RUNTIME_NAME)
126 -@rm -f $(LIB_LINK_NAME)
128 local-clean: link_clean
130 .PHONY: libiname_clean
134 local-clean: libiname_clean
136 $(lib_prefix)/$(lib_dir):
137 mkdir -p $(lib_prefix)/$(lib_dir)
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)
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)
156 .PHONY:install-if-newer
157 install-if-newer: $(lib_prefix)/$(lib_dir)/$(LIB_RUNTIME_NAME)
159 $(lib_prefix)/$(lib_dir)/$(LIB_RUNTIME_NAME): $(LIB_NAME) $(LIBINAME_F)
163 ifneq ($(strip $(LIBINAME_F)),)
164 $(LIBINAME_F): $(ALLDEP)
165 @echo "COMPILED_INAME:=$(LIB_INSTALL_NAME)" > $(LIBINAME_F)
168 endif # ifeq ($(makefile_defs),1)
169 include $(COREPATH)/Makefile.cfg