- Fix code generation \n for reintroduced get_property_type function
[jelmer/openchange-proposed.git/.git] / configure.ac
1 # Simple configuration script for OpenChange
2 # Written by Jelmer Vernooij <jelmer@openchange.org>
3
4 AC_PREREQ(2.57)
5 AC_INIT(openchange, 0.11, [openchange@openchange.org])
6 AC_CONFIG_HEADER([config.h])
7 AM_INIT_AUTOMAKE
8 AC_DEFINE(_GNU_SOURCE, 1, [Use GNU extensions])
9
10 PKG_PROG_PKG_CONFIG([0.20])
11
12 if test -z "$CFLAGS";
13 then
14   CFLAGS="-g";
15 fi
16
17 CFLAGS="-I. $CFLAGS"
18
19 dnl #################################################################
20 dnl Check for OS dependent options
21 dnl #################################################################
22 AC_CANONICAL_HOST
23
24 case "${host}" in
25      *freebsd*) 
26                 BUILD_FOR_FREEBSD=yes
27                 AC_SUBST(BUILD_FOR_FREEBSD)
28                 MANUALLY_CREATE_SYMLINKS=yes
29                 ;;
30      *solaris*) 
31                 BUILD_FOR_SOLARIS=yes
32                 AC_SUBST(BUILD_FOR_SOLARIS)
33                 MANUALLY_CREATE_SYMLINKS=yes
34                 ;;
35 esac
36 AC_SUBST(MANUALLY_CREATE_SYMLINKS)
37
38 #
39 # OC_CHECK_SAMBA_PATH([PATH],[action-if-found],[action-if-not-found])
40 # -------------------------------------------------------------------
41 AC_DEFUN([OC_CHECK_SAMBA_PATH],
42 [
43         old_PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
44         PKG_CONFIG_PATH="$1/lib64/pkgconfig:$1/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
45         export PKG_CONFIG_PATH
46         PKG_CHECK_EXISTS([samba-hostconfig], [found=1], [found=0])
47         PKG_CONFIG_PATH="$old_PKG_CONFIG_PATH"
48         if test $found = 1; then
49                 ifelse([$2],[], [echo -n ], [$2])
50                 ifelse([$3],[],[],[else
51         [$3]])
52         fi
53 ])
54
55 AC_MSG_CHECKING([for samba 4])
56
57 AC_ARG_WITH(samba, 
58 [AC_HELP_STRING([--with-samba], [Override location Samba is installed])],
59
60  sambaprefix="$withval"
61 ],[
62  for p in "$prefix" /usr/local/samba /usr/local /usr
63  do
64         OC_CHECK_SAMBA_PATH($p, [sambaprefix="$p"])
65         if test -n "${sambaprefix:-}"; then
66         break
67         fi
68  done
69 ])
70 AC_SUBST(sambaprefix)
71 OC_CHECK_SAMBA_PATH($sambaprefix,[], AC_MSG_ERROR(Samba 4 not found))
72 AC_MSG_RESULT($sambaprefix)
73 PKG_CONFIG_PATH="$sambaprefix/lib/pkgconfig:$PKG_CONFIG_PATH"
74 PATH="$sambaprefix/bin:$PATH"
75
76 #
77 # OC_SETVAL([NAME])
78 # -----------------
79 AC_DEFUN([OC_SETVAL],
80 [
81 AC_ARG_VAR([NAME], [var name])
82 if test x"$enable_$1" = x""; then
83    enable_$1="no"
84 fi[]
85 ])
86
87 #
88 # OC_CHECK_SAMBA_VERSION([RELEASE],[VERSION], [action-if-found],[action-if-not-found],
89 #                                             [action-if-cross-compiling])
90 # ------------------------------------------------------------------------------------
91 AC_DEFUN([OC_CHECK_SAMBA_VERSION], [
92 AC_RUN_IFELSE([AC_LANG_SOURCE([[
93 #include <samba/version.h>
94 int main() { if (!strcmp(SAMBA_VERSION_STRING, "$1") || !strcmp(SAMBA_VERSION_STRING, "$2")) {return 0; } else { return -1;} }
95 ]])],[$3],[
96         ifelse([$4],[],[AC_MSG_WARN([The Samba4 version installed on your system doesn't meet OpenChange requirements ($1 or $2).])],[$4])],[$5])
97 ])
98
99 #
100 # OC_RULE_ADD([NAME], [TYPE])
101 # ---------------------------
102 AC_DEFUN([OC_RULE_ADD], 
103
104 AC_ARG_VAR([NAME], [rule name])
105 AC_ARG_VAR([TYPE], [rule type])
106 if test "x$1_set" != "xset"; then
107    case "$2" in
108         LIBS)
109                 OC_$2="$OC_$2 $1"
110                 OC_$2_INSTALL="$OC_$2_INSTALL $1-install"
111                 OC_$2_UNINSTALL="$OC_$2_UNINSTALL $1-uninstall"
112                 OC_$2_INSTALLPC="$OC_$2_INSTALLPC $1-installpc"
113                 OC_$2_INSTALLHEADER="$OC_$2_INSTALLHEADER $1-installheader"
114                 OC_$2_INSTALLLIB="$OC_$2_INSTALLLIB $1-installlib"
115
116                 AC_SUBST(OC_$2_INSTALLPC)
117                 AC_SUBST(OC_$2_INSTALLHEADER)
118                 AC_SUBST(OC_$2_INSTALLLIB)
119         ;;
120         TOOLS)
121                 OC_$2="$OC_$2 $1"
122                 OC_$2_INSTALL="$OC_$2_INSTALL $1-install"
123                 OC_$2_UNINSTALL="$OC_$2_UNINSTALL $1-uninstall"
124         ;;
125         SERVER|MAPISTORE)
126                 OC_$2="$OC_$2 $1"
127                 OC_$2_CLEAN="$OC_$2_CLEAN $1-clean"
128                 OC_$2_INSTALL="$OC_$2_INSTALL $1-install"
129                 OC_$2_UNINSTALL="$OC_$2_UNINSTALL $1-uninstall"
130         ;;
131    esac
132
133    AC_SUBST(OC_$2)
134    AC_SUBST(OC_$2_CLEAN)
135    AC_SUBST(OC_$2_INSTALL)
136    AC_SUBST(OC_$2_UNINSTALL)
137
138    enable_$1="yes"
139
140 fi[]
141 ])
142
143 dnl ##################################################################
144 dnl Some general portability stuff
145 dnl ##################################################################
146 AC_CHECK_HEADERS( sys/cdefs.h string.h sys/sockio.h)
147 AC_CHECK_FUNCS(strcasestr)
148
149
150
151 dnl ###########################################################################
152 dnl _AC_LANG_COMPILER_ICC
153 dnl Check whether the compiler for the current language is really ICC.
154 dnl ###########################################################################
155 m4_define([AC_LANG_COMPILER_ICC],
156 [AC_CACHE_CHECK([whether we are really using the Intel _AC_LANG compiler],
157                 [ac_cv_[]_AC_LANG_ABBREV[]_compiler_icc],
158 [_AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[#ifndef __INTEL_COMPILER
159        choke me
160 #endif
161 ]])],
162                    [ac_compiler_icc=yes],
163                    [ac_compiler_icc=no])
164 ac_cv_[]_AC_LANG_ABBREV[]_compiler_icc=$ac_compiler_icc
165 ])])
166
167 dnl ###########################################################################
168 dnl _AC_LANG_COMPILER_SUNCC
169 dnl Check whether the compiler for the current language is really Sun compiler.
170 dnl ###########################################################################
171 m4_define([AC_LANG_COMPILER_SUNCC],
172 [AC_CACHE_CHECK([whether we are really using the Sun _AC_LANG compiler],
173                 [ac_cv_[]_AC_LANG_ABBREV[]_compiler_suncc],
174 [_AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[#ifndef __SUNPRO_C
175        choke me
176 #endif
177 ]])],
178                    [ac_compiler_suncc=yes],
179                    [ac_compiler_suncc=no])
180 ac_cv_[]_AC_LANG_ABBREV[]_compiler_suncc=$ac_compiler_suncc
181 ])])
182
183 dnl ###########################################################################
184 dnl FreeBSD installs some libraries such as libpopt in the non default
185 dnl search path /usr/local/{include,lib}. This nasty hack ensures
186 dnl configure.ac will find the library if available and additional
187 dnl flags be correctly added while compiling.
188 dnl ###########################################################################
189 if test x"$BUILD_FOR_FREEBSD" = x"yes"; then
190    CFLAGS="$CFLAGS -I/usr/local/include"
191    LDFLAGS="$LDFLAGS  -L/usr/local/lib"
192    CXXFLAGS="$CXXFLAGS -I/usr/local/include"
193 fi
194
195 dnl ----------------------------------------------------------------------------
196 dnl Check for comparison_fn_t
197 dnl ----------------------------------------------------------------------------
198 AC_CHECK_TYPE(comparison_fn_t, 
199 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])],
200 [], [[#include <stdlib.h>]])
201
202
203 dnl ###########################################################################
204 dnl libmapi and required dependencies
205 dnl ###########################################################################
206
207 dnl ---------------------------------------------------------------------------
208 dnl Check for CC
209 dnl ---------------------------------------------------------------------------
210 AC_PROG_CC
211
212 dnl ---------------------------------------------------------------------------
213 dnl coverage testing
214 dnl ---------------------------------------------------------------------------
215 AC_ARG_ENABLE([coverage], AS_HELP_STRING([--enable-coverage],
216                                         [Compile the library with code coverage support (default is NO)]),
217                                         [use_cov=$enableval], [use_cov=no])
218
219
220 if test "x$use_cov" = x"yes"; then
221    COVERAGE_INIT="coverage-init"
222 fi
223 AC_SUBST(COVERAGE_INIT)
224
225 dnl ---------------------------------------------------------------------------
226 dnl Set up the right compiler options
227 dnl ---------------------------------------------------------------------------
228 AC_LANG_COMPILER_SUNCC 
229 AC_LANG_COMPILER_ICC
230
231 if test x"$ac_cv_c_compiler_suncc" = x"yes"; then
232 dnl Sun Studio Compiler
233     COMPILER_OPTIONS_SHARED="-D__FUNCTION__=__func__"
234     COMPILER_OPTIONS_C="$COMPILER_OPTIONS_SHARED"
235     COMPILER_OPTIONS_CXX="$COMPILER_OPTIONS_SHARED"
236     LDFLAGS="$LDFLAGS -z ignore -R '\$\$ORIGIN/../lib'"
237 elif test x"$ac_cv_c_compiler_icc" = x"yes"; then
238 dnl Intel Compiler
239     COMPILER_OPTIONS_SHARED="-Wall -fstrict-aliasing -Wmissing-prototypes -Wstrict-prototypes -wd2259,188,593,869,981,181,1419,2218"
240     COMPILER_OPTIONS_C="$COMPILER_OPTIONS_SHARED"
241     COMPILER_OPTIONS_CXX="$COMPILER_OPTIONS_SHARED"
242 else
243 dnl GNU Compiler
244     COMPILER_OPTIONS_SHARED="-Wall -fstrict-aliasing -Wp,-D_FORTIFY_SOURCE=2"
245     if test "x$use_cov" = "xyes"; then
246         COMPILER_OPTIONS_SHARED="-O0 $COMPILER_OPTIONS_SHARED"
247     else
248         COMPILER_OPTIONS_SHARED="$COMPILER_OPTIONS_SHARED"
249     fi
250     COMPILER_OPTIONS_C="$COMPILER_OPTIONS_SHARED -Wmissing-prototypes -Wstrict-prototypes"
251     if test "x$use_cov" = "xyes"; then
252         COMPILER_OPTIONS_C="$COMPILER_OPTIONS_C -fprofile-arcs -ftest-coverage"
253         LDFLAGS="$LDFLAGS -lgcov --coverage"
254     fi
255     COMPILER_OPTIONS_CXX="$COMPILER_OPTIONS_SHARED"
256     if test "x$use_cov" = "xyes"; then
257         COMPILER_OPTIONS_CXX="$COMPILER_OPTIONS_CXX -fprofile-arcs -ftest-coverage"
258         LDFLAGS="$LDFLAGS -lgcov --coverage"
259     fi
260 fi
261 AC_SUBST(COMPILER_OPTIONS_C)
262 AC_SUBST(COMPILER_OPTIONS_CXX)
263
264 dnl ---------------------------------------------------------------------------
265 dnl Define an assert macro if this is a development release
266 dnl ---------------------------------------------------------------------------
267 . `dirname $0`/VERSION
268 AC_SUBST(OPENCHANGE_VERSION_IS_SVN_SNAPSHOT)
269
270 if test x"$OPENCHANGE_VERSION_IS_SVN_SNAPSHOT" = x"yes"; then
271    ASSERT_DEFINITION="-DENABLE_ASSERTS"
272 fi
273 AC_SUBST(ASSERT_DEFINITION)
274
275 dnl ---------------------------------------------------------------------------
276 dnl Check for install
277 dnl ---------------------------------------------------------------------------
278 AC_PROG_INSTALL
279
280 dnl ---------------------------------------------------------------------------
281 dnl Check for Perl
282 dnl ---------------------------------------------------------------------------
283 AC_PATH_PROG(PERL, perl)
284
285 if test x"$PERL" = x""; then
286    AC_MSG_WARN([No version of perl was found!])
287    AC_MSG_ERROR([Please install perl http://www.perl.com])
288 fi
289 AC_SUBST(PERL)
290
291 dnl ---------------------------------------------------------------------------
292 dnl Check for Pidl
293 dnl ---------------------------------------------------------------------------
294 AC_PATH_PROG(PIDL, pidl)
295
296 if test x"$PIDL" = x""; then
297         AC_MSG_WARN([No version of pidl was found!])
298         AC_MSG_ERROR([Please install pidl])
299 fi
300 AC_SUBST(PIDL)
301
302 dnl ---------------------------------------------------------------------------
303 dnl Check for Python
304 dnl ---------------------------------------------------------------------------
305
306 AC_PATH_PROG(PYTHON,python)
307 AC_PATH_PROG(PYTHON_CONFIG,python-config)
308
309 AC_MSG_CHECKING(python library directory)
310 pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1, 0, '\\${prefix}')"`
311 AC_MSG_RESULT($pythondir)
312
313 AC_SUBST(pythondir)
314
315 dnl ----------------------------------------------------------------------------
316 dnl Check for Flex
317 dnl Flex version < 2.5.35 is fine but 2.5.4 beta is not. This is the
318 dnl default version provided under FreeBSD or RHL5
319 dnl ----------------------------------------------------------------------------
320 if test x"$OPENCHANGE_VERSION_IS_SVN_SNAPSHOT" = x"yes"; then
321    AC_ARG_VAR([FLEX], [Location of the flex program.])
322    AC_CHECK_PROG([FLEX], [flex], [flex])
323
324    if test x"$FLEX" = x""; then
325         AC_MSG_WARN([No version of flex was found!])
326         AC_MSG_ERROR([Please install flex])
327    else
328         V=`$FLEX --version | awk '{print $NF}'`
329         W=`echo $V | awk -F. '{if (((($1*100 + $2)*100 + $3) > 20535) || $3 == 4) print "no"}'`
330         if test "x$W" != x ; then
331            AC_MSG_WARN([Adjust your FLEX environment variable])
332            AC_MSG_ERROR([Flex version 2.5.35 or below is needed. You have $V])
333         fi
334    fi
335
336    AC_SUBST(FLEX)
337 fi
338
339 dnl ---------------------------------------------------------------------------
340 dnl Samba4 modules
341 dnl ---------------------------------------------------------------------------
342 PKG_CHECK_MODULES(TALLOC, talloc)
343 PKG_CHECK_MODULES(SAMBA, dcerpc ndr samba-hostconfig samba-util tevent)
344 PKG_CHECK_MODULES(SAMBASERVER, dcerpc_server samdb)
345 PKG_CHECK_MODULES(TDB, tdb)
346 PKG_CHECK_MODULES(LDB, ldb)
347
348 dnl ---------------------------------------------------------------------------
349 dnl Check a particular Samba4 git revision
350 dnl ---------------------------------------------------------------------------
351
352 oc_save_CPPFLAGS="$CPPFLAGS"
353 CPPFLAGS="$CPPFLAGS `$PKG_CONFIG --cflags-only-I samba-hostconfig`"
354 AC_CHECK_HEADER([samba/version.h],, AC_MSG_ERROR([Could not find Samba4 headers. Re-run ./configure with --with-samba=XXX where
355  XXX is the prefix that Samba4 was installed to.]))
356
357 . `dirname $0`/script/samba4_ver.sh
358
359 OC_CHECK_SAMBA_VERSION([$SAMBA4_RELEASE],[$SAMBA4_GIT_VER-GIT-$SAMBA4_GIT_REV])
360 CPPFLAGS="$oc_save_CPPFLAGS"
361
362 AC_MSG_CHECKING([for DCE/RPC server modules directory])
363 DCERPC_SERVER_MODULESDIR=`$PKG_CONFIG --variable=modulesdir dcerpc_server`
364 AC_SUBST(DCERPC_SERVER_MODULESDIR)
365 AC_MSG_RESULT($DCERPC_SERVER_MODULESDIR)
366
367 dnl ---------------------------------------------------------------------------
368 dnl Finally add libmapi to the library list
369 dnl ---------------------------------------------------------------------------
370 OC_RULE_ADD(libmapi, LIBS)
371
372 dnl nasty hack: only compile IDL if we have a library
373 dnl libraries require libmapi and libmapi require IDL
374 OC_IDL="idl"
375 AC_SUBST(OC_IDL)
376
377 dnl ---------------------------------------------------------------------------
378 dnl Check for dl libs
379 dnl ---------------------------------------------------------------------------
380
381 AC_CHECK_LIB([dl], [dlopen],
382             [
383                         DL_LIBS="-ldl"
384                         AC_SUBST(DL_LIBS)
385                 ],
386                 [
387                         AC_CHECK_FUNCS(dlopen, [
388                                 DL_LIBS=""
389                                 AC_SUBST(DL_LIBS)
390                         ], [
391                                 AC_MSG_ERROR([unable to find dlopen])
392                         ])
393                 ])
394
395 dnl ---------------------------------------------------------------------------
396 dnl Check for pthread libs
397 dnl ---------------------------------------------------------------------------
398 enable_pthread=no
399 enable_thread_lib=""
400 AC_CHECK_LIB([pthread], [pthread_mutex_init],
401              [
402                 AC_DEFINE(HAVE_PTHREADS, 1, [Define if you want to use pthread for thread safety])
403                 THREAD_LIBS=-lpthread
404                 enable_pthread="yes"
405                 enable_thread_lib="(pthread)"
406              ],
407              [
408              AC_MSG_WARN([pthread is missing - library is not thread safe])
409              enable_pthread="no"
410              ])
411
412 if test x"$enable_pthread" = x"no"; then
413         dnl Check for gthread-2.0 / glib based implementation
414         PKG_CHECK_MODULES(GTHREAD, gthread-2.0, 
415                 [
416                         AC_DEFINE(HAVE_GTHREAD, 1, [Define if you want to use gthread for thread safety])
417                         THREAD_LIBS=$GTHREAD_LIBS
418                         THREAD_CFLAGS=$GTHREAD_CFLAGS
419                         enable_pthread=yes
420                         enable_thread_lib="(gthread)"
421                 ], 
422                 [
423                         enable_pthread=no
424                 ])
425 fi
426
427 AC_SUBST(THREAD_LIBS)
428 AC_SUBST(THREAD_CFLAGS)
429
430 dnl Additional thread library detection is required here:
431 dnl FreeBSD (pthreads), glib etc.
432
433 dnl ###########################################################################
434 dnl libmapi++ dependencies
435 dnl ###########################################################################
436
437 dnl ---------------------------------------------------------------------------
438 dnl Check for g++
439 dnl ---------------------------------------------------------------------------
440 AC_CACHE_CHECK([C++ compiler availability], [ac_cv_libmapixx_gxx_works],
441                [
442                 AC_LANG_PUSH([C++])
443                 AC_COMPILE_IFELSE([int main() { return 0; }], 
444                                   [ac_cv_libmapixx_gxx_works=yes],
445                                   [ac_cv_libmapixx_gxx_works=no])
446                 AC_LANG_POP([C++])
447                 ])
448
449 dnl ---------------------------------------------------------------------------
450 dnl Check for boost-thread
451 dnl ---------------------------------------------------------------------------
452
453 AC_ARG_VAR([BOOST_LIB_SUFFIX], [Boost library name suffix])
454
455 AC_CACHE_CHECK([for boost_thread$BOOST_LIB_SUFFIX library], [ov_cv_boost_thread],
456                [
457                 ov_cv_boost_thread=no
458                 ov_save_LIBS=$LIBS
459                 LIBS="-lboost_thread$BOOST_LIB_SUFFIX $LIBS"
460                 AC_LANG_PUSH([C++])
461                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <boost/thread.hpp>]],
462                                                 [[boost::thread t]])],
463                                 [ov_cv_boost_thread=yes])
464                 AC_LANG_POP([C++])
465                 LIBS=$ov_save_LIBS
466                ])
467
468
469 if test x"$ac_cv_libmapixx_gxx_works" = "xyes"; then
470    if test x"$ov_cv_boost_thread" = "xyes"; then
471       AC_PROG_CXX 
472       OC_RULE_ADD(libmapixx, LIBS)
473    fi
474 fi
475
476
477 dnl ###########################################################################
478 dnl libocpf dependencies
479 dnl ###########################################################################
480
481 dnl ---------------------------------------------------------------------------
482 dnl Check for Bison
483 dnl ---------------------------------------------------------------------------
484 if test x"$OPENCHANGE_VERSION_IS_SVN_SNAPSHOT" = x"yes"; then
485    AC_ARG_VAR([BISON], [Location of the bison program.])
486    AC_PATH_PROG([BISON], [bison], [bison])
487
488    if test x"$BISON" != x""; then
489       OC_RULE_ADD(libocpf, LIBS)
490       AC_SUBST(BISON)
491    fi
492 else
493    OC_RULE_ADD(libocpf, LIBS)
494 fi
495
496
497
498 dnl ###########################################################################
499 dnl libmapiadmin dependencies
500 dnl ###########################################################################
501 PKG_CHECK_EXISTS([ dcerpc_samr ],
502                 [
503                         enable_libmapiadmin="yes"
504                 ], [
505                         enable_libmapiadmin="no"
506                 ])
507
508 if test x"$enable_libmapiadmin" = x"yes"; then
509         PKG_CHECK_MODULES(SAMR, dcerpc_samr ndr_standard)
510         OC_RULE_ADD(libmapiadmin, LIBS)
511 fi
512
513
514
515 dnl ##########################################################################
516 dnl tools dependencies
517 dnl ##########################################################################
518
519 dnl --------------------------------------------------------------------------
520 dnl Check for libical                                                        
521 dnl --------------------------------------------------------------------------
522 PKG_CHECK_MODULES([ICAL], [libical], [have_libical="yes"], [have_libical="no"])
523 AC_SUBST(ICAL_CFLAGS)
524 AC_SUBST(ICAL_LIBS)
525 PKG_CHECK_MODULES([ICAL_0_46], [libical >= 0.46], [have_libical_0_46="1"], [have_libical_0_46="0"])
526 AC_SUBST(have_libical_0_46)
527
528 dnl --------------------------------------------------------------------------
529 dnl Check for popt
530 dnl --------------------------------------------------------------------------
531
532 AC_CHECK_LIB([popt], [poptFreeContext], 
533              [
534                AC_DEFINE(HAVE_LIBPOPT, 1, [Define if you want to use libpopt])
535                enable_libpopt="yes"
536              ], 
537              [ 
538                AC_MSG_WARN([libpopt is missing - can't build openchange tools]) 
539                enable_libpopt="no"
540              ])
541
542 if test x"$enable_libpopt" = x"yes"; then
543         if test x"$enable_libmapiadmin" = x"yes"; then
544            OC_RULE_ADD(openchangepfadmin, TOOLS)
545            OC_RULE_ADD(mapitest, TOOLS)
546         fi
547
548         if test x"$enable_libocpf" = x"yes"; then
549            OC_RULE_ADD(openchangeclient, TOOLS)
550            #       OC_RULE_ADD(mapistore_fsocpf, MAPISTORE)
551         fi
552
553         if test x"$have_libical" = x"yes"; then
554             OC_RULE_ADD(exchange2ical, TOOLS)
555         fi
556
557         MAPISTORE_TEST=mapistore_test
558         OC_RULE_ADD(mapiprofile, TOOLS)
559         OC_RULE_ADD(openchangemapidump, TOOLS)
560         OC_RULE_ADD(schemaIDGUID, TOOLS)
561
562         OC_RULE_ADD(check_fasttransfer, TOOLS)
563         OC_RULE_ADD(test_asyncnotif, TOOLS)
564 fi
565 AC_SUBST(MAPISTORE_TEST)
566
567 dnl --------------------------------------------------------------------------
568 dnl Check for libmagic
569 dnl --------------------------------------------------------------------------
570 AC_CHECK_LIB([magic], [magic_open],
571              [
572                AC_DEFINE(HAVE_LIBMAGIC, 1, [Define if you want to use libmagic])
573                MAGIC_LIBS="-lmagic -lz"
574                enable_libmagic="yes"
575              ],
576                AC_SUBST(MAGIC_LIBS)
577              [
578                AC_MSG_WARN([libmagic is missing - can't build exchange2mbox])
579                enable_libmagic="no"
580              ])
581
582 if test x"$enable_libmagic" = x"yes"; then
583         AC_CHECK_LIB([z], [gzopen], [], 
584                      [
585                        AC_MSG_ERROR([Z library not found, please install zlib-devel.], [1])
586                      ])
587         if test x"$enable_libpopt" = x"yes"; then
588                 OC_RULE_ADD(exchange2mbox, TOOLS)
589         fi
590 fi
591
592 dnl ##########################################################################
593 dnl libmapistore dependencies
594 dnl ##########################################################################
595
596 AC_CHECK_LIB([rt], [mq_open],
597             [
598                         RT_LIBS="-lrt"
599                         AC_SUBST(RT_LIBS)
600                 ],
601                 [
602                         AC_CHECK_FUNCS(mq_open, [
603                                 RT_LIBS=""
604                                 AC_SUBST(RT_LIBS)
605                         ], [
606                                 AC_MSG_ERROR([unable to find mq_open])
607                         ])
608                 ])
609
610 dnl ##########################################################################
611 dnl libmapistore backends dependencies
612 dnl ##########################################################################
613
614 OC_MAPISTORE=
615 OC_MAPISTORE_CLEAN=
616 OC_MAPISTORE_INSTALL=
617 OC_MAPISTORE_UNINSTALL=
618 AC_SUBST(OC_MAPISTORE)
619 AC_SUBST(OC_MAPISTORE_CLEAN)
620 AC_SUBST(OC_MAPISTORE_INSTALL)
621 AC_SUBST(OC_MAPISTORE_UNINSTALL)
622
623 dnl ##########################################################################
624 dnl mapiproxy server
625 dnl ##########################################################################
626 if test x$PYTHON != x; then
627         OC_RULE_ADD(mapiproxy, SERVER)
628 fi
629
630 AC_ARG_WITH(modulesdir, 
631 [AS_HELP_STRING([--with-modulesdir], [Modules path to use])],
632 [modulesdir="$withval"; ],
633 [modulesdir="\${prefix}/modules"; ])
634
635 AC_SUBST(modulesdir)
636
637 dnl ##########################################################################
638 dnl Python bindings dependencies
639 dnl ##########################################################################
640 AC_ARG_ENABLE(pymapi, AC_HELP_STRING([--enable-pymapi],
641                            [build Python bindings for libmapi]),
642                            enable_pymapi="$enableval",
643                            enable_pymapi=no)
644 if test "x${enable_pymapi}" = xyes; then
645    PYMAPIALL="pymapi"
646    PYMAPIINSTALL="pymapi-install"
647    PYMAPIUNINSTALL="pymapi-uninstall"
648 fi
649
650 PYCDIR=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, prefix='\\$(prefix)')"`
651 AC_SUBST(PYCDIR)
652
653 dnl Enable pyopenchange by default
654 PYMAPIALL="$PYMAPIALL pyopenchange"
655 PYMAPIINSTALL="$PYMAPIALLINSTALL pyopenchange-install"
656 PYMAPIUNINSTALL="$PYMAPIUNINSTALL pyopenchange-uninstall"
657
658 AC_SUBST(PYMAPIALL)
659 AC_SUBST(PYMAPIINSTALL)
660 AC_SUBST(PYMAPIUNINSTALL)
661
662
663 dnl ##########################################################################
664 dnl Documentation dependencies
665 dnl ##########################################################################
666 AC_PATH_PROG(DOXYGEN, doxygen)
667 if test x"$DOXYGEN" = x""; then
668         AC_MSG_WARN(doxygen)
669         enable_doxygen="no"
670 else
671         enable_doxygen="yes"
672         AC_SUBST(DOXYGEN)
673 fi
674
675 dnl ##########################################################################
676 dnl (Optional) subunit support in mapitest
677 dnl ##########################################################################
678 PKG_CHECK_MODULES(SUBUNIT, libsubunit, found_subunit=yes, found_subunit=no)
679 AC_SUBST(SUBUNIT_CFLAGS)
680 AC_SUBST(SUBUNIT_LIBS)
681
682 if test x"$found_subunit" = x"yes"; then
683         AC_DEFINE(HAVE_SUBUNIT, 1, [Define if you want to use subunit])
684         have_subunit="yes"
685 else
686         have_subunit="no"
687 fi
688
689 dnl ##########################################################################
690 dnl Qt4 support
691 dnl ##########################################################################
692 AC_ARG_ENABLE(openchange-qt4,
693               AC_HELP_STRING([--enable-openchange-qt4],
694                              [Compile OpenChange Qt4 wrapper.]),
695               enable_openchange_qt4=$enableval,
696               enable_openchange_qt4="no")
697 if test x$enable_openchange_qt4 = xyes; then
698   PKG_CHECK_MODULES(Qt4,
699                     QtCore >= 4.3.0 QtGui >= 4.3.0)
700   MOC=`$PKG_CONFIG --variable=moc_location QtCore`
701 elif test x$enable_openchange_qt4 = xtry; then
702   PKG_CHECK_MODULES(Qt4,
703                     QtCore >= 4.3.0 QtGui >= 4.3.0,
704                     [enable_openchange_qt4="yes"
705                      MOC=`$PKG_CONFIG --variable=moc_location QtCore`],
706                     [enable_openchange_qt4="no"])
707 fi
708
709 AC_SUBST(Qt4_CFLAGS)
710 AC_SUBST(Qt4_LIBS)
711 AC_SUBST(MOC)
712
713 if test "x$enable_openchange_qt4" = "xyes"; then
714    OPENCHANGE_QT4="openchange_qt4"
715 fi
716 AC_SUBST(OPENCHANGE_QT4)
717
718 dnl ***********************
719 dnl Makefiles 
720 dnl ***********************
721 AC_CONFIG_FILES([config.mk libmapi.pc libmapiadmin.pc libocpf.pc mapiproxy/libmapiproxy.pc
722                  mapiproxy/libmapiserver.pc mapiproxy/libmapistore.pc libmapi++.pc
723                  Doxyfile libmapi++/Doxyfile libocpf/Doxyfile libmapiadmin/Doxyfile
724                  libmapi/Doxyfile mapiproxy/Doxyfile utils/mapitest/Doxyfile
725                  mapiproxy/libmapistore/Doxyfile])
726 AC_OUTPUT
727
728
729 dnl ##########################################################################
730 dnl Print configuration info
731 dnl ##########################################################################
732
733 OC_SETVAL(libmapi)
734 OC_SETVAL(libmapiadmin)
735 OC_SETVAL(libocpf)
736 OC_SETVAL(libmapixx)
737
738 OC_SETVAL(openchangeclient)
739 OC_SETVAL(mapiprofile)
740 OC_SETVAL(openchangepfadmin)
741 OC_SETVAL(exchange2mbox)
742 OC_SETVAL(exchange2ical)
743 OC_SETVAL(mapitest)
744 OC_SETVAL(openchangemapidump)
745 OC_SETVAL(schemaIDGUID)
746 OC_SETVAL(mapiproxy)
747
748 OC_SETVAL(doxygen)
749
750 AC_MSG_RESULT([
751
752 ===============================================================
753 OpenChange Configuration (Please review)
754
755            * OpenChange Libraries:
756              - libmapi (C library):     $enable_libmapi
757                       Thread support:   $enable_pthread $enable_thread_lib
758              - libmapi++ (C++ library): $enable_libmapixx
759              - libmapiadmin:            $enable_libmapiadmin
760              - libocpf:                 $enable_libocpf
761
762            * OpenChange Server:
763              - mapiproxy:               $enable_mapiproxy
764
765            * OpenChange mapistore backends:
766              - backends dependencies goes here
767
768            * OpenChange Tools:
769              - openchangeclient:        $enable_openchangeclient
770              - mapiprofile:             $enable_mapiprofile
771              - openchangepfadmin:       $enable_openchangepfadmin
772              - exchange2mbox:           $enable_exchange2mbox
773              - exchange2ical:           $enable_exchange2ical
774              - mapitest:                $enable_mapitest
775              - openchangemapidump:      $enable_openchangemapidump
776              - schemaIDGUID:            $enable_schemaIDGUID
777
778            * subunit format (mapitest): $have_subunit
779
780            * OpenChange Documentation:  $enable_doxygen
781
782            * Coverage Tests:            $use_cov
783
784            * OpenChange Bindings:
785              - Python:                  $enable_pymapi
786              - Qt4:                     $enable_openchange_qt4
787
788            * Installation prefix:       $prefix
789
790 ===============================================================
791
792 ])
793