diff options
Diffstat (limited to 'macros/canonicalize-tools.m4')
-rw-r--r-- | macros/canonicalize-tools.m4 | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/macros/canonicalize-tools.m4 b/macros/canonicalize-tools.m4 new file mode 100644 index 0000000000..811825b538 --- /dev/null +++ b/macros/canonicalize-tools.m4 @@ -0,0 +1,75 @@ +dnl +dnl $Id$ +dnl +dnl Set target tools +dnl + +AC_DEFUN(RTEMS_HOST_AR, +[AC_CHECK_TOOL(AR,ar,no)]) + +AC_DEFUN(RTEMS_HOST_RANLIB, +[AC_CHECK_TOOL(RANLIB,ranlib,:)]) + +AC_DEFUN(RTEMS_GCC_PRINT, +[ + $1=`$CC --print-prog-name=$2` +]) + +AC_DEFUN(RTEMS_PATH_TOOL, +[ +AC_MSG_CHECKING([target's $2]) +AC_CACHE_VAL(ac_cv_path_$1,:) +AC_MSG_RESULT([$ac_cv_path_$1]) + +if test -n "$ac_cv_path_$1"; then + dnl retrieve the value from the cache + $1=$ac_cv_path_$1 +else + dnl the cache was not set + if test -z "[$]$1" ; then + if test "$ac_cv_prog_gcc" = "yes"; then + # We are using gcc, ask it about its tool + # NOTE: Necessary if gcc was configured to use the target's + # native tools or uses prefixes for gnutools (e.g. gas instead of as) + RTEMS_GCC_PRINT($1,$2) + fi + else + # The user set an environment variable. + # Check whether it is an absolute path, otherwise AC_PATH_PROG + # will override the environment variable, which isn't what the user + # intends + AC_MSG_CHECKING([whether environment variable $1 is an absolute path]) + case "[$]$1" in + /*) # valid + AC_MSG_RESULT("yes") + ;; + *) # invalid for AC_PATH_PROG + AC_MSG_RESULT("no") + AC_MSG_ERROR([***] + [Environment variable $1 should either] + [be unset (preferred) or contain an absolute path]) + ;; + esac + fi + + AC_PATH_PROG($1,"$program_prefix"$2,$3) +fi +]) + +AC_DEFUN(RTEMS_CANONICALIZE_TOOLS, +[AC_REQUIRE([RTEMS_PROG_CC])dnl + +dnl FIXME: What shall be done if these tools are not available? + RTEMS_HOST_AR(AR,ar,no) + RTEMS_PATH_TOOL(AS,as,no) + RTEMS_PATH_TOOL(LD,ld,no) + RTEMS_PATH_TOOL(NM,nm,no) + +dnl special treatment of ranlib + RTEMS_HOST_RANLIB + +dnl NOTE: These may not be available if not using gnutools + AC_CHECK_TOOL(OBJCOPY,objcopy,no) + AC_CHECK_TOOL(SIZE,size,no) + AC_CHECK_TOOL(STRIP,strip,:) +]) |