This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFT/RFA] Look for alternate names of the target C/C++ compilers


This patch fixes the problem with building cross libraries (AFAICT in a non-combined tree) that Paul Brook signaled.

NCN_STRICT_CHECK_TARGET_TOOL does not allow to specify multiple names for the tool, so I rewrote it as NCN_STRICT_CHECK_TARGET_TOOLS. To keep code consistent, I did the same for NCN_STRICT_CHECK_TOOL (creating NCN_STRICT_CHECK_TOOLS). Finally, I removed NCN_CHECK_TARGET_TOOL because it was unused (my guess is Nathanael put it there because it was not yet in CVS autoconf, but now it is).

Paul, can you please test if this works for you? If so, ok for gcc/src?

Paolo
2005-08-10  Paolo Bonzini  <bonzini@gnu.org>

	* configure.in: Replace NCN_STRICT_CHECK_TOOL with
	NCN_STRICT_CHECK_TOOLS, and likewise for NCN_STRICT_CHECK_TARGET_TOOLS.
	Look for alternate names of the target cc and c++
	* config/acx.m4 (NCN_CHECK_TARGET_TOOL, NCN_STRICT_CHECK_TOOL,
	NCN_STRICT_CHECK_TARGET_TOOL): Remove.
	(NCN_STRICT_CHECK_TOOLS, NCN_STRICT_CHECK_TARGET_TOOLS): New,
	based on the deleted macros.
	
Index: configure.in
===================================================================
RCS file: /cvs/gcc/gcc/configure.in,v
retrieving revision 1.362
diff -p -u -r1.362 configure.in
*** configure.in	8 Aug 2005 09:19:07 -0000	1.362
--- configure.in	10 Aug 2005 09:50:44 -0000
***************
*** 2081,2095 ****
  AC_SUBST(config_shell)
  
  # Host tools.
! NCN_STRICT_CHECK_TOOL(AR, ar)
! NCN_STRICT_CHECK_TOOL(AS, as)
! NCN_STRICT_CHECK_TOOL(DLLTOOL, dlltool)
! NCN_STRICT_CHECK_TOOL(LD, ld)
! NCN_STRICT_CHECK_TOOL(NM, nm)
! NCN_STRICT_CHECK_TOOL(RANLIB, ranlib, :)
! NCN_STRICT_CHECK_TOOL(WINDRES, windres)
! NCN_STRICT_CHECK_TOOL(OBJCOPY, objcopy)
! NCN_STRICT_CHECK_TOOL(OBJDUMP, objdump)
  AC_SUBST(CC)
  AC_SUBST(CXX)
  AC_SUBST(CFLAGS)
--- 2077,2091 ----
  AC_SUBST(config_shell)
  
  # Host tools.
! NCN_STRICT_CHECK_TOOLS(AR, ar)
! NCN_STRICT_CHECK_TOOLS(AS, as)
! NCN_STRICT_CHECK_TOOLS(DLLTOOL, dlltool)
! NCN_STRICT_CHECK_TOOLS(LD, ld)
! NCN_STRICT_CHECK_TOOLS(NM, nm)
! NCN_STRICT_CHECK_TOOLS(RANLIB, ranlib, :)
! NCN_STRICT_CHECK_TOOLS(WINDRES, windres)
! NCN_STRICT_CHECK_TOOLS(OBJCOPY, objcopy)
! NCN_STRICT_CHECK_TOOLS(OBJDUMP, objdump)
  AC_SUBST(CC)
  AC_SUBST(CXX)
  AC_SUBST(CFLAGS)
***************
*** 2098,2115 ****
  
  # Target tools.  Do the tests using the names they may have passed in
  # the environment, then move it to CONFIGURED_*_FOR_TARGET.
