buildroot: cleanup <package>-clean targets.

Based on input from Arndt Kritzner & Bernhard Fischer.
diff --git a/package/avahi/avahi.mk b/package/avahi/avahi.mk
index cff9693..2f423d7 100644
--- a/package/avahi/avahi.mk
+++ b/package/avahi/avahi.mk
@@ -181,7 +181,7 @@
 avahi: uclibc busybox libdaemon $(AVAHI_TARGETS)
 
 avahi-clean:
-	$(MAKE) -C $(AVAHI_DIR) distclean
+	-$(MAKE) -C $(AVAHI_DIR) distclean
 	-rm -rf $(TARGET_DIR)/etc/avahi
 	-rm -f $(TARGET_DIR)/var/lib/avahi-autoipd
 	-rm -f $(TARGET_DIR)/etc/init.d/S*avahi*
diff --git a/package/berkeleydb/berkeleydb.mk b/package/berkeleydb/berkeleydb.mk
index 84d7c1d..1d7b16d 100644
--- a/package/berkeleydb/berkeleydb.mk
+++ b/package/berkeleydb/berkeleydb.mk
@@ -84,7 +84,7 @@
 berkeleydb-headers: $(TARGET_DIR)/usr/lib/libdb.a
 
 berkeleydb-clean:
-	$(MAKE) -C $(DB_DIR)/build_unix clean
+	-$(MAKE) -C $(DB_DIR)/build_unix clean
 
 berkeleydb-dirclean:
 	rm -rf $(DB_DIR)
diff --git a/package/boa/boa.mk b/package/boa/boa.mk
index a429cd2..df4dd73 100644
--- a/package/boa/boa.mk
+++ b/package/boa/boa.mk
@@ -68,9 +68,10 @@
 boa-source: $(DL_DIR)/$(BOA_SOURCE)
 
 boa-clean:
-	@if [ -d $(BOA_WORKDIR)/Makefile ]; then \
-		$(MAKE) -C $(BOA_WORKDIR) clean; \
-	fi
+	-$(MAKE) -C $(BOA_WORKDIR) clean
+	rm -rf $(TARGET_DIR)/usr/sbin/boa \
+		$(TARGET_DIR)/usr/lib/boa/boa_indexer \
+		$(TARGET_DIR)/etc/mime.types $(TARGET_DIR)/etc/boa
 
 boa-dirclean:
 	rm -rf $(BOA_DIR) $(BOA_WORKDIR)
diff --git a/package/dillo/dillo.mk b/package/dillo/dillo.mk
index 2a6e9ec..b407d60 100644
--- a/package/dillo/dillo.mk
+++ b/package/dillo/dillo.mk
@@ -44,9 +44,7 @@
 dillo-source: $(DL_DIR)/$(DILLO_SOURCE)
 
 dillo-clean:
-	@if [ -d $(DILLO_DIR)/Makefile ]; then \
-		$(MAKE) -C $(DILLO_DIR) clean; \
-	fi
+	-$(MAKE) -C $(DILLO_DIR) clean
 
 dillo-dirclean:
 	rm -rf $(DILLO_DIR)
diff --git a/package/dm/dm.mk b/package/dm/dm.mk
index e407f89..a9c1bdd 100644
--- a/package/dm/dm.mk
+++ b/package/dm/dm.mk
@@ -114,9 +114,9 @@
 dm: uclibc $(DM_TARGET_BINARY) $(DM_TARGET_LIBRARY) #$(DM_TARGET_HEADER)
 
 dm-clean:
-	rm $(DM_TARGET_BINARY) $(DM_TARGET_LIBRARY) \
+	rm -f $(DM_TARGET_BINARY) $(DM_TARGET_LIBRARY) \
 		$(DM_TARGET_LIBRARY).$(DM_BASEVER) $(DM_TARGET_HEADER)
-	$(MAKE) -C $(DM_DIR) clean
+	-$(MAKE) -C $(DM_DIR) clean
 
 dm-dirclean:
 	rm -rf $(DM_DIR)
diff --git a/package/dmalloc/dmalloc.mk b/package/dmalloc/dmalloc.mk
index 0ff3fc4..c705b51 100644
--- a/package/dmalloc/dmalloc.mk
+++ b/package/dmalloc/dmalloc.mk
@@ -85,11 +85,11 @@
 dmalloc: uclibc $(TARGET_DIR)/$(DMALLOC_TARGET_BINARY)
 
 dmalloc-clean:
