# 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 \
                                   signalpipe.o socket.o
lib-$(CONFIG_APP_UDHCPD)        += common.o options.o packet.o \
                                   signalpipe.o socket.o

lib-$(CONFIG_APP_UDHCPC)        += dhcpc.o clientpacket.o clientsocket.o \
                                   script.o

UDHCPC_NEEDS_ARPING-$(CONFIG_FEATURE_UDHCPC_ARPING) = y
lib-$(UDHCPC_NEEDS_ARPING-y)    += arpping.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
lib-$(CONFIG_FEATURE_UDHCP_RFC3397) += domain_codec.o
