AC_DEFUN([DS_LINUX_DIR], [ AC_ARG_WITH([linux], [AC_HELP_STRING([--with-linux=DIR], [path to Linux patched source directory])], [LINUX_DIR="${withval}"], [LINUX_DIR=default]) AC_SUBST(LINUX_DIR) ]) AC_DEFUN([DS_LINUX], [ DS_LINUX_DIR() AC_MSG_CHECKING([Linux version]) if test "${LINUX_DIR}" != "default" ; then if [[ ! -f "${LINUX_DIR}/.config" ]];then AC_MSG_ERROR([ The kernel source tree at ${LINUX_DIR} is not configured. Fix before continuing.]) fi if [[ ! -f "${LINUX_DIR}/include/linux/version.h" ]];then AC_MSG_ERROR([The header file include/linux/version.h does not exist. For 2.6 kernels, it can be generated by running 'make prepare' in the kernel source directory.]) fi LINUX_VERSION=$(grep UTS_RELEASE ${LINUX_DIR}/include/linux/version.h | \ sed 's/[[^"]]*"\(.*\)\{1\}"/\1/') AC_MSG_RESULT([$LINUX_VERSION]) LINUX_VERSION_MAJOR=$(echo ${LINUX_VERSION} | cut -d. -f1) LINUX_VERSION_MINOR=$(echo ${LINUX_VERSION} | cut -d. -f2) case $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR in 2.6) DS_LINUX_2_6() ;; 2.[[01234]]) DS_LINUX_2_4() ;; *) AC_MSG_ERROR([Unknown Linux major.minor $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR]) ;; esac CONFIG_ORTE_KERNEL=yes AC_DEFINE([CONFIG_ORTE_KERNEL],[1],[Define if linux kernel is found]) else AC_MSG_RESULT([no]) CONFIG_ORTE_KERNEL=no fi AC_SUBST(CONFIG_ORTE_KERNEL) AM_CONDITIONAL([CONFIG_ORTE_KERNEL],[test ${CONFIG_ORTE_KERNEL} == "yes"]) DS_RT() ]) AC_DEFUN([DS_LINUX_2_6], [ AC_MSG_CHECKING(for Linux CFLAGS) tmpdir="`pwd`/tmp-noicrwa" rm -rf ${tmpdir} mkdir ${tmpdir} cat >${tmpdir}/Makefile <>\$(obj)/flags echo LINUX_AFLAGS=\"\$(AFLAGS)\" | sed 's_Iinclude_I"\$(LINUXDIR)/include"_g'>>\$(obj)/flags echo LINUX_LDFLAGS=\"\" >>\$(obj)/flags echo LINUX_ARFLAGS=\"\$(ARFLAGS)\" >>\$(obj)/flags echo LINUX_CROSS_COMPILE=\"\$(CROSS_COMPILE)\" >>\$(obj)/flags echo LINUX_KERNELRELEASE=\"\$(KERNELRELEASE)\" >>\$(obj)/flags echo LINUX_CFLAGS=\"\$(CFLAGS)\" | sed 's_Iinclude_I"\$(LINUXDIR)/include"_g'>>\$(obj)/flags echo LINUX_CC=\"\$(CC)\" >>\$(obj)/flags echo LINUX_LD=\"\$(LD) \$(LDFLAGS)\" >>\$(obj)/flags echo LINUX_AS=\"\$(AS)\" >>\$(obj)/flags EOF echo ${MAKE-make} -C ${LINUX_DIR} V=1 SUBDIRS=${tmpdir} LINUXDIR=${LINUX_DIR} MODVERDIR=${tmpdir} modules >&5 2>&5 ${MAKE-make} -C ${LINUX_DIR} V=1 SUBDIRS=${tmpdir} LINUXDIR=${LINUX_DIR} MODVERDIR=${tmpdir} modules >&5 2>&5 . ${tmpdir}/flags rm -rf ${tmpdir} LINUX_MODULE_EXT=".ko" AC_SUBST(LINUX_ARCH) AC_SUBST(LINUX_AFLAGS) AC_SUBST(LINUX_LDFLAGS) AC_SUBST(LINUX_ARFLAGS) AC_SUBST(LINUX_CROSS_COMPILE) AC_SUBST(LINUX_KERNELRELEASE) AC_SUBST(LINUX_CFLAGS) AC_SUBST(LINUX_CC) AC_SUBST(LINUX_LD) AC_SUBST(LINUX_AS) AC_SUBST(LINUX_MODULE_EXT) AC_MSG_RESULT([ok]) ]) AC_DEFUN([DS_LINUX_2_4], [ AC_MSG_CHECKING(for Linux CFLAGS) if [[ ! -f "${LINUX_DIR}/.hdepend" ]];then AC_MSG_ERROR([ You need to run 'make dep' on the kernel source before continuing.]) fi tmpdir="`pwd`/tmp-noicrwa" rm -rf ${tmpdir} mkdir ${tmpdir} cat >${tmpdir}/Makefile <>flags echo LINUX_AFLAGS=\"\$(AFLAGS)\" | sed 's_Iinclude_I\"\$(LINUXDIR)/include\"_g'>>flags echo LINUX_LDFLAGS=\"\" >>flags echo LINUX_ARFLAGS=\"\$(ARFLAGS)\" >>flags echo LINUX_CROSS_COMPILE=\"\$(CROSS_COMPILE)\" >>flags echo LINUX_KERNELRELEASE=\"\$(KERNELRELEASE)\" >>flags echo LINUX_CFLAGS=\"\$(CFLAGS)\" | sed 's_Iinclude_I\"\$(LINUXDIR)/include\"_g'>>flags echo LINUX_CC=\"\$(CC)\" >>flags echo LINUX_LD=\"\$(LD) \$(LDFLAGS)\" >>flags echo LINUX_AS=\"\$(AS)\" >>flags EOF echo ${MAKE-make} -C ${LINUX_DIR} SUBDIRS=${tmpdir} modules >&5 2>&5 ${MAKE-make} -C ${LINUX_DIR} SUBDIRS=${tmpdir} modules >&5 2>&5 . ${tmpdir}/flags rm -rf ${tmpdir} LINUX_MODULE_EXT=".o" AC_SUBST(LINUX_ARCH) AC_SUBST(LINUX_AFLAGS) AC_SUBST(LINUX_LDFLAGS) AC_SUBST(LINUX_ARFLAGS) AC_SUBST(LINUX_CROSS_COMPILE) AC_SUBST(LINUX_KERNELRELEASE) AC_SUBST(LINUX_CFLAGS) AC_SUBST(LINUX_CC) AC_SUBST(LINUX_LD) AC_SUBST(LINUX_AS) AC_SUBST(LINUX_MODULE_EXT) AC_MSG_RESULT([ok]) ]) AC_DEFUN([DS_CHECK_LINUX_CONFIG_OPTION], [ AC_MSG_CHECKING([Linux config option $1]) if grep '^$1=y$' ${LINUX_DIR}/.config >/dev/null 2>/dev/null; then result=yes $2 else if grep '^$1=m$' ${LINUX_DIR}/.config >/dev/null 2>/dev/null; then result=module $3 else result=no $4 fi fi AC_MSG_RESULT([$result]) ]) AC_DEFUN([DS_LINUX_CONFIG_OPTION], [ DS_CHECK_LINUX_CONFIG_OPTION([$1], [$1=yes], [$1=module], [$1=no]) AM_CONDITIONAL([$1],[test "${$1}" = yes]) ]) AC_DEFUN([DS_LINUX_CONFIG_OPTION_MODULE], [ DS_CHECK_LINUX_CONFIG_OPTION([$1], [$1=yes], [$1=module], [$1=no]) AM_CONDITIONAL([$1],[test "${$1}" = yes -o "${$1}" = module]) ]) AC_DEFUN([DS_RTAI], [ AC_ARG_WITH([rtai], [AC_HELP_STRING([--with-rtai=DIR], [path to configured RTAI 24.1.X sources, or RTAI 3 installation])], [RTAI_DIR="${withval}"], [RTAI_DIR=/usr/src/rtai]) AC_ARG_WITH([rtnet], [AC_HELP_STRING([--with-rtnet=DIR], [path to RTnet installation directory])], [RTNET_DIR="${withval}"], [RTNET_DIR=/usr/src/rtnet]) DS_LINUX_CONFIG_OPTION_MODULE([CONFIG_RTHAL]) DS_LINUX_CONFIG_OPTION_MODULE([CONFIG_ADEOS]) if test "${CONFIG_RTHAL}" != "no" -o "${CONFIG_ADEOS}" != "no"; then AC_MSG_CHECKING([RTAI directory ${RTAI_DIR}]) if [[ -d ${RTAI_DIR}/include ]] ; then RTAI_CFLAGS="-I${RTAI_DIR}/include" else if [ -d ${RTAI_DIR}/rtai-core/include ] ; then RTAI_CFLAGS="-I${RTAI_DIR}/rtai-core/include" else AC_MSG_ERROR([incorrect RTAI directory?]) fi fi AC_MSG_RESULT([found]) AC_MSG_CHECKING([RTnet directory ${RTNET_DIR}]) if [[ -d ${RTNET_DIR}/include ]] ; then RTAI_CFLAGS="${RTAI_CFLAGS} -I${RTNET_DIR}/include" else AC_MSG_ERROR([incorrect RTnet directory?]) fi AC_MSG_RESULT([found]) $1 RT_GCCLIB_DIR=`gcc -print-search-dirs | sed -n -e 's/^install: \(.*\)$/\1/p'` RTAI_CFLAGS="${RTAI_CFLAGS} -idirafter ${RT_GCCLIB_DIR}/include -nostdinc" AC_DEFINE([CONFIG_ORTE_RTAI],[1],[Define if kernel is RTAI patched]) else $2 fi AC_SUBST(RTAI_CFLAGS) ]) AC_DEFUN([DS_RTLINUX], [ AC_ARG_WITH([rtlinux], [AC_HELP_STRING([--with-rtlinux=DIR], [path to RTLinux source directory])], [RTLINUX_DIR="${withval}"], [RTLINUX_DIR=/usr/src/rtlinux]) AC_ARG_WITH([rtlinuxwip], [AC_HELP_STRING([--with-rtlinuxwip=DIR], [path to RTLinux wIP source directory])], [RTLINUXWIP_DIR="${withval}"], [RTLINUXWIP_DIR="${RTLINUX_DIR}"]) AC_ARG_WITH([rtlinuxonetd], [AC_HELP_STRING([--with-rtlinuxonetd=DIR], [path to RTLinux onetd source directory])], [RTLINUXONETD_DIR="${withval}"], [RTLINUXONETD_DIR="${RTLINUX_DIR}"]) DS_LINUX_CONFIG_OPTION_MODULE([CONFIG_RTLINUX]) if test "${CONFIG_RTLINUX}" != "no" ; then AC_MSG_CHECKING([RTLinux directory ${RTLINUX_DIR} for rtl.mk]) if [[ -d ${RTLINUX_DIR}/include ]] ; then RTLINUX_CFLAGS=`sed -n -e 's/^CFLAGS *=\(.*\)$/\1/p' ${RTLINUX_DIR}/rtl.mk` RTLINUX_CC=`sed -n -e 's/^CC *=\(.*\)$/\1/p' ${RTLINUX_DIR}/rtl.mk` else AC_MSG_ERROR([incorrect RTLinux directory?]) fi AC_MSG_RESULT([found]) AC_DEFINE([CONFIG_ORTE_RTL],[1],[Define if kernel is RTLinux patched]) AC_MSG_CHECKING([RTLinux for a UDP stack]) RTL_STACK="no" if [[ -e "${RTLINUXWIP_DIR}/include/udp.h" -a \ -e "${RTLINUXWIP_DIR}/include/nic.h" -a \ -e "${RTLINUXWIP_DIR}/include/ip.h" -a \ -e "${RTLINUXWIP_DIR}/include/ethernet.h" -a \ -e "${RTLINUXWIP_DIR}/include/nictab.h" ]] ; then AC_MSG_RESULT([found wIP]) AC_DEFINE([CONFIG_ORTE_RTL_WIP],[1],[Define if wIP stack is found]) RTL_STACK="yes" fi if [[ -e "${RTLINUXONETD_DIR}/onetd.h" ]] ; then AC_MSG_RESULT([found onetd]) AC_DEFINE([CONFIG_ORTE_RTL_ONETD],[1],[Define if onetd stack is found]) RTL_STACK="yes" fi if test "${RTL_STACK}" == "no" ; then AC_MSG_ERROR([incorrect a RTLinux UDP directory.]) fi RT_GCCLIB_DIR=`${RTLINUX_CC} -print-search-dirs | sed -n -e 's/^install: \(.*\)$/\1/p'` RTLINUX_CFLAGS="${RTLINUX_CFLAGS} -I${RTLINUXWIP_DIR}/include -I${RTLINUXONETD_DIR} -idirafter ${RT_GCCLIB_DIR}/include -nostdinc" $1 else $2 fi AC_SUBST(RTLINUX_CFLAGS) AC_SUBST(RTLINUX_CC) ]) AC_DEFUN([DS_RT], [ DS_RTAI([USE_RTAI=yes],[USE_RTAI=no]) DS_RTLINUX([USE_RTLINUX=yes],[USE_RTLINUX=no]) if test ${USE_RTAI} == "yes" -o ${USE_RTLINUX} == "yes" ; then AC_DEFINE([CONFIG_ORTE_RT],[1],[Define to enable ORTE's RT support]) CONFIG_ORTE_RT="yes" fi AC_SUBST(CONFIG_ORTE_RT) AM_CONDITIONAL([USE_RTAI],[test ${USE_RTAI} == "yes"]) AM_CONDITIONAL([USE_RTLINUX],[test ${USE_RTLINUX} == "yes"]) AM_CONDITIONAL([CONFIG_ORTE_RT],[test ${USE_RTAI} == "yes" -o ${USE_RTLINUX} == "yes"]) ])