-	rm -f $(TARGET_DIR)/usr/lib/libdmalloc*
-	rm -f $(STAGING_DIR)/usr/lib/libdmalloc*
+	-rm -f $(TARGET_DIR)/usr/lib/libdmalloc*
+	-rm -f $(STAGING_DIR)/usr/lib/libdmalloc*
 	rm -f $(STAGING_DIR)/usr/include/dmalloc.h
 	rm -f $(TARGET_DIR)/$(DMALLOC_TARGET_BINARY)
-	$(MAKE) -C $(DMALLOC_DIR) clean
+	-$(MAKE) -C $(DMALLOC_DIR) clean
 
 dmalloc-dirclean:
 	rm -rf $(DMALLOC_DIR)
diff --git a/package/dmraid/dmraid.mk b/package/dmraid/dmraid.mk
index f790ca5..500ee0d 100644
--- a/package/dmraid/dmraid.mk
+++ b/package/dmraid/dmraid.mk
@@ -52,7 +52,7 @@
 
 dmraid-clean:
 	rm -f $(DMRAID_TARGET_BINARY) $(TARGET_DIR)/etc/init.d/dmraid
-	$(MAKE) -C $(DMRAID_DIR) clean
+	-$(MAKE) -C $(DMRAID_DIR) clean
 
 dmraid-dirclean:
 	rm -rf $(DMRAID_DIR)
diff --git a/package/dropbear/dropbear.mk b/package/dropbear/dropbear.mk
index bed7553..c4d11c5 100644
--- a/package/dropbear/dropbear.mk
+++ b/package/dropbear/dropbear.mk
@@ -63,9 +63,10 @@
 dropbear: uclibc zlib $(TARGET_DIR)/$(DROPBEAR_TARGET_BINARY)
 
 dropbear-clean:
-	$(MAKE) DESTDIR=$(TARGET_DIR) $(TARGET_CONFIGURE_OPTS) \
-		LD=$(TARGET_CC) -C $(DROPBEAR_DIR) uninstall
 	-$(MAKE) -C $(DROPBEAR_DIR) clean
+	rm -f $(TARGET_DIR)/$(DROPBEAR_TARGET_BINARY)
+	rm -f $(TARGET_DIR)/usr/bin/{scp,ssh,dbclient,dropbearkey,dropbearconvert}
+	rm -f $(TARGET_DIR)/etc/init.d/S50dropbear
 
 dropbear-dirclean:
 	rm -rf $(DROPBEAR_DIR)
diff --git a/package/fakeroot/fakeroot.mk b/package/fakeroot/fakeroot.mk
index 94e22f4..d657710 100644
--- a/package/fakeroot/fakeroot.mk
+++ b/package/fakeroot/fakeroot.mk
@@ -57,7 +57,7 @@
 host-fakeroot: uclibc $(STAGING_DIR)/usr/bin/fakeroot
 
 host-fakeroot-clean:
-	$(MAKE) -C $(FAKEROOT_DIR1) clean
+	-$(MAKE) -C $(FAKEROOT_DIR1) clean
 
 host-fakeroot-dirclean:
 	rm -rf $(FAKEROOT_DIR1)
@@ -115,7 +115,7 @@
 fakeroot: uclibc $(TARGET_DIR)/usr/bin/fakeroot
 
 fakeroot-clean:
-	$(MAKE) -C $(FAKEROOT_DIR2) clean
+	-$(MAKE) -C $(FAKEROOT_DIR2) clean
 	rm -f $(TARGET_DIR)/usr/bin/fake{d,root}
 
 fakeroot-dirclean:
diff --git a/package/file/file.mk b/package/file/file.mk
index fe7a8a6..f420571 100644
--- a/package/file/file.mk
+++ b/package/file/file.mk
@@ -40,7 +40,7 @@
 host-file: $(TOOL_BUILD_DIR)/bin/file
 
 host-file-clean:
-	$(MAKE) -C $(FILE_DIR1) clean
+	-$(MAKE) -C $(FILE_DIR1) clean
 
 host-file-dirclean:
 	rm -rf $(FILE_DIR1)
diff --git a/package/iperf/iperf.mk b/package/iperf/iperf.mk
index 87f40a6..7314902 100644
--- a/package/iperf/iperf.mk
+++ b/package/iperf/iperf.mk
@@ -58,9 +58,8 @@
 iperf-source: $(DL_DIR)/$(IPERF_SOURCE)
 
 iperf-clean:
-	@if [ -d $(IPERF_KDIR)/Makefile ]; then \
-		$(MAKE) -C $(IPERF_DIR) clean; \
-	fi
+	rm -f $(TARGET_DIR)/usr/bin/iperf
+	-$(MAKE) -C $(IPERF_DIR) clean
 
 iperf-dirclean:
 	rm -rf $(IPERF_DIR)
