Index: ChangeLog =================================================================== RCS file: /cvs/autoconf/ChangeLog,v retrieving revision 1.904 diff -u -r1.904 ChangeLog --- ChangeLog 2000/10/12 12:45:16 1.904 +++ ChangeLog 2000/10/12 13:13:34 @@ -1,3 +1,9 @@ +2000-10-12 Morten Eriksen + + * 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-12 Akim Demaille * tests/mktests.sh: Remove tmp files. Index: acspecific.m4 =================================================================== RCS file: /cvs/autoconf/acspecific.m4,v retrieving revision 1.301 diff -u -r1.301 acspecific.m4 --- acspecific.m4 2000/10/12 12:39:25 1.301 +++ acspecific.m4 2000/10/12 13:13:35 @@ -1554,32 +1554,36 @@ # _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_CACHE_CHECK([for executable suffix], ac_cv_exeext, -[case "$CYGWIN $MINGW32 $EMXOS2" in - *yes*) ac_cv_exeext=.exe ;; - *) +[# Try to compile and link an executable with no suffix first. +ac_exeext= +_AC_LINK_IFELSE([AC_LANG_PROGRAM()], + [# 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 (to avoid depending + # on the Cygwin filesystem voodoo, which is known to fail + # with certain tools/commands). + ac_cv_exeext=.exe + else + ac_cv_exeext= + fi], + [# Couldn't use empty suffix, try with suffix commonly used + # on DOS-based platforms. + ac_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_cv_exeext=.exe], + [rm -f conftest.$ac_ext conftest.$ac_objext + AC_MSG_ERROR(cannot compile and link)]) + ]) +]) +rm -f conftest.$ac_ext conftest.$ac_objext conftest.$ac_exeext +ac_exeext=$ac_cv_exeext +EXEEXT=$ac_cv_exeext +AC_SUBST(EXEEXT) ])# _AC_EXEEXT Index: TODO =================================================================== RCS file: /cvs/autoconf/TODO,v retrieving revision 1.93 diff -u -r1.93 TODO --- TODO 2000/10/12 12:45:16 1.93 +++ TODO 2000/10/12 13:24:02 @@ -14,8 +14,7 @@ egrep, the output files are touch'ed. ** AC_EXEEXT, AC_OBJEXT -We need a good implement. As much as possible, they should not depend -upon AC_EMXOS2 etc. +These should be AC_REQUIRE'd where $ac_exeext and $ac_objext is used. ** More tests Check that AC_REQUIRE circular dependencies are caught.