! NCN_STRICT_CHECK_TARGET_TOOL(AR_FOR_TARGET, ar)
! NCN_STRICT_CHECK_TARGET_TOOL(AS_FOR_TARGET, as)
! NCN_STRICT_CHECK_TARGET_TOOL(CC_FOR_TARGET, cc)
! NCN_STRICT_CHECK_TARGET_TOOL(CXX_FOR_TARGET, c++)
! NCN_STRICT_CHECK_TARGET_TOOL(DLLTOOL_FOR_TARGET, dlltool)
! NCN_STRICT_CHECK_TARGET_TOOL(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET})
! NCN_STRICT_CHECK_TARGET_TOOL(GCJ_FOR_TARGET, gcj)
! NCN_STRICT_CHECK_TARGET_TOOL(GFORTRAN_FOR_TARGET, gfortran)
! NCN_STRICT_CHECK_TARGET_TOOL(LD_FOR_TARGET, ld)
! NCN_STRICT_CHECK_TARGET_TOOL(NM_FOR_TARGET, nm)
! NCN_STRICT_CHECK_TARGET_TOOL(RANLIB_FOR_TARGET, ranlib, :)
! NCN_STRICT_CHECK_TARGET_TOOL(WINDRES_FOR_TARGET, windres)
  
  CONFIGURED_AR_FOR_TARGET="$AR_FOR_TARGET"
  CONFIGURED_AS_FOR_TARGET="$AS_FOR_TARGET"
--- 2094,2111 ----
  
  # Target tools.  Do the tests using the names they may have passed in
  # the environment, then move it to CONFIGURED_*_FOR_TARGET.
! NCN_STRICT_CHECK_TARGET_TOOLS(AR_FOR_TARGET, ar)
! NCN_STRICT_CHECK_TARGET_TOOLS(AS_FOR_TARGET, as)
! NCN_STRICT_CHECK_TARGET_TOOLS(CC_FOR_TARGET, cc gcc)
! NCN_STRICT_CHECK_TARGET_TOOLS(CXX_FOR_TARGET, c++ g++ cxx gxx)
! NCN_STRICT_CHECK_TARGET_TOOLS(DLLTOOL_FOR_TARGET, dlltool)
! NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET})
! NCN_STRICT_CHECK_TARGET_TOOLS(GCJ_FOR_TARGET, gcj)
! NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran)
! NCN_STRICT_CHECK_TARGET_TOOLS(LD_FOR_TARGET, ld)
! NCN_STRICT_CHECK_TARGET_TOOLS(NM_FOR_TARGET, nm)
! NCN_STRICT_CHECK_TARGET_TOOLS(RANLIB_FOR_TARGET, ranlib, :)
! NCN_STRICT_CHECK_TARGET_TOOLS(WINDRES_FOR_TARGET, windres)
  
  CONFIGURED_AR_FOR_TARGET="$AR_FOR_TARGET"
  CONFIGURED_AS_FOR_TARGET="$AS_FOR_TARGET"
Index: config/acx.m4
===================================================================
RCS file: /cvs/gcc/gcc/config/acx.m4,v
retrieving revision 1.12
diff -p -u -r1.12 acx.m4
*** config/acx.m4	29 Apr 2005 13:54:56 -0000	1.12
--- config/acx.m4	10 Aug 2005 09:50:44 -0000
***************
*** 103,174 ****
  ]) []dnl # _NCN_TOOL_PREFIXES
  
  ####
! # NCN_CHECK_TARGET_TOOL(variable, prog-to-check-for,[value-if-not-found],[path])
! # Like AC_CHECK_TOOL, but tries a prefix of the target, not the host.
! # Code is pretty much lifted from autoconf2.53.
  
! AC_DEFUN([NCN_CHECK_TARGET_TOOL],
  [AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl
! if test -n "$ncn_target_tool_prefix"; then
!   AC_CHECK_PROG([$1], [${ncn_target_tool_prefix}$2], 
!                 [${ncn_target_tool_prefix}$2], , [$4])
! fi
! if test -z "$ac_cv_prog_$1" ; then
!   ncn_cv_$1=$$1
!   AC_CHECK_PROG([ncn_cv_$1], [$2], [$2], [$3], [$4])
!   $1=$ncn_cv_$1
! else
!   $1="$ac_cv_prog_$1"
! fi
! ]) []dnl # NCN_CHECK_TARGET_TOOL
! 
! 
! ####
! # NCN_STRICT_CHECK_TOOL(variable, prog-to-check-for,[value-if-not-found],[path])
! # Like AC_CHECK_TOOL, but requires the prefix if build!=host.
  
- AC_DEFUN([NCN_STRICT_CHECK_TOOL],
- [AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl
- if test -n "$ncn_tool_prefix"; then
-   AC_CHECK_PROG([$1], [${ncn_tool_prefix}$2], 
-                 [${ncn_tool_prefix}$2], , [$4])
- fi
  if test -z "$ac_cv_prog_$1" ; then
    if test $build = $host ; then
!     ncn_cv_$1=$$1
!     AC_CHECK_PROG([ncn_cv_$1], [$2], [$2], [ifelse([$3],[],[$2],[$3])], [$4]) 
!     $1=$ncn_cv_$1
    else
!     $1="ifelse([$3],[],[${ncn_tool_prefix}$2],[$3])"
!   fi
! else
!   $1="$ac_cv_prog_$1"
  fi
! ]) []dnl # NCN_STRICT_CHECK_TOOL
! 
  
  ####
