build system overhaul
diff --git a/procps/Config.in b/procps/Config.in
index 2d4ad3b..20d5f9b 100644
--- a/procps/Config.in
+++ b/procps/Config.in
@@ -5,7 +5,7 @@
 
 menu "Process Utilities"
 
-config CONFIG_FREE
+config FREE
 	bool "free"
 	default n
 	help
@@ -13,7 +13,7 @@
 	  memory in the system, as well as the buffers used by the kernel.
 	  The shared memory column should be ignored; it is obsolete.
 
-config CONFIG_FUSER
+config FUSER
 	bool "fuser"
 	default n
 	help
@@ -21,7 +21,7 @@
 	  file open.  fuser can also list all PIDs that have a given network
 	  (TCP or UDP) port open.
 
-config CONFIG_KILL
+config KILL
 	bool "kill"
 	default n
 	help
@@ -29,86 +29,86 @@
 	  process or process group.  If no signal is specified, the TERM
 	  signal is sent.
 
-config CONFIG_KILLALL
+config KILLALL
 	bool "killall"
 	default n
-	depends on CONFIG_KILL
+	depends on KILL
 	help
 	  killall sends a signal to all processes running any of the
 	  specified commands.  If no signal name is specified, SIGTERM is
 	  sent.
 
-config CONFIG_KILLALL5
+config KILLALL5
 	bool "killall5"
 	default n
-	depends on CONFIG_KILL
+	depends on KILL
 	
-config CONFIG_PIDOF
+config PIDOF
 	bool "pidof"
 	default n
 	help
 	  Pidof finds the process id's (pids) of the named programs. It prints
 	  those id's on the standard output.
 
-config CONFIG_FEATURE_PIDOF_SINGLE
+config FEATURE_PIDOF_SINGLE
 	bool "Enable argument for single shot (-s)"
 	default n
-	depends on CONFIG_PIDOF
+	depends on PIDOF
 	help
 	  Support argument '-s' for returning only the first pid found.
 
-config CONFIG_FEATURE_PIDOF_OMIT
+config FEATURE_PIDOF_OMIT
 	bool "Enable argument for omitting pids (-o)"
 	default n
-	depends on CONFIG_PIDOF
+	depends on PIDOF
 	help
 	  Support argument '-o' for omitting the given pids in output.
 	  The special pid %PPID can be used to name the parent process
 	  of the pidof, in other words the calling shell or shell script.
 
-config CONFIG_PS
+config PS
 	bool "ps"
 	default n
 	help
 	  ps gives a snapshot of the current processes.
 
-config CONFIG_FEATURE_PS_WIDE
+config FEATURE_PS_WIDE
 	bool "Enable argument for wide output (-w)"
 	default n
-	depends on CONFIG_PS
+	depends on PS
 	help
 	  Support argument 'w' for wide output.
 	  If given once, 132 chars are printed and given more than
 	  one, the length is unlimited.
 
-config CONFIG_RENICE
+config RENICE
 	bool "renice"
 	default n
 	help
 	  Renice alters the scheduling priority of one or more running
 	  processes.
 
-config CONFIG_BB_SYSCTL
+config BB_SYSCTL
 	bool "sysctl"
 	default n
 	help
 	  Configure kernel parameters at runtime.
 
-config CONFIG_TOP
+config TOP
 	bool "top"
 	default n
 	help
 	  The top program provides a dynamic real-time view of a running
 	  system.
 
-config CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
+config FEATURE_TOP_CPU_USAGE_PERCENTAGE
 	bool "Support showing CPU usage percentage (add 2k bytes)"
 	default y
-	depends on CONFIG_TOP
+	depends on TOP
 	help
 	  Make top display CPU usage.
 
-config CONFIG_UPTIME
+config UPTIME
 	bool "uptime"
 	default n
 	help
diff --git a/procps/Kbuild b/procps/Kbuild
new file mode 100644
index 0000000..6a9a866
--- /dev/null
+++ b/procps/Kbuild
@@ -0,0 +1,16 @@
+# Makefile for busybox
+#
+# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
+#
+# Licensed under the GPL v2, see the file LICENSE in this tarball.
+
+lib-y:=
+lib-$(CONFIG_FREE)	+= free.o
+lib-$(CONFIG_KILL)	+= kill.o
+lib-$(CONFIG_PIDOF)	+= pidof.o
+lib-$(CONFIG_PS)	+= ps.o
+lib-$(CONFIG_RENICE)	+= renice.o
+lib-$(CONFIG_BB_SYSCTL)	+= sysctl.o
+lib-$(CONFIG_TOP)	+= top.o
+lib-$(CONFIG_UPTIME)	+= uptime.o
+lib-$(CONFIG_FUSER)	+= fuser.o
diff --git a/procps/Makefile b/procps/Makefile
deleted file mode 100644
index 1db6ffa..0000000
--- a/procps/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# Makefile for busybox
-#
-# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
-#
-# Licensed under the GPL v2, see the file LICENSE in this tarball.
-
-ifndef top_srcdir
-top_srcdir=..
-endif
-ifndef top_builddir
-top_builddir=..
-endif
-srcdir=$(top_srcdir)/procps
-PROCPS_DIR:=./
-include $(top_srcdir)/Rules.mak
-include $(top_builddir)/.config
-include Makefile.in
-all: $(libraries-y)
--include $(top_builddir)/.depend
-
-clean:
-	rm -f *.o *.a $(AR_TARGET)
-
diff --git a/procps/Makefile.in b/procps/Makefile.in
deleted file mode 100644
index 261c49b..0000000
--- a/procps/Makefile.in
+++ /dev/null
@@ -1,37 +0,0 @@
-# Makefile for busybox
-#
-# Copyright (C) 1999-2005 by Erik Andersen <andersen@codepoet.org>
-#
-# Licensed under the GPL v2, see the file LICENSE in this tarball.
-
-PROCPS_AR:=procps.a
-ifndef $(PROCPS_DIR)
-PROCPS_DIR:=$(top_builddir)/procps/
-endif
-srcdir=$(top_srcdir)/procps
-
-PROCPS-y:=
-PROCPS-$(CONFIG_FREE)		+= free.o
-PROCPS-$(CONFIG_KILL)		+= kill.o
-PROCPS-$(CONFIG_PIDOF)		+= pidof.o
-PROCPS-$(CONFIG_PS)		+= ps.o
-PROCPS-$(CONFIG_RENICE)		+= renice.o
-PROCPS-$(CONFIG_BB_SYSCTL)	+= sysctl.o
-PROCPS-$(CONFIG_TOP)		+= top.o
-PROCPS-$(CONFIG_UPTIME)		+= uptime.o
-PROCPS-$(CONFIG_FUSER)		+= fuser.o
-
-ifneq ($(strip $(PROCPS-y)),)
-libraries-y+=$(PROCPS_DIR)$(PROCPS_AR)
-endif
-
-PROCPS_SRC-y:=$(patsubst %.o,$(srcdir)/%.c,$(PROCPS-y))
-PROCPS_SRC-a:=$(wildcard $(srcdir)/*.c)
-APPLET_SRC-y+=$(PROCPS_SRC-y)
-APPLET_SRC-a+=$(PROCPS_SRC-a)
-
-$(PROCPS_DIR)$(PROCPS_AR): $(patsubst %,$(PROCPS_DIR)%, $(PROCPS-y))
-	$(do_ar)
-
-$(PROCPS_DIR)%.o: $(srcdir)/%.c
-	$(compile.c)