* Akim
| I agree there are *two* issues.  One is that there is a AC_REQUIRE
| circular dependency because AC_EXEXT uses AC_LINK_IFELSE, the other
| is that both AC_LINK_IFELSE and AC_TRY_EVAL(ac_link) are
| inappropriate here.

Aha. How about the attached patch, then?

Regards,
Morten

Index: ChangeLog
===================================================================
RCS file: /cvs/autoconf/ChangeLog,v
retrieving revision 1.897
diff -u -r1.897 ChangeLog
--- ChangeLog   2000/10/05 13:52:41     1.897
+++ ChangeLog   2000/10/11 09:28:11
@@ -1,3 +1,9 @@
+2000-10-11  Morten Eriksen <[EMAIL PROTECTED]>
+
+       * acspecific.m4 (_AC_EXEEXT): Change of strategy for the macro, we
+       now search for a valid executable suffix. The old code had circular
+       dependencies which basically made it fubar.
+
 2000-10-05  Akim Demaille  <[EMAIL PROTECTED]>
 
        Check that updated scripts are valid scripts.
Index: acspecific.m4
===================================================================
RCS file: /cvs/autoconf/acspecific.m4,v
retrieving revision 1.300
diff -u -r1.300 acspecific.m4
--- acspecific.m4       2000/10/02 12:47:13     1.300
+++ acspecific.m4       2000/10/11 15:14:45
@@ -1554,35 +1554,37 @@
 
 # _AC_EXEEXT
 # ----------
-# Check for the extension used for executables.  This knows that we
-# add .exe for Cygwin or mingw32.  Otherwise, it compiles a test
-# executable.  If this is called, the executable extensions will be
-# automatically used by link commands run by the configure script.
+# Check for a valid extension to use for executables.
 define([_AC_EXEEXT],
-[_AC_CYGWIN
-_AC_MINGW32
-_AC_EMXOS2
-AC_CACHE_CHECK([for executable suffix], ac_cv_exeext,
-[case "$CYGWIN $MINGW32 $EMXOS2" in
-  *yes*) ac_cv_exeext=.exe ;;
-  *)
-  AC_LINK_IFELSE([AC_LANG_PROGRAM()],
-  [if test ! -f conftest; then
-    for ac_file in conftest.*; do
-       case $ac_file in
-         *.$ac_ext | *.o | *.obj | *.xcoff) ;;
-         *) ac_cv_exeext=`expr "$ac_file" : 'conftest\(.*\)'`;;
-       esac
-     done
-   fi],
-  [AC_MSG_ERROR([cannot compile and link])])
-  test -n "$ac_cv_exeext" && ac_cv_exeext=no;;
-esac])
-EXEEXT=
-test "$ac_cv_exeext" != no && EXEEXT=$ac_cv_exeext
-dnl Setting ac_exeext will implicitly change the ac_link command.
-ac_exeext=$EXEEXT
-AC_SUBST(EXEEXT)dnl
+[AC_CACHE_CHECK([for executable suffix], ac_cv_exeext,
+[# Try to compile and link an executable with no suffix first.
+ac_exeext=
+AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
+if AC_TRY_EVAL(ac_link); then
+  # Ok, we can use an empty suffix for executables. Now see if the
+  # executable with the empty suffix is just a filesystem mapping
+  # from the real file (this happens under Cygwin, for instance).
+  if (test conftest -ef conftest.exe) >/dev/null 2>&1; then
+    # Prefer .exe over empty suffix.
+    ac_cv_exeext=.exe
+  else
+    ac_cv_exeext=
+  fi
+else
+  # Couldn't use empty suffix, try with suffix commonly used
+  # on MSWindows platforms.
+  ac_exeext=.exe
+  if AC_TRY_EVAL(ac_link); then
+    ac_cv_exeext=.exe
+  else
+    rm -f conftest.$ac_ext conftest.$ac_objext
+    AC_MSG_ERROR(cannot compile and link)
+  fi
+fi
+])
+rm -f conftest.$ac_ext conftest.$ac_objext conftest.$ac_exeext
+EXEEXT=$ac_cv_exeext
+AC_SUBST(EXEEXT)
 ])# _AC_EXEEXT
 
 

Reply via email to