patch 8.2.4039: the xdiff library is linked in even when not used

Problem:    The xdiff library is linked in even when not used.
Solution:   Use configure to decide whether xdiff object files are included.
diff --git a/src/Makefile b/src/Makefile
index aafe139..c65781e 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -1874,7 +1874,7 @@
 	$(OS_EXTRA_OBJ) \
 	$(NETBEANS_OBJ) \
 	$(CHANNEL_OBJ) \
-	$(XDIFF_OBJS)
+	$(XDIFF_OBJS_USED)
 
 # The files included by tests are not in OBJ_COMMON.
 OBJ_MAIN = \
diff --git a/src/auto/configure b/src/auto/configure
index cde05d6..72d2d07 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -714,6 +714,7 @@
 vi_cv_path_plain_lua
 vi_cv_path_luajit
 vi_cv_path_lua
+XDIFF_OBJS_USED
 compiledby
 dogvimdiff
 dovimdiff
@@ -5305,6 +5306,20 @@
 $as_echo "yes" >&6; }
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking diff feature" >&5
+$as_echo_n "checking diff feature... " >&6; }
+if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled in $features version" >&5
+$as_echo "disabled in $features version" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: enabled" >&5
+$as_echo "enabled" >&6; }
+  $as_echo "#define FEAT_DIFF 1" >>confdefs.h
+
+  XDIFF_OBJS_USED="\$(XDIFF_OBJS)"
+
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking --enable-luainterp argument" >&5
 $as_echo_n "checking --enable-luainterp argument... " >&6; }
 # Check whether --enable-luainterp was given.
diff --git a/src/config.mk.in b/src/config.mk.in
index df09cfe..4eb6928 100644
--- a/src/config.mk.in
+++ b/src/config.mk.in
@@ -37,6 +37,8 @@
 X_EXTRA_LIBS	= @X_EXTRA_LIBS@
 X_LIBS		= @X_LIB@
 
+XDIFF_OBJS_USED	= @XDIFF_OBJS_USED@
+
 LUA_LIBS	= @LUA_LIBS@
 LUA_SRC		= @LUA_SRC@
 LUA_OBJ		= @LUA_OBJ@
diff --git a/src/configure.ac b/src/configure.ac
index b5f217c..86f70f5 100644
--- a/src/configure.ac
+++ b/src/configure.ac
@@ -567,6 +567,16 @@
   AC_MSG_RESULT(yes)
 fi
 
+AC_MSG_CHECKING([diff feature])
+if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
+  AC_MSG_RESULT([disabled in $features version])
+else
+  AC_MSG_RESULT(enabled)
+  AC_DEFINE(FEAT_DIFF)
+  XDIFF_OBJS_USED="\$(XDIFF_OBJS)"
+  AC_SUBST(XDIFF_OBJS_USED)
+fi
+
 dnl Check for Lua feature.
 AC_MSG_CHECKING(--enable-luainterp argument)
 AC_ARG_ENABLE(luainterp,
diff --git a/src/feature.h b/src/feature.h
index fcd0d4b..b2df6f9 100644
--- a/src/feature.h
+++ b/src/feature.h
@@ -345,8 +345,9 @@
 /*
  * +diff		Displaying diffs in a nice way.
  *			Requires +windows and +autocmd.
+ *			Can be enabled in autoconf already.
  */
-#if defined(FEAT_NORMAL)
+#if defined(FEAT_NORMAL) && !defined(FEAT_DIFF)
 # define FEAT_DIFF
 #endif
 
diff --git a/src/version.c b/src/version.c
index c4d639e..542227c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4039,
+/**/
     4038,
 /**/
     4037,