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
76 m4_if([$2], [], [LIBUC[_SOVER]=0], [LIBUC[_SOVER]=$2])
78 AC_SUBST(LIBUC[_SHARED_TARGET])
79 AC_SUBST(LIBUC[_STATIC_TARGET])
80 AC_SUBST(LIBUC[_SHARED])
81 AC_SUBST(LIBUC[_STATIC])
82 AC_SUBST(LIBUC[_LIBS])
83 AC_SUBST(LIBUC[_TARGET])
84 AC_SUBST([INSTALL_]LIBUC)
85 AC_SUBST([UNINSTALL_]LIBUC)
86 AC_SUBST(LIBUC[_SOVER])
88 AC_MSG_CHECKING([whether to build the LIBNAME shared library])
90 dnl set the default to not build the shared lib
92 AS_HELP_STRING([--with-]LIBNAME,
94 [Build the LIBNAME shared library (default=no)],
95 [Build the LIBNAME shared library (default=no ($4))])),
108 # if unspecified, default is not to build
114 dnl by default, try to build the shared lib
116 AS_HELP_STRING([--with-]LIBNAME,
117 [Build the LIBNAME shared library (default=yes if shared libs supported)]),
130 # if unspecified, default is to build it if possible.
136 if eval test x"$build_lib" = "xyes" ; then
137 # only set the install targets if the user chose the library
138 [INSTALL_]LIBUC=[install]LIBNAME
139 [UNINSTALL_]LIBUC=[uninstall]LIBNAME
140 if eval $BLDSHARED = true; then
141 LIBUC[_SHARED]=$LIBUC[_SHARED_TARGET]
142 LIBUC[_TARGET]=$LIBUC[_SHARED_TARGET]
144 if test x"$USESHARED" != x"true" -o x"$[LINK_]LIBUC" = "xSTATIC" ; then
146 LIBUC[_TARGET]=$LIBUC[_STATIC_TARGET]
147 LIBUC[_LIBS]=$LIBUC[_STATIC_TARGET]
153 LIBUC[_TARGET]=$LIBUC[_STATIC_TARGET]
154 LIBUC[_LIBS]=$LIBUC[_STATIC_TARGET]
155 AC_MSG_RESULT(no shared library support -- will supply static library)
159 AC_MSG_RESULT(shared library not selected, but will supply static library)
161 if test $enable_static = yes; then
162 LIBUC[_STATIC]=$LIBUC[_STATIC_TARGET]
172 dnl AC_LIBTESTFUNC(lib, function, [actions if found], [actions if not found])
173 dnl Check for a function in a library, but don't keep adding the same library
174 dnl to the LIBS variable. Check whether the function is available in the
175 dnl current LIBS before adding the library which prevents us spuriously
176 dnl adding libraries for symbols that are in libc.
178 dnl On success, the default actions ensure that HAVE_FOO is defined. The lib
179 dnl is always added to $LIBS if it was found to be necessary. The caller
180 dnl can use SMB_REMOVE_LIB to strp this if necessary.
181 AC_DEFUN([AC_LIBTESTFUNC],
185 # $2 was found in libc or existing $LIBS
191 AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1,
192 [Whether $2 is available])
196 # $2 was not found, try adding lib$1
204 # $2 was not found and we already had lib$1
205 # nothing to do here by default
210 # $2 was not found, try adding lib$1
219 AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1,
220 [Whether $2 is available])
229 # $2 was not found in lib$1
230 # nothing to do here by default
239 # AC_CHECK_LIB_EXT(LIBRARY, [EXT_LIBS], [FUNCTION],
240 # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
241 # [ADD-ACTION-IF-FOUND],[OTHER-LIBRARIES])
242 # ------------------------------------------------------
244 # Use a cache variable name containing both the library and function name,
245 # because the test really is for library $1 defining function $3, not
246 # just for library $1. Separate tests with the same $1 and different $3s
247 # may have different results.
249 # Note that using directly AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$3])
250 # is asking for trouble, since AC_CHECK_LIB($lib, fun) would give
251 # ac_cv_lib_$lib_fun, which is definitely not what was meant. Hence
252 # the AS_LITERAL_IF indirection.
254 # FIXME: This macro is extremely suspicious. It DEFINEs unconditionally,
255 # whatever the FUNCTION, in addition to not being a *S macro. Note
256 # that the cache does depend upon the function we are looking for.
258 # It is on purpose we used `ac_check_lib_ext_save_LIBS' and not just
259 # `ac_save_LIBS': there are many macros which don't want to see `LIBS'
260 # changed but still want to use AC_CHECK_LIB_EXT, so they save `LIBS'.
261 # And ``ac_save_LIBS' is too tempting a name, so let's leave them some
263 AC_DEFUN([AC_CHECK_LIB_EXT],
265 AH_CHECK_LIB_EXT([$1])
266 ac_check_lib_ext_save_LIBS=$LIBS
267 LIBS="-l$1 $$2 $7 $LIBS"
269 [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1])],
270 [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1''])])dnl
274 AH_CHECK_FUNC_EXT([$3])
276 [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1_$3])],
277 [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1''_$3])])dnl
278 AC_CACHE_CHECK([for $3 in -l$1], ac_Lib_func,
279 [AC_TRY_LINK_FUNC($3,
280 [AS_VAR_SET(ac_Lib_func, yes);
281 AS_VAR_SET(ac_Lib_ext, yes)],
282 [AS_VAR_SET(ac_Lib_func, no);
283 AS_VAR_SET(ac_Lib_ext, no)])
285 AS_IF([test AS_VAR_GET(ac_Lib_func) = yes],
286 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$3))])dnl
287 AS_VAR_POPDEF([ac_Lib_func])dnl
289 AC_CACHE_CHECK([for -l$1], ac_Lib_ext,
290 [AC_TRY_LINK_FUNC([main],
291 [AS_VAR_SET(ac_Lib_ext, yes)],
292 [AS_VAR_SET(ac_Lib_ext, no)])
295 LIBS=$ac_check_lib_ext_save_LIBS
297 AS_IF([test AS_VAR_GET(ac_Lib_ext) = yes],
299 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1))
310 AS_VAR_POPDEF([ac_Lib_ext])dnl
313 # AH_CHECK_LIB_EXT(LIBNAME)
314 # ---------------------
315 m4_define([AH_CHECK_LIB_EXT],
316 [AH_TEMPLATE(AS_TR_CPP(HAVE_LIB$1),
317 [Define to 1 if you have the `]$1[' library (-l]$1[).])])
319 # AC_CHECK_FUNCS_EXT(FUNCTION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
320 # -----------------------------------------------------------------
321 dnl check for a function in a $LIBS and $OTHER_LIBS libraries variable.
322 dnl AC_CHECK_FUNC_EXT(func,OTHER_LIBS,IF-TRUE,IF-FALSE)
323 AC_DEFUN([AC_CHECK_FUNC_EXT],
325 AH_CHECK_FUNC_EXT($1)
326 ac_check_func_ext_save_LIBS=$LIBS
328 AS_VAR_PUSHDEF([ac_var], [ac_cv_func_ext_$1])dnl
329 AC_CACHE_CHECK([for $1], ac_var,
330 [AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([$1])],
331 [AS_VAR_SET(ac_var, yes)],
332 [AS_VAR_SET(ac_var, no)])])
333 LIBS=$ac_check_func_ext_save_LIBS
334 AS_IF([test AS_VAR_GET(ac_var) = yes],
335 [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1])) $3],
337 AS_VAR_POPDEF([ac_var])dnl
338 ])# AC_CHECK_FUNC_EXT
340 # AH_CHECK_FUNC_EXT(FUNCNAME)
341 # ---------------------
342 m4_define([AH_CHECK_FUNC_EXT],
343 [AH_TEMPLATE(AS_TR_CPP(HAVE_$1),
344 [Define to 1 if you have the `]$1[' function.])])
346 dnl Define an AC_DEFINE with ifndef guard.
347 dnl AC_N_DEFINE(VARIABLE [, VALUE])
349 [cat >> confdefs.h <<\EOF
351 [#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
357 dnl AC_ADD_INCLUDE(VARIABLE)
358 define(AC_ADD_INCLUDE,
359 [cat >> confdefs.h <<\EOF
364 dnl Copied from libtool.m4
365 AC_DEFUN(AC_PROG_LD_GNU,
366 [AC_CACHE_CHECK([if the linker used by compiler is GNU ld], ac_cv_prog_gnu_ld,
367 [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
368 if $CC -Wl,-v /dev/null 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
369 ac_cv_prog_gnu_ld=yes
375 dnl Removes -I/usr/include/? from given variable
376 AC_DEFUN(CFLAGS_REMOVE_USR_INCLUDE,[
380 -I/usr/include|-I/usr/include/) ;;
381 *) ac_new_flags="[$]ac_new_flags [$]i" ;;
387 dnl Removes '-L/usr/lib[/]', '-Wl,-rpath,/usr/lib[/]'
388 dnl and '-Wl,-rpath -Wl,/usr/lib[/]' from given variable
389 AC_DEFUN(LIB_REMOVE_USR_LIB,[
398 -Wl,-rpath,/usr/lib) l="";;
399 -Wl,-rpath,/usr/lib/) l="";;
400 -Wl,-rpath,/usr/lib64) l="";;
401 -Wl,-rpath,/usr/lib64/) l="";;
403 -Wl,-rpath-Wl,/usr/lib) l="";;
404 -Wl,-rpath-Wl,/usr/lib/) l="";;
405 -Wl,-rpath-Wl,/usr/lib64) l="";;
406 -Wl,-rpath-Wl,/usr/lib64/) l="";;
409 if test x"[$]ac_new_flags" = x""; then
412 if test x"[$]l" = x""; then
413 ac_new_flags="[$]ac_new_flags[$]s[$]i";
415 ac_new_flags="[$]ac_new_flags[$]s[$]l [$]i";
424 dnl From Bruno Haible.
428 dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
429 dnl those with the standalone portable libiconv installed).
430 AC_MSG_CHECKING(for iconv in $1)
431 jm_cv_func_iconv="no"
436 dnl Check for include in giconv.h but no lib needed
437 if test "$jm_cv_func_iconv" != yes; then
438 AC_TRY_LINK([#include <stdlib.h>
439 #include <giconv.h>],
440 [iconv_t cd = iconv_open("","");
441 iconv(cd,NULL,NULL,NULL,NULL);
444 jm_cv_include="giconv.h"
448 dnl Standard iconv.h include, lib in glibc or libc ...
449 if test "$jm_cv_func_iconv" != yes; then
450 AC_TRY_LINK([#include <stdlib.h>
452 [iconv_t cd = iconv_open("","");
453 iconv(cd,NULL,NULL,NULL,NULL);
455 jm_cv_include="iconv.h"
459 dnl Include in giconv.h, libgiconv needed to link
460 if test "$jm_cv_func_iconv" != yes; then
462 LIBS="$LIBS -lgiconv"
463 AC_TRY_LINK([#include <stdlib.h>
464 #include <giconv.h>],
465 [iconv_t cd = iconv_open("","");
466 iconv(cd,NULL,NULL,NULL,NULL);
470 jm_cv_include="giconv.h"
472 jm_cv_lib_iconv="giconv")
476 dnl Include in iconv.h, libiconv needed to link
477 if test "$jm_cv_func_iconv" != yes; then
480 AC_TRY_LINK([#include <stdlib.h>
482 [iconv_t cd = iconv_open("","");
483 iconv(cd,NULL,NULL,NULL,NULL);
485 jm_cv_include="iconv.h"
487 jm_cv_lib_iconv="iconv")
490 dnl Include in biconv.h, libbiconv needed to link
491 if test "$jm_cv_func_iconv" != yes; then
493 LIBS="$LIBS -lbiconv"
494 AC_TRY_LINK([#include <stdlib.h>
495 #include <biconv.h>],
496 [iconv_t cd = iconv_open("","");
497 iconv(cd,NULL,NULL,NULL,NULL);
501 jm_cv_include="biconv.h"
503 jm_cv_lib_iconv="biconv")
511 if test "$jm_cv_func_iconv" = yes; then
512 if test "$jm_cv_giconv" = yes; then
513 AC_DEFINE(HAVE_GICONV, 1, [What header to include for iconv() function: giconv.h])
517 if test "$jm_cv_biconv" = yes; then
518 AC_DEFINE(HAVE_BICONV, 1, [What header to include for iconv() function: biconv.h])
522 AC_DEFINE(HAVE_ICONV, 1, [What header to include for iconv() function: iconv.h])
532 AC_DEFUN(rjs_CHARSET,[
533 dnl Find out if we can convert from $1 to UCS2-LE
534 AC_MSG_CHECKING([can we convert from $1 to UCS2-LE?])
536 #include <$jm_cv_include>
538 iconv_t cd = iconv_open("$1", "UCS-2LE");
539 if (cd == 0 || cd == (iconv_t)-1) {
544 ],ICONV_CHARSET=$1,ICONV_CHARSET=no,ICONV_CHARSET=cross)
545 AC_MSG_RESULT($ICONV_CHARSET)
548 dnl AC_ENABLE_SHARED - implement the --enable-shared flag
549 dnl Usage: AC_ENABLE_SHARED[(DEFAULT)]
550 dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
552 AC_DEFUN([AC_ENABLE_SHARED],
553 [define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
554 AC_ARG_ENABLE(shared,
555 changequote(<<, >>)dnl
556 << --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
558 [p=${PACKAGE-default}
560 yes) enable_shared=yes ;;
561 no) enable_shared=no ;;
564 # Look at the argument we got. We use all the common list separators.
565 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
566 for pkg in $enableval; do
567 if test "X$pkg" = "X$p"; then
575 enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
578 dnl AC_ENABLE_STATIC - implement the --enable-static flag
579 dnl Usage: AC_ENABLE_STATIC[(DEFAULT)]
580 dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
582 AC_DEFUN([AC_ENABLE_STATIC],
583 [define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
584 AC_ARG_ENABLE(static,
585 changequote(<<, >>)dnl
586 << --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
588 [p=${PACKAGE-default}
590 yes) enable_static=yes ;;
591 no) enable_static=no ;;
594 # Look at the argument we got. We use all the common list separators.
595 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
596 for pkg in $enableval; do
597 if test "X$pkg" = "X$p"; then
604 enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
607 dnl AC_DISABLE_STATIC - set the default static flag to --disable-static
608 AC_DEFUN([AC_DISABLE_STATIC],
609 [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
610 AC_ENABLE_STATIC(no)])
612 dnl AC_TRY_COMMAND_NO_STDERR - also fail if there is output on stderr
613 AC_DEFUN( [AC_TRY_COMMAND_NO_STDERR],
615 { OUT=`($1) 3>&AS_MESSAGE_LOG_FD 2>&1 1>&3`
617 echo "\$?=$RC" >&AS_MESSAGE_LOG_FD
618 if test x"$OUT" != x ; then
619 echo "stderr:" >&AS_MESSAGE_LOG_FD
620 echo "$OUT" >&AS_MESSAGE_LOG_FD
622 test $RC -eq 0 -a x"$OUT" = x ; }
625 dnl AC_TRY_RUN_STRICT(PROGRAM,CFLAGS,CPPFLAGS,LDFLAGS,
626 dnl [ACTION-IF-TRUE],[ACTION-IF-FALSE],
627 dnl [ACTION-IF-CROSS-COMPILING = RUNTIME-ERROR])
628 AC_DEFUN( [AC_TRY_RUN_STRICT],
630 old_CFLAGS="$CFLAGS";
633 old_CPPFLAGS="$CPPFLAGS";
636 old_LDFLAGS="$LDFLAGS";
639 AC_TRY_RUN([$1],[$5],[$6],[$7])
640 CFLAGS="$old_CFLAGS";
643 CPPFLAGS="$old_CPPFLAGS";
646 LDFLAGS="$old_LDFLAGS";
651 dnl SMB_CHECK_SYSCONF(varname)
652 dnl Tests whether the sysconf(3) variable "varname" is available.
653 AC_DEFUN([SMB_CHECK_SYSCONF],
655 AC_CACHE_CHECK([for sysconf($1)],
658 AC_TRY_LINK([#include <unistd.h>],
659 [ return sysconf($1) == -1 ? 1 : 0; ],
660 [ samba_cv_SYSCONF$1=yes ],
661 [ samba_cv_SYSCONF$1=no ])
664 if test x"$samba_cv_SYSCONF$1" = x"yes" ; then
665 AC_DEFINE(SYSCONF$1, 1, [Whether sysconf($1) is available])
669 dnl SMB_IS_LIBPTHREAD_LINKED([actions if true], [actions if false])
670 dnl Test whether the current LIBS results in libpthread being present.
671 dnl Execute the corresponding user action list.
672 AC_DEFUN([SMB_IS_LIBPTHREAD_LINKED],
674 AC_MSG_CHECKING(if libpthread is linked)
676 [return pthread_create(0, 0, 0, 0);],
687 dnl SMB_REMOVE_LIB(lib)
688 dnl Remove the given library from $LIBS
689 AC_DEFUN([SMB_REMOVE_LIB],
691 LIBS=`echo $LIBS | sed '-es/-l$1//g'`
694 dnl SMB_CHECK_DMAPI([actions if true], [actions if false])
695 dnl Check whether DMAPI is available and is a version that we know
696 dnl how to deal with. The default truth action is to set samba_dmapi_libs
697 dnl to the list of necessary libraries, and to define USE_DMAPI.
698 AC_DEFUN([SMB_CHECK_DMAPI],
702 if test x"$samba_dmapi_libs" = x"" ; then
703 AC_CHECK_LIB(dm, dm_get_eventlist,
704 [ samba_dmapi_libs="-ldm"], [])
707 if test x"$samba_dmapi_libs" = x"" ; then
708 AC_CHECK_LIB(jfsdm, dm_get_eventlist,
709 [samba_dmapi_libs="-ljfsdm"], [])
712 if test x"$samba_dmapi_libs" = x"" ; then
713 AC_CHECK_LIB(dmapi, dm_get_eventlist,
714 [samba_dmapi_libs="-ldmapi"], [])
717 if test x"$samba_dmapi_libs" = x"" ; then
718 AC_CHECK_LIB(xdsm, dm_get_eventlist,
719 [samba_dmapi_libs="-lxdsm"], [])
723 # Only bother to test ehaders if we have a candidate DMAPI library
724 if test x"$samba_dmapi_libs" != x"" ; then
725 AC_CHECK_HEADERS(sys/dmi.h xfs/dmapi.h sys/jfsdmapi.h sys/dmapi.h dmapi.h)
728 if test x"$samba_dmapi_libs" != x"" ; then
729 samba_dmapi_save_LIBS="$LIBS"
730 LIBS="$LIBS $samba_dmapi_libs"
733 #include <time.h> /* needed by Tru64 */
734 #include <sys/types.h> /* needed by AIX */
735 #ifdef HAVE_XFS_DMAPI_H
736 #include <xfs/dmapi.h>
737 #elif defined(HAVE_SYS_DMI_H)
739 #elif defined(HAVE_SYS_JFSDMAPI_H)
740 #include <sys/jfsdmapi.h>
741 #elif defined(HAVE_SYS_DMAPI_H)
742 #include <sys/dmapi.h>
743 #elif defined(HAVE_DMAPI_H)
748 /* This link test is designed to fail on IRI 6.4, but should
749 * succeed on Linux, IRIX 6.5 and AIX.
752 dm_eventset_t events;
753 /* This doesn't take an argument on IRIX 6.4. */
754 dm_init_service(&version);
755 /* IRIX 6.4 expects events to be a pointer. */
756 DMEV_ISSET(DM_EVENT_READ, events);
759 true # DMAPI link test succeeded
765 LIBS="$samba_dmapi_save_LIBS"
768 if test x"$samba_dmapi_libs" = x"" ; then
769 # DMAPI detection failure actions begin
772 AC_ERROR(Failed to detect a supported DMAPI implementation)
777 # DMAPI detection failure actions end
779 # DMAPI detection success actions start
782 AC_DEFINE(USE_DMAPI, 1,
783 [Whether we should build DMAPI integration components])
784 AC_MSG_NOTICE(Found DMAPI support in $samba_dmapi_libs)
789 # DMAPI detection success actions end
794 dnl SMB_CHECK_CLOCK_ID(clockid)
795 dnl Test whether the specified clock_gettime clock ID is available. If it
796 dnl is, we define HAVE_clockid
797 AC_DEFUN([SMB_CHECK_CLOCK_ID],
799 AC_MSG_CHECKING(for $1)
801 #if TIME_WITH_SYS_TIME
802 # include <sys/time.h>
806 # include <sys/time.h>
817 AC_DEFINE(HAVE_$1, 1,
818 [Whether the clock_gettime clock ID $1 is available])
825 dnl SMB_IF_RTSIGNAL_BUG([actions if true],
826 dnl [actions if false],
827 dnl [actions if cross compiling])
828 dnl Test whether we can call sigaction with RT_SIGNAL_NOTIFY and
829 dnl RT_SIGNAL_LEASE (also RT_SIGNAL_AIO for good measure, though
830 dnl I don't believe that triggers any bug.
832 dnl See the samba-technical thread titled "Failed to setup
833 dnl RT_SIGNAL_NOTIFY handler" for details on the bug in question.
834 AC_DEFUN([SMB_IF_RTSIGNAL_BUG],
836 rt_signal_notify_works=yes
837 rt_signal_lease_works=yes
838 rt_signal_aio_works=yes
840 AC_MSG_CHECKING(if sigaction works with realtime signals)
843 #include <sys/types.h>
848 #define SIGRTMIN NSIG
850 /* from smbd/notify_kernel.c */
851 #ifndef RT_SIGNAL_NOTIFY
852 #define RT_SIGNAL_NOTIFY (SIGRTMIN+2)
855 /* from smbd/aio.c */
856 #ifndef RT_SIGNAL_AIO
857 #define RT_SIGNAL_AIO (SIGRTMIN+3)
860 /* from smbd/oplock_linux.c */
861 #ifndef RT_SIGNAL_LEASE
862 #define RT_SIGNAL_LEASE (SIGRTMIN+1)
865 static void signal_handler(int sig, siginfo_t *info, void *unused)
873 struct sigaction act = {0};
875 act.sa_sigaction = signal_handler;
876 act.sa_flags = SA_SIGINFO;
877 sigemptyset( &act.sa_mask );
879 if (sigaction(RT_SIGNAL_LEASE, &act, 0) != 0) {
880 /* Failed to setup RT_SIGNAL_LEASE handler */
884 if (sigaction(RT_SIGNAL_NOTIFY, &act, 0) != 0) {
885 /* Failed to setup RT_SIGNAL_NOTIFY handler */
889 if (sigaction(RT_SIGNAL_AIO, &act, 0) != 0) {
890 /* Failed to setup RT_SIGNAL_AIO handler */
894 /* zero on success */
905 1|11|101|111) rt_signal_lease_ok=no ;;
908 10|11|110|111) rt_signal_notify_ok=no ;;
911 100|110|101|111) rt_signal_aio_ok=no ;;
921 m4_include(../lib/replace/libreplace.m4)