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

lib-y:=
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_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_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
