Add some PidTag* mapping involved with Recipients and RecipientRow
[OpenChange-git-clone.git] / configure.ac
blob4b3bdfd1a60ab9688e893937f02125e4b477f058
1 # Simple configuration script for OpenChange
2 # Written by Jelmer Vernooij <jelmer@openchange.org>
4 AC_PREREQ(2.57)
5 AC_INIT(openchange, 0.8, [openchange@openchange.org])
6 AC_CONFIG_HEADER([config.h])
7 AM_INIT_AUTOMAKE
8 AC_DEFINE(_GNU_SOURCE, 1, [Use GNU extensions])
10 PKG_PROG_PKG_CONFIG([0.20])
12 dnl #################################################################
13 dnl Check for OS dependent options
14 dnl #################################################################
15 AC_CANONICAL_HOST
17 case "${host}" in
18      *freebsd*) BUILD_FOR_FREEBSD=yes ;;
19 esac
22 # OC_CHECK_SAMBA_PATH([PATH],[action-if-found],[action-if-not-found])
23 # -------------------------------------------------------------------
24 AC_DEFUN([OC_CHECK_SAMBA_PATH],
26         old_PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
27         PKG_CONFIG_PATH="$1/lib/pkgconfig"
28         export PKG_CONFIG_PATH
29         PKG_CHECK_EXISTS([samba-hostconfig], [found=1], [found=0])
30         PKG_CONFIG_PATH="$old_PKG_CONFIG_PATH"
31         if test $found = 1; then
32                 ifelse([$2],[], [echo -n ], [$2])
33                 ifelse([$3],[],[],[else
34         [$3]])
35         fi
38 AC_MSG_CHECKING([for samba 4])
40 AC_ARG_WITH(samba, 
41 [AC_HELP_STRING([--with-samba], [Override location Samba is installed])],
42
43  sambaprefix="$withval"
44 ],[
45  for p in "$prefix" /usr/local/samba /usr/local /usr
46  do
47          OC_CHECK_SAMBA_PATH($p, [sambaprefix="$p"])
48  done
50 AC_SUBST(sambaprefix)
51 OC_CHECK_SAMBA_PATH($sambaprefix,[], AC_MSG_ERROR(Samba 4 not found))
52 AC_MSG_RESULT($sambaprefix)
53 PKG_CONFIG_PATH="$sambaprefix/lib/pkgconfig:$PKG_CONFIG_PATH"
54 PATH="$sambaprefix/bin:$PATH"
57 # OC_SETVAL([NAME])
58 # -----------------
59 AC_DEFUN([OC_SETVAL],
61 AC_ARG_VAR([NAME], [var name])
62 if test x"$enable_$1" = x""; then
63    enable_$1="no"
64 fi[]
68 # OC_CHECK_SAMBA_VERSION([RELEASE],[VERSION], [action-if-found],[action-if-not-found],
69 #                                             [action-if-cross-compiling])
70 # ------------------------------------------------------------------------------------
71 AC_DEFUN([OC_CHECK_SAMBA_VERSION], [
72 AC_RUN_IFELSE([AC_LANG_SOURCE([[
73 #include <samba/version.h>
74 int main() { if (!strcmp(SAMBA_VERSION_STRING, "$1") || !strcmp(SAMBA_VERSION_STRING, "$2")) {return 0; } else { return -1;} }
75 ]])],[$3],[
76         ifelse([$4],[],[AC_MSG_WARN([The Samba4 version installed on your system doesn't meet OpenChange requirements ($1 or $2).])],[$4])],[$5])
80 # OC_RULE_ADD([NAME], [TYPE])
81 # ---------------------------
82 AC_DEFUN([OC_RULE_ADD], 
83
84 AC_ARG_VAR([NAME], [rule name])
85 AC_ARG_VAR([TYPE], [rule type])
86 if test "x$1_set" != "xset"; then
87    case "$2" in
88         LIBS)
89                 OC_$2+=" $1"
90                 OC_$2_INSTALL+=" $1-install"
91                 OC_$2_UNINSTALL+=" $1-uninstall"
92                 OC_$2_INSTALLPC+=" $1-installpc"
93                 OC_$2_INSTALLHEADER+=" $1-installheader"
94                 OC_$2_INSTALLLIB+=" $1-installlib"
96                 AC_SUBST(OC_$2_INSTALLPC)
97                 AC_SUBST(OC_$2_INSTALLHEADER)
98                 AC_SUBST(OC_$2_INSTALLLIB)
99         ;;
100         TOOLS|TORTURE)
101                 OC_$2+=" $1"
102                 OC_$2_INSTALL+=" $1-install"
103                 OC_$2_UNINSTALL+=" $1-uninstall"
104         ;;
105         SERVER|MAPISTORE)
106                 OC_$2+=" $1"
107                 OC_$2_CLEAN+="$1-clean"
108                 OC_$2_INSTALL+=" $1-install"
109                 OC_$2_UNINSTALL+=" $1-uninstall"
110         ;;
111    esac
113    AC_SUBST(OC_$2)
114    AC_SUBST(OC_$2_CLEAN)
115    AC_SUBST(OC_$2_INSTALL)
116    AC_SUBST(OC_$2_UNINSTALL)
118    enable_$1="yes"
120 fi[]
123 dnl ###########################################################################
124 dnl FreeBSD installs some libraries such as libpopt in the non default
125 dnl search path /usr/local/{include,lib}. This nasty hack ensures
126 dnl configure.ac will find the library if available and additional
127 dnl flags be correctly added while compiling.
128 dnl ###########################################################################
129 if test x"$BUILD_FOR_FREEBSD" = x"yes"; then
130    CFLAGS+=" -I/usr/local/include"
131    LDFLAGS+=" -L/usr/local/lib"
134 dnl ----------------------------------------------------------------------------
135 dnl Check for comparison_fn_t
136 dnl ----------------------------------------------------------------------------
137 AC_CHECK_TYPE(comparison_fn_t, 
138 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
141 dnl ###########################################################################
142 dnl libmapi and required dependencies
143 dnl ###########################################################################
145 dnl ---------------------------------------------------------------------------
146 dnl Check for CC
147 dnl ---------------------------------------------------------------------------
148 AC_PROG_CC
150 dnl ---------------------------------------------------------------------------
151 dnl Check for install
152 dnl ---------------------------------------------------------------------------
153 AC_PROG_INSTALL
155 dnl ---------------------------------------------------------------------------
156 dnl Check for Perl
157 dnl ---------------------------------------------------------------------------
158 . `dirname $0`/VERSION
159 AC_SUBST(OPENCHANGE_VERSION_IS_SVN_SNAPSHOT)
161 AC_PATH_PROG(PERL, perl)
163 if test x"$PERL" = x""; then
164    AC_MSG_WARN([No version of perl was found!])
165    AC_MSG_ERROR([Please install perl http://www.perl.com])
167 AC_SUBST(PERL)
169 dnl ---------------------------------------------------------------------------
170 dnl Check for Pidl
171 dnl ---------------------------------------------------------------------------
172 AC_PATH_PROG(PIDL, pidl)
174 if test x"$PIDL" = x""; then
175         AC_MSG_WARN([No version of pidl was found!])
176         AC_MSG_ERROR([Please install pidl])
178 AC_SUBST(PIDL)
180 dnl ---------------------------------------------------------------------------
181 dnl Check for Python
182 dnl ---------------------------------------------------------------------------
184 AC_PATH_PROG(PYTHON,python)
185 AC_PATH_PROG(PYTHON_CONFIG,python-config)
187 AC_MSG_CHECKING(python library directory)
188 pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1, 0, '\\${prefix}')"`
189 AC_MSG_RESULT($pythondir)
191 AC_SUBST(pythondir)
193 dnl ----------------------------------------------------------------------------
194 dnl Check for Flex
195 dnl Flex version < 2.5.35 is fine but 2.5.4 beta is not. This is the
196 dnl default version provided under FreeBSD or RHL5
197 dnl ----------------------------------------------------------------------------
198 if test x"$OPENCHANGE_VERSION_IS_SVN_SNAPSHOT" = x"yes"; then
199    AC_ARG_VAR([FLEX], [Location of the flex program.])
200    AC_CHECK_PROG([FLEX], [flex], [flex])
202    if test x"$FLEX" = x""; then
203         AC_MSG_WARN([No version of flex was found!])
204         AC_MSG_ERROR([Please install flex])
205    else
206         V=`$FLEX --version | awk '{print $NF}'`
207         W=`echo $V | awk -F. '{if (((($1*100 + $2)*100 + $3) > 20535) || $3 == 4) print "no"}'`
208         if test "x$W" != x ; then
209            AC_MSG_WARN([Adjust your FLEX environment variable])
210            AC_MSG_ERROR([Flex version 2.5.35 or below is needed. You have $V])
211         fi
212    fi
214    AC_SUBST(FLEX)
217 dnl ---------------------------------------------------------------------------
218 dnl Samba4 modules
219 dnl ---------------------------------------------------------------------------
220 PKG_CHECK_MODULES(TALLOC, talloc)
221 PKG_CHECK_MODULES(SAMBA, dcerpc ndr samba-hostconfig)
222 PKG_CHECK_MODULES(LDB, ldb)
224 dnl ---------------------------------------------------------------------------
225 dnl Check a particular Samba4 git revision
226 dnl ---------------------------------------------------------------------------
228 oc_save_CPPFLAGS="$CPPFLAGS"
229 CPPFLAGS="$CPPFLAGS `$PKG_CONFIG --cflags-only-I samba-hostconfig`"
230 AC_CHECK_HEADER([samba/version.h],, AC_MSG_ERROR([Could not find Samba4 headers. Re-run ./configure with --with-samba=XXX where
231  XXX is the prefix that Samba4 was installed to.]))
233 . `dirname $0`/script/samba4_ver.sh
235 OC_CHECK_SAMBA_VERSION([$SAMBA4_RELEASE],[$SAMBA4_GIT_VER-GIT-$SAMBA4_GIT_REV])
236 CPPFLAGS="$oc_save_CPPFLAGS"
238 dnl ---------------------------------------------------------------------------
239 dnl Finally add libmapi to the library list
240 dnl ---------------------------------------------------------------------------
241 OC_RULE_ADD(libmapi, LIBS)
243 dnl nasty hack: only compile IDL if we have a library
244 dnl libraries require libmapi and libmapi require IDL
245 OC_IDL="idl"
246 AC_SUBST(OC_IDL)
248 dnl ###########################################################################
249 dnl libmapi++ dependencies
250 dnl ###########################################################################
252 dnl ---------------------------------------------------------------------------
253 dnl Check for g++
254 dnl ---------------------------------------------------------------------------
255 AC_CACHE_CHECK([C++ compiler availability], [ac_cv_libmapixx_gxx_works],
256                [
257                 AC_LANG_PUSH([C++])
258                 AC_COMPILE_IFELSE([int main() { return 0; }], 
259                                   [ac_cv_libmapixx_gxx_works=yes],
260                                   [ac_cv_libmapixx_gxx_works=no])
261                 AC_LANG_POP([C++])
262                 ])
264 dnl ---------------------------------------------------------------------------
265 dnl Check for boost-thread
266 dnl ---------------------------------------------------------------------------
268 AC_ARG_VAR([BOOST_LIB_SUFFIX], [Boost library name suffix])
270 AC_CACHE_CHECK([for boost_thread$BOOST_LIB_SUFFIX library], [ov_cv_boost_thread],
271                [
272                 ov_cv_boost_thread=no
273                 ov_save_LIBS=$LIBS
274                 LIBS="-lboost_thread$BOOST_LIB_SUFFIX $LIBS"
275                 AC_LANG_PUSH([C++])
276                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <boost/thread.hpp>]],
277                                                 [[boost::thread t]])],
278                                 [ov_cv_boost_thread=yes])
279                 AC_LANG_POP([C++])
280                 LIBS=$ov_save_LIBS
281                ])
284 if test x"$ac_cv_libmapixx_gxx_works" = "xyes"; then
285    if test x"$ov_cv_boost_thread" = "xyes"; then
286       AC_PROG_CXX 
287       OC_RULE_ADD(libmapixx, LIBS)
288    fi
292 dnl ###########################################################################
293 dnl libocpf dependencies
294 dnl ###########################################################################
296 dnl ---------------------------------------------------------------------------
297 dnl Check for Bison
298 dnl ---------------------------------------------------------------------------
299 if test x"$OPENCHANGE_VERSION_IS_SVN_SNAPSHOT" = x"yes"; then
300    AC_ARG_VAR([BISON], [Location of the bison program.])
301    AC_PATH_PROG([BISON], [bison], [bison])
303    if test x"$BISON" != x""; then
304       OC_RULE_ADD(libocpf, LIBS)
305       AC_SUBST(BISON)
306    fi
307 else
308    OC_RULE_ADD(libocpf, LIBS)
313 dnl ###########################################################################
314 dnl libmapiadmin dependencies
315 dnl ###########################################################################
316 PKG_CHECK_EXISTS([ dcerpc_samr ],
317                 [
318                         enable_libmapiadmin="yes"
319                 ], [
320                         enable_libmapiadmin="no"
321                 ])
323 if test x"$enable_libmapiadmin" = x"yes"; then
324         PKG_CHECK_MODULES(SAMR, dcerpc_samr)
325         OC_RULE_ADD(libmapiadmin, LIBS)
330 dnl ##########################################################################
331 dnl tools dependencies
332 dnl ##########################################################################
334 dnl --------------------------------------------------------------------------
335 dnl Check for libical                                                        
336 dnl --------------------------------------------------------------------------
337 PKG_CHECK_MODULES([ICAL], [libical], [have_libical="yes"], [have_libical="no"])
338 AC_SUBST(ICAL_CFLAGS)
339 AC_SUBST(ICAL_LIBS)
341 dnl --------------------------------------------------------------------------
342 dnl Check for popt
343 dnl --------------------------------------------------------------------------
345 AC_CHECK_LIB([popt], [poptFreeContext], 
346              [
347                AC_DEFINE(HAVE_LIBPOPT, 1, [Define if you want to use libpopt])
348                enable_libpopt="yes"
349              ], 
350              [ 
351                AC_MSG_WARN([libpopt is missing - can't build openchange tools]) 
352                enable_libpopt="no"
353              ])
355 if test x"$enable_libpopt" = x"yes"; then
356         if test x"$enable_libmapiadmin" = x"yes"; then
357            OC_RULE_ADD(openchangepfadmin, TOOLS)
358            OC_RULE_ADD(mapitest, TOOLS)
359         fi
361         if test x"$enable_libocpf" = x"yes"; then
362            OC_RULE_ADD(openchangeclient, TOOLS)
363         fi
365         if test x"$have_libical" = x"yes"; then
366             OC_RULE_ADD(exchange2ical, TOOLS)
367         fi
369         OC_RULE_ADD(mapiprofile, TOOLS)
370         OC_RULE_ADD(openchangemapidump, TOOLS)
371         OC_RULE_ADD(schemaIDGUID, TOOLS)
372         OC_RULE_ADD(locale_codepage, TOOLS)
375 dnl --------------------------------------------------------------------------
376 dnl Check for libmagic
377 dnl --------------------------------------------------------------------------
378 AC_CHECK_LIB([magic], [magic_open],
379              [
380                AC_DEFINE(HAVE_LIBMAGIC, 1, [Define if you want to use libmagic])
381                MAGIC_LIBS="-lmagic -lz"
382                enable_libmagic="yes"
383              ],
384                AC_SUBST(MAGIC_LIBS)
385              [
386                AC_MSG_WARN([libmagic is missing - can't build exchange2mbox])
387                enable_libmagic="no"
388              ])
390 if test x"$enable_libmagic" = x"yes"; then
391         AC_CHECK_LIB([z], [gzopen], [], 
392                      [
393                        AC_MSG_ERROR([Z library not found, please install zlib-devel.], [1])
394                      ])
395         if test x"$enable_libpopt" = x"yes"; then
396                 OC_RULE_ADD(exchange2mbox, TOOLS)
397         fi
401 dnl ##########################################################################
402 dnl libmapistore backends dependencies
403 dnl ##########################################################################
405 dnl --------------------------------------------------------------------------
406 dnl Check for sqlite3
407 dnl --------------------------------------------------------------------------
408 PKG_CHECK_MODULES(SQLITE, sqlite3, SQLITEFOUND=yes, [SQLITEFOUND=no])
409 AC_SUBST(SQLITE_CFLAGS)
410 AC_SUBST(SQLITE_LIBS)
412 if test x"$SQLITEFOUND" = x"yes"; then
413    OC_RULE_ADD(mapistore_sqlite3, MAPISTORE)
417 dnl ##########################################################################
418 dnl torture dependencies
419 dnl ##########################################################################
420 AC_PATH_PROG([SMBTORTURE], [smbtorture], no)
422 if test x"$SMBTORTURE" != x""; then
423         TORTURE_MODULESDIR=`$PKG_CONFIG --variable=modulesdir torture`
424         AC_SUBST(TORTURE_MODULESDIR)
425         OC_RULE_ADD(torture, TORTURE)
429 dnl ##########################################################################
430 dnl mapiproxy server
431 dnl ##########################################################################
432 if test x$PYTHON != x; then
433         OC_RULE_ADD(mapiproxy, SERVER)
436 AC_ARG_WITH(modulesdir, 
437 [AS_HELP_STRING([--with-modulesdir], [Modules path to use])],
438 [modulesdir="$withval"; ],
439 [modulesdir="\${prefix}/modules"; ])
441 AC_SUBST(modulesdir)
443 dnl ##########################################################################
444 dnl Swig bindings dependencies
445 dnl ##########################################################################
446 AC_ARG_ENABLE(swig-perl, AC_HELP_STRING([--enable-swig-perl],
447                            [build SWIG interfaces for Perl]),
448                            enable_perlswig="$enableval")
449 if test "x${enable_perlswig}" = xyes; then
450    AC_PATH_PROG(SWIG, swig)
452    if test -z "$SWIG"
453       then
454         AC_MSG_ERROR(Please install swig)
455    fi
457    SWIGDIRSALL+="swigperl-all"
458    SWIGDIRSINSTALL+="swigperl-install"
459    SWIGDIRSUNINSTALL+="swigperl-uninstall"
462 PERL5DIR=`$PERL -e 'use Config; my $dir = $Config{sitelib}; print $dir'`
463 AC_SUBST(PERL5DIR)
465 AC_SUBST(SWIGDIRSALL)
466 AC_SUBST(SWIGDIRSINSTALL)
467 AC_SUBST(SWIGDIRSUNINSTALL)
469 dnl ##########################################################################
470 dnl Python bindings dependencies
471 dnl ##########################################################################
472 AC_ARG_ENABLE(pymapi, AC_HELP_STRING([--enable-pymapi],
473                            [build Python bindings for libmapi]),
474                            enable_pymapi="$enableval",
475                            enable_pymapi=no)
476 if test "x${enable_pymapi}" = xyes; then
477    PYMAPIALL+="pymapi"
478    PYMAPIINSTALL+="pymapi-install"
479    PYMAPIUNINSTALL+="pymapi-uninstall"
482 PYCDIR=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, prefix='\\$(prefix)')"`
483 AC_SUBST(PYCDIR)
485 AC_SUBST(PYMAPIALL)
486 AC_SUBST(PYMAPIINSTALL)
487 AC_SUBST(PYMAPIUNINSTALL)
489 dnl ##########################################################################
490 dnl Documentation dependencies
491 dnl ##########################################################################
492 AC_PATH_PROG(DOXYGEN, doxygen)
493 if test x"$DOXYGEN" = x""; then
494         AC_MSG_WARN(doxygen)
495         enable_doxygen="no"
496 else
497         enable_doxygen="yes"
498         AC_SUBST(DOXYGEN)
503 dnl ***********************
504 dnl Makefiles 
505 dnl ***********************
506 AC_CONFIG_FILES([config.mk libmapi.pc libmapiadmin.pc libocpf.pc mapiproxy/libmapiproxy.pc
507                  mapiproxy/libmapiserver.pc mapiproxy/libmapistore.pc Doxyfile libmapi++/Doxyfile 
508                  libocpf/Doxyfile libmapiadmin/Doxyfile libmapi/Doxyfile mapiproxy/Doxyfile 
509                  utils/mapitest/Doxyfile])
510 AC_OUTPUT
513 dnl ##########################################################################
514 dnl Print configuration info
515 dnl ##########################################################################
517 OC_SETVAL(libmapi)
518 OC_SETVAL(libmapiadmin)
519 OC_SETVAL(libocpf)
520 OC_SETVAL(libmapixx)
522 OC_SETVAL(openchangeclient)
523 OC_SETVAL(mapiprofile)
524 OC_SETVAL(openchangepfadmin)
525 OC_SETVAL(exchange2mbox)
526 OC_SETVAL(exchange2ical)
527 OC_SETVAL(mapitest)
528 OC_SETVAL(openchangemapidump)
529 OC_SETVAL(schemaIDGUID)
530 OC_SETVAL(locale_codepage)
531 OC_SETVAL(mapiproxy)
533 OC_SETVAL(torture)
534 OC_SETVAL(doxygen)
535 OC_SETVAL(perlswig)
537 AC_MSG_RESULT([
539 ===============================================================
540 OpenChange Configuration (Please review)
542            * Install:
543              - prefix:                  $prefix
545            * OpenChange MAPI library:   $enable_libmapi
547            * OpenChange Libraries:
548              - libmapi++:               $enable_libmapixx
549              - libmapiadmin:            $enable_libmapiadmin
550              - libocpf:                 $enable_libocpf
552            * OpenChange Server:
553              - mapiproxy:               $enable_mapiproxy
555            * OpenChange mapistore backends:
556              - sqlite3:                 $enable_mapistore_sqlite3
558            * OpenChange Tools:
559              - openchangeclient:        $enable_openchangeclient
560              - mapiprofile:             $enable_mapiprofile
561              - openchangepfadmin:       $enable_openchangepfadmin
562              - exchange2mbox:           $enable_exchange2mbox
563              - exchange2ical:           $enable_exchange2ical
564              - mapitest:                $enable_mapitest
565              - openchangemapidump:      $enable_openchangemapidump
566              - schemaIDGUID:            $enable_schemaIDGUID
567              - locale_codepage:         $enable_locale_codepage
569            * OpenChange Torture Suite:  $enable_torture
571            * OpenChange Documentation:  $enable_doxygen
573            * OpenChange Bindings:
574              - Perl:                    $enable_perlswig
575              - Python:                  $enable_pymapi
577 ===============================================================