diff --git a/package/ipsec-tools/ipsec-tools.mk b/package/ipsec-tools/ipsec-tools.mk
index 05d6eb7..cc3d7c4 100644
--- a/package/ipsec-tools/ipsec-tools.mk
+++ b/package/ipsec-tools/ipsec-tools.mk
@@ -142,8 +142,8 @@
 ipsec-tools-uninstall:
 
 ipsec-tools-clean:
-	$(MAKE) -C $(IPSEC_TOOLS_DIR) DESTDIR=$(TARGET_DIR) uninstall
-	$(MAKE) -C $(IPSEC_TOOLS_DIR) clean
+	-$(MAKE) -C $(IPSEC_TOOLS_DIR) DESTDIR=$(TARGET_DIR) uninstall
+	-$(MAKE) -C $(IPSEC_TOOLS_DIR) clean
 ifeq ($(strip $(BR2_PACKAGE_IPSEC_TOOLS_LIBS)),y)
 	rm -f $(addprefix $(STAGING_DIR)/lib/, \
 		libipsec.a libipsec.la libracoon.a libracoon.la)
@@ -151,7 +151,6 @@
 	rm -f $(IPSEC_TOOLS_DIR)/.configured
 
 ipsec-tools-dirclean:
-	@echo $(LINUX_DIR)
 	rm -rf $(IPSEC_TOOLS_DIR)
 
 ifeq ($(strip $(BR2_PACKAGE_IPSEC_TOOLS)), y)
diff --git a/package/libeXosip2/libeXosip2.mk b/package/libeXosip2/libeXosip2.mk
index 9a69754..7c0637a 100644
--- a/package/libeXosip2/libeXosip2.mk
+++ b/package/libeXosip2/libeXosip2.mk
@@ -89,11 +89,9 @@
 libeXosip2-source: $(DL_DIR)/$(LIBEXOSIP2_SOURCE)
 
 libeXosip2-clean:
-	@if [ -d $(LIBEXOSIP2_DIR)/Makefile ]; then \
-		$(MAKE) -C $(LIBEXOSIP2_DIR) clean; \
-	fi
-	rm -f $(STAGING_DIR)/usr/lib/libeXosip2.*
-	rm -f $(TARGET_DIR)/usr/lib/libeXosip2.*
+	-$(MAKE) -C $(LIBEXOSIP2_DIR) clean
+	-rm -f $(STAGING_DIR)/usr/lib/libeXosip2.*
+	-rm -f $(TARGET_DIR)/usr/lib/libeXosip2.*
 
 
 libeXosip2-dirclean:
diff --git a/package/libfloat/libfloat.mk b/package/libfloat/libfloat.mk
index 75ca49a..14e98c1 100644
--- a/package/libfloat/libfloat.mk
+++ b/package/libfloat/libfloat.mk
@@ -29,7 +29,7 @@
 $(LIBFLOAT_DIR)/.unpacked: $(DL_DIR)/$(LIBFLOAT_SOURCE) $(DL_DIR)/$(LIBFLOAT_PATCH)
 	$(LIBFLOAT_CAT) $(DL_DIR)/$(LIBFLOAT_SOURCE) | tar -C $(BUILD_DIR) $(TAR_OPTIONS) -
 	# Remove the binary files distributed with the the package.
-	$(MAKE) -C $(LIBFLOAT_DIR) clean
+	-$(MAKE) -C $(LIBFLOAT_DIR) clean
 	toolchain/patch-kernel.sh $(LIBFLOAT_DIR) $(DL_DIR) $(LIBFLOAT_PATCH)
 	toolchain/patch-kernel.sh $(LIBFLOAT_DIR) package/libfloat/ libfloat\*.patch
 	touch $@
diff --git a/package/liblockfile/liblockfile.mk b/package/liblockfile/liblockfile.mk
index 07f6245..148c687 100644
--- a/package/liblockfile/liblockfile.mk
+++ b/package/liblockfile/liblockfile.mk
@@ -60,7 +60,7 @@
 ifneq ($(BR2_HAVE_MANPAGES),y)
 	rm -rf $(STAGING_DIR)/usr/share/man
 endif
-	$(MAKE) -C $(LIBLOCKFILE_DIR) clean
+	-$(MAKE) -C $(LIBLOCKFILE_DIR) clean
 
 liblockfile-dirclean:
 	rm -rf $(LIBLOCKFILE_DIR)
