summaryrefslogtreecommitdiff
path: root/mit-pthreads/config/aclocal.m4
diff options
context:
space:
mode:
Diffstat (limited to 'mit-pthreads/config/aclocal.m4')
-rwxr-xr-xmit-pthreads/config/aclocal.m494
1 files changed, 94 insertions, 0 deletions
diff --git a/mit-pthreads/config/aclocal.m4 b/mit-pthreads/config/aclocal.m4
new file mode 100755
index 00000000000..2a5cd3e9cbf
--- /dev/null
+++ b/mit-pthreads/config/aclocal.m4
@@ -0,0 +1,94 @@
+dnl Autoconf extensions for pthreads package.
+dnl
+ifelse(regexp(AC_DEFINE(xxxxx),.*@@@.*),-1,,[define(IS_AUTOHEADER)])])dnl
+dnl
+dnl Now, the real stuff needed by the pthreads package.
+dnl
+AC_DEFUN([PTHREADS_CHECK_ONE_SYSCALL],
+[AC_MSG_CHECKING(for syscall $1)
+AC_CACHE_VAL(pthreads_cv_syscall_$1,
+AC_TRY_LINK([
+/* FIXME: This list should be generated from info in configure.in. */
+#ifdef HAVE_SYSCALL_H
+#include <syscall.h>
+#else
+#ifdef HAVE_SYS_SYSCALL_H
+#include <sys/syscall.h>
+#else
+where is your syscall header file??
+#endif
+#endif
+],[
+int x;
+x = SYS_$1 ;
+],
+eval pthreads_cv_syscall_$1=yes,
+eval pthreads_cv_syscall_$1=no))
+if eval test \$pthreads_cv_syscall_$1 = yes ; then
+ pthreads_syscall_present=yes
+ available_syscalls="$available_syscalls $1"
+dnl Can't just do the obvious substitution here or autoheader gets
+dnl sorta confused. (Sigh.) Getting the requoting of the brackets right
+dnl would be a pain too.
+ macroname=HAVE_SYSCALL_`echo $1 | tr '[[[a-z]]]' '[[[A-Z]]]'`
+ AC_DEFINE_UNQUOTED($macroname)
+else
+ pthreads_syscall_present=no
+ missing_syscalls="$missing_syscalls $1"
+fi
+AC_MSG_RESULT($pthreads_syscall_present)
+])dnl
+dnl
+AC_DEFUN(PTHREADS_CHECK_SYSCALLS,dnl
+ifdef([IS_AUTOHEADER],[#
+dnl Need to fake out autoheader, since there's no way to add a new class
+dnl of features to generate config.h.in entries for.
+@@@syscalls="$1"@@@
+@@@funcs="$funcs syscall_`echo $syscalls | sed 's/ / syscall_/g'`"@@@
+],
+[pthreads_syscall_list="$1"
+for pthreads_syscallname in $pthreads_syscall_list ; do
+ PTHREADS_CHECK_ONE_SYSCALL([$]pthreads_syscallname)
+done
+]))dnl
+dnl
+dnl Requote each argument.
+define([requote], [ifelse($#, 0, , $#, 1, "$1",
+ "$1" [requote(builtin(shift,$@))])])dnl
+dnl
+dnl Determine proper typedef value for a typedef name, and define a
+dnl C macro to expand to that type. (A shell variable with that value
+dnl is also created.) If none of the specified types to try match, the
+dnl macro is left undefined, and the shell variable empty. If the
+dnl typedef name cannot be found in the specified header files, this
+dnl test errors out; perhaps it should be changed to simply leave the
+dnl macro undefined...
+dnl
+dnl PTHREADS_FIND_TYPE(typedefname,varname,includes,possible values...)
+dnl
+AC_DEFUN(PTHREADS_FIND_TYPE,
+ifdef([IS_AUTOHEADER],[#
+@@@syms="$syms $2"@@@
+],[dnl
+AC_MSG_CHECKING(type of $1)
+AC_CACHE_VAL(pthreads_cv_type_$1,
+[AC_TRY_COMPILE([$3],[ extern $1 foo; ],
+[ for try_type in [requote(builtin(shift,builtin(shift,builtin(shift,$@))))] ; do
+ AC_TRY_COMPILE([$3],[ extern $1 foo; extern $try_type foo; ],
+ [ pthreads_cv_type_$1="$try_type" ; break ])
+ done],
+ AC_MSG_ERROR(Can't find system typedef for $1.))])
+if test -n "$pthreads_cv_type_$1" ; then
+ AC_DEFINE_UNQUOTED($2,$pthreads_cv_type_$1)
+fi
+$2=$pthreads_cv_type_$1
+AC_MSG_RESULT($pthreads_cv_type_$1)]))dnl
+dnl
+dnl
+dnl Like above, but the list of types to try is pre-specified.
+dnl
+AC_DEFUN(PTHREADS_FIND_INTEGRAL_TYPE,[
+PTHREADS_FIND_TYPE([$1], [$2], [$3],
+ int, unsigned int, long, unsigned long,
+ short, unsigned short, char, unsigned char,
+ long long, unsigned long long)])dnl