summaryrefslogblamecommitdiffstats
path: root/acinclude.m4
blob: 0a1b9d94daa91566e8252bd763d2d9690f005fde (plain) (tree)
1
                                                 






























                                                                               



                               




                                          

                          






                                                      



                               





                                                    



                                  





                                                      

                            







                                                        


      






































                                                                   

                          



                                                                         
   
                                 
  
































                                                                       

                                                                      



                                                                        


                                    
                                    
 

                                                           
                                                                   
 


                      
                                                                                                                         







































                                                                        
                            


                                                                                      
                                 
                                                                        

                                                                          
                                     
                                                                                

                                                                                    
 
                                              

                                                                                              










                                                            
                                               









                                                                     

                                       




            

                               
              
      















                                                                          
                        

                          
                            

                            
                          







                                                                             
                 
 



                            

           

  
                                      
                                                

                                        

                                                          



                                                             
                      




                

                                                 




                                                 



                                                  
    






                                                   









                                                                     


                                                         
                                                                                           
                     




                           

                                                     




                                                



                                                  
    






                                                    









                                                                     


                                                           
                                                                                                 
                       



                               
## All directories belong in one of 3 categories.
## ${HOST_CONFIGDIRS_LIST} is directories we build using the host tools.
## ${TARGET_CONFIGDIRS_LIST} is directories we build using the target tools.
## ${BUILD_CONFIGDIRS_LIST} is directories we build using the build tools


dnl RTEMS_ARG_VAR(VAR,HELP-STRING)
dnl An internal macros to have help strings pretty
dnl printed with configure --help, without letting autoconf spoil config subdir
dnl environments by trying to propagate them
dnl Stripped down version of autoconf-2.52's AC_ARG_VAR.

AC_DEFUN([_RTEMS_ARG_VAR],
[
m4_expand_once([m4_divert_once([HELP_VAR],
[AC_HELP_STRING([$1], [$2], [              ])])],
      [$0($1)])dnl
])

AC_DEFUN([_RTEMS_SUBST_IFNOT],
[AS_IF([`echo " [$]$1 " | grep " $2 " > /dev/null`],
  [],
  [AC_SUBST([$1],["[$]$1 $2"])])
])

AC_DEFUN([_RTEMS_COMMANDS_POST_CONFIG_SUBDIRS],
[
AC_CONFIG_COMMANDS_PRE([
_RTEMS_BUILD_CONFIG_PREPARE
_RTEMS_HOST_CONFIG_PREPARE
_RTEMS_TARGET_CONFIG_PREPARE

AS_IF([test $build = $host],
[
  AS_IF([test $host = $target],
  [dnl b=h, h=t, t=b
    BUILD_SUBDIRS="${build_configdirs}"
    build_configdirs="${build_configdirs}"
    HOST_SUBDIRS=""
    host_configdirs=""
    TARGET_SUBDIRS=""
    target_configdirs=""],
  [dnl b=h, h!=t, t!=b
    BUILD_SUBDIRS="${build_configdirs}"
    build_configdirs="${build_configdirs}"
    HOST_SUBDIRS=""
    host_configdirs=""
    TARGET_SUBDIRS=`echo "${target_configdirs}" | \
      sed -e "s%\([[^ ]][[^ ]]*\)%$target_alias/\1%g"`
    target_configdirs="${target_configdirs}"
  ])
],[
  AS_IF([test $host = $target],
  [ dnl b!=h, h=t, b!=t
    BUILD_SUBDIRS="${build_configdirs}"
    build_configdirs="${build_configdirs}"
    HOST_SUBDIRS=`echo "${host_configdirs}" | \
      sed -e "s%\([[^ ]][[^ ]]*\)%$host_alias/\1%g"`
    host_configdirs="${host_configdirs}"
    TARGET_SUBDIRS=""
    target_configdirs=""],
  [
    AS_IF([test $build = $target],
    [dnl b!=h, h!=t, b=t
      BUILD_SUBDIRS="${build_configdirs}"
      build_configdirs="${build_configdirs}"
      HOST_SUBDIRS=`echo "${host_configdirs}" | \
        sed -e "s%\([[^ ]][[^ ]]*\)%$host_alias/\1%g"`
      host_configdirs="${host_configdirs}"
      TARGET_SUBDIRS=""
      target_configdirs=""],
    [dnl b!=h, h!=t, b!=t
      BUILD_SUBDIRS="${build_configdirs}"
      build_configdirs="${build_configdirs}"
      HOST_SUBDIRS=`echo "${host_configdirs}" | \
        sed -e "s%\([[^ ]][[^ ]]*\)%$host_alias/\1%g"`
      host_configdirs="${host_configdirs}"
      TARGET_SUBDIRS=`echo "${target_configdirs}" | \
        sed -e "s%\([[^ ]][[^ ]]*\)%$target_alias/\1%g"`
      target_configdirs="${target_configdirs}"
    ])
  ])
])

AC_SUBST(HOST_SUBDIRS)
AC_SUBST(TARGET_SUBDIRS)
AC_SUBST(BUILD_SUBDIRS)
])

  AC_CONFIG_COMMANDS_POST([
    _RTEMS_OUTPUT_SUBDIRS([build],[BUILD])
    _RTEMS_OUTPUT_SUBDIRS([host],[HOST])
    _RTEMS_OUTPUT_SUBDIRS([target],[TARGET])
  ])
])

