# 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.

srcdir=$(top_srcdir)/networking/udhcp
objdir=$(top_builddir)/networking/udhcp

#ok, so I forgot how to do an or, but this is a quick and dirty hack
ifeq ($(strip $(CONFIG_UDHCPC)),y)
CONFIG_UDHCP_SHARED=y
else
ifeq ($(strip $(CONFIG_UDHCPD)),y)
CONFIG_UDHCP_SHARED=y
else
CONFIG_UDHCP_SHARED=n
endif
endif

UDHCP__SHARED_FILES:=common.c options.c packet.c pidfile.c signalpipe.c socket.c
UDHCP__UDHCPC_FILES:=dhcpc.c clientpacket.c clientsocket.c script.c
UDHCP__UDHCPD_FILES:=dhcpd.c arpping.c files.c leases.c serverpacket.c \
		static_leases.c
UDHCP__DUMPLEASES_FILES:=dumpleases.c

UDHCP-$(CONFIG_UDHCP_SHARED)    += $(UDHCP__SHARED_FILES)
UDHCP-$(CONFIG_UDHCPC)		+= $(UDHCP__UDHCPC_FILES)
UDHCP-$(CONFIG_UDHCPD)		+= $(UDHCP__UDHCPD_FILES)
UDHCP-$(CONFIG_DUMPLEASES)	+= $(UDHCP__DUMPLEASES_FILES)

UDHCP_SRC-y:=$(patsubst %,$(srcdir)/%,$(UDHCP-y))
UDHCP_SRC-a:=$(wildcard $(srcdir)/*.c)
APPLET_SRC-y+=$(UDHCP_SRC-y)
APPLET_SRC-a+=$(UDHCP_SRC-a)

UDHCP_INCLUDES:=$(srcdir)

#APPLETS_DEFINE-y+= -I$(UDHCP_INCLUDES) -DIN_BUSYBOX
#APPLETS_DEFINE-a+= -I$(UDHCP_INCLUDES) -DIN_BUSYBOX

CFLAGS-udhcp:= -I$(UDHCP_INCLUDES)

# bug in make-3.80 prevents this:
#define udhcp__flags
#CFLAGS-udhcp-$(1):=-DIN_BUSYBOX
#endef
#
#ifeq ($(CONFIG_UDHCP_SHARED),y)
#$(foreach f,$(UDHCP__SHARED_FILES),$(eval $(call udhcp__flags,$(f))))
#endif
#ifeq ($(CONFIG_UDHCPC),y)
#$(foreach f,$(UDHCP__UDHCPC_FILES),$(eval $(call udhcp__flags,$(f))))
#endif
#ifeq ($(CONFIG_UDHCPD),y)
#$(foreach f,$(UDHCP__UDHCPD_FILES),$(eval $(call udhcp__flags,$(f))))
#endif
#ifeq ($(CONFIG_DUMPLEASES),y)
#$(foreach f,$(UDHCP__DUMPLEASES_FILES),$(eval $(call udhcp__flags,$(f))))
#endif

ifeq ($(CONFIG_UDHCP_SHARED),y)
CFLAGS-udhcp-common.c:=-DIN_BUSYBOX
CFLAGS-udhcp-options.c:=-DIN_BUSYBOX
CFLAGS-udhcp-packet.c:=-DIN_BUSYBOX
CFLAGS-udhcp-pidfile.c:=-DIN_BUSYBOX
CFLAGS-udhcp-signalpipe.c:=-DIN_BUSYBOX
CFLAGS-udhcp-socket.c:=-DIN_BUSYBOX
endif
ifeq ($(CONFIG_UDHCPC),y)
CFLAGS-udhcp-dhcpc.c:=-DIN_BUSYBOX
CFLAGS-udhcp-clientpacket.c:=-DIN_BUSYBOX
CFLAGS-udhcp-clientsocket.c:=-DIN_BUSYBOX
CFLAGS-udhcp-script.c:=-DIN_BUSYBOX
endif
ifeq ($(CONFIG_UDHCPD),y)
CFLAGS-udhcp-dhcpd.c:=-DIN_BUSYBOX
CFLAGS-udhcp-arpping.c:=-DIN_BUSYBOX
CFLAGS-udhcp-files.c:=-DIN_BUSYBOX
CFLAGS-udhcp-leases.c:=-DIN_BUSYBOX
CFLAGS-udhcp-serverpacket.c:=-DIN_BUSYBOX
CFLAGS-udhcp-static_leases.c:=-DIN_BUSYBOX
endif
ifeq ($(CONFIG_DUMPLEASES),y)
CFLAGS-udhcp-dumpleases.c:=-DIN_BUSYBOX
endif


networking_udhcp_OBJ:=$(patsubst %.c,$(objdir)/%.o,$(UDHCP-y))

