Add common/system_freebsd.c
[samba.git] / ctdb / configure.ac
1 AC_PREREQ(2.50)
2 AC_INIT(ctdb, m4_esyscmd([grep 'Version:' ./packaging/RPM/ctdb.spec 2>/dev/null | head -1 | sed -e 's/[ \t]*Version:[ \t]*\([^ \t]*\)[ \t]*.*/\1/' | tr -d '\n']))
3 AC_DEFUN([SMB_MODULE_DEFAULT], [echo -n ""])
4 AC_DEFUN([SMB_LIBRARY_ENABLE], [echo -n ""])
5 AC_DEFUN([SMB_EXT_LIB], [echo -n ""])
6 AC_DEFUN([SMB_ENABLE], [echo -n ""])
7 AC_CONFIG_SRCDIR([server/ctdbd.c])
8
9 if test "${libdir}" = '${exec_prefix}/lib'; then
10   case `uname -m` in
11     x86_64|ppc64|powerpc64)
12       libdir='${exec_prefix}/lib64'
13       ;;
14     *)
15       libdir='${exec_prefix}/lib'
16       ;;
17   esac
18 fi
19
20 case `uname` in
21   Linux*)
22     CTDB_SYSTEM_OBJ=common/system_linux.o
23     CTDB_SCSI_IO=bin/scsi_io
24     CTDB_PCAP_LDFLAGS=
25     ;;
26   AIX*)
27     CTDB_SYSTEM_OBJ=common/system_aix.o
28     CTDB_SCSI_IO=
29     CTDB_PCAP_LDFLAGS=-lpcap
30     ;;
31   GNU/kFreeBSD)
32     CTDB_SYSTEM_OBJ=common/system_kfreebsd.o
33     CTDB_SCSI_IO=
34     CTDB_PCAP_LDFLAGS=-lpcap
35     ;;
36   FreeBSD)
37     CTDB_SYSTEM_OBJ=common/system_freebsd.o
38     CTDB_SCSI_IO=
39     CTDB_PCAP_LDFLAGS=-lpcap
40     LDFLAGS="$LDFLAGS -L/usr/local/lib -lexecinfo"
41     AC_SUBST(LDFLAGS)
42     CPPFLAGS="$CPPFLAGS -L/usr/local/include -D_FREEBSD_=1"
43     AC_SUBST(CPPFLAGS)
44     ;;
45   GNU)
46     CTDB_SYSTEM_OBJ=common/system_gnu.o
47     CTDB_SCSI_IO=
48     CTDB_PCAP_LDFLAGS=-lpcap
49     ;;
50   *)
51     echo unknown system  cant configure
52     exit
53     ;;
54 esac
55
56 AC_LIBREPLACE_ALL_CHECKS
57 AC_LIBREPLACE_NETWORK_CHECKS
58
59 if test "$ac_cv_prog_gcc" = yes; then
60    CFLAGS="$CFLAGS -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings"
61 fi
62
63 LOGDIR='${localstatedir}/log'
64 AC_ARG_WITH([logdir],
65         [  --with-logdir=DIR       path to log directory [[LOCALSTATEDIR/log]]],
66         LOGDIR=$withval)
67 if test ! -z "$LOGDIR"; then
68   if test "$LOGDIR" = "yes" -o "$LOGDIR" = "no"; then
69     AC_MSG_ERROR([--with-logdir must specify a path])
70   fi
71 fi
72 AC_SUBST(LOGDIR)
73
74 AC_CONFIG_HEADER(config.h)
75
76 EXTRA_OBJ=""
77
78 m4_include(libpopt.m4)
79 m4_include(libtalloc.m4)
80 m4_include(libtdb.m4)
81 m4_include(libtevent.m4)
82 m4_include(ib/config.m4)
83 m4_include(lib/util/signal.m4)
84 m4_include(lib/util/fault.m4)
85 m4_include(lib/socket_wrapper/config.m4)
86
87 AC_CHECK_HEADERS(sched.h)
88 AC_CHECK_HEADERS(pcp/pmapi.h pcp/impl.h pcp/pmda.h, [], [],
89 [[#ifdef HAVE_PCP_PMAPI_H
90 # include <pcp/pmapi.h>
91 #endif
92 #ifdef HAVE_PCP_IMPL_H
93 # include <pcp/impl.h>
94 #endif
95 ]])
96
97 AC_CHECK_DECL([ETIME], [],[AC_DEFINE([ETIME], ETIMEDOUT, [ETIME on non-supporting platforms])], [
98 #include <errno.h>
99 ])
100
101 AC_CHECK_FUNCS(sched_setscheduler)
102 AC_CHECK_FUNCS(mlockall)
103
104 AC_CACHE_CHECK([for sin_len in sock],ctdb_cv_HAVE_SOCK_SIN_LEN,[
105 AC_TRY_COMPILE([#include <sys/types.h>
106 #include <sys/socket.h>
107 #include <netinet/in.h>],
108 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
109 ctdb_cv_HAVE_SOCK_SIN_LEN=yes,ctdb_cv_HAVE_SOCK_SIN_LEN=no)])
110 if test x"$ctdb_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
111     AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
112 fi
113
114 if test x"$ac_cv_header_pcp_pmda_h" = x"yes"; then
115     CTDB_PMDA=bin/pmdactdb
116     CTDB_PMDA_INSTALL=install_pmda
117 else
118     CTDB_PMDA=
119     CTDB_PMDA_INSTALL=
120 fi
121
122
123 AC_SUBST(EXTRA_OBJ)
124 AC_SUBST(CTDB_SYSTEM_OBJ)
125 AC_SUBST(CTDB_SCSI_IO)
126 AC_SUBST(CTDB_PCAP_LDFLAGS)
127 AC_SUBST(CTDB_PMDA)
128 AC_SUBST(CTDB_PMDA_INSTALL)
129
130 AC_OUTPUT(Makefile ctdb.pc)