diff --git a/package/libmad/libmad.mk b/package/libmad/libmad.mk
index 053b243..9ea27fd 100644
--- a/package/libmad/libmad.mk
+++ b/package/libmad/libmad.mk
@@ -64,12 +64,10 @@
 libmad-source: $(DL_DIR)/$(LIBMAD_SOURCE)
 
 libmad-clean:
-	@if [ -d $(LIBMAD_DIR)/Makefile ]; then \
-		$(MAKE) -C $(LIBMAD_DIR) clean; \
-	fi
-	rm -f $(STAGING_DIR)/usr/lib/libmad.*
+	-$(MAKE) -C $(LIBMAD_DIR) clean
+	-rm -f $(STAGING_DIR)/usr/lib/libmad.*
 	rm -f $(STAGING_DIR)/usr/include/mad.h
-	rm -f $(TARGET_DIR)/usr/lib/libmad.*
+	-rm -f $(TARGET_DIR)/usr/lib/libmad.*
 	rm -f $(TARGET_DIR)/usr/include/mad.h
 
 
diff --git a/package/libosip2/libosip2.mk b/package/libosip2/libosip2.mk
index c575755..053ae78 100644
--- a/package/libosip2/libosip2.mk
+++ b/package/libosip2/libosip2.mk
@@ -67,12 +67,11 @@
 libosip2-source: $(DL_DIR)/$(LIBOSIP2_SOURCE)
 
 libosip2-clean:
-	@if [ -d $(LIBOSIP2_DIR)/Makefile ]; then \
-		$(MAKE) -C $(LIBOSIP2_DIR) clean; \
-	fi
-	rm -f $(STAGING_DIR)/usr/lib/libosip2.*
-	rm -f $(TARGET_DIR)/usr/lib/libosip2.*
-
+	-$(MAKE) -C $(LIBOSIP2_DIR) clean
+	-rm -f $(STAGING_DIR)/usr/lib/libosip2.*
+	-rm -f $(STAGING_DIR)/usr/lib/libosipparser2.*
+	-rm -f $(TARGET_DIR)/usr/lib/libosip2.*
+	-rm -f $(TARGET_DIR)/usr/lib/libosipparser2.*
 
 libosip2-dirclean:
 	rm -rf $(LIBOSIP2_DIR)
diff --git a/package/links/links.mk b/package/links/links.mk
index 1c92fbb..5743c1b 100644
--- a/package/links/links.mk
+++ b/package/links/links.mk
@@ -48,7 +48,8 @@
 	install -c $(LINKS_DIR)/links $(TARGET_DIR)/usr/bin/links
 
 links-clean:
-	$(MAKE) -C $(LINKS_DIR) clean
+	-$(MAKE) -C $(LINKS_DIR) clean
+	rm -f $(TARGET_DIR)/usr/bin/links
 
 links-dirclean:
 	rm -rf $(LINKS_DIR)
diff --git a/package/lockfile-progs/lockfile-progs.mk b/package/lockfile-progs/lockfile-progs.mk
index d15354f..3f1b973 100644
--- a/package/lockfile-progs/lockfile-progs.mk
+++ b/package/lockfile-progs/lockfile-progs.mk
@@ -29,8 +29,8 @@
 lockfile-progs: uclibc liblockfile $(TARGET_DIR)/$(LOCKFILE_PROGS_BINARY)
 
 lockfile-progs-clean:
-	rm -f $(TARGET_DIR)/usr/bin/lockfile-*
-	$(MAKE) -C $(LOCKFILE_PROGS_DIR) clean
+	-rm -f $(TARGET_DIR)/usr/bin/lockfile-*
+	-$(MAKE) -C $(LOCKFILE_PROGS_DIR) clean
 
 lockfile-progs-dirclean:
 	rm -rf $(LOCKFILE_PROGS_DIR)
diff --git a/package/ltp-testsuite/ltp-testsuite.mk b/package/ltp-testsuite/ltp-testsuite.mk
index 95ac672..1cc8ff7 100644
--- a/package/ltp-testsuite/ltp-testsuite.mk
+++ b/package/ltp-testsuite/ltp-testsuite.mk
@@ -53,7 +53,7 @@
 ltp-testsuite: uclibc host-fakeroot $(LTP_TESTSUITE_DIR)/.installed
 
 ltp-testsuite-clean:
-	$(MAKE) -C $(LTP_TESTSUITE_DIR) clean
+	-$(MAKE) -C $(LTP_TESTSUITE_DIR) clean
 
 ltp-testsuite-dirclean:
 	rm -rf $(LTP_TESTSUITE_DIR)
