sphinx: proxy site info to the debug infra more sensibly.
[profile/ivi/speech-recognition.git] / configure.ac
1
2 #                                               -*- Autoconf -*-
3 # Process this file with autoconf to produce a configure script.
4
5 AC_PREREQ(2.59)
6
7 AC_INIT([speech-recognition],
8         m4_esyscmd([build-aux/git-version-gen .tarball-version]),
9         [krisztian.litkey at intel.com])
10
11 AC_CONFIG_SRCDIR([src])
12 AC_CONFIG_MACRO_DIR([m4])
13 AC_CONFIG_HEADER([src/config.h])
14 AM_INIT_AUTOMAKE
15
16 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4")
17
18 m4_define(version_major, `echo $VERSION | cut -d. -f1 | cut -d- -f1`)
19 m4_define(version_minor, `echo $VERSION | cut -d. -f2 | cut -d- -f1`)
20 m4_define(version_patch, `echo $VERSION | cut -d. -f3 | cut -d- -f1`)
21
22 AC_SUBST(VERSION)
23 AC_SUBST(VERSION_MAJOR, version_major)
24 AC_SUBST(VERSION_MINOR, version_minor)
25 AC_SUBST(VERSION_PATCH, version_patch)
26 AC_SUBST(VERSION_FULL, version_major.version_minor.version_patch)
27
28 SRS_VERSION_INFO="0:0:0"
29 AC_SUBST(SRS_VERSION_INFO)
30
31 # Disable static libraries.
32 AC_DISABLE_STATIC
33
34 # Checks for programs.
35 AC_PROG_CC
36 AC_PROG_CC_C99
37 # We need AC_PROG_CXX if Qt support is enabled but (at least some
38 # versions of autotools) cannot handle conditional use of this.
39 AC_PROG_CXX
40 AC_PROG_AWK
41 AC_PROG_INSTALL
42 AM_PROG_CC_C_O
43 AM_PROG_LIBTOOL
44
45 # Checks for libraries.
46 AC_CHECK_LIB([dl], [dlopen dlclose dlsym dlerror])
47
48 # Checks for header files.
49 AC_PATH_X
50 AC_CHECK_HEADERS([fcntl.h stddef.h stdint.h stdlib.h string.h sys/statvfs.h sys/vfs.h syslog.h unistd.h])
51
52 # Checks for typedefs, structures, and compiler characteristics.
53 AC_HEADER_STDBOOL
54 AC_C_INLINE
55 AC_TYPE_INT16_T
56 AC_TYPE_INT32_T
57 AC_TYPE_INT64_T
58 AC_TYPE_MODE_T
59 AC_TYPE_PID_T
60 AC_TYPE_SIZE_T
61 AC_TYPE_SSIZE_T
62 AC_CHECK_MEMBERS([struct stat.st_rdev])
63 AC_TYPE_UINT16_T
64 AC_TYPE_UINT32_T
65 AC_TYPE_UINT64_T
66 AC_TYPE_UINT8_T
67 AC_CHECK_TYPES([ptrdiff_t])
68
69 # Checks for library functions.
70 AC_FUNC_ERROR_AT_LINE
71 AC_HEADER_MAJOR
72 AC_FUNC_MALLOC
73 AC_FUNC_STRTOD
74 AC_CHECK_FUNCS([memmove memset])
75
76 # Check and enable extra compiler warnings if they are supported.
77 AC_ARG_ENABLE(extra-warnings,
78               [  --enable-extra-warnings enable extra compiler warnings],
79               [extra_warnings=$enableval], [extra_warnings=auto])
80
81 WARNING_CFLAGS=""
82 warncflags="-Wall -Wextra"
83 if test "$extra_warnings" != "no"; then
84     save_CPPFLAGS="$CPPFLAGS"
85     for opt in $warncflags; do
86         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
87                           [WARNING_CFLAGS="$WARNING_CFLAGS $opt"])
88     done
89     CPPFLAGS="$save_CPPFLAGS"
90 fi
91
92 AC_SUBST(WARNING_CFLAGS)
93
94 # Check for the necessary Murphy components.
95 PKG_CHECK_MODULES(MURPHY_COMMON,    murphy-common)
96 PKG_CHECK_MODULES(MURPHY_PULSE,     murphy-pulse)
97 PKG_CHECK_MODULES(MURPHY_GLIB,      murphy-glib)
98 PKG_CHECK_MODULES(MURPHY_RESOURCE,  murphy-resource)
99 PKG_CHECK_MODULES(MURPHY_BREEDLINE, breedline-murphy)
100 AC_SUBST(MURPHY_COMMON_CFLAGS)
101 AC_SUBST(MURPHY_COMMON_LIBS)
102 AC_SUBST(MURPHY_PULSE_CFLAGS)
103 AC_SUBST(MURPHY_PULSE_LIBS)
104 AC_SUBST(MURPHY_GLIB_CFLAGS)
105 AC_SUBST(MURPHY_GLIB_LIBS)
106 AC_SUBST(MURPHY_RESOURCE_CFLAGS)
107 AC_SUBST(MURPHY_RESOURCE_LIBS)
108 AC_SUBST(MURPHY_BREEDLINE_CFLAGS)
109 AC_SUBST(MURPHY_BREEDLINE_LIBS)
110
111 # Check for PulseAudio.
112 PKG_CHECK_MODULES(PULSE, libpulse >= 0.9.22)
113 PKG_CHECK_MODULES(PULSE_GLIB, libpulse-mainloop-glib >= 0.922)
114 AC_SUBST(PULSE_CFLAGS)
115 AC_SUBST(PULSE_LIBS)
116 AC_SUBST(PULSE_GLIB_CFLAGS)
117 AC_SUBST(PULSE_GLIB_LIBS)
118
119 # Check if potentially GPL bits are allowed to be enabled.
120 AC_ARG_ENABLE(gpl,
121               [  --enable-gpl            enable linking against GPL code],
122               [enable_gpl=$enableval], [enable_gpl=no])
123
124 # Check if DBUS was enabled.
125 AC_ARG_ENABLE(dbus,
126               [  --enable-dbus           enable D-BUS support],
127               [enable_dbus=$enableval], [enable_dbus=no])
128
129 if test "$enable_dbus" = "yes"; then
130     if test "$enable_gpl" = "no"; then
131         AC_MSG_ERROR([D-Bus support requires the --enable-gpl option.])
132     fi
133     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.70)
134     DBUS_SESSION_DIR="`pkg-config --variable session_bus_services_dir dbus-1`"
135     AC_SUBST(DBUS_SESSION_DIR)
136
137     PKG_CHECK_MODULES(MURPHY_DBUS, murphy-dbus-libdbus)
138 else
139     AC_MSG_NOTICE([D-Bus support is disabled.])
140 fi
141
142 if test "$enable_dbus" = "yes"; then
143     AC_DEFINE([DBUS_ENABLED], 1, [Enable D-BUS support ?])
144 fi
145
146 AM_CONDITIONAL(DBUS_ENABLED, [test "$enable_dbus" = "yes"])
147 AC_SUBST(DBUS_ENABLED)
148 AC_SUBST(MURPHY_DBUS_CFLAGS)
149 AC_SUBST(MURPHY_DBUS_LIBS)
150 AC_SUBST(DBUS_CFLAGS)
151 AC_SUBST(DBUS_LIBS)
152
153 # XXX TODO temporarily disable mpris2 and bluetooth plugins
154 AM_CONDITIONAL(MPRIS2_ENABLED, [test "xno" = "xyes"])
155 AM_CONDITIONAL(BLUETOOTH_ENABLED, [test "xno" = "xyes"])
156 AC_SUBST(MPRIS2_ENABLED)
157 AC_SUBST(BLUETOOTH_ENABLED)
158
159 # Set up common SRS compilation and linking flags.
160 SRS_CFLAGS=""
161 SRS_LIBS=""
162 AC_SUBST(SRS_CFLAGS)
163 AC_SUBST(SRS_LIBS)
164
165 # Add LIBDIR to config.h.
166 AC_MSG_CHECKING([libdir])
167 AC_MSG_RESULT([$libdir])
168 AC_SUBST(LIBDIR, [$libdir])
169
170 # Check if sphinx was enabled.
171 AC_ARG_ENABLE(sphinx,
172               [  --enable-sphinx         enable pocketsphinx support in SRS],
173               [enable_sphinx=$enableval], [enable_sphinx=auto])
174
175 if test "$enable_sphinx" != "no"; then
176     PKG_CHECK_MODULES(SPHINX, [sphinxbase pocketsphinx],
177                       [have_sphinx=yes], [have_sphinx=no])
178     if test "$have_sphinx" = "no" -a "$enable_sphinx" = "yes"; then
179         AC_MSG_ERROR([Sphinx development libraries not found.])
180     fi
181
182     # sphinxbase is packetised in wrong way in Fedora
183     # and pkg-config reports libraries what we really
184     # do not need; so as a temporary hack here we get
185     # rid of them
186     SPHINX_LIBS=`echo $SPHINX_LIBS                      | \
187                       sed -e "s/ -lpulse-simple//g"     | \
188                       sed -e "s/ -lblas//g"             | \
189                       sed -e "s/ -llapack//g"           | \
190                       sed -e "s/ -lsamplerate//g"       | \
191                       sed -e "s/ -lsndfile//g"          | \
192                       sed -e "s/ -lpthread//g"`
193
194     enable_sphinx="$have_sphinx"
195 else
196     AC_MSG_NOTICE([Sphinx support disabled])
197 fi
198
199 AM_CONDITIONAL(SPHINX_ENABLED, [test "$enable_sphinx" = "yes"])
200 AC_SUBST(SPHINX_ENABLED)
201 AC_SUBST(SPHINX_CFLAGS)
202 AC_SUBST(SPHINX_LIBS)
203
204 # Check for libudev.
205 PKG_CHECK_MODULES(UDEV, libudev)
206
207 # Check for glib et al that we need temporarily to allow plugins use gdbus.
208 PKG_CHECK_MODULES(GLIB, glib-2.0 gobject-2.0)
209 PKG_CHECK_MODULES(MURPHY_GLIB, murphy-glib)
210 AC_SUBST(GLIB_CFLAGS)
211 AC_SUBST(GLIB_LIBS)
212 AC_SUBST(MURPHY_GLIB_CFLAGS)
213 AC_SUBST(MURPHY_GLIB_LIBS)
214
215 # Check if WRT media client should be enabled.
216 AC_ARG_ENABLE(wrt-client,
217               [  --enable-wrt-client     enable WRT media client plugin],
218               [enable_wrtc=$enableval], [enable_wrtc=yes])
219
220 if test "$enable_wrtc" = "yes"; then
221     PKG_CHECK_MODULES(GIO, gio-2.0)
222 else
223     AC_MSG_NOTICE([WRT media client plugin is disabled.])
224 fi
225
226 AM_CONDITIONAL(WRTC_ENABLED, [test "$enable_wrtc" = "yes"])
227 AC_SUBST(GIO_CFLAGS)
228 AC_SUBST(GIO_LIBS)
229
230 # Check if festival support should be enabled.
231 AC_ARG_ENABLE(festival,
232               [  --enable-festival          enable festival support],
233               [enable_festival=$enableval], [enable_festival=auto])
234
235 if test "$enable_festival" != "no"; then
236     enable_festival=yes
237     AC_MSG_NOTICE([festival support is enabled.])
238 else
239     AC_MSG_NOTICE([festival support is disabled.])
240 fi
241
242 if test "$enable_festival" = "yes"; then
243     AC_DEFINE([FESTIVAL_ENABLED], 1, [Enable festival support ?])
244 fi
245
246 if test -f $prefix/include/festival/festival.h; then
247     FESTIVAL_INCLUDES="-I$prefix/include \
248                        -I$prefix/include/festival \
249                        -I$prefix/include/speech_tools"
250 else
251     FESTIVAL_INCLUDES="-I$prefix/include"
252 fi
253
254 FESTIVAL_CXXFLAGS="$FESTIVAL_INCLUDES"
255 FESTIVAL_LIBS=""
256
257 AM_CONDITIONAL(FESTIVAL_ENABLED, [test "$enable_festival" = "yes"])
258 AC_SUBST(FESTIVAL_ENABLED)
259 AC_SUBST(FESTIVAL_CXXFLAGS)
260 AC_SUBST(FESTIVAL_LIBS)
261
262 # Check if espeak support should be enabled.
263 AC_ARG_ENABLE(espeak,
264               [  --enable-espeak           enable espeak synthesizer support],
265               [enable_espeak=$enableval], [enable_espeak=auto])
266
267 if test "$enable_espeak" != "no"; then
268     AC_CHECK_HEADERS([espeak/speak_lib.h], [have_espeak=yes], [have_espeak=no])
269
270     if test "$have_espeak" = "no" -a "$enable_espeak" = "yes"; then
271         AC_MSG_ERROR([espeak development libraries not found.])
272     fi
273
274     enable_espeak=$have_espeak
275 fi
276
277 if test "$enable_espeak" = "yes"; then
278     AC_MSG_NOTICE([espeak synthesizer support is enabled.])
279     AC_DEFINE([ESPEAK_ENABLED], 1, [Enable espeak support ?])
280     ESPEAK_INCLUDES="-I$prefix/include"
281     ESPEAK_CFLAGS="$ESPEAK_INCLUDES"
282     ESPEAK_LIBS="-lespeak"
283 else
284     AC_MSG_NOTICE([espeak synthesizer support is disabled.])
285 fi
286
287 AM_CONDITIONAL(ESPEAK_ENABLED, [test "$enable_espeak" = "yes"])
288 AC_SUBST(ESPEAK_ENABLED)
289 AC_SUBST(ESPEAK_CFLAGS)
290 AC_SUBST(ESPEAK_LIBS)
291
292 # Check if systemd socket-based activation was enabled.
293 AC_ARG_ENABLE(systemd,
294               [  --enable-systemd       enable systemd socket-based activation],
295               [enable_systemd=$enableval], [enable_systemd=no])
296
297 if test "$enable_systemd" = "yes"; then
298     PKG_CHECK_MODULES(SYSTEMD, libsystemd-daemon)
299 else
300     AC_MSG_NOTICE([systemd support is disabled.])
301 fi
302
303 if test "$enable_systemd" = "yes"; then
304     AC_DEFINE([SYSTEMD_ENABLED], 1, [Enable systemd socket-based activation ?])
305 fi
306
307 AM_CONDITIONAL(SYSTEMD_ENABLED, [test "$enable_systemd" = "yes"])
308 AC_SUBST(SYSTEMD_CFLAGS)
309 AC_SUBST(SYSTEMD_LIBS)
310
311 # Shave by default.
312 SHAVE_INIT([build-aux], [enable])
313
314 # Create murphy symlink to src.
315 if test ! -L srs; then
316     AC_MSG_NOTICE([Symlinking src to srs...])
317     ln -s src srs
318 fi
319
320 # Generate output.
321 AC_CONFIG_FILES([build-aux/shave
322                  build-aux/shave-libtool
323                  Makefile
324                  utils/Makefile
325                  src/Makefile
326                  src/plugins/client-api/native/srs-native-client.pc
327                  ])
328 AC_OUTPUT
329
330
331 # Display the configuration.
332 echo "----- configuration -----"
333 echo "Extra C warnings flags: $WARNING_CFLAGS"
334 echo "D-Bus support: $enable_dbus"
335 echo "Sphinx support: $enable_sphinx"
336 echo "Festival support: $enable_festival"
337 echo "Espeak support: $enable_espeak"
338 echo "systemd socket-based activation: $enable_systemd"
339
340 if test "$DUMP_LIB_FLAGS" = "yes"; then
341     echo "MURPHY_COMMON:"
342     echo "  CFLAGS: $MURPHY_COMMON_CFLAGS"
343     echo "  LIBS  : $MURPHY_COMMON_LIBS"
344
345     echo "MURPHY_DBUS:"
346     echo "  CFLAGS: $MURPHY_DBUS_CFLAGS"
347     echo "  LIBS  : $MURPHY_DBUS_LIBS"
348
349     echo "MURPHY_PULSE:"
350     echo "  CFLAGS: $MURPHY_PULSE_CFLAGS"
351     echo "  LIBS  : $MURPHY_PULSE_LIBS"
352
353     echo "MURPHY_RESOURCE:"
354     echo "  CFLAGS: $MURPHY_RESOURCE_CFLAGS"
355     echo "  LIBS  : $MURPHY_RESOURCE_LIBS"
356
357     echo "MURPHY_BREEDLINE:"
358     echo "  CFLAGS: $MURPHY_BREEDLINE_CFLAGS"
359     echo "  LIBS  : $MURPHY_BREEDLINE_LIBS"
360 fi