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

lib-$(CONFIG_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_UDHCPD)            += dhcpd.o arpping.o files.o leases.o \
                                   serverpacket.o static_leases.o

lib-$(CONFIG_DUMPLEASES)        += dumpleases.o
lib-$(CONFIG_DHCPRELAY)         += dhcprelay.o
lib-$(CONFIG_FEATURE_UDHCP_RFC3397) += domain_codec.o