diff --git a/package/ltt/ltt.mk b/package/ltt/ltt.mk
index b8d84ed..e062d4d 100644
--- a/package/ltt/ltt.mk
+++ b/package/ltt/ltt.mk
@@ -50,7 +50,7 @@
 host-ltt-tracevisualizer: $(TOOL_BUILD_DIR)/bin/tracevisualizer
 
 host-ltt-clean:
-	$(MAKE) -C $(LTT_DIR1) clean
+	-$(MAKE) -C $(LTT_DIR1) clean
 
 host-ltt-dirclean:
 	rm -rf $(LTT_DIR1)
diff --git a/package/lua/lua.mk b/package/lua/lua.mk
index ee8ffac..45a446c 100644
--- a/package/lua/lua.mk
+++ b/package/lua/lua.mk
@@ -12,7 +12,7 @@
 
 LUA_DIR=$(BUILD_DIR)/lua-$(LUA_VERSION)
 
-LUA_CFLAGS=-DLUA_USE_LINUX 
+LUA_CFLAGS=-DLUA_USE_LINUX
 LUA_MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"
 
 $(DL_DIR)/$(LUA_SOURCE):
@@ -53,7 +53,7 @@
 	cp -dpf $(STAGING_DIR)/usr/bin/luac $(TARGET_DIR)/usr/bin/luac
 
 
-lua-bins:	$(TARGET_DIR)/usr/bin/lua $(TARGET_DIR)/usr/bin/luac 
+lua-bins:	$(TARGET_DIR)/usr/bin/lua $(TARGET_DIR)/usr/bin/luac
 
 lua-libs:	$(TARGET_DIR)/usr/lib/liblua.a
 
@@ -62,9 +62,11 @@
 lua-source: $(DL_DIR)/$(LUA_SOURCE)
 
 lua-clean:
-	@if [ -d $(LUA_DIR)/Makefile ]; then \
-		$(MAKE) -C $(LUA_DIR) clean; \
-	fi
+	rm -f $(STAGING_DIR)/usr/bin/lua $(TARGET_DIR)/usr/bin/luac
+	rm -f $(STAGING_DIR)/usr/lib/liblua.a
+	rm -f $(TARGET_DIR)/usr/bin/lua $(TARGET_DIR)/usr/bin/luac
+	rm -f $(TARGET_DIR)/usr/lib/liblua.a
+	-$(MAKE) -C $(LUA_DIR) clean
 
 lua-dirclean:
 	rm -rf $(LUA_DIR)
diff --git a/package/madplay/madplay.mk b/package/madplay/madplay.mk
index fbba23e..2d99916 100644
--- a/package/madplay/madplay.mk
+++ b/package/madplay/madplay.mk
@@ -56,7 +56,7 @@
 
 madplay-clean:
 	rm -f $(TARGET_DIR)/$(MADPLAY_TARGET_BIN)
-	$(MAKE) -C $(MADPLAY_DIR) clean
+	-$(MAKE) -C $(MADPLAY_DIR) clean
 
 madplay-dirclean:
 	rm -rf $(MADPLAY_DIR)
diff --git a/package/nbd/nbd.mk b/package/nbd/nbd.mk
index 65432bf..80ee2b8 100644
--- a/package/nbd/nbd.mk
+++ b/package/nbd/nbd.mk
@@ -42,9 +42,8 @@
 nbd-source: $(DL_DIR)/$(NBD_SOURCE)
 
 nbd-clean:
-	@if [ -d $(NBD_DIR)/Makefile ]; then \
-		$(MAKE) -C $(NBD_DIR) clean; \
-	fi
+	rm -f $(TARGET_DIR)/sbin/nbd-client
+	-$(MAKE) -C $(NBD_DIR) clean
 
 nbd-dirclean:
 	rm -rf $(NBD_DIR)
diff --git a/package/ncftp/ncftp.mk b/package/ncftp/ncftp.mk
index 911c8ce..6a7a32b 100644
--- a/package/ncftp/ncftp.mk
+++ b/package/ncftp/ncftp.mk
@@ -67,7 +67,7 @@
 ncftp: uclibc $(addprefix $(TARGET_DIR)/usr/bin/, $(NCFTP_TARGET_BINS))
 
 ncftp-clean:
-	$(MAKE) -C $(NCFTP_DIR) clean
+	-$(MAKE) -C $(NCFTP_DIR) clean
 	rm -rf $(addprefix $(TARGET_DIR)/usr/bin/, $(NCFTP_TARGET_BINS))
 
 ncftp-dirclean:
