[f5c58361] | 1 | dnl $Id$ |
---|
| 2 | |
---|
| 3 | dnl |
---|
| 4 | dnl Misc utility macros for subdir handling to work around missing abilities |
---|
| 5 | dnl in autoconf, automake and structural issues with RTEMS |
---|
| 6 | dnl |
---|
| 7 | dnl Contains parts derived from autoconf-2.13 AC_OUTPUT_SUBDIRS and Cygnus' |
---|
| 8 | dnl configure.in. |
---|
| 9 | dnl |
---|
| 10 | |
---|
| 11 | dnl |
---|
| 12 | dnl _RTEMS_PUSH_BUILDDIR(SUBDIR) |
---|
| 13 | dnl |
---|
| 14 | AC_DEFUN(_RTEMS_PUSH_BUILDDIR, |
---|
| 15 | [ |
---|
| 16 | # _RTEMS_PUSH_BUILDDIR |
---|
| 17 | echo configuring in $1 |
---|
| 18 | case "$srcdir" in |
---|
| 19 | .) ;; |
---|
[37b5d78] | 20 | *) AS_MKDIR_P([$1]) |
---|
[f5c58361] | 21 | ;; |
---|
| 22 | esac |
---|
| 23 | |
---|
| 24 | ac_popdir=`pwd` |
---|
| 25 | cd $1 |
---|
| 26 | ]) |
---|
| 27 | |
---|
| 28 | dnl |
---|
| 29 | dnl _RTEMS_POP_BUILDDIR |
---|
| 30 | dnl |
---|
| 31 | AC_DEFUN(_RTEMS_POP_BUILDDIR, |
---|
| 32 | [ |
---|
| 33 | cd $ac_popdir |
---|
| 34 | ]) |
---|
| 35 | |
---|
| 36 | dnl |
---|
| 37 | dnl _RTEMS_GIVEN_INSTALL |
---|
| 38 | dnl |
---|
| 39 | AC_DEFUN(_RTEMS_GIVEN_INSTALL, |
---|
| 40 | [ |
---|
[a86c171] | 41 | ifdef([AC_PROVIDE_AC_PROG_INSTALL],[ |
---|
| 42 | case "$ac_given_INSTALL" in |
---|
| 43 | [[\\/]]* | ?:[[\\/]]*) INSTALL="$ac_given_INSTALL" ;; |
---|
| 44 | *) INSTALL="$ac_dots$ac_given_INSTALL" ;; |
---|
| 45 | esac |
---|
[f5c58361] | 46 | ])dnl |
---|
| 47 | ]) |
---|
| 48 | |
---|
| 49 | dnl |
---|
| 50 | dnl _AC_DOTS(PATH) |
---|
| 51 | dnl |
---|
| 52 | AC_DEFUN(_AC_DOTS,[ |
---|
| 53 | # A "../" for each directory in $1. |
---|
| 54 | ac_dots=`echo $1 | \ |
---|
| 55 | sed -e 's%^\./%%' -e 's%[[^/]]$%&/%' -e 's%[[^/]]*/%../%g'` |
---|
| 56 | ]) |
---|
| 57 | |
---|
| 58 | dnl |
---|
| 59 | dnl _RTEMS_ADJUST_SRCDIR(REVAR,CONFIG_DIR[,TARGET_SUBDIR]) |
---|
| 60 | dnl |
---|
| 61 | AC_DEFUN(_RTEMS_ADJUST_SRCDIR,[ |
---|
| 62 | _AC_DOTS(ifelse([$3], ,[$2],[$3/$2])) |
---|
| 63 | |
---|
| 64 | case "$srcdir" in |
---|
| 65 | .) # No --srcdir option. We are building in place. |
---|
| 66 | $1=$srcdir ;; |
---|
[a86c171] | 67 | [[\\/]]* | ?:[[\\/]]*) # Absolute path. |
---|
[f5c58361] | 68 | $1=$srcdir/$2 ;; |
---|
| 69 | *) # Relative path. |
---|
| 70 | $1=$ac_dots$srcdir/$2 ;; |
---|
| 71 | esac |
---|
| 72 | ]) |
---|
| 73 | |
---|
| 74 | dnl |
---|
| 75 | dnl _RTEMS_SUB_SRCDIR(AC_CONFIG_DIR[,TARGET_SUBDIR]) |
---|
| 76 | dnl |
---|
| 77 | AC_DEFUN(_RTEMS_SUB_SRCDIR,[ |
---|
| 78 | # _RTEMS_SUB_SRCDIR |
---|
| 79 | _RTEMS_ADJUST_SRCDIR(ac_sub_srcdir,$1,$2) |
---|
| 80 | |
---|
| 81 | # Check for configure |
---|
| 82 | if test -f $ac_sub_srcdir/configure; then |
---|
| 83 | ac_sub_configure=$ac_sub_srcdir/configure |
---|
| 84 | else |
---|
| 85 | AC_MSG_WARN([no configuration information is in $1]) |
---|
| 86 | ac_sub_configure= |
---|
| 87 | fi |
---|
| 88 | ]) |
---|
| 89 | |
---|
| 90 | AC_DEFUN(RTEMS_TARGET_CONFIG_PREPARE,[ |
---|
| 91 | # Record target_configdirs and the configure arguments in Makefile. |
---|
| 92 | targargs=`echo "${ac_configure_args}" | \ |
---|
| 93 | sed -e 's/--no[[^ ]]*//' \ |
---|
| 94 | -e 's/--cache[[a-z-]]*=[[^ ]]*//' \ |
---|
| 95 | -e 's/--ho[[a-z-]]*=[[^ ]]*//' \ |
---|
| 96 | -e 's/--bu[[a-z-]]*=[[^ ]]*//' \ |
---|
| 97 | -e 's/--ta[[a-z-]]*=[[^ ]]*//'`; |
---|
| 98 | |
---|
| 99 | targargs="--host=${target_alias} --build=${build} ${targargs}" |
---|
| 100 | AC_SUBST(targargs) |
---|
| 101 | ]) |
---|
| 102 | |
---|
| 103 | AC_DEFUN(RTEMS_TARGET_CONFIG_SUBDIRS,[ |
---|
| 104 | # |
---|
| 105 | # TARGET_CONFIG_SUBDIRS |
---|
| 106 | # |
---|
| 107 | if test "$no_recursion" != yes; then |
---|
| 108 | if test $target != $build; then |
---|
| 109 | # Remove --srcdir arguments so they do not pile up. |
---|
| 110 | ac_sub_configure_args= |
---|
| 111 | ac_prev= |
---|
| 112 | for ac_arg in $targargs; do |
---|
| 113 | if test -n "$ac_prev"; then |
---|
| 114 | ac_prev= |
---|
| 115 | continue |
---|
| 116 | fi |
---|
| 117 | case "$ac_arg" in |
---|
| 118 | -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) |
---|
| 119 | ac_prev=srcdir ;; |
---|
| 120 | -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) |
---|
| 121 | ;; |
---|
| 122 | *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; |
---|
| 123 | esac |
---|
| 124 | done |
---|
| 125 | |
---|
[37b5d78] | 126 | if test -n "$target_configdirs" && test -d $target_subdir; |
---|
| 127 | then :; |
---|
| 128 | else |
---|
| 129 | AS_MKDIR_P(["$target_subdir"]) |
---|
| 130 | fi |
---|
[f5c58361] | 131 | |
---|
| 132 | for ac_config_dir in $target_configdirs; do |
---|
| 133 | # Do not complain, so a configure script can configure whichever |
---|
| 134 | # parts of a large source tree are present. |
---|
| 135 | if test ! -d $srcdir/$ac_config_dir; then |
---|
| 136 | continue |
---|
| 137 | fi |
---|
| 138 | |
---|
| 139 | _RTEMS_PUSH_BUILDDIR([$target_subdir/$ac_config_dir]) |
---|
| 140 | |
---|
| 141 | _RTEMS_SUB_SRCDIR([$ac_config_dir],[$target_subdir]) |
---|
| 142 | |
---|
| 143 | # The recursion is here. |
---|
| 144 | if test -n "$ac_sub_configure"; then |
---|
| 145 | |
---|
| 146 | # Make the cache file name correct relative to the subdirectory. |
---|
| 147 | ac_sub_cache_file=$cache_file |
---|
| 148 | _RTEMS_GIVEN_INSTALL |
---|
| 149 | |
---|
| 150 | echo "[running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file] --srcdir=$ac_sub_srcdir" |
---|
| 151 | # The eval makes quoting arguments work. |
---|
| 152 | CC=${CC_FOR_TARGET}; export CC; |
---|
| 153 | if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure \ |
---|
| 154 | $ac_sub_configure_args --srcdir=$ac_sub_srcdir \ |
---|
| 155 | --with-target-subdir=$target_subdir \ |
---|
| 156 | --cache-file=$ac_sub_cache_file \ |
---|
| 157 | --exec-prefix="\${prefix}/$target_subdir" |
---|
| 158 | then : |
---|
| 159 | else |
---|
| 160 | AC_MSG_ERROR([$ac_sub_configure failed for $ac_config_dir]) |
---|
| 161 | fi |
---|
| 162 | fi |
---|
| 163 | |
---|
| 164 | _RTEMS_POP_BUILDDIR |
---|
| 165 | done |
---|
| 166 | fi |
---|
| 167 | fi |
---|
| 168 | ]) |
---|
| 169 | |
---|
| 170 | AC_DEFUN(RTEMS_HOST_CONFIG_PREPARE,[ |
---|
| 171 | # Record host_configdirs and the configure arguments in Makefile. |
---|
| 172 | hostargs=`echo "${ac_configure_args}" | \ |
---|
| 173 | sed -e 's/--no[[^ ]]*//' \ |
---|
| 174 | -e 's/--cache[[a-z-]]*=[[^ ]]*//' \ |
---|
| 175 | -e 's/--ho[[a-z-]]*=[[^ ]]*//' \ |
---|
| 176 | -e 's/--bu[[a-z-]]*=[[^ ]]*//' \ |
---|
| 177 | -e 's/--ta[[a-z-]]*=[[^ ]]*//'`; |
---|
| 178 | |
---|
| 179 | hostargs="--host=${host_alias} --build=${build} --target=${target_alias} ${hostargs}" |
---|
| 180 | AC_SUBST(hostargs) |
---|
| 181 | ]) |
---|
| 182 | |
---|
| 183 | AC_DEFUN(RTEMS_HOST_CONFIG_SUBDIRS,[ |
---|
| 184 | # |
---|
| 185 | # HOST_CONFIG_SUBDIRS |
---|
| 186 | # |
---|
| 187 | if test "$no_recursion" != yes; then |
---|
| 188 | |
---|
| 189 | if test $build != $host; then |
---|
| 190 | # Remove --srcdir arguments so they do not pile up. |
---|
| 191 | ac_sub_configure_args= |
---|
| 192 | ac_prev= |
---|
| 193 | for ac_arg in $hostargs; do |
---|
| 194 | if test -n "$ac_prev"; then |
---|
| 195 | ac_prev= |
---|
| 196 | continue |
---|
| 197 | fi |
---|
| 198 | case "$ac_arg" in |
---|
| 199 | -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) |
---|
| 200 | ac_prev=srcdir ;; |
---|
| 201 | -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) |
---|
| 202 | ;; |
---|
| 203 | *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; |
---|
| 204 | esac |
---|
| 205 | done |
---|
| 206 | |
---|
[37b5d78] | 207 | if test -n "$host_configdirs" && test -d $host_subdir; |
---|
| 208 | then :; |
---|
| 209 | else |
---|
| 210 | AS_MKDIR_P(["$host_subdir"]) |
---|
| 211 | fi |
---|
[f5c58361] | 212 | |
---|
| 213 | for ac_config_dir in $host_configdirs; do |
---|
| 214 | # Do not complain, so a configure script can configure whichever |
---|
| 215 | # parts of a large source tree are present. |
---|
| 216 | if test ! -d $srcdir/$ac_config_dir; then |
---|
| 217 | continue |
---|
| 218 | fi |
---|
| 219 | |
---|
| 220 | _RTEMS_PUSH_BUILDDIR([$host_subdir/$ac_config_dir]) |
---|
| 221 | |
---|
| 222 | _RTEMS_SUB_SRCDIR([$ac_config_dir],[$host_subdir]) |
---|
| 223 | |
---|
| 224 | # The recursion is here. |
---|
| 225 | if test -n "$ac_sub_configure"; then |
---|
| 226 | |
---|
| 227 | # Make the cache file name correct relative to the subdirectory. |
---|
| 228 | ac_sub_cache_file=$cache_file |
---|
| 229 | _RTEMS_GIVEN_INSTALL |
---|
| 230 | |
---|
| 231 | echo "[running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file] --srcdir=$ac_sub_srcdir" |
---|
[b50b3c8] | 232 | CC=${CC_FOR_HOST-$host_alias-gcc}; export CC; |
---|
[f5c58361] | 233 | # The eval makes quoting arguments work. |
---|
| 234 | if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure \ |
---|
| 235 | $ac_sub_configure_args --srcdir=$ac_sub_srcdir \ |
---|
| 236 | --with-target-subdir=$host_subdir \ |
---|
| 237 | --cache-file=$ac_sub_cache_file |
---|
| 238 | then : |
---|
| 239 | else |
---|
| 240 | AC_MSG_ERROR([$ac_sub_configure failed for $ac_config_dir]) |
---|
| 241 | fi |
---|
| 242 | fi |
---|
| 243 | |
---|
| 244 | _RTEMS_POP_BUILDDIR |
---|
| 245 | done |
---|
| 246 | fi |
---|
| 247 | fi |
---|
| 248 | ]) |
---|