diff --git a/src/Makefile.in b/src/Makefile.in
index 42426cabfa6a2102ce2a8746c1e92e604e1143d1..a6018b8c3a83253b8146fb89d3cce53b5ed3fda0 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -241,11 +241,9 @@ feature_list:
 
 lib: $(LIBDIR_SRC) $(LIBDIR_SRC)/master.pike $(LIBDIR_SRC)/modules $(LIBDIR_SRC)/include
 	cp -r $(LIBDIR_SRC) .
-	-rm -r `find lib -type d -name CVS`
-	-rm `find lib -type f -name '*~'`
-	-rm `find lib -type f -name '.#*'`
-	-rm `find lib -type f -name '#*#'`
-	-touch ./lib
+	-cvs_dirs="`find lib -type d -name CVS`"; if test "x$cvs_dirs" = "x" ; then : ; else rm -r $cvs_dirs; fi
+	-files="`find lib -type f -name '*~'` `find lib -type f -name '.#*'` `find lib -type f -name '#*#'`"; if test "x$files" = "x" ; then : ; else rm $files; fi
+	-touch ./lib 2>/dev/null || (touch lib/.broken_gnu_touch && rm lib/.broken_gnu_touch)
 
 # make export archive (requires compiled Pike)
 # Do not compile in source tree if you want to use this!