autoconf-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

EXEEXT: `cc -o' (Was: AC_CYGWIN etc.)


From: Akim Demaille
Subject: EXEEXT: `cc -o' (Was: AC_CYGWIN etc.)
Date: 15 Dec 2000 10:41:33 +0100
User-agent: Gnus/5.0807 (Gnus v5.8.7) XEmacs/21.1 (Channel Islands)

Here is my proposal.  Mo, could you give it a try?  Thanks!

Index: ChangeLog
from  Akim Demaille  <address@hidden>
        * aclang.m4 (_AC_COMPILER_EXEEXT_DEFAULT): New.
        (_AC_COMPILER_EXEEXT_O): Extracted from...
        (_AC_COMPILER_EXEEXT): here.  Adjust.

Index: aclang.m4
===================================================================
RCS file: /cvs/autoconf/aclang.m4,v
retrieving revision 1.97
diff -u -u -r1.97 aclang.m4
--- aclang.m4 2000/12/15 07:49:13 1.97
+++ aclang.m4 2000/12/15 09:31:15
@@ -652,22 +652,48 @@
 AC_DEFUN([AC_OBJEXT],   [])
 
 
-# _AC_COMPILER_EXEEXT
-# -------------------
-# Check for the extension used for executables.  It compiles a test
-# executable.  If this is called, the executable extensions will be
-# automatically used by link commands run by the configure script.
-#
-# This macro is called by AC_LANG_COMPILER, the latter being required
-# by the AC_LINK_IFELSE macros, so use _AC_LINK_IFELSE.
-m4_define([_AC_COMPILER_EXEEXT],
-[AC_CACHE_CHECK([for executable suffix], ac_cv_exeext,
-[_AC_LINK_IFELSE([AC_LANG_PROGRAM()],
+# _AC_COMPILER_EXEEXT_DEFAULT
+# ---------------------------
+# Check for the extension used for the default name for executables.
+m4_define([_AC_COMPILER_EXEEXT_DEFAULT],
+[# Try without -o first, disregard a.out.
+ac_link_save=$ac_link
+ac_link=`echo "$ac_link" | sed ['s/ -o *conftest[^ ]*//']`
+if ls a.* >/dev/null 2>&1; then
+  rm -rf conftestdir
+  mkdir conftestdir
+  mv a.* conftestdir
+fi
+AS_IFELSE([AC_TRY_EVAL(ac_link)],
+          [for ac_file in `ls a.exe a.* 2>/dev/null`; do
+  case $ac_file in
+    *.$ac_ext | *.out | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
+    *) ac_cv_exeext=`expr "$ac_file" : 'conftest\(.*\)'`
+       break;;
+  esac
+done],
+          [echo "$as_me: failed program was:" >&AS_MESSAGE_LOG_FD
+cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD])
+if test -d conftestdir; then
+  mv conftestdir/* .
+  rm -rf conftestdir
+fi
+ac_link=$ac_link_save
+])# _AC_COMPILER_EXEEXT_DEFAULT
+
+
+# _AC_COMPILER_EXEEXT_O
+# ---------------------
+# Check for the extension used when `-o foo'.  Try to see if ac_cv_exeext,
+# as computed by _AC_COMPILER_EXEEXT_DEFAULT is OK.
+m4_define([_AC_COMPILER_EXEEXT_O],
+[_AC_LINK_IFELSE([],
 [# If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
 # work properly (i.e., refer to `conftest.exe'), while it won't with
 # `rm'.
-for ac_file in `ls conftest.exe conftest conftest.* 2>/dev/null`; do
+for ac_file in `ls conftest$ac_cv_exeext conftest.exe conftest conftest.* \
+                  2>/dev/null`; do
   case $ac_file in
     *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
     *) ac_cv_exeext=`expr "$ac_file" : 'conftest\(.*\)'`
@@ -675,7 +701,24 @@
   esac
 done],
               [AC_MSG_ERROR([cannot compute EXEEXT: cannot compile and link])])
-rm -f conftest$ac_cv_exeext])
+rm -f conftest.$ac_ext conftest$ac_cv_exeext
+])# _AC_COMPILER_EXEEXT_O
+
+
+# _AC_COMPILER_EXEEXT
+# -------------------
+# Check for the extension used for executables.  It compiles a test
+# executable.  If this is called, the executable extensions will be
+# automatically used by link commands run by the configure script.
+#
+# Note that some compilers (cross or not), strictly obey to `-o foo' while
+# the host requires `foo.exe', so we should not depend upon `-o' to
+# test EXEEXT.  But then, be sure no to destroy user files.
+m4_define([_AC_COMPILER_EXEEXT],
+[AC_CACHE_CHECK([for executable suffix], ac_cv_exeext,
+                [AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
+_AC_COMPILER_EXEEXT_DEFAULT
+_AC_COMPILER_EXEEXT_O])
 AC_SUBST([EXEEXT], [$ac_cv_exeext])dnl
 ac_exeext=$EXEEXT
 ])# _AC_COMPILER_EXEEXT



reply via email to

[Prev in Thread] Current Thread [Next in Thread]