summaryrefslogtreecommitdiff
path: root/TSRM/tsrm.m4
blob: 0eea9be2fa056ba6add0419a2b7c12151ef30065 (plain)
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
AC_DEFUN(TSRM_CHECK_GCC_ARG,[
  AC_MSG_CHECKING(whether $CC supports $1)
  > conftest.c
  cmd='$CC $1 -c conftest.c'
  if eval $cmd 2>&1 | egrep -e $1 >/dev/null ; then
    $2=no
  else
    $2=yes
  fi
  AC_MSG_RESULT($$2)
  rm -f conftest.*
])

AC_DEFUN(TSRM_BASIC_CHECKS,[

AC_REQUIRE([AC_PROG_CC])dnl
dnl AC_REQUIRE([AM_PROG_CC_STDC])dnl
AC_REQUIRE([AC_PROG_CC_C_O])dnl
AC_REQUIRE([AC_PROG_RANLIB])dnl

AC_CHECK_HEADERS(stdarg.h)

])


AC_DEFUN(TSRM_CHECK_PTH,[

AC_MSG_CHECKING(for GNU Pth)
PTH_PREFIX="`$1 --prefix`"
if test -z "$PTH_PREFIX"; then
  AC_MSG_RESULT(Please check your Pth installation)
fi

CPPFLAGS="$CPPFLAGS `$1 --cflags`"
LDFLAGS="$LDFLAGS `$1 --ldflags`"
LIBS="$LIBS `$1 --libs`"

AC_DEFINE(GNUPTH, 1, [Whether you use GNU Pth])
AC_MSG_RESULT(yes - installed in $PTH_PREFIX)

])


AC_DEFUN(TSRM_CHECK_PTHREADS,[

old_CFLAGS="$CFLAGS"

if test -n "$GCC"; then
  for i in -pthread -pthreads; do
    TSRM_CHECK_GCC_ARG($i, gcc_opt)
    if test "$gcc_opt" = "yes"; then
      CFLAGS="$CFLAGS $i"
      break
    fi
  done
  AC_CHECK_FUNCS(pthread_kill)
fi

if test "$ac_cv_func_pthread_kill" != "yes"; then
  CFLAGS="$old_CFLAGS"
dnl Fall back to the standard -lpthread
  AC_CHECK_LIB(pthread, pthread_kill)
  unset ac_cv_func_pthread_kill
  AC_CHECK_FUNCS(pthread_kill)
  if test "$ac_cv_func_pthread_kill" != "yes"; then
    AC_MSG_ERROR(You need Pthreads to build TSRM on UNIX.)
  fi
fi
		
AC_DEFINE(PTHREADS, [], Whether to use Pthreads)

AC_MSG_CHECKING(for POSIX threads)
AC_MSG_RESULT(yes)
])


AC_DEFUN(TSRM_OTHER_CHECKS,[

dnl For the thread implementations, we always use --with-*
dnl to maintain consistency

AC_ARG_WITH(tsrm-pth,
[  --with-tsrm-pth[=pth-config]    Use GNU Pth.],[
  TSRM_PTH=$withval
],[
  TSRM_PTH=no
])

AC_ARG_WITH(tsrm-pthreads,
[  --with-tsrm-pthreads    Use POSIX threads (default)],[
  TSRM_PTHREADS=$withval
],[
  TSRM_PTHREADS=yes
])

test "$TSRM_PTH" = "yes" && TSRM_PTH=pth-config

if test "$TSRM_PTH" != "no"; then
  TSRM_CHECK_PTH($TSRM_PTH)
elif test "$TSRM_PTHREADS" != "no"; then
  TSRM_CHECK_PTHREADS
fi

])