diff --git a/m4/acx_check_cfortran.m4 b/m4/acx_check_cfortran.m4
index 933cf995c78c3751dea735a4992e019731ccb26b..edd50f8b3ef87807fe7b234ed65a68aee9a45267 100644
--- a/m4/acx_check_cfortran.m4
+++ b/m4/acx_check_cfortran.m4
@@ -55,8 +55,11 @@ AC_DEFUN([_ACX_CHECK_CFORTRAN_FC],
       r = v * 100.0
       ri = 1.0 / v
       END FUNCTION cftstf])],
-           [_AC_RUN_LOG([mv "conftest.$ac_objext" "conftest_f.$ac_objext"],
-              [_AS_ECHO_LOG([Renaming Fortran object file.])])
+           [AS_IF([expr "$ac_compile" : '.*/libtool --mode=compile' >/dev/null],
+              [_AC_RUN_LOG([sed 's@pic_object='"'"'\(.libs/\)\{0,1\}conftest@&_f@' "conftest.$ac_objext" >"conftest_f.$ac_objext"; rm "conftest.$ac_objext" ; if test -f "conftest.$OBJEXT" ; then mv "conftest.$OBJEXT" "conftest_f.$OBJEXT" ; fi ; if test -f ".libs/conftest.$OBJEXT" ; then mv ".libs/conftest.$OBJEXT" ".libs/conftest_f.$OBJEXT" ; fi],
+                [_AS_ECHO_LOG([Renaming Fortran object file.])])],
+              [_AC_RUN_LOG([mv "conftest.$ac_objext" "conftest_f.$ac_objext"],
+                [_AS_ECHO_LOG([Renaming Fortran object file.])])])
             save_LIBS=$LIBS
             LIBS="conftest_c.$ac_objext conftest_f.$ac_objext $LIBS"
             AC_RUN_IFELSE([AC_LANG_PROGRAM(,
@@ -135,8 +138,11 @@ AC_DEFUN([_ACX_CHECK_CFORTRAN_F77],
       CFTSTF = V * 100.0
       RI = 1.0 / V
       END FUNCTION CFTSTF])],
-           [_AC_RUN_LOG([mv "conftest.$ac_objext" "conftest_f.$ac_objext"],
-              [_AS_ECHO_LOG([Renaming Fortran object file.])])
+           [AS_IF([expr "$ac_compile" : '.*/libtool --mode=compile' >/dev/null],
+              [_AC_RUN_LOG([sed 's@pic_object='"'"'\(.libs/\)\{0,1\}conftest@&_f@' "conftest.$ac_objext" >"conftest_f.$ac_objext"; rm "conftest.$ac_objext" ; if test -f "conftest.$OBJEXT" ; then mv "conftest.$OBJEXT" "conftest_f.$OBJEXT" ; fi ; if test -f ".libs/conftest.$OBJEXT" ; then mv ".libs/conftest.$OBJEXT" ".libs/conftest_f.$OBJEXT" ; fi],
+                [_AS_ECHO_LOG([Renaming Fortran object file.])])],
+              [_AC_RUN_LOG([mv "conftest.$ac_objext" "conftest_f.$ac_objext"],
+                [_AS_ECHO_LOG([Renaming Fortran object file.])])])
             save_LIBS=$LIBS
             LIBS="conftest_c.$ac_objext conftest_f.$ac_objext $LIBS"
             AC_RUN_IFELSE([AC_LANG_PROGRAM(,
@@ -246,8 +252,11 @@ errExit(void)
 FCALLSCSUB0(errExit,ERR_EXIT,err_exit)
 
 ])],
-        [_AC_RUN_LOG([mv "conftest.$ac_objext" "conftest_c.$ac_objext"],
-           [_AS_ECHO_LOG([Renaming C object file.])])
+        [AS_IF([expr "$ac_compile" : '.*/libtool --mode=compile' >/dev/null],
+              [_AC_RUN_LOG([sed 's@pic_object='"'"'\(.libs/\)\{0,1\}conftest@&_c@' "conftest.$ac_objext" >"conftest_c.$ac_objext"; rm "conftest.$ac_objext" ; if test -f "conftest.$OBJEXT" ; then mv "conftest.$OBJEXT" "conftest_c.$OBJEXT" ; fi ; if test -f ".libs/conftest.$OBJEXT" ; then mv ".libs/conftest.$OBJEXT" ".libs/conftest_c.$OBJEXT" ; fi],
+                [_AS_ECHO_LOG([Renaming C object file.])])],
+              [_AC_RUN_LOG([mv "conftest.$ac_objext" "conftest_c.$ac_objext"],
+                [_AS_ECHO_LOG([Renaming C object file.])])])
          AC_PROVIDE_IFELSE([AC_PROG_FC],
            [AS_IF([test -n "$FC" -a X"$FC" != Xno],
               [_ACX_CHECK_CFORTRAN_FC],
diff --git a/m4/kpse_libtool.m4 b/m4/kpse_libtool.m4
index c382294c586c62cf5181b005e2429a7cf6b6e116..da8b100b13474191d4dc61ea109878bbfea8288d 100644
--- a/m4/kpse_libtool.m4
+++ b/m4/kpse_libtool.m4
@@ -18,20 +18,27 @@ AC_DEFUN([_KPSE_USE_LIBTOOL],
 AC_PROVIDE_IFELSE([LT_INIT], ,
                   [m4_fatal([$0: requires libtool])])[]dnl
 LT_OUTPUT
+AC_CONFIG_COMMANDS_PRE([ac_objext=${acx_lt_saved_ac_objext}])
+acx_lt_saved_ac_objext=$ac_objext
+ac_objext=lo
 m4_append([AC_LANG(C)],
-[ac_link="./libtool --mode=link --tag=CC $ac_link"
+[ac_link="$ac_pwd/libtool --mode=link --tag=CC $ac_link"
+ac_compile="$ac_pwd/libtool --mode=compile --tag=CC $ac_compile"
 ])[]dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
 [m4_append([AC_LANG(C++)],
-[ac_link="./libtool --mode=link --tag=CXX $ac_link"
+[ac_link="$ac_pwd/libtool --mode=link --tag=CXX $ac_link"
+ac_compile="$ac_pwd/libtool --mode=compile --tag=CXX $ac_compile"
 ])])[]dnl
 AC_PROVIDE_IFELSE([AC_PROG_FC],
 [m4_append([AC_LANG(Fortran)],
-[ac_link="./libtool --mode=link --tag=FC $ac_link"
+[ac_link="$ac_pwd/libtool --mode=link --tag=FC $ac_link"
+ac_compile="$ac_pwd/libtool --mode=compile --tag=FC $ac_compile"
 ])])[]dnl
 AC_PROVIDE_IFELSE([AC_PROG_F77],
 [m4_append([AC_LANG(Fortran 77)],
-[ac_link="./libtool --mode=link --tag=F77 $ac_link"
+[ac_link="$ac_pwd/libtool --mode=link --tag=F77 $ac_link"
+ac_compile="$ac_pwd/libtool --mode=compile --tag=F77 $ac_compile"
 ])])[]dnl
 AC_LANG(_AC_LANG)[]dnl
 ]) # _KPSE_USE_LIBTOOL