X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=m4%2Fas-linux.m4;h=e0363a0917ff3398a9848579cb34779858e13b2b;hb=4cc2a228ac6ec3511640009ac1dac5d73bf78d47;hp=62d620867d6db13c3c465430d9228853fbe80c8b;hpb=0978c8aedf75545df323832c8a7d1a7445f87303;p=comedi.git diff --git a/m4/as-linux.m4 b/m4/as-linux.m4 index 62d62086..e0363a09 100644 --- a/m4/as-linux.m4 +++ b/m4/as-linux.m4 @@ -100,7 +100,7 @@ AC_DEFUN([AS_LINUX], dnl the versioned AS_LINUX macros just use the global variables dnl this could be cleaned up later on if we feel like it case $LINUX_VERSION_MAJOR.$LINUX_VERSION_MINOR in - 2.6) + 2.6 | 3.[[0-9]]*) AS_LINUX_2_6() ;; 2.[[01234]]) @@ -180,6 +180,10 @@ AC_DEFUN([AS_LINUX_SRC_DIR], if test "${LINUX_SRC_DIR}" = "default" ; then AC_MSG_CHECKING(for separate Linux source and build directory) dir=`sed -n -e 's/^KERNELSRC *:= *\(.*\)/\1/p' "$1/Makefile"` + if test -z "$dir"; then + # 2.6.25 + dir=`sed -n -e 's/^MAKEARGS *:= *-C *\([[^[:space:]]]*\).*/\1/p' "$1/Makefile"` + fi if test -z "$dir"; then AC_MSG_RESULT([no]) LINUX_SRC_DIR="$1" @@ -236,7 +240,10 @@ dnl first argument is the Linux build directory AC_DEFUN([AS_LINUX_OVERRIDE_KERNEL_RELEASE], [ INCDIR="$1/include" - UTSINC="${INCDIR}/linux/utsrelease.h" + UTSINC="${INCDIR}/generated/utsrelease.h" + if ! test -f "${UTSINC}"; then + UTSINC="${INCDIR}/linux/utsrelease.h" + fi if ! test -f "${UTSINC}"; then UTSINC="${INCDIR}/linux/version.h" fi @@ -434,10 +441,10 @@ AC_DEFUN([AS_CHECK_REDHAT_PRE_FC2], HAVE_REDHAT_KERNEL=false ac_save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -I${LINUX_DIR}/include/linux" - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include "rhconfig.h" int code = RED_HAT_LINUX_KERNEL; - ]), + ]])], AC_MSG_RESULT(found); HAVE_REDHAT_KERNEL=true, AC_MSG_RESULT(not found)) dnl restore CFLAGS @@ -768,7 +775,7 @@ AC_DEFUN([COMEDI_CHECK_LINUX_KBUILD], # # Check if kernel pcmcia support is new enough to have a probe member in the pcmcia_driver # struct. -AC_DEFUN([COMEDI_CHECK_PCMCIA_PROBE], +AC_DEFUN([COMEDI_CHECK_PCMCIA_DRIVER_PROBE], [ AC_REQUIRE([AC_PROG_EGREP]) AC_MSG_CHECKING([$1 for probe in pcmcia_driver struct]) @@ -782,6 +789,142 @@ AC_DEFUN([COMEDI_CHECK_PCMCIA_PROBE], fi ]) +# COMEDI_CHECK_PCMCIA_DRIVER_NAME([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------------------------- +# +# Check if kernel pcmcia support is new enough to have a name member in the pcmcia_driver +# struct. +AC_DEFUN([COMEDI_CHECK_PCMCIA_DRIVER_NAME], +[ + AC_REQUIRE([AC_PROG_EGREP]) + AC_MSG_CHECKING([$1 for name in pcmcia_driver struct]) + cat "$1/include/pcmcia/ds.h" | tr \\n ' ' | [$EGREP "struct[[:space:]]+pcmcia_driver[[:space:]]*[{][^}]*name"] > /dev/null + if (($?)); then + AC_MSG_RESULT([no]) + $3 + else + AC_MSG_RESULT([yes]) + $2 + fi +]) + +# COMEDI_CHECK_PCMCIA_LOOP_TUPLE([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------------------------- +# +# Check if kernel pcmcia support is new enough to have the pcmcia_loop_tuple +# function. +AC_DEFUN([COMEDI_CHECK_PCMCIA_LOOP_TUPLE], +[ + AC_MSG_CHECKING([$1 for pcmcia_loop_tuple function]) + if [grep -q 'int[[:space:]]\+pcmcia_loop_tuple[[:space:]]*(' "$1/include/pcmcia/ds.h"] 2>/dev/null ; then + AC_MSG_RESULT([yes]) + $2 + else + AC_MSG_RESULT([no]) + $3 + fi +]) + +# COMEDI_CHECK_DS_DEV_NODE_T([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------------------------- +# +# Check if kernel pcmcia support is old enough to have the dev_node_t type +# in pcmcia/ds.h. +AC_DEFUN([COMEDI_CHECK_DS_DEV_NODE_T], +[ + AC_MSG_CHECKING([$1 for dev_node_t in pcmcia/ds.h (removed in 2.6.35)]) + if [grep -q dev_node_t "$1/include/pcmcia/ds.h"] 2>/dev/null ; then + AC_MSG_RESULT([yes]) + $2 + else + AC_MSG_RESULT([no]) + $3 + fi +]) + +# COMEDI_CHECK_CS_IRQ_REQ_T([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------------------------- +# +# Check if kernel pcmcia support is old enough to have the irq_req_t type +# in pcmcia/cs.h. +AC_DEFUN([COMEDI_CHECK_CS_IRQ_REQ_T], +[ + AC_MSG_CHECKING([$1 for irq_req_t in pcmcia/cs.h (removed in 2.6.35)]) + if [grep -q irq_req_t "$1/include/pcmcia/cs.h"] 2>/dev/null ; then + AC_MSG_RESULT([yes]) + $2 + else + AC_MSG_RESULT([no]) + $3 + fi +]) + +# COMEDI_CHECK_CS_IO_REQ_T([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------------------------- +# +# Check if kernel pcmcia support is old enough to have the io_req_t type +# in pcmcia/cs.h. +AC_DEFUN([COMEDI_CHECK_CS_IO_REQ_T], +[ + AC_MSG_CHECKING([$1 for io_req_t in pcmcia/cs.h (removed in 2.6.36)]) + if [grep -q io_req_t "$1/include/pcmcia/cs.h"] 2>/dev/null ; then + AC_MSG_RESULT([yes]) + $2 + else + AC_MSG_RESULT([no]) + $3 + fi +]) + +# COMEDI_CHECK_CS_MEMREQ_T([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------------------------- +# +# Check if kernel pcmcia support is old enough to have the memreq_t type +# in pcmcia/cs.h. +AC_DEFUN([COMEDI_CHECK_CS_MEMREQ_T], +[ + AC_MSG_CHECKING([$1 for memreq_t in pcmcia/cs.h (removed in 2.6.36)]) + if [grep -q memreq_t "$1/include/pcmcia/cs.h"] 2>/dev/null ; then + AC_MSG_RESULT([yes]) + $2 + else + AC_MSG_RESULT([no]) + $3 + fi +]) + +# COMEDI_CHECK_HAVE_CS_TYPES_H([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------------------------- +# +# Check if kernel has file. +AC_DEFUN([COMEDI_CHECK_HAVE_CS_TYPES_H], +[ + AC_MSG_CHECKING([$1 for include/pcmcia/cs_types.h (removed in 2.6.36)]) + if test -f "$1/include/pcmcia/cs_types.h"; then + AC_MSG_RESULT([yes]) + $2 + else + AC_MSG_RESULT([no]) + $3 + fi +]) + +# COMEDI_CHECK_HAVE_CS_H([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------------------------- +# +# Check if kernel has file. +AC_DEFUN([COMEDI_CHECK_HAVE_CS_H], +[ + AC_MSG_CHECKING([$1 for include/pcmcia/cs.h (removed in 2.6.37)]) + if test -f "$1/include/pcmcia/cs.h"; then + AC_MSG_RESULT([yes]) + $2 + else + AC_MSG_RESULT([no]) + $3 + fi +]) + # COMEDI_CHECK_HAVE_MUTEX_H([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # ------------------------------------------------------------- # @@ -797,3 +940,57 @@ AC_DEFUN([COMEDI_CHECK_HAVE_MUTEX_H], $3 fi ]) + +# COMEDI_CHECK_HAVE_LINUX_SEMAPHORE_H([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------------------------- +# +# Check if kernel has file. +AC_DEFUN([COMEDI_CHECK_HAVE_LINUX_SEMAPHORE_H], +[ + AC_MSG_CHECKING([$1 for include/linux/semaphore.h]) + if test -f "$1/include/linux/semaphore.h"; then + AC_MSG_RESULT([yes]) + $2 + else + AC_MSG_RESULT([no]) + $3 + fi +]) + +# COMEDI_CHECK_HAVE_GENERIC_BOOL_TYPE([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# ------------------------------------------------------------- +# Check if kernel is new enough to have generic 'bool' type in +# and 'false' and 'true' enum constants in . This was added +# in vanilla 2.6.19, but backported to RHEL5 2.6.18. +AC_DEFUN([COMEDI_CHECK_HAVE_GENERIC_BOOL_TYPE], +[ + AC_MSG_CHECKING([$1 for 'bool' in include/linux/types.h]) + if grep -q 'bool;' "$1/include/linux/types.h" 2>/dev/null; then + AC_MSG_RESULT([yes]) + $2 + else + AC_MSG_RESULT([no]) + $3 + fi +]) + +# COMEDI_CHECK_REQUEST_FIRMWARE_NOWAIT_HAS_GFP([LINUX_SOURCE_PATH], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# ------------------------------------------------------------- +# Check if the kernel's request_firmware_nowait() function has the gfp +# parameter. This was added in vanilla 2.6.33 but Red Hat backported it +# to their 2.6.32 kernel. +AC_DEFUN([COMEDI_CHECK_REQUEST_FIRMWARE_NOWAIT_HAS_GFP], +[ + AC_REQUIRE([AC_PROG_EGREP]) + AC_MSG_CHECKING([$1 for gfp parameter in request_firmware_nowait()]) + $EGREP -q gfp_t "$1/include/linux/firmware.h" + if (($?)); then + AC_MSG_RESULT([no]) + $3 + else + AC_MSG_RESULT([yes]) + $2 + fi +])