- revert back to r14406
diff --git a/networking/Makefile.in b/networking/Makefile.in
index 80cfd17..650fc1a 100644
--- a/networking/Makefile.in
+++ b/networking/Makefile.in
@@ -4,9 +4,13 @@
 #
 # Licensed under the GPL v2, see the file LICENSE in this tarball.
 
-srcdir:=$(top_srcdir)/networking
-objdir:=$(top_builddir)/networking
+NETWORKING_AR:=networking.a
+ifndef $(NETWORKING_DIR)
+NETWORKING_DIR:=$(top_builddir)/networking/
+endif
+srcdir=$(top_srcdir)/networking
 
+NETWORKING-y:=
 NETWORKING-$(CONFIG_ARPING)       += arping.o
 NETWORKING-$(CONFIG_DNSD)         += dnsd.o
 NETWORKING-$(CONFIG_ETHER_WAKE)   += ether-wake.o
@@ -40,11 +44,8 @@
 NETWORKING-$(CONFIG_ZCIP)         += zcip.o
 
 NETWORKING-y:=$(sort $(NETWORKING-y))
-
-needcrypt-y:=
-needcrypt-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) := y
-ifeq ($(needcrypt-y),y)
-	LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
+ifneq ($(strip $(NETWORKING-y)),)
+libraries-y+=$(NETWORKING_DIR)$(NETWORKING_AR)
 endif
 
 NETWORKING_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(NETWORKING-y))
@@ -55,9 +56,15 @@
 LIBRARY_DEFINE-y+= -I$(top_srcdir)/networking
 LIBRARY_DEFINE-a+= -I$(top_srcdir)/networking
 
-networking_OBJ:=  $(patsubst %,$(objdir)/%,$(NETWORKING-y))
+needcrypt-y:=
+needcrypt-$(CONFIG_FEATURE_HTTPD_AUTH_MD5) := y
 
-$(networking_OBJ): $(objdir)/%.o: $(srcdir)/%.c
-$(objdir)/networking.a: $(networking_OBJ)
-libraries-y:=$(libraries-y) $(objdir)/networking.a
+ifeq ($(needcrypt-y),y)
+	LIBRARIES := -lcrypt $(filter-out -lcrypt,$(LIBRARIES))
+endif
 
+$(NETWORKING_DIR)$(NETWORKING_AR): $(patsubst %,$(NETWORKING_DIR)%, $(NETWORKING-y))
+	$(do_ar)
+
+$(NETWORKING_DIR)%.o: $(srcdir)/%.c
+	$(compile.c)
diff --git a/networking/libiproute/Makefile.in b/networking/libiproute/Makefile.in
index 3ad77ec..f713502 100644
--- a/networking/libiproute/Makefile.in
+++ b/networking/libiproute/Makefile.in
@@ -3,71 +3,81 @@
 # 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_AR:=libiproute.a
+ifndef $(LIBIPROUTE_DIR)
+LIBIPROUTE_DIR:=$(top_builddir)/networking/libiproute
+endif
+srcdir=$(top_srcdir)/networking/libiproute
 
+LIBIPROUTE-y:=
 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
+	ip_parse_common_args.o \
+	ipaddress.o \
+	iplink.o \
+	iproute.o \
+	iptunnel.o \
+	libnetlink.o \
+	ll_addr.o \
+	ll_map.o \
+	ll_proto.o \
+	ll_types.o \
+	rt_names.o \
+	rtm_map.o \
+	utils.o
 
 LIBIPROUTE-$(CONFIG_IPADDR) += \
-	ip_parse_common_args \
-	ipaddress \
-	libnetlink \
-	ll_addr \
-	ll_map \
-	ll_types \
-	rt_names \
-	utils
+	ip_parse_common_args.o \
+	ipaddress.o \
+	libnetlink.o \
+	ll_addr.o \
+	ll_map.o \
+	ll_types.o \
+	rt_names.o \
+	utils.o
 
 LIBIPROUTE-$(CONFIG_IPLINK) += \
-	ip_parse_common_args \
-	ipaddress \
-	iplink \
-	libnetlink \
-	ll_addr \
-	ll_map \
-	ll_types \
-	rt_names \
-	utils
+	ip_parse_common_args.o \
+	ipaddress.o \
+	iplink.o \
+	libnetlink.o \
+	ll_addr.o \
+	ll_map.o \
+	ll_types.o \
+	rt_names.o \
+	utils.o
 
 LIBIPROUTE-$(CONFIG_IPROUTE) += \
