diff --git a/config/prep_buildtree b/config/prep_buildtree
index 7dbcf3166e27cda1726d3a07be06f42710f5249f..57d771967330b16306f38aba3e0729252bdc93f2 100644
--- a/config/prep_buildtree
+++ b/config/prep_buildtree
@@ -30,9 +30,11 @@ for item in `find "$sourcetree" -type d \( -name CVS -prune -o -print \)`; do
 done
 
 for item in `find "$sourcetree" -name Makefile -print -o -name GNUmakefile -print`; do
-    subdir=`expr "$item" : "$sourcetree\(.*\)"`
+    filename=`expr "$item" : "$sourcetree\(.*\)"`
     if test ! -f "${item}.in"; then
-        ln -fs "$item" "$buildtree/$subdir" || exit 1
+        if cmp "$item" "$buildtree/$filename" >/dev/null 2>&1; then : ; else
+            ln -fs "$item" "$buildtree/$filename" || exit 1
+        fi
     fi
 done