summaryrefslogblamecommitdiffstats
path: root/aclocal/config-subdirs.m4
blob: 719e44e40f6704aedc45dac1579d7e65d08d26dd (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
















                                                                            

                     
                       



















                              




                                                       




















                                                                        
                                           

























































                                                                     




                                                             











































































                                                                                                                                               




                                                        



















                                                                                                                                               
                                                   















                                                                   
dnl $Id$

dnl
dnl Misc utility macros for subdir handling to work around missing abilities
dnl in autoconf, automake and structural issues with RTEMS
dnl
dnl Contains parts derived from autoconf-2.13 AC_OUTPUT_SUBDIRS and Cygnus'
dnl configure.in.
dnl

dnl
dnl _RTEMS_PUSH_BUILDDIR(SUBDIR)
dnl
AC_DEFUN(_RTEMS_PUSH_BUILDDIR,
[
# _RTEMS_PUSH_BUILDDIR
    echo configuring in $1
    case "$srcdir" in
    .) ;;
    *) AS_MKDIR_P([$1])
      ;;
    esac

    ac_popdir=`pwd`
    cd $1
])

dnl
dnl _RTEMS_POP_BUILDDIR
dnl
AC_DEFUN(_RTEMS_POP_BUILDDIR,
[
  cd $ac_popdir
])

dnl
dnl _RTEMS_GIVEN_INSTALL
dnl
AC_DEFUN(_RTEMS_GIVEN_INSTALL,
[
ifdef([AC_PROVIDE_AC_PROG_INSTALL],[  
  case "$ac_given_INSTALL" in
  [[\\/]]* | ?:[[\\/]]*) INSTALL="$ac_given_INSTALL" ;;
  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
  esac
])dnl
])

dnl
dnl _AC_DOTS(PATH)
dnl
AC_DEFUN(_AC_DOTS,[
# A "../" for each directory in $1.
    ac_dots=`echo $1 | \
             sed -e 's%^\./%%' -e 's%[[^/]]$%&/%' -e 's%[[^/]]*/%../%g'`
])

dnl
dnl _RTEMS_ADJUST_SRCDIR(REVAR,CONFIG_DIR[,TARGET_SUBDIR])
dnl
AC_DEFUN(_RTEMS_ADJUST_SRCDIR,[
    _AC_DOTS(ifelse([$3], ,[$2],[$3/$2]))

    case "$srcdir" in
    .) # No --srcdir option.  We are building in place.
      $1=$srcdir ;;
    [[\\/]]* | ?:[[\\/]]*) # Absolute path.
      $1=$srcdir/$2 ;;
    *) # Relative path.
      $1=$ac_dots$srcdir/$2 ;;
    esac
])

dnl
dnl _RTEMS_SUB_SRCDIR(AC_CONFIG_DIR[,TARGET_SUBDIR])
dnl
AC_DEFUN(_RTEMS_SUB_SRCDIR,[
# _RTEMS_SUB_SRCDIR
    _RTEMS_ADJUST_SRCDIR(ac_sub_srcdir,$1,$2)

    # Check for configure
    if test -f $ac_sub_srcdir/configure; then
      ac_sub_configure=$ac_sub_srcdir/configure
    else
      AC_MSG_WARN([no configuration information is in $1])
      ac_sub_configure=
    fi
])

AC_DEFUN(RTEMS_TARGET_CONFIG_PREPARE,[
# Record target_configdirs and the configure arguments in Makefile.
targargs=`echo "${ac_configure_args}" | \
        sed -e 's/--no[[^ 	]]*//' \
            -e 's/--cache[[a-z-]]*=[[^ 	]]*//' \
            -e 's/--ho[[a-z-]]*=[[^ 	]]*//' \
            -e 's/--bu[[a-z-]]*=[[^ 	]]*//' \
            -e 's/--ta[[a-z-]]*=[[^ 	]]*//'`;

targargs="--host=${target_alias} --build=${build} ${targargs}"
AC_SUBST(targargs)
])