-	ip_parse_common_args \
-	iproute \
-	libnetlink \
-	ll_map \
-	rt_names \
-	rtm_map \
-	utils
+	ip_parse_common_args.o \
+	iproute.o \
+	libnetlink.o \
+	ll_map.o \
+	rt_names.o \
+	rtm_map.o \
+	utils.o
 
 LIBIPROUTE-$(CONFIG_IPTUNNEL) += \
-	ip_parse_common_args \
-	iptunnel \
-	rt_names \
-	utils
+	ip_parse_common_args.o \
+	iptunnel.o \
+	rt_names.o \
+	utils.o
 
 LIBIPROUTE-y:=$(sort $(LIBIPROUTE-y))
 
-LIBIPROUTE_SRC-y:=$(patsubst %,$(srcdir)/%.c,$(LIBIPROUTE-y))
+LIBIPROUTE_SRC-y:=$(patsubst %,$(srcdir)/%,$(subst .o,.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))
+LIBIPROUTE-obj:=$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR)
 
-$(networking_libiproute_OBJ$(os)): $(objdir)/%$(os): $(srcdir)/%.c
-$(objdir)/libiproute.a: $(networking_libiproute_OBJ$(os))
-libraries-y:=$(libraries-y) $(objdir)/libiproute.a
+ifneq ($(strip $(LIBIPROUTE-y)),)
+libraries-y+=$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR)
+endif
 
+$(LIBIPROUTE_DIR)/$(LIBIPROUTE_AR): $(patsubst %,$(LIBIPROUTE_DIR)/%,$(LIBIPROUTE-y))
+	$(do_ar)
+
+$(LIBIPROUTE_DIR)/%.o: $(srcdir)/%.c
+	$(compile.c)
diff --git a/networking/udhcp/Makefile.in b/networking/udhcp/Makefile.in
index 210939f..df32247 100644
--- a/networking/udhcp/Makefile.in
+++ b/networking/udhcp/Makefile.in
@@ -3,9 +3,13 @@
 # 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
+UDHCP_AR:=udhcp.a
+ifndef $(UDHCP_DIR)
+UDHCP_DIR:=$(top_builddir)/networking/udhcp/
+endif
+srcdir=$(top_srcdir)/networking/udhcp
 
 #ok, so I forgot how to do an or, but this is a quick and dirty hack
 ifeq ($(strip $(CONFIG_UDHCPC)),y)
@@ -18,77 +22,32 @@
 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-y:=
+UDHCP-$(CONFIG_UDHCP_SHARED)    += common.c options.c packet.c pidfile.c \
+				   signalpipe.c socket.c
+UDHCP-$(CONFIG_UDHCPC)		+= dhcpc.c clientpacket.c clientsocket.c \
+				   script.c
+UDHCP-$(CONFIG_UDHCPD)		+= dhcpd.c arpping.c files.c leases.c \
+				   serverpacket.c static_leases.c
+UDHCP-$(CONFIG_DUMPLEASES)	+= dumpleases.c
+UDHCP_OBJS:=$(patsubst %.c,$(UDHCP_DIR)%.o, $(UDHCP-y))
 
-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)
+ifneq ($(strip $(UDHCP-y)),)
+libraries-y+=$(UDHCP_DIR)$(UDHCP_AR)
+endif
 
-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-y:=$(patsubst %,$(srcdir)/%,$(UDHCP-y))
+UDHCP-a:=$(wildcard $(srcdir)/*.c)
+APPLET_SRC-y+=$(UDHCP-y)
+APPLET_SRC-a+=$(UDHCP-a)
 
 UDHCP_INCLUDES:=$(srcdir)
 
-#APPLETS_DEFINE-y+= -I$(UDHCP_INCLUDES) -DIN_BUSYBOX
-#APPLETS_DEFINE-a+= -I$(UDHCP_INCLUDES) -DIN_BUSYBOX
+APPLETS_DEFINE-y+=-DIN_BUSYBOX -I$(UDHCP_INCLUDES)
+APPLETS_DEFINE-a+=-DIN_BUSYBOX -I$(UDHCP_INCLUDES)
 
-CFLAGS-udhcp:= -I$(UDHCP_INCLUDES)
+$(UDHCP_DIR)$(UDHCP_AR): $(UDHCP_OBJS)
+	$(do_ar)
 
-# 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))
-
-$(networking_udhcp_OBJ): $(objdir)/%.o: $(srcdir)/%.c
-$(objdir)/udhcp.a: $(networking_udhcp_OBJ)
-libraries-y:=$(libraries-y) $(objdir)/udhcp.a
-
+$(UDHCP_OBJS): $(UDHCP_DIR)%.o : $(srcdir)/%.c
+	$(compile.c) -DIN_BUSYBOX