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