# Makefile for busybox
#
# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
#
# Licensed under GPLv2, see file LICENSE in this source tree.

lib-y:=

INSERT
lib-$(CONFIG_ARP)          += arp.o interface.o
lib-$(CONFIG_ARPING)       += arping.o
lib-$(CONFIG_BRCTL)        += brctl.o
lib-$(CONFIG_DNSD)         += dnsd.o
lib-$(CONFIG_ETHER_WAKE)   += ether-wake.o
lib-$(CONFIG_FAKEIDENTD)   += isrv_identd.o isrv.o
lib-$(CONFIG_FTPD)         += ftpd.o
lib-$(CONFIG_FTPGET)       += ftpgetput.o
lib-$(CONFIG_FTPPUT)       += ftpgetput.o
lib-$(CONFIG_HOSTNAME)     += hostname.o
lib-$(CONFIG_HTTPD)        += httpd.o
lib-$(CONFIG_IFCONFIG)     += ifconfig.o interface.o
lib-$(CONFIG_IFENSLAVE)    += ifenslave.o interface.o
lib-$(CONFIG_IFPLUGD)      += ifplugd.o
lib-$(CONFIG_IFUPDOWN)     += ifupdown.o
lib-$(CONFIG_INETD)        += inetd.o
lib-$(CONFIG_IP)           += ip.o
lib-$(CONFIG_IPCALC)       += ipcalc.o
lib-$(CONFIG_NAMEIF)       += nameif.o
lib-$(CONFIG_NC)           += nc.o
lib-$(CONFIG_NETSTAT)      += netstat.o
lib-$(CONFIG_NSLOOKUP)     += nslookup.o
lib-$(CONFIG_NTPD)         += ntpd.o
lib-$(CONFIG_PING)         += ping.o
lib-$(CONFIG_PING6)        += ping.o
lib-$(CONFIG_PSCAN)        += pscan.o
lib-$(CONFIG_ROUTE)        += route.o
lib-$(CONFIG_SLATTACH)     += slattach.o
lib-$(CONFIG_TC)           += tc.o
lib-$(CONFIG_TELNET)       += telnet.o
lib-$(CONFIG_TELNETD)      += telnetd.o
lib-$(CONFIG_TFTP)         += tftp.o
lib-$(CONFIG_TFTPD)        += tftp.o
lib-$(CONFIG_TRACEROUTE)   += traceroute.o
lib-$(CONFIG_TUNCTL)       += tunctl.o
lib-$(CONFIG_VCONFIG)      += vconfig.o
lib-$(CONFIG_WGET)         += wget.o
lib-$(CONFIG_ZCIP)         += zcip.o

lib-$(CONFIG_TCPSVD)       += tcpudp.o tcpudp_perhost.o
lib-$(CONFIG_UDPSVD)       += tcpudp.o tcpudp_perhost.o
