1 dnl test whether dirent has a d_off member
2 AC_DEFUN(AC_DIRENT_D_OFF,
3 [AC_CACHE_CHECK([for d_off in dirent], ac_cv_dirent_d_off,
7 #include <dirent.h>], [struct dirent d; d.d_off;],
8 ac_cv_dirent_d_off=yes, ac_cv_dirent_d_off=no)])
9 if test $ac_cv_dirent_d_off = yes; then
10 AC_DEFINE(HAVE_DIRENT_D_OFF,1,[Whether dirent has a d_off member])
14 dnl Mark specified module as shared
15 dnl SMB_MODULE(name,static_files,shared_files,subsystem,whatif-static,whatif-shared)
18 AC_MSG_CHECKING([how to build $1])
19 if test "$[MODULE_][$1]"; then
21 elif test "$[MODULE_]translit([$4], [A-Z], [a-z])" -a "$[MODULE_DEFAULT_][$1]"; then
22 DEST=$[MODULE_]translit([$4], [A-Z], [a-z])
24 DEST=$[MODULE_DEFAULT_][$1]
27 if test x"$DEST" = xSHARED; then
28 AC_DEFINE([$1][_init], [init_samba_module], [Whether to build $1 as shared module])
29 $4_MODULES="$$4_MODULES $3"
30 AC_MSG_RESULT([shared])
32 string_shared_modules="$string_shared_modules $1"
33 elif test x"$DEST" = xSTATIC; then
34 [init_static_modules_]translit([$4], [A-Z], [a-z])="$[init_static_modules_]translit([$4], [A-Z], [a-z]) $1_init();"
35 [decl_static_modules_]translit([$4], [A-Z], [a-z])="$[decl_static_modules_]translit([$4], [A-Z], [a-z]) extern NTSTATUS $1_init(void);"
36 string_static_modules="$string_static_modules $1"
37 $4_STATIC="$$4_STATIC $2"
40 AC_MSG_RESULT([static])
42 string_ignored_modules="$string_ignored_modules $1"
47 AC_DEFUN(SMB_SUBSYSTEM,
51 AC_DEFINE_UNQUOTED([static_init_]translit([$1], [A-Z], [a-z]), [{$init_static_modules_]translit([$1], [A-Z], [a-z])[}], [Static init functions])
52 AC_DEFINE_UNQUOTED([static_decl_]translit([$1], [A-Z], [a-z]), [$decl_static_modules_]translit([$1], [A-Z], [a-z]), [Decl of Static init functions])
53 ifelse([$2], , :, [rm -f $2])
57 dnl SMB_LIBRARY(name, version, default, reason)
59 dnl configure build and use of an (internal) shared library
61 AC_DEFUN([SMB_LIBRARY],
63 m4_pushdef([LIBNAME], [lib$1])
64 m4_pushdef([LIBUC], [m4_toupper(LIBNAME)])
65 m4_pushdef([LIBLIBS], [-l$1])
67 LIBUC[_SHARED_TARGET]=bin/LIBNAME.$SHLIBEXT
68 LIBUC[_STATIC_TARGET]=bin/LIBNAME.a
75 m4_if([$2], [], [LIBUC[_SOVER]=0], [LIBUC[_SOVER]=$2])
77 AC_SUBST(LIBUC[_SHARED_TARGET])
78 AC_SUBST(LIBUC[_STATIC_TARGET])
79 AC_SUBST(LIBUC[_SHARED])
80 AC_SUBST(LIBUC[_STATIC])
81 AC_SUBST(LIBUC[_LIBS])
82 AC_SUBST([INSTALL_]LIBUC)
83 AC_SUBST([UNINSTALL_]LIBUC)
84 AC_SUBST(LIBUC[_SOVER])
86 AC_MSG_CHECKING([whether to build the LIBNAME shared library])
88 dnl set the default to not build the shared lib
90 AS_HELP_STRING([--with-]LIBNAME,
92 [Build the LIBNAME shared library (default=no)],
93 [Build the LIBNAME shared library (default=no ($4))])),
106 # if unspecified, default is not to build
112 dnl by default, try to build the shared lib
114 AS_HELP_STRING([--with-]LIBNAME,
115 [Build the LIBNAME shared library (default=yes if shared libs supported)]),
128 # if unspecified, default is to build it if possible.
134 if eval test x"$build_lib" = "xyes" ; then
135 # only set the install targets if the user chose the library
136 [INSTALL_]LIBUC=[install]LIBNAME
137 [UNINSTALL_]LIBUC=[uninstall]LIBNAME
138 if eval $BLDSHARED = true; then
139 LIBUC[_SHARED]=$LIBUC[_SHARED_TARGET]
141 if test x"$USESHARED" != x"true" -o x"$[LINK_]LIBUC" = "xSTATIC" ; then
148 AC_MSG_RESULT(no shared library support -- will supply static library)
152 AC_MSG_RESULT(shared library not selected, but will supply static library)
154 if test $enable_static = yes; then
155 LIBUC[_STATIC]=[\$\(]LIBUC[_OBJ0\)]
165 dnl AC_LIBTESTFUNC(lib, function, [actions if found], [actions if not found])
166 dnl Check for a function in a library, but don't keep adding the same library
167 dnl to the LIBS variable. Check whether the function is available in the
168 dnl current LIBS before adding the library which prevents us spuriously
169 dnl adding libraries for symbols that are in libc.
171 dnl On success, the default actions ensure that HAVE_FOO is defined. The lib
172 dnl is always added to $LIBS if it was found to be necessary. The caller
173 dnl can use SMB_REMOVE_LIB to strp this if necessary.
174 AC_DEFUN([AC_LIBTESTFUNC],
178 # $2 was found in libc or existing $LIBS
184 AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1,
185 [Whether $2 is available])
189 # $2 was not found, try adding lib$1
197 # $2 was not found and we already had lib$1
198 # nothing to do here by default
203 # $2 was not found, try adding lib$1
212 AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1,
213 [Whether $2 is available])
222 # $2 was not found in lib$1
223 # nothing to do here by default
232 # AC_CHECK_LIB_EXT(LIBRARY, [EXT_LIBS], [FUNCTION],
233 # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
234 # [ADD-ACTION-IF-FOUND],[OTHER-LIBRARIES])
235 # ------------------------------------------------------
237 # Use a cache variable name containing both the library and function name,
238 # because the test really is for library $1 defining function $3, not
239 # just for library $1. Separate tests with the same $1 and different $3s
240 # may have different results.
242 # Note that using directly AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$3])
243 # is asking for trouble, since AC_CHECK_LIB($lib, fun) would give
244 # ac_cv_lib_$lib_fun, which is definitely not what was meant. Hence
245 # the AS_LITERAL_IF indirection.
247 # FIXME: This macro is extremely suspicious. It DEFINEs unconditionally,
248 # whatever the FUNCTION, in addition to not being a *S macro. Note
249 # that the cache does depend upon the function we are looking for.
251 # It is on purpose we used `ac_check_lib_ext_save_LIBS' and not just
252 # `ac_save_LIBS': there are many macros which don't want to see `LIBS'
253 # changed but still want to use AC_CHECK_LIB_EXT, so they save `LIBS'.
254 # And ``ac_save_LIBS' is too tempting a name, so let's leave them some
256 AC_DEFUN([AC_CHECK_LIB_EXT],
258 AH_CHECK_LIB_EXT([$1])
259 ac_check_lib_ext_save_LIBS=$LIBS
260 LIBS="-l$1 $$2 $7 $LIBS"
262 [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1])],
263 [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1''])])dnl
267 AH_CHECK_FUNC_EXT([$3])
269 [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1_$3])],
270 [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1''_$3])])dnl
271 AC_CACHE_CHECK([for $3 in -l$1], ac_Lib_func,
272 [AC_TRY_LINK_FUNC($3,
273 [AS_VAR_SET(ac_Lib_func, yes);
274 AS_VAR_SET(ac_Lib_ext, yes)],
275 [AS_VAR_SET(ac_Lib_func, no);
276 AS_VAR_SET(ac_Lib_ext, no)])
278 AS_IF([test AS_VAR_GET(ac_Lib_func) = yes],
279 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$3))])dnl
280 AS_VAR_POPDEF([ac_Lib_func])dnl
282 AC_CACHE_CHECK([for -l$1], ac_Lib_ext,
283 [AC_TRY_LINK_FUNC([main],
284 [AS_VAR_SET(ac_Lib_ext, yes)],
285 [AS_VAR_SET(ac_Lib_ext, no)])
288 LIBS=$ac_check_lib_ext_save_LIBS
290 AS_IF([test AS_VAR_GET(ac_Lib_ext) = yes],
292 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1))
303 AS_VAR_POPDEF([ac_Lib_ext])dnl
306 # AH_CHECK_LIB_EXT(LIBNAME)
307 # ---------------------
308 m4_define([AH_CHECK_LIB_EXT],
309 [AH_TEMPLATE(AS_TR_CPP(HAVE_LIB$1),
310 [Define to 1 if you have the `]$1[' library (-l]$1[).])])
312 # AC_CHECK_FUNCS_EXT(FUNCTION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
313 # -----------------------------------------------------------------
314 dnl check for a function in a $LIBS and $OTHER_LIBS libraries variable.
315 dnl AC_CHECK_FUNC_EXT(func,OTHER_LIBS,IF-TRUE,IF-FALSE)
316 AC_DEFUN([AC_CHECK_FUNC_EXT],
318 AH_CHECK_FUNC_EXT($1)
319 ac_check_func_ext_save_LIBS=$LIBS
321 AS_VAR_PUSHDEF([ac_var], [ac_cv_func_ext_$1])dnl
322 AC_CACHE_CHECK([for $1], ac_var,
323 [AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([$1])],
324 [AS_VAR_SET(ac_var, yes)],
325 [AS_VAR_SET(ac_var, no)])])
326 LIBS=$ac_check_func_ext_save_LIBS
327 AS_IF([test AS_VAR_GET(ac_var) = yes],
328 [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1])) $3],
330 AS_VAR_POPDEF([ac_var])dnl
333 # AH_CHECK_FUNC_EXT(FUNCNAME)
334 # ---------------------
335 m4_define([AH_CHECK_FUNC_EXT],
336 [AH_TEMPLATE(AS_TR_CPP(HAVE_$1),
337 [Define to 1 if you have the `]$1[' function.])])
339 dnl Define an AC_DEFINE with ifndef guard.
340 dnl AC_N_DEFINE(VARIABLE [, VALUE])
342 [cat >> confdefs.h <<\EOF
344 [#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
350 dnl AC_ADD_INCLUDE(VARIABLE)
351 define(AC_ADD_INCLUDE,
352 [cat >> confdefs.h <<\EOF
357 dnl Copied from libtool.m4
358 AC_DEFUN(AC_PROG_LD_GNU,
359 [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
360 [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
361 if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
362 ac_cv_prog_gnu_ld=yes
368 dnl Removes -I/usr/include/? from given variable
369 AC_DEFUN(CFLAGS_REMOVE_USR_INCLUDE,[
373 -I/usr/include|-I/usr/include/) ;;
374 *) ac_new_flags="[$]ac_new_flags [$]i" ;;
380 dnl Removes '-L/usr/lib[/]', '-Wl,-rpath,/usr/lib[/]'
381 dnl and '-Wl,-rpath -Wl,/usr/lib[/]' from given variable
382 AC_DEFUN(LIB_REMOVE_USR_LIB,[
391 -Wl,-rpath,/usr/lib) l="";;
392 -Wl,-rpath,/usr/lib/) l="";;
393 -Wl,-rpath,/usr/lib64) l="";;
394 -Wl,-rpath,/usr/lib64/) l="";;
396 -Wl,-rpath-Wl,/usr/lib) l="";;
397 -Wl,-rpath-Wl,/usr/lib/) l="";;
398 -Wl,-rpath-Wl,/usr/lib64) l="";;
399 -Wl,-rpath-Wl,/usr/lib64/) l="";;
402 if test x"[$]ac_new_flags" = x""; then
405 if test x"[$]l" = x""; then
406 ac_new_flags="[$]ac_new_flags[$]s[$]i";
408 ac_new_flags="[$]ac_new_flags[$]s[$]l [$]i";
417 dnl From Bruno Haible.
421 dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
422 dnl those with the standalone portable libiconv installed).
423 AC_MSG_CHECKING(for iconv in $1)
424 jm_cv_func_iconv="no"
429 dnl Check for include in funny place but no lib needed
430 if test "$jm_cv_func_iconv" != yes; then
431 AC_TRY_LINK([#include <stdlib.h>
432 #include <giconv.h>],
433 [iconv_t cd = iconv_open("","");
434 iconv(cd,NULL,NULL,NULL,NULL);
437 jm_cv_include="giconv.h"
441 dnl Standard iconv.h include, lib in glibc or libc ...
442 if test "$jm_cv_func_iconv" != yes; then
443 AC_TRY_LINK([#include <stdlib.h>
445 [iconv_t cd = iconv_open("","");
446 iconv(cd,NULL,NULL,NULL,NULL);
448 jm_cv_include="iconv.h"
452 if test "$jm_cv_lib_iconv" != yes; then
454 LIBS="$LIBS -lgiconv"
455 AC_TRY_LINK([#include <stdlib.h>
456 #include <giconv.h>],
457 [iconv_t cd = iconv_open("","");
458 iconv(cd,NULL,NULL,NULL,NULL);
462 jm_cv_include="giconv.h"
464 jm_cv_lib_iconv="giconv")
468 if test "$jm_cv_func_iconv" != yes; then
471 AC_TRY_LINK([#include <stdlib.h>
473 [iconv_t cd = iconv_open("","");
474 iconv(cd,NULL,NULL,NULL,NULL);
476 jm_cv_include="iconv.h"
478 jm_cv_lib_iconv="iconv")
481 if test "$jm_cv_lib_iconv" != yes; then
483 LIBS="$LIBS -lbiconv"
484 AC_TRY_LINK([#include <stdlib.h>
485 #include <biconv.h>],
486 [iconv_t cd = iconv_open("","");
487 iconv(cd,NULL,NULL,NULL,NULL);
491 jm_cv_include="biconv.h"
493 jm_cv_lib_iconv="biconv")
501 if test "$jm_cv_func_iconv" = yes; then
502 if test "$jm_cv_giconv" = yes; then
503 AC_DEFINE(HAVE_GICONV, 1, [What header to include for iconv() function: giconv.h])
507 if test "$jm_cv_biconv" = yes; then
508 AC_DEFINE(HAVE_BICONV, 1, [What header to include for iconv() function: biconv.h])
512 AC_DEFINE(HAVE_ICONV, 1, [What header to include for iconv() function: iconv.h])
522 AC_DEFUN(rjs_CHARSET,[
523 dnl Find out if we can convert from $1 to UCS2-LE
524 AC_MSG_CHECKING([can we convert from $1 to UCS2-LE?])
526 #include <$jm_cv_include>
528 iconv_t cd = iconv_open("$1", "UCS-2LE");
529 if (cd == 0 || cd == (iconv_t)-1) {
534 ],ICONV_CHARSET=$1,ICONV_CHARSET=no,ICONV_CHARSET=cross)
535 AC_MSG_RESULT($ICONV_CHARSET)
538 dnl AC_ENABLE_SHARED - implement the --enable-shared flag
539 dnl Usage: AC_ENABLE_SHARED[(DEFAULT)]
540 dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
542 AC_DEFUN([AC_ENABLE_SHARED],
543 [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
544 AC_ARG_ENABLE(shared,
545 changequote(<<, >>)dnl
546 << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
548 [p=${PACKAGE-default}
550 yes) enable_shared=yes ;;
551 no) enable_shared=no ;;
554 # Look at the argument we got. We use all the common list separators.
555 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
556 for pkg in $enableval; do
557 if test "X$pkg" = "X$p"; then
565 enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
568 dnl AC_ENABLE_STATIC - implement the --enable-static flag
569 dnl Usage: AC_ENABLE_STATIC[(DEFAULT)]
570 dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
572 AC_DEFUN([AC_ENABLE_STATIC],
573 [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
574 AC_ARG_ENABLE(static,
575 changequote(<<, >>)dnl
576 << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
578 [p=${PACKAGE-default}
580 yes) enable_static=yes ;;
581 no) enable_static=no ;;
584 # Look at the argument we got. We use all the common list separators.
585 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
586 for pkg in $enableval; do
587 if test "X$pkg" = "X$p"; then
594 enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
597 dnl AC_DISABLE_STATIC - set the default static flag to --disable-static
598 AC_DEFUN([AC_DISABLE_STATIC],
599 [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
600 AC_ENABLE_STATIC(no)])
602 dnl AC_TRY_RUN_STRICT(PROGRAM,CFLAGS,CPPFLAGS,LDFLAGS,
603 dnl [ACTION-IF-TRUE],[ACTION-IF-FALSE],
604 dnl [ACTION-IF-CROSS-COMPILING = RUNTIME-ERROR])
605 AC_DEFUN( [AC_TRY_RUN_STRICT],
607 old_CFLAGS="$CFLAGS";
610 old_CPPFLAGS="$CPPFLAGS";
613 old_LDFLAGS="$LDFLAGS";
616 AC_TRY_RUN([$1],[$5],[$6],[$7])
617 CFLAGS="$old_CFLAGS";
620 CPPFLAGS="$old_CPPFLAGS";
623 LDFLAGS="$old_LDFLAGS";
628 dnl SMB_CHECK_SYSCONF(varname)
629 dnl Tests whether the sysconf(3) variable "varname" is available.
630 AC_DEFUN([SMB_CHECK_SYSCONF],
632 AC_CACHE_CHECK([for sysconf($1)],
635 AC_TRY_LINK([#include <unistd.h>],
636 [ return sysconf($1) == -1 ? 1 : 0; ],
637 [ samba_cv_SYSCONF$1=yes ],
638 [ samba_cv_SYSCONF$1=no ])
641 if test x"$samba_cv_SYSCONF$1" = x"yes" ; then
642 AC_DEFINE(SYSCONF$1, 1, [Whether sysconf($1) is available])
646 dnl SMB_IS_LIBPTHREAD_LINKED([actions if true], [actions if false])
647 dnl Test whether the current LIBS results in libpthread being present.
648 dnl Execute the corresponding user action list.
649 AC_DEFUN([SMB_IS_LIBPTHREAD_LINKED],
651 AC_MSG_CHECKING(if libpthread is linked)
653 [return pthread_create(0, 0, 0, 0);],
664 dnl SMB_REMOVE_LIB(lib)
665 dnl Remove the given library from $LIBS
666 AC_DEFUN([SMB_REMOVE_LIB],
668 LIBS=`echo $LIBS | sed '-es/-l$1//g'`
671 dnl SMB_CHECK_DMAPI([actions if true], [actions if false])
672 dnl Check whether DMAPI is available and is a version that we know
673 dnl how to deal with. The default truth action is to set samba_dmapi_libs
674 dnl to the list of necessary libraries, and to define USE_DMAPI.
675 AC_DEFUN([SMB_CHECK_DMAPI],
679 if test x"$samba_dmapi_libs" = x"" ; then
680 AC_CHECK_LIB(dm, dm_get_eventlist,
681 [ samba_dmapi_libs="-ldm"], [])
684 if test x"$samba_dmapi_libs" = x"" ; then
685 AC_CHECK_LIB(jfsdm, dm_get_eventlist,
686 [samba_dmapi_libs="-ljfsdm"], [])
689 if test x"$samba_dmapi_libs" = x"" ; then
690 AC_CHECK_LIB(xdsm, dm_get_eventlist,
691 [samba_dmapi_libs="-lxdsm"], [])
694 if test x"$samba_dmapi_libs" = x"" ; then
695 AC_CHECK_LIB(dmapi, dm_get_eventlist,
696 [samba_dmapi_libs="-ldmapi"], [])
700 # Only bother to test ehaders if we have a candidate DMAPI library
701 if test x"$samba_dmapi_libs" != x"" ; then
702 AC_CHECK_HEADERS(sys/dmi.h xfs/dmapi.h sys/jfsdmapi.h sys/dmapi.h dmapi.h)
705 if test x"$samba_dmapi_libs" != x"" ; then
706 samba_dmapi_save_LIBS="$LIBS"
707 LIBS="$LIBS $samba_dmapi_libs"
710 #include <time.h> /* needed by Tru64 */
711 #include <sys/types.h> /* needed by AIX */
712 #ifdef HAVE_XFS_DMAPI_H
713 #include <xfs/dmapi.h>
714 #elif defined(HAVE_SYS_DMI_H)
716 #elif defined(HAVE_SYS_JFSDMAPI_H)
717 #include <sys/jfsdmapi.h>
718 #elif defined(HAVE_SYS_DMAPI_H)
719 #include <sys/dmapi.h>
720 #elif defined(HAVE_DMAPI_H)
725 /* This link test is designed to fail on IRI 6.4, but should
726 * succeed on Linux, IRIX 6.5 and AIX.
729 dm_eventset_t events;
730 /* This doesn't take an argument on IRIX 6.4. */
731 dm_init_service(&version);
732 /* IRIX 6.4 expects events to be a pointer. */
733 DMEV_ISSET(DM_EVENT_READ, events);
736 true # DMAPI link test succeeded
742 LIBS="$samba_dmapi_save_LIBS"
745 if test x"$samba_dmapi_libs" = x"" ; then
746 # DMAPI detection failure actions begin
749 AC_ERROR(Failed to detect a supported DMAPI implementation)
754 # DMAPI detection failure actions end
756 # DMAPI detection success actions start
759 AC_DEFINE(USE_DMAPI, 1,
760 [Whether we should build DMAPI integration components])
761 AC_MSG_NOTICE(Found DMAPI support in $samba_dmapi_libs)
766 # DMAPI detection success actions end
771 dnl SMB_CHECK_CLOCK_ID(clockid)
772 dnl Test whether the specified clock_gettime clock ID is available. If it
773 dnl is, we define HAVE_clockid
774 AC_DEFUN([SMB_CHECK_CLOCK_ID],
776 AC_MSG_CHECKING(for $1)
778 #if TIME_WITH_SYS_TIME
779 # include <sys/time.h>
783 # include <sys/time.h>
794 AC_DEFINE(HAVE_$1, 1,
795 [Whether the clock_gettime clock ID $1 is available])
802 dnl SMB_IF_RTSIGNAL_BUG([actions if true],
803 dnl [actions if false],
804 dnl [actions if cross compiling])
805 dnl Test whether we can call sigaction with RT_SIGNAL_NOTIFY and
806 dnl RT_SIGNAL_LEASE (also RT_SIGNAL_AIO for good measure, though
807 dnl I don't believe that triggers any bug.
809 dnl See the samba-technical thread titled "Failed to setup
810 dnl RT_SIGNAL_NOTIFY handler" for details on the bug in question.
811 AC_DEFUN([SMB_IF_RTSIGNAL_BUG],
813 rt_signal_notify_works=yes
814 rt_signal_lease_works=yes
815 rt_signal_aio_works=yes
817 AC_MSG_CHECKING(if sigaction works with realtime signals)
820 #include <sys/types.h>
824 /* from smbd/notify_kernel.c */
825 #ifndef RT_SIGNAL_NOTIFY
826 #define RT_SIGNAL_NOTIFY (SIGRTMIN+2)
829 /* from smbd/aio.c */
830 #ifndef RT_SIGNAL_AIO
831 #define RT_SIGNAL_AIO (SIGRTMIN+3)
834 /* from smbd/oplock_linux.c */
835 #ifndef RT_SIGNAL_LEASE
836 #define RT_SIGNAL_LEASE (SIGRTMIN+1)
839 static void signal_handler(int sig, siginfo_t *info, void *unused)
847 struct sigaction act = {0};
849 act.sa_sigaction = signal_handler;
850 act.sa_flags = SA_SIGINFO;
851 sigemptyset( &act.sa_mask );
853 if (sigaction(RT_SIGNAL_LEASE, &act, 0) != 0) {
854 /* Failed to setup RT_SIGNAL_LEASE handler */
858 if (sigaction(RT_SIGNAL_NOTIFY, &act, 0) != 0) {
859 /* Failed to setup RT_SIGNAL_NOTIFY handler */
863 if (sigaction(RT_SIGNAL_AIO, &act, 0) != 0) {
864 /* Failed to setup RT_SIGNAL_AIO handler */
868 /* zero on success */
879 1|11|101|111) rt_signal_lease_ok=no ;;
882 10|11|110|111) rt_signal_notify_ok=no ;;
885 100|110|101|111) rt_signal_aio_ok=no ;;
895 m4_include(../lib/replace/libreplace.m4)