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