diff --git a/package/netsnmp/netsnmp.mk b/package/netsnmp/netsnmp.mk
index 1ef53ea..f51699c 100644
--- a/package/netsnmp/netsnmp.mk
+++ b/package/netsnmp/netsnmp.mk
@@ -105,9 +105,9 @@
 netsnmp-source: $(DL_DIR)/$(NETSNMP_SOURCE)
 
 netsnmp-clean:
-	$(MAKE) PREFIX=$(TARGET_DIR) INSTALL_PREFIX=$(TARGET_DIR) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(NETSNMP_DIR) uninstall
-	$(MAKE) -C $(NETSNMP_DIR) clean
-	rm -rf $(TARGET_DIR)/etc/snmp/{snmpd{,trapd},mib2c*}.conf \
+	-$(MAKE) PREFIX=$(TARGET_DIR) INSTALL_PREFIX=$(TARGET_DIR) DESTDIR=$(TARGET_DIR) CC=$(TARGET_CC) -C $(NETSNMP_DIR) uninstall
+	-$(MAKE) -C $(NETSNMP_DIR) clean
+	-rm -rf $(TARGET_DIR)/etc/snmp/{snmpd{,trapd},mib2c*}.conf \
 		$(TARGET_DIR)/etc/default/snmpd \
 		$(TARGET_DIR)/usr/include/net-snmp
 
diff --git a/package/openssh/openssh.mk b/package/openssh/openssh.mk
index 6881bc4..4b0e821 100644
--- a/package/openssh/openssh.mk
+++ b/package/openssh/openssh.mk
@@ -73,8 +73,8 @@
 openssh-source: $(DL_DIR)/$(OPENSSH_SOURCE)
 
 openssh-clean:
-	$(MAKE) -C $(OPENSSH_DIR) clean
-	$(MAKE) CC=$(TARGET_CC) DESTDIR=$(TARGET_DIR) -C $(OPENSSH_DIR) uninstall
+	-$(MAKE) -C $(OPENSSH_DIR) clean
+	-$(MAKE) CC=$(TARGET_CC) DESTDIR=$(TARGET_DIR) -C $(OPENSSH_DIR) uninstall
 
 openssh-dirclean:
 	rm -rf $(OPENSSH_DIR)
diff --git a/package/openssl/openssl.mk b/package/openssl/openssl.mk
index 259b5f1..d256e02 100644
--- a/package/openssl/openssl.mk
+++ b/package/openssl/openssl.mk
@@ -94,10 +94,10 @@
 openssl-source: $(DL_DIR)/$(OPENSSL_SOURCE)
 
 openssl-clean:
-	$(MAKE) -C $(OPENSSL_DIR) clean
+	-$(MAKE) -C $(OPENSSL_DIR) clean
 	rm -f $(STAGING_DIR)/usr/bin/openssl $(TARGET_DIR)/usr/bin/openssl
-	rm -f $(STAGING_DIR)/usr/lib/libcrypto.so* $(TARGET_DIR)/usr/lib/libcrypto.so*
-	rm -f $(STAGING_DIR)/usr/lib/libssl.so* $(TARGET_DIR)/usr/lib/libssl.so*
+	-rm -f $(STAGING_DIR)/usr/lib/libcrypto.so* $(TARGET_DIR)/usr/lib/libcrypto.so*
+	-rm -f $(STAGING_DIR)/usr/lib/libssl.so* $(TARGET_DIR)/usr/lib/libssl.so*
 	rm -rf $(STAGING_DIR)/usr/include/openssl $(TARGET_DIR)/usr/include/openssl
 
 openssl-dirclean:
diff --git a/package/python/python.mk b/package/python/python.mk
index 050db44..82c938e 100644
--- a/package/python/python.mk
+++ b/package/python/python.mk
@@ -89,7 +89,7 @@
 		$(MAKE) python Parser/pgen && \
 		mv python hostpython && \
 		mv Parser/pgen Parser/hostpgen && \
-		$(MAKE) distclean \
+		-$(MAKE) distclean \
 	) && \
 	touch $@
 
@@ -167,7 +167,8 @@
 
 python-clean:
 	-$(MAKE) -C $(PYTHON_DIR) distclean
-	rm $(PYTHON_DIR)/.configured $(TARGET_DIR)/$(PYTHON_TARGET_BINARY)
+	rm -f $(PYTHON_DIR)/.configured $(TARGET_DIR)/$(PYTHON_TARGET_BINARY)
+	-rm -rf $(TARGET_DIR)/usr/lib/python* $(TARGET_DIR)/usr/include/python*
 
 python-dirclean:
 	rm -rf $(PYTHON_DIR)
