# 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/libiproute
objdir=$(top_builddir)/networking/libiproute

LIBIPROUTE-$(CONFIG_IP) += \
	ip_parse_common_args \
	ipaddress \
	iplink \
	iproute \
	iptunnel \
	libnetlink \
	ll_addr \
	ll_map \
	ll_proto \
	ll_types \
	rt_names \
	rtm_map \
	utils

LIBIPROUTE-$(CONFIG_IPADDR) += \
	ip_parse_common_args \
	ipaddress \
	libnetlink \
	ll_addr \
	ll_map \
	ll_types \
	rt_names \
	utils

LIBIPROUTE-$(CONFIG_IPLINK) += \
	ip_parse_common_args \
	ipaddress \
	iplink \
	libnetlink \
	ll_addr \
	ll_map \
	ll_types \
	rt_names \
	utils

LIBIPROUTE-$(CONFIG_IPROUTE) += \
	ip_parse_common_args \
	iproute \
	libnetlink \
	ll_map \
	rt_names \
	rtm_map \
	utils

LIBIPROUTE-$(CONFIG_IPTUNNEL) += \
	ip_parse_common_args \
	iptunnel \
	rt_names \
	utils

LIBIPROUTE-y:=$(sort $(LIBIPROUTE-y))

LIBIPROUTE_SRC-y:=$(patsubst %,$(srcdir)/%.c,$(LIBIPROUTE-y))
LIBIPROUTE_SRC-a:=$(wildcard $(srcdir)/*.c)
LIBRARY_SRC-y+=$(LIBIPROUTE_SRC-y)
LIBRARY_SRC-a+=$(LIBIPROUTE_SRC-a)

networking_libiproute_OBJ$(os):=$(patsubst %,$(objdir)/%$(os),$(LIBIPROUTE-y))

