summaryrefslogtreecommitdiffstats
path: root/c/src/aclocal/target.m4
blob: 8929a327b85a48f3ca2a6db637c25e5723cbd168 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
## HACK: Work-around to structural issue with RTEMS
## The macros below violate most autoconf and canonicalization standards
AC_DEFUN([RTEMS_CONFIG_BUILD_SUBDIRS],
[AC_REQUIRE([_RTEMS_OUTPUT_BUILD_SUBDIRS])
RTEMS_BUILD_SUBDIRS="$RTEMS_BUILD_SUBDIRS [$1]"
])

dnl Derived from automake-1.4's AC_OUTPUT_SUBDIRS
AC_DEFUN([_RTEMS_OUTPUT_BUILD_SUBDIRS],
[AC_CONFIG_COMMANDS([bsp-tools],
[
# HACK: This is a blantant hack and breaks Canadian crosses
build_alias="$build_alias"
host_alias="$build_alias"
if test "$no_recursion" != yes; then
  if test x"$build_alias" != x"$host_alias"; then 
    target_subdir="$host_alias"
  else
    target_subdir="."
  fi
  RTEMS_CONFIGURE_ARGS_QUOTE([ac_sub_configure_args],
    [
    -host* | --host* ) ;;
    --host ) ac_prev=host_alias;;
    -target* | --target* ) ;;
    -target ) ac_prev=target_alias ;;
    -build* | --build* ) ;;
    -build ) ac_prev_build_alias ;;
    CFLAGS=* );; # HACK: Strip CFLAGS
    *_alias=* ) ;; # HACK: Workaround to autoconf passing *_alias
    ],
    [rtems_configure_args])

  for rtems_config_dir in : $RTEMS_BUILD_SUBDIRS; do test "x$rtems_config_dir" = x: && continue

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

    _RTEMS_PUSH_BUILDDIR([$rtems_config_dir])

    _RTEMS_SUB_SRCDIR([$rtems_config_dir])

    # The recursion is here.
    if test -n "$ac_sub_configure"; then
#      ac_sub_cache_file=./config.cache
      ac_sub_cache_file=/dev/null
      _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.
      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 
      then :
      else
        AC_MSG_ERROR([$ac_sub_configure failed for $rtems_config_dir])
      fi
    fi

    _RTEMS_POP_BUILDDIR
  done
fi],
[
RTEMS_BUILD_SUBDIRS="$RTEMS_BUILD_SUBDIRS"
rtems_configure_args="$ac_configure_args"
])
])

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 _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
])