Disabled binaries that required readline.
[profile/ivi/murphy.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([murphy],
8         m4_esyscmd([build-aux/git-version-gen .tarball-version]),
9         [krisztian.litkey at intel.com])
10
11 AC_CONFIG_MACRO_DIR([m4])
12 AC_CONFIG_SRCDIR([src])
13 AC_CONFIG_HEADER([src/config.h])
14 AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
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 MURPHY_VERSION_INFO="0:0:0"
29 AC_SUBST(MURPHY_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 AC_PROG_AWK
38 AC_PROG_INSTALL
39 AM_PROG_CC_C_O
40 AM_PROG_LIBTOOL
41 AC_PROG_LEX
42 AC_PROG_YACC
43 AM_PROG_LEX
44 AC_SUBST(LEXLIB)
45
46 # Don't require ctags (we keep linker scripts and debug files in the repo now).
47 #AC_CHECK_PROG(CTAGS, ctags, "ctags")
48 #if test "$CTAGS" != "ctags" ; then
49 #   AC_MSG_ERROR([ctags is required])
50 #fi
51
52 if test "$LEX" != "flex" ; then
53    AC_MSG_ERROR([flex is required])
54 fi
55
56 if test "$YACC" != "bison -y" ; then
57    AC_MSG_ERROR([bison is required])
58 fi
59
60 # Checks for libraries.
61 AC_CHECK_LIB([dl], [dlopen dlclose dlsym dlerror])
62
63 # Checks for header files.
64 AC_PATH_X
65 AC_CHECK_HEADERS([fcntl.h stddef.h stdint.h stdlib.h string.h sys/statvfs.h sys/vfs.h syslog.h unistd.h])
66
67 # Checks for typedefs, structures, and compiler characteristics.
68 AC_HEADER_STDBOOL
69 AC_C_INLINE
70 AC_TYPE_INT16_T
71 AC_TYPE_INT32_T
72 AC_TYPE_INT64_T
73 AC_TYPE_MODE_T
74 AC_TYPE_PID_T
75 AC_TYPE_SIZE_T
76 AC_TYPE_SSIZE_T
77 AC_CHECK_MEMBERS([struct stat.st_rdev])
78 AC_TYPE_UINT16_T
79 AC_TYPE_UINT32_T
80 AC_TYPE_UINT64_T
81 AC_TYPE_UINT8_T
82 AC_CHECK_TYPES([ptrdiff_t])
83
84 # Checks for library functions.
85 AC_FUNC_ERROR_AT_LINE
86 AC_HEADER_MAJOR
87 AC_FUNC_MALLOC
88 AC_FUNC_STRTOD
89 AC_CHECK_FUNCS([clock_gettime memmove memset regcomp strcasecmp strchr strdup strrchr strtol strtoul])
90
91 # Check and enable extra compiler warnings if they are supported.
92 AC_ARG_ENABLE(extra-warnings,
93               [  --enable-extra-warnings enable extra compiler warnings],
94               [extra_warnings=$enableval], [extra_warnings=auto])
95
96 WARNING_CFLAGS=""
97 warncflags="-Wall -Wextra"
98 if test "$extra_warnings" != "no"; then
99     save_CPPFLAGS="$CPPFLAGS"
100     for opt in $warncflags; do
101         AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
102                           [WARNING_CFLAGS="$WARNING_CFLAGS $opt"])
103     done
104     CPPFLAGS="$save_CPPFLAGS"
105 fi
106
107 AC_SUBST(WARNING_CFLAGS)
108
109 # check for LUA
110 PKG_CHECK_MODULES(LUA, lua >= 5.1.1)
111 AC_SUBST(LUA_CFLAGS)
112 AC_SUBST(LUA_LIBS)
113
114 # Check if potentially GPL bits are allowed to be enabled.
115 AC_ARG_ENABLE(gpl,
116               [  --enable-gpl            enable linking against GPL code],
117               [enable_gpl=$enableval], [enable_gpl=no])
118
119 # Check if DBUS was enabled.
120 AC_ARG_ENABLE(dbus,
121               [  --enable-dbus           enable D-BUS support],
122               [enable_dbus=$enableval], [enable_dbus=no])
123
124 if test "$enable_dbus" = "yes"; then
125     if test "$enable_gpl" = "no"; then
126         AC_MSG_ERROR([D-Bus support requires the --enable-gpl option.])
127     fi
128     PKG_CHECK_MODULES(DBUS, dbus-1 >= 0.70)
129
130     DBUS_SESSION_DIR="`pkg-config --variable session_bus_services_dir dbus-1`"
131     AC_SUBST(DBUS_SESSION_DIR)
132 else
133     AC_MSG_NOTICE([D-Bus support is disabled.])
134 fi
135
136 if test "$enable_dbus" = "yes"; then
137     AC_DEFINE([DBUS_ENABLED], 1, [Enable D-BUS support ?])
138 fi
139
140 AM_CONDITIONAL(DBUS_ENABLED, [test "$enable_dbus" = "yes"])
141 AC_SUBST(DBUS_ENABLED)
142 AC_SUBST(DBUS_CFLAGS)
143 AC_SUBST(DBUS_LIBS)
144
145 # Check if PulseAudio mainloop support was enabled.
146 AC_ARG_ENABLE(pulse,
147               [  --enable-pulse          enable PulseAudio mainloop support],
148               [enable_pulse=$enableval], [enable_pulse=auto])
149
150 if test "$enable_pulse" != "no"; then
151     PKG_CHECK_MODULES(PULSE, libpulse >= 0.9.22,
152                              [have_pulse=yes], [have_pulse=no])
153     if test "$have_pulse" = "no" -a "$enable_pulse" = "yes"; then
154         AC_MSG_ERROR([PulseAudio development libraries not found.])
155     fi
156
157     if test "$enable_gpl" = "no"; then
158         if test "$enable_pulse" = "yes"; then
159            AC_MSG_ERROR([PulseAudio support requires the --enable-gpl option.])
160         else
161            enable_pulse="no"
162         fi
163     else
164         enable_pulse="$have_pulse"
165     fi
166 else
167     AC_MSG_NOTICE([PulseAudio mainloop support is disabled.])
168 fi
169
170 if test "$enable_pulse" = "yes"; then
171     AC_DEFINE([PULSE_ENABLED], 1, [Enable PulseAudio mainloop support ?])
172 fi
173 AM_CONDITIONAL(PULSE_ENABLED, [test "$enable_pulse" = "yes"])
174 AC_SUBST(PULSE_ENABLED)
175 AC_SUBST(PULSE_CFLAGS)
176 AC_SUBST(PULSE_LIBS)
177
178 # Check if EFL/ecore mainloop support was enabled.
179 AC_ARG_ENABLE(ecore,
180               [  --enable-ecore          enable EFL/ecore mainloop support],
181               [enable_ecore=$enableval], [enable_ecore=auto])
182
183 if test "$enable_ecore" != "no"; then
184     PKG_CHECK_MODULES(ECORE, ecore,
185                       [have_ecore=yes], [have_ecore=no])
186     if test "$have_ecore" = "no" -a "$enable_ecore" = "yes"; then
187         AC_MSG_ERROR([EFL/ecore development libraries not found.])
188     fi
189
190     enable_ecore="$have_ecore"
191 else
192     AC_MSG_NOTICE([EFL/ecore mainloop support is disabled.])
193 fi
194
195 if test "$enable_ecore" = "yes"; then
196     AC_DEFINE([ECORE_ENABLED], 1, [Enable EFL/ecore mainloop support ?])
197 fi
198 AM_CONDITIONAL(ECORE_ENABLED, [test "$enable_ecore" = "yes"])
199 AC_SUBST(ECORE_ENABLED)
200 AC_SUBST(ECORE_CFLAGS)
201 AC_SUBST(ECORE_LIBS)
202
203 # Check if glib mainloop support was enabled.
204 AC_ARG_ENABLE(glib,
205               [  --enable-glib          enable glib mainloop support],
206               [enable_glib=$enableval], [enable_glib=auto])
207
208 if test "$enable_glib" != "no"; then
209     PKG_CHECK_MODULES(GLIB, glib-2.0,
210                       [have_glib=yes], [have_glib=no])
211     if test "$have_glib" = "no" -a "$enable_glib" = "yes"; then
212         AC_MSG_ERROR([glib development libraries not found.])
213     fi
214
215     enable_glib="$have_glib"
216 else
217     AC_MSG_NOTICE([glib mainloop support is disabled.])
218 fi
219
220 if test "$enable_glib" = "yes"; then
221     AC_DEFINE([GLIB_ENABLED], 1, [Enable glib mainloop support ?])
222 fi
223 AM_CONDITIONAL(GLIB_ENABLED, [test "$enable_glib" = "yes"])
224 AC_SUBST(GLIB_ENABLED)
225 AC_SUBST(GLIB_CFLAGS)
226 AC_SUBST(GLIB_LIBS)
227
228 # Check if building murphy-console was enabled.
229 AC_ARG_ENABLE(console,
230               [  --enable-console        build Murphy console],
231               [enable_console=$enableval], [enable_console=yes])
232
233 if test "$enable_console" = "no"; then
234     AC_MSG_NOTICE([Murphy console binary is disabled.])
235 else
236     AC_MSG_NOTICE([Murphy console binary is currently forcibly disabled.])
237     enable_console=no
238 fi
239
240 if test "$enable_console" = "yes"; then
241     AC_DEFINE([CONSOLE_ENABLED], 1, [Build Murphy console ?])
242 fi
243 AM_CONDITIONAL(CONSOLE_ENABLED, [test "$enable_console" = "yes"])
244 AC_SUBST(CONSOLE_ENABLED)
245 AC_SUBST(READLINE_CFLAGS)
246 AC_SUBST(READLINE_LIBS)
247
248 # Set up murphy CFLAGS and LIBS.
249 MURPHY_CFLAGS=""
250 MURPHY_LIBS=""
251 AC_SUBST(MURPHY_CFLAGS)
252 AC_SUBST(MURPHY_LIBS)
253
254 # Add LIBDIR to config.h.
255 AC_MSG_CHECKING([libdir])
256 AC_MSG_RESULT([$libdir])
257 AC_SUBST(LIBDIR, [$libdir])
258
259 #Check whether we build resources or not
260 AC_ARG_WITH(resources,
261             [  --with-resources wheter to build resource management support],
262             [with_resources=$withval],[with_resources=yes])
263
264 AM_CONDITIONAL(BUILD_RESOURCES,  [ test x$with_resources = "xyes" ])
265
266
267 # Check which plugins should be disabled.
268 AC_ARG_WITH(disabled-plugins,
269             [  --with-disabled-plugins=<plugin-list> specify which plugins to disable],
270             [disabled_plugins=$withval],[disabled_plugins=none])
271
272 # Check which plugins should be compiled as standalone DSOs.
273 AC_ARG_WITH(dynamic-plugins,
274             [  --with-dynamic-plugins=<plugin-list>  specify which plugins compile as DSOs],
275             [dynamic_plugins=$withval],[dynamic_plugins=none])
276
277 all_plugins=$(find src/plugins/. -name plugin-*.c 2>/dev/null | \
278               sed 's#^.*/plugin-##g;s#\.c$##g' | tr '\n' ' ')
279
280 #echo "all plugins: [$all_plugins]"
281
282 case $dynamic_plugins in
283     all)  dynamic_plugins="$all_plugins";;
284     none) dynamic_plugins="";;
285 esac
286
287 internal=""; it=""
288 external=""; et=""
289 disabled=""; dt=""
290 for plugin in $all_plugins; do 
291     type=internal
292
293     for p in ${dynamic_plugins//,/ }; do
294         if test "$plugin" = "$p"; then
295             type=external
296         fi
297     done
298
299     for p in ${disabled_plugins//,/ }; do
300         if test "$plugin" = "$p"; then
301             type=disabled
302         fi
303     done
304
305     case $type in
306         internal) internal="$internal$it$plugin"; it=" ";;
307         external) external="$external$et$plugin"; et=" ";;
308         disabled) disabled="$disabled$dt$plugin"; dt=" ";;
309     esac
310 done
311
312 DISABLED_PLUGINS="$disabled"
313 INTERNAL_PLUGINS="$internal"
314 EXTERNAL_PLUGINS="$external"
315
316
317 function check_if_disabled() {
318     for p in $DISABLED_PLUGINS; do
319         if test "$1" = "$p"; then
320             return 0
321         fi
322     done
323
324     return 1
325 }
326
327 function check_if_internal() {
328     for p in $INTERNAL_PLUGINS; do
329         if test "$1" = "$p"; then
330             return 0
331         fi
332     done
333
334     return 1
335 }
336
337 AM_CONDITIONAL(DISABLED_PLUGIN_TEST,     [check_if_disabled test])
338 AM_CONDITIONAL(DISABLED_PLUGIN_DBUS,     [check_if_disabled dbus])
339 AM_CONDITIONAL(DISABLED_PLUGIN_GLIB,     [check_if_disabled glib])
340 AM_CONDITIONAL(DISABLED_PLUGIN_CONSOLE,  [check_if_disabled console])
341 AM_CONDITIONAL(DISABLED_PLUGIN_SIGNALLING, [check_if_disabled signalling])
342 AM_CONDITIONAL(DISABLED_PLUGIN_RESOURCE_DBUS, [check_if_disabled resource-dbus])
343 AM_CONDITIONAL(DISABLED_PLUGIN_DOMAIN_CONTROL,
344                [check_if_disabled domain-control])
345
346 AM_CONDITIONAL(BUILTIN_PLUGIN_TEST,     [check_if_internal test])
347 AM_CONDITIONAL(BUILTIN_PLUGIN_DBUS,     [check_if_internal dbus])
348 AM_CONDITIONAL(BUILTIN_PLUGIN_GLIB,     [check_if_internal glib])
349 AM_CONDITIONAL(BUILTIN_PLUGIN_CONSOLE,  [check_if_internal console])
350 AM_CONDITIONAL(BUILTIN_PLUGIN_SIGNALLING, [check_if_internal signalling])
351 AM_CONDITIONAL(BUILTIN_PLUGIN_RESOURCE_DBUS, [check_if_internal resource-dbus])
352 AM_CONDITIONAL(BUILTIN_PLUGIN_DOMAIN_CONTROL,
353                [check_if_internal domain-control])
354 AM_CONDITIONAL(BUILTIN_PLUGIN_LUA,      [check_if_internal lua])
355
356 # Check for Check (unit test framework).
357 PKG_CHECK_MODULES(CHECK, 
358                   check >= 0.9.4,
359                   [has_check="yes"], [has_check="no"])
360 AM_CONDITIONAL(HAVE_CHECK, test "x$has_check" = "xyes")
361
362 AC_SUBST(CHECK_CFLAGS)
363 AC_SUBST(CHECK_LIBS)
364
365 if test "x$has_check" = "xno"; then
366     AC_MSG_WARN([Check framework not found, unit tests are DISABLED.])
367 fi
368
369 # Check for documentation tools
370 AC_ARG_WITH([documentation],
371             [AS_HELP_STRING([--with-documentation],
372                             [generate pdf, html and other doc files])],
373             [],
374             [with_documentation=auto]
375 )
376
377 AS_IF( [ test x$with_documentation = xno ],
378        [ has_doc_tools="no" ],
379        [ AC_PATH_TOOL([MRP_DOXYGEN], doxygen)
380          AC_PATH_TOOL([MRP_LYX], lyx)
381          AC_PATH_TOOL([MRP_INKSCAPE], inkscape)
382          AC_PATH_TOOL([MRP_PYTHON], python)
383          AC_PATH_TOOL([MRP_TOUCH], touch)
384          AC_PATH_TOOL([MRP_DBLATEX], dblatex)
385          AC_PATH_TOOL([MRP_XMLTO], xmlto)
386
387          AS_IF( [ test x$MRP_DOXYGEN = x -o x$MRP_LYX = x -o \
388                        x$MRP_INKSCAPE = x -o x$MRP_PYTHON = x -o \
389                        x$MRP_TOUCH = x],
390                 [ has_doc_tools="no";
391                   AC_MSG_WARN([Some essential doc-tool is missing]) ],
392                 [ has_doc_tools="yes";
393                   MRP_DOCINIT() ]
394          ) ]
395 )
396
397 AS_IF( [ test x$has_doc_tools == "xno" -o x$MRP_DBLATEX = x ],
398        [ can_make_pdfs="no";
399          AC_WARN([No PDF documentation will be generated]) ],
400        [ can_make_pdfs="yes"]
401 )
402
403 AS_IF([ test x$has_doc_tools == "xno" -o x$MRP_XMLTO = x ],
404       [ can_make_html="no";
405         AC_WARN([No HTML documentation will be generated]) ],
406       [ can_make_html="yes" ]
407 )
408
409
410 AM_CONDITIONAL(BUILD_DOCUMENTATION,  [ test x$has_doc_tools = "xyes" ])
411 AM_CONDITIONAL(BUILD_PDF_DOCUMENTS,  [ test x$can_make_pdfs = "xyes" ])
412 AM_CONDITIONAL(BUILD_HTML_DOCUMENTS, [ test x$can_make_html = "xyes" ])
413
414 AC_SUBST(MRP_DOCDIR, [`pwd`/doc])
415 AC_SUBST(MRP_FIGDIR, [$MRP_DOCDIR/common/figures])
416 AC_SUBST(MRP_MAKE_DOCRULES, [$MRP_DOCDIR/Makefile.rules])
417 AC_SUBST(MRP_DOCSCRIPT_DIR, [$MRP_DOCDIR/scripts])
418 AC_SUBST(MRP_ABNF, [$MRP_DOCSCRIPT_DIR/abnf.py])
419 AC_SUBST(MRP_DBLYXFIX, [$MRP_DOCSCRIPT_DIR/dblyxfix.py])
420 AC_SUBST(MRP_DOXML2DB, [$MRP_DOCSCRIPT_DIR/doxml2db.py])
421 AC_SUBST(MRP_DOXYDEPS, [$MRP_DOCSCRIPT_DIR/doxydeps.py])
422
423
424 # Shave by default.
425 SHAVE_INIT([build-aux], [enable])
426
427 # Create murphy symlink to src.
428 if test ! -L murphy; then
429     AC_MSG_NOTICE([Symlinking src to murphy...])
430     ln -s src murphy
431 fi
432
433 # Generate output.
434 AC_CONFIG_FILES([build-aux/shave
435                  build-aux/shave-libtool
436                  Makefile
437                  src/Makefile
438                  src/common/tests/Makefile
439                  src/core/tests/Makefile
440                  src/core/lua-decision/tests/Makefile
441                  src/daemon/tests/Makefile
442                  src/plugins/tests/Makefile
443                  src/common/murphy-common.pc
444                  src/common/murphy-dbus.pc
445                  src/common/murphy-pulse.pc
446                  src/common/murphy-ecore.pc
447                  src/common/murphy-glib.pc
448                  src/core/murphy-core.pc
449                  src/core/lua-utils/murphy-lua-utils.pc
450                  src/core/lua-decision/murphy-lua-decision.pc
451                  src/murphy-db/Makefile
452                  src/murphy-db/mdb/Makefile
453                  src/murphy-db/mqi/Makefile
454                  src/murphy-db/mql/Makefile
455                  src/murphy-db/include/Makefile
456                  src/murphy-db/tests/Makefile
457                  src/resolver/murphy-resolver.pc
458                  src/resolver/tests/Makefile
459                  src/resource/murphy-resource.pc
460                  src/plugins/domain-control/murphy-domain-controller.pc
461                  doc/Makefile
462                  doc/plugin-developer-guide/Makefile
463                  doc/plugin-developer-guide/db/Makefile
464                  doc/plugin-developer-guide/doxml/Makefile
465                  ])
466 AC_OUTPUT
467
468
469 # Display the configuration.
470 echo "----- configuration -----"
471 echo "Extra C warnings flags: $WARNING_CFLAGS"
472 echo "D-Bus support: $enable_dbus"
473 echo "PulseAudio mainloop support: $enable_pulse"
474 echo "EFL/ecore mainloop support: $enable_ecore"
475 echo "glib mainloop support: $enable_glib"
476 echo "Murphy console plugin and client: $enable_console"
477 echo "Resource management support: $with_resources"
478 echo "Plugins:"
479 echo "  - linked-in:"
480 for plugin in ${INTERNAL_PLUGINS:-none}; do
481     echo "      $plugin"
482 done
483 echo "  - dynamic:"
484 for plugin in ${EXTERNAL_PLUGINS:-none}; do
485     echo "      $plugin"
486 done
487 echo "  - disabled:"
488 for plugin in ${DISABLED_PLUGINS:-none}; do
489     echo "      $plugin"
490 done