dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.12)
AC_INIT(README)
dnl Checks for programs.
AC_PROG_MAKE_SET
AC_CANONICAL_SYSTEM
AC_ARG_WITH(cross-host,[ --with-cross-host=HOST host (cygnus)], \
host=$withval)
AC_ARG_ENABLE(gmake-print-directory, \
[ --enable-gmake-print-directory enable GNU Make's print directory], \
[case "${enableval}" in
yes) RTEMS_USE_OWN_PDIR=no ;;
no) RTEMS_USE_OWN_PDIR=yes ;;
*) AC_MSG_ERROR(bad value ${enableval} for gmake-print-directory option) ;;
esac],[RTEMS_USE_OWN_PDIR=yes])
AC_ARG_ENABLE(posix, \
[ --disable-posix disable posix interface], \
[case "${enableval}" in
yes) RTEMS_HAS_POSIX_API=yes ;;
no) RTEMS_HAS_POSIX_API=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for disable-posix option) ;;
esac],[RTEMS_HAS_POSIX_API=yes])
AC_ARG_ENABLE(ka9q, \
[ --disable-ka9q disable KA9Q TCP/IP stack], \
[case "${enableval}" in
yes) RTEMS_HAS_KA9Q=yes ;;
no) RTEMS_HAS_KA9Q=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for disable-ka9q option) ;;
esac],[RTEMS_HAS_KA9Q=yes])
AC_ARG_ENABLE(rtems-inlines, \
[ --disable-rtems-inlines disable RTEMS inline functions (use macros)], \
[case "${enableval}" in
yes) RTEMS_USE_MACROS=yes ;;
no) RTEMS_USE_MACROS=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for disable-rtems-inlines option) ;;
esac],[RTEMS_USE_MACROS=no])
AC_ARG_ENABLE(cpp, \
[ --enable-cpp enable C++ support, and build the rtems++ library], \
[case "${enableval}" in
yes) RTEMS_HAS_CPLUSPLUS=yes ;;
no) RTEMS_HAS_CPLUSPLUS=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for enable-cpp option) ;;
esac], [RTEMS_HAS_CPLUSPLUS=no])
AC_ARG_ENABLE(gcc28, \
[ --enable-gcc28 enable use of gcc 2.8.x features], \
[case "${enableval}" in
yes) RTEMS_USE_GCC272=no ;;
no) RTEMS_USE_GCC272=yes ;;
*) AC_MSG_ERROR(bad value ${enableval} for gcc-28 option) ;;
esac],[RTEMS_USE_GCC272=yes])
AC_ARG_ENABLE(libcdir, \
[ --enable-libcdir=directory set the directory for the C library], \
[ RTEMS_LIBC_DIR="${enableval}" ; \
test -d ${enableval} || AC_MSG_ERROR("$enableval is not a directory" ) ] )
RTEMS_PREFIX=${target_cpu}-${target_vendor}
dnl BEGIN configure.host.in
AC_PATH_PROG(CAT,cat)
AC_PATH_PROG(RM,rm)
AC_PATH_PROG(CP,cp)
AC_PATH_PROG(MV,mv)
AC_PATH_PROG(LN,ln)
AC_PROG_LN_S
AC_PATH_PROG(CHMOD,chmod)
AC_PATH_PROG(SORT,sort)
dnl check mkdir behaviour, try to get mkdir -p -m 0755
RTEMS_PATH_MKDIR
RTEMS_PROG_MKDIR_M
RTEMS_PROG_MKDIR_P
test "$rtems_cv_prog_MKDIR_P" = "yes" && MKDIR="$MKDIR -p"
test "$rtems_cv_prog_MKDIR_M" = "yes" && MKDIR="$MKDIR -m 0755"
AC_PATH_PROG(TOUCH,touch)
AC_PATH_PROG(CMP,cmp)
AC_PATH_PROG(SED,sed)
AC_PATH_PROGS(M4,gm4 m4)
dnl NOTE: prefer bash over ksh over sh
AC_PATH_PROGS(KSH,bash ksh sh)
if test -z "$KSH"; then
dnl NOTE: This cannot happen -- /bin/sh must always exist
AC_MSG_ERROR(
[***]
[ Cannot determine a usable shell bash/ksh/sh]
[ Please contact your system administrator] );
fi
dnl END configure.host.in
dnl BEGIN configure.target.in
dnl echo "TARGET"
dnl echo " cpu --> $target_cpu"
dnl echo " os --> $target_os"
dnl echo " vendor --> $target_vendor"
dnl canonicalize target name
dnl NOTE: Most rtems targets do not fullfil autoconf
dnl targets naming conventions "processor-vendor-os"
dnl Therefore autoconf's AC_CANONICAL_TARGET will fail for them
dnl and we have to fix it for rtems ourselves
dnl
dnl The original plan was to do CPU-BSP-rtems or CPU-rtems to
dnl imply all BSPs. Eventually we would like to build a collection
dnl of CPU model specific RTEMS libraries which in conjunction with
dnl a BSP library would be used to link an application.
case "${target}" in
# hpux unix port should go here
hppa1.1-rtems*)
target_cpu=hppa1_1
;;
i[[3456]]86-go32-rtems*)
target_cpu=i386
rtems_bsp="go32 go32_p5"
skip_startfiles="yes"
RTEMS_HAS_POSIX_API=no
;;
i[[3456]]86-rtems*)
target_cpu=i386
;;
i[[3456]]86-pc-linux*) # unix "simulator" port
target_cpu=unix
RTEMS_HAS_POSIX_API=no
;;
no_cpu-rtems*)
target_cpu=no_cpu
RTEMS_HAS_POSIX_API=no
;;
powerpc-rtems*|ppc-rtems*)
target_cpu=ppc
;;
sparc-sun-solaris*) # unix "simulator" port
target_cpu=unix
RTEMS_HAS_POSIX_API=no
;;
*)
RTEMS_CANONICAL_TARGET_CPU
;;
esac
# Is this a supported CPU?
AC_MSG_CHECKING([if cpu $target_cpu is supported])
if test -d "$srcdir/c/src/exec/score/cpu/$target_cpu"; then
AC_MSG_RESULT(yes)
makefiles="$makefiles c/src/exec/score/cpu/$target_cpu/Makefile"
else
AC_MSG_ERROR(no)
fi
# find all the Executive Makefiles
RTEMS_CHECK_MAKEFILE(c/src/exec/rtems)
RTEMS_CHECK_MAKEFILE(c/src/exec/posix)
RTEMS_CHECK_MAKEFILE(c/src/exec/sapi)
RTEMS_CHECK_MAKEFILE(c/src/exec/wrapup)
# find all the Makefiles for the BSPs
if test -d "$srcdir/c/src/lib/libbsp/$target_cpu"; then
makefiles="$makefiles c/src/lib/libbsp/$target_cpu/Makefile"
if test -z "$rtems_bsp"; then
AC_MSG_CHECKING([for bsps])
files=`ls $srcdir/c/src/lib/libbsp/$target_cpu`
for file in $files; do
case $file in
shared*);;
Makefile*);;
READ*);;
CVS*);;
go32*);; # so the i386 port can pick up the other Makefiles
*) rtems_bsp="$rtems_bsp $file";;
esac;
done
AC_MSG_RESULT([$rtems_bsp])
fi
# collect makefiles for each bsp
for i in $rtems_bsp; do
RTEMS_CHECK_MAKEFILE(c/src/lib/libbsp/$target_cpu/$i)
done
fi
# find all the CPU dependent library Makefiles
RTEMS_CHECK_MAKEFILE(c/src/lib/libcpu/$target_cpu)
dnl Workaround for go32
if test "$skip_startfiles" != "yes"; then
RTEMS_CHECK_MAKEFILE(c/src/lib/start/$target_cpu)
fi
dnl END configure.target.in
#
# Target configurations are listed in alphabetical order.
# The BSPs for a target configuration are also listed in alphabetical order.
#
dnl NOTE: host_os is automatically set by autoconf
if [[ "${program_prefix}" = "NONE" ]] ; then
if [[ "${target}" = "${host}" ]] ; then
program_prefix=
else
program_prefix=${target}-
fi
fi
dnl AC_PROG_CC
dnl AC_PROG_CXX
RTEMS_BSP=$rtems_bsp
RTEMS_HOST=$host_os
RTEMS_ROOT=`cd $srcdir/c; pwd`
PROJECT_ROOT=`pwd;`
# For now always generate the KA9Q TCP/IP Makefiles
makefiles="$makefiles c/src/lib/libka9q/Makefile"
# For now always generate the C++ Makefiles
makefiles="$makefiles c/src/lib/librtems++/Makefile"
# If the tests are enabled, then find all the test suite Makefiles
AC_MSG_CHECKING([Are the test suites enabled? ])
AC_ARG_ENABLE(tests, \
[ --disable-tests disable tests], \
AC_MSG_ERROR(no), \
AC_MSG_RESULT(yes) \
RTEMS_CHECK_MAKEFILE(c/src/tests/tools/$target_cpu) \
RTEMS_CHECK_MAKEFILE(c/src/tests/libtests) \
RTEMS_CHECK_MAKEFILE(c/src/tests/sptests) \
RTEMS_CHECK_MAKEFILE(c/src/tests/tmtests) \
RTEMS_CHECK_MAKEFILE(c/src/tests/mptests) \
RTEMS_CHECK_MAKEFILE(c/src/tests/psxtests) \
)
# If the HWAPI is enabled, the find the HWAPI Makefiles
AC_MSG_CHECKING([Is the HWAPI enabled? ])
AC_ARG_ENABLE(hwapi, \
[ --enable-hwapi enable hardware API library], \
AC_MSG_RESULT(yes) \
RTEMS_CHECK_MAKEFILE(c/src/lib/libhwapi), \
AC_MSG_ERROR(no) \
)
AC_ARG_ENABLE(rtemsbsp, \
[ --enable-rtemsbsp=bsp1 bsp2 .. BSPs to include in build], \
RTEMS_BSP=$enableval \
)
AC_SUBST(RTEMS_BSP)
AC_SUBST(RTEMS_HOST)
AC_SUBST(RTEMS_LIBC_DIR)
AC_SUBST(RTEMS_ROOT)
AC_SUBST(RTEMS_USE_OWN_PDIR)
AC_SUBST(RTEMS_HAS_POSIX_API)
AC_SUBST(RTEMS_HAS_KA9Q)
AC_SUBST(RTEMS_USE_MACROS)
AC_SUBST(RTEMS_HAS_CPLUSPLUS)
AC_SUBST(RTEMS_USE_GCC272)
AC_SUBST(RTEMS_LIBC_DIR)
AC_SUBST(PROJECT_ROOT)
AC_SUBST(program_prefix)
# pick up all the Makefiles in required parts of the tree
RTEMS_CHECK_MAKEFILE(c/build-tools)
RTEMS_CHECK_MAKEFILE(c/make)
RTEMS_CHECK_MAKEFILE(c/src/lib/libmisc)
RTEMS_CHECK_MAKEFILE(c/src/tests/samples)
# try not to explicitly list a Makefile here
AC_OUTPUT(
Makefile
c/Makefile
c/src/Makefile
c/src/exec/Makefile
c/src/exec/score/Makefile
c/src/exec/score/cpu/Makefile
c/src/exec/score/headers/Makefile
c/src/exec/score/inline/Makefile
c/src/exec/score/src/Makefile
c/src/exec/score/tools/Makefile
c/src/exec/score/tools/generic/Makefile
c/src/lib/Makefile
c/src/lib/include/Makefile
c/src/lib/libbsp/Makefile
c/src/lib/libbsp/shmdr/Makefile
c/src/lib/libc/Makefile
c/src/lib/libcpu/Makefile
c/src/lib/start/Makefile
c/src/lib/wrapup/Makefile
c/src/tests/Makefile
c/src/tests/support/Makefile
c/src/tests/support/include/Makefile
c/src/tests/support/stubdr/Makefile
c/src/tests/support/wrapup/Makefile
c/src/tests/tools/Makefile
c/src/tests/tools/generic/Makefile
$makefiles
c/make/host.cfg
c/make/Templates/Makefile.inc
c/update-tools/Makefile)
echo
echo target architecture: $target_cpu.
echo available BSPs: $rtems_bsp.
echo \'make all\' will build the following BSPs: $RTEMS_BSP.
echo other BSPs can be built with \'make RTEMSBSP=\"bsp1 bsp2 ...\"\'
echo