AC_DEFUN(RTEMS_TARGET_CONFIG_SUBDIRS,[
#
# TARGET_CONFIG_SUBDIRS
#
if test "$no_recursion" != yes; then
 if test $target != $build; then
  # Remove --srcdir arguments so they do not pile up.
  ac_sub_configure_args=
  ac_prev=
  for ac_arg in $targargs; do
    if test -n "$ac_prev"; then
      ac_prev=
      continue
    fi
    case "$ac_arg" in
    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
      ac_prev=srcdir ;;
    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
      ;;
    *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
    esac
  done

  if test -n "$target_configdirs" && test -d $target_subdir; 
  then :;
  else
    AS_MKDIR_P(["$target_subdir"])
  fi

  for ac_config_dir in $target_configdirs; do
    # Do not complain, so a configure script can configure whichever
    # parts of a large source tree are present.
    if test ! -d $srcdir/$ac_config_dir; then
      continue
    fi

    _RTEMS_PUSH_BUILDDIR([$target_subdir/$ac_config_dir])

    _RTEMS_SUB_SRCDIR([$ac_config_dir],[$target_subdir])

    # The recursion is here.
    if test -n "$ac_sub_configure"; then

      # Make the cache file name correct relative to the subdirectory.
      ac_sub_cache_file=$cache_file
      _RTEMS_GIVEN_INSTALL

      echo "[running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file] --srcdir=$ac_sub_srcdir"
      # The eval makes quoting arguments work.
      CC=${CC_FOR_TARGET}; export CC;
      if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure \
	$ac_sub_configure_args --srcdir=$ac_sub_srcdir \
	--with-target-subdir=$target_subdir \
	--cache-file=$ac_sub_cache_file \
        --exec-prefix="\${prefix}/$target_subdir"
      then :
      else
        AC_MSG_ERROR([$ac_sub_configure failed for $ac_config_dir])
      fi
    fi

    _RTEMS_POP_BUILDDIR
  done
 fi
fi
])

AC_DEFUN(RTEMS_HOST_CONFIG_PREPARE,[
# Record host_configdirs and the configure arguments in Makefile.
hostargs=`echo "${ac_configure_args}" | \
        sed -e 's/--no[[^ 	]]*//' \
            -e 's/--cache[[a-z-]]*=[[^ 	]]*//' \
            -e 's/--ho[[a-z-]]*=[[^ 	]]*//' \
            -e 's/--bu[[a-z-]]*=[[^ 	]]*//' \
            -e 's/--ta[[a-z-]]*=[[^ 	]]*//'`;

hostargs="--host=${host_alias} --build=${build} --target=${target_alias} ${hostargs}"
AC_SUBST(hostargs)
])

AC_DEFUN(RTEMS_HOST_CONFIG_SUBDIRS,[
#
# HOST_CONFIG_SUBDIRS
#
if test "$no_recursion" != yes; then

 if test $build != $host; then
  # Remove --srcdir arguments so they do not pile up.
  ac_sub_configure_args=
  ac_prev=
  for ac_arg in $hostargs; do
    if test -n "$ac_prev"; then
      ac_prev=
      continue
    fi
    case "$ac_arg" in
    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
      ac_prev=srcdir ;;
    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
      ;;
    *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
    esac
  done

  if test -n "$host_configdirs" && test -d $host_subdir;
  then :;
  else
    AS_MKDIR_P(["$host_subdir"])
  fi

  for ac_config_dir in $host_configdirs; do
    # Do not complain, so a configure script can configure whichever
    # parts of a large source tree are present.
    if test ! -d $srcdir/$ac_config_dir; then
      continue
    fi

    _RTEMS_PUSH_BUILDDIR([$host_subdir/$ac_config_dir])

    _RTEMS_SUB_SRCDIR([$ac_config_dir],[$host_subdir])

    # The recursion is here.
    if test -n "$ac_sub_configure"; then

      # Make the cache file name correct relative to the subdirectory.
      ac_sub_cache_file=$cache_file
      _RTEMS_GIVEN_INSTALL

      echo "[running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file] --srcdir=$ac_sub_srcdir"
      CC=${CC_FOR_HOST-$host_alias-gcc}; export CC;
      # The eval makes quoting arguments work.
      if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure \
	$ac_sub_configure_args --srcdir=$ac_sub_srcdir \
	--with-target-subdir=$host_subdir \
	--cache-file=$ac_sub_cache_file
      then :
      else
        AC_MSG_ERROR([$ac_sub_configure failed for $ac_config_dir])
      fi
    fi

    _RTEMS_POP_BUILDDIR
  done
 fi
fi
])