dnl _RTEMS_SRCPATHS(BUILD-DIR-NAME)
dnl ----------------------------
dnl Inputs:
dnl   - BUILD-DIR-NAME is `top-build -> build' and `top-src -> src'
dnl   - `$srcdir' is `top-build -> top-src'
dnl
dnl Outputs:
dnl - `ac_builddir' is `.', for symmetry only.
dnl - `ac_top_builddir' is `build -> top_build'.
dnl      If not empty, has a trailing slash.
dnl - `ac_srcdir' is `build -> src'.
dnl - `ac_top_srcdir' is `build -> top-src'.
dnl
dnl and `ac_buildpath' etc., the absolute paths.
m4_define([_RTEMS_SRCPATHS],
[
m4_if([$2],,
[dstdir=$1],
[case "$2" in
"." | "" ) 	# No subdir was given
  dstdir=$1;;
* ) 		# A subdir was given
  dstdir=$2/$1;;
esac])
ac_builddir=.

AS_IF([test $dstdir != .],
[ # Strip off leading ./
  ac_builddir_suffix=/`echo $dstdir | sed 's,^\.[[\\/]],,'`
  ac_srcdir_suffix=/`echo $1 | sed 's,^\.[[\\/]],,'`
  # A "../" for each directory in $ac_dir_suffix.
  ac_top_builddir=`echo "$ac_builddir_suffix" | sed 's,/[[^\\/]]*,../,g'`
],[
  ac_dir_suffix= ac_top_builddir=
])

case $srcdir in
  .)  # No --srcdir option.  We are building in place.
    ac_srcdir=.
    if test -z "$ac_top_builddir"; then
       ac_top_srcdir=.
    else
       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
    fi ;;
  [[\\/]]* | ?:[[\\/]]* )  # Absolute path.
    ac_srcdir=$srcdir$ac_srcdir_suffix;
    ac_top_srcdir=$srcdir;
    ;;
  *) # Relative path.
    ac_srcdir=$ac_top_builddir$srcdir$ac_srcdir_suffix;
    ac_top_srcdir=$ac_top_builddir$srcdir;
    ;;
esac
dnl Don't blindly perform a `cd $1/$ac_foo && pwd` since $ac_foo can be
dnl absolute.

ac_buildpath=`cd $dstdir && cd $ac_builddir && pwd`
ac_top_buildpath=`cd $dstdir && cd $ac_top_builddir && pwd`
ac_srcpath=`cd $dstdir && cd $ac_srcdir && pwd`
ac_top_srcpath=`cd $dstdir && cd $ac_top_srcdir && pwd`
])# _AC_SRCPATHS

dnl _RTEMS_OUTPUT_SUBDIRS([host|target|build],[HOST|TARGET|BUILD])
AC_DEFUN([_RTEMS_OUTPUT_SUBDIRS],[
m4_ifdef([_RTEMS_$2_CONFIGDIRS_LIST],
[
_RTEMS_ARG_VAR([CC_FOR_$2],
  [c-compiler to be used for $1 subdirs (default: auto-detected)])
_RTEMS_ARG_VAR([CFLAGS_FOR_$2],
  [c-flags to be used for $1 subdirs (default: provided by autoconf)])
_RTEMS_ARG_VAR([CXX_FOR_$2],
  [c++-compiler to be used for $1 subdirs (default: auto-detected)])
_RTEMS_ARG_VAR([CXXFLAGS_FOR_$2],
  [c++-flags to be used for $1 subdirs (default: provided by autoconf)])
if test "$no_recursion" != yes; then

 if test -n "${$2_SUBDIRS}"; then
   ac_sub_configure_args="[$]$1args"

  # Always prepend --prefix to ensure using the same prefix
  # in subdir configurations.
  ac_sub_configure_args="'--prefix=$prefix' $ac_sub_configure_args"

  case "$$1_subdir" in
  "." ) ;;
  * )
    ac_sub_configure_args="$ac_sub_configure_args '--with-target-subdir=$$1_subdir' '--exec-prefix=${prefix}/$$1_subdir'"
    ;;
  esac

  # make sure that $1_subdir is not empty
  test -n "$$1_subdir" || $1_subdir="."

  ac_popdir=`pwd`
  for ac_dir in $$1_configdirs; do

    # Do not complain, so a configure script can configure whichever
    # parts of a large source tree are present.
    test -d $srcdir/$ac_dir || continue

    AC_MSG_NOTICE([configuring in $$1_subdir/$ac_dir])
    AS_MKDIR_P(["$$1_subdir/$ac_dir"])
    _RTEMS_SRCPATHS(["$ac_dir"],["$$1_subdir"])

    cd $$1_subdir/$ac_dir

    # Check for guested configure; otherwise get Cygnus style configure.
    if test -f $ac_srcdir/configure.gnu; then
      ac_sub_configure="$SHELL '$ac_srcdir/configure.gnu'"
    elif test -f $ac_srcdir/configure; then
      ac_sub_configure="$SHELL '$ac_srcdir/configure'"
    elif test -f $ac_srcdir/configure.in; then
      ac_sub_configure=$ac_configure
    else
      AC_MSG_WARN([no configuration information is in $ac_dir])
      ac_sub_configure=
    fi

    # The recursion is here.
    if test -n "$ac_sub_configure"; then
      # Make the cache file name correct relative to the subdirectory.
      case $cache_file in
      [[\\/]]* | ?:[[\\/]]* ) ac_sub_cache_file=$cache_file ;;
      *) # Relative path.
        ac_sub_cache_file=$ac_top_builddir$cache_file ;;
      esac

      ac_sub_configure_vars=
      ac_sub_configure_vars="$ac_sub_configure_vars '--cache-file=$ac_sub_cache_file'"
      ac_sub_configure_vars="$ac_sub_configure_vars '--srcdir=$ac_srcdir'"

      test -n "[$]CC_FOR_$2" && \
	ac_sub_configure_vars="$ac_sub_configure_vars 'CC=[$]CC_FOR_$2'"
      test -n "[$]CXX_FOR_$2" && \
        ac_sub_configure_vars="$ac_sub_configure_vars 'CXX=[$]CXX_FOR_$2'"
      test -n "[$]CFLAGS_FOR_$2" && \
        ac_sub_configure_vars="$ac_sub_configure_vars 'CFLAGS=[$]CFLAGS_FOR_$2'"
      test -n "[$]CXXFLAGS_FOR_$2" && \
        ac_sub_configure_vars="$ac_sub_configure_vars 'CXXFLAGS=[$]CXXFLAGS_FOR_$2'"

      # The eval makes quoting arguments work.
      AC_MSG_NOTICE([running $ac_sub_configure $ac_sub_configure_args $ac_sub_configure_vars])
      eval $ac_sub_configure $ac_sub_configure_args $ac_sub_configure_vars ||
        AC_MSG_ERROR([$ac_sub_configure failed for $ac_dir])
    fi

    cd $ac_popdir
  done
 fi
fi
])
])

## PUBLIC: RTEMS_BUILD_CONFIG_SUBDIRS(build_subdir)
# subdirs to be built for the build environment
AC_DEFUN([RTEMS_BUILD_CONFIG_SUBDIRS],[
m4_append([_RTEMS_BUILD_CONFIGDIRS_LIST],[ $1])
dnl Always append to build_configdirs
AC_SUBST(build_configdirs,"$build_configdirs $1")

m4_divert_text([DEFAULTS],
               [ac_subdirs_all="$ac_subdirs_all m4_normalize([$1])"])
m4_expand_once([_RTEMS_COMMANDS_POST_CONFIG_SUBDIRS])
])

AC_DEFUN([_RTEMS_CONFIGURE_ARGS_PRUNE],
[
$1_prune()
{
  $1=
  for ac_arg
  do
    if test -n "$ac_prev"; then
      ac_prev=
      continue
    fi
    case $ac_arg in
    -cache-file | --cache-file | --cache-fil | --cache-fi \
    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
      ac_prev=cache_file ;;
    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \
    | --c=*)
      ;;
    --config-cache | -C)
      ;;

    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
      ac_prev=srcdir ;;
    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
      ;;

    -host* | --host* );;
    -host | --host ) 
      ac_prev=host_alias;;
    -target* | --target* );;
    -target | --target )
      ac_prev=target_alias;;
    -build* | --build* );;
    -build | --build ) 
      ac_prev=build_alias;;

    -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
      ac_prev=prefix ;;
    -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
      ;;

    *_alias=* );;

    m4_if([$2],,,[$2])
    *) $1="$$1 '$ac_arg'" ;;
   esac
  done
  export $1
}
])

AC_DEFUN(_RTEMS_BUILD_CONFIG_PREPARE,[
## # Record the configure arguments in Makefile.
m4_ifdef([_RTEMS_BUILD_CONFIGDIRS_LIST],
[
m4_expand_once([_RTEMS_CONFIGURE_ARGS_PRUNE([buildargs])])
eval buildargs_prune $ac_configure_args
buildargs="'--host=${build}' '--build=${build}' ${buildargs}"
test -n "${target_alias}" && \
buildargs="${buildargs} --target='${target_alias}'"

## AC_SUBST(buildargs)

build_subdir="."
],[])
])

## PUBLIC: RTEMS_HOST_CONFIG_SUBDIRS(host_subdir)
# subdirs to be build for the host environment
AC_DEFUN([RTEMS_HOST_CONFIG_SUBDIRS],[
m4_append([_RTEMS_HOST_CONFIGDIRS_LIST],[ $1])dnl

if test $build = $host;
then
  AS_IF([test $host = $target],
    [_RTEMS_SUBST_IFNOT([build_configdirs],[$1])],
    [_RTEMS_SUBST_IFNOT([build_configdirs],[$1])]
  )
else
  AS_IF([test $host = $target],
    [_RTEMS_SUBST_IFNOT([host_configdirs],[$1])],
    [AS_IF([test $build = $target],
      [_RTEMS_SUBST_IFNOT([host_configdirs],[$1])],
      [_RTEMS_SUBST_IFNOT([host_configdirs],[$1])]
    )]
  )
fi

m4_divert_text([DEFAULTS],
               [ac_subdirs_all="$ac_subdirs_all m4_normalize([$1])"])
m4_expand_once([_RTEMS_COMMANDS_POST_CONFIG_SUBDIRS])
])

AC_DEFUN(_RTEMS_HOST_CONFIG_PREPARE,[
m4_ifdef([_RTEMS_HOST_CONFIGDIRS_LIST],
[
## Record configure arguments in Makefile.
m4_expand_once([_RTEMS_CONFIGURE_ARGS_PRUNE([hostargs])])
eval hostargs_prune $ac_configure_args
hostargs="'--host=${host_alias}' '--build=${build}' '--target=${target_alias}' ${hostargs}"
## AC_SUBST(hostargs)

host_subdir="${host_alias}"
],[])
])

## PUBLIC: RTEMS_TARGET_CONFIG_SUBDIRS(target_subdir)
# subdirs to be build for the target environment
AC_DEFUN([RTEMS_TARGET_CONFIG_SUBDIRS],[
m4_append([_RTEMS_TARGET_CONFIGDIRS_LIST],[ $1])

if test $build = $host;
then
  AS_IF([test $host = $target],
    [_RTEMS_SUBST_IFNOT([build_configdirs],[$1])],
    [_RTEMS_SUBST_IFNOT([target_configdirs],[$1])]
  )
else
  AS_IF([test $host = $target],
    [_RTEMS_SUBST_IFNOT([host_configdirs],[$1])],
    [AS_IF([test $build = $target],
      [_RTEMS_SUBST_IFNOT([build_configdirs],[$1])],
      [_RTEMS_SUBST_IFNOT([target_configdirs],[$1])]
    )]
  )
fi

m4_divert_text([DEFAULTS],
               [ac_subdirs_all="$ac_subdirs_all m4_normalize([$1])"])
m4_expand_once([_RTEMS_COMMANDS_POST_CONFIG_SUBDIRS])
])

AC_DEFUN(_RTEMS_TARGET_CONFIG_PREPARE,[
m4_ifdef([_RTEMS_TARGET_CONFIGDIRS_LIST],
[
## Record the configure arguments in Makefile.
m4_expand_once([_RTEMS_CONFIGURE_ARGS_PRUNE([targetargs])])
eval targetargs_prune $ac_configure_args
targetargs="'--host=${target_alias}' '--build=${build}' '--target=${target_alias}' ${targetargs}"
## AC_SUBST(targetargs)

target_subdir="${target_alias}"
],[])
])