autoconf-patches
[Top][All Lists]
Advanced

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

Re: AC_CHECK_TARGET_TOOL behavior


From: Ralf Wildenhues
Subject: Re: AC_CHECK_TARGET_TOOL behavior
Date: Thu, 14 Aug 2008 22:55:13 +0200
User-agent: Mutt/1.5.18 (2008-05-17)

Hi Dave,

Thanks for the bug report.

* dave erickson wrote on Wed, Aug 13, 2008 at 03:57:31PM CEST:
> 
> I have a problem with AC_CHECK_TARGET_TOOL setting the standard
> environment variables It finds the system version tools like ar
> instead of x86_64-ar  and notes them, it finds  '/usr/bin/ar" but then
> doesn't set AR properly.
> In the configure.ac  I have a section looking for tools with target
> canonical names
> 
> AC_CHECK_TARGET_TOOL([CPP], cpp [], [])       
[...]
> AC_SUBST(CPP)
[...]
> And then when configure is finished, the config.log has some sort of
> intermediate values instead of the final environment values
> 
> like AR='ac_ct_AR' which then crashes when I try and use AR.  Why is
> configure not putting the target variables into the common environment
> variables?
> 
> For example 
> CPP='ac_ct_CPP'
> CXX='ac_ct_CXX'
> 
> And yet CC is set properly
> CC='gcc'

Wow, the AC_CHECK_TARGET* are pretty broken.  No wonder, they are not
exercised by the test suite at all.  :-/  They are also virtually
unused by other packages.

Dave, you are aware that the *TARGET* macros only make sense to use
if the package you are writing is a compiler that can act as a cross
compiler?  If not, then please look at the macros without TARGET in
their name.

The bit fixing most of the issues you reported is the missing '$' in
AC_CHECK_TARGET_TOOL.  I think the macros are wrong in warning about a
previous AC_CANONICAL_TARGET, however.  Shouldn't it rather be that they
should require it?

I'm still looking for a good testsuite addition for these macros.

OK to apply?

Thanks,
Ralf

2008-08-14  Ralf Wildenhues  <address@hidden>

        * lib/autoconf/programs.m4 (AC_CHECK_TOOLS, AC_PATH_TARGET_TOOL)
        (AC_CHECK_TARGET_TOOL, AC_CHECK_TARGET_TOOLS): Require, do not
        warn about previous AC_CANONICAL_TARGET.
        (AC_CHECK_TARGET_TOOL): Add missing `$' making the macro
        unusable in the non-cross-compiling case.
        * NEWS, THANKS: Update.
        Report by Dave Erickson.

diff --git a/NEWS b/NEWS
index dbff114..5fc03d8 100644
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,8 @@ GNU Autoconf NEWS - User visible changes.
    2.62 when using macros such as AC_AIX that were made obsolete in
    favor of the more portable AC_USE_SYSTEM_EXTENSIONS.
 
+** AC_CHECK_TARGET_TOOLS is usable in the non-cross-compile case.
+
 ** Newly obsolete macros
    The following macro has been marked obsolete, since current porting
    targets can safely assume C89 semantics that signal handlers return
diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4
index e7e72c0..f2245fb 100644
--- a/lib/autoconf/programs.m4
+++ b/lib/autoconf/programs.m4
@@ -291,10 +291,10 @@ fi
 
 
 # AC_PATH_TARGET_TOOL(VARIABLE, PROG-TO-CHECK-FOR, [VALUE-IF-NOT-FOUND], 
[PATH])
-# -----------------------------------------------------------------------
+# 
------------------------------------------------------------------------------
 # (Use different variables $1 and ac_pt_$1 so that cache vars don't conflict.)
 AC_DEFUN([AC_PATH_TARGET_TOOL],
-[AC_BEFORE([$0], [AC_CANONICAL_TARGET])dnl
+[AC_REQUIRE([AC_CANONICAL_TARGET])dnl
 AC_PATH_PROG([$1], [$target_alias-$2], , [$4])
 if test -z "$ac_cv_path_$1"; then
   if test "$build" = "$target"; then
@@ -311,16 +311,16 @@ fi
 
 
 # AC_CHECK_TARGET_TOOL(VARIABLE, PROG-TO-CHECK-FOR, [VALUE-IF-NOT-FOUND], 
[PATH])
-# ------------------------------------------------------------------------
+# 
-------------------------------------------------------------------------------
 # (Use different variables $1 and ac_ct_$1 so that cache vars don't conflict.)
 AC_DEFUN([AC_CHECK_TARGET_TOOL],
-[AC_BEFORE([$0], [AC_CANONICAL_TARGET])dnl
+[AC_REQUIRE([AC_CANONICAL_TARGET])dnl
 AC_CHECK_PROG([$1], [$target_alias-$2], [$target_alias-$2], , [$4])
 if test -z "$ac_cv_prog_$1"; then
   if test "$build" = "$target"; then
     ac_ct_$1=$$1
     _AC_CHECK_PROG([ac_ct_$1], [$2], [$2], [$3], [$4])
-    $1=ac_ct_$1
+    $1=$ac_ct_$1
   else
     $1="$3"
   fi
@@ -332,12 +332,12 @@ fi
 
 # AC_CHECK_TARGET_TOOLS(VARIABLE, PROGS-TO-CHECK-FOR, [VALUE-IF-NOT-FOUND],
 #                      [PATH])
-# ------------------------------------------------------------------
+# -------------------------------------------------------------------------
 # Check for each tool in PROGS-TO-CHECK-FOR with the cross prefix. If
 # none can be found with a cross prefix, then use the first one that
 # was found without the cross prefix.
 AC_DEFUN([AC_CHECK_TARGET_TOOLS],
-[AC_BEFORE([$0], [AC_CANONICAL_TARGET])dnl
+[AC_REQUIRE([AC_CANONICAL_TARGET])dnl
 for ac_prog in $2
 do
   AC_CHECK_PROG([$1],




reply via email to

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