diff --git a/package/rdesktop/rdesktop.mk b/package/rdesktop/rdesktop.mk
index f3bbd2a..d2d03f9 100644
--- a/package/rdesktop/rdesktop.mk
+++ b/package/rdesktop/rdesktop.mk
@@ -35,18 +35,16 @@
 $(RDESKTOP_DIR)/rdesktop: $(RDESKTOP_DIR)/.configured
 	$(MAKE) CC=$(TARGET_CC) -C $(RDESKTOP_DIR)
 
-$(RDESKTOP_DIR)/.installed: $(RDESKTOP_DIR)/rdesktop
-	cp $(RDESKTOP_DIR)/rdesktop $(TARGET_DIR)/usr/bin
-	touch $(RDESKTOP_DIR)/.installed
+$(TARGET_DIR)/usr/bin/rdesktop: $(RDESKTOP_DIR)/rdesktop
+	cp $^ $@
 
-rdesktop: uclibc openssl $(XSERVER) $(RDESKTOP_DIR)/.installed
+rdesktop: uclibc openssl $(XSERVER) $(TARGET_DIR)/usr/bin/rdesktop
 
 rdesktop-source: $(DL_DIR)/$(RDESKTOP_SOURCE)
 
 rdesktop-clean:
-	@if [ -d $(RDESKTOP_DIR)/Makefile ]; then \
-		$(MAKE) -C $(RDESKTOP_DIR) clean; \
-	fi
+	-$(MAKE) -C $(RDESKTOP_DIR) clean
+	rm -f $(TARGET_DIR)/usr/bin/rdesktop
 
 rdesktop-dirclean:
 	rm -rf $(RDESKTOP_DIR) $(RDESKTOP_DIR)
diff --git a/package/socat/socat.mk b/package/socat/socat.mk
index 3478b51..10b3c9f 100644
--- a/package/socat/socat.mk
+++ b/package/socat/socat.mk
@@ -54,19 +54,18 @@
 	rm -f $@
 	$(MAKE) -C $(SOCAT_WORKDIR)
 
-$(SOCAT_WORKDIR)/.installed: $(SOCAT_WORKDIR)/socat
+$(TARGET_DIR)/usr/bin/socat: $(SOCAT_WORKDIR)/socat
 	mkdir -p $(TARGET_DIR)/usr/man/man1
 	$(MAKE) -C $(SOCAT_WORKDIR) install prefix=$(TARGET_DIR)/usr DESTDIR=$(TARGET_DIR)
 	touch $@
 
-socat: uclibc $(SOCAT_WORKDIR)/.installed
+socat: uclibc $(TARGET_DIR)/usr/bin/socat
 
 socat-source: $(DL_DIR)/$(SOCAT_SOURCE)
 
 socat-clean:
-	@if [ -d $(SOCAT_WORKDIR)/Makefile ]; then \
-		$(MAKE) -C $(SOCAT_WORKDIR) clean; \
-	fi
+	-$(MAKE) -C $(SOCAT_WORKDIR) clean
+	rm -f $(TARGET_DIR)/usr/bin/{socat,filan,procan}
 
 socat-dirclean:
 	rm -rf $(SOCAT_DIR) $(SOCAT_WORKDIR)
diff --git a/package/speex/speex.mk b/package/speex/speex.mk
index e659ef6..a6b66f5 100644
--- a/package/speex/speex.mk
+++ b/package/speex/speex.mk
@@ -82,16 +82,19 @@
 $(TARGET_DIR)/usr/lib/libspeex.so: $(TARGET_DIR)/usr/bin/speexenc
 	cp -dpf $(STAGING_DIR)/usr/lib/libspeex.so* $(TARGET_DIR)/usr/lib
 
-speex-bins:	
+speex-bins:
 
 speex: uclibc libogg $(TARGET_DIR)/usr/lib/libspeex.so
 
 speex-source: $(DL_DIR)/$(SPEEX_SOURCE)
 
 speex-clean:
-	@if [ -d $(SPEEX_DIR)/Makefile ]; then \
-		$(MAKE) -C $(SPEEX_DIR) clean; \
-	fi
+	-$(MAKE) -C $(SPEEX_DIR) clean
+	-rm -f $(STAGING_DIR)/usr/lib/libspeex.so*
+	rm -f $(STAGING_DIR)/usr/bin/speexenc $(STAGING_DIR)/usr/bin/speexdec
+	-rm -f $(TARGET_DIR)/usr/lib/libspeex.so*
+	rm -f $(TARGET_DIR)/usr/bin/speexenc $(TARGET_DIR)/usr/bin/speexdec
+
 
 speex-dirclean:
 	rm -rf $(SPEEX_DIR)
