4cfc3d2d773aeba5058541913d4b9ea8f0003190
[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 if test ! "x$enable_debug" = "xno" ; then
370         debug_avail=yes
371 fi
372
373 # optimizations
374 optimizations_avail=no
375 if test ! "x$enable_optimizations" = "xno" ; then
376         optimizations_avail=yes
377 fi
378
379 # eloop-dbus
380 eloop_dbus_avail=no
381 if test ! "x$enable_eloop_dbus" = "xno" ; then
382         if test "x$have_dbus" = "xyes" ; then
383                 eloop_dbus_avail=yes
384         elif test "x$enable_eloop_dbus" = "xyes" ; then
385                 AC_ERROR([DBus libraries not found for eloop-dbus])
386         fi
387 fi
388
389 # eloop
390 eloop_avail=no
391 if test ! "x$enable_eloop" = "xno" ; then
392         eloop_avail=yes
393 fi
394
395 # TSM
396 tsm_avail=no
397 if test ! "x$enable_tsm" = "xno" ; then
398         if test "x$have_xkbcommon" = "xyes" ; then
399                 tsm_avail=yes
400         elif test "x$enable_tsm" = "xyes" ; then
401                 AC_ERROR([xkbcommon libraries not found for TSM])
402         fi
403 fi
404
405 # video fbdev
406 video_fbdev_avail=no
407 if test ! "x$enable_video_fbdev" = "xno" ; then
408         # TODO: check for kernel headers
409         video_fbdev_avail=yes
410 fi
411
412 # video dumb
413 video_dumb_avail=no
414 if test ! "x$enable_video_dumb" = "xno" ; then
415         if test "x$have_drm" = "xyes" ; then
416                 video_dumb_avail=yes
417         elif test "x$enable_video_dumb" = "xyes" ; then
418                 AC_ERROR([DRM libraries not found for dumb video backend])
419         fi
420 fi
421
422 # video drm
423 video_drm_avail=no
424 if test ! "x$enable_video_drm" = "xno" ; then
425         if test "x$have_drm" = "xno" ; then
426                 video_drm_avail=no
427         elif test "x$have_gbm" = "xno" ; then
428                 video_drm_avail=no
429         elif test "x$have_egl" = "xno" ; then
430                 video_drm_avail=no
431         elif test "x$have_gles2" = "xno" ; then
432                 video_drm_avail=no
433         else
434                 video_drm_avail=yes
435         fi
436
437         if test "x$video_drm_avail" = "xno" ; then
438                 if test "x$enable_video_drm" = "xyes" ; then
439                         AC_ERROR([DRM, gbm or EGL libraries not found for DRM video backend])
440                 fi
441         fi
442 fi
443
444 # uterm
445 uterm_avail=no
446 if test ! "x$enable_uterm" = "xno" ; then
447         uterm_avail=yes
448 fi
449
450 # multi-seat
451 multi_seat_avail=no
452 if test ! "x$enable_multi_seat" = "xno" ; then
453         if test "x$have_systemd" = "xyes" ; then
454                 multi_seat_avail=yes
455         elif test "x$enable_multi_seat" = "xyes" ; then
456                 AC_ERROR([systemd libraries not found for multi-seat support])
457         fi
458 fi
459
460 # hotplug
461 hotplug_avail=no
462 if test ! "x$enable_hotplug" = "xno" ; then
463         if test "x$have_udev" = "xyes" ; then
464                 hotplug_avail=yes
465         elif test "x$enable_hotplug" = "xyes" ; then
466                 AC_ERROR([udev libraries not found for hotplug support])
467         fi
468 fi
469
470 # pciaccess
471 pciaccess_avail=no
472 if test ! "x$enable_pciaccess" = "xno" ; then
473         if test "x$have_pciaccess" = "xyes" ; then
474                 pciaccess_avail=yes
475         elif test "x$enable_pciaccess" = "xyes" ; then
476                 AC_ERROR([pciaccess libraries not found for pciaccess device detection])
477         fi
478 fi
479
480 # renderer bblit
481 renderer_bblit_avail=no
482 if test ! "x$enable_renderer_bblit" = "xno" ; then
483         renderer_bblit_avail=yes
484 fi
485
486 # renderer bbulk
487 renderer_bbulk_avail=no
488 if test ! "x$enable_renderer_bbulk" = "xno" ; then
489         renderer_bbulk_avail=yes
490 fi
491
492 # renderer gltex
493 renderer_gltex_avail=no
494 if test ! "x$enable_renderer_gltex" = "xno" ; then
495         if test "x$have_gles2" = "xyes" ; then
496                 renderer_gltex_avail=yes
497         elif test "x$enable_renderer_gltex" = "xyes" ; then
498                 AC_ERROR([OpenGLESv2 libraries not found for gltex renderer])
499         fi
500 fi
501
502 # font 8x16
503 font_8x16_avail=no
504 if test ! "x$enable_font_8x16" = "xno" ; then
505         font_8x16_avail=yes
506 fi
507
508 # font unifont
509 font_unifont_avail=no
510 if test ! "x$enable_font_unifont" = "xno" ; then
511         font_unifont_avail=yes
512 fi
513
514 # font freetype2
515 font_freetype2_avail=no
516 if test ! "x$enable_font_freetype2" = "xno" ; then
517         if test "x$have_freetype2" ; then
518                 font_freetype2_avail=yes
519         elif test "x$enable_font_freetype2" = "xyes" ; then
520                 AC_ERROR([freetype2 or fontconfig libs not found for freetype2 font backend])
521         fi
522 fi
523
524 # font pango
525 font_pango_avail=no
526 if test ! "x$enable_font_pango" = "xno" ; then
527         if test "x$have_pango" ; then
528                 font_pango_avail=yes
529         elif test "x$enable_font_pango" = "xyes" ; then
530                 AC_ERROR([pango libraries not found for pango font backend])
531         fi
532 fi
533
534 # session dummy
535 session_dummy_avail=no
536 if test ! "x$enable_session_dummy" = "xno" ; then
537         session_dummy_avail=yes
538 fi
539
540 # session terminal
541 session_terminal_avail=no
542 if test ! "x$enable_session_terminal" = "xno" ; then
543         if test "x$tsm_avail" = "xyes" ; then
544                 session_terminal_avail=yes
545         elif test "x$enable_session_terminal" = "xyes" ; then
546                 AC_ERROR([TSM cannot be built for kmscon terminal session])
547         fi
548 fi
549
550 # session cdev
551 session_cdev_avail=no
552 if test ! "x$enable_session_cdev" = "xno" ; then
553         if test "x$have_fuse" = "xno" ; then
554                 session_cdev_avail=no
555         elif test "x$tsm_avail" = "xno" ; then
556                 session_cdev_avail=no
557         else
558                 session_cdev_avail=yes
559         fi
560
561         if test "x$session_cdev_avail" = "xno" ; then
562                 if test "x$enable_session_cdev" = "xyes" ; then
563                         AC_ERROR([TSM or FUSE libraries not built/found for kmscon cdev session])
564                 fi
565         fi
566 fi
567
568 # kmscon
569 kmscon_avail=no
570 if test ! "x$enable_kmscon" = "xno" ; then
571         if test "x$eloop_avail" = "xno" ; then
572                 kmscon_avail=no
573         elif test "x$tsm_avail" = "xno" ; then
574                 kmscon_avail=no
575         elif test "x$uterm_avail" = "xno" ; then
576                 kmscon_avail=no
577         else
578                 kmscon_avail=yes
579         fi
580
581         if test "x$enable_kmscon" = "xyes" ; then
582                 if test "x$kmscon_avail" = "xno" ; then
583                         AC_ERROR([eloop, TSM or uterm cannot be built for kmscon])
584                 fi
585         fi
586 fi
587
588 # wlterm
589 wlterm_avail=no
590 if test ! "x$enable_wlterm" = "xno" ; then
591         if test "x$tsm_avail" = "xno" ; then
592                 wlterm_avail=no
593         elif test "x$eloop_avail" = "xno" ; then
594                 wlterm_avail=no
595         elif test ! "x$have_wayland" = "xyes" ; then
596                 wlterm_avail=no
597         else
598                 wlterm_avail=yes
599         fi
600
601         if test "x$enable_wlterm" = "xyes" ; then
602                 if test "x$wlterm_avail" = "xno" ; then
603                         AC_ERROR([wayland, eloop or TSM cannot be built for wlterm])
604                 fi
605         fi
606 fi
607
608 #
609 # Enable all required modules
610 # We now know which modules can be built by checking the *_avail variables set
611 # above. We now only have to disable all modules that are disabled by default
612 # and the user didn't force-enable them and no other module that is enabled
613 # needs them. This is done top-down of course.
614 #
615
616 # wlterm
617 wlterm_enabled=no
618 if test "x$wlterm_avail" = "xyes" ; then
619         if test "x${enable_wlterm% *}" = "xyes" ; then
620                 wlterm_enabled=yes
621                 enable_eloop=yes
622                 enable_tsm=yes
623         fi
624 fi
625
626 # kmscon
627 kmscon_enabled=no
628 if test "x$kmscon_avail" = "xyes" ; then
629         if test "x${enable_kmscon% *}" = "xyes" ; then
630                 kmscon_enabled=yes
631                 enable_eloop=yes
632                 enable_uterm=yes
633         fi
634 fi
635
636 # session cdev
637 session_cdev_enabled=no
638 if test "x$session_cdev_avail" = "xyes" ; then
639         if test "x${enable_session_cdev% *}" = "xyes" ; then
640                 session_cdev_enabled=yes
641         fi
642 fi
643
644 # session terminal
645 session_terminal_enabled=no
646 if test "x$session_terminal_avail" = "xyes" ; then
647         if test "x${enable_session_terminal% *}" = "xyes" ; then
648                 session_terminal_enabled=yes
649                 enable_tsm=yes
650         fi
651 fi
652
653 # session dummy
654 session_dummy_enabled=no
655 if test "x$session_dummy_avail" = "xyes" ; then
656         if test "x${enable_session_dummy% *}" = "xyes" ; then
657                 session_dummy_enabled=yes
658         fi
659 fi
660
661 # font pango
662 font_pango_enabled=no
663 if test "x$font_pango_avail" = "xyes" ; then
664         if test "x${enable_font_pango% *}" = "xyes" ; then
665                 font_pango_enabled=yes
666         fi
667 fi
668
669 # font freetype2
670 font_freetype2_enabled=no
671 if test "x$font_freetype2_avail" = "xyes" ; then
672         if test "x${enable_font_freetype2% *}" = "xyes" ; then
673                 font_freetype2_enabled=yes
674         fi
675 fi
676
677 # font unifont
678 font_unifont_enabled=no
679 if test "x$font_unifont_avail" = "xyes" ; then
680         if test "x${enable_font_unifont% *}" = "xyes" ; then
681                 font_unifont_enabled=yes
682         fi
683 fi
684
685 # font 8x16
686 font_8x16_enabled=no
687 if test "x$font_8x16_avail" = "xyes" ; then
688         if test "x${enable_font_8x16% *}" = "xyes" ; then
689                 font_8x16_enabled=yes
690         fi
691 fi
692
693 # renderer gltex
694 renderer_gltex_enabled=no
695 if test "x$renderer_gltex_avail" = "xyes" ; then
696         if test "x${enable_renderer_gltex% *}" = "xyes" ; then
697                 renderer_gltex_enabled=yes
698         fi
699 fi
700
701 # renderer bbulk
702 renderer_bbulk_enabled=no
703 if test "x$renderer_bbulk_avail" = "xyes" ; then
704         if test "x${enable_renderer_bbulk% *}" = "xyes" ; then
705                 renderer_bbulk_enabled=yes
706         fi
707 fi
708
709 # renderer bblit
710 renderer_bblit_enabled=no
711 if test "x$renderer_bblit_avail" = "xyes" ; then
712         if test "x${enable_renderer_bblit% *}" = "xyes" ; then
713                 renderer_bblit_enabled=yes
714         fi
715 fi
716
717 # pciaccess
718 pciaccess_enabled=no
719 if test "x$pciaccess_avail" = "xyes" ; then
720         if test "x${enable_pciaccess% *}" = "xyes" ; then
721                 pciaccess_enabled=yes
722         fi
723 fi
724
725 # hotplug
726 hotplug_enabled=no
727 if test "x$hotplug_avail" = "xyes" ; then
728         if test "x${enable_hotplug% *}" = "xyes" ; then
729                 hotplug_enabled=yes
730         fi
731 fi
732
733 # multi-seat
734 multi_seat_enabled=no
735 if test "x$multi_seat_avail" = "xyes" ; then
736         if test "x${enable_multi_seat% *}" = "xyes" ; then
737                 multi_seat_enabled=yes
738         fi
739 fi
740
741 # uterm
742 uterm_enabled=no
743 if test "x$uterm_avail" = "xyes" ; then
744         if test "x${enable_uterm% *}" = "xyes" ; then
745                 uterm_enabled=yes
746         fi
747 fi
748
749 # video drm
750 video_drm_enabled=no
751 if test "x$video_drm_avail" = "xyes" ; then
752         if test "x${enable_video_drm% *}" = "xyes" ; then
753                 video_drm_enabled=yes
754         fi
755 fi
756
757 # video dumb
758 video_dumb_enabled=no
759 if test "x$video_dumb_avail" = "xyes" ; then
760         if test "x${enable_video_dumb% *}" = "xyes" ; then
761                 video_dumb_enabled=yes
762         fi
763 fi
764
765 # video fbdev
766 video_fbdev_enabled=no
767 if test "x$video_fbdev_avail" = "xyes" ; then
768         if test "x${enable_video_fbdev% *}" = "xyes" ; then
769                 video_fbdev_enabled=yes
770         fi
771 fi
772
773 # tsm
774 tsm_enabled=no
775 if test "x$tsm_avail" = "xyes" ; then
776         if test "x${enable_tsm% *}" = "xyes" ; then
777                 tsm_enabled=yes
778         fi
779 fi
780
781 # eloop
782 eloop_enabled=no
783 if test "x$eloop_avail" = "xyes" ; then
784         if test "x${enable_eloop% *}" = "xyes" ; then
785                 eloop_enabled=yes
786         fi
787 fi
788
789 # eloop-dbus
790 eloop_dbus_enabled=no
791 if test "x$eloop_dbus_avail" = "xyes" ; then
792         if test "x${enable_eloop_dbus% *}" = "xyes" ; then
793                 eloop_dbus_enabled=yes
794         fi
795 fi
796
797 # optimizations
798 optimizations_enabled=no
799 if test "x$optimizations_avail" = "xyes" ; then
800         if test "x${enable_optimizations% *}" = "xyes" ; then
801                 optimizations_enabled=yes
802         fi
803 fi
804
805 # debug
806 debug_enabled=no
807 if test "x$debug_avail" = "xyes" ; then
808         if test "x${enable_debug% *}" = "xyes" ; then
809                 debug_enabled=yes
810         fi
811 fi
812
813 #
814 # Module Configuration
815 # We have now done all dependency checking and default-value validation and we
816 # now know which modules are enabled via the *_enabled variables.
817 # Everything below is related to the configuration of each module and setting
818 # the correct flags for the build process.
819 #
820
821 # debug
822 if test "x$debug_enabled" = "xyes" ; then
823         AC_DEFINE([BUILD_ENABLE_DEBUG], [1], [Enable debug mode])
824 else
825         AC_DEFINE([NDEBUG], [1], [No Debug])
826 fi
827
828 AM_CONDITIONAL([BUILD_ENABLE_DEBUG],
829                [test "x$debug_enabled" = "xyes"])
830
831 # optimizations
832 AM_CONDITIONAL([BUILD_ENABLE_OPTIMIZATIONS],
833                [test "x$optimizations_enabled" = "xyes"])
834
835 # eloop-dbus
836 AM_CONDITIONAL([BUILD_ENABLE_ELOOP_DBUS],
837                [test "x$eloop_dbus_enabled" = "xyes"])
838
839 # eloop
840 AM_CONDITIONAL([BUILD_ENABLE_ELOOP],
841                [test "x$eloop_enabled" = "xyes"])
842
843 # TSM
844 AM_CONDITIONAL([BUILD_ENABLE_TSM],
845                [test "x$tsm_enabled" = "xyes"])
846
847 # video fbdev
848 if test "x$video_fbdev_enabled" = "xyes" ; then
849         AC_DEFINE([BUILD_ENABLE_VIDEO_FBDEV], [1],
850                   [Build uterm fbdev video backend])
851 fi
852
853 AM_CONDITIONAL([BUILD_ENABLE_VIDEO_FBDEV],
854                [test "x$video_fbdev_enabled" = "xyes"])
855
856 # video dumb
857 if test "x$video_dumb_enabled" = "xyes" ; then
858         AC_DEFINE([BUILD_ENABLE_VIDEO_DUMB], [1],
859                   [Build uterm dumb drm video backend])
860 fi
861
862 AM_CONDITIONAL([BUILD_ENABLE_VIDEO_DUMB],
863                [test "x$video_dumb_enabled" = "xyes"])
864
865 # video drm
866 if test "x$video_drm_enabled" = "xyes" ; then
867         AC_DEFINE([BUILD_ENABLE_VIDEO_DRM], [1],
868                   [Build uterm drm video backend])
869 fi
870
871 AM_CONDITIONAL([BUILD_ENABLE_VIDEO_DRM],
872                [test "x$video_drm_enabled" = "xyes"])
873
874 # uterm
875 AM_CONDITIONAL([BUILD_ENABLE_UTERM],
876                [test "x$uterm_enabled" = "xyes"])
877
878 # multi-seat
879 if test "x$multi_seat_enabled" = "xyes" ; then
880         AC_DEFINE([BUILD_ENABLE_MULTI_SEAT], [1],
881                   [Use systemd for multi-seat support])
882 fi
883
884 AM_CONDITIONAL([BUILD_ENABLE_MULTI_SEAT],
885                [test "x$multi_seat_enabled" = "xyes"])
886
887 # hotplug
888 if test "x$hotplug_enabled" = "xyes" ; then
889         AC_DEFINE([BUILD_ENABLE_HOTPLUG], [1],
890                   [Use udev for hotplug support])
891 fi
892
893 AM_CONDITIONAL([BUILD_ENABLE_HOTPLUG],
894                [test "x$hotplug_enabled" = "xyes"])
895
896 # pciaccess
897 if test "x$pciaccess_enabled" = "xyes" ; then
898         AC_DEFINE([BUILD_ENABLE_PCIACCESS], [1],
899                   [Use pciaccess for device detection])
900 fi
901
902 AM_CONDITIONAL([BUILD_ENABLE_PCIACCESS],
903                [test "x$pciaccess_enabled" = "xyes"])
904
905 # renderer bblit
906 if test "x$renderer_bblit_enabled" = "xyes" ; then
907         AC_DEFINE([BUILD_ENABLE_RENDERER_BBLIT], [1],
908                   [Build bblit rendering backend])
909 fi
910
911 AM_CONDITIONAL([BUILD_ENABLE_RENDERER_BBLIT],
912                [test "x$renderer_bblit_enabled" = "xyes"])
913
914 # renderer bbulk
915 if test "x$renderer_bbulk_enabled" = "xyes" ; then
916         AC_DEFINE([BUILD_ENABLE_RENDERER_BBULK], [1],
917                   [Build bbulk rendering backend])
918 fi
919
920 AM_CONDITIONAL([BUILD_ENABLE_RENDERER_BBULK],
921                [test "x$renderer_bbulk_enabled" = "xyes"])
922
923 # renderer gltex
924 if test "x$renderer_gltex_enabled" = "xyes" ; then
925         AC_DEFINE([BUILD_ENABLE_RENDERER_GLTEX], [1],
926                   [Build gltex rendering backend])
927 fi
928
929 AM_CONDITIONAL([BUILD_ENABLE_RENDERER_GLTEX],
930                [test "x$renderer_gltex_enabled" = "xyes"])
931
932 # font 8x16
933 if test "x$font_8x16_enabled" = "xyes" ; then
934         AC_DEFINE([BUILD_ENABLE_FONT_8X16], [1],
935                   [Build static 8x16 font backend])
936 fi
937
938 AM_CONDITIONAL([BUILD_ENABLE_FONT_8X16],
939                [test "x$font_8x16_enabled" = "xyes"])
940
941 # font unifont
942 if test "x$font_unifont_enabled" = "xyes" ; then
943         AC_DEFINE([BUILD_ENABLE_FONT_UNIFONT], [1],
944                   [Build static unifont backend])
945 fi
946
947 AM_CONDITIONAL([BUILD_ENABLE_FONT_UNIFONT],
948                [test "x$font_unifont_enabled" = "xyes"])
949
950 # font freetype2
951 if test "x$font_freetype2_enabled" = "xyes" ; then
952         AC_DEFINE([BUILD_ENABLE_FONT_FREETYPE2], [1],
953                   [Build freetype2 font backend])
954 fi
955
956 AM_CONDITIONAL([BUILD_ENABLE_FONT_FREETYPE2],
957                [test "x$font_freetype2_enabled" = "xyes"])
958
959 # font pango
960 if test "x$font_pango_enabled" = "xyes" ; then
961         AC_DEFINE([BUILD_ENABLE_FONT_PANGO], [1],
962                   [Build pango font backend])
963 fi
964
965 AM_CONDITIONAL([BUILD_ENABLE_FONT_PANGO],
966                [test "x$font_pango_enabled" = "xyes"])
967
968 # session dummy
969 if test "x$session_dummy_enabled" = "xyes" ; then
970         AC_DEFINE([BUILD_ENABLE_SESSION_DUMMY], [1],
971                   [Build dummy session])
972 fi
973
974 AM_CONDITIONAL([BUILD_ENABLE_SESSION_DUMMY],
975                [test "x$session_dummy_enabled" = "xyes"])
976
977 # session terminal
978 if test "x$session_terminal_enabled" = "xyes" ; then
979         AC_DEFINE([BUILD_ENABLE_SESSION_TERMINAL], [1],
980                   [Build terminal session])
981 fi
982
983 AM_CONDITIONAL([BUILD_ENABLE_SESSION_TERMINAL],
984                [test "x$session_terminal_enabled" = "xyes"])
985
986 # session cdev
987 if test "x$session_cdev_enabled" = "xyes" ; then
988         AC_DEFINE([BUILD_ENABLE_SESSION_CDEV], [1],
989                   [Build cdev session])
990 fi
991
992 AM_CONDITIONAL([BUILD_ENABLE_SESSION_CDEV],
993                [test "x$session_cdev_enabled" = "xyes"])
994
995 # kmscon
996 AM_CONDITIONAL([BUILD_ENABLE_KMSCON],
997                [test "x$kmscon_enabled" = "xyes"])
998
999 # wlterm
1000 AM_CONDITIONAL([BUILD_ENABLE_WLTERM],
1001                [test "x$wlterm_enabled" = "xyes"])
1002
1003 #
1004 # Miscellaneous Checks
1005 # All checks below are independent of module checking or depend on the results
1006 # of it. They do not have any dependencies themself so they are not part of the
1007 # module infrastructure.
1008 #
1009
1010 # check for _Static_assert
1011 AC_MSG_CHECKING([whether _Static_assert() is supported])
1012 AC_LANG([C])
1013 have_static_assert=yes
1014 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[_Static_assert(1, "What?");]])],
1015                   [AC_DEFINE([BUILD_HAVE_STATIC_ASSERT],
1016                              [1],
1017                              [Define to 1 if _Static_assert() is supported])],
1018                   [have_static_assert=no])
1019 AC_MSG_RESULT([$have_static_assert])
1020
1021 # check for gbm_bo_get_pitch() function, otherwise gbm_bo_get_stride() is used
1022 if test x$have_gbm = xyes ; then
1023         save_CFLAGS="$CFLAGS"
1024         save_LIBS="$LIBS"
1025         save_LDFLAGS="$LDFLAGS"
1026         CFLAGS="$DRM_CFLAGS $GBM_CFLAGS"
1027         LIBS="$DRM_LIBS $GBM_LIBS"
1028         LDFLAGS=""
1029         AC_CHECK_LIB([gbm],
1030                      [gbm_bo_get_pitch],
1031                      [AC_DEFINE([BUILD_HAVE_GBM_BO_GET_PITCH],
1032                                 [1],
1033                                 [Define to 1 if your libgbm provides gbm_bo_get_pitch])])
1034         CFLAGS="$save_CFLAGS"
1035         LIBS="$save_LIBS"
1036         LDFLAGS="$save_LDFLAGS"
1037 fi
1038
1039 # check for xsltproc
1040 AC_PATH_PROG(XSLTPROC, xsltproc)
1041 AM_CONDITIONAL([BUILD_HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"])
1042
1043 # check for offline man-pages stylesheet
1044 AC_MSG_CHECKING([for docbook manpages stylesheet])
1045 BUILD_MANPAGES_STYLESHEET="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
1046 AC_PATH_PROGS_FEATURE_CHECK([XSLTPROC_TMP], [xsltproc],
1047                             AS_IF([`"$ac_path_XSLTPROC_TMP" --nonet "$BUILD_MANPAGES_STYLESHEET" > /dev/null 2>&1`],
1048                                   [BUILD_HAVE_MANPAGES_STYLESHEET=yes]))
1049 if test "x$BUILD_HAVE_MANPAGES_STYLESHEET" = "xyes"; then
1050         AM_CONDITIONAL([BUILD_HAVE_MANPAGES_STYLESHEET], true)
1051         AC_SUBST(BUILD_MANPAGES_STYLESHEET)
1052         AC_MSG_RESULT([yes])
1053 else
1054         AM_CONDITIONAL([BUILD_HAVE_MANPAGES_STYLESHEET], false)
1055         AC_MSG_RESULT([no])
1056 fi
1057
1058 #
1059 # Makefile vars
1060 # After everything is configured, we correctly substitute the values for the
1061 # makefiles.
1062 #
1063
1064 AC_CONFIG_FILES([Makefile
1065                  docs/pc/libeloop.pc
1066                  docs/pc/libtsm.pc
1067                  docs/pc/libuterm.pc])
1068 AC_OUTPUT
1069
1070 #
1071 # Configuration output
1072 # Show configuration to the user so they can check whether everything was
1073 # configured as expected.
1074 #
1075
1076 AC_MSG_NOTICE([Build configuration:
1077
1078   Applications and Libraries:
1079                kmscon: $kmscon_enabled ($kmscon_avail)
1080                wlterm: $wlterm_enabled ($wlterm_avail)
1081                 uterm: $uterm_enabled ($uterm_avail)
1082                   tsm: $tsm_enabled ($tsm_avail)
1083                 eloop: $eloop_enabled ($eloop_avail)
1084
1085   Miscellaneous Options:
1086                 debug: $debug_enabled ($debug_avail)
1087         optimizations: $optimizations_enabled ($optimizations_avail)
1088            multi-seat: $multi_seat_enabled ($multi_seat_avail)
1089               hotplug: $hotplug_enabled ($hotplug_avail)
1090             pciaccess: $pciaccess_enabled ($pciaccess_avail)
1091            eloop-dbus: $eloop_dbus_enabled ($eloop_dbus_avail)
1092
1093   Video Backends:
1094                 fbdev: $video_fbdev_enabled ($video_fbdev_avail)
1095              dumb drm: $video_dumb_enabled ($video_dumb_avail)
1096                   drm: $video_drm_enabled ($video_drm_avail)
1097
1098   Font Backends:
1099                  8x16: $font_8x16_enabled ($font_8x16_avail)
1100               unifont: $font_unifont_enabled ($font_unifont_avail)
1101             freetype2: $font_freetype2_enabled ($font_freetype2_avail)
1102                 pango: $font_pango_enabled ($font_pango_avail)
1103
1104   Renderers:
1105                 bblit: $renderer_bblit_enabled ($renderer_bblit_avail)
1106                 bbulk: $renderer_bbulk_enabled ($renderer_bbulk_avail)
1107                 gltex: $renderer_gltex_enabled ($renderer_gltex_avail)
1108
1109   Session Types:
1110                 dummy: $session_dummy_enabled ($session_dummy_avail)
1111              terminal: $session_terminal_enabled ($session_terminal_avail)
1112                  cdev: $session_cdev_enabled ($session_cdev_avail)
1113
1114         Run "make" to start compilation process])