diff --git a/Misc/NEWS b/Misc/NEWS
index 600c000..06a3f53 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -52,6 +52,12 @@
   guaranteed to exist in all Python implementations and the names of hash
   algorithms available in the current process.
 
+Build
+-----
+
+- Issue #4026: Make the fcntl extension build under AIX.  Patch by Sébastien
+  Sablé.
+
 
 What's New in Python 3.2 Alpha 2?
 =================================
diff --git a/configure b/configure
index df0a7b9..9f44362 100755
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 84477 .
+# From configure.in Revision: 84512 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.65 for python 3.2.
 #
@@ -9588,6 +9588,7 @@
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock" >&5
 $as_echo_n "checking for flock... " >&6; }
+have_flock=no
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -9605,14 +9606,84 @@
 
 $as_echo "#define HAVE_FLOCK 1" >>confdefs.h
 
-   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+   have_flock=yes
 
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_flock" >&5
+$as_echo "$have_flock" >&6; }
+
+if test "$have_flock" = yes ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if flock requires additional libraries." >&5
+$as_echo_n "checking if flock requires additional libraries.... " >&6; }
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  #include <sys/file.h>
+
+int
+main ()
+{
+void *p = flock; flock(0, 0)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flock in -lbsd" >&5
+$as_echo_n "checking for flock in -lbsd... " >&6; }
+if test "${ac_cv_lib_bsd_flock+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char flock ();
+int
+main ()
+{
+return flock ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_bsd_flock=yes
+else
+  ac_cv_lib_bsd_flock=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_flock" >&5
+$as_echo "$ac_cv_lib_bsd_flock" >&6; }
+if test "x$ac_cv_lib_bsd_flock" = x""yes; then :
+
+
+$as_echo "#define FLOCK_NEEDS_LIBBSD 1" >>confdefs.h
+
+
+fi
+
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpagesize" >&5
 $as_echo_n "checking for getpagesize... " >&6; }
@@ -14226,8 +14297,8 @@
 
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 # Files that config.status was made for.
-config_files="$ac_config_files"
-config_headers="$ac_config_headers"
+config_files="`echo $ac_config_files`"
+config_headers="`echo $ac_config_headers`"
 
 _ACEOF
 
diff --git a/configure.in b/configure.in
index a518374..3e82da2 100644
--- a/configure.in
+++ b/configure.in
@@ -2642,13 +2642,27 @@
 ])
 
 AC_MSG_CHECKING(for flock)
+have_flock=no
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 #include <sys/file.h>
 ]], [[void* p = flock]])],
   [AC_DEFINE(HAVE_FLOCK, 1, Define if you have the 'flock' function.)
-   AC_MSG_RESULT(yes)],
-  [AC_MSG_RESULT(no)
+   have_flock=yes
 ])
+AC_MSG_RESULT($have_flock)
+
+if test "$have_flock" = yes ; then
+  AC_MSG_CHECKING(if flock requires additional libraries.)
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+  #include <sys/file.h>
+  ]], [[void *p = flock; flock(0, 0)]])],
+    [AC_MSG_RESULT(no)],
+    [AC_MSG_RESULT(yes)
+     AC_CHECK_LIB(bsd,flock, [
+      AC_DEFINE(FLOCK_NEEDS_LIBBSD, 1, Define if flock needs to be linked with bsd library.)
+      ])
+  ])
+fi
 
 AC_MSG_CHECKING(for getpagesize)
 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 309332f..b26b441 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -30,6 +30,9 @@
 /* Define if --enable-ipv6 is specified */
 #undef ENABLE_IPV6
 
+/* Define if flock needs to be linked with bsd library */
+#undef FLOCK_NEEDS_LIBBSD
+
 /* Define if getpgrp() must be called as getpgrp(0). */
 #undef GETPGRP_HAVE_ARG
 
diff --git a/setup.py b/setup.py
index 2b5d4cb..85cd605 100644
--- a/setup.py
+++ b/setup.py
@@ -499,7 +499,11 @@
         # supported...)
 
         # fcntl(2) and ioctl(2)
-        exts.append( Extension('fcntl', ['fcntlmodule.c']) )
+        libs = []
+        if (config_h_vars.get('FLOCK_NEEDS_LIBBSD', False)):
+            # May be necessary on AIX for flock function
+            libs = ['bsd']
+        exts.append( Extension('fcntl', ['fcntlmodule.c'], libraries=libs) )
         # pwd(3)
         exts.append( Extension('pwd', ['pwdmodule.c']) )
         # grp(3)
