Merged revisions 10129-10142 via svnmerge from
[wvapps.git] / unity / configure.ac
bloba33bd6851d67a6204bfc425060e43b98fc4901ed
1 # Process this file with autoconf to produce a configure script.
2 AC_INIT(Project Unity, 0.1, wvstreams-dev@nit.ca, unity)
3 SO_VERSION=0.1
5 AC_CONFIG_HEADERS([config.h])
7 save_args() {
8     ARGS=""
10     while test $# -gt 0; do
11         ARGS="$ARGS \"$1\""
12         shift
13     done
15     rm -f reconfigure
16     echo $0 $ARGS '"$@"' >reconfigure
17     chmod +x reconfigure
20 save_args "$@"
22 # append to a variable without introducing superfluous white space
23 AC_DEFUN(WV_APPEND,
24     if test -z "$$1"; then
25         $1="$2"
26     else
27         $1="$$1 $2"
28     fi
31 QT_SEARCH_PATH="
32 $prefix
33 /usr
34 $libdir/qt3
35 $libdir/qt
36 $datadir/qt3
37 $datadir/qt
38 /usr
39 /usr/lib/qt3
40 /usr/share/qt3
41 /usr/lib/qt
42 /usr/share/qt
45 AC_ARG_ENABLE(debug,
46               AC_HELP_STRING([--disable-debug],
47                              [strip debug information]))
49 AC_ARG_ENABLE(devel,
50               AC_HELP_STRING([--enable-devel],
51                              [developer options]))
53 AC_ARG_ENABLE(efence,
54               AC_HELP_STRING([--enable-efence],
55                              [link against Electric Fence]))
57 AC_ARG_ENABLE(exceptions,
58               AC_HELP_STRING([--disable-exceptions],
59                              [C++ exceptions (compiler)]))
61 AC_ARG_ENABLE(fatal-warnings,
62               AC_HELP_STRING([--enable-fatal-warnings],
63                              [turn warnings into errors]))
65 AC_ARG_ENABLE(optimization,
66               AC_HELP_STRING([--disable-optimization],
67                              [optimization options]))
69 AC_ARG_ENABLE(rtti,
70               AC_HELP_STRING([--disable-rtti],
71                              [C++ run-time type identification (compiler)]))
73 AC_ARG_ENABLE(verbose,
74               AC_HELP_STRING([--enable-verbose],
75                              [verbose compilation output]))
77 AC_ARG_ENABLE(warnings,
78               AC_HELP_STRING([--disable-warnings],
79                              [extra warnings]))
81 AC_ARG_ENABLE(testgui,
82               AC_HELP_STRING([--disable-testgui],
83                              [GUI for unit tests]))
85 AC_ARG_WITH(dbus, AC_HELP_STRING([--with-dbus], [DBus]))
86 AC_ARG_WITH(gconf, AC_HELP_STRING([--with-gconf], [GConf]))
87 AC_ARG_WITH(qt, AC_HELP_STRING([--with-qt], [Qt]))
88 AC_ARG_WITH(kde, AC_HELP_STRING([--with-kde], [KDE]))
89 AC_ARG_WITH(wvstreams, AC_HELP_STRING([--with-wvstreams], [WvStreams (required)]))
91 AC_ARG_VAR(MOC, [Qt meta object compiler])
93 # avoid autoconf's default values, but keep those the user might have given
94 CFLAGS="$CFLAGS"
95 CXXFLAGS="$CXXFLAGS"
97 AC_PROG_CC
98 AC_PROG_CXX
99 AC_PROG_CPP
100 AC_PROG_CXXCPP
101 AC_PROG_INSTALL
102 AC_PROG_LN_S
103 AC_PROG_AWK
105 # Setting the default language to C++ means that CXX and CXXCPP will be 
106 # used for compile tests.
107 AC_LANG(C++)
109 # devel
110 if test "$enable_devel" = "yes"; then
111     enable_debug=yes
112     enable_fatal_warnings=yes
113     enable_warnings=yes
116 # exceptions
117 if test "$enable_exceptions" = "no"; then
118     WV_APPEND(CXXFLAGS, -fno-exceptions)
121 # resolver-fork
122 if test "$enable_resolver_fork" = "no"; then
123     AC_DEFINE(WVRESOLVER_SKIP_FORK,,
124               [Define to disable WvResolver forking for debugging with gdb.])
127 # resolver-fork
128 if test "$enable_delete_detector" = "yes"; then
129     AC_DEFINE(ENABLE_DELETE_DETECTOR,,
130               [Define to enable the XPLC delete detector.])
133 # rtti
134 if test "$enable_rtti" = "no"; then
135     WV_APPEND(CXXFLAGS, -fno-rtti)
138 dnl Look for GConf
139 PKG_CHECK_MODULES(GCONF, gconf-2.0)
141 dnl Look for DBus
142 PKG_CHECK_MODULES(DBUS, dbus-1)
143 PKG_CHECK_MODULES(DBUS_GLIB, dbus-glib-1)
145 dnl Look for Elektra
146 PKG_CHECK_MODULES(ELEKTRA, elektra)
148 # valgrind
149 AC_CHECK_PROG(VALGRIND, valgrind, valgrind)
150 AC_CHECK_HEADERS(valgrind/memcheck.h)
152 dnl Look for WvStreams
153 PKG_CHECK_MODULES(UNICONF, libuniconf)
154 UNICONF_VERSION=`pkg-config --variable=version libuniconf`
156 dnl And see if we have UniConf::isok()
157 AC_CACHE_CHECK([whether UniConf::isok() is declared],
158                [have_decl_uniconf_isok], [
159    CPPFLAGS_save="$CPPFLAGS"
160    CPPFLAGS="$CPPFLAGS_save $UNICONF_CFLAGS"
161    AC_TRY_COMPILE([
162 #include "uniconf.h"
163 #include "uniconfroot.h"],
164                   [UniConfRoot root; UniConf uni(root); uni.isok(); return 0;],
165                   [have_decl_uniconf_isok=yes;], [have_decl_uniconf_isok=no])
166    CPPFLAGS="$CPPFLAGS_save"
168 if test "$have_decl_uniconf_isok" = yes; then
169    AC_DEFINE([HAVE_DECL_UNICONF_ISOK], [1],
170              [UniConf::isok() doesn't exist in WvStreams 4.0])
173 # qt
174 if test "$with_qt" != "no"; then
175     test "$with_qt" = yes && with_qt=
176     AC_CACHE_CHECK([for Qt], [wv_cv_with_qt], [
177         wv_cv_with_qt=no
178         CPPFLAGS_save="$CPPFLAGS"
179         LDFLAGS_save="$LDFLAGS"
180         for wv_qtdir in $with_qt $QTDIR $QT_SEARCH_PATH; do
181             eval wv_qtdir="$wv_qtdir"                      
182             CPPFLAGS="$CPPFLAGS_save -I$wv_qtdir/include -I$wv_qtdir/include/qt3"
183             LDFLAGS="$LDFLAGS_save -L$wv_qtdir/lib -lqt-mt"
184             AC_TRY_LINK([#include <qstring.h>],
185                         [QString x("hello"); return 0; ],
186                         [wv_cv_with_qt=$wv_qtdir; break])
187         done
188         CPPFLAGS="$CPPFLAGS_save"
189         LDFLAGS="$LDFLAGS_save"
190     ])
191     with_qt=$wv_cv_with_qt
192     AC_PATH_PROG(MOC, moc, [moc not found], $with_qt/bin)
195 dnl Look for KDE
196 if test "$with_kde" != "no"; then
197     test "$with_kde" = yes && with_kde=
198     AC_CACHE_CHECK([for KDE], [wv_cv_with_kde], [
199         wv_cv_with_kde=no
200         CPPFLAGS_save="$CPPFLAGS"
201         LDFLAGS_save="$LDFLAGS"
202         for wv_kdedir in $with_kde /usr /usr/local; do
203             eval wv_kdedir="$wv_kdedir"                      
204             CPPFLAGS="$CPPFLAGS_save -I$with_qtdir/include -I$wv_qtdir/include/qt3 -I$wv_kdedir/include -I$wv_kdedir/include/kde"
205             LDFLAGS="$LDFLAGS_save -L$wv_qtdir/lib -lqt-mt"
206             AC_TRY_LINK([#include <kapplication.h>],
207                         [return 0; ],
208                         [wv_cv_with_kde=$wv_kdedir; break])
209         done
210         CPPFLAGS="$CPPFLAGS_save"
211         LDFLAGS="$LDFLAGS_save"
212     ])
213     with_kde=$wv_cv_with_kde
215     # Check for libkdecore's SO version out of the SONAME
216     AC_CACHE_CHECK([for libkdecore's SO version], [wv_cv_kdecore_sover],
217                    [wv_cv_kdecore_sover="libkdecore.so not found"
218                     LDFLAGS_save="$LDFLAGS"
219                     LDFLAGS="$LDFLAGS_save -L$with_kde/lib -lkdecore"
220                     AC_TRY_LINK([],
221                                 [return 0;],
222                                 [wv_cv_kdecore_sover=`ldd conftest$ac_exeext |
223                                  $AWK '/libkdecore.so/{
224                                        sub(/libkdecore\.so\.?/, "", $1)
225                                        print $1
226                                        }'`])
227                     LDFLAGS="$LDFLAGS_save"])
228     KDECORE_SO_VERSION=$wv_cv_kdecore_sover
231 # check for missing packages
232 missing_required=
233 missing_devel=
234 if test "$with_qt" = "no"; then
235     AC_MSG_WARN([Qt is missing.])
236     missing_devel=yes
239 if test "$with_kde" = "no"; then
240     AC_MSG_WARN([KDE is missing.])
241     missing_devel=yes
242 elif test "$KDECORE_SO_VERSION" = "libkdecore.so not found"; then
243     AC_MSG_WARN([KDE is improperly installed.])
244     missing_devel=yes
248 if test "$VALGRIND" = ""; then
249     AC_MSG_WARN([Valgrind is missing.])
252 if test "$VALGRIND" != ""; then
253     VALGRIND="valgrind --leak-check=yes --num-callers=10 --logfile-fd=-1 --suppressions=\$(WVSTREAMS_SRC)/suppressions.wv"
256 AC_SUBST(enable_debug)
257 AC_SUBST(enable_devel)
258 AC_SUBST(enable_efence)
259 AC_SUBST(enable_exceptions)
260 AC_SUBST(enable_fatal_warnings)
261 AC_SUBST(enable_optimization)
262 AC_SUBST(enable_resolver_fork)
263 AC_SUBST(enable_delete_detector)
264 AC_SUBST(enable_rtti)
265 AC_SUBST(enable_verbose)
266 AC_SUBST(enable_warnings)
267 AC_SUBST(enable_testgui)
268 AC_SUBST(with_qt)
269 AC_SUBST(with_kde)
270 AC_SUBST(SO_VERSION)
271 AC_SUBST(KDECORE_SO_VERSION)
272 AC_SUBST(DBUS_CFLAGS)
273 AC_SUBST(DBUS_LIBS)
274 AC_SUBST(DBUS_GLIB_CFLAGS)
275 AC_SUBST(DBUS_GLIB_LIBS)
276 AC_SUBST(ELEKTRA_CFLAGS)
277 AC_SUBST(ELEKTRA_LIBS)
278 AC_SUBST(GCONF_CFLAGS)
279 AC_SUBST(GCONF_LIBS)
280 AC_SUBST(UNICONF_CFLAGS)
281 AC_SUBST(UNICONF_LIBS)
282 AC_SUBST(UNICONF_VERSION)
283 AC_SUBST(HAVE_DECL_UNICONF_ISOK)
285 AC_CONFIG_FILES(config.mk
286                 dbus/libuniconf-dbus.pc
287                 gconf/libuniconf-gconf.pc
288                 maildir/libuniconf-maildir.pc)
289 AC_OUTPUT