Changeset 98100d2 in rtems for aclocal

Jun 27, 1998, 5:09:47 PM (22 years ago)
Joel Sherrill <joel.sherrill@…>
4.10, 4.11, 4.8, 4.9, master

Monstrous patch from Ralf Corsepius <corsepiu@…>. I have
made no attempt to divide the comments up and place them with just
the appropriate files. Here is an excerpt from Ralf's email:

Changes including comments on changes I made after cycling through
all the targets:

  • Added ranlib support. Now all targets use "ranlib" instead of "ar -s" to build an index for a library. If ranlib isn't detected during configuration, check if ar -s is working and try "ar -s" instead of
  • Removed $(XXX_FOR_TARGET) from make/, use $(XXX) instead now.
  • gcc-target-default.cfg: LINK_XXXX-defines reworked to solve the -l problem under posix (cf gcc-target-default.cfg)
  • rtems-glom replaced by Makefile-rules inside of the wrapup/ that has been using rtems-glom until now.
  • Removed CCC and friends in gcc-target-default.cfg, as they have been breaking CXX support.
  • Removed CONFIG.$(TARGET_ARCH).CC lines from several custom/*.cfg files, because this is now set in custom/default.cfg.
  • Added aclocal/ar-s.m4, check whether "ar -s" is working
  • Added aclocal/cygwin.m4 and aclocal/exeext.m4.
  • Reworked aclocal/canonicalize-tools.m4: Added ar -s check; fixes for problems when XXX_FOR_TARGET is given via environment variables (didn't work for gcc until now), adding cygwin check, improved autoconf-cache handling.
  • Removed -l from make rule dependencies. LINK_LIBS is now allowed to contain -L and -l. LINK_OBJS and LINK_FILES must not contain -L or -l. gcc28 make-exe rules now link using $(LINK_OBJS) $(LINK_LIBS) => Almost all custom/*.cfg are modified. This is very likely to break something because of typos or having missed to edit a file.

Open problems, known bugs, things I didn't do:

  • custom/p4000.cfg seems to be out of date and requires to be reviewed.

(JRS NOTE: It is subordinate p4650 and p4600 -- both of which build ok

after minor changes.)

  • custom/psim.cfg needs to be reviewed, I added some changes to it, I am insecure about.

(JRS NOTE: psim had a minor problem endif/endef swapped but runs fine.)

  • can now be removed.
  • gcc*.cfg files "make depend" rules don't honor language specific flags (e.g CXXFLAGS is ignored for *.cc) - Nothing to worry about now, but may cause problems for hosts/targets not using gcc or rtems-add-ons that use external packages.
  • AFAIS, the no_bsp BSP can't be build anymore, i.e. configure refused to configure for it whatever I tried.
  • The toplevel and toplevel+1 README files are quite out-dated
  • cygwin.m4 isn't of much use for rtems. In most cases (cf. aclocal/*.m4) it is worked around by directly using $host_os. I think I'll remove it soon after the next snapshot
  • Before release the cygwin patch needs to be tested under cygwin. I may have broken/missed something (esp. the sed-pattern to convert
    into / may be broken).
  • You should try to build/run the posix-BSP under solaris - I don't expect problems, but I am not 100% sure, esp. with regard to ranlib/ar -s.
  • You should consider to convert all make/compilers/*.cfg files into make/compilers/* files and let autoconf generate the *.cfg. This may help getting rid of some if/then/else statements and help hard-coding some defines into those files in future and shouldn't disturb now.
  • Not having installed libc.a/libm.a on a host may still break building rtems, esp. when using -disable-gcc28 as the gcc27-configuration scheme directly accesses libc.a and libm.a. The problem should not appear when using gcc28 because it references libc/libm only through -lc and -lm which may be static or dynamic (I didn't test this).
  • shgen is not yet included (I didn't yet have enough time to integrate it).
  • I know about a few more configure-probs (esp. cross-checking --enable-* flags).

+ warn/refuse to configure when --enable-libcdir and

--enable-gcc28 are given.

+ force --enable-libcdir when --disable-gcc28 is given

  • Replaced KSHELL with @KSH@ in some shell scripts generated by
  • Added a dependency to aclocal/*.m4 in the toplevel Makefile => configure and aclocal.m4 will now be rebuild when any aclocal/*.m4 file is changed
  • Some changes to aclocal/gcc-pipe.m4 and aclocal/gcc-specs.m4
  • Replaced i3456?86-unknown-freebsd2.12? with i3456?86-*freebsd2.* in, as I suppose there might exist a variety of valid vendors (2nd field of the name-tripple)
  • Disabled override MAKEFLAGS in toplevel - Potential side-effects are not really clear to me.
  • In mvme162.cfg, $(LINK_LIBS) is missing in the CC line in gcc28's make-exe rule (yet another one I missed to edit). Just append $(LINK_LIBS) to the "CC" line, like I hopefully did to ALL other custom/*.cfg files.
  • the problem with mvme162lx.cfg is a follow-up problem of the mvme162.cfg-bug.
  • mvme162/console and idp/console had variables named Buffer which conflicted with similarly named variables in some tests.
3 added
3 edited


  • aclocal/canonicalize-tools.m4

    rd13b247 r98100d2  
    33dnl Set target tools
     5dnl 98/06/23 Ralf Corsepius     (
     6dnl             fixing cache/environment variable handling
     7dnl             adding checks for cygwin/egcs '\\'-bug
     8dnl             adding checks for ranlib/ar -s problem
    510dnl 98/02/12 Ralf Corsepius     (
     14[ case $host_os in
     15  *cygwin32*)
     16    dnl FIXME: Hack for cygwin/egcs reporting mixed '\\' and '/'
     17    dnl        Should be removed once cygwin/egcs reports '/' only
     18    $1=`$CC_FOR_TARGET --print-prog-name=$2 | sed -e "s%\\\\%/%g" `
     19    ;;
     20  *)
     21    $1=`$CC_FOR_TARGET --print-prog-name=$2`
     22    ;;
     23  esac
     28AC_MSG_CHECKING([target's $2])
     32if test -n "$ac_cv_path_$1"; then
     33  dnl retrieve the value from the cache
     34  $1=$ac_cv_path_$1
     36  dnl the cache was not set
     37  if test -z "[$]$1" ; then
     38    if test "$rtems_cv_prog_gcc" = "yes"; then
     39      # We are using gcc, ask it about its tool
     40      # NOTE: Necessary if gcc was configured to use the target's
     41      # native tools or uses prefixes for gnutools (e.g. gas instead of as)
     42      RTEMS_GCC_PRINT($1,$2)
     43    fi
     44  else
     45    # The user set an environment variable.
     46    # Check whether it is an absolute path, otherwise AC_PATH_PROG
     47    # will override the environment variable, which isn't what the user
     48    # intends
     49    AC_MSG_CHECKING([whether environment variable $1 is an absolute path])
     50    case "[$]$1" in
     51    /*) # valid
     52      AC_MSG_RESULT("yes")
     53    ;;
     54    *)  # invalid for AC_PATH_PROG
     55      AC_MSG_RESULT("no")
     56      AC_MSG_ERROR([***]
     57        [Environment variable $1 should ether]
     58        [be unset (preferred) or contain an absolute path])
     59    ;;
     60    esac
     61  fi
     63  AC_PATH_PROG($1,"$program_prefix"$2,$3)
    10 if test "$rtems_cv_prog_gcc" = "yes" ; then
    11   dnl We are using gcc, now ask it about its tools
    12   dnl Necessary if gcc was configured to use the target's native tools
    13   dnl or uses prefixes for gnutools (e.g. gas instead of as)
    14   AR_FOR_TARGET=`$CC_FOR_TARGET --print-prog-name=ar`
    15   AS_FOR_TARGET=`$CC_FOR_TARGET --print-prog-name=as`
    16   LD_FOR_TARGET=`$CC_FOR_TARGET --print-prog-name=ld`
    17   NM_FOR_TARGET=`$CC_FOR_TARGET --print-prog-name=nm`
    18   RANLIB_FOR_TARGET=`$CC_FOR_TARGET --print-prog-name=ranlib`
    19 fi
    21 dnl check whether the tools exist
    22 dnl FIXME: What shall be done if they don't exist?
     70dnl FIXME: What shall be done if these tools are not available?
    24 dnl FIXME: This may fail if the compiler has not been recognized as gcc
    25 dnl       and uses tools with different names
    26 AC_PATH_PROG(AR_FOR_TARGET,"$program_prefix"ar,no)
    27 AC_PATH_PROG(AS_FOR_TARGET,"$program_prefix"as,no)
    28 AC_PATH_PROG(NM_FOR_TARGET,"$program_prefix"nm,no)
    29 AC_PATH_PROG(LD_FOR_TARGET,"$program_prefix"ld,no)
     76dnl special treatment of ranlib
     78  if test "$RANLIB_FOR_TARGET" = "no"; then
     79    # ranlib wasn't found; check if ar -s is available
     81    if test $rtems_cv_AR_FOR_TARGET_S = "yes" ; then
     82      dnl override RANLIB_FOR_TARGET's cache
     83      ac_cv_path_RANLIB_FOR_TARGET="$AR_FOR_TARGET -s"
     84      RANLIB_FOR_TARGET=$ac_cv_path_RANLIB_FOR_TARGET
     85    else
     86      AC_MSG_ERROR([***]
     87        [Can't figure out how to build a library index]
     88        [Nether ranlib nor ar -s seem to be available] )
     89    fi
     90  fi
    31 dnl NOTE: This is doubtful, but should not disturb all current rtems'
    32 dnl       targets (remark: solaris fakes ranlib!!)
    33 AC_PATH_PROG(RANLIB_FOR_TARGET,"$program_prefix"ranlib,no)
    35 dnl NOTE: These may not be available, if not using gnutools
    36 AC_PATH_PROG(OBJCOPY_FOR_TARGET,"$program_prefix"objcopy,no)
    37 AC_PATH_PROG(SIZE_FOR_TARGET,"$program_prefix"size,no)
     92dnl NOTE: These may not be available if not using gnutools
  • aclocal/gcc-pipe.m4

    rd13b247 r98100d2  
    1212AC_CACHE_CHECK(whether $CC_FOR_TARGET accepts --pipe,rtems_cv_gcc_pipe,
     15if test "$rtems_cv_prog_gcc" = "yes"; then
    1416case "$host_os" in
    1517  cygwin32*)
    16     rtems_cv_gcc_pipe=no
    1718    ;;
    1819  *)
    2021    if test -z "`${CC_FOR_TARGET} --pipe -c conftest.c 2>&1`";then
    2122      rtems_cv_gcc_pipe=yes
    22     else
    23       rtems_cv_gcc_pipe=no
    2423    fi
    2524    rm -f conftest*
    2625    ;;
  • aclocal/gcc-specs.m4

    rd13b247 r98100d2  
    1111AC_CACHE_CHECK(whether $CC_FOR_TARGET accepts -specs,rtems_cv_gcc_specs,
    12 [touch confspec
    13 echo 'void f(){}' >conftest.c
    14 if test -z "`${CC_FOR_TARGET} -specs confspec -c conftest.c 2>&1`";then
    15   rtems_cv_gcc_specs=yes
    16 else
    17   rtems_cv_gcc_specs=no
     14if test "$rtems_cv_prog_gcc" = "yes"; then
     15  touch confspec
     16  echo 'void f(){}' >conftest.c
     17  if test -z "`${CC_FOR_TARGET} -specs confspec -c conftest.c 2>&1`";then
     18    rtems_cv_gcc_specs=yes
     19  fi
    1921rm -f confspec conftest*
Note: See TracChangeset for help on using the changeset viewer.