diff --git a/debian/Config.h-deb b/debian/Config.h-deb
deleted file mode 100644
index 818d66d..0000000
--- a/debian/Config.h-deb
+++ /dev/null
@@ -1,469 +0,0 @@
-/* vi: set sw=4 ts=4: */
-// This file defines the feature set to be compiled into busybox.
-// When you turn things off here, they won't be compiled in at all.
-//
-//// This file is parsed by sed.  You MUST use single line comments.
-//   i.e.,  //#define CONFIG_BLAH
-//
-//
-// BusyBox Applications
-//#define CONFIG_ADJTIMEX
-#define CONFIG_AR
-//#define CONFIG_ASH
-#define CONFIG_BASENAME
-#define CONFIG_CAT
-#define CONFIG_CHGRP
-#define CONFIG_CHMOD
-#define CONFIG_CHOWN
-#define CONFIG_CHROOT
-#define CONFIG_CHVT
-#define CONFIG_CLEAR
-//#define CONFIG_CMP
-#define CONFIG_CP
-//#define CONFIG_CPIO
-#define CONFIG_CUT
-#define CONFIG_DATE
-//#define CONFIG_DC
-#define CONFIG_DD
-//#define CONFIG_DEALLOCVT
-#define CONFIG_DF
-#define CONFIG_DIRNAME
-#define CONFIG_DMESG
-//#define CONFIG_DOS2UNIX
-//#define CONFIG_DPKG
-//#define CONFIG_DPKG_DEB
-//#define CONFIG_DUTMP
-#define CONFIG_DU
-//#define CONFIG_DUMPKMAP
-#define CONFIG_ECHO
-#define CONFIG_ENV
-#define CONFIG_EXPR
-//#define CONFIG_FBSET
-//#define CONFIG_FDFLUSH
-#define CONFIG_FIND
-#define CONFIG_FREE
-//#define CONFIG_FREERAMDISK
-//#define CONFIG_FSCK_MINIX
-//#define CONFIG_GETOPT
-#define CONFIG_GREP
-#define CONFIG_GUNZIP
-#define CONFIG_GZIP
-#define CONFIG_HALT
-#define CONFIG_HEAD
-//#define CONFIG_HOSTID
-//#define CONFIG_HOSTNAME
-//#define CONFIG_HUSH
-#define CONFIG_ID
-//#define CONFIG_IFCONFIG
-#define CONFIG_INIT
-//#define CONFIG_INSMOD
-#define CONFIG_KILL
-#define CONFIG_KILLALL
-#define CONFIG_KLOGD
-//#define CONFIG_LASH
-//#define CONFIG_LENGTH
-#define CONFIG_LN
-//#define CONFIG_LOADACM
-//#define CONFIG_LOADFONT
-#define CONFIG_LOADKMAP
-#define CONFIG_LOGGER
-//#define CONFIG_LOGNAME
-#define CONFIG_LS
-#define CONFIG_LSMOD
-//#define CONFIG_MAKEDEVS
-#define CONFIG_MD5SUM
-#define CONFIG_MKDIR
-//#define CONFIG_MKFIFO
-//#define CONFIG_MKFS_MINIX
-#define CONFIG_MKNOD
-#define CONFIG_MKSWAP
-//#define CONFIG_MKTEMP
-//#define CONFIG_MODPROBE
-#define CONFIG_MORE
-#define CONFIG_MOUNT
-//#define CONFIG_MSH
-//#define CONFIG_MT
-#define CONFIG_MV
-//#define CONFIG_NC
-//#define CONFIG_NSLOOKUP
-//#define CONFIG_PIDOF
-#define CONFIG_PING
-//#define CONFIG_PIVOT_ROOT
-#define CONFIG_POWEROFF
-//#define CONFIG_PRINTF
-#define CONFIG_PS
-#define CONFIG_PWD
-//#define CONFIG_RDATE
-//#define CONFIG_READLINK
-#define CONFIG_REBOOT
-//#define CONFIG_RENICE
-#define CONFIG_RESET
-#define CONFIG_RM
-#define CONFIG_RMDIR
-//#define CONFIG_RMMOD
-//#define CONFIG_ROUTE
-//#define CONFIG_RPM2CPIO
-#define CONFIG_SED
-//#define CONFIG_SETKEYCODES
-#define CONFIG_SLEEP
-#define CONFIG_SORT
-//#define CONFIG_STTY
-#define CONFIG_SWAPONOFF
-#define CONFIG_SYNC
-#define CONFIG_SYSLOGD
-#define CONFIG_TAIL
-#define CONFIG_TAR
-//#define CONFIG_TEE
-//#define CONFIG_TEST
-#define CONFIG_TELNET
-//#define CONFIG_TFTP
-#define CONFIG_TOUCH
-#define CONFIG_TR
-//#define CONFIG_TRACEROUTE
-#define CONFIG_TRUE_FALSE
-#define CONFIG_TTY
-//#define CONFIG_UNIX2DOS
-//#define CONFIG_UUENCODE
-//#define CONFIG_UUDECODE
-#define CONFIG_UMOUNT
-#define CONFIG_UNIQ
-#define CONFIG_UNAME
-//#define CONFIG_UPDATE
-#define CONFIG_UPTIME
-//#define CONFIG_USLEEP
-#define CONFIG_VI
-//#define CONFIG_WATCHDOG
-#define CONFIG_WC
-#define CONFIG_WGET
-#define CONFIG_WHICH
-#define CONFIG_WHOAMI
-#define CONFIG_XARGS
-#define CONFIG_YES
-// End of Applications List
-//
-//
-//
-// ---------------------------------------------------------
-// This is where feature definitions go.  Generally speaking,
-// turning this stuff off makes things a bit smaller (and less 
-// pretty/useful).
-//
-//
-// If you enabled one or more of the shells, you may select which one
-// should be run when sh is invoked:
-//#define CONFIG_FEATURE_SH_IS_ASH
-//#define CONFIG_FEATURE_SH_IS_HUSH
-//#define CONFIG_FEATURE_SH_IS_LASH
-#define CONFIG_FEATURE_SH_IS_MSH
-//
-// BusyBox will, by default, malloc space for its buffers.  This costs code
-// size for the call to xmalloc.  You can use the following feature to have
-// them put on the stack.  For some very small machines with limited stack
-// space, this can be deadly.  For most folks, this works just fine...
-//#define CONFIG_FEATURE_BUFFERS_GO_ON_STACK
-// The third alternative for buffer allocation is to use BSS.  This works
-// beautifully for computers with a real MMU (and OS support), but wastes
-// runtime RAM for uCLinux.  This behavior was the only one available for
-// BusyBox versions 0.48 and earlier.
-//#define CONFIG_FEATURE_BUFFERS_GO_IN_BSS
-//
-// Turn this on to use Erik's very cool devps, and devmtab kernel drivers,
-// thereby eliminating the need for the /proc filesystem and thereby saving
-// lots and lots memory for more important things.  NOTE:  If you enable this
-// feature, you _must_ have patched the kernel to include the devps patch that
-// is included in the busybox/kernel-patches directory.  You will also need to
-// create some device special files in /dev on your embedded system:
-//        mknod /dev/mtab c 10 22
-//        mknod /dev/ps c 10 21
-// I emailed Linus and this patch will not be going into the stock kernel.
-//#define CONFIG_FEATURE_USE_DEVPS_PATCH
-//
-// show verbose usage messages
-//#define CONFIG_FEATURE_VERBOSE_USAGE
-//
-// Use termios to manipulate the screen ('more' is prettier with this on)
-#define CONFIG_FEATURE_USE_TERMIOS
-//
-// calculate terminal & column widths (for more and ls)
-#define CONFIG_FEATURE_AUTOWIDTH
-//
-// show username/groupnames for ls
-#define CONFIG_FEATURE_LS_USERNAME
-//
-// show file timestamps in ls
-#define CONFIG_FEATURE_LS_TIMESTAMPS
-//
-// enable ls -p and -F
-#define CONFIG_FEATURE_LS_FILETYPES
-//
-// sort the file names
-#define CONFIG_FEATURE_LS_SORTFILES
-//
-// enable ls -R
-#define CONFIG_FEATURE_LS_RECURSIVE
-//
-// enable ls -L
-#define CONFIG_FEATURE_LS_FOLLOWLINKS
-//
-// Disable for a smaller (but less functional) ping
-#define CONFIG_FEATURE_FANCY_PING
-//
-// Make init use a simplified /etc/inittab file (recommended).
-#define CONFIG_FEATURE_USE_INITTAB
-//
-//Enable init being called as /linuxrc
-#define CONFIG_FEATURE_INITRD
-//
-//Have init enable core dumping for child processes (for debugging only) 
-//#define CONFIG_FEATURE_INIT_COREDUMPS
-//
-//Make sure nothing is printed to the console on boot
-//#define CONFIG_FEATURE_EXTRA_QUIET
-//
-// enable syslogd -R remotehost
-#define CONFIG_FEATURE_REMOTE_LOG
-//
-// enable syslogd -C
-//#define CONFIG_FEATURE_IPC_SYSLOG
-//
-//Disable for a simple tail implementation (2.34k vs 3k for the full one).
-//Both provide 'tail -f', but this cuts out -c, -q, -s, and -v. 
-#define CONFIG_FEATURE_FANCY_TAIL
-//
-// Enable support for loop devices in mount
-#define CONFIG_FEATURE_MOUNT_LOOP
-//
-// Enable support for a real /etc/mtab file instead of /proc/mounts
-//#define CONFIG_FEATURE_MTAB_SUPPORT
-//
-// Enable support for mounting remote NFS volumes. 
-// You may need to mount with "-o nolock" if you are
-// not running a local portmapper daemon...
-#define CONFIG_FEATURE_NFSMOUNT
-//
-// Enable support forced filesystem unmounting 
-// (i.e., in case of an unreachable NFS system).
-#define CONFIG_FEATURE_MOUNT_FORCE
-//
-// Enable support for creation of tar files.
-#define CONFIG_FEATURE_TAR_CREATE
-//
-// Enable support for "--exclude" and "-X" for excluding files
-#define CONFIG_FEATURE_TAR_EXCLUDE
-//
-// Enable support for tar -z option (currently only works for inflating)
-#define CONFIG_FEATURE_TAR_GZIP 
-//
-// Enable reverse sort
-#define CONFIG_FEATURE_SORT_REVERSE
-//
-// Enable uniqe sort
-#define CONFIG_FEATURE_SORT_UNIQUE
-//
-// Enable command line editing in the shell.  
-// Only relevant if a shell is enabled. On by default.
-#define CONFIG_FEATURE_COMMAND_EDITING
-//
-// Enable tab completion in the shell.  This is now working quite nicely.
-// This feature adds a bit over 4k. Only relevant if a shell is enabled.
-#define CONFIG_FEATURE_COMMAND_TAB_COMPLETION
-//
-// Attempts to match usernames in a ~-prefixed path
-//#define CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
-//
-//Allow the shell to invoke all the compiled in BusyBox applets as if they
-//were shell builtins.  Nice for staticly linking an emergency rescue shell,
-//among other things. Off by default.
-// Only relevant if a shell is enabled.
-//#define CONFIG_FEATURE_SH_STANDALONE_SHELL
-//
-//When this is enabled, busybox shell applets can be called using full path
-//names.  This causes applets (i.e., most busybox commands) to override
-//real commands on the filesystem.  For example, if you run run /bin/cat, it
-//will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_
-//busybox.  Some systems want this, others do not.  Choose wisely.  :-) This
-//only has meaning when CONFIG_FEATURE_SH_STANDALONE_SHELL is enabled.
-// Only relevant if a shell is enabled. Off by default.
-//#define CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN
-//
-// Uncomment this option for a fancy shell prompt that includes the
-// current username and hostname.  On systems that don't have usernames
-// or hostnames, this can look hideous.
-// Only relevant if a shell is enabled.
-//#define CONFIG_FEATURE_SH_FANCY_PROMPT
-//
-//Turn on extra fbset options
-//#define CONFIG_FEATURE_FBSET_FANCY
-//
-//Turn on fbset readmode support
-//#define CONFIG_FEATURE_FBSET_READMODE
-//
-// Support insmod/lsmod/rmmod for post 2.1 kernels
-//#define CONFIG_FEATURE_NEW_MODULE_INTERFACE
-//
-// Support insmod/lsmod/rmmod for pre 2.1 kernels
-//#define CONFIG_FEATURE_OLD_MODULE_INTERFACE
-//
-// Support module version checking
-//#define CONFIG_FEATURE_INSMOD_VERSION_CHECKING
-//
-// Support for uClinux memory usage optimization, which will load the image
-// directly into the kernel memory.  This divides memory requrements by three.
-// If you are not running uClinux (i.e., your CPU has an MMU) leave this
-// disabled...
-//#define CONFIG_FEATURE_INSMOD_LOADINKMEM
-//
-// Support for Minix filesystem, version 2
-//#define CONFIG_FEATURE_MINIX2
-//
-// Enable ifconfig status reporting output -- this feature adds 12k.
-#define CONFIG_FEATURE_IFCONFIG_STATUS
-//
-// Enable ifconfig slip-specific options "keepalive" and "outfill"
-//#define CONFIG_FEATURE_IFCONFIG_SLIP
-//
-// Enable ifconfig options "mem_start", "io_addr", and "irq".
-//#define CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
-//
-// Enable ifconfig option "hw".  Currently works for only with "ether".
-#define CONFIG_FEATURE_IFCONFIG_HW
-//
-// Enable busybox --install [-s]
-// to create links (or symlinks) for all the commands that are 
-// compiled into the binary.  (needs /proc filesystem)
-#define CONFIG_FEATURE_INSTALLER
-//
-// Enable a nifty progress meter in wget (adds just under 2k)
-#define CONFIG_FEATURE_WGET_STATUSBAR
-//
-// Enable HTTP authentication in wget
-#define CONFIG_FEATURE_WGET_AUTHENTICATION
-//
-// Clean up all memory before exiting -- usually not needed
-// as the OS can clean up...  Don't enable this unless you
-// have a really good reason for cleaning things up manually.
-//#define CONFIG_FEATURE_CLEAN_UP
-//
-// Support for human readable output by ls, du, etc.(example 13k, 23M, 235G)
-#define CONFIG_FEATURE_HUMAN_READABLE
-//
-// Support for the find -type option.
-#define CONFIG_FEATURE_FIND_TYPE
-//
-// Support for the find -perm option.
-#define CONFIG_FEATURE_FIND_PERM
-//
-// Support for the find -mtine option.
-#define CONFIG_FEATURE_FIND_MTIME
-//
-// Support for the -A -B and -C context flags in grep
-//#define CONFIG_FEATURE_GREP_CONTEXT
-//
-// Support for the EGREP applet (alias to the grep applet)
-//#define CONFIG_FEATURE_GREP_EGREP_ALIAS
-//
-// Tell tftp what commands that should be supported.
-#define CONFIG_FEATURE_TFTP_PUT
-#define CONFIG_FEATURE_TFTP_GET
-//
-// features for vi
-#define CONFIG_FEATURE_VI_COLON		// ":" colon commands, no "ex" mode
-#define CONFIG_FEATURE_VI_YANKMARK		// Yank/Put commands and Mark cmds
-#define CONFIG_FEATURE_VI_SEARCH		// search and replace cmds
-#define CONFIG_FEATURE_VI_USE_SIGNALS	// catch signals
-#define CONFIG_FEATURE_VI_DOT_CMD		// remember previous cmd and "." cmd
-#define CONFIG_FEATURE_VI_READONLY		// vi -R and "view" mode
-#define CONFIG_FEATURE_VI_SETOPTS		// set-able options,  ai ic showmatch
-#define CONFIG_FEATURE_VI_SET		// :set
-#define CONFIG_FEATURE_VI_WIN_RESIZE	// handle window resize
-//
-// Enable a if you system have setuped locale
-//#define CONFIG_LOCALE_SUPPORT
-//
-// Support for TELNET to pass TERM type to remote host.  Adds 384 bytes.
-#define CONFIG_FEATURE_TELNET_TTYPE
-//
-// End of Features List
-//
-//
-//
-//
-//
-//
-//---------------------------------------------------
-// Nothing beyond this point should ever be touched by 
-// mere mortals so leave this stuff alone.
-//
-#include <features.h>
-#if defined __UCLIBC__ && ! defined __UCLIBC_HAS_MMU__
-	#undef CONFIG_RPM2CPIO		/* Uses gz_open(), which uses fork() */
-	#undef CONFIG_DPKG_DEB		/* Uses gz_open(), which uses fork() */
-	#undef CONFIG_ASH			/* Uses fork() */
-	#undef CONFIG_HUSH			/* Uses fork() */
-	#undef CONFIG_LASH			/* Uses fork() */
-	#undef CONFIG_INIT			/* Uses fork() */
-	#undef CONFIG_FEATURE_TAR_GZIP	/* Uses fork() */
-	#undef CONFIG_SYSLOGD		/* Uses daemon() */
-	#undef CONFIG_KLOGD			/* Uses daemon() */
-	#undef CONFIG_UPDATE		/* Uses daemon() */
-#endif
-#if defined CONFIG_ASH || defined CONFIG_HUSH || defined CONFIG_LASH || defined CONFIG_MSH
-	#if defined CONFIG_FEATURE_COMMAND_EDITING
-		#define CONFIG_CMDEDIT
-	#else
-		#undef CONFIG_FEATURE_COMMAND_EDITING
-		#undef CONFIG_FEATURE_COMMAND_TAB_COMPLETION
-		#undef CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
-		#undef CONFIG_FEATURE_SH_FANCY_PROMPT
-	#endif
-#else
-	#undef CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN
-	#undef CONFIG_FEATURE_SH_STANDALONE_SHELL
-	#undef CONFIG_FEATURE_SH_FANCY_PROMPT
-#endif
-//
-#ifdef CONFIG_KILLALL
-	#ifndef CONFIG_KILL
-		#define CONFIG_KILL
-	#endif
-#endif
-//
-#ifndef CONFIG_INIT
-	#undef CONFIG_FEATURE_INITRD
-#endif
-//
-#if defined CONFIG_MOUNT && defined CONFIG_FEATURE_NFSMOUNT
-	#define CONFIG_NFSMOUNT
-#endif
-//
-#if defined CONFIG_FEATURE_AUTOWIDTH
-	#ifndef CONFIG_FEATURE_USE_TERMIOS
-		#define CONFIG_FEATURE_USE_TERMIOS
-	#endif
-#endif
-//
-#if defined CONFIG_INSMOD || defined CONFIG_LSMOD
-	#if ! defined CONFIG_FEATURE_NEW_MODULE_INTERFACE && ! defined CONFIG_FEATURE_OLD_MODULE_INTERFACE
-		#define CONFIG_FEATURE_NEW_MODULE_INTERFACE
-	#endif
-#endif
-//
-#ifdef CONFIG_UNIX2DOS
-	#define CONFIG_DOS2UNIX
-#endif	
-//
-#ifdef CONFIG_SYSLOGD
-	#if defined CONFIG_FEATURE_IPC_SYSLOG
-		#define CONFIG_LOGREAD
-	#endif
-#endif
-//
-#if defined CONFIG_ASH && defined CONFIG_FEATURE_SH_IS_ASH
-# define shell_main ash_main
-#elif defined CONFIG_HUSH && defined CONFIG_FEATURE_SH_IS_HUSH
-# define shell_main hush_main
-#elif defined CONFIG_LASH && defined CONFIG_FEATURE_SH_IS_LASH
-# define shell_main lash_main
-#elif defined CONFIG_MSH && defined CONFIG_FEATURE_SH_IS_MSH
-# define shell_main msh_main
-#endif
diff --git a/debian/Config.h-static b/debian/Config.h-static
deleted file mode 100644
index 215bfda..0000000
--- a/debian/Config.h-static
+++ /dev/null
@@ -1,469 +0,0 @@
-/* vi: set sw=4 ts=4: */
-// This file defines the feature set to be compiled into busybox.
-// When you turn things off here, they won't be compiled in at all.
-//
-//// This file is parsed by sed.  You MUST use single line comments.
-//   i.e.,  //#define CONFIG_BLAH
-//
-//
-// BusyBox Applications
-//#define CONFIG_ADJTIMEX
-#define CONFIG_AR
-#define CONFIG_ASH
-#define CONFIG_BASENAME
-#define CONFIG_CAT
-#define CONFIG_CHGRP
-#define CONFIG_CHMOD
-#define CONFIG_CHOWN
-#define CONFIG_CHROOT
-#define CONFIG_CHVT
-#define CONFIG_CLEAR
-#define CONFIG_CMP
-#define CONFIG_CP
-#define CONFIG_CPIO
-#define CONFIG_CUT
-#define CONFIG_DATE
-#define CONFIG_DC
-#define CONFIG_DD
-#define CONFIG_DEALLOCVT
-#define CONFIG_DF
-#define CONFIG_DIRNAME
-#define CONFIG_DMESG
-#define CONFIG_DOS2UNIX
-#define CONFIG_DPKG
-#define CONFIG_DPKG_DEB
-#define CONFIG_DUTMP
-#define CONFIG_DU
-#define CONFIG_DUMPKMAP
-#define CONFIG_ECHO
-#define CONFIG_ENV
-#define CONFIG_EXPR
-#define CONFIG_FBSET
-#define CONFIG_FDFLUSH
-#define CONFIG_FIND
-#define CONFIG_FREE
-#define CONFIG_FREERAMDISK
-#define CONFIG_FSCK_MINIX
-#define CONFIG_GETOPT
-#define CONFIG_GREP
-#define CONFIG_GUNZIP
-#define CONFIG_GZIP
-#define CONFIG_HALT
-#define CONFIG_HEAD
-#define CONFIG_HOSTID
-#define CONFIG_HOSTNAME
-//#define CONFIG_HUSH
-#define CONFIG_ID
-#define CONFIG_IFCONFIG
-#define CONFIG_INIT
-//#define CONFIG_INSMOD
-#define CONFIG_KILL
-#define CONFIG_KILLALL
-#define CONFIG_KLOGD
-//#define CONFIG_LASH
-#define CONFIG_LENGTH
-#define CONFIG_LN
-#define CONFIG_LOADACM
-#define CONFIG_LOADFONT
-#define CONFIG_LOADKMAP
-#define CONFIG_LOGGER
-#define CONFIG_LOGNAME
-#define CONFIG_LS
-#define CONFIG_LSMOD
-#define CONFIG_MAKEDEVS
-#define CONFIG_MD5SUM
-#define CONFIG_MKDIR
-#define CONFIG_MKFIFO
-#define CONFIG_MKFS_MINIX
-#define CONFIG_MKNOD
-#define CONFIG_MKSWAP
-#define CONFIG_MKTEMP
-//#define CONFIG_MODPROBE
-#define CONFIG_MORE
-#define CONFIG_MOUNT
-//#define CONFIG_MSH
-#define CONFIG_MT
-#define CONFIG_MV
-#define CONFIG_NC
-#define CONFIG_NSLOOKUP
-#define CONFIG_PIDOF
-#define CONFIG_PING
-#define CONFIG_PIVOT_ROOT
-#define CONFIG_POWEROFF
-#define CONFIG_PRINTF
-#define CONFIG_PS
-#define CONFIG_PWD
-#define CONFIG_RDATE
-#define CONFIG_READLINK
-#define CONFIG_REBOOT
-#define CONFIG_RENICE
-#define CONFIG_RESET
-#define CONFIG_RM
-#define CONFIG_RMDIR
-#define CONFIG_RMMOD
-#define CONFIG_ROUTE
-#define CONFIG_RPM2CPIO
-#define CONFIG_SED
-#define CONFIG_SETKEYCODES
-#define CONFIG_SLEEP
-#define CONFIG_SORT
-#define CONFIG_STTY
-#define CONFIG_SWAPONOFF
-#define CONFIG_SYNC
-#define CONFIG_SYSLOGD
-#define CONFIG_TAIL
-#define CONFIG_TAR
-#define CONFIG_TEE
-#define CONFIG_TEST
-#define CONFIG_TELNET
-#define CONFIG_TFTP
-#define CONFIG_TOUCH
-#define CONFIG_TR
-#define CONFIG_TRACEROUTE
-#define CONFIG_TRUE_FALSE
-#define CONFIG_TTY
-#define CONFIG_UNIX2DOS
-#define CONFIG_UUENCODE
-#define CONFIG_UUDECODE
-#define CONFIG_UMOUNT
-#define CONFIG_UNIQ
-#define CONFIG_UNAME
-#define CONFIG_UPDATE
-#define CONFIG_UPTIME
-#define CONFIG_USLEEP
-#define CONFIG_VI
-#define CONFIG_WATCHDOG
-#define CONFIG_WC
-#define CONFIG_WGET
-#define CONFIG_WHICH
-#define CONFIG_WHOAMI
-#define CONFIG_XARGS
-#define CONFIG_YES
-// End of Applications List
-//
-//
-//
-// ---------------------------------------------------------
-// This is where feature definitions go.  Generally speaking,
-// turning this stuff off makes things a bit smaller (and less 
-// pretty/useful).
-//
-//
-// If you enabled one or more of the shells, you may select which one
-// should be run when sh is invoked:
-#define CONFIG_FEATURE_SH_IS_ASH
-//#define CONFIG_FEATURE_SH_IS_HUSH
-//#define CONFIG_FEATURE_SH_IS_LASH
-//#define CONFIG_FEATURE_SH_IS_MSH
-//
-// BusyBox will, by default, malloc space for its buffers.  This costs code
-// size for the call to xmalloc.  You can use the following feature to have
-// them put on the stack.  For some very small machines with limited stack
-// space, this can be deadly.  For most folks, this works just fine...
-//#define CONFIG_FEATURE_BUFFERS_GO_ON_STACK
-// The third alternative for buffer allocation is to use BSS.  This works
-// beautifully for computers with a real MMU (and OS support), but wastes
-// runtime RAM for uCLinux.  This behavior was the only one available for
-// BusyBox versions 0.48 and earlier.
-//#define CONFIG_FEATURE_BUFFERS_GO_IN_BSS
-//
-// Turn this on to use Erik's very cool devps, and devmtab kernel drivers,
-// thereby eliminating the need for the /proc filesystem and thereby saving
-// lots and lots memory for more important things.  NOTE:  If you enable this
-// feature, you _must_ have patched the kernel to include the devps patch that
-// is included in the busybox/kernel-patches directory.  You will also need to
-// create some device special files in /dev on your embedded system:
-//        mknod /dev/mtab c 10 22
-//        mknod /dev/ps c 10 21
-// I emailed Linus and this patch will not be going into the stock kernel.
-//#define CONFIG_FEATURE_USE_DEVPS_PATCH
-//
-// show verbose usage messages
-#define CONFIG_FEATURE_VERBOSE_USAGE
-//
-// Use termios to manipulate the screen ('more' is prettier with this on)
-#define CONFIG_FEATURE_USE_TERMIOS
-//
-// calculate terminal & column widths (for more and ls)
-#define CONFIG_FEATURE_AUTOWIDTH
-//
-// show username/groupnames for ls
-#define CONFIG_FEATURE_LS_USERNAME
-//
-// show file timestamps in ls
-#define CONFIG_FEATURE_LS_TIMESTAMPS
-//
-// enable ls -p and -F
-#define CONFIG_FEATURE_LS_FILETYPES
-//
-// sort the file names
-#define CONFIG_FEATURE_LS_SORTFILES
-//
-// enable ls -R
-#define CONFIG_FEATURE_LS_RECURSIVE
-//
-// enable ls -L
-#define CONFIG_FEATURE_LS_FOLLOWLINKS
-//
-// Disable for a smaller (but less functional) ping
-#define CONFIG_FEATURE_FANCY_PING
-//
-// Make init use a simplified /etc/inittab file (recommended).
-#define CONFIG_FEATURE_USE_INITTAB
-//
-//Enable init being called as /linuxrc
-#define CONFIG_FEATURE_INITRD
-//
-//Have init enable core dumping for child processes (for debugging only) 
-//#define CONFIG_FEATURE_INIT_COREDUMPS
-//
-//Make sure nothing is printed to the console on boot
-//#define CONFIG_FEATURE_EXTRA_QUIET
-//
-// enable syslogd -R remotehost
-#define CONFIG_FEATURE_REMOTE_LOG
-//
-// enable syslogd -C
-//#define CONFIG_FEATURE_IPC_SYSLOG
-//
-//Disable for a simple tail implementation (2.34k vs 3k for the full one).
-//Both provide 'tail -f', but this cuts out -c, -q, -s, and -v. 
-#define CONFIG_FEATURE_FANCY_TAIL
-//
-// Enable support for loop devices in mount
-#define CONFIG_FEATURE_MOUNT_LOOP
-//
-// Enable support for a real /etc/mtab file instead of /proc/mounts
-//#define CONFIG_FEATURE_MTAB_SUPPORT
-//
-// Enable support for mounting remote NFS volumes. 
-// You may need to mount with "-o nolock" if you are
-// not running a local portmapper daemon...
-#define CONFIG_FEATURE_NFSMOUNT
-//
-// Enable support forced filesystem unmounting 
-// (i.e., in case of an unreachable NFS system).
-#define CONFIG_FEATURE_MOUNT_FORCE
-//
-// Enable support for creation of tar files.
-#define CONFIG_FEATURE_TAR_CREATE
-//
-// Enable support for "--exclude" and "-X" for excluding files
-#define CONFIG_FEATURE_TAR_EXCLUDE
-//
-// Enable support for tar -z option (currently only works for inflating)
-#define CONFIG_FEATURE_TAR_GZIP 
-//
-// Enable reverse sort
-#define CONFIG_FEATURE_SORT_REVERSE
-//
-// Enable uniqe sort
-#define CONFIG_FEATURE_SORT_UNIQUE
-//
-// Enable command line editing in the shell.  
-// Only relevant if a shell is enabled. On by default.
-#define CONFIG_FEATURE_COMMAND_EDITING
-//
-// Enable tab completion in the shell.  This is now working quite nicely.
-// This feature adds a bit over 4k. Only relevant if a shell is enabled.
-#define CONFIG_FEATURE_COMMAND_TAB_COMPLETION
-//
-// Attempts to match usernames in a ~-prefixed path
-//#define CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
-//
-//Allow the shell to invoke all the compiled in BusyBox applets as if they
-//were shell builtins.  Nice for staticly linking an emergency rescue shell,
-//among other things. Off by default.
-// Only relevant if a shell is enabled.
-#define CONFIG_FEATURE_SH_STANDALONE_SHELL
-//
-//When this is enabled, busybox shell applets can be called using full path
-//names.  This causes applets (i.e., most busybox commands) to override
-//real commands on the filesystem.  For example, if you run run /bin/cat, it
-//will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_
-//busybox.  Some systems want this, others do not.  Choose wisely.  :-) This
-//only has meaning when CONFIG_FEATURE_SH_STANDALONE_SHELL is enabled.
-// Only relevant if a shell is enabled. Off by default.
-#define CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN
-//
-// Uncomment this option for a fancy shell prompt that includes the
-// current username and hostname.  On systems that don't have usernames
-// or hostnames, this can look hideous.
-// Only relevant if a shell is enabled.
-#define CONFIG_FEATURE_SH_FANCY_PROMPT
-//
-//Turn on extra fbset options
-//#define CONFIG_FEATURE_FBSET_FANCY
-//
-//Turn on fbset readmode support
-//#define CONFIG_FEATURE_FBSET_READMODE
-//
-// Support insmod/lsmod/rmmod for post 2.1 kernels
-#define CONFIG_FEATURE_NEW_MODULE_INTERFACE
-//
-// Support insmod/lsmod/rmmod for pre 2.1 kernels
-//#define CONFIG_FEATURE_OLD_MODULE_INTERFACE
-//
-// Support module version checking
-//#define CONFIG_FEATURE_INSMOD_VERSION_CHECKING
-//
-// Support for uClinux memory usage optimization, which will load the image
-// directly into the kernel memory.  This divides memory requrements by three.
-// If you are not running uClinux (i.e., your CPU has an MMU) leave this
-// disabled...
-//#define CONFIG_FEATURE_INSMOD_LOADINKMEM
-//
-// Support for Minix filesystem, version 2
-//#define CONFIG_FEATURE_MINIX2
-//
-// Enable ifconfig status reporting output -- this feature adds 12k.
-#define CONFIG_FEATURE_IFCONFIG_STATUS
-//
-// Enable ifconfig slip-specific options "keepalive" and "outfill"
-//#define CONFIG_FEATURE_IFCONFIG_SLIP
-//
-// Enable ifconfig options "mem_start", "io_addr", and "irq".
-//#define CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
-//
-// Enable ifconfig option "hw".  Currently works for only with "ether".
-#define CONFIG_FEATURE_IFCONFIG_HW
-//
-// Enable busybox --install [-s]
-// to create links (or symlinks) for all the commands that are 
-// compiled into the binary.  (needs /proc filesystem)
-#define CONFIG_FEATURE_INSTALLER
-//
-// Enable a nifty progress meter in wget (adds just under 2k)
-#define CONFIG_FEATURE_WGET_STATUSBAR
-//
-// Enable HTTP authentication in wget
-#define CONFIG_FEATURE_WGET_AUTHENTICATION
-//
-// Clean up all memory before exiting -- usually not needed
-// as the OS can clean up...  Don't enable this unless you
-// have a really good reason for cleaning things up manually.
-//#define CONFIG_FEATURE_CLEAN_UP
-//
-// Support for human readable output by ls, du, etc.(example 13k, 23M, 235G)
-#define CONFIG_FEATURE_HUMAN_READABLE
-//
-// Support for the find -type option.
-#define CONFIG_FEATURE_FIND_TYPE
-//
-// Support for the find -perm option.
-#define CONFIG_FEATURE_FIND_PERM
-//
-// Support for the find -mtine option.
-#define CONFIG_FEATURE_FIND_MTIME
-//
-// Support for the -A -B and -C context flags in grep
-//#define CONFIG_FEATURE_GREP_CONTEXT
-//
-// Support for the EGREP applet (alias to the grep applet)
-//#define CONFIG_FEATURE_GREP_EGREP_ALIAS
-//
-// Tell tftp what commands that should be supported.
-#define CONFIG_FEATURE_TFTP_PUT
-#define CONFIG_FEATURE_TFTP_GET
-//
-// features for vi
-#define CONFIG_FEATURE_VI_COLON		// ":" colon commands, no "ex" mode
-#define CONFIG_FEATURE_VI_YANKMARK		// Yank/Put commands and Mark cmds
-#define CONFIG_FEATURE_VI_SEARCH		// search and replace cmds
-#define CONFIG_FEATURE_VI_USE_SIGNALS	// catch signals
-#define CONFIG_FEATURE_VI_DOT_CMD		// remember previous cmd and "." cmd
-#define CONFIG_FEATURE_VI_READONLY		// vi -R and "view" mode
-#define CONFIG_FEATURE_VI_SETOPTS		// set-able options,  ai ic showmatch
-#define CONFIG_FEATURE_VI_SET		// :set
-#define CONFIG_FEATURE_VI_WIN_RESIZE	// handle window resize
-//
-// Enable a if you system have setuped locale
-//#define CONFIG_LOCALE_SUPPORT
-//
-// Support for TELNET to pass TERM type to remote host.  Adds 384 bytes.
-#define CONFIG_FEATURE_TELNET_TTYPE
-//
-// End of Features List
-//
-//
-//
-//
-//
-//
-//---------------------------------------------------
-// Nothing beyond this point should ever be touched by 
-// mere mortals so leave this stuff alone.
-//
-#include <features.h>
-#if defined __UCLIBC__ && ! defined __UCLIBC_HAS_MMU__
-	#undef CONFIG_RPM2CPIO		/* Uses gz_open(), which uses fork() */
-	#undef CONFIG_DPKG_DEB		/* Uses gz_open(), which uses fork() */
-	#undef CONFIG_ASH			/* Uses fork() */
-	#undef CONFIG_HUSH			/* Uses fork() */
-	#undef CONFIG_LASH			/* Uses fork() */
-	#undef CONFIG_INIT			/* Uses fork() */
-	#undef CONFIG_FEATURE_TAR_GZIP	/* Uses fork() */
-	#undef CONFIG_SYSLOGD		/* Uses daemon() */
-	#undef CONFIG_KLOGD			/* Uses daemon() */
-	#undef CONFIG_UPDATE		/* Uses daemon() */
-#endif
-#if defined CONFIG_ASH || defined CONFIG_HUSH || defined CONFIG_LASH || defined CONFIG_MSH
-	#if defined CONFIG_FEATURE_COMMAND_EDITING
-		#define CONFIG_CMDEDIT
-	#else
-		#undef CONFIG_FEATURE_COMMAND_EDITING
-		#undef CONFIG_FEATURE_COMMAND_TAB_COMPLETION
-		#undef CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
-		#undef CONFIG_FEATURE_SH_FANCY_PROMPT
-	#endif
-#else
-	#undef CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN
-	#undef CONFIG_FEATURE_SH_STANDALONE_SHELL
-	#undef CONFIG_FEATURE_SH_FANCY_PROMPT
-#endif
-//
-#ifdef CONFIG_KILLALL
-	#ifndef CONFIG_KILL
-		#define CONFIG_KILL
-	#endif
-#endif
-//
-#ifndef CONFIG_INIT
-	#undef CONFIG_FEATURE_INITRD
-#endif
-//
-#if defined CONFIG_MOUNT && defined CONFIG_FEATURE_NFSMOUNT
-	#define CONFIG_NFSMOUNT
-#endif
-//
-#if defined CONFIG_FEATURE_AUTOWIDTH
-	#ifndef CONFIG_FEATURE_USE_TERMIOS
-		#define CONFIG_FEATURE_USE_TERMIOS
-	#endif
-#endif
-//
-#if defined CONFIG_INSMOD || defined CONFIG_LSMOD
-	#if ! defined CONFIG_FEATURE_NEW_MODULE_INTERFACE && ! defined CONFIG_FEATURE_OLD_MODULE_INTERFACE
-		#define CONFIG_FEATURE_NEW_MODULE_INTERFACE
-	#endif
-#endif
-//
-#ifdef CONFIG_UNIX2DOS
-	#define CONFIG_DOS2UNIX
-#endif	
-//
-#ifdef CONFIG_SYSLOGD
-	#if defined CONFIG_FEATURE_IPC_SYSLOG
-		#define CONFIG_LOGREAD
-	#endif
-#endif
-//
-#if defined CONFIG_ASH && defined CONFIG_FEATURE_SH_IS_ASH
-# define shell_main ash_main
-#elif defined CONFIG_HUSH && defined CONFIG_FEATURE_SH_IS_HUSH
-# define shell_main hush_main
-#elif defined CONFIG_LASH && defined CONFIG_FEATURE_SH_IS_LASH
-# define shell_main lash_main
-#elif defined CONFIG_MSH && defined CONFIG_FEATURE_SH_IS_MSH
-# define shell_main msh_main
-#endif
diff --git a/debian/Config.h-udeb b/debian/Config.h-udeb
deleted file mode 100644
index 28c4031..0000000
--- a/debian/Config.h-udeb
+++ /dev/null
@@ -1,469 +0,0 @@
-/* vi: set sw=4 ts=4: */
-// This file defines the feature set to be compiled into busybox.
-// When you turn things off here, they won't be compiled in at all.
-//
-//// This file is parsed by sed.  You MUST use single line comments.
-//   i.e.,  //#define CONFIG_BLAH
-//
-//
-// BusyBox Applications
-//#define CONFIG_ADJTIMEX
-//#define CONFIG_AR
-//#define CONFIG_ASH
-#define CONFIG_BASENAME
-#define CONFIG_CAT
-#define CONFIG_CHGRP
-#define CONFIG_CHMOD
-#define CONFIG_CHOWN
-#define CONFIG_CHROOT
-#define CONFIG_CHVT
-#define CONFIG_CLEAR
-//#define CONFIG_CMP
-#define CONFIG_CP
-//#define CONFIG_CPIO
-#define CONFIG_CUT
-#define CONFIG_DATE
-//#define CONFIG_DC
-#define CONFIG_DD
-//#define CONFIG_DEALLOCVT
-#define CONFIG_DF
-#define CONFIG_DIRNAME
-#define CONFIG_DMESG
-//#define CONFIG_DOS2UNIX
-//#define CONFIG_DPKG
-//#define CONFIG_DPKG_DEB
-//#define CONFIG_DUTMP
-#define CONFIG_DU
-//#define CONFIG_DUMPKMAP
-#define CONFIG_ECHO
-#define CONFIG_ENV
-#define CONFIG_EXPR
-//#define CONFIG_FBSET
-//#define CONFIG_FDFLUSH
-#define CONFIG_FIND
-#define CONFIG_FREE
-#define CONFIG_FREERAMDISK
-//#define CONFIG_FSCK_MINIX
-//#define CONFIG_GETOPT
-#define CONFIG_GREP
-#define CONFIG_GUNZIP
-#define CONFIG_GZIP
-#define CONFIG_HALT
-#define CONFIG_HEAD
-//#define CONFIG_HOSTID
-//#define CONFIG_HOSTNAME
-//#define CONFIG_HUSH
-#define CONFIG_ID
-//#define CONFIG_IFCONFIG
-#define CONFIG_INIT
-//#define CONFIG_INSMOD
-#define CONFIG_KILL
-#define CONFIG_KILLALL
-#define CONFIG_KLOGD
-//#define CONFIG_LASH
-//#define CONFIG_LENGTH
-#define CONFIG_LN
-//#define CONFIG_LOADACM
-//#define CONFIG_LOADFONT
-#define CONFIG_LOADKMAP
-#define CONFIG_LOGGER
-//#define CONFIG_LOGNAME
-#define CONFIG_LS
-#define CONFIG_LSMOD
-//#define CONFIG_MAKEDEVS
-#define CONFIG_MD5SUM
-#define CONFIG_MKDIR
-//#define CONFIG_MKFIFO
-//#define CONFIG_MKFS_MINIX
-#define CONFIG_MKNOD
-#define CONFIG_MKSWAP
-//#define CONFIG_MKTEMP
-//#define CONFIG_MODPROBE
-#define CONFIG_MORE
-#define CONFIG_MOUNT
-//#define CONFIG_MSH
-//#define CONFIG_MT
-#define CONFIG_MV
-//#define CONFIG_NC
-//#define CONFIG_NSLOOKUP
-//#define CONFIG_PIDOF
-#define CONFIG_PING
-#define CONFIG_PIVOT_ROOT
-#define CONFIG_POWEROFF
-//#define CONFIG_PRINTF
-#define CONFIG_PS
-#define CONFIG_PWD
-//#define CONFIG_RDATE
-//#define CONFIG_READLINK
-#define CONFIG_REBOOT
-//#define CONFIG_RENICE
-#define CONFIG_RESET
-#define CONFIG_RM
-#define CONFIG_RMDIR
-//#define CONFIG_RMMOD
-//#define CONFIG_ROUTE
-//#define CONFIG_RPM2CPIO
-#define CONFIG_SED
-//#define CONFIG_SETKEYCODES
-#define CONFIG_SLEEP
-#define CONFIG_SORT
-//#define CONFIG_STTY
-#define CONFIG_SWAPONOFF
-#define CONFIG_SYNC
-#define CONFIG_SYSLOGD
-#define CONFIG_TAIL
-#define CONFIG_TAR
-//#define CONFIG_TEE
-//#define CONFIG_TEST
-#define CONFIG_TELNET
-//#define CONFIG_TFTP
-#define CONFIG_TOUCH
-#define CONFIG_TR
-//#define CONFIG_TRACEROUTE
-#define CONFIG_TRUE_FALSE
-#define CONFIG_TTY
-//#define CONFIG_UNIX2DOS
-//#define CONFIG_UUENCODE
-//#define CONFIG_UUDECODE
-#define CONFIG_UMOUNT
-#define CONFIG_UNIQ
-#define CONFIG_UNAME
-//#define CONFIG_UPDATE
-#define CONFIG_UPTIME
-//#define CONFIG_USLEEP
-#define CONFIG_VI
-//#define CONFIG_WATCHDOG
-#define CONFIG_WC
-#define CONFIG_WGET
-#define CONFIG_WHICH
-#define CONFIG_WHOAMI
-#define CONFIG_XARGS
-#define CONFIG_YES
-// End of Applications List
-//
-//
-//
-// ---------------------------------------------------------
-// This is where feature definitions go.  Generally speaking,
-// turning this stuff off makes things a bit smaller (and less 
-// pretty/useful).
-//
-//
-// If you enabled one or more of the shells, you may select which one
-// should be run when sh is invoked:
-//#define CONFIG_FEATURE_SH_IS_ASH
-//#define CONFIG_FEATURE_SH_IS_HUSH
-//#define CONFIG_FEATURE_SH_IS_LASH
-#define CONFIG_FEATURE_SH_IS_MSH
-//
-// BusyBox will, by default, malloc space for its buffers.  This costs code
-// size for the call to xmalloc.  You can use the following feature to have
-// them put on the stack.  For some very small machines with limited stack
-// space, this can be deadly.  For most folks, this works just fine...
-//#define CONFIG_FEATURE_BUFFERS_GO_ON_STACK
-// The third alternative for buffer allocation is to use BSS.  This works
-// beautifully for computers with a real MMU (and OS support), but wastes
-// runtime RAM for uCLinux.  This behavior was the only one available for
-// BusyBox versions 0.48 and earlier.
-//#define CONFIG_FEATURE_BUFFERS_GO_IN_BSS
-//
-// Turn this on to use Erik's very cool devps, and devmtab kernel drivers,
-// thereby eliminating the need for the /proc filesystem and thereby saving
-// lots and lots memory for more important things.  NOTE:  If you enable this
-// feature, you _must_ have patched the kernel to include the devps patch that
-// is included in the busybox/kernel-patches directory.  You will also need to
-// create some device special files in /dev on your embedded system:
-//        mknod /dev/mtab c 10 22
-//        mknod /dev/ps c 10 21
-// I emailed Linus and this patch will not be going into the stock kernel.
-//#define CONFIG_FEATURE_USE_DEVPS_PATCH
-//
-// show verbose usage messages
-//#define CONFIG_FEATURE_VERBOSE_USAGE
-//
-// Use termios to manipulate the screen ('more' is prettier with this on)
-#define CONFIG_FEATURE_USE_TERMIOS
-//
-// calculate terminal & column widths (for more and ls)
-#define CONFIG_FEATURE_AUTOWIDTH
-//
-// show username/groupnames for ls
-#define CONFIG_FEATURE_LS_USERNAME
-//
-// show file timestamps in ls
-#define CONFIG_FEATURE_LS_TIMESTAMPS
-//
-// enable ls -p and -F
-#define CONFIG_FEATURE_LS_FILETYPES
-//
-// sort the file names
-#define CONFIG_FEATURE_LS_SORTFILES
-//
-// enable ls -R
-#define CONFIG_FEATURE_LS_RECURSIVE
-//
-// enable ls -L
-#define CONFIG_FEATURE_LS_FOLLOWLINKS
-//
-// Disable for a smaller (but less functional) ping
-#define CONFIG_FEATURE_FANCY_PING
-//
-// Make init use a simplified /etc/inittab file (recommended).
-#define CONFIG_FEATURE_USE_INITTAB
-//
-//Enable init being called as /linuxrc
-#define CONFIG_FEATURE_INITRD
-//
-//Have init enable core dumping for child processes (for debugging only) 
-//#define CONFIG_FEATURE_INIT_COREDUMPS
-//
-//Make sure nothing is printed to the console on boot
-//#define CONFIG_FEATURE_EXTRA_QUIET
-//
-// enable syslogd -R remotehost
-#define CONFIG_FEATURE_REMOTE_LOG
-//
-// enable syslogd -C
-//#define CONFIG_FEATURE_IPC_SYSLOG
-//
-//Disable for a simple tail implementation (2.34k vs 3k for the full one).
-//Both provide 'tail -f', but this cuts out -c, -q, -s, and -v. 
-#define CONFIG_FEATURE_FANCY_TAIL
-//
-// Enable support for loop devices in mount
-#define CONFIG_FEATURE_MOUNT_LOOP
-//
-// Enable support for a real /etc/mtab file instead of /proc/mounts
-//#define CONFIG_FEATURE_MTAB_SUPPORT
-//
-// Enable support for mounting remote NFS volumes. 
-// You may need to mount with "-o nolock" if you are
-// not running a local portmapper daemon...
-#define CONFIG_FEATURE_NFSMOUNT
-//
-// Enable support forced filesystem unmounting 
-// (i.e., in case of an unreachable NFS system).
-#define CONFIG_FEATURE_MOUNT_FORCE
-//
-// Enable support for creation of tar files.
-#define CONFIG_FEATURE_TAR_CREATE
-//
-// Enable support for "--exclude" and "-X" for excluding files
-#define CONFIG_FEATURE_TAR_EXCLUDE
-//
-// Enable support for tar -z option (currently only works for inflating)
-#define CONFIG_FEATURE_TAR_GZIP 
-//
-// Enable reverse sort
-#define CONFIG_FEATURE_SORT_REVERSE
-//
-// Enable uniqe sort
-#define CONFIG_FEATURE_SORT_UNIQUE
-//
-// Enable command line editing in the shell.  
-// Only relevant if a shell is enabled. On by default.
-#define CONFIG_FEATURE_COMMAND_EDITING
-//
-// Enable tab completion in the shell.  This is now working quite nicely.
-// This feature adds a bit over 4k. Only relevant if a shell is enabled.
-#define CONFIG_FEATURE_COMMAND_TAB_COMPLETION
-//
-// Attempts to match usernames in a ~-prefixed path
-//#define CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
-//
-//Allow the shell to invoke all the compiled in BusyBox applets as if they
-//were shell builtins.  Nice for staticly linking an emergency rescue shell,
-//among other things. Off by default.
-// Only relevant if a shell is enabled.
-//#define CONFIG_FEATURE_SH_STANDALONE_SHELL
-//
-//When this is enabled, busybox shell applets can be called using full path
-//names.  This causes applets (i.e., most busybox commands) to override
-//real commands on the filesystem.  For example, if you run run /bin/cat, it
-//will use BusyBox cat even if /bin/cat exists on the filesystem and is _not_
-//busybox.  Some systems want this, others do not.  Choose wisely.  :-) This
-//only has meaning when CONFIG_FEATURE_SH_STANDALONE_SHELL is enabled.
-// Only relevant if a shell is enabled. Off by default.
-//#define CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN
-//
-// Uncomment this option for a fancy shell prompt that includes the
-// current username and hostname.  On systems that don't have usernames
-// or hostnames, this can look hideous.
-// Only relevant if a shell is enabled.
-//#define CONFIG_FEATURE_SH_FANCY_PROMPT
-//
-//Turn on extra fbset options
-//#define CONFIG_FEATURE_FBSET_FANCY
-//
-//Turn on fbset readmode support
-//#define CONFIG_FEATURE_FBSET_READMODE
-//
-// Support insmod/lsmod/rmmod for post 2.1 kernels
-//#define CONFIG_FEATURE_NEW_MODULE_INTERFACE
-//
-// Support insmod/lsmod/rmmod for pre 2.1 kernels
-//#define CONFIG_FEATURE_OLD_MODULE_INTERFACE
-//
-// Support module version checking
-//#define CONFIG_FEATURE_INSMOD_VERSION_CHECKING
-//
-// Support for uClinux memory usage optimization, which will load the image
-// directly into the kernel memory.  This divides memory requrements by three.
-// If you are not running uClinux (i.e., your CPU has an MMU) leave this
-// disabled...
-//#define CONFIG_FEATURE_INSMOD_LOADINKMEM
-//
-// Support for Minix filesystem, version 2
-//#define CONFIG_FEATURE_MINIX2
-//
-// Enable ifconfig status reporting output -- this feature adds 12k.
-#define CONFIG_FEATURE_IFCONFIG_STATUS
-//
-// Enable ifconfig slip-specific options "keepalive" and "outfill"
-//#define CONFIG_FEATURE_IFCONFIG_SLIP
-//
-// Enable ifconfig options "mem_start", "io_addr", and "irq".
-//#define CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
-//
-// Enable ifconfig option "hw".  Currently works for only with "ether".
-#define CONFIG_FEATURE_IFCONFIG_HW
-//
-// Enable busybox --install [-s]
-// to create links (or symlinks) for all the commands that are 
-// compiled into the binary.  (needs /proc filesystem)
-#define CONFIG_FEATURE_INSTALLER
-//
-// Enable a nifty progress meter in wget (adds just under 2k)
-#define CONFIG_FEATURE_WGET_STATUSBAR
-//
-// Enable HTTP authentication in wget
-#define CONFIG_FEATURE_WGET_AUTHENTICATION
-//
-// Clean up all memory before exiting -- usually not needed
-// as the OS can clean up...  Don't enable this unless you
-// have a really good reason for cleaning things up manually.
-//#define CONFIG_FEATURE_CLEAN_UP
-//
-// Support for human readable output by ls, du, etc.(example 13k, 23M, 235G)
-#define CONFIG_FEATURE_HUMAN_READABLE
-//
-// Support for the find -type option.
-#define CONFIG_FEATURE_FIND_TYPE
-//
-// Support for the find -perm option.
-#define CONFIG_FEATURE_FIND_PERM
-//
-// Support for the find -mtine option.
-#define CONFIG_FEATURE_FIND_MTIME
-//
-// Support for the -A -B and -C context flags in grep
-//#define CONFIG_FEATURE_GREP_CONTEXT
-//
-// Support for the EGREP applet (alias to the grep applet)
-//#define CONFIG_FEATURE_GREP_EGREP_ALIAS
-//
-// Tell tftp what commands that should be supported.
-#define CONFIG_FEATURE_TFTP_PUT
-#define CONFIG_FEATURE_TFTP_GET
-//
-// features for vi
-#define CONFIG_FEATURE_VI_COLON		// ":" colon commands, no "ex" mode
-#define CONFIG_FEATURE_VI_YANKMARK		// Yank/Put commands and Mark cmds
-#define CONFIG_FEATURE_VI_SEARCH		// search and replace cmds
-#define CONFIG_FEATURE_VI_USE_SIGNALS	// catch signals
-#define CONFIG_FEATURE_VI_DOT_CMD		// remember previous cmd and "." cmd
-#define CONFIG_FEATURE_VI_READONLY		// vi -R and "view" mode
-#define CONFIG_FEATURE_VI_SETOPTS		// set-able options,  ai ic showmatch
-#define CONFIG_FEATURE_VI_SET		// :set
-#define CONFIG_FEATURE_VI_WIN_RESIZE	// handle window resize
-//
-// Enable a if you system have setuped locale
-//#define CONFIG_LOCALE_SUPPORT
-//
-// Support for TELNET to pass TERM type to remote host.  Adds 384 bytes.
-#define CONFIG_FEATURE_TELNET_TTYPE
-//
-// End of Features List
-//
-//
-//
-//
-//
-//
-//---------------------------------------------------
-// Nothing beyond this point should ever be touched by 
-// mere mortals so leave this stuff alone.
-//
-#include <features.h>
-#if defined __UCLIBC__ && ! defined __UCLIBC_HAS_MMU__
-	#undef CONFIG_RPM2CPIO		/* Uses gz_open(), which uses fork() */
-	#undef CONFIG_DPKG_DEB		/* Uses gz_open(), which uses fork() */
-	#undef CONFIG_ASH			/* Uses fork() */
-	#undef CONFIG_HUSH			/* Uses fork() */
-	#undef CONFIG_LASH			/* Uses fork() */
-	#undef CONFIG_INIT			/* Uses fork() */
-	#undef CONFIG_FEATURE_TAR_GZIP	/* Uses fork() */
-	#undef CONFIG_SYSLOGD		/* Uses daemon() */
-	#undef CONFIG_KLOGD			/* Uses daemon() */
-	#undef CONFIG_UPDATE		/* Uses daemon() */
-#endif
-#if defined CONFIG_ASH || defined CONFIG_HUSH || defined CONFIG_LASH || defined CONFIG_MSH
-	#if defined CONFIG_FEATURE_COMMAND_EDITING
-		#define CONFIG_CMDEDIT
-	#else
-		#undef CONFIG_FEATURE_COMMAND_EDITING
-		#undef CONFIG_FEATURE_COMMAND_TAB_COMPLETION
-		#undef CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION
-		#undef CONFIG_FEATURE_SH_FANCY_PROMPT
-	#endif
-#else
-	#undef CONFIG_FEATURE_SH_APPLETS_ALWAYS_WIN
-	#undef CONFIG_FEATURE_SH_STANDALONE_SHELL
-	#undef CONFIG_FEATURE_SH_FANCY_PROMPT
-#endif
-//
-#ifdef CONFIG_KILLALL
-	#ifndef CONFIG_KILL
-		#define CONFIG_KILL
-	#endif
-#endif
-//
-#ifndef CONFIG_INIT
-	#undef CONFIG_FEATURE_INITRD
-#endif
-//
-#if defined CONFIG_MOUNT && defined CONFIG_FEATURE_NFSMOUNT
-	#define CONFIG_NFSMOUNT
-#endif
-//
-#if defined CONFIG_FEATURE_AUTOWIDTH
-	#ifndef CONFIG_FEATURE_USE_TERMIOS
-		#define CONFIG_FEATURE_USE_TERMIOS
-	#endif
-#endif
-//
-#if defined CONFIG_INSMOD || defined CONFIG_LSMOD
-	#if ! defined CONFIG_FEATURE_NEW_MODULE_INTERFACE && ! defined CONFIG_FEATURE_OLD_MODULE_INTERFACE
-		#define CONFIG_FEATURE_NEW_MODULE_INTERFACE
-	#endif
-#endif
-//
-#ifdef CONFIG_UNIX2DOS
-	#define CONFIG_DOS2UNIX
-#endif	
-//
-#ifdef CONFIG_SYSLOGD
-	#if defined CONFIG_FEATURE_IPC_SYSLOG
-		#define CONFIG_LOGREAD
-	#endif
-#endif
-//
-#if defined CONFIG_ASH && defined CONFIG_FEATURE_SH_IS_ASH
-# define shell_main ash_main
-#elif defined CONFIG_HUSH && defined CONFIG_FEATURE_SH_IS_HUSH
-# define shell_main hush_main
-#elif defined CONFIG_LASH && defined CONFIG_FEATURE_SH_IS_LASH
-# define shell_main lash_main
-#elif defined CONFIG_MSH && defined CONFIG_FEATURE_SH_IS_MSH
-# define shell_main msh_main
-#endif
diff --git a/debian/Rules.mak.shared b/debian/Rules.mak.shared
new file mode 100644
index 0000000..56c4025
--- /dev/null
+++ b/debian/Rules.mak.shared
@@ -0,0 +1,237 @@
+# Rules.make for busybox
+#
+# Copyright (C) 2002 Erik Andersen <andersee@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+PROG      := busybox
+VERSION   := 0.61.pre
+BUILDTIME := $(shell TZ=UTC date -u "+%Y.%m.%d-%H:%M%z")
+HOSTCC    := gcc
+HOSTCFLAGS:= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
+
+
+# What OS are you compiling busybox for?  This allows you to include
+# OS specific things, syscall overrides, etc.
+TARGET_OS:=linux
+
+# With a modern GNU make(1) (highly recommended, that's what all the
+# developers use), all of the following configuration values can be
+# overridden at the command line.  For example:
+#   make CROSS=powerpc-linux- BB_SRC_DIR=$HOME/busybox PREFIX=/mnt/app
+
+# If you want to add some simple compiler switches (like -march=i686),
+# especially from the command line, use this instead of CFLAGS directly.
+# For optimization overrides, it's better still to set OPTIMIZATION.
+CFLAGS_EXTRA:=#-Werror
+ 
+# If you want a static binary, turn this on.
+DOSTATIC:=false
+
+# Set the following to `true' to make a debuggable build.
+# Leave this set to `false' for production use.
+DODEBUG:=false
+
+# This enables compiling with dmalloc ( http://dmalloc.com/ )
+# which is an excellent public domain mem leak and malloc problem
+# detector.  To enable dmalloc, before running busybox you will
+# want to first set up your environment.
+# eg: `export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile`
+# The debug= value is generated using the following command
+# dmalloc -p log-stats -p log-non-free -p log-bad-space -p log-elapsed-time \
+#      -p check-fence -p check-heap -p check-lists -p check-blank \
+#      -p check-funcs -p realloc-copy -p allow-free-null
+# Do not enable this for production builds...
+DODMALLOC:=false
+
+# Electric-fence is another very useful malloc debugging library.
+# Do not enable this for production builds...
+DOEFENCE:=false
+
+# If you want large file summit support, turn this on.
+# This has no effect if you don't have a kernel with lfs
+# support, and a system with libc-2.1.3 or later.
+# Some of the programs that can benefit from lfs support
+# are dd, gzip, mount, tar, and mkfs_minix.
+# LFS allows you to use the above programs for files
+# larger than 2GB!
+DOLFS:=false
+
+# If you have a "pristine" source directory, point BB_SRC_DIR to it.
+# Experimental and incomplete; tell the mailing list
+# <busybox@busybox.net> if you do or don't like it so far.
+BB_SRC_DIR:=
+
+# If you are running a cross compiler, you may want to set CROSS
+# to something more interesting, like "arm-linux-".
+CROSS:=
+CC             := $(CROSS)gcc
+AR             := $(CROSS)ar
+AS             := $(CROSS)as
+LD             := $(CROSS)ld
+NM             := $(CROSS)nm
+STRIP          := $(CROSS)strip
+CPP            := $(CC) -E
+MAKEFILES      := $(TOPDIR).config
+export VERSION BUILDTIME TOPDIR HOSTCC HOSTCFLAGS CROSS CC AR AS LD NM STRIP CPP
+
+
+# To compile vs uClibc, just use the compiler wrapper built by uClibc...
+# Everything should compile and work as expected these days...
+#CC:=/usr/i386-linux-uclibc/bin/i386-uclibc-gcc
+
+# To compile vs some other alternative libc, you may need to use/adjust
+# the following lines to meet your needs...
+#
+# If you are using Red Hat 6.x with the compatible RPMs (for developing under
+# Red Hat 5.x and glibc 2.0) uncomment the following.  Be sure to read about
+# using the compatible RPMs (compat-*) at http://www.redhat.com !
+#LIBCDIR:=/usr/i386-glibc20-linux
+#
+# The following is used for libc5 (if you install altgcc and libc5-altdev
+# on a Debian system).  
+#LIBCDIR:=/usr/i486-linuxlibc1
+#
+# For other libraries, you are on your own...
+#LDFLAGS+=-nostdlib
+#LIBRARIES:=$(LIBCDIR)/lib/libc.a -lgcc
+#CROSS_CFLAGS+=-nostdinc -I$(LIBCDIR)/include -I$(GCCINCDIR)
+#GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp")
+
+WARNINGS:=-Wall -Wstrict-prototypes -Wshadow
+CFLAGS:=-I$(TOPDIR)include
+ARFLAGS:=-r
+
+TARGET_ARCH:=${shell $(CC) -dumpmachine | sed -e s'/-.*//' \
+		-e 's/i.86/i386/' \
+		-e 's/sparc.*/sparc/' \
+		-e 's/arm.*/arm/g' \
+		-e 's/m68k.*/m68k/' \
+		-e 's/ppc/powerpc/g' \
+		-e 's/v850.*/v850/g' \
+		-e 's/sh[234]/sh/' \
+		-e 's/mips.*/mips/' \
+		}
+# A nifty macro to make testing gcc features easier
+check_gcc=$(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
+	then echo "$(1)"; else echo "$(2)"; fi)
+
+#--------------------------------------------------------
+# Arch specific compiler optimization stuff should go here.
+# Unless you want to override the defaults, do not set anything
+# for OPTIMIZATION...
+
+# use '-Os' optimization if available, else use -O2
+OPTIMIZATION:=
+OPTIMIZATION+=${call check_gcc,-Os,-O2}
+
+# Some nice architecture specific optimizations
+ifeq ($(strip $(TARGET_ARCH)),arm)
+	OPTIMIZATION+=-fstrict-aliasing
+endif
+ifeq ($(strip $(TARGET_ARCH)),i386)
+	OPTIMIZATION+=-march=i386
+	OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,)
+	OPTIMIZATION+=$(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\
+		-malign-functions=0 -malign-jumps=0 -malign-loops=0)
+endif
+OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer
+
+#
+#--------------------------------------------------------
+# If you're going to do a lot of builds with a non-vanilla configuration,
+# it makes sense to adjust parameters above, so you can type "make"
+# by itself, instead of following it by the same half-dozen overrides
+# every time.  The stuff below, on the other hand, is probably less
+# prone to casual user adjustment.
+# 
+
+ifeq ($(strip $(DOLFS)),true)
+    # For large file summit support
+    CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+endif
+ifeq ($(strip $(DODMALLOC)),true)
+    # For testing mem leaks with dmalloc
+    CFLAGS+=-DDMALLOC
+    LIBRARIES:=-ldmalloc
+    # Force debug=true, since this is useless when not debugging...
+    DODEBUG:=true
+else
+    ifeq ($(strip $(DOEFENCE)),true)
+	LIBRARIES:=-lefence
+	# Force debug=true, since this is useless when not debugging...
+	DODEBUG:=true
+    endif
+endif
+ifeq ($(strip $(DODEBUG)),true)
+    CFLAGS  +=$(WARNINGS) -g -D_GNU_SOURCE
+    LDFLAGS +=-Wl,-warn-common
+    STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging
+else
+    CFLAGS  += $(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE
+    LDFLAGS += -s -Wl,-warn-common
+    STRIPCMD:=$(STRIP) --remove-section=.note --remove-section=.comment
+endif
+ifeq ($(strip $(DOSTATIC)),true)
+    LDFLAGS += --static
+endif
+
+ifeq ($(strip $(PREFIX)),)
+    PREFIX:=`pwd`/_install
+endif
+
+# Additional complications due to support for pristine source dir.
+# Include files in the build directory should take precedence over
+# the copy in BB_SRC_DIR, both during the compilation phase and the
+# shell script that finds the list of object files.
+# Work in progress by <ldoolitt@recycle.lbl.gov>.
+#
+ifneq ($(strip $(BB_SRC_DIR)),)
+    VPATH:=$(BB_SRC_DIR)
+endif
+
+CFLAGS    += -DBB_VER='"$(VERSION)"'
+CFLAGS    += -DBB_BT='"$(BUILDTIME)"'
+OBJECTS:=$(APPLET_SOURCES:.c=.o) busybox.o usage.o applets.o
+CFLAGS    += $(CROSS_CFLAGS)
+ifdef BB_INIT_SCRIPT
+    CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"'
+endif
+
+# Put user-supplied flags at the end, where they
+# have a chance of winning.
+CFLAGS += $(CFLAGS_EXTRA)
+
+%.o: %.c
+	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
+
+ifdef _FASTDEP_ALL_SUB_DIRS
+fastdep: dummy
+	$(TOPDIR)scripts/mkdep $(CFLAGS) $(EXTRA_CFLAGS_nostdinc) -- $(wildcard *.[chS]) > .depend
+ifdef ALL_SUB_DIRS
+	$(MAKE) $(patsubst %,_sfdep_%,$(ALL_SUB_DIRS)) _FASTDEP_ALL_SUB_DIRS="$(ALL_SUB_DIRS)"
+endif
+
+$(patsubst %,_sfdep_%,$(_FASTDEP_ALL_SUB_DIRS)):
+	$(MAKE) -C $(patsubst _sfdep_%,%,$@) fastdep
+endif
+
+.PHONY: dummy
+
+
+
+.EXPORT_ALL_VARIABLES:
+
diff --git a/debian/Rules.mak.static b/debian/Rules.mak.static
new file mode 100644
index 0000000..5c7b4ff
--- /dev/null
+++ b/debian/Rules.mak.static
@@ -0,0 +1,237 @@
+# Rules.make for busybox
+#
+# Copyright (C) 2002 Erik Andersen <andersee@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+PROG      := busybox
+VERSION   := 0.61.pre
+BUILDTIME := $(shell TZ=UTC date -u "+%Y.%m.%d-%H:%M%z")
+HOSTCC    := gcc
+HOSTCFLAGS:= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
+
+
+# What OS are you compiling busybox for?  This allows you to include
+# OS specific things, syscall overrides, etc.
+TARGET_OS:=linux
+
+# With a modern GNU make(1) (highly recommended, that's what all the
+# developers use), all of the following configuration values can be
+# overridden at the command line.  For example:
+#   make CROSS=powerpc-linux- BB_SRC_DIR=$HOME/busybox PREFIX=/mnt/app
+
+# If you want to add some simple compiler switches (like -march=i686),
+# especially from the command line, use this instead of CFLAGS directly.
+# For optimization overrides, it's better still to set OPTIMIZATION.
+CFLAGS_EXTRA:=#-Werror
+ 
+# If you want a static binary, turn this on.
+DOSTATIC:=true
+
+# Set the following to `true' to make a debuggable build.
+# Leave this set to `false' for production use.
+DODEBUG:=false
+
+# This enables compiling with dmalloc ( http://dmalloc.com/ )
+# which is an excellent public domain mem leak and malloc problem
+# detector.  To enable dmalloc, before running busybox you will
+# want to first set up your environment.
+# eg: `export DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile`
+# The debug= value is generated using the following command
+# dmalloc -p log-stats -p log-non-free -p log-bad-space -p log-elapsed-time \
+#      -p check-fence -p check-heap -p check-lists -p check-blank \
+#      -p check-funcs -p realloc-copy -p allow-free-null
+# Do not enable this for production builds...
+DODMALLOC:=false
+
+# Electric-fence is another very useful malloc debugging library.
+# Do not enable this for production builds...
+DOEFENCE:=false
+
+# If you want large file summit support, turn this on.
+# This has no effect if you don't have a kernel with lfs
+# support, and a system with libc-2.1.3 or later.
+# Some of the programs that can benefit from lfs support
+# are dd, gzip, mount, tar, and mkfs_minix.
+# LFS allows you to use the above programs for files
+# larger than 2GB!
+DOLFS:=false
+
+# If you have a "pristine" source directory, point BB_SRC_DIR to it.
+# Experimental and incomplete; tell the mailing list
+# <busybox@busybox.net> if you do or don't like it so far.
+BB_SRC_DIR:=
+
+# If you are running a cross compiler, you may want to set CROSS
+# to something more interesting, like "arm-linux-".
+CROSS:=
+CC             := $(CROSS)gcc
+AR             := $(CROSS)ar
+AS             := $(CROSS)as
+LD             := $(CROSS)ld
+NM             := $(CROSS)nm
+STRIP          := $(CROSS)strip
+CPP            := $(CC) -E
+MAKEFILES      := $(TOPDIR).config
+export VERSION BUILDTIME TOPDIR HOSTCC HOSTCFLAGS CROSS CC AR AS LD NM STRIP CPP
+
+
+# To compile vs uClibc, just use the compiler wrapper built by uClibc...
+# Everything should compile and work as expected these days...
+#CC:=/usr/i386-linux-uclibc/bin/i386-uclibc-gcc
+
+# To compile vs some other alternative libc, you may need to use/adjust
+# the following lines to meet your needs...
+#
+# If you are using Red Hat 6.x with the compatible RPMs (for developing under
+# Red Hat 5.x and glibc 2.0) uncomment the following.  Be sure to read about
+# using the compatible RPMs (compat-*) at http://www.redhat.com !
+#LIBCDIR:=/usr/i386-glibc20-linux
+#
+# The following is used for libc5 (if you install altgcc and libc5-altdev
+# on a Debian system).  
+#LIBCDIR:=/usr/i486-linuxlibc1
+#
+# For other libraries, you are on your own...
+#LDFLAGS+=-nostdlib
+#LIBRARIES:=$(LIBCDIR)/lib/libc.a -lgcc
+#CROSS_CFLAGS+=-nostdinc -I$(LIBCDIR)/include -I$(GCCINCDIR)
+#GCCINCDIR:=$(shell gcc -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp")
+
+WARNINGS:=-Wall -Wstrict-prototypes -Wshadow
+CFLAGS:=-I$(TOPDIR)include
+ARFLAGS:=-r
+
+TARGET_ARCH:=${shell $(CC) -dumpmachine | sed -e s'/-.*//' \
+		-e 's/i.86/i386/' \
+		-e 's/sparc.*/sparc/' \
+		-e 's/arm.*/arm/g' \
+		-e 's/m68k.*/m68k/' \
+		-e 's/ppc/powerpc/g' \
+		-e 's/v850.*/v850/g' \
+		-e 's/sh[234]/sh/' \
+		-e 's/mips.*/mips/' \
+		}
+# A nifty macro to make testing gcc features easier
+check_gcc=$(shell if $(CC) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \
+	then echo "$(1)"; else echo "$(2)"; fi)
+
+#--------------------------------------------------------
+# Arch specific compiler optimization stuff should go here.
+# Unless you want to override the defaults, do not set anything
+# for OPTIMIZATION...
+
+# use '-Os' optimization if available, else use -O2
+OPTIMIZATION:=
+OPTIMIZATION+=${call check_gcc,-Os,-O2}
+
+# Some nice architecture specific optimizations
+ifeq ($(strip $(TARGET_ARCH)),arm)
+	OPTIMIZATION+=-fstrict-aliasing
+endif
+ifeq ($(strip $(TARGET_ARCH)),i386)
+	OPTIMIZATION+=-march=i386
+	OPTIMIZATION+=$(call check_gcc,-mpreferred-stack-boundary=2,)
+	OPTIMIZATION+=$(call check_gcc,-falign-functions=0 -falign-jumps=0 -falign-loops=0,\
+		-malign-functions=0 -malign-jumps=0 -malign-loops=0)
+endif
+OPTIMIZATIONS:=$(OPTIMIZATION) -fomit-frame-pointer
+
+#
+#--------------------------------------------------------
+# If you're going to do a lot of builds with a non-vanilla configuration,
+# it makes sense to adjust parameters above, so you can type "make"
+# by itself, instead of following it by the same half-dozen overrides
+# every time.  The stuff below, on the other hand, is probably less
+# prone to casual user adjustment.
+# 
+
+ifeq ($(strip $(DOLFS)),true)
+    # For large file summit support
+    CFLAGS+=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
+endif
+ifeq ($(strip $(DODMALLOC)),true)
+    # For testing mem leaks with dmalloc
+    CFLAGS+=-DDMALLOC
+    LIBRARIES:=-ldmalloc
+    # Force debug=true, since this is useless when not debugging...
+    DODEBUG:=true
+else
+    ifeq ($(strip $(DOEFENCE)),true)
+	LIBRARIES:=-lefence
+	# Force debug=true, since this is useless when not debugging...
+	DODEBUG:=true
+    endif
+endif
+ifeq ($(strip $(DODEBUG)),true)
+    CFLAGS  +=$(WARNINGS) -g -D_GNU_SOURCE
+    LDFLAGS +=-Wl,-warn-common
+    STRIPCMD:=/bin/true -Not_stripping_since_we_are_debugging
+else
+    CFLAGS  += $(WARNINGS) $(OPTIMIZATIONS) -D_GNU_SOURCE
+    LDFLAGS += -s -Wl,-warn-common
+    STRIPCMD:=$(STRIP) --remove-section=.note --remove-section=.comment
+endif
+ifeq ($(strip $(DOSTATIC)),true)
+    LDFLAGS += --static
+endif
+
+ifeq ($(strip $(PREFIX)),)
+    PREFIX:=`pwd`/_install
+endif
+
+# Additional complications due to support for pristine source dir.
+# Include files in the build directory should take precedence over
+# the copy in BB_SRC_DIR, both during the compilation phase and the
+# shell script that finds the list of object files.
+# Work in progress by <ldoolitt@recycle.lbl.gov>.
+#
+ifneq ($(strip $(BB_SRC_DIR)),)
+    VPATH:=$(BB_SRC_DIR)
+endif
+
+CFLAGS    += -DBB_VER='"$(VERSION)"'
+CFLAGS    += -DBB_BT='"$(BUILDTIME)"'
+OBJECTS:=$(APPLET_SOURCES:.c=.o) busybox.o usage.o applets.o
+CFLAGS    += $(CROSS_CFLAGS)
+ifdef BB_INIT_SCRIPT
+    CFLAGS += -DINIT_SCRIPT='"$(BB_INIT_SCRIPT)"'
+endif
+
+# Put user-supplied flags at the end, where they
+# have a chance of winning.
+CFLAGS += $(CFLAGS_EXTRA)
+
+%.o: %.c
+	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
+
+ifdef _FASTDEP_ALL_SUB_DIRS
+fastdep: dummy
+	$(TOPDIR)scripts/mkdep $(CFLAGS) $(EXTRA_CFLAGS_nostdinc) -- $(wildcard *.[chS]) > .depend
+ifdef ALL_SUB_DIRS
+	$(MAKE) $(patsubst %,_sfdep_%,$(ALL_SUB_DIRS)) _FASTDEP_ALL_SUB_DIRS="$(ALL_SUB_DIRS)"
+endif
+
+$(patsubst %,_sfdep_%,$(_FASTDEP_ALL_SUB_DIRS)):
+	$(MAKE) -C $(patsubst _sfdep_%,%,$@) fastdep
+endif
+
+.PHONY: dummy
+
+
+
+.EXPORT_ALL_VARIABLES:
+
diff --git a/debian/rules b/debian/rules
index 2a0b48f..ba1530d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -17,6 +17,7 @@
 	dh_testroot
 	$(MAKE) clean
 	cp ./debian/config-deb .config
+	cp ./debian/Rules.mak.shared Rules.mak
 	$(MAKE) dep
 	$(MAKE)
 	install -D busybox ./debian/busybox/bin/busybox
@@ -36,6 +37,7 @@
 	dh_testroot
 	$(MAKE) clean
 	cp ./debian/config-udeb .config
+	cp ./debian/Rules.mak.shared Rules.mak
 	$(MAKE) dep
 	$(MAKE)
 	install -D busybox ./debian/busybox-udeb/bin/busybox
@@ -55,6 +57,7 @@
 	dh_testroot
 	$(MAKE) clean
 	cp ./debian/config-static .config
+	cp ./debian/Rules.mak.static Rules.mak
 	$(MAKE) dep
 	$(MAKE)
 	install -D busybox ./debian/busybox-static/bin/busybox
