Define WINVER to 0x501 to get XP functionality
[moonshot-ui.git] / configure.ac
1 AC_PREREQ([2.63])
2 AC_INIT([Moonshot-ui],
3         [0.7.1],
4         [moonshot-community@jiscmail.ac.uk],
5         [moonshot-ui],
6         [http://www.project-moonshot.org/])
7
8 # Remove this when we can depend on autoconf >= 2.64
9 AC_SUBST(PACKAGE_URL, [http://www.project-moonshot.org/])
10 AC_DEFINE(PACKAGE_URL,["http://www.project-moonshot.org"],[package URL])
11 AC_CONFIG_HEADERS([config.h])
12 AC_CONFIG_SRCDIR([configure.ac])
13 AC_CONFIG_MACRO_DIR([m4])
14 AC_CONFIG_AUX_DIR([build-aux])
15
16 AM_INIT_AUTOMAKE([1.11 -Wall foreign subdir-objects tar-pax no-dist-gzip dist-xz])
17 AM_SILENT_RULES([yes])
18 AM_MAINTAINER_MODE([enable])
19
20 LT_PREREQ([2.2])
21 AM_PROG_AR
22 LT_INIT([win32-dll])
23 AC_CHECK_FUNCS_ONCE(geteuid getpwuid)
24
25 # Checks for programs.
26 PKG_PROG_PKG_CONFIG([0.23])
27 AC_PROG_CC
28 AM_PROG_CC_C_O
29 AM_PROG_VALAC([0.9])
30
31 # Platform checks
32 AC_CANONICAL_HOST
33
34 case "$host" in
35   *-*-mingw*)
36     win32=yes
37     macos=no
38     linux=no
39     SERVER_IPC_MODULE="msrpc-glib2-1.0"
40     CLIENT_IPC_MODULE="msrpc-mingw-1.0"
41     PKG_CHECK_MODULES([GTK],
42             [gtk+-2.0 >= 2.18],
43             [GTK_VERSION="gtk+-2.0"]
44     )
45     ;;
46     
47   *darwin*) 
48     win32=no
49     macos=yes
50     linux=no
51
52     # We require dbus-glib for the client library even if we are using GDBus
53     # in the server. The reason we can't always use dbus-glib in the server is
54     # because Vala drops support for it, but as it ships with DBus there is very
55     # little danger of it being dropped by distros any time soon.
56     CLIENT_IPC_MODULE="dbus-glib-1"
57         SERVER_IPC_MODULE="dbus-glib-1"   
58         
59         PKG_CHECK_MODULES([MAC], 
60                         [gtk-mac-integration >= 1.0.1]
61         )
62
63 # TODO: Move to GTK+-3
64 #            [gtk+-3.0 >= 2.0],
65 #            [GTK_VERSION="gtk+-3.0"]
66     PKG_CHECK_MODULES([GTK],
67             [gtk+-2.0 >= 2.18],
68             [GTK_VERSION="gtk+-2.0"]
69     )
70
71     ;;
72   *)
73     macos=no
74     win32=no
75     linux=yes
76
77     # We require dbus-glib for the client library even if we are using GDBus
78     # in the server. The reason we can't always use dbus-glib in the server is
79     # because Vala drops support for it, but as it ships with DBus there is very
80     # little danger of it being dropped by distros any time soon.
81     CLIENT_IPC_MODULE="dbus-glib-1"
82     PKG_CHECK_MODULES([GDBUS],
83             [gio-2.0 >= 2.26],
84             [SERVER_IPC_MODULE="gio-2.0"],
85             [SERVER_IPC_MODULE="dbus-glib-1"]
86     )
87 # TODO: Move to GTK+-3
88 #            [gtk+-3.0 >= 2.0],
89 #            [GTK_VERSION="gtk+-3.0"]
90     PKG_CHECK_MODULES([GTK],
91             [gtk+-2.0 >= 2.18],
92             [GTK_VERSION="gtk+-2.0"]
93     )
94
95     ;;
96 esac
97
98 AM_CONDITIONAL([OS_LINUX], [test "$linux" = "yes"])
99 AM_CONDITIONAL([OS_WIN32], [test "$win32" = "yes"])
100 AM_CONDITIONAL([OS_MACOS], [test "$macos" = "yes"])
101
102 AM_CONDITIONAL([IPC_MSRPC], [test "$SERVER_IPC_MODULE" = "msrpc-glib2-1.0"])
103 AM_CONDITIONAL([IPC_DBUS], [test "$SERVER_IPC_MODULE" != "msrpc-glib2-1.0"])
104 AM_CONDITIONAL([IPC_DBUS_GLIB], [test "$SERVER_IPC_MODULE" = "dbus-glib-1"])
105 AM_CONDITIONAL([IPC_GDBUS], [test "$SERVER_IPC_MODULE" = "gio-2.0"])
106
107 if test "$SERVER_IPC_MODULE" = "dbus-glib-1"; then
108   AC_MSG_CHECKING([$VALAC is no greater than 0.12.1])
109   vala_version=`$VALAC --version | sed 's/Vala  *//'`
110   AS_VERSION_COMPARE([0.12.2], ["$vala_version"],
111     [vala_supports_dbus_glib="no"],
112     [vala_supports_dbus_glib="no"],
113     [vala_supports_dbus_glib="yes"])
114
115   AC_MSG_RESULT([$vala_supports_dbus_glib])
116   if test "$vala_supports_dbus_glib" = "no"; then
117     AC_MSG_ERROR([
118 *** Vala 0.12.1 or earlier is required for dbus-glib support. Newer versions
119 *** require that you have GLib 2.26 or newer (for GDBus support).])
120   fi
121 fi
122
123 if test "$SERVER_IPC_MODULE" = "msrpc-glib2-1.0"; then
124   # MS RPC utilities
125   AC_PATH_MSRPC_MINGW([0.1.0], :,
126     AC_MSG_ERROR([
127 *** msrpc-mingw 0.1.0 or better is required.]))
128
129   AC_PATH_PROG([MIDL], [midl], no,
130                [/c/Program\ Files/Microsoft\ SDKs/Windows/v7.0/Bin$PATH_SEPARATOR$PATH])
131   if test "$MIDL" = "no"; then
132      AC_MSG_ERROR([
133 *** Could not find the Microsoft interface compiler MIDL.EXE.
134 *** This program is available as part of the MS Windows SDK, in
135 *** the Win32 Development Tools package. If it is not in the PATH
136 *** or its default location you may set the 'MIDL' environment
137 *** variable to point to its location and rerun configure.])
138   fi
139 fi
140
141 if test "$win32" = "yes"; then
142   # Other Windows-specific tools
143
144   # LIB.EXE from MSVC to build an MSVC-compatible import library.
145   AC_PATH_PROG([MSVC_LIB], [lib], no,
146                [/c/Program\ Files/Microsoft\ Visual\ Studio\ 10.0/VC/bin$PATH_SEPARATOR/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 10.0/VC/bin$PATH_SEPARATOR$PATH])
147
148   if test "$MSVC_LIB" = "no"; then
149      AC_MSG_WARN([
150 *** Could not find the Microsoft 'LIB.EXE' program. This is required
151 *** to build the Visual C import library for libmoonshot. Use the
152 *** MSVC_LIB environment variable to pass its location if this is
153 *** outside the PATH.])
154   fi
155
156
157   # ImageMagick for the 'make icons' target. Note that
158   # c:/windows/system32/convert.exe is nothing to do with ImageMagick.
159   AC_PATH_PROG([IMAGEMAGICK_CONVERT], [convert], no,
160                [/c/Program\ Files/ImageMagick$PATH_SEPARATOR/c/Program\ Files\ \(x86\)/ImageMagick$PATH_SEPARATOR$PATH])
161
162   if test "$IMAGEMAGICK_CONVERT" = "no" || test "$IMAGEMAGICK_CONVERT" = "/c/windows/system32/convert"; then
163      AC_MSG_WARN([
164 *** Could not find ImageMagick convert.exe. This is required for the
165 *** 'make icons' target. Use the IMAGEMAGICK_CONVERT environment
166 *** variable to pass its location if this is outside the PATH.])
167   fi
168
169
170   # Windows Installer XML tools
171   AC_PATH_PROG([WIX_CANDLE], [candle], no,
172                [/c/Program\ Files/Windows\ Installer\ XML\ v3.5/bin$PATH_SEPARATOR/c/Program\ Files\ \(x86\)/Windows\ Installer\ XML\ v3.5/bin$PATH_SEPARATOR$PATH])
173   AC_PATH_PROG([WIX_LIGHT], [light], no,
174                [/c/Program\ Files/Windows\ Installer\ XML\ v3.5/bin$PATH_SEPARATOR/c/Program\ Files\ \(x86\)/Windows\ Installer\ XML\ v3.5/bin$PATH_SEPARATOR$PATH])
175   AC_PATH_PROG([WIX_LIT], [lit], no,
176                [/c/Program\ Files/Windows\ Installer\ XML\ v3.5/bin$PATH_SEPARATOR/c/Program\ Files\ \(x86\)/Windows\ Installer\ XML\ v3.5/bin$PATH_SEPARATOR$PATH])
177
178   if test "$WIX_CANDLE" = "no" || test "$WIX_LIGHT" = "no" || test "$WIX_LIT" = "no"; then
179      AC_MSG_WARN([
180 *** Could not find the Windows Installer XML tools. These are required
181 *** for the 'make installer' target. Use the WIX_CANDLE, WIX_LIGHT,and
182 *** WIX_LIT environment variables to pass their locations if they are
183 *** outside the PATH.])
184   fi
185 fi
186
187 if test "$linux" = "yes"; then
188   AC_PATH_PROG([UPDATE_MIME_DATABASE], [update-mime-database], [no])
189   if test "$UPDATE_MIME_DATABASE" = "no"; then
190     AC_MSG_ERROR([
191 *** Could not find the Freedesktop.org  mime database update tool.
192 *** Web provisioning files could not be automatically installed.])
193   fi
194   AC_PATH_PROG([UPDATE_DESKTOP_DATABASE], [update-desktop-database], [no])
195   if test "$UPDATE_DESKTOP_DATABASE" = "no"; then
196     AC_MSG_ERROR([
197 *** Could not find the Freedesktop.org desktop entry database update
198 *** tool. Web provisioning files could not be automatically installed.])
199   fi
200 fi
201
202 MOONSHOT_APP="$bindir/moonshot"
203 MOONSHOT_WEBP="$bindir/moonshot-webp"
204
205 AC_SUBST(MIDL)
206 AC_SUBST(MSVC_LIB)
207 AC_SUBST(IMAGEMAGICK_CONVERT)
208 AC_SUBST(WIX_CANDLE)
209 AC_SUBST(WIX_LIGHT)
210 AC_SUBST(UPDATE_MIME_DATABASE)
211 AC_SUBST(UPDATE_DESKTOP_DATABASE)
212 AC_SUBST(MOONSHOT_APP)
213 AC_SUBST(MOONSHOT_WEBP)
214
215 # Dependencies
216 PKG_CHECK_MODULES(moonshot,[
217         atk >= 1.20
218         glib-2.0 >= 2.22
219         gobject-2.0 >= 2.22
220         $GTK_VERSION
221         gee-1.0 >= 0.5
222         $SERVER_IPC_MODULE
223                 $MAC
224 ])
225
226 PKG_CHECK_MODULES(libmoonshot,[
227         $CLIENT_IPC_MODULE
228 ])
229
230 # i18n stuff
231 AM_GNU_GETTEXT([external])
232 AM_GNU_GETTEXT_VERSION([0.17])
233
234 AC_SUBST([GETTEXT_PACKAGE],[PACKAGE_TARNAME])
235 AC_DEFINE([GETTEXT_PACKAGE],[PACKAGE_TARNAME],[Define to the gettext package name.])
236
237 AC_CONFIG_FILES([
238         Makefile
239         po/Makefile.in
240         moonshot.desktop
241         moonshot-webp.desktop
242         moonshot-ui.spec
243 ])
244
245 AC_OUTPUT