Patch from Shaheed Haque <srhaque@theiet.org>:
[jelmer/openchange.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, 1.0, [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 if test x"$PYTHON" = x""; then
308         AC_MSG_WARN([No version of python was found!])
309         AC_MSG_ERROR([Please install python])
310 fi
311 AC_SUBST(PYTHON)
312
313 AC_PATH_PROG(PYTHON_CONFIG, python-config)
314 if test x"$PYTHON_CONFIG" = x""; then
315         AC_MSG_WARN([No version of python-config was found!])
316         AC_MSG_ERROR([Please install python-dev 2.7])
317 fi
318 AC_SUBST(PYTHON_CONFIG)
319
320 AC_MSG_CHECKING(python cflags)
321 PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags`
322 AC_MSG_RESULT($PYTHON_CFLAGS)
323 AC_SUBST(PYTHON_CFLAGS)
324
325 AC_MSG_CHECKING(python libs)
326 PYTHON_LIBS=`$PYTHON_CONFIG --libs`
327 AC_MSG_RESULT($PYTHON_LIBS)
328 AC_SUBST(PYTHON_LIBS)
329
330 AC_MSG_CHECKING(python library directory)
331 pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1, 0, '\\${prefix}')"`
332 AC_MSG_RESULT($pythondir)
333 AC_SUBST(pythondir)
334
335 dnl ----------------------------------------------------------------------------
336 dnl Check for Flex
337 dnl Flex version < 2.5.35 is fine but 2.5.4 beta is not. This is the
338 dnl default version provided under FreeBSD or RHL5
339 dnl ----------------------------------------------------------------------------
340 if test x"$OPENCHANGE_VERSION_IS_SVN_SNAPSHOT" = x"yes"; then
341    AC_ARG_VAR([FLEX], [Location of the flex program.])
342    AC_CHECK_PROG([FLEX], [flex], [flex])
343
344    if test x"$FLEX" = x""; then
345         AC_MSG_WARN([No version of flex was found!])
346         AC_MSG_ERROR([Please install flex])
347    else
348         V=`$FLEX --version | awk '{print $NF}'`
349         W=`echo $V | awk -F. '{if (((($1*100 + $2)*100 + $3) > 20535) || $3 == 4) print "no"}'`
350         if test "x$W" != x ; then
351            AC_MSG_WARN([Adjust your FLEX environment variable])
352            AC_MSG_ERROR([Flex version 2.5.35 or below is needed. You have $V])
353         fi
354    fi
355
356    AC_SUBST(FLEX)
357 fi
358
359 dnl ---------------------------------------------------------------------------
360 dnl Samba4 modules
361 dnl ---------------------------------------------------------------------------
362 PKG_CHECK_MODULES(TALLOC, talloc)
363 PKG_CHECK_MODULES(SAMBA, dcerpc ndr samba-hostconfig samba-util tevent samba-credentials)
364 PKG_CHECK_MODULES(SAMBASERVER, dcerpc_server samdb)
365 PKG_CHECK_MODULES(TDB, tdb)
366 PKG_CHECK_MODULES(LDB, ldb)
367
368 dnl ---------------------------------------------------------------------------
369 dnl Check a particular Samba4 git revision
370 dnl ---------------------------------------------------------------------------
371
372 oc_save_CPPFLAGS="$CPPFLAGS"
373 CPPFLAGS="$CPPFLAGS `$PKG_CONFIG --cflags-only-I samba-hostconfig`"
374 AC_CHECK_HEADER([samba/version.h],, AC_MSG_ERROR([Could not find Samba4 headers. Re-run ./configure with --with-samba=XXX where
375  XXX is the prefix that Samba4 was installed to.]))
376
377 . `dirname $0`/script/samba4_ver.sh
378
379 OC_CHECK_SAMBA_VERSION([$SAMBA4_RELEASE],[$SAMBA4_GIT_VER-GIT-$SAMBA4_GIT_REV])
380 CPPFLAGS="$oc_save_CPPFLAGS"
381
382 AC_MSG_CHECKING([for DCE/RPC server modules directory])
383 DCERPC_SERVER_MODULESDIR=`$PKG_CONFIG --variable=modulesdir dcerpc_server`
384 AC_SUBST(DCERPC_SERVER_MODULESDIR)
385 AC_MSG_RESULT($DCERPC_SERVER_MODULESDIR)
386
387 dnl ---------------------------------------------------------------------------
388 dnl Finally add libmapi to the library list
389 dnl ---------------------------------------------------------------------------
390 OC_RULE_ADD(libmapi, LIBS)
391
392 dnl nasty hack: only compile IDL if we have a library
393 dnl libraries require libmapi and libmapi require IDL
394 OC_IDL="idl"
395 AC_SUBST(OC_IDL)
396
397 dnl ---------------------------------------------------------------------------
398 dnl Check for dl libs
399 dnl ---------------------------------------------------------------------------
400
401 AC_CHECK_LIB([dl], [dlopen],
402             [
403                         DL_LIBS="-ldl"
404                         AC_SUBST(DL_LIBS)
405                 ],
406                 [
407                         AC_CHECK_FUNCS(dlopen, [
408                                 DL_LIBS=""
409                                 AC_SUBST(DL_LIBS)
410                         ], [
411                                 AC_MSG_ERROR([unable to find dlopen])
412                         ])
413                 ])
414
415 dnl ---------------------------------------------------------------------------
416 dnl Check for pthread libs
417 dnl ---------------------------------------------------------------------------
418 enable_pthread=no
419 enable_thread_lib=""
420 AC_CHECK_LIB([pthread], [pthread_mutex_init],
421              [
422                 AC_DEFINE(HAVE_PTHREADS, 1, [Define if you want to use pthread for thread safety])
423                 THREAD_LIBS=-lpthread
424                 enable_pthread="yes"
425                 enable_thread_lib="(pthread)"
426              ],
427              [
428              AC_MSG_WARN([pthread is missing - library is not thread safe])
429              enable_pthread="no"
430              ])
431
432 if test x"$enable_pthread" = x"no"; then
433         dnl Check for gthread-2.0 / glib based implementation
434         PKG_CHECK_MODULES(GTHREAD, gthread-2.0, 
435                 [
436                         AC_DEFINE(HAVE_GTHREAD, 1, [Define if you want to use gthread for thread safety])
437                         THREAD_LIBS=$GTHREAD_LIBS
438                         THREAD_CFLAGS=$GTHREAD_CFLAGS
439                         enable_pthread=yes
440                         enable_thread_lib="(gthread)"
441                 ], 
442                 [
443                         enable_pthread=no
444                 ])
445 fi
446
447 AC_SUBST(THREAD_LIBS)
448 AC_SUBST(THREAD_CFLAGS)
449
450 dnl Additional thread library detection is required here:
451 dnl FreeBSD (pthreads), glib etc.
452
453 dnl ###########################################################################
454 dnl libmapi++ dependencies
455 dnl ###########################################################################
456
457 dnl ---------------------------------------------------------------------------
458 dnl Check for g++
459 dnl ---------------------------------------------------------------------------
460 AC_CACHE_CHECK([C++ compiler availability], [ac_cv_libmapixx_gxx_works],
461                [
462                 AC_LANG_PUSH([C++])
463                 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int main() { return 0; }]])], 
464                                   [ac_cv_libmapixx_gxx_works=yes],
465                                   [ac_cv_libmapixx_gxx_works=no])
466                 AC_LANG_POP([C++])
467                 ])
468
469 dnl ---------------------------------------------------------------------------
470 dnl Check for boost-thread
471 dnl ---------------------------------------------------------------------------
472
473 AC_ARG_VAR([BOOST_LIB_SUFFIX], [Boost library name suffix])
474
475 AC_CACHE_CHECK([for boost_thread$BOOST_LIB_SUFFIX library], [ov_cv_boost_thread],
476                [
477                 ov_cv_boost_thread=no
478                 ov_save_LIBS=$LIBS
479                 LIBS="-lboost_thread$BOOST_LIB_SUFFIX $LIBS"
480                 AC_LANG_PUSH([C++])
481                 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <boost/thread.hpp>]],
482                                                 [[boost::thread t]])],
483                                 [ov_cv_boost_thread=yes])
484                 AC_LANG_POP([C++])
485                 LIBS=$ov_save_LIBS
486                ])
487
488
489 if test x"$ac_cv_libmapixx_gxx_works" = "xyes"; then
490    if test x"$ov_cv_boost_thread" = "xyes"; then
491       AC_PROG_CXX 
492       OC_RULE_ADD(libmapixx, LIBS)
493    fi
494 fi
495
496
497 dnl ###########################################################################
498 dnl libocpf dependencies
499 dnl ###########################################################################
500
501 dnl ---------------------------------------------------------------------------
502 dnl Check for Bison
503 dnl ---------------------------------------------------------------------------
504 if test x"$OPENCHANGE_VERSION_IS_SVN_SNAPSHOT" = x"yes"; then
505    AC_ARG_VAR([BISON], [Location of the bison program.])
506    AC_PATH_PROG([BISON], [bison], [bison])
507
508    if test x"$BISON" != x""; then
509       OC_RULE_ADD(libocpf, LIBS)
510       AC_SUBST(BISON)
511    fi
512 else
513    OC_RULE_ADD(libocpf, LIBS)
514 fi
515
516
517
518 dnl ###########################################################################
519 dnl libmapiadmin dependencies
520 dnl ###########################################################################
521 PKG_CHECK_EXISTS([ dcerpc_samr ],
522                 [
523                         enable_libmapiadmin="yes"
524                 ], [
525                         enable_libmapiadmin="no"
526                 ])
527
528 if test x"$enable_libmapiadmin" = x"yes"; then
529         PKG_CHECK_MODULES(SAMR, dcerpc_samr ndr_standard)
530         OC_RULE_ADD(libmapiadmin, LIBS)
531 fi
532
533
534
535 dnl ##########################################################################
536 dnl tools dependencies
537 dnl ##########################################################################
538
539 dnl --------------------------------------------------------------------------
540 dnl Check for libical                                                        
541 dnl --------------------------------------------------------------------------
542 PKG_CHECK_MODULES([ICAL], [libical], [have_libical="yes"], [have_libical="no"])
543 AC_SUBST(ICAL_CFLAGS)
544 AC_SUBST(ICAL_LIBS)
545 PKG_CHECK_MODULES([ICAL_0_46], [libical >= 0.46], [have_libical_0_46="1"], [have_libical_0_46="0"])
546 AC_SUBST(have_libical_0_46)
547
548 dnl --------------------------------------------------------------------------
549 dnl Check for popt
550 dnl --------------------------------------------------------------------------
551
552 AC_CHECK_LIB([popt], [poptFreeContext], 
553              [
554                AC_DEFINE(HAVE_LIBPOPT, 1, [Define if you want to use libpopt])
555                enable_libpopt="yes"
556              ], 
557              [ 
558                AC_MSG_WARN([libpopt is missing - can't build openchange tools]) 
559                enable_libpopt="no"
560              ])
561
562 if test x"$enable_libpopt" = x"yes"; then
563         if test x"$enable_libmapiadmin" = x"yes"; then
564            OC_RULE_ADD(openchangepfadmin, TOOLS)
565            OC_RULE_ADD(mapitest, TOOLS)
566         fi
567
568         if test x"$enable_libocpf" = x"yes"; then
569            OC_RULE_ADD(openchangeclient, TOOLS)
570            #       OC_RULE_ADD(mapistore_fsocpf, MAPISTORE)
571         fi
572
573         if test x"$have_libical" = x"yes"; then
574             OC_RULE_ADD(exchange2ical, TOOLS)
575         fi
576
577         MAPISTORE_TEST=mapistore_test
578         OC_RULE_ADD(mapiprofile, TOOLS)
579         OC_RULE_ADD(openchangemapidump, TOOLS)
580         OC_RULE_ADD(schemaIDGUID, TOOLS)
581
582         OC_RULE_ADD(check_fasttransfer, TOOLS)
583         OC_RULE_ADD(test_asyncnotif, TOOLS)
584 fi
585 AC_SUBST(MAPISTORE_TEST)
586
587 dnl --------------------------------------------------------------------------
588 dnl Check for libmagic
589 dnl --------------------------------------------------------------------------
590 AC_CHECK_LIB([magic], [magic_open],
591              [
592                AC_DEFINE(HAVE_LIBMAGIC, 1, [Define if you want to use libmagic])
593                MAGIC_LIBS="-lmagic -lz"
594                enable_libmagic="yes"
595              ],
596                AC_SUBST(MAGIC_LIBS)
597              [
598                AC_MSG_WARN([libmagic is missing - can't build exchange2mbox])
599                enable_libmagic="no"
600              ])
601
602 if test x"$enable_libmagic" = x"yes"; then
603         AC_CHECK_LIB([z], [gzopen], [], 
604                      [
605                        AC_MSG_ERROR([Z library not found, please install zlib-devel.], [1])
606                      ])
607         if test x"$enable_libpopt" = x"yes"; then
608                 OC_RULE_ADD(exchange2mbox, TOOLS)
609         fi
610 fi
611
612 dnl ##########################################################################
613 dnl libmapistore dependencies
614 dnl ##########################################################################
615
616 AC_CHECK_LIB([rt], [mq_open],
617             [
618                         RT_LIBS="-lrt"
619                         AC_SUBST(RT_LIBS)
620                 ],
621                 [
622                         AC_CHECK_FUNCS(mq_open, [
623                                 RT_LIBS=""
624                                 AC_SUBST(RT_LIBS)
625                         ], [
626                                 AC_MSG_ERROR([unable to find mq_open])
627                         ])
628                 ])
629
630 dnl ##########################################################################
631 dnl libmapistore backends dependencies
632 dnl ##########################################################################
633
634 OC_MAPISTORE=
635 OC_MAPISTORE_CLEAN=
636 OC_MAPISTORE_INSTALL=
637 OC_MAPISTORE_UNINSTALL=
638 AC_SUBST(OC_MAPISTORE)
639 AC_SUBST(OC_MAPISTORE_CLEAN)
640 AC_SUBST(OC_MAPISTORE_INSTALL)
641 AC_SUBST(OC_MAPISTORE_UNINSTALL)
642
643 dnl ##########################################################################
644 dnl mapiproxy server
645 dnl ##########################################################################
646 if test x$PYTHON != x; then
647         OC_RULE_ADD(mapiproxy, SERVER)
648 fi
649
650 AC_ARG_WITH(modulesdir, 
651 [AS_HELP_STRING([--with-modulesdir], [Modules path to use])],
652 [modulesdir="$withval"; ],
653 [modulesdir="\${prefix}/modules"; ])
654
655 AC_SUBST(modulesdir)
656
657 dnl ##########################################################################
658 dnl Python bindings dependencies
659 dnl ##########################################################################
660 AC_ARG_ENABLE(pymapi, AC_HELP_STRING([--enable-pymapi],
661                            [build Python bindings for libmapi]),
662                            enable_pymapi="$enableval",
663                            enable_pymapi=no)
664 PYCDIR=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, prefix='\\$(prefix)')"`
665 AC_SUBST(PYCDIR)
666
667 dnl Enable pyopenchange by default
668 PYMAPIALL="$PYMAPIALL pyopenchange"
669 PYMAPIINSTALL="$PYMAPIALLINSTALL pyopenchange-install"
670 PYMAPIUNINSTALL="$PYMAPIUNINSTALL pyopenchange-uninstall"
671
672 AC_SUBST(PYMAPIALL)
673 AC_SUBST(PYMAPIINSTALL)
674 AC_SUBST(PYMAPIUNINSTALL)
675
676
677 dnl ##########################################################################
678 dnl Documentation dependencies
679 dnl ##########################################################################
680 AC_PATH_PROG(DOXYGEN, doxygen)
681 if test x"$DOXYGEN" = x""; then
682         AC_MSG_WARN(doxygen)
683         enable_doxygen="no"
684 else
685         enable_doxygen="yes"
686         AC_SUBST(DOXYGEN)
687 fi
688
689 dnl ##########################################################################
690 dnl (Optional) subunit support in mapitest
691 dnl ##########################################################################
692 PKG_CHECK_MODULES(SUBUNIT, libsubunit, found_subunit=yes, found_subunit=no)
693 AC_SUBST(SUBUNIT_CFLAGS)
694 AC_SUBST(SUBUNIT_LIBS)
695
696 if test x"$found_subunit" = x"yes"; then
697         AC_DEFINE(HAVE_SUBUNIT, 1, [Define if you want to use subunit])
698         have_subunit="yes"
699 else
700         have_subunit="no"
701 fi
702
703 dnl ##########################################################################
704 dnl Qt4 support
705 dnl ##########################################################################
706 AC_ARG_ENABLE(openchange-qt4,
707               AC_HELP_STRING([--enable-openchange-qt4],
708                              [Compile OpenChange Qt4 wrapper.]),
709               enable_openchange_qt4=$enableval,
710               enable_openchange_qt4="no")
711 if test x$enable_openchange_qt4 = xyes; then
712   PKG_CHECK_MODULES(Qt4,
713                     QtCore >= 4.3.0 QtGui >= 4.3.0)
714   MOC=`$PKG_CONFIG --variable=moc_location QtCore`
715 elif test x$enable_openchange_qt4 = xtry; then
716   PKG_CHECK_MODULES(Qt4,
717                     QtCore >= 4.3.0 QtGui >= 4.3.0,
718                     [enable_openchange_qt4="yes"
719                      MOC=`$PKG_CONFIG --variable=moc_location QtCore`],
720                     [enable_openchange_qt4="no"])
721 fi
722
723 AC_SUBST(Qt4_CFLAGS)
724 AC_SUBST(Qt4_LIBS)
725 AC_SUBST(MOC)
726
727 if test "x$enable_openchange_qt4" = "xyes"; then
728    OPENCHANGE_QT4="openchange_qt4"
729 fi
730 AC_SUBST(OPENCHANGE_QT4)
731
732 dnl ***********************
733 dnl Makefiles 
734 dnl ***********************
735 AC_CONFIG_FILES([config.mk libmapi.pc libmapiadmin.pc libocpf.pc mapiproxy/libmapiproxy.pc
736                  mapiproxy/libmapiserver.pc mapiproxy/libmapistore.pc libmapi++.pc
737                  Doxyfile libmapi++/Doxyfile libocpf/Doxyfile libmapiadmin/Doxyfile
738                  libmapi/Doxyfile mapiproxy/Doxyfile utils/mapitest/Doxyfile
739                  mapiproxy/libmapistore/Doxyfile])
740 AC_OUTPUT
741
742
743 dnl ##########################################################################
744 dnl Print configuration info
745 dnl ##########################################################################
746
747 OC_SETVAL(libmapi)
748 OC_SETVAL(libmapiadmin)
749 OC_SETVAL(libocpf)
750 OC_SETVAL(libmapixx)
751
752 OC_SETVAL(openchangeclient)
753 OC_SETVAL(mapiprofile)
754 OC_SETVAL(openchangepfadmin)
755 OC_SETVAL(exchange2mbox)
756 OC_SETVAL(exchange2ical)
757 OC_SETVAL(mapitest)
758 OC_SETVAL(openchangemapidump)
759 OC_SETVAL(schemaIDGUID)
760 OC_SETVAL(mapiproxy)
761
762 OC_SETVAL(doxygen)
763
764 AC_MSG_RESULT([
765
766 ===============================================================
767 OpenChange Configuration (Please review)
768
769            * OpenChange Libraries:
770              - libmapi (C library):     $enable_libmapi
771                       Thread support:   $enable_pthread $enable_thread_lib
772              - libmapi++ (C++ library): $enable_libmapixx
773              - libmapiadmin:            $enable_libmapiadmin
774              - libocpf:                 $enable_libocpf
775
776            * OpenChange Server:
777              - mapiproxy:               $enable_mapiproxy
778
779            * OpenChange mapistore backends:
780              - backends dependencies goes here
781
782            * OpenChange Tools:
783              - openchangeclient:        $enable_openchangeclient
784              - mapiprofile:             $enable_mapiprofile
785              - openchangepfadmin:       $enable_openchangepfadmin
786              - exchange2mbox:           $enable_exchange2mbox
787              - exchange2ical:           $enable_exchange2ical
788              - mapitest:                $enable_mapitest
789              - openchangemapidump:      $enable_openchangemapidump
790              - schemaIDGUID:            $enable_schemaIDGUID
791
792            * subunit format (mapitest): $have_subunit
793
794            * OpenChange Documentation:  $enable_doxygen
795
796            * Coverage Tests:            $use_cov
797
798            * OpenChange Bindings:
799              - Qt4:                     $enable_openchange_qt4
800
801            * Installation prefix:       $prefix
802
803 ===============================================================
804
805 ])
806