| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504 | # Makefile for uClibc## Copyright (C) 2000-2008 Erik Andersen <andersen@uclibc.org>## Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.##--------------------------------------------------------------# You shouldn't need to mess with anything beyond this point...#--------------------------------------------------------------clean_targets := clean realclean distclean \	objclean-y headers_clean-y CLEAN_utilsnoconfig_targets := menuconfig config oldconfig silentoldconfig randconfig \	defconfig allyesconfig allnoconfig \	release dist tags helpinclude $(top_srcdir)Rules.maksub_headers := headersifndef KCONFIG_CONFIGKCONFIG_CONFIG := $(top_builddir).configendifexport KCONFIG_CONFIGifeq ($(HAVE_DOT_CONFIG),y)all: pregen libslibs: pregen# In this section, we need .config-include $(top_builddir).config.cmdelse # ifeq ($(HAVE_DOT_CONFIG),y)all: menuconfigheaders:	@echo "Need to make a config file first, run: make menuconfig"	@falseendif # ifeq ($(HAVE_DOT_CONFIG),y)include $(top_srcdir)ldso/Makefile.ininclude $(top_srcdir)libcrypt/Makefile.ininclude $(top_srcdir)libintl/Makefile.ininclude $(top_srcdir)libm/Makefile.ininclude $(top_srcdir)libnsl/Makefile.ininclude $(top_srcdir)libresolv/Makefile.ininclude $(top_srcdir)libutil/Makefile.ininclude $(top_srcdir)libpthread/Makefile.ininclude $(top_srcdir)librt/Makefile.ininclude $(top_srcdir)libubacktrace/Makefile.ininclude $(top_srcdir)extra/locale/Makefile.in# last included to catch all the objects added by others (locales/threads)include $(top_srcdir)libc/Makefile.inconf := $(top_builddir)extra/config/confmconf := $(top_builddir)extra/config/mconfifeq ($(HAVE_DOT_CONFIG),y)# If the .config changes then we have to make sure that our includes are# updated properly. This would normally work by saying that the headers# have uClibc_config.h as prerequisite but since we _symlink_ the headers# and do not (?) want to rely on 'make -L' we better update them right here,# on spot to save us from alot of hazzle.$(top_builddir)include/bits/uClibc_config.h: $(conf) $(KCONFIG_CONFIG) $(top_srcdir)extra/scripts/conf-header.sh | $(top_builddir)include/bits $(top_builddir)include/config	@$(disp_gen)	$(Q)@$< -s $(top_srcdir)extra/Configs/Config.in	$(Q)$(top_srcdir)extra/scripts/conf-header.sh $(KCONFIG_CONFIG) > $@	$(Q)$(MAKE) headers-y# The above doesn't work for threads, though. Just using check-symlinks for now.# XXX: FIXME: this is uglyMAKEFLAGS += -L$(top_builddir)include/config/linuxthreads/old.h $(top_builddir)include/config/linuxthreads/new.h:	@true# For the moment, we have to keep re-running this target# because the fix includes scripts rely on pre-processers# in order to generate the headers correctly :(.  That# means we can't use the $(HOSTCC) in order to get the# correct output.ifeq ($(ARCH_USE_MMU),y)export header_extra_args =elseexport header_extra_args = -nendifHEADERS_BITS_COMMON := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/common/bits/*.h))HEADERS_BITS_ARCH   := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/*.h))HEADERS_BITS_SUBARCH :=ifneq ($(TARGET_SUBARCH),)HEADERS_BITS_SUBARCH := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(TARGET_SUBARCH)/*.h))endifHEADERS_BITS_COMMON := $(filter-out $(HEADERS_BITS_ARCH) $(HEADERS_BITS_SUBARCH) $(HEADERS_BITS_PTHREAD),$(HEADERS_BITS_COMMON))HEADERS_SYS_COMMON := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/common/sys/*.h))HEADERS_SYS_ARCH := $(notdir $(wildcard $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/sys/*.h))HEADERS_SYS_COMMON := $(filter-out $(HEADERS_SYS_ARCH),$(HEADERS_SYS_COMMON))ALL_HEADERS_COMMON       := $(top_builddir)include/fpu_control.h \				$(top_builddir)include/dl-osinfo.h \				$(top_builddir)include/hp-timing.hALL_HEADERS_BITS_COMMON  := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_COMMON))ALL_HEADERS_BITS_ARCH    := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_ARCH))ifneq ($(TARGET_SUBARCH),)ALL_HEADERS_BITS_SUBARCH := $(addprefix $(top_builddir)include/bits/,$(HEADERS_BITS_SUBARCH))elseALL_HEADERS_BITS_SUBARCH :=endifALL_HEADERS_SYS_COMMON   := $(addprefix $(top_builddir)include/sys/,$(HEADERS_SYS_COMMON))ALL_HEADERS_SYS_ARCH     := $(addprefix $(top_builddir)include/sys/,$(HEADERS_SYS_ARCH))target-headers-sysdep := \	$(ALL_HEADERS_COMMON) \	$(ALL_HEADERS_BITS_COMMON) \	$(ALL_HEADERS_BITS_ARCH) \	$(ALL_HEADERS_BITS_SUBARCH) \	$(ALL_HEADERS_SYS_COMMON) \	$(ALL_HEADERS_SYS_ARCH) \	$(ALL_HEADERS_BITS_PTHREAD)$(top_builddir)include/fpu_control.h:	@$(disp_ln)	$(Q)[ -r $(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) ] && \		$(LN) -fs $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@ || \		$(LN) -fs $(call rel_srcdir)libc/sysdeps/linux/common/$(@F) $@$(top_builddir)include/dl-osinfo.h $(top_builddir)include/hp-timing.h:	$(do_ln) $(call rel_srcdir)libc/sysdeps/linux/common/$(@F) $@$(ALL_HEADERS_BITS_COMMON):	$(do_ln) $(call rel_srcdir)libc/sysdeps/linux/common/bits/$(@F) $@$(ALL_HEADERS_BITS_ARCH):	$(do_ln) $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(@F) $@ifneq ($(TARGET_SUBARCH),)$(ALL_HEADERS_BITS_SUBARCH):	$(do_ln) $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/bits/$(TARGET_SUBARCH)/$(@F) $@endififneq ($(strip $(ALL_HEADERS_SYS_COMMON)),)$(ALL_HEADERS_SYS_COMMON):	$(do_ln) $(call rel_srcdir)libc/sysdeps/linux/common/sys/$(@F) $@endififneq ($(strip $(ALL_HEADERS_SYS_ARCH)),)$(ALL_HEADERS_SYS_ARCH):	$(do_ln) $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/sys/$(@F) $@endif$(target-headers-sysdep) $(pregen-headers-y): | $(top_builddir)include/bits $(top_builddir)include/sysHEADERCLEAN_common:	$(do_rm) $(ALL_HEADERS_COMMON)headers_clean-y += HEADERCLEAN_common# The headers. Arch specific headers are specified via ARCH_HEADERS in# libc/sysdeps/linux/$(TARGET_ARCH)/Makefile.arch which appends those via# libc/sysdeps/linux/Makefile.commonarch to headers-yheaders-y += $(target-headers-sysdep)headers: $(top_builddir)include/bits/uClibc_config.h | subdirssubdirs: $(addprefix $(top_builddir),$(subdirs))pregen-headers: $(top_builddir)include/bits/sysnum.h $(pregen-headers-y)pregen: headers pregen-headers	$(Q)$(if $(UCLIBC_HAS_LOCALE),$(MAKE) -C extra/locale locale_headers)$(top_builddir)include/bits/sysnum.h: $(top_srcdir)extra/scripts/gen_bits_syscall_h.sh | $(top_builddir)include/bits	@$(disp_gen)	$(Q)set -e; \	tmp=`mktemp $(top_builddir)include/bits/sysnum.h.XXXXXX 2>/dev/null || true`; \	[ -z "$$tmp" ] && tmp='$(top_builddir)include/bits/sysnum.h.new'; \	KERNEL_HEADERS="${KERNEL_HEADERS}" top_builddir="$(top_builddir)" CC="$(CC) $(CPU_CFLAGS)" $(SHELL) $< > $$tmp; \	if cmp $(top_builddir)include/bits/sysnum.h $$tmp >/dev/null 2>&1; then \		$(RM) $$tmp; \	else \		mv -f $$tmp $(top_builddir)include/bits/sysnum.h; \	fi	@# Ugly linux specific hack..	$(Q)if grep -q __NR_ $@; then true; else \		rm -f $@; \		echo "ERROR: Could not generate syscalls."; \		echo "Make sure that you have proper kernel headers."; \		echo "Your .config in KERNEL_HEADERS=\"\" was set to:"; \		echo "${KERNEL_HEADERS}"; \		exit 1; \	fi.PHONY: $(LOCAL_INSTALL_PATH)$(LOCAL_INSTALL_PATH):	$(Q)$(MAKE) PREFIX=$(shell pwd)/$(LOCAL_INSTALL_PATH) RUNTIME_PREFIX=/ \	DEVEL_PREFIX=/usr/ \	HOSTCC="$(HOSTCC)" \	installinstall: install_runtime install_devRUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB=$(shell $(top_srcdir)extra/scripts/relative_path.sh $(DEVEL_PREFIX)$(MULTILIB_DIR) $(RUNTIME_PREFIX)$(MULTILIB_DIR))startfiles: $(crt-y)$(top_builddir)extra/scripts/unifdef: |$(top_builddir)extra/scripts$(top_builddir)extra/scripts/unifdef: $(top_srcdir)extra/scripts/unifdef.c	$(hcompile.u)# Installs header files.# a "y" here means the feature is enabled and so we should *not* rm it.# if the option expands to nothing though, we can punt the headers.HEADERS_RM- := \	dl-osinfo.h \	hp-timing.h \	_lfs_64.h \	bits/uClibc_arch_features.h \	bits/kernel_sigaction.h \	bits/kernel_stat.h \	bits/kernel_types.h \	bits/syscalls.h \	bits/syscalls-common.h \	bits/uClibc_fpmax.h \	bits/uClibc_uintmaxtostr.h \	bits/uClibc_uwchar.h \	bits/uClibc_va_copy.h \	bits/sigcontextinfo.h \	bits/stackinfo.h \	tls.h \	rpc/des_crypt.h \	rpc/key_prot.h \	rpc/rpc_des.hifeq ($(UCLIBC_STRICT_HEADERS),y)HEADERS_RM- += sgtty.hendifHEADERS_RM-$(HAVE_SHARED)                    += dlfcn.h bits/dlfcn.hHEADERS_RM-$(PTHREADS_DEBUG_SUPPORT)         += thread_db.hHEADERS_RM-$(UCLIBC_HAS_BSD_ERR)             += err.hHEADERS_RM-$(UCLIBC_HAS_CRYPT)               += crypt.hHEADERS_RM-$(UCLIBC_HAS_EPOLL)               += sys/epoll.hHEADERS_RM-$(UCLIBC_HAS_FENV)                += fenv.h bits/fenv.h bits/fenvinline.hHEADERS_RM-$(UCLIBC_HAS_FLOATS)              += complex.h fpu_control.h ieee754.h \	math.h \	tgmath.h \	bits/math*.hHEADERS_RM-$(findstring y,$(UCLIBC_HAS_FTW)$(UCLIBC_HAS_NFTW))  += ftw.hHEADERS_RM-$(UCLIBC_HAS_FTS)                 += fts.hHEADERS_RM-$(UCLIBC_HAS_GETTEXT_AWARENESS)   += libintl.hHEADERS_RM-$(UCLIBC_HAS_GLIBC_CUSTOM_PRINTF) += printf.hHEADERS_RM-$(UCLIBC_HAS_GLOB)                += glob.hHEADERS_RM-$(UCLIBC_HAS_GNU_ERROR)           += error.hHEADERS_RM-$(UCLIBC_HAS_GNU_GETOPT)$(UCLIBC_HAS_GETOPT_LONG) += getopt.hHEADERS_RM-$(UCLIBC_HAS_IPV6)                += netinet/ip6.h netinet/icmp6.hHEADERS_RM-$(UCLIBC_HAS_BACKTRACE)           += execinfo.hHEADERS_RM-$(UCLIBC_HAS_LOCALE)              += iconv.h bits/uClibc_ctype.hHEADERS_RM-$(UCLIBC_HAS_PTY)                 += pty.hHEADERS_RM-$(UCLIBC_HAS_REALTIME)            += mqueue.h bits/mqueue.h sched.h \	bits/sched.h \	semaphore.hHEADERS_RM-$(UCLIBC_HAS_REGEX)               += regex.h regexp.hHEADERS_RM-$(UCLIBC_HAS_RPC)                 += rpcHEADERS_RM-$(UCLIBC_HAS_SHADOW)              += shadow.hHEADERS_RM-$(UCLIBC_HAS_SOCKET)              += sys/socket.h bits/socket.h sys/socketvar.hHEADERS_RM-$(UCLIBC_HAS_SYSLOG)              += syslog.h sys/syslog.h bits/syslog*.hHEADERS_RM-$(UCLIBC_HAS_THREADS)             += *thread*.h semaphore.h \	bits/*thread*.h \	bits/initspin.hHEADERS_RM-$(UCLIBC_HAS_THREADS_NATIVE)      += atomic.h bits/atomic.hHEADERS_RM-$(UCLIBC_HAS_UTMPX)               += bits/utmpx.h utmpx.hHEADERS_RM-$(UCLIBC_HAS_WCHAR)               += wchar.h wctype.hHEADERS_RM-$(UCLIBC_HAS_WORDEXP)             += wordexp.hHEADERS_RM-$(UCLIBC_HAS_XATTR)               += sys/xattr.hHEADERS_RM-$(UCLIBC_HAS_XLOCALE)             += xlocale.hHEADERS_RM-$(UCLIBC_LINUX_SPECIFIC)          += sys/eventfd.h sys/fsuid.h \	bits/inotify.h \	sys/inotify.h \	sys/kdaemon.h \	sys/perm.h \	sys/personality.h \	sys/prctl.h \	sys/reboot.h \	sys/sendfile.h \	bits/signalfd.h \	sys/signalfd.h \	bits/statfs.h \	sys/statfs.h \	sys/swap.h \	sys/sysctl.h \	sys/sysinfo.h \	bits/timerfd.h \	sys/timerfd.h \	sys/vfs.hHEADERS_RM-$(UCLIBC_SUPPORT_AI_ADDRCONFIG)   += ifaddrs.hHEADERS_RM-$(UCLIBC_SV4_DEPRECATED)          += ustat.h sys/ustat.h bits/ustat.hHEADERS_RM-$(UCLIBC_SUSV3_LEGACY)            += sys/timeb.h regexp.hHEADERS_RM-$(UCLIBC_SUSV4_LEGACY)            += utime.h ucontext.hHEADERS_RM-$(UCLIBC_HAS_ADVANCED_REALTIME)   += spawn.hifneq ($(findstring install,$(MAKECMDGOALS)),)$(addprefix $(PREFIX)$(DEVEL_PREFIX),include $(MULTILIB_DIR)):	$(do_mkdir)# avoid warning about duplicate targets in rule or overridesifneq ($(abspath $(RUNTIME_PREFIX)$(MULTILIB_DIR)),$(abspath $(DEVEL_PREFIX)$(MULTILIB_DIR)))$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR):	$(do_mkdir)endifendifinstall_headers: headers $(top_builddir)extra/scripts/unifdef | $(PREFIX)$(DEVEL_PREFIX)include	@$(call disp_install,"include -> $(PREFIX)$(DEVEL_PREFIX)include")	$(Q)top_builddir=$(top_builddir) \	$(top_srcdir)extra/scripts/install_headers.sh \	include $(PREFIX)$(DEVEL_PREFIX)includeifneq ($(O),) # only run this step in O is set i.e. make O=/my/builddir/ ..	@$(call disp_install,"$(top_builddir)/include -> $(PREFIX)$(DEVEL_PREFIX)include")	$(Q)top_builddir=$(top_builddir) \	$(top_srcdir)extra/scripts/install_headers.sh \	$(top_builddir)/include $(PREFIX)$(DEVEL_PREFIX)includeendif	$(Q)cd $(PREFIX)$(DEVEL_PREFIX)include && $(RM) -r $(HEADERS_RM-)ifeq ($(UCLIBC_HAS_WCHAR),)	$(Q)cd $(PREFIX)$(DEVEL_PREFIX)include && mv -f wchar-stub.h wchar.helse	$(Q)cd $(PREFIX)$(DEVEL_PREFIX)include && $(RM) -f wchar-stub.hendif# Installs startfilesinstall_startfiles: startfiles | $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)	-$(INSTALL) -m 644 $(startfiles) $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/# Installs development library links.install_dev: install_headers install_runtime install_startfiles | $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)	-$(INSTALL) -m 644 $(top_builddir)lib/*.a $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/ifeq ($(HAVE_SHARED),y)	for i in `cd $(top_builddir) && find lib/ -type l -name 'lib[a-zA-Z]*.so' | \	$(SED) -e 's/lib\///'` ; do \		$(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)$$i.$(ABI_VERSION) \		$(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/$$i; \	doneifeq ($(HARDWIRED_ABSPATH),y)	if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_LIBNAME) ] ; then \		$(RM) $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \		$(SED) -e 's:$(NONSHARED_LIBNAME):$(DEVEL_PREFIX)$(MULTILIB_DIR)/$(NONSHARED_LIBNAME):' \		    -e 's:$(SHARED_LIBNAME):$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_LIBNAME):' \		    -e 's:$(UCLIBC_LDSO):$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UCLIBC_LDSO):' \		    $(top_builddir)lib/libc.so > $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \		$(SED) -i -e 's://:/:g' $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \	fielse	-$(INSTALL) -m 755 $(top_builddir)lib/libc.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/endififeq ($(UCLIBC_HAS_BACKTRACE),y)# Add the AS_NEEDED entry for libubacktrace.so	if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_LIBNAME) ] ; then \		echo "GROUP ( $(UBACKTRACE_ASNEEDED) )" >> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \	fiendififeq ($(UCLIBC_HAS_THREADS),y)ifneq ($(LINUXTHREADS_OLD),y)ifeq ($(HARDWIRED_ABSPATH),y)	if [ -f $(top_builddir)lib/libpthread.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/libpthread.so.$(ABI_VERSION) ] ; then \		$(RM) $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \		cp $(top_srcdir)extra/scripts/format.lds $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \		echo "GROUP ( $(RUNTIME_PREFIX)$(MULTILIB_DIR)/libpthread.so.$(ABI_VERSION) $(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread_nonshared.a )" \			>> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \		$(SED) -i -e 's://:/:g' $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \	fielse	-$(INSTALL) -m 755 $(top_builddir)lib/libpthread.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/endifendifendififeq ($(PTHREADS_DEBUG_SUPPORT),y)	$(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)libthread_db.so.1 \		$(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libthread_db.soendififeq ($(DOPIC),y)#	# If we build shared libraries then the static libs are PIC...#	# Make _pic.a symlinks to make mklibs.py and similar tools happy.	if [ -d $(top_builddir)lib ] ; then \		for i in `cd $(top_builddir) && find lib/ -type f -name 'lib*.a' | $(SED) -e 's/lib\///'` ; do \			$(LN) -sf $$i $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/`echo $$i \				| $(SED) -e 's/\.a$$/_pic.a/'`; \		done ; \	fiendifendififeq ($(UCLIBC_FORMAT_SHARED_FLAT),y)	for file in $(top_builddir)lib/lib*.gdb; do \		if test -f $$file; then \			$(INSTALL) -m 755 $$file $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR); \			$(INSTALL) -m 755 `echo $$file | $(SED) 's/\.gdb$$//'` \			  $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR); \		fi; \	doneendif# Installs run-time librariesinstall_runtime: all | $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)ifeq ($(HAVE_SHARED),y)	$(INSTALL) -m 755 $(top_builddir)lib/lib*-$(VERSION).so \		$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)	(cd $(top_builddir)lib && $(TAR) --exclude=$(UCLIBC_LDSO_NAME).so.lds -cf - *.so.*) \	| $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)	@if [ -x $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so ] ; then \		set -e; \		$(SHELL_SET_X); \		$(INSTALL) -m 755 $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so \			$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR); \	fiendifutils: | pregen	$(Q)$(MAKE) CROSS_COMPILE="$(CROSS_COMPILE)" CC="$(CC)" -C utils $@# Installs helper applications, such as 'ldd' and 'ldconfig'install_utils: utils	$(Q)$(MAKE) CROSS_COMPILE="$(CROSS_COMPILE)" CC="$(CC)" -C utils utils_installendif # ifeq ($(HAVE_DOT_CONFIG),y)hostutils: | pregen	$(Q)$(MAKE) CROSS_COMPILE="$(CROSS_COMPILE)" CC="$(CC)" HOSTCC="$(HOSTCC)" DOTHOST=.host -C utils $@install_hostutils: hostutils	$(Q)$(MAKE) CROSS_COMPILE="$(CROSS_COMPILE)" CC="$(CC)" HOSTCC="$(HOSTCC)" DOTHOST=.host -C utils utils_install$(addprefix $(top_builddir),include include/bits include/sys include/config lib extra/config/lxdialog extra/locale extra/scripts $(subdirs)):	$(do_mkdir)# configuration# ---------------------------------------------------------------------------$(conf) $(mconf): | $(top_builddir)include/config $(top_builddir)extra/config/lxdialog	$(Q)$(MAKE) -C extra/config $(@F)arch-defconfigs := $(notdir $(wildcard $(top_srcdir)extra/Configs/defconfigs/$(ARCH)/*_defconfig))menuconfig: $(mconf)	$(Q)$< extra/Configs/Config.inconfig: $(conf)	$(Q)$< extra/Configs/Config.inoldconfig: $(conf)	$(Q)$< -o extra/Configs/Config.insilentoldconfig: $(conf)	$(Q)$< -s extra/Configs/Config.inrandconfig: $(conf)	$(Q)$< -r extra/Configs/Config.inallyesconfig: $(conf)	$(Q)$< -y extra/Configs/Config.in	$(SED) -i -e "s/^DODEBUG=.*/# DODEBUG is not set/" \		-e "s/^DOASSERTS=.*/# DOASSERTS is not set/" \		-e "s/^SUPPORT_LD_DEBUG_EARLY=.*/# SUPPORT_LD_DEBUG_EARLY is not set/" \		-e "s/^SUPPORT_LD_DEBUG=.*/# SUPPORT_LD_DEBUG is not set/" \		-e "s/^UCLIBC_MJN3_ONLY=.*/# UCLIBC_MJN3_ONLY is not set/" \		$(KCONFIG_CONFIG)	$(Q)$< -o extra/Configs/Config.inallnoconfig: $(conf)	$(Q)$< -n extra/Configs/Config.incmd_defconfig = $(Q)$< -D extra/Configs/defconfigs/$(ARCH)/$@ extra/Configs/Config.indefconfig: $(conf)   ; $(cmd_defconfig)%_defconfig: $(conf) ; $(cmd_defconfig)menuconfig-clean-y:	$(Q)$(MAKE) -C extra/config CLEAN_extra/config# The find here should continue to work as long as we are only symlinking# headers in to include/.  I don't see this changing to anything else, so# it should be fine.include_clean:	$(SECHO) "  CLEAN include"	$(Q)$(RM) -r $(top_builddir)include/bits	$(Q)find $(top_builddir)include/ -type l -exec rm -f {} +clean: include_clean	$(Q)$(RM) -r $(top_builddir)lib	@$(MAKE) -C utils CLEAN_utils	+$(MAKE) -s -C test clean	$(Q)$(RM) $(top_builddir)extra/scripts/unifdef	$(Q)$(RM) -r $(LOCAL_INSTALL_PATH)distclean: clean	-find . \( -name core -o -name \*.orig -o -name \*~ -o -name .\*.dep \) -exec $(RM) {} \;	$(RM) $(top_builddir).config $(top_builddir).config.old $(top_builddir).config.cmd	$(RM) $(top_builddir)extra/locale/*.tgz	$(MAKE) -C extra/config distcleandist release:	$(RM) ../uClibc-$(VERSION).tar	git archive --format=tar --prefix=uClibc-$(VERSION)/ HEAD \		> ../uClibc-$(VERSION).tar	cat ../uClibc-$(VERSION).tar | bzip2 -c9 > ../uClibc-$(VERSION).tar.bz2	cat ../uClibc-$(VERSION).tar | xz -e -c8 > ../uClibc-$(VERSION).tar.xz	du -b ../uClibc-$(VERSION).tar.{bz2,xz}test check: test_compile	$(Q)$(MAKE) -C testtest_compile: $(LOCAL_INSTALL_PATH)	$(Q)$(MAKE) -C test compile
 |