1 dnl Checks for programs.
2 dnl Unique-to-Samba variables we'll be playing with.
13 # Config CPPFLAG settings for strange OS's that must be set
17 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
20 # mmap on HPUX is completely broken...
21 AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
22 if test $ac_cv_prog_cc_Ae = yes; then
23 CPPFLAGS="$CPPFLAGS -Ae"
27 # VOS may need to have POSIX support and System V compatibility enabled.
34 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
35 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
39 *-D_SYSV*|*-D_SVID_SOURCE*)
42 CPPFLAGS="$CPPFLAGS -D_SYSV"
43 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
53 AC_CHECK_HEADERS(sys/select.h fcntl.h sys/fcntl.h sys/time.h stdarg.h)
54 AC_CHECK_HEADERS(utime.h grp.h sys/id.h limits.h compat.h math.h)
55 AC_CHECK_HEADERS(ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/mode.h)
56 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
57 AC_CHECK_HEADERS(sys/fs/s5param.h sys/filsys.h termios.h termio.h)
58 AC_CHECK_HEADERS(fnmatch.h pwd.h sys/termio.h sys/time.h)
59 AC_CHECK_HEADERS(locale.h shadow.h)
60 AC_CHECK_HEADERS(nss.h nss_common.h ns_api.h sys/security.h)
61 AC_CHECK_HEADERS(sys/acl.h)
63 AC_CHECK_HEADERS(sys/capability.h)
74 AC_CHECK_TYPE(ino_t,unsigned)
75 AC_CHECK_TYPE(loff_t,off_t)
76 AC_CHECK_TYPE(offset_t,loff_t)
77 AC_CHECK_TYPES(long long)
80 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
82 #include <sys/types.h>
87 #include <signal.h>],[sig_atomic_t i = 0],
88 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
89 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
90 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
95 AC_CHECK_FUNCS(setsid pipe crypt16 getauthuid)
96 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction)
97 AC_CHECK_FUNCS(setgroups sysconf getpwanam srandom random srand rand usleep)
98 AC_CHECK_FUNCS(backtrace setbuffer)
101 # Assume non-shared by default and override below
104 # these are the defaults, good for lots of systems
114 AC_MSG_CHECKING([ability to build shared libraries])
116 # and these are for particular systems
118 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
121 DYNEXP="-Wl,--export-dynamic"
123 SONAMEFLAG="-Wl,-soname="
124 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
126 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
129 if test "${GCC}" = "yes"; then
131 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
136 ## ${CFLAGS} added for building 64-bit shared
137 ## libs using Sun's Compiler
138 LDSHFLAGS="-G \${CFLAGS}"
141 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
143 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
146 PICFLAG="-KPIC" # Is this correct for SunOS
147 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
149 *netbsd* | *freebsd*) BLDSHARED="true"
151 DYNEXP="-Wl,--export-dynamic"
152 PICFLAG="-fPIC -DPIC"
153 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
155 *openbsd*) BLDSHARED="true"
157 DYNEXP="-Wl,-Bdynamic"
159 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
161 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
162 ATTEMPT_WRAP32_BUILD=yes
164 LDSHFLAGS="-set_version sgi1.0 -shared"
165 SONAMEFLAG="-soname "
167 if test "${GCC}" = "yes"; then
172 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
174 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
176 LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
177 DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
179 if test "${GCC}" != "yes"; then
180 ## for funky AIX compiler using strncpy()
181 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
184 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
186 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
188 # Use special PIC flags for the native HP-UX compiler.
189 if test $ac_cv_prog_cc_Ae = yes; then
192 LDSHFLAGS="-B symbolic -b -z"
197 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
199 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
200 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
202 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
205 SONAMEFLAG="-Wl,-soname,"
207 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
209 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
210 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
212 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
215 SONAMEFLAG="-Wl,-soname,"
217 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
219 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
220 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
222 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
223 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
225 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
227 *-univel-*) if [ test "$GCC" != yes ]; then
228 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
233 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
235 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
238 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
239 if [ test "$GCC" != yes ]; then
240 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
243 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
249 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
254 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
257 AC_MSG_RESULT($BLDSHARED)
258 AC_MSG_CHECKING([linker flags for shared libraries])
259 AC_MSG_RESULT([$LDSHFLAGS])
260 AC_MSG_CHECKING([compiler flags for position-independent code])
261 AC_MSG_RESULT([$PICFLAGS])
263 #######################################################
264 # test whether building a shared library actually works
265 if test $BLDSHARED = true; then
266 AC_CACHE_CHECK([whether building shared libraries actually works],
267 [ac_cv_shlib_works],[
269 # try building a trivial shared library
270 if test "$PICSUFFIX" = "po"; then
271 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.po ${srcdir-.}/build/tests/shlib.c &&
272 $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o shlib.so shlib.po &&
273 ac_cv_shlib_works=yes
275 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o shlib.$PICSUFFIX ${srcdir-.}/build/tests/shlib.c &&
276 mv shlib.$PICSUFFIX shlib.po &&
277 $CC $CPPFLAGS $CFLAGS `eval echo $LDSHFLAGS` -o shlib.so shlib.po &&
278 ac_cv_shlib_works=yes
280 rm -f shlib.so shlib.po
282 if test $ac_cv_shlib_works = no; then
287 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
289 #include <sys/types.h>
292 #define F_GETLEASE 1025
295 int fd = open("/dev/null", O_RDONLY);
296 return fcntl(fd, F_GETLEASE, 0) == -1;
299 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
300 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
301 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
304 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
306 #include <sys/types.h>
310 #define F_NOTIFY 1026
313 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
316 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
317 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
318 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
321 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
323 #include <sys/types.h>
326 #include <sys/file.h>
332 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
335 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
336 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
337 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
340 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
341 AC_TRY_COMPILE([#include <sys/types.h>
343 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
344 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
345 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
346 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
350 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
351 AC_TRY_RUN([#include "${srcdir-.}/build/tests/ftruncate.c"],
352 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
353 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
354 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
357 AC_CACHE_CHECK([for sysconf(_SC_NGROUPS_MAX)],samba_cv_SYSCONF_SC_NGROUPS_MAX,[
358 AC_TRY_RUN([#include <unistd.h>
359 main() { exit(sysconf(_SC_NGROUPS_MAX) == -1 ? 1 : 0); }],
360 samba_cv_SYSCONF_SC_NGROUPS_MAX=yes,samba_cv_SYSCONF_SC_NGROUPS_MAX=no,samba_cv_SYSCONF_SC_NGROUPS_MAX=cross)])
361 if test x"$samba_cv_SYSCONF_SC_NGROUPS_MAX" = x"yes"; then
362 AC_DEFINE(SYSCONF_SC_NGROUPS_MAX,1,[Whether sysconf(_SC_NGROUPS_MAX) is available])
365 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
366 AC_TRY_RUN([#include "${srcdir-.}/build/tests/shared_mmap.c"],
367 samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
368 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
369 AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
374 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
376 #ifdef HAVE_SYS_VFS_H
379 #ifdef HAVE_SYS_CAPABILITY_H
380 #include <sys/capability.h>
383 samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
384 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
385 AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
390 AC_CACHE_CHECK([for O_DIRECT flag to open(2)],samba_cv_HAVE_OPEN_O_DIRECT,[
396 [int fd = open("/dev/null", O_DIRECT);],
397 samba_cv_HAVE_OPEN_O_DIRECT=yes,samba_cv_HAVE_OPEN_O_DIRECT=no)])
398 if test x"$samba_cv_HAVE_OPEN_O_DIRECT" = x"yes"; then
399 AC_DEFINE(HAVE_OPEN_O_DIRECT,1,[Whether the open(2) accepts O_DIRECT])