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

lib-y:=
lib-$(CONFIG_APP_UDHCPC)	+= common.o options.o packet.o pidfile.o \
				   signalpipe.o socket.o
lib-$(CONFIG_APP_UDHCPD)	+= common.o options.o packet.o pidfile.o \
				   signalpipe.o socket.o
lib-$(CONFIG_APP_UDHCPC)	+= dhcpc.o clientpacket.o clientsocket.o \
				   script.o
lib-$(CONFIG_APP_UDHCPD)	+= dhcpd.o arpping.o files.o leases.o \
				   serverpacket.o static_leases.o
lib-$(CONFIG_APP_DUMPLEASES)	+= dumpleases.o
lib-$(CONFIG_APP_DHCPRELAY)     += dhcprelay.o
