Writing metadata xattr on directories with sticky bit set, FR#94
[netatalk.git] / macros / cnid-backend.m4
1 AC_DEFUN([AC_NETATALK_CNID], [
2     dnl Don't use BDB unless it's needed
3     bdb_required=no
4     compiled_backends=""
5
6     dnl Determine whether or not to use Database Daemon CNID backend
7     AC_MSG_CHECKING([whether or not to use Database Daemon CNID backend])
8     AC_ARG_WITH(cnid-dbd-backend,
9     [  --with-cnid-dbd-backend       build CNID with Database Daemon Data Store [[yes]]],
10     [   if test x"$withval" = x"no"; then
11             use_dbd_backend=no
12             AC_MSG_RESULT([no])
13         else
14             use_dbd_backend=yes
15             AC_MSG_RESULT([yes])
16         fi
17     ],[
18         use_dbd_backend=yes
19         AC_MSG_RESULT([yes])
20     ])
21
22     if test $use_dbd_backend = yes; then
23         compiled_backends="$compiled_backends dbd"
24         AC_DEFINE(CNID_BACKEND_DBD, 1, [Define if CNID Database Daemon backend should be compiled.])
25         if test x"$DEFAULT_CNID_SCHEME" = x; then
26             DEFAULT_CNID_SCHEME=dbd
27         fi
28         bdb_required=yes
29     fi
30     AM_CONDITIONAL(BUILD_DBD_DAEMON, test x"$use_dbd_backend" = x"yes")
31
32     dnl Determine whether or not to use BDB Concurrent Data Store
33     AC_MSG_CHECKING([whether or not to use BDB Concurrent Data Store])
34     AC_ARG_WITH(cnid-cdb-backend,
35         [  --with-cnid-cdb-backend      build CNID with Concurrent BDB Data Store  [[no]]],[
36             if test x"$withval" = x"no"; then
37                 use_cdb_backend=no
38         else
39             use_cdb_backend=yes
40         fi
41     ],[
42         use_cdb_backend=no
43     ])
44
45
46     if test $use_cdb_backend = yes; then
47         AC_MSG_RESULT([yes])
48         AC_DEFINE(CNID_BACKEND_CDB, 1, [Define if CNID Concurrent BDB backend should be compiled.])         
49         if test x"$DEFAULT_CNID_SCHEME" = x; then
50             DEFAULT_CNID_SCHEME=cdb
51         fi
52         bdb_required=yes
53         compiled_backends="$compiled_backends cdb"
54     else
55         AC_MSG_RESULT([no])
56     fi
57     AM_CONDITIONAL(USE_CDB_BACKEND, test x"$use_cdb_backend" = x"yes")
58
59     dnl Determine whether or not to use LAST DID scheme
60     AC_MSG_CHECKING([whether or not to use LAST DID scheme])
61     AC_ARG_WITH(cnid-last-backend,
62         [  --with-cnid-last-backend     build LAST CNID scheme                     [[yes]]],
63         [
64         if test x"$withval" = x"no"; then
65             use_last_backend=no
66         else
67             use_last_backend=yes
68         fi
69     ],[
70         use_last_backend=yes
71     ])
72
73     if test $use_last_backend = yes; then
74         AC_MSG_RESULT([yes])
75         AC_DEFINE(CNID_BACKEND_LAST, 1, [Define if CNID LAST scheme backend should be compiled.])
76         if test x"$DEFAULT_CNID_SCHEME" = x; then
77             DEFAULT_CNID_SCHEME=last
78         fi
79         compiled_backends="$compiled_backends last"
80     else
81         AC_MSG_RESULT([no])
82     fi
83     AM_CONDITIONAL(USE_LAST_BACKEND, test x"$use_last_backend" = x"yes")
84
85     dnl Determine whether or not to use TDB DID scheme
86     AC_MSG_CHECKING([whether or not to use TDB DID scheme])
87     AC_ARG_WITH(cnid-tdb-backend,
88         [  --with-cnid-tdb-backend      build TDB CNID scheme                      [[yes]]],
89     [
90         if test x"$withval" = x"no"; then
91             use_tdb_backend=no
92         else
93             use_tdb_backend=yes
94         fi
95     ],[
96         use_tdb_backend=yes
97     ])
98
99     if test $use_tdb_backend = yes; then
100         AC_MSG_RESULT([yes])
101         AC_DEFINE(CNID_BACKEND_TDB, 1, [Define if CNID TDB scheme backend should be compiled.])
102         if test x"$DEFAULT_CNID_SCHEME" = x; then
103             DEFAULT_CNID_SCHEME=tdb
104         fi
105         compiled_backends="$compiled_backends tdb"
106     else
107         AC_MSG_RESULT([no])
108     fi
109     AM_CONDITIONAL(USE_TDB_BACKEND, test x"$use_tdb_backend" = x"yes")
110
111     dnl Check for mysql CNID backend
112     AC_ARG_VAR(MYSQL_CFLAGS, [C compiler flags for MySQL, overriding checks])
113     AC_ARG_VAR(MYSQL_LIBS, [linker flags for MySQL, overriding checks])
114
115     AC_MSG_CHECKING([MySQL library and headers])
116     AC_ARG_WITH(
117         mysql-config,
118         [AS_HELP_STRING([--with-mysql-config=PATH],[Path to mysql-config binary (default: mysql_config)])],
119         MYSQL_CONFIG=$withval
120     )
121
122     if test -z "$MYSQL_CONFIG" -a -z "$MYSQL_CFLAGS" -a -z "$MYSQL_LIBS" ; then
123         AC_PATH_PROG(MYSQL_CONFIG, mysql_config)
124     fi
125
126     if test -x "$MYSQL_CONFIG" ; then
127         AC_MSG_RESULT([$MYSQL_CONFIG])
128         MYSQL_CFLAGS="`$MYSQL_CONFIG --cflags`"
129         MYSQL_LIBS="`$MYSQL_CONFIG --libs`"
130         ac_cv_with_cnid_mysql="yes"
131     elif test -n "$MYSQL_CFLAGS" -a -n "$MYSQL_LIBS" ; then
132         ac_cv_with_cnid_mysql="yes"
133     fi
134
135     if test x"$ac_cv_with_cnid_mysql" = x"yes" ; then
136         compiled_backends="$compiled_backends mysql"
137         AC_DEFINE(CNID_BACKEND_MYSQL, 1, [whether the MySQL CNID module is available])
138     fi
139
140     AC_SUBST(MYSQL_CFLAGS)
141     AC_SUBST(MYSQL_LIBS)
142     AM_CONDITIONAL(USE_MYSQL_BACKEND, test x"$ac_cv_with_cnid_mysql" = x"yes")
143
144     dnl Set default DID scheme
145     AC_MSG_CHECKING([default DID scheme])
146     AC_ARG_WITH(cnid-default-backend,
147         [  --with-cnid-default-backend=val      set default DID scheme [[dbd]]],
148     [
149         if test x"$withval" = x; then
150             AC_MSG_RESULT([ignored])
151         else
152             DEFAULT_CNID_SCHEME=$withval
153             AC_MSG_RESULT($DEFAULT_CNID_SCHEME)
154         fi
155     ],[
156         AC_MSG_RESULT($DEFAULT_CNID_SCHEME)
157     ])
158
159     if test x"$DEFAULT_CNID_SCHEME" = x; then
160         AC_MSG_ERROR([No DID schemes compiled in ])
161     fi
162
163     AC_MSG_CHECKING([whether default CNID scheme has been activated])
164     found_scheme=no
165     for scheme in $compiled_backends ; do
166         if test x"$scheme" = x"$DEFAULT_CNID_SCHEME"; then      
167             found_scheme=yes
168         fi
169     done
170     if test x"$found_scheme" = x"no"; then
171         AC_MSG_RESULT([no])
172         AC_MSG_ERROR([Specified default CNID scheme $DEFAULT_CNID_SCHEME was not selected for compilation])
173     else
174         AC_MSG_RESULT([yes])
175     fi
176
177     AC_DEFINE_UNQUOTED(DEFAULT_CNID_SCHEME, "$DEFAULT_CNID_SCHEME", [Default CNID scheme to be used])
178     AC_SUBST(DEFAULT_CNID_SCHEME)
179     AC_SUBST(compiled_backends)
180
181     if test "x$bdb_required" = "xyes"; then
182         ifelse([$1], , :, [$1])
183     else
184         ifelse([$2], , :, [$2])     
185     fi
186 ])