! # NCN_STRICT_CHECK_TARGET_TOOL(variable, prog-to-check-for,[value-if-not-found],[path])
! # Like NCN_CHECK_TARGET_TOOL, but requires the prefix if build!=target.
  
! AC_DEFUN([NCN_STRICT_CHECK_TARGET_TOOL],
  [AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl
! if test -n "$ncn_target_tool_prefix"; then
!   AC_CHECK_PROG([$1], [${ncn_target_tool_prefix}$2], 
!                 [${ncn_target_tool_prefix}$2], , [$4])
! fi
  if test -z "$ac_cv_prog_$1" ; then
!   if test $build = $target ; then
!     ncn_cv_$1=$$1
!     AC_CHECK_PROG([ncn_cv_$1], [$2], [$2], [ifelse([$3],[],[$2],[$3])], [$4]) 
!     $1=$ncn_cv_$1
    else
!     $1="ifelse([$3],[],[${ncn_target_tool_prefix}$2],[$3])"
!   fi
! else
!   $1="$ac_cv_prog_$1"
  fi
! ]) []dnl # NCN_STRICT_CHECK_TARGET_TOOL
  
  ###
  # AC_PROG_CPP_WERROR
--- 103,160 ----
  ]) []dnl # _NCN_TOOL_PREFIXES
  
  ####
! # NCN_STRICT_CHECK_TOOLS(variable, progs-to-check-for,[value-if-not-found],[path])
! # Like plain AC_CHECK_TOOLS, but require prefix if build!=target.
  
! AC_DEFUN([NCN_STRICT_CHECK_TOOLS],
  [AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl
! for ncn_progname in $2; do
!   if test -n "$ncn_tool_prefix"; then
!     AC_CHECK_PROG([$1], [${ncn_tool_prefix}${ncn_progname}], 
!                   [${ncn_tool_prefix}${ncn_progname}], , [$4])
!   fi
!   if test -z "$ac_cv_prog_$1" && test $build = $host ; then
!     AC_CHECK_PROG([$1], [${ncn_progname}], [${ncn_progname}], , [$4]) 
!   fi
!   test -n "$ac_cv_prog_$1" && break
! done
  
  if test -z "$ac_cv_prog_$1" ; then
+   ifelse([$3],[], [set dummy $2
    if test $build = $host ; then
!     $1="[$]2"
    else
!     $1="${ncn_tool_prefix}[$]2"
!   fi], [$1="$3"])
  fi
! ]) []dnl # NCN_STRICT_CHECK_TOOLS
  
  ####
! # NCN_STRICT_CHECK_TARGET_TOOLS(variable, progs-to-check-for,[value-if-not-found],[path])
! # Like CVS Autoconf AC_CHECK_TARGET_TOOLS, but require prefix if build!=target.
  
! AC_DEFUN([NCN_STRICT_CHECK_TARGET_TOOLS],
  [AC_REQUIRE([_NCN_TOOL_PREFIXES]) []dnl
! for ncn_progname in $2; do
!   if test -n "$ncn_target_tool_prefix"; then
!     AC_CHECK_PROG([$1], [${ncn_target_tool_prefix}${ncn_progname}], 
!                   [${ncn_target_tool_prefix}${ncn_progname}], , [$4])
!   fi
!   if test -z "$ac_cv_prog_$1" && test $build = $target ; then
!     AC_CHECK_PROG([$1], [${ncn_progname}], [${ncn_progname}], , [$4]) 
!   fi
!   test -n "$ac_cv_prog_$1" && break
! done
! 
  if test -z "$ac_cv_prog_$1" ; then
!   ifelse([$3],[], [set dummy $2
!   if test $build = $target ; then
!     $1="[$]2"
    else
!     $1="${ncn_target_tool_prefix}[$]2"
!   fi], [$1="$3"])
  fi
! ]) []dnl # NCN_STRICT_CHECK_TARGET_TOOLS
  
  ###
  # AC_PROG_CPP_WERROR

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]