1dnl Process this file with autoconf to produce a configure script.
2dnl
3dnl Copyright (C) 2001 - 2014 Rob Caelers & Raymond Penners
4dnl
5
6m4_define([workrave_major_version], [1])
7m4_define([workrave_minor_version], [10])
8m4_define([workrave_micro_version], [44])
9m4_define([workrave_version_suffix], [0])
10m4_define([workrave_version],
11          [workrave_major_version.workrave_minor_version.workrave_micro_version])
12#m4_define([workrave_version],
13#          [workrave_major_version.workrave_minor_version.workrave_micro_version.workrave_version_suffix])
14#m4_define([workrave_version],
15#          [workrave_major_version.workrave_minor_version])
16m4_define([workrave_resource_version],
17          [workrave_major_version,workrave_minor_version,workrave_micro_version,workrave_version_suffix])
18
19AC_PREREQ([2.67])
20AC_INIT([workrave],
21        [workrave_version],
22        [https://github.com/rcaelers/workrave/issues],
23        [workrave],
24        [http://www.workrave.org])
25AC_CANONICAL_HOST
26AC_CANONICAL_TARGET
27
28AC_CONFIG_SRCDIR([backend/include/ICore.hh])
29AC_CONFIG_MACRO_DIR([m4])
30AC_CONFIG_HEADER([config.h])
31
32AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign silent-rules tar-ustar subdir-objects])
33dnl AM_SILENT_RULES([yes])
34
35GNOME_SHELL_VERSION=3.26.1
36AC_SUBST(GNOME_SHELL_VERSION)
37
38if test -d $srcdir/.git && test "$TINDERBOX_BUILD" = yes; then
39    git_version=`git describe --tags --abbrev=10 --dirty 2>/dev/null`
40    AC_DEFINE_UNQUOTED(GIT_VERSION, "$git_version", [GIT Version])
41fi
42
43
44dnl
45dnl Command line options.
46dnl
47
48AC_ARG_ENABLE(app-gtk,
49              [AS_HELP_STRING([--disable-app-gtk],
50                              [compile without Gtk support (NOT recommended)])])
51
52AC_ARG_ENABLE(app-text,
53              [AS_HELP_STRING([--enable-app-text],
54                              [compile with dummy text GUI support (NOT recommended)])])
55
56AC_ARG_ENABLE(xml,
57              [AS_HELP_STRING([--disable-xml],
58                              [compile without XML support])])
59
60AC_ARG_ENABLE(gconf,
61              [AS_HELP_STRING([--enable-gconf],
62                              [compile with Gnome gconf2 support])])
63
64AC_ARG_ENABLE(gsettings,
65              [AS_HELP_STRING([--disable-gsettings],
66                              [compile without GSettings support])])
67
68AC_ARG_ENABLE(gnome3,
69              [AS_HELP_STRING([--disable-gnome3],
70                              [compile without Gnome 3 support])])
71
72AC_ARG_ENABLE(indicator,
73              [AS_HELP_STRING([--enable-indicator],
74                              [compile with Unity/Ayatana indicator applet support])])
75
76AC_ARG_ENABLE(xfce,
77              [AS_HELP_STRING([--enable-xfce],
78                              [compile with preliminary XFCE applet support])])
79
80AC_ARG_ENABLE(mate,
81              [AS_HELP_STRING([--enable-mate],
82                              [compile with preliminary MATE applet support])])
83AC_ARG_ENABLE(dbus,
84              [AS_HELP_STRING([--disable-dbus],
85                              [compile without DBus support])])
86
87AC_ARG_ENABLE(gstreamer,
88              [AS_HELP_STRING([--disable-gstreamer],
89                              [compile without GStreamer audio support])])
90
91AC_ARG_ENABLE(pulse,
92              [AS_HELP_STRING([--disable-pulse],
93                              [compile without PulseAudio support])])
94
95AC_ARG_ENABLE(debug,
96              [AS_HELP_STRING([--enable-debug],
97                              [compile with debugging flags set])])
98
99AC_ARG_ENABLE(distribution,
100              [AS_HELP_STRING([--disable-distribution],
101                              [compile without support for distributed operation])])
102
103AC_ARG_ENABLE(experimental,
104              [AS_HELP_STRING([--enable-experimental],
105                              [compile with experimental features])])
106
107AC_ARG_ENABLE(exercises,
108              [AS_HELP_STRING([--disable-exercises],
109                              [compile without exercises support])])
110
111AC_ARG_ENABLE(tests,
112              [AS_HELP_STRING([--enable-tests],
113                              [compile with test code])])
114
115AC_ARG_ENABLE(tracing,
116              [AS_HELP_STRING([--enable-tracing],
117                              [compile with method call tracing])],
118              [test "x$enable_tracing" = "xyes" && enable_debug=yes])
119
120AC_ARG_ENABLE(monitors,
121             [AS_HELP_STRING([--enable-monitors=LIST],
122                             [comma separated list of activity monitors to use, currently support: record, screensaver, x11events (Unix Only) @<:@default=yes@:>@])])
123
124
125case x"$target" in
126  xNONE | x)
127    target_or_host="$host" ;;
128  *)
129    target_or_host="$target" ;;
130esac
131
132
133dnl
134dnl Checks for programs
135dnl
136
137AC_USE_SYSTEM_EXTENSIONS
138
139AC_PROG_CC
140AM_PROG_CC_C_O
141AM_PROG_AR
142AC_PROG_OBJC
143AC_PROG_OBJCXX
144AC_PROG_CXX
145AC_PROG_CPP
146AC_PROG_INSTALL
147AC_PROG_LN_S
148AC_PROG_MAKE_SET
149AC_PROG_LIBTOOL
150AC_CHECK_PROGS(M4, gm4 m4, m4)
151
152AC_CHECK_PROGS(WINDRES, ${target_or_host}-windres,false)
153
154dnl
155dnl checks for compiler characteristics
156dnl
157
158AC_LANG([C++])
159AC_REQUIRE_CPP
160AC_C_INLINE
161AC_C_CONST
162
163AC_DEFUN([ADD_COMPILER_FLAG],[
164AX_CHECK_COMPILE_FLAG([$1],[
165CPPFLAGS="$CPPFLAGS $1"
166])])
167
168ADD_COMPILER_FLAG([-Wno-cast-function-type])
169
170dnl
171dnl Headers/Types/Functions
172dnl
173
174AC_HEADER_STDC
175AC_CHECK_HEADERS([errno.h stdlib.h sys/time.h sys/select.h unistd.h])
176AC_CHECK_MEMBER(MOUSEHOOKSTRUCT.hwnd,AC_DEFINE(HAVE_STRUCT_MOUSEHOOKSTRUCT,,[struct MOUSEHOOKSTRUCT]),, [#include <windows.h>])
177AC_CHECK_MEMBER(MOUSEHOOKSTRUCTEX.mouseData,AC_DEFINE(HAVE_STRUCT_MOUSEHOOKSTRUCTEX,,[struct MOUSEHOOKSTRUCTEX]),, [#include <windows.h>])
178
179have_ishelldispatch=no
180AC_MSG_CHECKING([IShellDispatch])
181AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <shlobj.h>]], [[ IShellDispatch* pShellDispatch = NULL; ]])],[have_ishelldispatch=yes
182         AC_DEFINE(HAVE_ISHELLDISPATCH, 1, "IShellDispatch")
183         AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
184
185AC_CHECK_FUNCS([gettimeofday nanosleep select setlocale realpath])
186
187have_extern_timezone_defined=no
188AC_MSG_CHECKING([external timezone variable defined in time.h])
189AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[ timezone += 1;
190          return 0;]])],[have_extern_timezone_defined=yes
191         AC_DEFINE(HAVE_EXTERN_TIMEZONE_DEFINED, 1, "External timezone")
192         AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
193
194have_extern_timezone=no
195AC_MSG_CHECKING([external timezone variable])
196AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[ extern long timezone;
197          timezone += 1;
198          return 0;]])],[have_extern_timezone=yes
199         AC_DEFINE(HAVE_EXTERN_TIMEZONE, 1, "External timezone")
200         AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
201
202dnl Update version and date.
203AC_SUBST(VERSION)
204ISODATE=`date +%Y-%m-%d`
205AC_SUBST(ISODATE)
206
207RESOURCE_VERSION=workrave_resource_version
208AC_SUBST(RESOURCE_VERSION)
209
210AC_CANONICAL_HOST
211AC_PREFIX_PROGRAM(workrave)
212
213dnl
214dnl Checking target platform.
215dnl
216AC_MSG_CHECKING([for platform])
217
218platform_os_win32=no
219platform_os_osx=no
220platform_os_unix=no
221platform_variant_x11=no
222
223case "$target_or_host" in
224  *-*mingw*|*-*-mingw*|*-*-cygwin*)
225    platform_os_win32=yes
226    platform_os_name="Windows"
227   AC_DEFINE(PLATFORM_OS_WIN32,,[Define if compiling for the Win32 platform])
228   AC_DEFINE(HAVE_LANGUAGE_SELECTION,,[Define if the UI language can be defined in the preferences])
229    ;;
230  *-*-darwin* | *-*-rhapsody*)
231    platform_os_osx=yes
232    platform_os_name="OS X"
233   AC_DEFINE(PLATFORM_OS_OSX,,[Define if compiling for the OS X platform])
234    ;;
235  *)
236    platform_os_unix=yes
237    platform_os_name="Unix"
238   AC_DEFINE(PLATFORM_OS_UNIX,,[Define if compiling for a Unix platform])
239    ;;
240esac
241
242AC_MSG_RESULT([$platform_os_name])
243
244AM_CONDITIONAL(PLATFORM_OS_WIN32, test "x$platform_os_win32" = "xyes")
245AM_CONDITIONAL(PLATFORM_OS_OSX, test "x$platform_os_osx" = "xyes")
246AM_CONDITIONAL(PLATFORM_OS_UNIX, test "x$platform_os_unix" = "xyes")
247AM_CONDITIONAL(HAVE_LANGUAGE_SELECTION, test "x$platform_os_win32" = "xyes")
248
249dnl
250dnl Debug
251dnl
252
253config_debug=no
254config_tracing=no
255
256if test "x$enable_debug" = "xyes"
257then
258   config_debug=yes
259   CFLAGS="${CFLAGS} -O0 -g -Wall"
260   CXXFLAGS="${CXXFLAGS} -O0 -g -Wall"
261   LDFLAGS="${LDFLAGS} -g"
262
263   AC_DEFINE([GLIBCXX_FORCE_NEW], , [Define for debugging purposes])
264   AC_DEFINE([GLIBCPP_FORCE_NEW], , [Define for debugging purposes])
265else
266   AC_DEFINE([NDEBUG], , [Define if debugging code should be disabled])
267fi
268
269if test "x$enable_tracing" = "xyes"
270then
271   config_tracing=yes
272   AC_DEFINE([TRACING], , [Define to enable method call tracing])
273fi
274
275
276dnl
277dnl Windows specific checks
278dnl
279
280have_dsound=no
281LIBSTDCPP_LIBS=
282WIN32CONSOLE=
283DIRECTSOUNDLIBS=
284
285if test "x$platform_os_win32" = "xyes"
286then
287    LIBSTDCPP_LIBS=-lstdc++
288
289    AC_DEFINE([_WIN32_IE],    [0x0600], [Windows version])
290    AC_DEFINE([_WIN32_WINNT], [0x0600], [Windows version])
291
292    #if test "x$enable_debug" != "xyes"
293    #then
294    WIN32CONSOLE=-mwindows
295    #else
296    #    WIN32CONSOLE=-mconsole
297    #fi
298
299    enable_gconf=no
300    enable_gnome3=no
301    enable_xml=no
302    enable_indicator=no
303    enable_xfce=no
304    enable_mate=no
305
306   AC_CHECK_HEADER(dsound.h, [ AC_DEFINE(HAVE_DSOUND, 1, [Define if we have DirectSound])
307                                        have_dsound=yes DIRECTSOUNDLIBS="-ldsound -luuid -ldxguid -ldxerr8"
308                                     ])
309
310   AC_CHECK_HEADERS([dxerr.h dxerr8.h], [], [],
311[[#include <windows.h>
312]])
313
314   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
315#include <mmdeviceapi.h>
316#include <endpointvolume.h>
317
318static REFIID foo = __uuidof(IAudioEndpointVolume);
319   ]], [[
320      IMMDeviceEnumerator *device_enum = NULL;
321   ]])],[ have_mmdeviceapi=yes
322     AC_DEFINE(HAVE_MMDEVICEAPI_H, 1, [Define if we have mm device api])
323     AC_MSG_RESULT(yes)
324   ],[AC_MSG_RESULT(no)])
325
326fi
327
328AC_SUBST(LIBSTDCPP_LIBS)
329AC_SUBST(WIN32CONSOLE)
330AC_SUBST(DIRECTSOUNDLIBS)
331
332AM_CONDITIONAL(HAVE_DSOUND, test "x$have_dsound" = "xyes")
333
334dnl
335dnl OSX specific checks
336dnl
337
338PKG_PROG_PKG_CONFIG
339
340AC_SUBST(OSX_CFLAGS)
341
342if test "x$platform_os_osx" = "xyes"
343then
344
345   PKG_CHECK_MODULES(IGE, gtk-mac-integration >= 2.0,
346        [AC_DEFINE(HAVE_GTK_MAC_INTEGRATION, 1, [Define if we have gtk-mac-integration 2.0+])],
347        [PKG_CHECK_MODULES(IGE, ige-mac-integration >= 0.6, AC_DEFINE(HAVE_IGE_MAC_INTEGRATION, 1, [Define if we have ige-mac-integration 0.6+]))])
348
349   AC_CHECK_LIB(resolv, res_query)
350
351   AC_CHECK_HEADER(CoreFoundation/CoreFoundation.h, [ AC_CHECK_HEADER(IOKit/IOKitLib.h,
352                                     [  AC_DEFINE(HAVE_IOKIT, 1, [Define if we have IOKit])
353                                        LIBS="$LIBS -framework IOKit -framework CoreFoundation"
354                                     ])])
355
356    config_gnome3=no
357    config_gconf=no
358
359    LDFLAGS="$LDFLAGS -headerpad_max_install_names"
360    LIBS="$LIBS -framework CoreServices -framework Carbon -framework Cocoa -framework Foundation"
361    OSX_CFLAGS=""
362fi
363
364AC_SUBST(IGE_LIBS)
365AC_SUBST(IGE_CFLAGS)
366
367dnl
368dnl Unix specific checks
369dnl
370
371if test "x$platform_os_unix" = "xyes"
372then
373    AC_PATH_X
374    AC_PATH_XTRA
375
376    if test x$have_x != xyes ; then
377       AC_MSG_ERROR(X11 required on Unix platform)
378    fi
379
380    LIBS_save=$LIBS
381    if test -n "$ac_x_libraries"
382    then
383       LIBS="$LIBS -L$x_libraries"
384    fi
385
386    CPPFLAGS_save="$CPPFLAGS"
387    if test -n "$x_includes"
388    then
389       CPPFLAGS="$CPPFLAGS -I$x_includes"
390    fi
391
392    have_xrecord=no
393    AC_CHECK_LIB(Xtst, XRecordEnableContext,
394                       have_xrecord=yes X_LIBS="$X_LIBS -lXtst" AC_DEFINE(HAVE_XRECORD,,[Define if the RECORD extension is available]),
395    )
396    if test x$have_xrecord != xyes ; then
397       AC_MSG_ERROR(X RECORD extension headers files required on Unix platform)
398    fi
399
400    AC_CHECK_LIB(Xext, XScreenSaverRegister,
401                       have_xscreensaver=yes X_LIBS="$X_LIBS -lX11 -lXext",
402                       [],
403                       [-lX11 -lXext -lm])
404    AC_CHECK_LIB(Xss, XScreenSaverRegister,
405                      have_xscreensaver=yes X_LIBS="$X_LIBS -lX11 -lXss",
406                      [],
407                      [-lX11 -lXext -lm])
408
409    if test "x$have_xscreensaver" = "xyes"; then
410       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
411            #include <X11/Xlib.h>
412            #include <X11/extensions/scrnsaver.h>
413          ]], [[]])], [], [have_xscreensaver=no])
414    fi
415
416    if test "x$have_xscreensaver" = "xyes" ; then
417       AC_DEFINE(HAVE_SCREENSAVER, 1, [Define if XScreenSaver is available.])
418    fi
419
420    PKG_CHECK_MODULES(X11SM, sm ice)
421    LIBS=$LIBS_save
422    CPPFLAGS=$CPPFLAGS_save
423fi
424
425dnl
426dnl Monitors
427dnl
428
429if test "x$platform_os_unix" = "xyes"
430then
431
432    if test "x$enable_monitors" = "x"; then
433        enable_monitors="mutter"
434
435        if test "x$have_xrecord" = "xyes" ; then
436            if test "x$enable_monitors" != "x"; then
437               enable_monitors="$enable_monitors,"
438            fi
439            enable_monitors="${enable_monitors}record"
440        fi
441        if test "x$have_xscreensaver" = "xyes" ; then
442            if test "x$enable_monitors" != "x"; then
443               enable_monitors="$enable_monitors,"
444            fi
445            enable_monitors="${enable_monitors}screensaver"
446        fi
447
448        if test "x$enable_monitors" != "x"; then
449            enable_monitors="$enable_monitors,"
450        fi
451        enable_monitors="${enable_monitors}x11events"
452    fi
453
454    loop=${enable_monitors},
455
456    while echo $loop | grep \, &> /dev/null
457    do
458        monitor=${loop%%\,*}
459        loop=${loop#*\,}
460
461        case "$monitor" in
462           record)
463               if test "x$have_xrecord" != "xyes" ; then
464                   AC_MSG_ERROR([record activity monitor not supported.])
465               fi
466               ;;
467
468           x11events)
469               ;;
470
471           mutter)
472               ;;
473
474           screensaver)
475               if test "x$have_xscreensaver" != "xyes" ; then
476                   AC_MSG_ERROR([screensaver activity monitor not supported.])
477               fi
478               ;;
479
480           *)
481               AC_MSG_ERROR([unknown activity monitor: $monitor])
482               ;;
483
484        esac
485    done
486
487    AC_DEFINE_UNQUOTED(HAVE_MONITORS, "$enable_monitors", "Enabled activity monitors")
488
489fi
490
491dnl
492dnl DBus
493dnl
494
495config_dbus=no
496have_python_jinja2=no
497
498if test "x$enable_dbus" != "xno" -a "x$platform_os_win32" != "xyes" -a "x$platform_os_osx" != "xyes"
499then
500PKG_CHECK_MODULES([GIO],
501                  [gio-2.0 >= 2.26.0],
502                  [ config_dbus=yes ], [ config_dbus=no])
503fi
504
505if test "x$config_dbus" = "xyes"
506then
507    # For now, only needed for DBus.
508    AX_BOOST_BASE([1.52],, AC_MSG_ERROR([requires boost library >= 1.52.]))
509    AX_CXX_COMPILE_STDCXX_11(ext, mandatory)
510
511    AC_DEFINE(HAVE_DBUS, , [DBus support])
512
513    AS_AC_EXPAND(DATADIR, "$datadir")
514    DBUS_SERVICES_DIR="$DATADIR/dbus-1/services"
515    AC_SUBST(DBUS_SERVICES_DIR)
516    AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [Where services dir for DBUS is])
517
518    AM_PATH_PYTHON([3.0])
519    AX_PYTHON_MODULE([jinja2], [needed], python3)
520fi
521
522AM_CONDITIONAL(HAVE_DBUS, test x$config_dbus = xyes)
523AM_CONDITIONAL(HAVE_PYTHON_JINJA2, test x$HAVE_PYMOD_jinja2 = xyes)
524
525
526dnl
527dnl Gnome
528dnl
529
530config_gnome3=no
531config_panelapplet4=no
532config_panelapplet5=no
533config_libgnome_panel=no
534
535if test "x$enable_gnome3" != "xno" -a "x$config_dbus" = "xyes"
536then
537    PKG_CHECK_MODULES([GNOME3],
538                      [libgnome-panel >= 3.36.0 gio-2.0 >= 2.26.0],
539                      [config_gnome3=yes
540                       config_libgnome_panel=yes
541                       LIBGNOME_PANEL_MODULES_DIR=`$PKG_CONFIG --variable=modulesdir libgnome-panel`
542                       AC_SUBST([LIBGNOME_PANEL_MODULES_DIR], [$LIBGNOME_PANEL_MODULES_DIR])
543                       AC_DEFINE([HAVE_LIBGNOME_PANEL], 1, [Support for GNOME Panel applet])],
544                      [ ])
545
546    if test "x$config_libgnome_panel" != "xyes"
547    then
548        PKG_CHECK_MODULES(GNOME3,
549                          [libpanel-applet >= 3.16.1 gio-2.0 >= 2.26.0],
550                          [config_gnome3=yes
551                           config_panelapplet5=yes
552                           AC_DEFINE([HAVE_PANELAPPLET], [1], [Support for Gnome panel applet v4/v5])
553                           AC_DEFINE([HAVE_PANELAPPLET5], [1], [Support for Gnome panel applet v5])],
554                           [ ])
555
556        if test "x$config_panelapplet5" != "xyes"
557        then
558            PKG_CHECK_MODULES([GNOME3],
559                              [libpanelapplet-4.0 gio-2.0 >= 2.26.0],
560                              [config_gnome3=yes
561                               config_panelapplet4=yes
562                               AC_DEFINE(HAVE_PANELAPPLET,  1, [Support for Gnome panel applet v4/v5]),
563                               AC_DEFINE(HAVE_PANELAPPLET4, 1, [Support for Gnome panel applet v4])],
564                               [if test "x$enable_gnome3" = "xyes"; then
565                                  AC_MSG_ERROR([Gnome 3 development headers not found.])
566                               fi])
567        fi
568    fi
569fi
570
571AM_CONDITIONAL(HAVE_PANELAPPLET,   test "x$config_panelapplet4" = "xyes" -o "x$config_panelapplet5" = "xyes")
572AM_CONDITIONAL(HAVE_PANELAPPLET4, test "x$config_panelapplet4" = "xyes")
573AM_CONDITIONAL(HAVE_PANELAPPLET5, test "x$config_panelapplet5" = "xyes")
574AM_CONDITIONAL(HAVE_LIBGNOME_PANEL, test "x$config_libgnome_panel" = "xyes")
575
576dnl
577dnl GLIB
578dnl
579
580PKG_CHECK_MODULES([GLIB],
581                  [glib-2.0 >= 2.10 gmodule-2.0 gthread-2.0],
582                  [AC_DEFINE(HAVE_GLIB, , [Define if GLib is available])])
583
584
585config_gsettings=no
586if test "x$enable_gsettings" != "xno"
587then
588   if test "x$platform_os_unix" = "xyes"; then
589      GLIB_GSETTINGS
590      config_gsettings=yes
591      AC_DEFINE(HAVE_GSETTINGS, 1, [Have GSettings])
592   fi
593fi
594
595AM_CONDITIONAL(HAVE_GSETTINGS, test "x$config_gsettings" = "xyes")
596
597dnl
598dnl GTK+
599dnl
600
601config_gtk=no
602config_gtk_version=none
603
604PKG_CHECK_MODULES(GTK,
605                     glib-2.0 >= 2.28.0
606                     gio-2.0 >= 2.26.0
607                     gtk+-3.0 >= 3.0.0
608                     gdk-3.0 >= 3.0.0
609                     sigc++-2.0 >= 2.2.4.2
610                     glibmm-2.4 >= 2.28.0
611                     gtkmm-3.0 >= 3.0.0,
612                     [config_gtk=yes
613                      config_gtk_version=3
614                      AC_DEFINE(HAVE_GTK3, 1, Support for GTK3)
615                      AC_DEFINE([HAVE_APP_GTK], , [Define if GTK+ is available])], [ ] )
616
617if test x$config_gtk = xno
618then
619   PKG_CHECK_MODULES(GTK,
620                     gtk+-2.0 >= 2.6.0 \
621                     gdk-2.0 >= 2.8 \
622                     sigc++-2.0 \
623                     glibmm-2.4 >= 2.10 \
624                     gtkmm-2.4 >= 2.10,
625                     [config_gtk=yes
626                      config_gtk_version=2
627                      AC_DEFINE([HAVE_APP_GTK], , [Define if GTK+ is available])])
628fi
629
630AM_CONDITIONAL(HAVE_APP_GTKMM, test $config_gtk = yes)
631AM_CONDITIONAL(HAVE_GTK3, test "x$config_gtk_version" = "x3")
632
633
634dnl
635dnl Introspection
636dnl
637
638#if test "x$platform_os_win32" != "xyes"
639#then
640    GOBJECT_INTROSPECTION_CHECK([0.6.7])
641#fi
642
643dnl
644dnl Indicator applet
645dnl
646
647config_indicator=no
648
649INDICATOR_REQUIRED_VERSION=0.3.19
650DBUSMENUGLIB_REQUIRED_VERSION=0.1.1
651DBUSMENUGTK_REQUIRED_VERSION=0.3.95
652
653if test "x$enable_indicator" != "xno" -a "x$config_gtk_version" = "x3"
654then
655   if test "x$found_introspection" != "xyes"
656   then
657       AC_MSG_ERROR([Introspection development headers not found.])
658   else
659       PKG_CHECK_MODULES(INDICATOR, ayatana-indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION
660                                    dbusmenu-glib-0.4 >= $DBUSMENUGLIB_REQUIRED_VERSION
661                                    dbusmenu-gtk3-0.4 >= $DBUSMENUGTK_REQUIRED_VERSION,
662                                  [ config_indicator=yes
663                                    AC_DEFINE(HAVE_INDICATOR, 1, [Support for indicator applet])
664                                    AC_DEFINE(HAVE_INDICATOR_AYATANA, 1, [Support for ayatana indicator applet])
665                                  ],
666
667                                  [  PKG_CHECK_MODULES(INDICATOR, indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION
668                                                                  dbusmenu-glib-0.4 >= $DBUSMENUGLIB_REQUIRED_VERSION
669                                                                  dbusmenu-gtk3-0.4 >= $DBUSMENUGTK_REQUIRED_VERSION,
670                                                      [ config_indicator=yes
671                                                         AC_DEFINE(HAVE_INDICATOR, 1, [Support for indicator applet])],
672                                                      [if test "x$enable_indicator" = "xyes"; then
673                                                         AC_MSG_ERROR([Indicator development headers not found.])
674                                                      fi])
675                                  ])
676
677       if test "x$config_indicator" != "xno"
678       then
679          PKG_CHECK_EXISTS(dbusmenu-gtk3-0.4 >= 0.5.90,
680                         [ AC_DEFINE(HAVE_DBUSMENU_NEW_INCLUDES, 1, [DBusmenu header in new location])],
681                     [ true ]
682                         )
683
684       fi
685   fi
686fi
687
688with_localinstall="no"
689AC_ARG_ENABLE(localinstall, AS_HELP_STRING([--enable-localinstall], [install all of the files localy instead of system directories (for distcheck)]), with_localinstall=$enableval, with_localinstall=no)
690
691AS_IF([test "x$with_localinstall" = "xyes"],
692    INDICATORDIR="${libdir}/indicators3/7"
693    INDICATORICONSDIR="${datadir}/libindicate/icons"
694    ,
695    INDICATORDIR=`$PKG_CONFIG --variable=indicatordir indicator3-0.4 | sed -e 's%/$%%'`
696    INDICATORICONSDIR=`$PKG_CONFIG --variable=iconsdir indicator3-0.4`
697    )
698
699AM_CONDITIONAL(LOCALINSTALL, test "x$with_localinstall" = "xyes")
700
701AC_SUBST(INDICATORDIR)
702AC_SUBST(INDICATORICONSDIR)
703
704AC_SUBST(INDICATORDIR)
705AC_SUBST(INDICATORICONSDIR)
706
707AM_CONDITIONAL(HAVE_INDICATOR, test "x$config_indicator" = "xyes")
708
709dnl
710dnl Xfce
711dnl
712
713config_xfce=no
714config_xfce_gtk_version=none
715
716if test "x$enable_xfce" != "xno"
717then
718   PKG_CHECK_MODULES([LIBXFCE4PANEL],
719                    [libxfce4panel-2.0 >= 4.12],
720                    [config_xfce=yes
721                    config_xfce_gtk_version=3
722                     AC_DEFINE(HAVE_XFCE, 1, [Support for xfce applet])
723                     AC_DEFINE(HAVE_XFCE_GTK3, 1, [Support for xfce applet])
724                     ],
725                     [ true ])
726
727   if test x$config_xfce != xyes
728   then
729      PKG_CHECK_MODULES([LIBXFCE4PANEL],
730                         [libxfce4panel-1.0 >= 4.4],
731                         [config_xfce=yes
732                          config_xfce_gtk_version=2
733                          AC_DEFINE(HAVE_XFCE, 1, [Support for xfce applet])
734                          AC_DEFINE(HAVE_XFCE_GTK2, 1, [Support for xfce applet])
735                          ],
736                         [if test "x$enable_xfce" = "xyes"; then
737                          AC_MSG_ERROR([XFCE Panel applet development headers not found.])
738                          fi])
739   fi
740fi
741
742AM_CONDITIONAL(HAVE_XFCE, test "x$config_xfce" = "xyes")
743
744AM_CONDITIONAL(HAVE_XFCE_GTK2, test "x$config_xfce_gtk_version" = "x2")
745AM_CONDITIONAL(HAVE_XFCE_GTK3, test "x$config_xfce_gtk_version" = "x3")
746
747
748dnl
749dnl Mate
750dnl
751
752config_mate=no
753
754if test "x$enable_mate" != "xno"
755then
756   PKG_CHECK_MODULES([LIBMATEPANEL],
757                      [libmatepanelapplet-4.0],
758                      [config_mate=yes
759                       AC_DEFINE(HAVE_MATE, 1, [Support for mate applet])],
760                      [if test "x$enable_mate" = "xyes"; then
761                          AC_MSG_ERROR([MATE Panel applet development headers not found.])
762                       fi])
763
764   config_mate_gtk_version=none
765   if test "x$config_mate" = "xyes"
766   then
767      MATE_GTK=`$PKG_CONFIG --print-requires libmatepanelapplet-4.0 2>/dev/null | grep -m 1 '^gtk+-'`
768      case "$MATE_GTK" in
769         gtk+-2*)
770           config_mate_gtk_version=2
771           ;;
772         gtk+-3*)
773           config_mate_gtk_version=3
774           ;;
775      esac
776   fi
777fi
778
779AM_CONDITIONAL(HAVE_MATE, test "x$config_mate" = "xyes")
780AM_CONDITIONAL(HAVE_MATE_GTK2, test "x$config_mate_gtk_version" = "x2")
781AM_CONDITIONAL(HAVE_MATE_GTK3, test "x$config_mate_gtk_version" = "x3")
782
783
784if test "x$config_mate_gtk_version" = "x2" -o "x$config_xfce_gtk_version" = "x2"
785then
786  PKG_CHECK_MODULES([GTK2],
787                    [gtk+-2.0 >= 2.6.0 gdk-2.0 >= 2.8 ],
788                    [config_gtk2=yes
789                     AC_DEFINE(HAVE_GTK2, 1, [Support for GTK2])],
790                    [AC_MSG_ERROR([GTK2 development headers not found.])])
791fi
792
793AM_CONDITIONAL(HAVE_GTK2, test "x$config_gtk2" = "xyes")
794
795dnl
796dnl GConf
797dnl
798
799config_gconf=no
800
801if test "x$enable_gconf" != "xno" -a "x$config_gnome3" != "xyes"
802then
803  PKG_CHECK_MODULES([GCONF],
804                    [gconf-2.0 >= 2.31.1],
805                    [config_gconf=yes
806                     AC_DEFINE([HAVE_GCONF], , [Define if GConf is available])],
807                    [if test "x$enable_gconf" = "xyes"; then
808                       AC_MSG_ERROR([GConf development headers not found.])
809                     fi])
810fi
811
812AM_CONDITIONAL(HAVE_GCONF, test "x$config_gconf" = "xyes")
813
814
815dnl
816dnl XML
817dnl
818
819config_xml=no
820
821if test "x$enable_xml" != "xno"
822then
823    PKG_CHECK_MODULES([GDOME],
824                      [gdome2],
825                      [config_xml=yes
826                       AC_DEFINE([HAVE_GDOME], ,[Define if GDome is available])],
827                      [if test "x$enable_xml" = "xyes"; then
828                         AC_MSG_ERROR([GDome2 development headers not found.])
829                       fi])
830fi
831
832AM_CONDITIONAL(HAVE_GDOME, test "x$config_xml" = "xyes")
833
834
835dnl
836dnl GIO/GNet2 networking
837dnl
838
839config_distribution=no
840have_gnet=no
841
842if test "x$enable_distribution" != "xno"
843then
844  PKG_CHECK_MODULES([GIO],
845                    [gio-2.0 >= 2.22.0],
846                    [config_distribution=yes
847                     AC_DEFINE(HAVE_GIO_NET, 1, [Have GIO networking support])],
848                    [PKG_CHECK_MODULES([GNET],
849                                       [gnet-2.0],
850                                       [config_distribution=yes
851                                        have_gnet=yes
852                                        AC_DEFINE([HAVE_GNET], , [Define if GNet is available])
853                                        AC_DEFINE([HAVE_GNET2], , [Define if GNet2 is available])],
854                                       [if test "x$enable_distribution" = "xyes"; then
855                                          AC_MSG_ERROR([GIO/GNet development headers not found.])
856                                        fi])])
857fi
858
859if test $config_distribution = yes
860then
861  AC_DEFINE([HAVE_DISTRIBUTION], , [Define if network-distributed operation is available])
862fi
863
864AM_CONDITIONAL(HAVE_DISTRIBUTION, test "x$config_distribution" = "xyes")
865AM_CONDITIONAL(HAVE_GNET, test $have_gnet = yes)
866
867
868dnl
869dnl GStreamer
870dnl
871
872config_gstreamer=no
873
874if test "x$enable_gstreamer" != "xno";
875then
876    PKG_CHECK_MODULES([GSTREAMER],
877                      [gstreamer-0.10],
878                      [config_gstreamer=yes
879                       AC_DEFINE(HAVE_GSTREAMER, 1, [Use GStreamer for playing sounds])], [ ])
880
881    if test "x$config_gstreamer" != "xyes";
882    then
883        PKG_CHECK_MODULES([GSTREAMER],
884                      [gstreamer-1.0],
885                      [config_gstreamer=yes
886                       AC_DEFINE(HAVE_GSTREAMER, 1, [Use GStreamer for playing sounds])],
887                         [if test "x$enable_gstreamer" = "xyes"; then
888                           AC_MSG_ERROR([GStreamer development headers not found.])
889                       fi])
890    fi
891fi
892
893
894dnl
895dnl PulseAudio
896dnl
897
898config_pulse=no
899
900if test "$platform_os_unix" = "yes" -a "x$enable_pulse" != "xno"
901then
902    PA_REQUIRED_VERSION=0.9.15
903    PKG_CHECK_MODULES([PULSE],
904                      [glib-2.0 libpulse >= $PA_REQUIRED_VERSION libpulse-mainloop-glib >= $PA_REQUIRED_VERSION],
905                      [config_pulse=yes
906                  AC_DEFINE(CONFIG_PULSE, 1, [Define if PULSE sound server should be used])],
907                      [if test "x$enable_pulse" = "xyes"; then
908                           AC_MSG_ERROR([Pulseaudio development headers not found.])
909                       fi])
910fi
911
912AM_CONDITIONAL(CONFIG_PULSE, test "x$config_pulse" = "xyes")
913
914
915dnl
916dnl Internationalization
917dnl
918
919AM_GNU_GETTEXT_VERSION([0.18])
920AM_GNU_GETTEXT([external])
921
922dnl Hack because windows gettext package is SEVERELY broken...
923if test "x$platform_os_win32" = "xyes"
924then
925        USE_NLS=yes
926        AC_DEFINE(ENABLE_NLS,1,[Define to 1 if translation of program messages to the user's native language is requested.])
927        AC_DEFINE(USE_INCLUDED_LIBINTL, "no", [Dont])
928        AC_DEFINE(BUILD_INCLUDED_LIBINTL, "no", [Dont])
929        USE_INCLUDED_LIBINTL=no
930        BUILD_INCLUDED_LIBINTL=no
931fi
932
933GETTEXT_PACKAGE=workrave
934AC_SUBST(GETTEXT_PACKAGE)
935AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Define to the gettext domain name.])
936IT_PROG_INTLTOOL([0.40.0])
937
938
939dnl
940dnl  Manual
941dnl
942dnl (taken from clutter)
943dnl
944
945AC_ARG_ENABLE(manual,
946              AS_HELP_STRING([--enable-manual],
947                             [Build user manual. Requires jw and xmlto binaries.]))
948
949if test "x$enable_manual" = "xyes"; then
950  AC_PATH_PROG(JW, jw, no)
951  if test "x$JW" = "xno"; then
952    AC_MSG_ERROR(['jw' program needed by the manual not found in path])
953  fi
954
955  AC_PATH_PROG(XMLTO, xmlto, no)
956  if test "x$XMLTO" = "xno"; then
957    AC_MSG_ERROR(['xmlto' program needed by the manual not found in path])
958  fi
959fi
960
961AM_CONDITIONAL(ENABLE_MANUAL, test "x$enable_manual" = "xyes")
962
963
964dnl
965dnl What variant to build
966dnl
967
968variant=""
969
970if test "x$platform_os_win32" = "xyes"
971then
972   variant="$variant win32"
973elif test "x$platform_os_osx" = "xyes"
974then
975   variant="$variant osx unix"
976elif test "x$platform_os_unix" = "xyes"
977then
978   variant="$variant x11 unix"
979fi
980
981WR_BACKEND_INCLUDES="-I\$(top_srcdir)/backend/include"
982WR_COMMON_INCLUDES="-I\$(top_srcdir)/common/include -I\$(top_srcdir)/libs/dbus/include"
983WR_FRONTEND_COMMON_INCLUDES="-I\$(top_srcdir)/frontend/common/include"
984
985for v in $variant; do
986    if test -d common/src/$v
987    then
988       WR_COMMON_INCLUDES="$WR_COMMON_INCLUDES -I\$(top_srcdir)/common/include/$v"
989    fi
990done
991
992WR_LDADD="-lworkrave-backend -lworkrave-frontend-common -lworkrave-common"
993if test "x$config_dbus" = "xyes"; then
994  WR_LDADD="$WR_LDADD -lworkrave-dbus"
995fi
996
997WR_LDFLAGS="-L\$(top_builddir)/common/src/ -L\$(top_builddir)/backend/src/ -L\$(top_builddir)/frontend/common/src -L\$(top_builddir)/libs/dbus/src/"
998
999AC_SUBST(WR_LDADD)
1000AC_SUBST(WR_LDFLAGS)
1001
1002AC_SUBST(WR_FRONTEND_COMMON_INCLUDES)
1003AC_SUBST(WR_COMMON_INCLUDES)
1004AC_SUBST(WR_BACKEND_INCLUDES)
1005
1006dnl
1007dnl Defines
1008dnl
1009
1010config_tests=no
1011if test "x$enable_tests" = "xyes"; then
1012   config_tests=yes
1013   AC_DEFINE([HAVE_TESTS], , [Define if test code is enabled])
1014fi
1015AM_CONDITIONAL(HAVE_TESTS, test "x$config_tests" = "xyes")
1016
1017config_exercises=no
1018if test "x$enable_exercises" != "xno"; then
1019   config_exercises=yes
1020   AC_DEFINE(HAVE_EXERCISES,,[Define if exercises are available])
1021fi
1022AM_CONDITIONAL(HAVE_EXERCISES, test "x$config_exercises" = "xyes")
1023
1024config_experimental=no
1025if test "x$enable_experimental" = "xyes"; then
1026   config_experimental=yes
1027   AC_DEFINE(HAVE_EXPERIMENTAL,,[Define if experimental features are available])
1028fi
1029AM_CONDITIONAL(HAVE_EXPERIMENTAL, test "x$config_experimental" = "xyes")
1030
1031config_text=no
1032if test "x$enable_app_text" = "xyes"; then
1033   config_text=yes
1034   AC_DEFINE(HAVE_APP_TEXT,,[Define if Text is available])
1035fi
1036AM_CONDITIONAL(HAVE_APP_TEXT, test "x$config_text" = "xyes")
1037
1038
1039dnl
1040dnl Generate language list.
1041dnl
1042
1043if test "x$platform_os_win32" = "xyes"
1044then
1045    LANGFILE="./frontend/gtkmm/win32/setup/lang.iss"
1046
1047    ALL_LINGUAS="$(cat ./po/LINGUAS |grep -v '^#' | tr '\n' ' ' )"
1048    AC_DEFINE_UNQUOTED(ALL_LINGUAS, "$ALL_LINGUAS" ,[All available languages])
1049
1050    echo -n "; language.iss --- Inno setup file, support languages" > $LANGFILE
1051    echo -en "\r\n" >> $LANGFILE
1052    for a in $ALL_LINGUAS; do
1053        X="Source: \"..\\..\\..\\..\\po\\$a.gmo\"; DestDir: \"{app}\\lib\\locale\\$a\\LC_MESSAGES\"; DestName: \"workrave.mo\"; Flags: ignoreversion;"
1054        echo -n $X     >> $LANGFILE
1055        echo -en "\r\n" >> $LANGFILE
1056    done
1057fi
1058
1059dnl
1060dnl Makefile output
1061dnl
1062
1063AC_CONFIG_FILES([Makefile
1064             backend/Makefile
1065             backend/test/Makefile
1066             backend/src/Makefile
1067             backend/src/org.workrave.gschema.xml.in
1068             backend/src/unix/Makefile
1069             backend/src/osx/Makefile
1070             backend/src/win32/Makefile
1071             backend/include/Makefile
1072             common/Makefile
1073             common/bin/Makefile
1074             common/src/Makefile
1075             common/src/win32/Makefile
1076             common/include/Makefile
1077             common/include/win32/Makefile
1078             common/win32/Makefile
1079             common/win32/harpoon/Makefile
1080             common/win32/harpoon/include/Makefile
1081             common/win32/harpoon/src/Makefile
1082             common/win32/harpoonHelper/Makefile
1083             common/win32/harpoonHelper/include/Makefile
1084             common/win32/harpoonHelper/src/Makefile
1085             libs/Makefile
1086             libs/dbus/Makefile
1087             libs/dbus/bin/Makefile
1088             libs/dbus/data/Makefile
1089             libs/dbus/include/Makefile
1090             libs/dbus/include/dbus/Makefile
1091             libs/dbus/src/Makefile
1092             frontend/Makefile
1093             frontend/common/Makefile
1094             frontend/common/include/Makefile
1095             frontend/common/share/Makefile
1096             frontend/common/share/sounds/Makefile
1097             frontend/common/share/sounds/subtle/Makefile
1098             frontend/common/share/sounds/default/Makefile
1099             frontend/common/share/images/Makefile
1100             frontend/common/share/images/16x16/Makefile
1101             frontend/common/share/images/24x24/Makefile
1102             frontend/common/share/images/32x32/Makefile
1103             frontend/common/share/images/48x48/Makefile
1104             frontend/common/share/images/64x64/Makefile
1105             frontend/common/share/images/96x96/Makefile
1106             frontend/common/share/images/128x128/Makefile
1107             frontend/common/share/images/scalable/Makefile
1108             frontend/common/share/images/win32/Makefile
1109             frontend/common/share/images/osx/Makefile
1110             frontend/common/src/Makefile
1111             frontend/common/src/win32/Makefile
1112             frontend/common/src/x11/Makefile
1113             frontend/common/src/osx/Makefile
1114             frontend/applets/Makefile
1115             frontend/applets/win32/Makefile
1116             frontend/applets/win32/src/Makefile
1117             frontend/applets/win32/include/Makefile
1118             frontend/applets/common/Makefile
1119             frontend/applets/common/src/Makefile
1120             frontend/applets/common/include/Makefile
1121             frontend/applets/gnome3/Makefile
1122             frontend/applets/gnome3/src/Makefile
1123             frontend/applets/indicator/Makefile
1124             frontend/applets/indicator/src/Makefile
1125             frontend/applets/indicator/include/Makefile
1126             frontend/applets/xfce/Makefile
1127             frontend/applets/xfce/src/Makefile
1128             frontend/applets/xfce/include/Makefile
1129             frontend/applets/mate/Makefile
1130             frontend/applets/mate/src/Makefile
1131             frontend/applets/mate/include/Makefile
1132             frontend/applets/gnome-shell/Makefile
1133             frontend/applets/gnome-shell/src/Makefile
1134             frontend/applets/cinnamon/Makefile
1135             frontend/applets/cinnamon/src/Makefile
1136             frontend/gtkmm/Makefile
1137             frontend/gtkmm/osx/Makefile
1138             frontend/gtkmm/win32/Makefile
1139             frontend/gtkmm/win32/setup/Makefile
1140             frontend/gtkmm/win32/setup/setup.iss
1141             frontend/gtkmm/win32/setup/src/Makefile
1142             frontend/gtkmm/src/Makefile
1143             frontend/gtkmm/src/org.workrave.gui.gschema.xml.in
1144             frontend/gtkmm/src/win32/Makefile
1145             frontend/gtkmm/src/unix/Makefile
1146             frontend/gtkmm/src/osx/Makefile
1147             frontend/text/Makefile
1148             frontend/text/src/Makefile
1149             frontend/plugin/Makefile
1150             frontend/plugin/distribution/Makefile
1151             frontend/plugin/distribution/gtkmm/Makefile
1152             frontend/plugin/distribution/gtkmm/src/Makefile
1153             frontend/plugin/statistics/Makefile
1154             frontend/plugin/statistics/gtkmm/Makefile
1155             frontend/plugin/statistics/gtkmm/src/Makefile
1156             frontend/plugin/exercises/Makefile
1157             frontend/plugin/exercises/common/Makefile
1158             frontend/plugin/exercises/common/share/Makefile
1159             frontend/plugin/exercises/common/src/Makefile
1160             frontend/plugin/exercises/gtkmm/Makefile
1161             frontend/plugin/exercises/gtkmm/src/Makefile
1162             po/Makefile.in
1163             contrib/Makefile
1164             contrib/plot/Makefile
1165             contrib/send_menu_command/Makefile
1166             contrib/send_menu_command/win32/Makefile
1167             contrib/send_dbus_command/Makefile
1168             contrib/send_dbus_command/kde/Makefile
1169             build/Makefile
1170             m4/Makefile
1171])
1172
1173AC_OUTPUT
1174
1175dnl ========================================================================
1176
1177echo ""
1178echo "                        Workrave $VERSION"
1179echo "                       ==================="
1180echo ""
1181echo "                        prefix:   ${prefix}"
1182echo ""
1183echo "                           OS :   ${platform_os_name}"
1184echo ""
1185echo "          GConf configuration :   ${config_gconf}"
1186echo "      GSettings configuration :   ${config_gsettings}"
1187echo "            XML configuration :   ${config_xml}"
1188echo ""
1189if test "$platform_os_unix" = "yes"; then
1190echo "            Activity Monitors :   ${enable_monitors}"
1191echo ""
1192fi
1193echo "                      Gtk GUI :   ${config_gtk} (Gtk${config_gtk_version})"
1194echo "              Gnome 3 support :   ${config_gnome3}"
1195echo "GObject-Introspection support :   ${found_introspection}"
1196echo "            Indicator support :   ${config_indicator}"
1197echo "                 XFCE support :   ${config_xfce} (Gtk${config_xfce_gtk_version})"
1198echo "                 MATE support :   ${config_mate} (Gtk${config_mate_gtk_version})"
1199echo "                 DBUS support :   ${config_dbus}"
1200echo "           Networking support :   ${config_distribution}"
1201echo "            GStreamer support :   ${config_gstreamer}"
1202if test "$platform_os_unix" = "yes"; then
1203echo "           Pulseaudio support :   ${config_pulse}"
1204fi
1205echo "                    Exercises :   ${config_exercises}"
1206echo ""
1207echo "        Experimental features :   ${config_experimental}"
1208echo "                    Debugging :   ${config_debug}"
1209echo "                   Debug logs :   ${config_tracing}"
1210echo "                    Test code :   ${config_tests}"
1211echo ""
1212