1 ##############################################################################
3 # Makefile -- Master makefile for all libraries.
10 ##############################################################################
12 # Include architecture specific build rules.
18 ##############################################################################
22 ifeq ($(LIBCDIR),libc)
31 libcrypt_old: $(LIBCDIR)
32 ifeq ($(LIBCDIR),libc)
33 dir_base += libcrypt_old
35 dir_$(CONFIG_LIB_LIBCRYPT_OLD) += libcrypt_old
37 lib_libcrypt_old = libcrypt_old.a
38 inc_libcrypt_old = *.h,.
40 dir_$(CONFIG_LIB_ADNS) += adns
41 lib_adns = src/libadns.a
43 dir_$(CONFIG_LIB_FLEX) += flex
45 inc_flex = build/FlexLexer.h,.
47 dir_$(CONFIG_LIB_LIBSSL)+= libssl
48 lib_libssl = build/*.so* build/*.a
49 inc_libssl = build/include/*,.
51 dir_$(CONFIG_LIB_LIBGMP) += libgmp
52 lib_libgmp = build/install/lib/*.a
53 inc_libgmp = build/install/include/*.h,.
55 dir_$(CONFIG_LIB_LIBG) += libg
58 dir_$(CONFIG_LIB_LIBPAM) += libpam
59 lib_libpam = build/libpam*/.libs/*.a build/libpam*/.libs/*.so
60 inc_libpam = */include/security/*.h,security
62 dir_$(CONFIG_LIB_LIBPCAP) += libpcap
69 dir_$(CONFIG_LIB_ZLIB) += zlib
70 lib_zlib = libz.a* libz.so*
73 dir_$(CONFIG_LIB_LIBBZ2) += libbzip2
74 lib_libbzip2 = libbz2.a* libbz2.so*
75 inc_libbzip2 = bzlib.h,.
77 dir_$(CONFIG_LIB_LIBATM) += libatm
82 inc_libatm = src/include/atm*.h,.
84 dir_$(CONFIG_LIB_LIBNET) += Libnet
86 dir_$(CONFIG_LIB_LIBNETOLD) += libnet
90 dir_$(CONFIG_LIB_LIBJPEG) += libjpeg
94 dir_$(CONFIG_LIB_LIBUPNP) += libupnp
95 lib_libupnp = upnp/bin/*.so*
96 inc_libupnp = upnp/inc/upnp,.
98 dir_$(CONFIG_LIB_EXPAT) += expat
100 inc_expat = lib/expat.h,.
102 dir_$(CONFIG_LIB_LIBKRB5) += libkrb5
103 dep_libkrb5 = termcap
104 lib_libkrb5 = build/lib/*.so
106 build/include/com_err.h,. \
107 build/include/krb5/*.h,. \
108 build/include/gssapi/*.h,.
110 dir_$(CONFIG_LIB_CYRUSSASL) += libcyrussasl
111 dep_libcyrussasl = libkrb5
112 lib_libcyrussasl = build/lib/.libs/*.so
115 build/include/*.h,sasl \
117 dir_$(CONFIG_LIB_LIBLDAP) += libldap
118 dep_libldap = libcyrussasl
120 builddir/libraries/libldap/.libs/*.a \
121 builddir/libraries/liblber/.libs/*.a
124 builddir/include/*.h,.
126 dir_$(CONFIG_LIB_TINYTCL) += tinytcl
127 path_tinytcl = ../user/tinytcl
128 lib_tinytcl = *.a* *.so*
131 dir_$(CONFIG_LIB_LIBCCMALLOC) += libccmalloc
133 dir_$(CONFIG_LIB_ARES) += libares
134 lib_libares = build/*.a
135 inc_libares = ares.h,.
137 dir_$(CONFIG_LIB_LIBIDN) += libidn
138 lib_libidn = build/lib/.libs/libidn.a
139 inc_libidn = lib/*.h,.
141 dir_$(CONFIG_LIB_LIBLZO) += lzo
142 lib_lzo = build/src/.libs/*.a
143 inc_lzo = include/lzo,.
145 dir_$(CONFIG_LIB_LIBPCRE) += pcre
146 lib_pcre = builddir/.libs/*.a
151 dir_$(CONFIG_LIB_LIBLZMA) += liblzma
154 dir_$(CONFIG_LIB_OSIP2) += osip2
155 lib_osip2 = build/install/lib/*.a
156 inc_osip2 = build/install/include/osip*2,.
158 dir_$(CONFIG_LIB_LIBEFENCE) += libefence
161 dir_$(CONFIG_LIB_TERMCAP) += termcap
163 inc_termcap = termcap.h,.
165 dir_$(CONFIG_LIB_LIBSYSFS) += sysfsutils
166 lib_sysfsutils = build/lib/.libs/*.a
167 inc_sysfsutils = include/*.h,sysfs
169 dir_$(CONFIG_LIB_LIBNL) += libnl
170 lib_libnl = build/libnl*-install/lib/*.a* build/libnl*-install/lib/*.so*
171 inc_libnl = build/libnl*-install/include/libnl*/netlink*,.
173 dir_$(CONFIG_USER_TCL_LIBTCL) += tcl
174 path_tcl = ../user/tcl
177 dir_$(CONFIG_LIB_IPTABLES) += iptables
178 path_iptables = ../user/iptables
179 lib_iptables = install/lib/*.a install/lib/*.so*
180 inc_iptables = install/include/*,.
182 dir_$(CONFIG_LIB_LIBIBERTY) += libiberty
183 lib_libiberty = build/*.a
185 dir_$(CONFIG_LIB_BFD) += bfd
187 inc_bfd = build/bfd.h,.
189 dir_$(CONFIG_LIB_POPT) += popt
190 lib_popt = build/.libs/*.a
193 dir_$(CONFIG_LIB_LIBJUDY) += libjudy
195 src/obj/.libs/libJudy.a \
196 src/obj/.libs/libJudy.so
198 dir_$(CONFIG_LIB_CLASSPATH) += classpath
200 dir_$(CONFIG_LIB_BITVECTOR) += bitvector
202 inc_bitvector = *.h,.
204 dir_$(CONFIG_LIB_LIBNVRAM) += libnvram
205 lib_libnvram = *.so *.a
208 dir_$(CONFIG_LIB_LIBPNG) += libpng
213 dir_$(CONFIG_LIB_LIBXML2) += libxml2
214 lib_libxml2 = build/.libs/libxml2.so
216 include/libxml/*.h,libxml \
217 build/include/libxml/*.h,libxml
219 dir_$(CONFIG_LIB_NFNETLINK) += libnfnetlink
221 build/src/.libs/*.a* \
222 build/src/.libs/*.so* \
223 build/libnfnetlink.pc
224 inc_libnfnetlink = include/libnfnetlink,.
226 dir_$(CONFIG_LIB_NETFILTER_LOG) += libnetfilter_log
227 dep_libnetfilter_log = libnfnetlink
228 lib_libnetfilter_log = \
229 build/src/.libs/*.a* \
230 build/src/.libs/*.so* \
231 build/libnetfilter_log.pc
232 inc_libnetfilter_log = include/libnetfilter_log,.
234 dir_$(CONFIG_LIB_NETFILTER_CONNTRACK) += libnetfilter_conntrack
235 dep_libnetfilter_conntrack = libnfnetlink
236 lib_libnetfilter_conntrack = \
237 build/src/.libs/*.a* \
238 build/src/.libs/*.so* \
239 build/libnetfilter_conntrack.pc
240 inc_libnetfilter_conntrack = include/libnetfilter_conntrack,.
242 dir_$(CONFIG_LIB_PWLIB) += pwlib
245 dir_$(CONFIG_LIB_LIBOPENH323) += libopenh323
246 dep_libopenh323 = pwlib
248 dir_$(CONFIG_LIB_MINI_LIBINTL) += mini-libintl
249 inc_mini-libintl = libintl.h,.
252 dep_glib = libiconv mini-iconv libffi gettext mini-libintl
253 dep_libusb-compat = libusb
255 dep_dbus-glib = dbus glib
257 ifdef CONFIG_LIB_JSON_C
258 dep_libubox += json-c
261 dep_libfuse = mini-iconv libiconv
263 inc_libiconv = build/libiconv*-install/include/*.h,.
264 lib_libiconv = build/libiconv*-install/lib/*.a
266 inc_glib = build/glib*-install/include/*,.
267 lib_glib = build/glib*-install/lib/*.a \
268 build/glib*-install/lib/*.so
270 inc_libroxml = build/libroxml*-install/usr/include/*,.
271 lib_libroxml = build/libroxml*-install/usr/lib/*.a \
272 build/libroxml*-install/usr/lib/*.so
275 # dir 6, 7 and 8 reserved for Makefile.local
277 -include Makefile.local
279 # And build libraries in the prop directory last
280 dir_extra += $(ROOTDIR)/prop
282 include Makefile.auto
284 ##############################################################################
286 DIRS_y = $(sort $(dir_base) $(dir_y) $(dir_extra))
287 DIRS_all = $(dir_$(n)_n) $(dir_$(n)_) $(sort $(dir_base) $(dir_y) $(dir_n) $(dir_) $(dir_extra))
288 DIRPATH = $(if $(path_$(1)),$(path_$(1)),$(1))
290 ##############################################################################
292 # The dynamic linker library needs to be linked into lib via a different name
293 LD_LIB = $(ROOTDIR)/lib/uClibc/lib/ld-uClibc-0.9.29.so
294 LD_LIB_DEST = $(STAGEDIR)/lib/ld-linux.so.2
296 ##############################################################################
302 $(1): base $(dep_$(1))
305 $(foreach d,$(sort $(dir_y) $(dir_n) $(dir_)),$(eval $(call dep,$(d))))
308 base: $(dir_base) basepost
309 @ln -sf $(LD_LIB) $(LD_LIB_DEST)
311 $(dir_base): baseprep
313 basepost: $(dir_base)
317 mkdir -p $(STAGEDIR)/lib
318 $(MAKE) -j1 -C ../include || exit $$?
322 ifneq ($(findstring uClibc,$(LIBCDIR)),)
323 $(MAKE) -C $(LIBCDIR) install_headers PREFIX=$(STAGEDIR)/ DEVEL_PREFIX=uClibc/
327 $(dir_extra): base $(dir_y)
329 # the actual dir target
332 i=$(call DIRPATH,$@); [ ! -d $$i ] || ( touch $$i/.sgbuilt_lib && $(MAKE) $(SUBDIR_SMP_BUILD) -C $$i ) || exit $$?
334 for p in $(lib_$@); do \
336 for i in $(ROOTDIR)/lib/$(call DIRPATH,$@)/$$p; do \
337 [ ! -e "$$i" ] && continue; \
338 [ "`basename $$i`" = CVS ] && continue; \
339 [ -L "$(STAGEDIR)/lib/`basename $$i`" ] && continue; \
340 ln -s $$i $(STAGEDIR)/lib/.; \
341 echo "ln -s $$i $(STAGEDIR)/lib/."; \
345 for p in $(inc_$@); do \
346 src=$(ROOTDIR)/lib/$(call DIRPATH,$@)/`expr "$$p" : '\(.*\),.*'` ; \
347 dst=$(STAGEDIR)/include/`expr "$$p" : '.*,\(.*\)'` ; \
350 [ ! -e "$$i" ] && continue; \
351 [ "`basename $$i`" = CVS ] && continue; \
352 [ -L "$$dst/`basename $$i`" ] && continue; \
353 [ -d $$dst ] || mkdir $$dst; \
355 echo "ln -s $$i $$dst/."; \
360 touch $(@:_only=)/.sgbuilt_lib && $(MAKE) -j$(HOST_NCPU) $(SUBDIR_SMP_BUILD) -C $(@:_only=)
363 $(MAKE) -j1 -C $(@:_clean=) clean; rm -f $(@:_clean=)/.sgbuilt_lib; true
366 $(MAKE) $(SUBDIR_SMP_BUILD) -C $(@:_romfs=) romfs
368 ##############################################################################
370 # Not the best place to install these symlinks, but it will do for now
372 $(ROMFSINST) -e CONFIG_USER_FLATFSD_FLATFSD -s /etc/config/passwd /etc/passwd
373 $(ROMFSINST) -e CONFIG_USER_FLATFSD_FLATFSD -s /etc/config/group /etc/group
374 $(ROMFSINST) -e CONFIG_USER_FLATFSD_FLATFSD -s /etc/config/mtab /etc/mtab
375 $(ROMFSINST) -e CONFIG_USER_FLATFSD_FLATFSD -s /etc/config/fstab /etc/fstab
376 $(ROMFSINST) -e CONFIG_USER_FLATFSD_FLATFSD -s /etc/config/hosts /etc/hosts
377 $(ROMFSINST) -e CONFIG_USER_FLATFSD_FLATFSD -s /etc/config/resolv.conf /etc/resolv.conf
378 $(ROMFSINST) -e CONFIG_USER_FLATFSD_FLATFSD -e CONFIG_USER_BASH_BASH -s /etc/config/profile /etc/profile
379 $(ROMFSINST) -e CONFIG_USER_FLATFSD_FLATFSD -e CONFIG_USER_TINYLOGIN_SHADOWPASSWDS -s /etc/config/shadow /etc/shadow
380 for i in $(foreach d,$(DIRS_y),$(call DIRPATH,$d)) ; do \
381 [ ! -d $$i ] || $(MAKE) $(SUBDIR_SMP_BUILD) -C $$i romfs || exit $$? ; \
384 ##############################################################################
387 -for i in $(foreach d,$(DIRS_all),$(call DIRPATH,$d)); do \
388 if [ -f $$i/.sgbuilt_lib ]; then \
389 $(MAKE) -C $$i clean ; \
390 rm -f $$i/.sgbuilt_lib; \
394 ##############################################################################
397 -for i in $(foreach d,$(DIRS_all),$(call DIRPATH,$d)); do \
399 for j in $(sort $(foreach d,$(DIRS_y),$(call DIRPATH,$d))) ; do \
400 if [ $$i = $$j ]; then \
404 if [ $$found = 0 ]; then \
409 ##############################################################################