diff --git a/aclocal.m4 b/aclocal.m4
index 680e0a8efe597ca622b4611b263b49c3255fe21f..dc9479117a64db8e6816c87cb6a670f74e3a570f 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1581,4 +1581,30 @@ LIBRARY_[]translit([$1], [-], [_])[]_VERSION=`grep -i "^version:" libraries/${di
 AC_SUBST(LIBRARY_[]translit([$1], [-], [_])[]_VERSION)
 ])
 
+# XCODE_VERSION()
+# --------------------------------
+# Gets the version number of XCode, if on a Mac
+AC_DEFUN([XCODE_VERSION],[
+    if test "$TargetOS_CPP" = "darwin"
+    then
+        AC_MSG_CHECKING(XCode version)
+        XCodeVersion=`xcodebuild -version | grep Xcode | sed "s/Xcode //"`
+        # Old XCode versions don't actually give the XCode version
+        if test "$XCodeVersion" = ""
+        then
+            AC_MSG_RESULT(not found (too old?))
+            XCodeVersion1=0
+            XCodeVersion2=0
+        else
+            AC_MSG_RESULT($XCodeVersion)
+            XCodeVersion1=`echo "$XCodeVersion" | sed 's/\..*//'`
+            changequote(, )dnl
+            XCodeVersion2=`echo "$XCodeVersion" | sed 's/[^.]*\.\([^.]*\).*/\1/'`
+            changequote([, ])dnl
+            AC_MSG_NOTICE(XCode version component 1: $XCodeVersion1)
+            AC_MSG_NOTICE(XCode version component 2: $XCodeVersion2)
+        fi
+    fi
+])
+
 # LocalWords:  fi
diff --git a/configure.ac b/configure.ac
index d4b2a14bfd7cdf6043cff3c68a36749cdbd88408..b8b8f3c7594da5d6996492255e29dbb4e9d14cb3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -403,26 +403,7 @@ then
     fi
 fi
 
-if test "$TargetOS_CPP" = "darwin"
-then
-    AC_MSG_CHECKING(XCode version)
-    XCodeVersion=`xcodebuild -version | grep Xcode | sed "s/Xcode //"`
-    # Old XCode versions don't actually give the XCode version
-    if test "$XCodeVersion" = ""
-    then
-        AC_MSG_RESULT(not found (too old?))
-        XCodeVersion1=0
-        XCodeVersion2=0
-    else
-        AC_MSG_RESULT($XCodeVersion)
-        XCodeVersion1=`echo "$XCodeVersion" | sed 's/\..*//'`
-changequote(, )dnl
-        XCodeVersion2=`echo "$XCodeVersion" | sed 's/[^.]*\.\([^.]*\).*/\1/'`
-changequote([, ])dnl
-        AC_MSG_NOTICE(XCode version component 1: $XCodeVersion1)
-        AC_MSG_NOTICE(XCode version component 2: $XCodeVersion2)
-    fi
-fi
+XCODE_VERSION()
 
 SplitObjsBroken=NO
 if test "$TargetOS_CPP" = "darwin"
diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in
index a37800458b673c9945582686950e79da2beee77a..72fb71258dda1cd7c08058e84a79ad8f9a23b5cd 100644
--- a/distrib/configure.ac.in
+++ b/distrib/configure.ac.in
@@ -47,27 +47,7 @@ dnl ** Find the path to sed **
 #
 AC_PATH_PROG(SedCmd,gsed sed,sed)
 
-#
-dnl ** How to invoke gcc/cpp **
-#
-if test "$TargetOS_CPP" = "darwin"
-then
-    AC_MSG_CHECKING(XCode version)
-    XCodeVersion=`xcodebuild -version | grep Xcode | sed "s/Xcode //"`
-    # Old XCode versions don't actually give the XCode version
-    if test "$XCodeVersion" = ""
-    then
-        AC_MSG_RESULT(not found (too old?))
-    else
-        AC_MSG_RESULT($XCodeVersion)
-        XCodeVersion1=`echo "$XCodeVersion" | sed 's/\..*//'`
-changequote(, )dnl
-        XCodeVersion2=`echo "$XCodeVersion" | sed 's/[^.]*\.\([^.]*\).*/\1/'`
-changequote([, ])dnl
-        AC_MSG_NOTICE(XCode version component 1: $XCodeVersion1)
-        AC_MSG_NOTICE(XCode version component 2: $XCodeVersion2)
-    fi
-fi
+XCODE_VERSION()
 
 dnl ** Which gcc to use?
 dnl --------------------------------------------------------------