diff --git a/package/sqlite/sqlite.mk b/package/sqlite/sqlite.mk
index dd36ecf..f6aa68f 100644
--- a/package/sqlite/sqlite.mk
+++ b/package/sqlite/sqlite.mk
@@ -68,9 +68,11 @@
 sqlite-source: $(DL_DIR)/$(SQLITE_SOURCE)
 
 sqlite-clean:
-	@if [ -d $(SQLITE_DIR)/Makefile ]; then \
-		$(MAKE) -C $(SQLITE_DIR) clean; \
-	fi
+	-$(MAKE) -C $(SQLITE_DIR) clean
+	-rm -rf $(STAGING_DIR)/usr/lib/libsqlite*
+	-rm -rf $(STAGING_DIR)/usr/bin/sqlite3
+	-rm -rf $(TARGET_DIR)/usr/lib/libsqlite*
+	-rm -rf $(TARGET_DIR)/usr/bin/sqlite3
 
 sqlite-dirclean:
 	rm -rf $(SQLITE_DIR)
diff --git a/package/strace/strace.mk b/package/strace/strace.mk
index 010ab2a..e6c841c 100644
--- a/package/strace/strace.mk
+++ b/package/strace/strace.mk
@@ -69,7 +69,7 @@
 
 strace-clean:
 	rm -f $(TARGET_DIR)/usr/bin/strace
-	$(MAKE) -C $(STRACE_DIR) clean
+	-$(MAKE) -C $(STRACE_DIR) clean
 
 strace-dirclean:
 	rm -rf $(STRACE_DIR)
diff --git a/package/stunnel/stunnel.mk b/package/stunnel/stunnel.mk
index 56a77cd..563e527 100644
--- a/package/stunnel/stunnel.mk
+++ b/package/stunnel/stunnel.mk
@@ -65,7 +65,8 @@
 stunnel: uclibc $(TARGET_DIR)/usr/bin/stunnel
 
 stunnel-clean:
-	$(MAKE) -C $(STUNNEL_DIR) clean
+	-$(MAKE) -C $(STUNNEL_DIR) clean
+	rm -f $(TARGET_DIR)/usr/bin/stunnel
 
 stunnel-dirclean:
 	rm -rf $(STUNNEL_DIR)
diff --git a/package/tinyhttpd/tinyhttpd.mk b/package/tinyhttpd/tinyhttpd.mk
index 812feb2..30e1ca4 100644
--- a/package/tinyhttpd/tinyhttpd.mk
+++ b/package/tinyhttpd/tinyhttpd.mk
@@ -38,7 +38,7 @@
 tinyhttpd: uclibc $(TARGET_DIR)/$(TINYHTTPD_TARGET_BINARY)
 
 tinyhttpd-clean:
-	$(MAKE) -C $(TINYHTTPD_DIR) clean
+	-$(MAKE) -C $(TINYHTTPD_DIR) clean
 	@rm -f $(TARGET_DIR)/$(TINYHTTPD_TARGET_BINARY)
 	@rm -f $(TARGET_DIR)/etc/init.d/S85tinyhttpd
 	@rmdir --ignore-fail-on-non-empty $(TARGET_DIR)/var/www
diff --git a/package/tn5250/tn5250.mk b/package/tn5250/tn5250.mk
index 20beb8d..efaa921 100644
--- a/package/tn5250/tn5250.mk
+++ b/package/tn5250/tn5250.mk
@@ -47,7 +47,8 @@
 tn5250-source: $(DL_DIR)/$(TN5250_SOURCE)
 
 tn5250-clean:
-	$(MAKE) -C $(TN5250_DIR) clean
+	-$(MAKE) -C $(TN5250_DIR) clean
+	rm -f $(TARGET_DIR)/usr/bin/tn5250
 
 tn5250-dirclean:
 	rm -rf $(TN5250_DIR)
diff --git a/package/valgrind/valgrind.mk b/package/valgrind/valgrind.mk
index 9385aab..8ba1448 100644
--- a/package/valgrind/valgrind.mk
+++ b/package/valgrind/valgrind.mk
@@ -75,7 +75,9 @@
 valgrind-source: $(DL_DIR)/$(VALGRIND_SOURCE)
 
 valgrind-clean:
-	$(MAKE) -C $(VALGRIND_DIR) clean
+	-$(MAKE) -C $(VALGRIND_DIR) clean
+	-rm -f $(TARGET_DIR)/usr/bin/valgrind*
+	rm -rf $(TARGET_DIR)/usr/lib/valgrind
 
 valgrind-dirclean:
 	rm -rf $(VALGRIND_DIR)