source: trunk/server/source3/m4/aclocal.m4@ 788

Last change on this file since 788 was 751, checked in by Silvan Scherrer, 13 years ago

Samba Server: updated trunk to 3.6.9

File size: 24.4 KB
Line 
1dnl test whether dirent has a d_off member
2AC_DEFUN(AC_DIRENT_D_OFF,
3[AC_CACHE_CHECK([for d_off in dirent], ac_cv_dirent_d_off,
4[AC_TRY_COMPILE([
5#include <unistd.h>
6#include <sys/types.h>
7#include <dirent.h>], [struct dirent d; d.d_off;],
8ac_cv_dirent_d_off=yes, ac_cv_dirent_d_off=no)])
9if test $ac_cv_dirent_d_off = yes; then
10 AC_DEFINE(HAVE_DIRENT_D_OFF,1,[Whether dirent has a d_off member])
11fi
12])
13
14dnl Mark specified module as shared
15dnl SMB_MODULE(name,static_files,shared_files,subsystem,whatif-static,whatif-shared)
16AC_DEFUN(SMB_MODULE,
17[
18 AC_MSG_CHECKING([how to build $1])
19 if test "$[MODULE_][$1]"; then
20 DEST=$[MODULE_][$1]
21 elif test "$[MODULE_]translit([$4], [A-Z], [a-z])" -a "$[MODULE_DEFAULT_][$1]"; then
22 DEST=$[MODULE_]translit([$4], [A-Z], [a-z])
23 else
24 DEST=$[MODULE_DEFAULT_][$1]
25 fi
26
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])
31 [$6]
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"
38 AC_SUBST($4_STATIC)
39 [$5]
40 AC_MSG_RESULT([static])
41 else
42 string_ignored_modules="$string_ignored_modules $1"
43 AC_MSG_RESULT([not])
44 fi
45])
46
47AC_DEFUN(SMB_SUBSYSTEM,
48[
49 AC_SUBST($1_STATIC)
50 AC_SUBST($1_MODULES)
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])
54])
55
56
57dnl SMB_LIBRARY(name, soversion, fullversion, default, reason)
58dnl
59dnl configure build and use of an (internal) shared library
60dnl
61AC_DEFUN([SMB_LIBRARY],
62[
63m4_pushdef([LIBNAME], [lib$1])
64m4_pushdef([LIBUC], [m4_toupper(LIBNAME)])
65m4_pushdef([LIBLIBS], [-l$1])
66
67LIBUC[_SHARED_TARGET]=bin/LIBNAME.$SHLIBEXT
68LIBUC[_STATIC_TARGET]=bin/LIBNAME.a
69LIBUC[_SHARED]=
70LIBUC[_STATIC]=
71LIBUC[_LIBS]=LIBLIBS
72LIBUC[_TARGET]=
73[INSTALL_]LIBUC=
74[UNINSTALL_]LIBUC=
75
76m4_if([$2], [], [LIBUC[_SOVER]=0], [LIBUC[_SOVER]=$2])
77m4_if([$3], [], [LIBUC[_FULLVER]=$LIBUC[_SOVER]], [LIBUC[_FULLVER]=$3])
78
79LIBUC[_SHARED_TARGET_SOVER]=$LIBUC[_SHARED_TARGET].$LIBUC[_SOVER]
80LIBUC[_SHARED_TARGET_FULLVER]=$LIBUC[_SHARED_TARGET].$LIBUC[_FULLVER]
81
82AC_SUBST(LIBUC[_SHARED_TARGET])
83AC_SUBST(LIBUC[_STATIC_TARGET])
84AC_SUBST(LIBUC[_SHARED])
85AC_SUBST(LIBUC[_STATIC])
86AC_SUBST(LIBUC[_LIBS])
87AC_SUBST(LIBUC[_TARGET])
88AC_SUBST([INSTALL_]LIBUC)
89AC_SUBST([UNINSTALL_]LIBUC)
90AC_SUBST(LIBUC[_SOVER])
91AC_SUBST(LIBUC[_FULLVER])
92AC_SUBST(LIBUC[_SHARED_TARGET_SOVER])
93AC_SUBST(LIBUC[_SHARED_TARGET_FULLVER])
94
95AC_MSG_CHECKING([whether to build the LIBNAME shared library])
96m4_if([$4], [no], [
97dnl set the default to not build the shared lib
98AC_ARG_WITH(LIBNAME,
99AS_HELP_STRING([--with-]LIBNAME,
100 m4_if([$5], [],
101 [Build the LIBNAME shared library (default=no)],
102 [Build the LIBNAME shared library (default=no ($5))])),
103[
104case "$withval" in
105 yes)
106 build_lib=yes
107 ;;
108 *)
109 AC_MSG_RESULT(no)
110 build_lib=no
111 ;;
112esac
113],
114[
115# if unspecified, default is not to build
116AC_MSG_RESULT(no)
117build_lib=no
118]
119)
120],[
121dnl by default, try to build the shared lib
122AC_ARG_WITH(LIBNAME,
123AS_HELP_STRING([--with-]LIBNAME,
124 [Build the LIBNAME shared library (default=yes if shared libs supported)]),
125[
126case "$withval" in
127 no)
128 AC_MSG_RESULT(no)
129 build_lib=no
130 ;;
131 *)
132 build_lib=yes
133 ;;
134esac
135],
136[
137# if unspecified, default is to build it if possible.
138build_lib=yes
139]
140)
141])
142
143if eval test x"$build_lib" = "xyes" ; then
144 # only set the install targets if the user chose the library
145 [INSTALL_]LIBUC=[install]LIBNAME
146 [UNINSTALL_]LIBUC=[uninstall]LIBNAME
147 if eval $BLDSHARED = true; then
148 LIBUC[_SHARED]=$LIBUC[_SHARED_TARGET]
149 LIBUC[_TARGET]=$LIBUC[_SHARED_TARGET]
150
151 AC_MSG_RESULT(yes)
152 if test x"$USESHARED" != x"true" -o x"$[LINK_]LIBUC" = "xSTATIC" ; then
153 enable_static=yes
154 LIBUC[_TARGET]=$LIBUC[_STATIC_TARGET]
155 LIBUC[_LIBS]=$LIBUC[_STATIC_TARGET]
156 else
157 LIBUC[_LIBS]=LIBLIBS
158 fi
159 else
160 enable_static=yes
161 LIBUC[_TARGET]=$LIBUC[_STATIC_TARGET]
162 LIBUC[_LIBS]=$LIBUC[_STATIC_TARGET]
163 AC_MSG_RESULT(no shared library support -- will supply static library)
164 fi
165else
166 enable_static=yes
167 AC_MSG_RESULT(shared library not selected, but will supply static library)
168fi
169if test $enable_static = yes; then
170 LIBUC[_STATIC]=$LIBUC[_STATIC_TARGET]
171fi
172
173m4_popdef([LIBNAME])
174m4_popdef([LIBUC])
175m4_popdef([LIBLIBS])
176
177])
178
179
180dnl AC_LIBTESTFUNC(lib, function, [actions if found], [actions if not found])
181dnl Check for a function in a library, but don't keep adding the same library
182dnl to the LIBS variable. Check whether the function is available in the
183dnl current LIBS before adding the library which prevents us spuriously
184dnl adding libraries for symbols that are in libc.
185dnl
186dnl On success, the default actions ensure that HAVE_FOO is defined. The lib
187dnl is always added to $LIBS if it was found to be necessary. The caller
188dnl can use SMB_REMOVE_LIB to strp this if necessary.
189AC_DEFUN([AC_LIBTESTFUNC],
190[
191 AC_CHECK_FUNCS($2,
192 [
193 # $2 was found in libc or existing $LIBS
194 m4_ifval([$3],
195 [
196 $3
197 ],
198 [
199 AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1,
200 [Whether $2 is available])
201 ])
202 ],
203 [
204 # $2 was not found, try adding lib$1
205 case " $LIBS " in
206 *\ -l$1\ *)
207 m4_ifval([$4],
208 [
209 $4
210 ],
211 [
212 # $2 was not found and we already had lib$1
213 # nothing to do here by default
214 true
215 ])
216 ;;
217 *)
218 # $2 was not found, try adding lib$1
219 AC_CHECK_LIB($1, $2,
220 [
221 LIBS="-l$1 $LIBS"
222 m4_ifval([$3],
223 [
224 $3
225 ],
226 [
227 AC_DEFINE(translit([HAVE_$2], [a-z], [A-Z]), 1,
228 [Whether $2 is available])
229 ])
230 ],
231 [
232 m4_ifval([$4],
233 [
234 $4
235 ],
236 [
237 # $2 was not found in lib$1
238 # nothing to do here by default
239 true
240 ])
241 ])
242 ;;
243 esac
244 ])
245])
246
247# AC_CHECK_LIB_EXT(LIBRARY, [EXT_LIBS], [FUNCTION],
248# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
249# [ADD-ACTION-IF-FOUND],[OTHER-LIBRARIES])
250# ------------------------------------------------------
251#
252# Use a cache variable name containing both the library and function name,
253# because the test really is for library $1 defining function $3, not
254# just for library $1. Separate tests with the same $1 and different $3s
255# may have different results.
256#
257# Note that using directly AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$3])
258# is asking for trouble, since AC_CHECK_LIB($lib, fun) would give
259# ac_cv_lib_$lib_fun, which is definitely not what was meant. Hence
260# the AS_LITERAL_IF indirection.
261#
262# FIXME: This macro is extremely suspicious. It DEFINEs unconditionally,
263# whatever the FUNCTION, in addition to not being a *S macro. Note
264# that the cache does depend upon the function we are looking for.
265#
266# It is on purpose we used `ac_check_lib_ext_save_LIBS' and not just
267# `ac_save_LIBS': there are many macros which don't want to see `LIBS'
268# changed but still want to use AC_CHECK_LIB_EXT, so they save `LIBS'.
269# And ``ac_save_LIBS' is too tempting a name, so let's leave them some
270# freedom.
271AC_DEFUN([AC_CHECK_LIB_EXT],
272[
273AH_CHECK_LIB_EXT([$1])
274ac_check_lib_ext_save_LIBS=$LIBS
275LIBS="-l$1 $$2 $7 $LIBS"
276AS_LITERAL_IF([$1],
277 [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1])],
278 [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1''])])dnl
279
280m4_ifval([$3],
281 [
282 AH_CHECK_FUNC_EXT([$3])
283 AS_LITERAL_IF([$1],
284 [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1_$3])],
285 [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1''_$3])])dnl
286 AC_CACHE_CHECK([for $3 in -l$1], ac_Lib_func,
287 [AC_TRY_LINK_FUNC($3,
288 [AS_VAR_SET(ac_Lib_func, yes);
289 AS_VAR_SET(ac_Lib_ext, yes)],
290 [AS_VAR_SET(ac_Lib_func, no);
291 AS_VAR_SET(ac_Lib_ext, no)])
292 ])
293 AS_IF([test AS_VAR_GET(ac_Lib_func) = yes],
294 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$3))])dnl
295 AS_VAR_POPDEF([ac_Lib_func])dnl
296 ],[
297 AC_CACHE_CHECK([for -l$1], ac_Lib_ext,
298 [AC_TRY_LINK_FUNC([main],
299 [AS_VAR_SET(ac_Lib_ext, yes)],
300 [AS_VAR_SET(ac_Lib_ext, no)])
301 ])
302 ])
303LIBS=$ac_check_lib_ext_save_LIBS
304
305AS_IF([test AS_VAR_GET(ac_Lib_ext) = yes],
306 [m4_default([$4],
307 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1))
308 case "$$2" in
309 *-l$1*)
310 ;;
311 *)
312 $2="-l$1 $$2"
313 ;;
314 esac])
315 [$6]
316 ],
317 [$5])dnl
318AS_VAR_POPDEF([ac_Lib_ext])dnl
319])# AC_CHECK_LIB_EXT
320
321# AH_CHECK_LIB_EXT(LIBNAME)
322# ---------------------
323m4_define([AH_CHECK_LIB_EXT],
324[AH_TEMPLATE(AS_TR_CPP(HAVE_LIB$1),
325 [Define to 1 if you have the `]$1[' library (-l]$1[).])])
326
327# AC_CHECK_FUNCS_EXT(FUNCTION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
328# -----------------------------------------------------------------
329dnl check for a function in a $LIBS and $OTHER_LIBS libraries variable.
330dnl AC_CHECK_FUNC_EXT(func,OTHER_LIBS,IF-TRUE,IF-FALSE)
331AC_DEFUN([AC_CHECK_FUNC_EXT],
332[
333 AH_CHECK_FUNC_EXT($1)
334 ac_check_func_ext_save_LIBS=$LIBS
335 LIBS="$2 $LIBS"
336 AS_VAR_PUSHDEF([ac_var], [ac_cv_func_ext_$1])dnl
337 AC_CACHE_CHECK([for $1], ac_var,
338 [AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([$1])],
339 [AS_VAR_SET(ac_var, yes)],
340 [AS_VAR_SET(ac_var, no)])])
341 LIBS=$ac_check_func_ext_save_LIBS
342 AS_IF([test AS_VAR_GET(ac_var) = yes],
343 [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1])) $3],
344 [$4])dnl
345AS_VAR_POPDEF([ac_var])dnl
346])# AC_CHECK_FUNC_EXT
347
348# AH_CHECK_FUNC_EXT(FUNCNAME)
349# ---------------------
350m4_define([AH_CHECK_FUNC_EXT],
351[AH_TEMPLATE(AS_TR_CPP(HAVE_$1),
352 [Define to 1 if you have the `]$1[' function.])])
353
354dnl Define an AC_DEFINE with ifndef guard.
355dnl AC_N_DEFINE(VARIABLE [, VALUE])
356define(AC_N_DEFINE,
357[cat >> confdefs.h <<\EOF
358[#ifndef] $1
359[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
360[#endif]
361EOF
362])
363
364dnl Add an #include
365dnl AC_ADD_INCLUDE(VARIABLE)
366define(AC_ADD_INCLUDE,
367[cat >> confdefs.h <<\EOF
368[#include] $1
369EOF
370])
371
372dnl Copied from libtool.m4
373AC_DEFUN(AC_PROG_LD_GNU,
374[AC_CACHE_CHECK([if the linker used by compiler is GNU ld], ac_cv_prog_gnu_ld,
375[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
376if $CC -Wl,-v /dev/null 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
377 ac_cv_prog_gnu_ld=yes
378else
379 ac_cv_prog_gnu_ld=no
380fi])
381])
382
383dnl Removes -I/usr/include/? from given variable
384AC_DEFUN(CFLAGS_REMOVE_USR_INCLUDE,[
385 ac_new_flags=""
386 for i in [$]$1; do
387 case [$]i in
388 -I/usr/include|-I/usr/include/) ;;
389 *) ac_new_flags="[$]ac_new_flags [$]i" ;;
390 esac
391 done
392 $1=[$]ac_new_flags
393])
394
395dnl Removes '-L/usr/lib[/]', '-Wl,-rpath,/usr/lib[/]'
396dnl and '-Wl,-rpath -Wl,/usr/lib[/]' from given variable
397AC_DEFUN(LIB_REMOVE_USR_LIB,[
398 ac_new_flags=""
399 l=""
400 for i in [$]$1; do
401 case [$]l[$]i in
402 -L/usr/lib) ;;
403 -L/usr/lib/) ;;
404 -L/usr/lib64) ;;
405 -L/usr/lib64/) ;;
406 -Wl,-rpath,/usr/lib) l="";;
407 -Wl,-rpath,/usr/lib/) l="";;
408 -Wl,-rpath,/usr/lib64) l="";;
409 -Wl,-rpath,/usr/lib64/) l="";;
410 -Wl,-rpath) l=[$]i;;
411 -Wl,-rpath-Wl,/usr/lib) l="";;
412 -Wl,-rpath-Wl,/usr/lib/) l="";;
413 -Wl,-rpath-Wl,/usr/lib64) l="";;
414 -Wl,-rpath-Wl,/usr/lib64/) l="";;
415 *)
416 s=" "
417 if test x"[$]ac_new_flags" = x""; then
418 s="";
419 fi
420 if test x"[$]l" = x""; then
421 ac_new_flags="[$]ac_new_flags[$]s[$]i";
422 else
423 ac_new_flags="[$]ac_new_flags[$]s[$]l [$]i";
424 fi
425 l=""
426 ;;
427 esac
428 done
429 $1=[$]ac_new_flags
430])
431
432dnl From Bruno Haible.
433
434AC_DEFUN(jm_ICONV,
435[
436 dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
437 dnl those with the standalone portable libiconv installed).
438 AC_MSG_CHECKING(for iconv in $1)
439 jm_cv_func_iconv="no"
440 jm_cv_lib_iconv=""
441 jm_cv_giconv=no
442 jm_save_LIBS="$LIBS"
443
444 dnl Check for include in giconv.h but no lib needed
445 if test "$jm_cv_func_iconv" != yes; then
446 AC_TRY_LINK([#include <stdlib.h>
447#include <giconv.h>],
448 [iconv_t cd = iconv_open("","");
449 iconv(cd,NULL,NULL,NULL,NULL);
450 iconv_close(cd);],
451 jm_cv_func_iconv=yes
452 jm_cv_include="giconv.h"
453 jm_cv_giconv="yes"
454 jm_cv_lib_iconv="")
455
456 dnl Standard iconv.h include, lib in glibc or libc ...
457 if test "$jm_cv_func_iconv" != yes; then
458 AC_TRY_LINK([#include <stdlib.h>
459#include <iconv.h>],
460 [iconv_t cd = iconv_open("","");
461 iconv(cd,NULL,NULL,NULL,NULL);
462 iconv_close(cd);],
463 jm_cv_include="iconv.h"
464 jm_cv_func_iconv=yes
465 jm_cv_lib_iconv="")
466
467 dnl Include in giconv.h, libgiconv needed to link
468 if test "$jm_cv_func_iconv" != yes; then
469 jm_save_LIBS="$LIBS"
470 LIBS="$LIBS -lgiconv"
471 AC_TRY_LINK([#include <stdlib.h>
472#include <giconv.h>],
473 [iconv_t cd = iconv_open("","");
474 iconv(cd,NULL,NULL,NULL,NULL);
475 iconv_close(cd);],
476 jm_cv_lib_iconv=yes
477 jm_cv_func_iconv=yes
478 jm_cv_include="giconv.h"
479 jm_cv_giconv=yes
480 jm_cv_lib_iconv="giconv")
481
482 LIBS="$jm_save_LIBS"
483
484 dnl Include in iconv.h, libiconv needed to link
485 if test "$jm_cv_func_iconv" != yes; then
486 jm_save_LIBS="$LIBS"
487 LIBS="$LIBS -liconv"
488 AC_TRY_LINK([#include <stdlib.h>
489#include <iconv.h>],
490 [iconv_t cd = iconv_open("","");
491 iconv(cd,NULL,NULL,NULL,NULL);
492 iconv_close(cd);],
493 jm_cv_include="iconv.h"
494 jm_cv_func_iconv=yes
495 jm_cv_lib_iconv="iconv")
496 LIBS="$jm_save_LIBS"
497
498 dnl Include in biconv.h, libbiconv needed to link
499 if test "$jm_cv_func_iconv" != yes; then
500 jm_save_LIBS="$LIBS"
501 LIBS="$LIBS -lbiconv"
502 AC_TRY_LINK([#include <stdlib.h>
503#include <biconv.h>],
504 [iconv_t cd = iconv_open("","");
505 iconv(cd,NULL,NULL,NULL,NULL);
506 iconv_close(cd);],
507 jm_cv_lib_iconv=yes
508 jm_cv_func_iconv=yes
509 jm_cv_include="biconv.h"
510 jm_cv_biconv=yes
511 jm_cv_lib_iconv="biconv")
512
513 LIBS="$jm_save_LIBS"
514 fi
515 fi
516 fi
517 fi
518 fi
519 if test "$jm_cv_func_iconv" = yes; then
520 if test "$jm_cv_giconv" = yes; then
521 AC_DEFINE(HAVE_GICONV, 1, [What header to include for iconv() function: giconv.h])
522 AC_MSG_RESULT(yes)
523 ICONV_FOUND=yes
524 else
525 if test "$jm_cv_biconv" = yes; then
526 AC_DEFINE(HAVE_BICONV, 1, [What header to include for iconv() function: biconv.h])
527 AC_MSG_RESULT(yes)
528 ICONV_FOUND=yes
529 else
530 AC_DEFINE(HAVE_ICONV, 1, [What header to include for iconv() function: iconv.h])
531 AC_MSG_RESULT(yes)
532 ICONV_FOUND=yes
533 fi
534 fi
535 else
536 AC_MSG_RESULT(no)
537 fi
538])
539
540AC_DEFUN(rjs_CHARSET,[
541 dnl Find out if we can convert from $1 to UCS2-LE
542 AC_MSG_CHECKING([can we convert from $1 to UCS2-LE?])
543 AC_TRY_RUN([
544#include <$jm_cv_include>
545main(){
546 iconv_t cd = iconv_open("$1", "UCS-2LE");
547 if (cd == 0 || cd == (iconv_t)-1) {
548 return -1;
549 }
550 return 0;
551}
552 ],ICONV_CHARSET=$1,ICONV_CHARSET=no,ICONV_CHARSET=cross)
553 AC_MSG_RESULT($ICONV_CHARSET)
554])
555
556dnl AC_ENABLE_SHARED - implement the --enable-shared flag
557dnl Usage: AC_ENABLE_SHARED[(DEFAULT)]
558dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
559dnl `yes'.
560AC_DEFUN([AC_ENABLE_SHARED],
561[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
562AC_ARG_ENABLE(shared,
563changequote(<<, >>)dnl
564<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
565changequote([, ])dnl
566[p=${PACKAGE-default}
567case $enableval in
568yes) enable_shared=yes ;;
569no) enable_shared=no ;;
570*)
571 enable_shared=no
572 # Look at the argument we got. We use all the common list separators.
573 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
574 for pkg in $enableval; do
575 if test "X$pkg" = "X$p"; then
576 enable_shared=yes
577 fi
578
579 done
580 IFS="$ac_save_ifs"
581 ;;
582esac],
583enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
584])
585
586dnl AC_ENABLE_STATIC - implement the --enable-static flag
587dnl Usage: AC_ENABLE_STATIC[(DEFAULT)]
588dnl Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
589dnl `yes'.
590AC_DEFUN([AC_ENABLE_STATIC],
591[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
592AC_ARG_ENABLE(static,
593changequote(<<, >>)dnl
594<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
595changequote([, ])dnl
596[p=${PACKAGE-default}
597case $enableval in
598yes) enable_static=yes ;;
599no) enable_static=no ;;
600*)
601 enable_static=no
602 # Look at the argument we got. We use all the common list separators.
603 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
604 for pkg in $enableval; do
605 if test "X$pkg" = "X$p"; then
606 enable_static=yes
607 fi
608 done
609 IFS="$ac_save_ifs"
610 ;;
611esac],
612enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
613])
614
615dnl AC_DISABLE_STATIC - set the default static flag to --disable-static
616AC_DEFUN([AC_DISABLE_STATIC],
617[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
618AC_ENABLE_STATIC(no)])
619
620dnl AC_TRY_COMMAND_NO_STDERR - also fail if there is output on stderr
621AC_DEFUN( [AC_TRY_COMMAND_NO_STDERR],
622[
623 { OUT=`($1) 3>&AS_MESSAGE_LOG_FD 2>&1 1>&3`
624 RC=$?
625 echo "\$?=$RC" >&AS_MESSAGE_LOG_FD
626 if test x"$OUT" != x ; then
627 echo "stderr:" >&AS_MESSAGE_LOG_FD
628 echo "$OUT" >&AS_MESSAGE_LOG_FD
629 fi
630 test $RC -eq 0 -a x"$OUT" = x ; }
631])
632
633dnl AC_TRY_RUN_STRICT(PROGRAM,CFLAGS,CPPFLAGS,LDFLAGS,
634dnl [ACTION-IF-TRUE],[ACTION-IF-FALSE],
635dnl [ACTION-IF-CROSS-COMPILING = RUNTIME-ERROR])
636AC_DEFUN( [AC_TRY_RUN_STRICT],
637[
638 old_CFLAGS="$CFLAGS";
639 CFLAGS="$2";
640 export CFLAGS;
641 old_CPPFLAGS="$CPPFLAGS";
642 CPPFLAGS="$3";
643 export CPPFLAGS;
644 old_LDFLAGS="$LDFLAGS";
645 LDFLAGS="$4";
646 export LDFLAGS;
647 AC_TRY_RUN([$1],[$5],[$6],[$7])
648 CFLAGS="$old_CFLAGS";
649 old_CFLAGS="";
650 export CFLAGS;
651 CPPFLAGS="$old_CPPFLAGS";
652 old_CPPFLAGS="";
653 export CPPFLAGS;
654 LDFLAGS="$old_LDFLAGS";
655 old_LDFLAGS="";
656 export LDFLAGS;
657])
658
659dnl SMB_CHECK_SYSCONF(varname)
660dnl Tests whether the sysconf(3) variable "varname" is available.
661AC_DEFUN([SMB_CHECK_SYSCONF],
662[
663 AC_CACHE_CHECK([for sysconf($1)],
664 samba_cv_SYSCONF$1,
665 [
666 AC_TRY_LINK([#include <unistd.h>],
667 [ return sysconf($1) == -1 ? 1 : 0; ],
668 [ samba_cv_SYSCONF$1=yes ],
669 [ samba_cv_SYSCONF$1=no ])
670 ])
671
672 if test x"$samba_cv_SYSCONF$1" = x"yes" ; then
673 AC_DEFINE(SYSCONF$1, 1, [Whether sysconf($1) is available])
674 fi
675])
676
677dnl SMB_IS_LIBPTHREAD_LINKED([actions if true], [actions if false])
678dnl Test whether the current LIBS results in libpthread being present.
679dnl Execute the corresponding user action list.
680AC_DEFUN([SMB_IS_LIBPTHREAD_LINKED],
681[
682 AC_MSG_CHECKING(if libpthread is linked)
683 AC_TRY_LINK([],
684 [return pthread_create(0, 0, 0, 0);],
685 [
686 AC_MSG_RESULT(yes)
687 $1
688 ],
689 [
690 AC_MSG_RESULT(no)
691 $2
692 ])
693])
694
695dnl SMB_REMOVE_LIB(lib)
696dnl Remove the given library from $LIBS
697AC_DEFUN([SMB_REMOVE_LIB],
698[
699 LIBS=`echo $LIBS | sed '-es/-l$1//g'`
700])
701
702dnl SMB_CHECK_DMAPI([actions if true], [actions if false])
703dnl Check whether DMAPI is available and is a version that we know
704dnl how to deal with. The default truth action is to set samba_dmapi_libs
705dnl to the list of necessary libraries, and to define USE_DMAPI.
706AC_DEFUN([SMB_CHECK_DMAPI],
707[
708 samba_dmapi_libs=""
709
710 if test x"$samba_dmapi_libs" = x"" ; then
711 AC_CHECK_LIB(dm, dm_get_eventlist,
712 [ samba_dmapi_libs="-ldm"], [])
713 fi
714
715 if test x"$samba_dmapi_libs" = x"" ; then
716 AC_CHECK_LIB(jfsdm, dm_get_eventlist,
717 [samba_dmapi_libs="-ljfsdm"], [])
718 fi
719
720 if test x"$samba_dmapi_libs" = x"" ; then
721 AC_CHECK_LIB(dmapi, dm_get_eventlist,
722 [samba_dmapi_libs="-ldmapi"], [])
723 fi
724
725 if test x"$samba_dmapi_libs" = x"" ; then
726 AC_CHECK_LIB(xdsm, dm_get_eventlist,
727 [samba_dmapi_libs="-lxdsm"], [])
728 fi
729
730
731 # Only bother to test ehaders if we have a candidate DMAPI library
732 if test x"$samba_dmapi_libs" != x"" ; then
733 AC_CHECK_HEADERS(sys/dmi.h xfs/dmapi.h sys/jfsdmapi.h sys/dmapi.h dmapi.h)
734 fi
735
736 if test x"$samba_dmapi_libs" != x"" ; then
737 samba_dmapi_save_LIBS="$LIBS"
738 LIBS="$LIBS $samba_dmapi_libs"
739 AC_TRY_LINK(
740 [
741#include <time.h> /* needed by Tru64 */
742#include <sys/types.h> /* needed by AIX */
743#ifdef HAVE_XFS_DMAPI_H
744#include <xfs/dmapi.h>
745#elif defined(HAVE_SYS_DMI_H)
746#include <sys/dmi.h>
747#elif defined(HAVE_SYS_JFSDMAPI_H)
748#include <sys/jfsdmapi.h>
749#elif defined(HAVE_SYS_DMAPI_H)
750#include <sys/dmapi.h>
751#elif defined(HAVE_DMAPI_H)
752#include <dmapi.h>
753#endif
754 ],
755 [
756/* This link test is designed to fail on IRI 6.4, but should
757 * succeed on Linux, IRIX 6.5 and AIX.
758 */
759 char * version;
760 dm_eventset_t events;
761 /* This doesn't take an argument on IRIX 6.4. */
762 dm_init_service(&version);
763 /* IRIX 6.4 expects events to be a pointer. */
764 DMEV_ISSET(DM_EVENT_READ, events);
765 ],
766 [
767 true # DMAPI link test succeeded
768 ],
769 [
770 # DMAPI link failure
771 samba_dmapi_libs=
772 ])
773 LIBS="$samba_dmapi_save_LIBS"
774 fi
775
776 if test x"$samba_dmapi_libs" = x"" ; then
777 # DMAPI detection failure actions begin
778 ifelse($2, [],
779 [
780 AC_ERROR(Failed to detect a supported DMAPI implementation)
781 ],
782 [
783 $2
784 ])
785 # DMAPI detection failure actions end
786 else
787 # DMAPI detection success actions start
788 ifelse($1, [],
789 [
790 AC_DEFINE(USE_DMAPI, 1,
791 [Whether we should build DMAPI integration components])
792 AC_MSG_NOTICE(Found DMAPI support in $samba_dmapi_libs)
793 ],
794 [
795 $1
796 ])
797 # DMAPI detection success actions end
798 fi
799
800])
801
802dnl SMB_IF_RTSIGNAL_BUG([actions if true],
803dnl [actions if false],
804dnl [actions if cross compiling])
805dnl Test whether we can call sigaction with RT_SIGNAL_NOTIFY and
806dnl RT_SIGNAL_LEASE (also RT_SIGNAL_AIO for good measure, though
807dnl I don't believe that triggers any bug.
808dnl
809dnl See the samba-technical thread titled "Failed to setup
810dnl RT_SIGNAL_NOTIFY handler" for details on the bug in question.
811AC_DEFUN([SMB_IF_RTSIGNAL_BUG],
812[
813 rt_signal_notify_works=yes
814 rt_signal_lease_works=yes
815 rt_signal_aio_works=yes
816
817 AC_MSG_CHECKING(if sigaction works with realtime signals)
818 AC_TRY_RUN(
819 [
820#include <sys/types.h>
821#include <fcntl.h>
822#include <signal.h>
823
824#ifndef SIGRTMIN
825#define SIGRTMIN NSIG
826#endif
827/* from smbd/notify_kernel.c */
828#ifndef RT_SIGNAL_NOTIFY
829#define RT_SIGNAL_NOTIFY (SIGRTMIN+2)
830#endif
831
832/* from smbd/aio.c */
833#ifndef RT_SIGNAL_AIO
834#define RT_SIGNAL_AIO (SIGRTMIN+3)
835#endif
836
837/* from smbd/oplock_linux.c */
838#ifndef RT_SIGNAL_LEASE
839#define RT_SIGNAL_LEASE (SIGRTMIN+1)
840#endif
841
842static void signal_handler(int sig, siginfo_t *info, void *unused)
843{
844 int do_nothing = 0;
845}
846
847int main(void)
848{
849 int result = 0;
850 struct sigaction act = {0};
851
852 act.sa_sigaction = signal_handler;
853 act.sa_flags = SA_SIGINFO;
854 sigemptyset( &act.sa_mask );
855
856 if (sigaction(RT_SIGNAL_LEASE, &act, 0) != 0) {
857 /* Failed to setup RT_SIGNAL_LEASE handler */
858 result += 1;
859 }
860
861 if (sigaction(RT_SIGNAL_NOTIFY, &act, 0) != 0) {
862 /* Failed to setup RT_SIGNAL_NOTIFY handler */
863 result += 10;
864 }
865
866 if (sigaction(RT_SIGNAL_AIO, &act, 0) != 0) {
867 /* Failed to setup RT_SIGNAL_AIO handler */
868 result += 100;
869 }
870
871 /* zero on success */
872 return result;
873}
874 ],
875 [
876 AC_MSG_RESULT(yes)
877 $2
878 ],
879 [
880 AC_MSG_RESULT(no)
881 case "$ac_status" in
882 1|11|101|111) rt_signal_lease_ok=no ;;
883 esac
884 case "$ac_status" in
885 10|11|110|111) rt_signal_notify_ok=no ;;
886 esac
887 case "$ac_status" in
888 100|110|101|111) rt_signal_aio_ok=no ;;
889 esac
890 $2
891 ],
892 [
893 AC_MSG_RESULT(cross)
894 $3
895 ])
896])
897
898m4_include(../lib/replace/libreplace.m4)
Note: See TracBrowser for help on using the repository browser.