build: add more verbose recursive error-messages to configure.ac
[platform/upstream/kmscon.git] / configure.ac
1 #
2 # Kmscon - build configuration script
3 # Copyright (c) 2012 David Herrmann <dh.herrmann@googlemail.com>
4 #
5
6 AC_PREREQ(2.68)
7
8 AC_INIT([kmscon], [5])
9 AC_SUBST(PACKAGE_URL, [https://github.com/dvdhrm/kmscon])
10 AC_CONFIG_SRCDIR([src/kmscon_main.c])
11 AC_CONFIG_AUX_DIR([build-aux])
12 AC_CONFIG_MACRO_DIR([m4])
13 AC_CONFIG_HEADER(config.h)
14
15 AM_INIT_AUTOMAKE([foreign 1.11 subdir-objects dist-bzip2 no-dist-gzip tar-pax -Wall -Werror -Wno-portability])
16 AM_SILENT_RULES([yes])
17
18 #
19 # Don't add a default "-g -O2" if CFLAGS wasn't specified. For debugging it is
20 # often more convenient to have "-g -O0". You can still override it by
21 # explicitely setting it on the command line.
22 #
23
24 : ${CFLAGS=""}
25
26 AC_USE_SYSTEM_EXTENSIONS
27 AC_PROG_CC
28 AC_PROG_CC_C99
29 AM_PROG_CC_C_O
30 AC_PROG_SED
31 m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
32
33 LT_PREREQ(2.2)
34 LT_INIT
35
36 #
37 # pkg-config dependencies
38 # This unconditionally checks for all dependencies even if they are disabled. We
39 # later look whether all required depedencies are met and finish the
40 # configuration. We group similar packages into one logical group here to avoid
41 # having variables for each single library.
42 # This, however, makes ./configure output very unintuitive error messages if a
43 # package is not found so we must make sure we print more verbose messages
44 # ourself.
45 #
46
47 PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon],
48                   [have_xkbcommon=yes], [have_xkbcommon=no])
49 AC_SUBST(XKBCOMMON_CFLAGS)
50 AC_SUBST(XKBCOMMON_LIBS)
51
52 PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server wayland-cursor],
53                   [have_wayland=yes], [have_wayland=no])
54 AC_SUBST(WAYLAND_CFLAGS)
55 AC_SUBST(WAYLAND_LIBS)
56
57 PKG_CHECK_MODULES([SYSTEMD], [libsystemd-daemon libsystemd-login],
58                   [have_systemd=yes], [have_systemd=no])
59 AC_SUBST(SYSTEMD_CFLAGS)
60 AC_SUBST(SYSTEMD_LIBS)
61
62 PKG_CHECK_MODULES([UDEV], [libudev],
63                   [have_udev=yes], [have_udev=no])
64 AC_SUBST(UDEV_CFLAGS)
65 AC_SUBST(UDEV_LIBS)
66
67 PKG_CHECK_MODULES([DBUS], [dbus-1],
68                   [have_dbus=yes], [have_dbus=no])
69 AC_SUBST(DBUS_CFLAGS)
70 AC_SUBST(DBUS_LIBS)
71
72 PKG_CHECK_MODULES([DRM], [libdrm],
73                   [have_drm=yes], [have_drm=no])
74 AC_SUBST(DRM_CFLAGS)
75 AC_SUBST(DRM_LIBS)
76
77 PKG_CHECK_MODULES([GBM], [gbm],
78                   [have_gbm=yes], [have_gbm=no])
79 AC_SUBST(GBM_CFLAGS)
80 AC_SUBST(GBM_LIBS)
81
82 PKG_CHECK_MODULES([EGL], [egl],
83                   [have_egl=yes], [have_egl=no])
84 AC_SUBST(EGL_CFLAGS)
85 AC_SUBST(EGL_LIBS)
86
87 PKG_CHECK_MODULES([GLES2], [glesv2],
88                   [have_gles2=yes], [have_gles2=no])
89 AC_SUBST(GLES2_CFLAGS)
90 AC_SUBST(GLES2_LIBS)
91
92 PKG_CHECK_MODULES([FREETYPE2], [freetype2 fontconfig],
93                   [have_freetype2=yes], [have_freetype2=no])
94 AC_SUBST(FREETYPE2_CFLAGS)
95 AC_SUBST(FREETYPE2_LIBS)
96
97 PKG_CHECK_MODULES([PANGO], [pango pangoft2],
98                   [have_pango=yes], [have_pango=no])
99 AC_SUBST(PANGO_CFLAGS)
100 AC_SUBST(PANGO_LIBS)
101
102 PKG_CHECK_MODULES([FUSE], [fuse],
103                   [have_fuse=yes], [have_fuse=no])
104 AC_SUBST(FUSE_CFLAGS)
105 AC_SUBST(FUSE_LIBS)
106
107 PKG_CHECK_MODULES([PCIACCESS], [pciaccess],
108                   [have_pciaccess=yes], [have_pciaccess=no])
109 AC_SUBST(PCIACCESS_CFLAGS)
110 AC_SUBST(PCIACCESS_LIBS)
111
112 #
113 # Parse arguments
114 # This parses all arguments that are given via "--enable-XY" or "--with-XY" and
115 # saves the results in local variables. This does not check dependencies or
116 # similar but does only parse the arguments.
117 #
118
119 # eloop
120 AC_MSG_CHECKING([whether user wants eloop])
121 AC_ARG_ENABLE([eloop],
122               [AS_HELP_STRING([--enable-eloop],
123                               [build eloop library])])
124 if test "x$enable_eloop" = "x" ; then
125         enable_eloop="no (default)"
126 fi
127 AC_MSG_RESULT([$enable_eloop])
128
129 # TSM
130 AC_MSG_CHECKING([whether user wants TSM])
131 AC_ARG_ENABLE([tsm],
132               [AS_HELP_STRING([--enable-tsm],
133                               [build tsm library])])
134 if test "x$enable_tsm" = "x" ; then
135         enable_tsm="no (default)"
136 fi
137 AC_MSG_RESULT([$enable_tsm])
138
139 # uterm
140 AC_MSG_CHECKING([whether user wants uterm])
141 AC_ARG_ENABLE([uterm],
142               [AS_HELP_STRING([--enable-uterm],
143                               [build uterm library])])
144 if test "x$enable_uterm" = "x" ; then
145         enable_uterm="no (default)"
146 fi
147 AC_MSG_RESULT([$enable_uterm])
148
149 # kmscon
150 AC_MSG_CHECKING([whether user wants kmscon])
151 AC_ARG_ENABLE([kmscon],
152               [AS_HELP_STRING([--disable-kmscon],
153                               [do not build kmscon])])
154 if test "x$enable_kmscon" = "x" ; then
155         enable_kmscon="yes (default)"
156 fi
157 AC_MSG_RESULT([$enable_kmscon])
158
159 # wlterm
160 AC_MSG_CHECKING([whether user wants wlterm])
161 AC_ARG_ENABLE([wlterm],
162               [AS_HELP_STRING([--enable-wlterm],
163                               [build wlterm])])
164 if test "x$enable_wlterm" = "x" ; then
165         enable_wlterm="yes (default)"
166 fi
167 AC_MSG_RESULT([$enable_wlterm])
168
169 # debug
170 AC_MSG_CHECKING([whether to build with debugging on])
171 AC_ARG_ENABLE([debug],
172               [AS_HELP_STRING([--enable-debug],
173                               [whether to build with debugging on])])
174 if test "x$enable_debug" = "x" ; then
175         enable_debug="yes (default)"
176 fi
177 AC_MSG_RESULT([$enable_debug])
178
179 # optimizations
180 AC_MSG_CHECKING([whether to disable code optimizations])
181 AC_ARG_ENABLE([optimizations],
182               [AS_HELP_STRING([--disable-optimizations],
183                               [whether to disable code optimizations])])
184 if test "x$enable_optimizations" = "x" ; then
185         enable_optimizations="yes (default)"
186 fi
187 AC_MSG_RESULT([$enable_optimizations])
188
189 # multi-seat
190 AC_MSG_CHECKING([whether user wants systemd for multi-seat support])
191 AC_ARG_ENABLE([multi-seat],
192               [AS_HELP_STRING([--enable-multi-seat],
193                               [enable multi-seat support with systemd])])
194 if test "x$enable_multi_seat" = "x" ; then
195         enable_multi_seat="yes (default)"
196 fi
197 AC_MSG_RESULT([$enable_multi_seat])
198
199 # hotplug
200 AC_MSG_CHECKING([whether user wants udev for device hotplug support])
201 AC_ARG_ENABLE([hotplug],
202               [AS_HELP_STRING([--enable-hotplug],
203                               [enable device hotplug support with udev])])
204 if test "x$enable_hotplug" = "x" ; then
205         enable_hotplug="yes (default)"
206 fi
207 AC_MSG_RESULT([$enable_hotplug])
208
209 # pciaccess
210 AC_MSG_CHECKING([whether user wants pciaccess device detection])
211 AC_ARG_ENABLE([pciaccess],
212               [AS_HELP_STRING([--enable-pciaccess],
213                               [enable device detection via pciaccess])])
214 if test "x$enable_pciaccess" = "x" ; then
215         enable_pciaccess="yes (default)"
216 fi
217 AC_MSG_RESULT([$enable_pciaccess])
218
219 # eloop-dbus
220 AC_MSG_CHECKING([whether user wants eloop dbus support])
221 AC_ARG_ENABLE([eloop-dbus],
222               [AS_HELP_STRING([--enable-eloop-dbus],
223                               [enable eloop dbus support])])
224 if test "x$enable_eloop_dbus" = "x" ; then
225         enable_eloop_dbus="no (default)"
226 fi
227 AC_MSG_RESULT([$enable_eloop_dbus])
228
229 # video backends
230 AC_MSG_CHECKING([which video backends the user wants])
231 AC_ARG_WITH([video],
232             [AS_HELP_STRING([--with-video],
233               [specify list of optional video backends])])
234 enable_video_fbdev="no"
235 enable_video_dumb="no"
236 enable_video_drm="no"
237 if test "x$with_video" = "x" ; then
238         enable_video_fbdev="yes (default)"
239         enable_video_dumb="yes (default)"
240         enable_video_drm="yes (default)"
241         with_video="fbdev,dumb,drm (default)"
242 else
243         SAVEIFS="$IFS"
244         IFS=","
245         for i in $with_video ; do
246                 if test "x$i" = "xfbdev" ; then
247                         enable_video_fbdev="yes"
248                 elif test "x$i" = "xdumb" ; then
249                         enable_video_dumb="yes"
250                 elif test "x$i" = "xdrm" ; then
251                         enable_video_drm="yes"
252                 else
253                         IFS="$SAVEIFS"
254                         AC_ERROR([Invalid video backend $i])
255                 fi
256         done
257         IFS="$SAVEIFS"
258 fi
259 AC_MSG_RESULT([$with_video])
260
261 # renderers
262 AC_MSG_CHECKING([which render backends the user wants])
263 AC_ARG_WITH([renderers],
264             [AS_HELP_STRING([--with-renderers],
265               [specify list of optional render backends])])
266 enable_renderer_bblit="no"
267 enable_renderer_bbulk="no"
268 enable_renderer_gltex="no"
269 if test "x$with_renderers" = "x" ; then
270         enable_renderer_bblit="yes (default)"
271         enable_renderer_bbulk="yes (default)"
272         enable_renderer_gltex="yes (default)"
273         with_renderers="bblit,bbulk,gltex (default)"
274 else
275         SAVEIFS="$IFS"
276         IFS=","
277         for i in $with_renderers ; do
278                 if test "x$i" = "xbblit" ; then
279                         enable_renderer_bblit="yes"
280                 elif test "x$i" = "xbbulk" ; then
281                         enable_renderer_bbulk="yes"
282                 elif test "x$i" = "xgltex" ; then
283                         enable_renderer_gltex="yes"
284                 else
285                         IFS="$SAVEIFS"
286                         AC_ERROR([Unknown renderer $i])
287                 fi
288         done
289         IFS="$SAVEIFS"
290 fi
291 AC_MSG_RESULT([$with_renderers])
292
293 # font backends
294 AC_MSG_CHECKING([which font backends the user wants])
295 AC_ARG_WITH([fonts],
296             [AS_HELP_STRING([--with-fonts],
297               [specify list of optional font backends])])
298 enable_font_8x16="no"
299 enable_font_unifont="no"
300 enable_font_freetype2="no"
301 enable_font_pango="no"
302 if test "x$with_fonts" = "x" ; then
303         enable_font_8x16="yes (default)"
304         enable_font_unifont="no (default)"
305         enable_font_freetype2="yes (default)"
306         enable_font_pango="yes (default)"
307         with_fonts="8x16,freetype2,pango (default)"
308 else
309         SAVEIFS="$IFS"
310         IFS=","
311         for i in $with_fonts ; do
312                 if test "x$i" = "x8x16" ; then
313                         enable_font_8x16="yes"
314                 elif test "x$i" = "xunifont" ; then
315                         enable_font_unifont="yes"
316                 elif test "x$i" = "xfreetype2" ; then
317                         enable_font_freetype2="yes"
318                 elif test "x$i" = "xpango" ; then
319                         enable_font_pango="yes"
320                 else
321                         IFS="$SAVEIFS"
322                         AC_ERROR([Unknown font backend $i])
323                 fi
324         done
325         IFS="$SAVEIFS"
326 fi
327 AC_MSG_RESULT([$with_fonts])
328
329 # kmscon sessions
330 AC_MSG_CHECKING([which sessions the user wants])
331 AC_ARG_WITH([sessions],
332             [AS_HELP_STRING([--with-sessions],
333               [specify list of optional sessions])])
334 enable_session_dummy="no"
335 enable_session_terminal="no"
336 enable_session_cdev="no"
337 if test "x$with_sessions" = "x" ; then
338         enable_session_dummy="yes (default)"
339         enable_session_terminal="yes (default)"
340         enable_session_cdev="yes (default)"
341         with_sessions="dummy,terminal,cdev (default)"
342 else
343         SAVEIFS="$IFS"
344         IFS=","
345         for i in $with_sessions ; do
346                 if test "x$i" = "xdummy" ; then
347                         enable_session_dummy="yes"
348                 elif test "x$i" = "xterminal" ; then
349                         enable_session_terminal="yes"
350                 elif test "x$i" = "xcdev" ; then
351                         enable_session_cdev="yes"
352                 else
353                         IFS="$SAVEIFS"
354                         AC_ERROR([Unknown session type $i])
355                 fi
356         done
357         IFS="$SAVEIFS"
358 fi
359 AC_MSG_RESULT([$with_sessions])
360
361 #
362 # Check what can be built
363 # This checks each configuration option and tests whether all dependencies are
364 # met. This is done from bottom up to ensure the right order.
365 #
366
367 # debug
368 debug_avail=no
369 debug_missing=""
370 if test ! "x$enable_debug" = "xno" ; then
371         debug_avail=yes
372 else
373         debug_missing="enable-debug"
374 fi
375
376 # optimizations
377 optimizations_avail=no
378 optimizations_missing=""
379 if test ! "x$enable_optimizations" = "xno" ; then
380         optimizations_avail=yes
381 else
382         optimizations_missing="enable-optimizations"
383 fi
384
385 # eloop-dbus
386 eloop_dbus_avail=no
387 eloop_dbus_missing=""
388 if test ! "x$enable_eloop_dbus" = "xno" ; then
389         eloop_dbus_avail=yes
390         if test "x$have_dbus" = "xno" ; then
391                 eloop_dbus_avail=no
392                 eloop_dbus_missing="libdbus"
393         fi
394
395         if test "x$eloop_dbus_avail" = "xno" ; then
396                 if test "x$enable_eloop_dbus" = "xyes" ; then
397                         AC_ERROR([missing for eloop-dbus: $eloop_dbus_missing])
398                 fi
399         fi
400 else
401         eloop_dbus_missing="enable-eloop-dbus"
402 fi
403
404 # eloop
405 eloop_avail=no
406 eloop_missing=""
407 if test ! "x$enable_eloop" = "xno" ; then
408         eloop_avail=yes
409 else
410         eloop_missing="enable-eloop"
411 fi
412
413 # TSM
414 tsm_avail=no
415 tsm_missing=""
416 if test ! "x$enable_tsm" = "xno" ; then
417         tsm_avail=yes
418         if test "x$have_xkbcommon" = "xno" ; then
419                 tsm_avail=no
420                 tsm_missing="libxkbcommon"
421         fi
422
423         if test "x$tsm_avail" = "xno" ; then
424                 if test "x$enable_tsm" = "xyes" ; then
425                         AC_ERROR([missing for TSM: $tsm_missing])
426                 fi
427         fi
428 else
429         tsm_missing="enable-tsm"
430 fi
431
432 # video fbdev
433 video_fbdev_avail=no
434 video_fbdev_missing=""
435 if test ! "x$enable_video_fbdev" = "xno" ; then
436         # TODO: check for kernel headers
437         video_fbdev_avail=yes
438 else
439         video_fbdev_missing="enable-video-fbdev"
440 fi
441
442 # video dumb
443 video_dumb_avail=no
444 video_dumb_missing=""
445 if test ! "x$enable_video_dumb" = "xno" ; then
446         video_dumb_avail=yes
447         if test "x$have_drm" = "xno" ; then
448                 video_dumb_avail=no
449                 video_dumb_missing="libdrm"
450         fi
451
452         if test "x$video_dumb_avail" = "xno" ; then
453                 if test "x$enable_video_dumb" = "xyes" ; then
454                         AC_ERROR([missing for dumb video backend: $video_dumb_missing])
455                 fi
456         fi
457 else
458         video_dumb_missing="enable-video-dumb"
459 fi
460
461 # video drm
462 video_drm_avail=no
463 video_drm_missing=""
464 if test ! "x$enable_video_drm" = "xno" ; then
465         video_drm_avail=yes
466         if test "x$have_drm" = "xno" ; then
467                 video_drm_avail=no
468                 video_drm_missing="libdrm,$video_drm_missing"
469         fi
470         if test "x$have_gbm" = "xno" ; then
471                 video_drm_avail=no
472                 video_drm_missing="libgbm,$video_drm_missing"
473         fi
474         if test "x$have_egl" = "xno" ; then
475                 video_drm_avail=no
476                 video_drm_missing="libegl,$video_drm_missing"
477         fi
478         if test "x$have_gles2" = "xno" ; then
479                 video_drm_avail=no
480                 video_drm_missing="libgles2,$video_drm_missing"
481         fi
482
483         if test "x$video_drm_avail" = "xno" ; then
484                 if test "x$enable_video_drm" = "xyes" ; then
485                         AC_ERROR([missing for drm video backend: $video_drm_missing])
486                 fi
487         fi
488 else
489         video_drm_missing="enable-video-drm"
490 fi
491
492 # uterm
493 uterm_avail=no
494 uterm_missing=""
495 if test ! "x$enable_uterm" = "xno" ; then
496         uterm_avail=yes
497 else
498         uterm_missing="enable-uterm"
499 fi
500
501 # multi-seat
502 multi_seat_avail=no
503 multi_seat_missing=""
504 if test ! "x$enable_multi_seat" = "xno" ; then
505         multi_seat_avail=yes
506         if test "x$have_systemd" = "xno" ; then
507                 multi_seat_avail=no
508                 multi_seat_missing="libsystemd"
509         fi
510
511         if test "x$multi_seat_avail" = "xno" ; then
512                 if test "x$enable_multi_seat" = "xyes" ; then
513                         AC_ERROR([missing for multi-seat support: $multi_seat_missing])
514                 fi
515         fi
516 else
517         multi_seat_missing="enable-multi-seat"
518 fi
519
520 # hotplug
521 hotplug_avail=no
522 hotplug_missing=""
523 if test ! "x$enable_hotplug" = "xno" ; then
524         hotplug_avail=yes
525         if test "x$have_udev" = "xno" ; then
526                 hotplug_avail=no
527                 hotplug_missing="libudev"
528         fi
529
530         if test "x$hotplug_avail" = "xno" ; then
531                 if test "x$enable_hotplug" = "xyes" ; then
532                         AC_ERROR([missing for hotplug-support: $hotplug_missing])
533                 fi
534         fi
535 else
536         hotplug_missing="enable-hotplug"
537 fi
538
539 # pciaccess
540 pciaccess_avail=no
541 pciaccess_missing=""
542 if test ! "x$enable_pciaccess" = "xno" ; then
543         pciaccess_avail=yes
544         if test "x$have_pciaccess" = "xno" ; then
545                 pciaccess_avail=no
546                 pciaccess_missing="libpciaccess"
547         fi
548
549         if test "x$pciaccess_avail" = "xno" ; then
550                 if test "x$enable_pciaccess" = "xyes" ; then
551                         AC_ERROR([missing for pciaccess: $pciaccess_missing])
552                 fi
553         fi
554 else
555         pciaccess_missing="enable-pciaccess"
556 fi
557
558 # renderer bblit
559 renderer_bblit_avail=no
560 renderer_bblit_missing=""
561 if test ! "x$enable_renderer_bblit" = "xno" ; then
562         renderer_bblit_avail=yes
563 else
564         renderer_bblit_missing="enable-renderer-bblit"
565 fi
566
567 # renderer bbulk
568 renderer_bbulk_avail=no
569 renderer_bbulk_missing=""
570 if test ! "x$enable_renderer_bbulk" = "xno" ; then
571         renderer_bbulk_avail=yes
572 else
573         renderer_bbulk_missing="enable-renderer-bbulk"
574 fi
575
576 # renderer gltex
577 renderer_gltex_avail=no
578 renderer_gltex_missing=""
579 if test ! "x$enable_renderer_gltex" = "xno" ; then
580         renderer_gltex_avail=yes
581         if test "x$have_gles2" = "xno" ; then
582                 renderer_gltex_avail=no
583                 renderer_gltex_missing="libgles2"
584         fi
585
586         if test "x$renderer_gltex_avail" = "xno" ; then
587                 if test "x$enable_renderer_gltex" = "xyes" ; then
588                         AC_ERROR([missing for renderer-gltex: $renderer_gltex_missing])
589                 fi
590         fi
591 else
592         renderer_gltex_missing="enable-renderer-gltex"
593 fi
594
595 # font 8x16
596 font_8x16_avail=no
597 font_8x16_missing=""
598 if test ! "x$enable_font_8x16" = "xno" ; then
599         font_8x16_avail=yes
600 else
601         font_8x16_missing="enable-font-8x16"
602 fi
603
604 # font unifont
605 font_unifont_avail=no
606 font_unifont_missing=""
607 if test ! "x$enable_font_unifont" = "xno" ; then
608         font_unifont_avail=yes
609 else
610         font_unifont_missing="enable-font-unifont"
611 fi
612
613 # font freetype2
614 font_freetype2_avail=no
615 font_freetype2_missing=""
616 if test ! "x$enable_font_freetype2" = "xno" ; then
617         font_freetype2_avail=yes
618         if test "x$have_freetype2" = "xno" ; then
619                 font_freetype2_avail=no
620                 font_freetype2_missing="libfontconfig,libfreetype2"
621         fi
622
623         if test "x$font_freetype2_avail" = "xno" ; then
624                 if test "x$enable_font_freetype2" = "xyes" ; then
625                         AC_ERROR([missing for font-freetype2: $font_freetype2_missing])
626                 fi
627         fi
628 else
629         font_freetype2_missing="enable-font-freetype2"
630 fi
631
632 # font pango
633 font_pango_avail=no
634 font_pango_missing=""
635 if test ! "x$enable_font_pango" = "xno" ; then
636         font_pango_avail=yes
637         if test "x$have_pango" = "xno" ; then
638                 font_pango_avail=no
639                 font_pango_missing="libpango"
640         fi
641
642         if test "x$font_pango_avail" = "xno" ; then
643                 if test "x$enable_font_pango" = "xyes" ; then
644                         AC_ERROR([missing for font-pango: $font_pango_missing])
645                 fi
646         fi
647 else
648         font_pango_missing="enable-font-pango"
649 fi
650
651 # session dummy
652 session_dummy_avail=no
653 session_dummy_missing=""
654 if test ! "x$enable_session_dummy" = "xno" ; then
655         session_dummy_avail=yes
656 else
657         session_dummy_missing="enable-session-dummy"
658 fi
659
660 # session terminal
661 session_terminal_avail=no
662 session_terminal_missing=""
663 if test ! "x$enable_session_terminal" = "xno" ; then
664         session_terminal_avail=yes
665         if test "x$tsm_avail" = "xno" ; then
666                 session_terminal_avail=no
667                 session_terminal_missing="$tsm_missing"
668         fi
669
670         if test "x$session_terminal_avail" = "xno" ; then
671                 if test "x$enable_session_terminal" = "xyes" ; then
672                         AC_ERROR([missing for session-terminal: $session_terminal_missing])
673                 fi
674         fi
675 else
676         session_terminal_missing="enable-session-terminal"
677 fi
678
679 # session cdev
680 session_cdev_avail=no
681 session_cdev_missing=""
682 if test ! "x$enable_session_cdev" = "xno" ; then
683         session_cdev_avail=yes
684         if test "x$have_fuse" = "xno" ; then
685                 session_cdev_avail=no
686                 session_cdev_missing="libfuse,$session_cdev_missing"
687         fi
688
689         if test "x$tsm_avail" = "xno" ; then
690                 session_cdev_avail=no
691                 session_cdev_missing="$tsm_missing,$session_cdev_missing"
692         fi
693
694         if test "x$session_cdev_avail" = "xno" ; then
695                 if test "x$enable_session_cdev" = "xyes" ; then
696                         AC_ERROR([missing for session-cdev: $session_cdev_missing])
697                 fi
698         fi
699 else
700         session_cdev_missing="enable-session-cdev"
701 fi
702
703 # kmscon
704 kmscon_avail=no
705 kmscon_missing=""
706 if test ! "x$enable_kmscon" = "xno" ; then
707         kmscon_avail=yes
708         if test "x$eloop_avail" = "xno" ; then
709                 kmscon_avail=no
710                 kmscon_missing="$eloop_missing,$kmscon_missing"
711         fi
712
713         if test "x$tsm_avail" = "xno" ; then
714                 kmscon_avail=no
715                 kmscon_missing="$tsm_missing,$kmscon_missing"
716         fi
717
718         if test "x$uterm_avail" = "xno" ; then
719                 kmscon_avail=no
720                 kmscon_missing="$uterm_missing,$kmscon_missing"
721         fi
722
723         if test "x$kmscon_avail" = "xno" ; then
724                 if test "x$enable_kmscon" = "xyes" ; then
725                         AC_ERROR([missing for kmscon: $kmscon_missing])
726                 fi
727         fi
728 else
729         kmscon_missing="enable-kmscon"
730 fi
731
732 # wlterm
733 wlterm_avail=no
734 wlterm_missing=""
735 if test ! "x$enable_wlterm" = "xno" ; then
736         wlterm_avail=yes
737         if test "x$tsm_avail" = "xno" ; then
738                 wlterm_avail=no
739                 wlterm_missing="$tsm_missing,$wlterm_missing"
740         fi
741
742         if test "x$eloop_avail" = "xno" ; then
743                 wlterm_avail=no
744                 wlterm_missing="$eloop_missing,$wlterm_missing"
745         fi
746
747         if test "x$have_wayland" = "xno" ; then
748                 wlterm_avail=no
749                 wlterm_missing="libwayland,$wlterm_missing"
750         fi
751
752         if test "x$wlterm_avail" = "xno" ; then
753                 if test "x$enable_wlterm" = "xyes" ; then
754                         AC_ERROR([missing for wlterm: $wlterm_missing])
755                 fi
756         fi
757 else
758         wlterm_missing="enable-wlterm"
759 fi
760
761 #
762 # Enable all required modules
763 # We now know which modules can be built by checking the *_avail variables set
764 # above. We now only have to disable all modules that are disabled by default
765 # and the user didn't force-enable them and no other module that is enabled
766 # needs them. This is done top-down of course.
767 #
768
769 # wlterm
770 wlterm_enabled=no
771 if test "x$wlterm_avail" = "xyes" ; then
772         if test "x${enable_wlterm% *}" = "xyes" ; then
773                 wlterm_enabled=yes
774                 enable_eloop=yes
775                 enable_tsm=yes
776         fi
777 fi
778
779 # kmscon
780 kmscon_enabled=no
781 if test "x$kmscon_avail" = "xyes" ; then
782         if test "x${enable_kmscon% *}" = "xyes" ; then
783                 kmscon_enabled=yes
784                 enable_eloop=yes
785                 enable_uterm=yes
786         fi
787 fi
788
789 # session cdev
790 session_cdev_enabled=no
791 if test "x$session_cdev_avail" = "xyes" ; then
792         if test "x${enable_session_cdev% *}" = "xyes" ; then
793                 session_cdev_enabled=yes
794         fi
795 fi
796
797 # session terminal
798 session_terminal_enabled=no
799 if test "x$session_terminal_avail" = "xyes" ; then
800         if test "x${enable_session_terminal% *}" = "xyes" ; then
801                 session_terminal_enabled=yes
802                 enable_tsm=yes
803         fi
804 fi
805
806 # session dummy
807 session_dummy_enabled=no
808 if test "x$session_dummy_avail" = "xyes" ; then
809         if test "x${enable_session_dummy% *}" = "xyes" ; then
810                 session_dummy_enabled=yes
811         fi
812 fi
813
814 # font pango
815 font_pango_enabled=no
816 if test "x$font_pango_avail" = "xyes" ; then
817         if test "x${enable_font_pango% *}" = "xyes" ; then
818                 font_pango_enabled=yes
819         fi
820 fi
821
822 # font freetype2
823 font_freetype2_enabled=no
824 if test "x$font_freetype2_avail" = "xyes" ; then
825         if test "x${enable_font_freetype2% *}" = "xyes" ; then
826                 font_freetype2_enabled=yes
827         fi
828 fi
829
830 # font unifont
831 font_unifont_enabled=no
832 if test "x$font_unifont_avail" = "xyes" ; then
833         if test "x${enable_font_unifont% *}" = "xyes" ; then
834                 font_unifont_enabled=yes
835         fi
836 fi
837
838 # font 8x16
839 font_8x16_enabled=no
840 if test "x$font_8x16_avail" = "xyes" ; then
841         if test "x${enable_font_8x16% *}" = "xyes" ; then
842                 font_8x16_enabled=yes
843         fi
844 fi
845
846 # renderer gltex
847 renderer_gltex_enabled=no
848 if test "x$renderer_gltex_avail" = "xyes" ; then
849         if test "x${enable_renderer_gltex% *}" = "xyes" ; then
850                 renderer_gltex_enabled=yes
851         fi
852 fi
853
854 # renderer bbulk
855 renderer_bbulk_enabled=no
856 if test "x$renderer_bbulk_avail" = "xyes" ; then
857         if test "x${enable_renderer_bbulk% *}" = "xyes" ; then
858                 renderer_bbulk_enabled=yes
859         fi
860 fi
861
862 # renderer bblit
863 renderer_bblit_enabled=no
864 if test "x$renderer_bblit_avail" = "xyes" ; then
865         if test "x${enable_renderer_bblit% *}" = "xyes" ; then
866                 renderer_bblit_enabled=yes
867         fi
868 fi
869
870 # pciaccess
871 pciaccess_enabled=no
872 if test "x$pciaccess_avail" = "xyes" ; then
873         if test "x${enable_pciaccess% *}" = "xyes" ; then
874                 pciaccess_enabled=yes
875         fi
876 fi
877
878 # hotplug
879 hotplug_enabled=no
880 if test "x$hotplug_avail" = "xyes" ; then
881         if test "x${enable_hotplug% *}" = "xyes" ; then
882                 hotplug_enabled=yes
883         fi
884 fi
885
886 # multi-seat
887 multi_seat_enabled=no
888 if test "x$multi_seat_avail" = "xyes" ; then
889         if test "x${enable_multi_seat% *}" = "xyes" ; then
890                 multi_seat_enabled=yes
891         fi
892 fi
893
894 # uterm
895 uterm_enabled=no
896 if test "x$uterm_avail" = "xyes" ; then
897         if test "x${enable_uterm% *}" = "xyes" ; then
898                 uterm_enabled=yes
899         fi
900 fi
901
902 # video drm
903 video_drm_enabled=no
904 if test "x$video_drm_avail" = "xyes" ; then
905         if test "x${enable_video_drm% *}" = "xyes" ; then
906                 video_drm_enabled=yes
907         fi
908 fi
909
910 # video dumb
911 video_dumb_enabled=no
912 if test "x$video_dumb_avail" = "xyes" ; then
913         if test "x${enable_video_dumb% *}" = "xyes" ; then
914                 video_dumb_enabled=yes
915         fi
916 fi
917
918 # video fbdev
919 video_fbdev_enabled=no
920 if test "x$video_fbdev_avail" = "xyes" ; then
921         if test "x${enable_video_fbdev% *}" = "xyes" ; then
922                 video_fbdev_enabled=yes
923         fi
924 fi
925
926 # tsm
927 tsm_enabled=no
928 if test "x$tsm_avail" = "xyes" ; then
929         if test "x${enable_tsm% *}" = "xyes" ; then
930                 tsm_enabled=yes
931         fi
932 fi
933
934 # eloop
935 eloop_enabled=no
936 if test "x$eloop_avail" = "xyes" ; then
937         if test "x${enable_eloop% *}" = "xyes" ; then
938                 eloop_enabled=yes
939         fi
940 fi
941
942 # eloop-dbus
943 eloop_dbus_enabled=no
944 if test "x$eloop_dbus_avail" = "xyes" ; then
945         if test "x${enable_eloop_dbus% *}" = "xyes" ; then
946                 eloop_dbus_enabled=yes
947         fi
948 fi
949
950 # optimizations
951 optimizations_enabled=no
952 if test "x$optimizations_avail" = "xyes" ; then
953         if test "x${enable_optimizations% *}" = "xyes" ; then
954                 optimizations_enabled=yes
955         fi
956 fi
957
958 # debug
959 debug_enabled=no
960 if test "x$debug_avail" = "xyes" ; then
961         if test "x${enable_debug% *}" = "xyes" ; then
962                 debug_enabled=yes
963         fi
964 fi
965
966 #
967 # Module Configuration
968 # We have now done all dependency checking and default-value validation and we
969 # now know which modules are enabled via the *_enabled variables.
970 # Everything below is related to the configuration of each module and setting
971 # the correct flags for the build process.
972 #
973
974 # debug
975 if test "x$debug_enabled" = "xyes" ; then
976         AC_DEFINE([BUILD_ENABLE_DEBUG], [1], [Enable debug mode])
977 else
978         AC_DEFINE([NDEBUG], [1], [No Debug])
979 fi
980
981 AM_CONDITIONAL([BUILD_ENABLE_DEBUG],
982                [test "x$debug_enabled" = "xyes"])
983
984 # optimizations
985 AM_CONDITIONAL([BUILD_ENABLE_OPTIMIZATIONS],
986                [test "x$optimizations_enabled" = "xyes"])
987
988 # eloop-dbus
989 AM_CONDITIONAL([BUILD_ENABLE_ELOOP_DBUS],
990                [test "x$eloop_dbus_enabled" = "xyes"])
991
992 # eloop
993 AM_CONDITIONAL([BUILD_ENABLE_ELOOP],
994                [test "x$eloop_enabled" = "xyes"])
995
996 # TSM
997 AM_CONDITIONAL([BUILD_ENABLE_TSM],
998                [test "x$tsm_enabled" = "xyes"])
999
1000 # video fbdev
1001 if test "x$video_fbdev_enabled" = "xyes" ; then
1002         AC_DEFINE([BUILD_ENABLE_VIDEO_FBDEV], [1],
1003                   [Build uterm fbdev video backend])
1004 fi
1005
1006 AM_CONDITIONAL([BUILD_ENABLE_VIDEO_FBDEV],
1007                [test "x$video_fbdev_enabled" = "xyes"])
1008
1009 # video dumb
1010 if test "x$video_dumb_enabled" = "xyes" ; then
1011         AC_DEFINE([BUILD_ENABLE_VIDEO_DUMB], [1],
1012                   [Build uterm dumb drm video backend])
1013 fi
1014
1015 AM_CONDITIONAL([BUILD_ENABLE_VIDEO_DUMB],
1016                [test "x$video_dumb_enabled" = "xyes"])
1017
1018 # video drm
1019 if test "x$video_drm_enabled" = "xyes" ; then
1020         AC_DEFINE([BUILD_ENABLE_VIDEO_DRM], [1],
1021                   [Build uterm drm video backend])
1022 fi
1023
1024 AM_CONDITIONAL([BUILD_ENABLE_VIDEO_DRM],
1025                [test "x$video_drm_enabled" = "xyes"])
1026
1027 # uterm
1028 AM_CONDITIONAL([BUILD_ENABLE_UTERM],
1029                [test "x$uterm_enabled" = "xyes"])
1030
1031 # multi-seat
1032 if test "x$multi_seat_enabled" = "xyes" ; then
1033         AC_DEFINE([BUILD_ENABLE_MULTI_SEAT], [1],
1034                   [Use systemd for multi-seat support])
1035 fi
1036
1037 AM_CONDITIONAL([BUILD_ENABLE_MULTI_SEAT],
1038                [test "x$multi_seat_enabled" = "xyes"])
1039
1040 # hotplug
1041 if test "x$hotplug_enabled" = "xyes" ; then
1042         AC_DEFINE([BUILD_ENABLE_HOTPLUG], [1],
1043                   [Use udev for hotplug support])
1044 fi
1045
1046 AM_CONDITIONAL([BUILD_ENABLE_HOTPLUG],
1047                [test "x$hotplug_enabled" = "xyes"])
1048
1049 # pciaccess
1050 if test "x$pciaccess_enabled" = "xyes" ; then
1051         AC_DEFINE([BUILD_ENABLE_PCIACCESS], [1],
1052                   [Use pciaccess for device detection])
1053 fi
1054
1055 AM_CONDITIONAL([BUILD_ENABLE_PCIACCESS],
1056                [test "x$pciaccess_enabled" = "xyes"])
1057
1058 # renderer bblit
1059 if test "x$renderer_bblit_enabled" = "xyes" ; then
1060         AC_DEFINE([BUILD_ENABLE_RENDERER_BBLIT], [1],
1061                   [Build bblit rendering backend])
1062 fi
1063
1064 AM_CONDITIONAL([BUILD_ENABLE_RENDERER_BBLIT],
1065                [test "x$renderer_bblit_enabled" = "xyes"])
1066
1067 # renderer bbulk
1068 if test "x$renderer_bbulk_enabled" = "xyes" ; then
1069         AC_DEFINE([BUILD_ENABLE_RENDERER_BBULK], [1],
1070                   [Build bbulk rendering backend])
1071 fi
1072
1073 AM_CONDITIONAL([BUILD_ENABLE_RENDERER_BBULK],
1074                [test "x$renderer_bbulk_enabled" = "xyes"])
1075
1076 # renderer gltex
1077 if test "x$renderer_gltex_enabled" = "xyes" ; then
1078         AC_DEFINE([BUILD_ENABLE_RENDERER_GLTEX], [1],
1079                   [Build gltex rendering backend])
1080 fi
1081
1082 AM_CONDITIONAL([BUILD_ENABLE_RENDERER_GLTEX],
1083                [test "x$renderer_gltex_enabled" = "xyes"])
1084
1085 # font 8x16
1086 if test "x$font_8x16_enabled" = "xyes" ; then
1087         AC_DEFINE([BUILD_ENABLE_FONT_8X16], [1],
1088                   [Build static 8x16 font backend])
1089 fi
1090
1091 AM_CONDITIONAL([BUILD_ENABLE_FONT_8X16],
1092                [test "x$font_8x16_enabled" = "xyes"])
1093
1094 # font unifont
1095 if test "x$font_unifont_enabled" = "xyes" ; then
1096         AC_DEFINE([BUILD_ENABLE_FONT_UNIFONT], [1],
1097                   [Build static unifont backend])
1098 fi
1099
1100 AM_CONDITIONAL([BUILD_ENABLE_FONT_UNIFONT],
1101                [test "x$font_unifont_enabled" = "xyes"])
1102
1103 # font freetype2
1104 if test "x$font_freetype2_enabled" = "xyes" ; then
1105         AC_DEFINE([BUILD_ENABLE_FONT_FREETYPE2], [1],
1106                   [Build freetype2 font backend])
1107 fi
1108
1109 AM_CONDITIONAL([BUILD_ENABLE_FONT_FREETYPE2],
1110                [test "x$font_freetype2_enabled" = "xyes"])
1111
1112 # font pango
1113 if test "x$font_pango_enabled" = "xyes" ; then
1114         AC_DEFINE([BUILD_ENABLE_FONT_PANGO], [1],
1115                   [Build pango font backend])
1116 fi
1117
1118 AM_CONDITIONAL([BUILD_ENABLE_FONT_PANGO],
1119                [test "x$font_pango_enabled" = "xyes"])
1120
1121 # session dummy
1122 if test "x$session_dummy_enabled" = "xyes" ; then
1123         AC_DEFINE([BUILD_ENABLE_SESSION_DUMMY], [1],
1124                   [Build dummy session])
1125 fi
1126
1127 AM_CONDITIONAL([BUILD_ENABLE_SESSION_DUMMY],
1128                [test "x$session_dummy_enabled" = "xyes"])
1129
1130 # session terminal
1131 if test "x$session_terminal_enabled" = "xyes" ; then
1132         AC_DEFINE([BUILD_ENABLE_SESSION_TERMINAL], [1],
1133                   [Build terminal session])
1134 fi
1135
1136 AM_CONDITIONAL([BUILD_ENABLE_SESSION_TERMINAL],
1137                [test "x$session_terminal_enabled" = "xyes"])
1138
1139 # session cdev
1140 if test "x$session_cdev_enabled" = "xyes" ; then
1141         AC_DEFINE([BUILD_ENABLE_SESSION_CDEV], [1],
1142                   [Build cdev session])
1143 fi
1144
1145 AM_CONDITIONAL([BUILD_ENABLE_SESSION_CDEV],
1146                [test "x$session_cdev_enabled" = "xyes"])
1147
1148 # kmscon
1149 AM_CONDITIONAL([BUILD_ENABLE_KMSCON],
1150                [test "x$kmscon_enabled" = "xyes"])
1151
1152 # wlterm
1153 AM_CONDITIONAL([BUILD_ENABLE_WLTERM],
1154                [test "x$wlterm_enabled" = "xyes"])
1155
1156 #
1157 # Miscellaneous Checks
1158 # All checks below are independent of module checking or depend on the results
1159 # of it. They do not have any dependencies themself so they are not part of the
1160 # module infrastructure.
1161 #
1162
1163 # check for _Static_assert
1164 AC_MSG_CHECKING([whether _Static_assert() is supported])
1165 AC_LANG([C])
1166 have_static_assert=yes
1167 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[_Static_assert(1, "What?");]])],
1168                   [AC_DEFINE([BUILD_HAVE_STATIC_ASSERT],
1169                              [1],
1170                              [Define to 1 if _Static_assert() is supported])],
1171                   [have_static_assert=no])
1172 AC_MSG_RESULT([$have_static_assert])
1173
1174 # check for gbm_bo_get_pitch() function, otherwise gbm_bo_get_stride() is used
1175 if test x$have_gbm = xyes ; then
1176         save_CFLAGS="$CFLAGS"
1177         save_LIBS="$LIBS"
1178         save_LDFLAGS="$LDFLAGS"
1179         CFLAGS="$DRM_CFLAGS $GBM_CFLAGS"
1180         LIBS="$DRM_LIBS $GBM_LIBS"
1181         LDFLAGS=""
1182         AC_CHECK_LIB([gbm],
1183                      [gbm_bo_get_pitch],
1184                      [AC_DEFINE([BUILD_HAVE_GBM_BO_GET_PITCH],
1185                                 [1],
1186                                 [Define to 1 if your libgbm provides gbm_bo_get_pitch])])
1187         CFLAGS="$save_CFLAGS"
1188         LIBS="$save_LIBS"
1189         LDFLAGS="$save_LDFLAGS"
1190 fi
1191
1192 # check for xsltproc
1193 AC_PATH_PROG(XSLTPROC, xsltproc)
1194 AM_CONDITIONAL([BUILD_HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"])
1195
1196 # check for offline man-pages stylesheet
1197 AC_MSG_CHECKING([for docbook manpages stylesheet])
1198 BUILD_MANPAGES_STYLESHEET="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
1199 AC_PATH_PROGS_FEATURE_CHECK([XSLTPROC_TMP], [xsltproc],
1200                             AS_IF([`"$ac_path_XSLTPROC_TMP" --nonet "$BUILD_MANPAGES_STYLESHEET" > /dev/null 2>&1`],
1201                                   [BUILD_HAVE_MANPAGES_STYLESHEET=yes]))
1202 if test "x$BUILD_HAVE_MANPAGES_STYLESHEET" = "xyes"; then
1203         AM_CONDITIONAL([BUILD_HAVE_MANPAGES_STYLESHEET], true)
1204         AC_SUBST(BUILD_MANPAGES_STYLESHEET)
1205         AC_MSG_RESULT([yes])
1206 else
1207         AM_CONDITIONAL([BUILD_HAVE_MANPAGES_STYLESHEET], false)
1208         AC_MSG_RESULT([no])
1209 fi
1210
1211 #
1212 # Makefile vars
1213 # After everything is configured, we correctly substitute the values for the
1214 # makefiles.
1215 #
1216
1217 AC_CONFIG_FILES([Makefile
1218                  docs/pc/libeloop.pc
1219                  docs/pc/libtsm.pc
1220                  docs/pc/libuterm.pc])
1221 AC_OUTPUT
1222
1223 #
1224 # Configuration output
1225 # Show configuration to the user so they can check whether everything was
1226 # configured as expected.
1227 #
1228
1229 AC_MSG_NOTICE([Build configuration:
1230
1231                prefix: $prefix
1232           exec-prefix: $exec_prefix
1233                libdir: $libdir
1234            includedir: $includedir
1235
1236   Applications and Libraries:
1237                kmscon: $kmscon_enabled ($kmscon_avail: $kmscon_missing)
1238                wlterm: $wlterm_enabled ($wlterm_avail: $wlterm_missing)
1239                 uterm: $uterm_enabled ($uterm_avail: $uterm_missing)
1240                   tsm: $tsm_enabled ($tsm_avail: $tsm_missing)
1241                 eloop: $eloop_enabled ($eloop_avail: $eloop_missing)
1242
1243   Miscellaneous Options:
1244                 debug: $debug_enabled ($debug_avail: $debug_missing)
1245         optimizations: $optimizations_enabled ($optimizations_avail: $optimizations_missing)
1246            multi-seat: $multi_seat_enabled ($multi_seat_avail: $multi_seat_missing)
1247               hotplug: $hotplug_enabled ($hotplug_avail: $hotplug_missing)
1248             pciaccess: $pciaccess_enabled ($pciaccess_avail: $pciaccess_missing)
1249            eloop-dbus: $eloop_dbus_enabled ($eloop_dbus_avail: $eloop_dbus_missing)
1250
1251   Video Backends:
1252                 fbdev: $video_fbdev_enabled ($video_fbdev_avail: $video_fbdev_missing)
1253              dumb drm: $video_dumb_enabled ($video_dumb_avail: $video_dumb_missing)
1254                   drm: $video_drm_enabled ($video_drm_avail: $video_drm_missing)
1255
1256   Font Backends:
1257                  8x16: $font_8x16_enabled ($font_8x16_avail: $font_8x16_missing)
1258               unifont: $font_unifont_enabled ($font_unifont_avail: $font_unifont_missing)
1259             freetype2: $font_freetype2_enabled ($font_freetype2_avail: $font_freetype2_missing)
1260                 pango: $font_pango_enabled ($font_pango_avail: $font_pango_missing)
1261
1262   Renderers:
1263                 bblit: $renderer_bblit_enabled ($renderer_bblit_avail: $renderer_bblit_missing)
1264                 bbulk: $renderer_bbulk_enabled ($renderer_bbulk_avail: $renderer_bbulk_missing)
1265                 gltex: $renderer_gltex_enabled ($renderer_gltex_avail: $renderer_gltex_missing)
1266
1267   Session Types:
1268                 dummy: $session_dummy_enabled ($session_dummy_avail: $session_dummy_missing)
1269              terminal: $session_terminal_enabled ($session_terminal_avail: $session_terminal_missing)
1270                  cdev: $session_cdev_enabled ($session_cdev_avail: $session_cdev_missing)
1271
1272         Run "${MAKE-make}" to start compilation process])