3eb0803b8ea8e354e21e425445d405ab057f449b
[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], [6])
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 >= 172],
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_unifont="no"
299 enable_font_freetype2="no"
300 enable_font_pango="no"
301 if test "x$with_fonts" = "x" ; then
302         enable_font_unifont="no (default)"
303         enable_font_freetype2="yes (default)"
304         enable_font_pango="yes (default)"
305         with_fonts="freetype2,pango (default)"
306 else
307         SAVEIFS="$IFS"
308         IFS=","
309         for i in $with_fonts ; do
310                 if test "x$i" = "xunifont" ; then
311                         enable_font_unifont="yes"
312                 elif test "x$i" = "xfreetype2" ; then
313                         enable_font_freetype2="yes"
314                 elif test "x$i" = "xpango" ; then
315                         enable_font_pango="yes"
316                 else
317                         IFS="$SAVEIFS"
318                         AC_ERROR([Unknown font backend $i])
319                 fi
320         done
321         IFS="$SAVEIFS"
322 fi
323 AC_MSG_RESULT([$with_fonts])
324
325 # kmscon sessions
326 AC_MSG_CHECKING([which sessions the user wants])
327 AC_ARG_WITH([sessions],
328             [AS_HELP_STRING([--with-sessions],
329               [specify list of optional sessions])])
330 enable_session_dummy="no"
331 enable_session_terminal="no"
332 enable_session_cdev="no"
333 if test "x$with_sessions" = "x" ; then
334         enable_session_dummy="yes (default)"
335         enable_session_terminal="yes (default)"
336         enable_session_cdev="yes (default)"
337         with_sessions="dummy,terminal,cdev (default)"
338 else
339         SAVEIFS="$IFS"
340         IFS=","
341         for i in $with_sessions ; do
342                 if test "x$i" = "xdummy" ; then
343                         enable_session_dummy="yes"
344                 elif test "x$i" = "xterminal" ; then
345                         enable_session_terminal="yes"
346                 elif test "x$i" = "xcdev" ; then
347                         enable_session_cdev="yes"
348                 else
349                         IFS="$SAVEIFS"
350                         AC_ERROR([Unknown session type $i])
351                 fi
352         done
353         IFS="$SAVEIFS"
354 fi
355 AC_MSG_RESULT([$with_sessions])
356
357 #
358 # Check what can be built
359 # This checks each configuration option and tests whether all dependencies are
360 # met. This is done from bottom up to ensure the right order.
361 #
362
363 # debug
364 debug_avail=no
365 debug_missing=""
366 if test ! "x$enable_debug" = "xno" ; then
367         debug_avail=yes
368 else
369         debug_missing="enable-debug"
370 fi
371
372 # optimizations
373 optimizations_avail=no
374 optimizations_missing=""
375 if test ! "x$enable_optimizations" = "xno" ; then
376         optimizations_avail=yes
377 else
378         optimizations_missing="enable-optimizations"
379 fi
380
381 # eloop-dbus
382 eloop_dbus_avail=no
383 eloop_dbus_missing=""
384 if test ! "x$enable_eloop_dbus" = "xno" ; then
385         eloop_dbus_avail=yes
386         if test "x$have_dbus" = "xno" ; then
387                 eloop_dbus_avail=no
388                 eloop_dbus_missing="libdbus"
389         fi
390
391         if test "x$eloop_dbus_avail" = "xno" ; then
392                 if test "x$enable_eloop_dbus" = "xyes" ; then
393                         AC_ERROR([missing for eloop-dbus: $eloop_dbus_missing])
394                 fi
395         fi
396 else
397         eloop_dbus_missing="enable-eloop-dbus"
398 fi
399
400 # eloop
401 eloop_avail=no
402 eloop_missing=""
403 if test ! "x$enable_eloop" = "xno" ; then
404         eloop_avail=yes
405 else
406         eloop_missing="enable-eloop"
407 fi
408
409 # TSM
410 tsm_avail=no
411 tsm_missing=""
412 if test ! "x$enable_tsm" = "xno" ; then
413         tsm_avail=yes
414         if test "x$have_xkbcommon" = "xno" ; then
415                 tsm_avail=no
416                 tsm_missing="libxkbcommon"
417         fi
418
419         if test "x$tsm_avail" = "xno" ; then
420                 if test "x$enable_tsm" = "xyes" ; then
421                         AC_ERROR([missing for TSM: $tsm_missing])
422                 fi
423         fi
424 else
425         tsm_missing="enable-tsm"
426 fi
427
428 # video fbdev
429 video_fbdev_avail=no
430 video_fbdev_missing=""
431 if test ! "x$enable_video_fbdev" = "xno" ; then
432         # TODO: check for kernel headers
433         video_fbdev_avail=yes
434 else
435         video_fbdev_missing="enable-video-fbdev"
436 fi
437
438 # video dumb
439 video_dumb_avail=no
440 video_dumb_missing=""
441 if test ! "x$enable_video_dumb" = "xno" ; then
442         video_dumb_avail=yes
443         if test "x$have_drm" = "xno" ; then
444                 video_dumb_avail=no
445                 video_dumb_missing="libdrm"
446         fi
447
448         if test "x$video_dumb_avail" = "xno" ; then
449                 if test "x$enable_video_dumb" = "xyes" ; then
450                         AC_ERROR([missing for dumb video backend: $video_dumb_missing])
451                 fi
452         fi
453 else
454         video_dumb_missing="enable-video-dumb"
455 fi
456
457 # video drm
458 video_drm_avail=no
459 video_drm_missing=""
460 if test ! "x$enable_video_drm" = "xno" ; then
461         video_drm_avail=yes
462         if test "x$have_drm" = "xno" ; then
463                 video_drm_avail=no
464                 video_drm_missing="libdrm,$video_drm_missing"
465         fi
466         if test "x$have_gbm" = "xno" ; then
467                 video_drm_avail=no
468                 video_drm_missing="libgbm,$video_drm_missing"
469         fi
470         if test "x$have_egl" = "xno" ; then
471                 video_drm_avail=no
472                 video_drm_missing="libegl,$video_drm_missing"
473         fi
474         if test "x$have_gles2" = "xno" ; then
475                 video_drm_avail=no
476                 video_drm_missing="libgles2,$video_drm_missing"
477         fi
478
479         if test "x$video_drm_avail" = "xno" ; then
480                 if test "x$enable_video_drm" = "xyes" ; then
481                         AC_ERROR([missing for drm video backend: $video_drm_missing])
482                 fi
483         fi
484 else
485         video_drm_missing="enable-video-drm"
486 fi
487
488 # uterm
489 uterm_avail=no
490 uterm_missing=""
491 if test ! "x$enable_uterm" = "xno" ; then
492         uterm_avail=yes
493 else
494         uterm_missing="enable-uterm"
495 fi
496
497 # multi-seat
498 multi_seat_avail=no
499 multi_seat_missing=""
500 if test ! "x$enable_multi_seat" = "xno" ; then
501         multi_seat_avail=yes
502         if test "x$have_systemd" = "xno" ; then
503                 multi_seat_avail=no
504                 multi_seat_missing="libsystemd"
505         fi
506
507         if test "x$multi_seat_avail" = "xno" ; then
508                 if test "x$enable_multi_seat" = "xyes" ; then
509                         AC_ERROR([missing for multi-seat support: $multi_seat_missing])
510                 fi
511         fi
512 else
513         multi_seat_missing="enable-multi-seat"
514 fi
515
516 # hotplug
517 hotplug_avail=no
518 hotplug_missing=""
519 if test ! "x$enable_hotplug" = "xno" ; then
520         hotplug_avail=yes
521         if test "x$have_udev" = "xno" ; then
522                 hotplug_avail=no
523                 hotplug_missing="libudev"
524         fi
525
526         if test "x$hotplug_avail" = "xno" ; then
527                 if test "x$enable_hotplug" = "xyes" ; then
528                         AC_ERROR([missing for hotplug-support: $hotplug_missing])
529                 fi
530         fi
531 else
532         hotplug_missing="enable-hotplug"
533 fi
534
535 # pciaccess
536 pciaccess_avail=no
537 pciaccess_missing=""
538 if test ! "x$enable_pciaccess" = "xno" ; then
539         pciaccess_avail=yes
540         if test "x$have_pciaccess" = "xno" ; then
541                 pciaccess_avail=no
542                 pciaccess_missing="libpciaccess"
543         fi
544
545         if test "x$pciaccess_avail" = "xno" ; then
546                 if test "x$enable_pciaccess" = "xyes" ; then
547                         AC_ERROR([missing for pciaccess: $pciaccess_missing])
548                 fi
549         fi
550 else
551         pciaccess_missing="enable-pciaccess"
552 fi
553
554 # renderer bblit
555 renderer_bblit_avail=no
556 renderer_bblit_missing=""
557 if test ! "x$enable_renderer_bblit" = "xno" ; then
558         renderer_bblit_avail=yes
559 else
560         renderer_bblit_missing="enable-renderer-bblit"
561 fi
562
563 # renderer bbulk
564 renderer_bbulk_avail=no
565 renderer_bbulk_missing=""
566 if test ! "x$enable_renderer_bbulk" = "xno" ; then
567         renderer_bbulk_avail=yes
568 else
569         renderer_bbulk_missing="enable-renderer-bbulk"
570 fi
571
572 # renderer gltex
573 renderer_gltex_avail=no
574 renderer_gltex_missing=""
575 if test ! "x$enable_renderer_gltex" = "xno" ; then
576         renderer_gltex_avail=yes
577         if test "x$have_gles2" = "xno" ; then
578                 renderer_gltex_avail=no
579                 renderer_gltex_missing="libgles2"
580         fi
581
582         if test "x$renderer_gltex_avail" = "xno" ; then
583                 if test "x$enable_renderer_gltex" = "xyes" ; then
584                         AC_ERROR([missing for renderer-gltex: $renderer_gltex_missing])
585                 fi
586         fi
587 else
588         renderer_gltex_missing="enable-renderer-gltex"
589 fi
590
591 # font unifont
592 font_unifont_avail=no
593 font_unifont_missing=""
594 if test ! "x$enable_font_unifont" = "xno" ; then
595         font_unifont_avail=yes
596 else
597         font_unifont_missing="enable-font-unifont"
598 fi
599
600 # font freetype2
601 font_freetype2_avail=no
602 font_freetype2_missing=""
603 if test ! "x$enable_font_freetype2" = "xno" ; then
604         font_freetype2_avail=yes
605         if test "x$have_freetype2" = "xno" ; then
606                 font_freetype2_avail=no
607                 font_freetype2_missing="libfontconfig,libfreetype2"
608         fi
609
610         if test "x$font_freetype2_avail" = "xno" ; then
611                 if test "x$enable_font_freetype2" = "xyes" ; then
612                         AC_ERROR([missing for font-freetype2: $font_freetype2_missing])
613                 fi
614         fi
615 else
616         font_freetype2_missing="enable-font-freetype2"
617 fi
618
619 # font pango
620 font_pango_avail=no
621 font_pango_missing=""
622 if test ! "x$enable_font_pango" = "xno" ; then
623         font_pango_avail=yes
624         if test "x$have_pango" = "xno" ; then
625                 font_pango_avail=no
626                 font_pango_missing="libpango"
627         fi
628
629         if test "x$font_pango_avail" = "xno" ; then
630                 if test "x$enable_font_pango" = "xyes" ; then
631                         AC_ERROR([missing for font-pango: $font_pango_missing])
632                 fi
633         fi
634 else
635         font_pango_missing="enable-font-pango"
636 fi
637
638 # session dummy
639 session_dummy_avail=no
640 session_dummy_missing=""
641 if test ! "x$enable_session_dummy" = "xno" ; then
642         session_dummy_avail=yes
643 else
644         session_dummy_missing="enable-session-dummy"
645 fi
646
647 # session terminal
648 session_terminal_avail=no
649 session_terminal_missing=""
650 if test ! "x$enable_session_terminal" = "xno" ; then
651         session_terminal_avail=yes
652         if test "x$tsm_avail" = "xno" ; then
653                 session_terminal_avail=no
654                 session_terminal_missing="$tsm_missing"
655         fi
656
657         if test "x$session_terminal_avail" = "xno" ; then
658                 if test "x$enable_session_terminal" = "xyes" ; then
659                         AC_ERROR([missing for session-terminal: $session_terminal_missing])
660                 fi
661         fi
662 else
663         session_terminal_missing="enable-session-terminal"
664 fi
665
666 # session cdev
667 session_cdev_avail=no
668 session_cdev_missing=""
669 if test ! "x$enable_session_cdev" = "xno" ; then
670         session_cdev_avail=yes
671         if test "x$have_fuse" = "xno" ; then
672                 session_cdev_avail=no
673                 session_cdev_missing="libfuse,$session_cdev_missing"
674         fi
675
676         if test "x$tsm_avail" = "xno" ; then
677                 session_cdev_avail=no
678                 session_cdev_missing="$tsm_missing,$session_cdev_missing"
679         fi
680
681         if test "x$session_cdev_avail" = "xno" ; then
682                 if test "x$enable_session_cdev" = "xyes" ; then
683                         AC_ERROR([missing for session-cdev: $session_cdev_missing])
684                 fi
685         fi
686 else
687         session_cdev_missing="enable-session-cdev"
688 fi
689
690 # kmscon
691 kmscon_avail=no
692 kmscon_missing=""
693 if test ! "x$enable_kmscon" = "xno" ; then
694         kmscon_avail=yes
695         if test "x$eloop_avail" = "xno" ; then
696                 kmscon_avail=no
697                 kmscon_missing="$eloop_missing,$kmscon_missing"
698         fi
699
700         if test "x$tsm_avail" = "xno" ; then
701                 kmscon_avail=no
702                 kmscon_missing="$tsm_missing,$kmscon_missing"
703         fi
704
705         if test "x$uterm_avail" = "xno" ; then
706                 kmscon_avail=no
707                 kmscon_missing="$uterm_missing,$kmscon_missing"
708         fi
709
710         if test "x$kmscon_avail" = "xno" ; then
711                 if test "x$enable_kmscon" = "xyes" ; then
712                         AC_ERROR([missing for kmscon: $kmscon_missing])
713                 fi
714         fi
715 else
716         kmscon_missing="enable-kmscon"
717 fi
718
719 # wlterm
720 wlterm_avail=no
721 wlterm_missing=""
722 if test ! "x$enable_wlterm" = "xno" ; then
723         wlterm_avail=yes
724         if test "x$tsm_avail" = "xno" ; then
725                 wlterm_avail=no
726                 wlterm_missing="$tsm_missing,$wlterm_missing"
727         fi
728
729         if test "x$eloop_avail" = "xno" ; then
730                 wlterm_avail=no
731                 wlterm_missing="$eloop_missing,$wlterm_missing"
732         fi
733
734         if test "x$have_wayland" = "xno" ; then
735                 wlterm_avail=no
736                 wlterm_missing="libwayland,$wlterm_missing"
737         fi
738
739         if test "x$wlterm_avail" = "xno" ; then
740                 if test "x$enable_wlterm" = "xyes" ; then
741                         AC_ERROR([missing for wlterm: $wlterm_missing])
742                 fi
743         fi
744 else
745         wlterm_missing="enable-wlterm"
746 fi
747
748 #
749 # Enable all required modules
750 # We now know which modules can be built by checking the *_avail variables set
751 # above. We now only have to disable all modules that are disabled by default
752 # and the user didn't force-enable them and no other module that is enabled
753 # needs them. This is done top-down of course.
754 #
755
756 # wlterm
757 wlterm_enabled=no
758 if test "x$wlterm_avail" = "xyes" ; then
759         if test "x${enable_wlterm% *}" = "xyes" ; then
760                 wlterm_enabled=yes
761                 enable_eloop=yes
762                 enable_tsm=yes
763         fi
764 fi
765
766 # kmscon
767 kmscon_enabled=no
768 if test "x$kmscon_avail" = "xyes" ; then
769         if test "x${enable_kmscon% *}" = "xyes" ; then
770                 kmscon_enabled=yes
771                 enable_eloop=yes
772                 enable_uterm=yes
773         fi
774 fi
775
776 # session cdev
777 session_cdev_enabled=no
778 if test "x$session_cdev_avail" = "xyes" ; then
779         if test "x${enable_session_cdev% *}" = "xyes" ; then
780                 session_cdev_enabled=yes
781         fi
782 fi
783
784 # session terminal
785 session_terminal_enabled=no
786 if test "x$session_terminal_avail" = "xyes" ; then
787         if test "x${enable_session_terminal% *}" = "xyes" ; then
788                 session_terminal_enabled=yes
789                 enable_tsm=yes
790         fi
791 fi
792
793 # session dummy
794 session_dummy_enabled=no
795 if test "x$session_dummy_avail" = "xyes" ; then
796         if test "x${enable_session_dummy% *}" = "xyes" ; then
797                 session_dummy_enabled=yes
798         fi
799 fi
800
801 # font pango
802 font_pango_enabled=no
803 if test "x$font_pango_avail" = "xyes" ; then
804         if test "x${enable_font_pango% *}" = "xyes" ; then
805                 font_pango_enabled=yes
806         fi
807 fi
808
809 # font freetype2
810 font_freetype2_enabled=no
811 if test "x$font_freetype2_avail" = "xyes" ; then
812         if test "x${enable_font_freetype2% *}" = "xyes" ; then
813                 font_freetype2_enabled=yes
814         fi
815 fi
816
817 # font unifont
818 font_unifont_enabled=no
819 if test "x$font_unifont_avail" = "xyes" ; then
820         if test "x${enable_font_unifont% *}" = "xyes" ; then
821                 font_unifont_enabled=yes
822         fi
823 fi
824
825 # renderer gltex
826 renderer_gltex_enabled=no
827 if test "x$renderer_gltex_avail" = "xyes" ; then
828         if test "x${enable_renderer_gltex% *}" = "xyes" ; then
829                 renderer_gltex_enabled=yes
830         fi
831 fi
832
833 # renderer bbulk
834 renderer_bbulk_enabled=no
835 if test "x$renderer_bbulk_avail" = "xyes" ; then
836         if test "x${enable_renderer_bbulk% *}" = "xyes" ; then
837                 renderer_bbulk_enabled=yes
838         fi
839 fi
840
841 # renderer bblit
842 renderer_bblit_enabled=no
843 if test "x$renderer_bblit_avail" = "xyes" ; then
844         if test "x${enable_renderer_bblit% *}" = "xyes" ; then
845                 renderer_bblit_enabled=yes
846         fi
847 fi
848
849 # pciaccess
850 pciaccess_enabled=no
851 if test "x$pciaccess_avail" = "xyes" ; then
852         if test "x${enable_pciaccess% *}" = "xyes" ; then
853                 pciaccess_enabled=yes
854         fi
855 fi
856
857 # hotplug
858 hotplug_enabled=no
859 if test "x$hotplug_avail" = "xyes" ; then
860         if test "x${enable_hotplug% *}" = "xyes" ; then
861                 hotplug_enabled=yes
862         fi
863 fi
864
865 # multi-seat
866 multi_seat_enabled=no
867 if test "x$multi_seat_avail" = "xyes" ; then
868         if test "x${enable_multi_seat% *}" = "xyes" ; then
869                 multi_seat_enabled=yes
870         fi
871 fi
872
873 # uterm
874 uterm_enabled=no
875 if test "x$uterm_avail" = "xyes" ; then
876         if test "x${enable_uterm% *}" = "xyes" ; then
877                 uterm_enabled=yes
878         fi
879 fi
880
881 # video drm
882 video_drm_enabled=no
883 if test "x$video_drm_avail" = "xyes" ; then
884         if test "x${enable_video_drm% *}" = "xyes" ; then
885                 video_drm_enabled=yes
886         fi
887 fi
888
889 # video dumb
890 video_dumb_enabled=no
891 if test "x$video_dumb_avail" = "xyes" ; then
892         if test "x${enable_video_dumb% *}" = "xyes" ; then
893                 video_dumb_enabled=yes
894         fi
895 fi
896
897 # video fbdev
898 video_fbdev_enabled=no
899 if test "x$video_fbdev_avail" = "xyes" ; then
900         if test "x${enable_video_fbdev% *}" = "xyes" ; then
901                 video_fbdev_enabled=yes
902         fi
903 fi
904
905 # tsm
906 tsm_enabled=no
907 if test "x$tsm_avail" = "xyes" ; then
908         if test "x${enable_tsm% *}" = "xyes" ; then
909                 tsm_enabled=yes
910         fi
911 fi
912
913 # eloop
914 eloop_enabled=no
915 if test "x$eloop_avail" = "xyes" ; then
916         if test "x${enable_eloop% *}" = "xyes" ; then
917                 eloop_enabled=yes
918         fi
919 fi
920
921 # eloop-dbus
922 eloop_dbus_enabled=no
923 if test "x$eloop_dbus_avail" = "xyes" ; then
924         if test "x${enable_eloop_dbus% *}" = "xyes" ; then
925                 eloop_dbus_enabled=yes
926         fi
927 fi
928
929 # optimizations
930 optimizations_enabled=no
931 if test "x$optimizations_avail" = "xyes" ; then
932         if test "x${enable_optimizations% *}" = "xyes" ; then
933                 optimizations_enabled=yes
934         fi
935 fi
936
937 # debug
938 debug_enabled=no
939 if test "x$debug_avail" = "xyes" ; then
940         if test "x${enable_debug% *}" = "xyes" ; then
941                 debug_enabled=yes
942         fi
943 fi
944
945 #
946 # Module Configuration
947 # We have now done all dependency checking and default-value validation and we
948 # now know which modules are enabled via the *_enabled variables.
949 # Everything below is related to the configuration of each module and setting
950 # the correct flags for the build process.
951 #
952
953 # debug
954 if test "x$debug_enabled" = "xyes" ; then
955         AC_DEFINE([BUILD_ENABLE_DEBUG], [1], [Enable debug mode])
956 else
957         AC_DEFINE([NDEBUG], [1], [No Debug])
958 fi
959
960 AM_CONDITIONAL([BUILD_ENABLE_DEBUG],
961                [test "x$debug_enabled" = "xyes"])
962
963 # optimizations
964 AM_CONDITIONAL([BUILD_ENABLE_OPTIMIZATIONS],
965                [test "x$optimizations_enabled" = "xyes"])
966
967 # eloop-dbus
968 AM_CONDITIONAL([BUILD_ENABLE_ELOOP_DBUS],
969                [test "x$eloop_dbus_enabled" = "xyes"])
970
971 # eloop
972 AM_CONDITIONAL([BUILD_ENABLE_ELOOP],
973                [test "x$eloop_enabled" = "xyes"])
974
975 # TSM
976 AM_CONDITIONAL([BUILD_ENABLE_TSM],
977                [test "x$tsm_enabled" = "xyes"])
978
979 # video fbdev
980 if test "x$video_fbdev_enabled" = "xyes" ; then
981         AC_DEFINE([BUILD_ENABLE_VIDEO_FBDEV], [1],
982                   [Build uterm fbdev video backend])
983 fi
984
985 AM_CONDITIONAL([BUILD_ENABLE_VIDEO_FBDEV],
986                [test "x$video_fbdev_enabled" = "xyes"])
987
988 # video dumb
989 if test "x$video_dumb_enabled" = "xyes" ; then
990         AC_DEFINE([BUILD_ENABLE_VIDEO_DUMB], [1],
991                   [Build uterm dumb drm video backend])
992 fi
993
994 AM_CONDITIONAL([BUILD_ENABLE_VIDEO_DUMB],
995                [test "x$video_dumb_enabled" = "xyes"])
996
997 # video drm
998 if test "x$video_drm_enabled" = "xyes" ; then
999         AC_DEFINE([BUILD_ENABLE_VIDEO_DRM], [1],
1000                   [Build uterm drm video backend])
1001 fi
1002
1003 AM_CONDITIONAL([BUILD_ENABLE_VIDEO_DRM],
1004                [test "x$video_drm_enabled" = "xyes"])
1005
1006 # uterm
1007 AM_CONDITIONAL([BUILD_ENABLE_UTERM],
1008                [test "x$uterm_enabled" = "xyes"])
1009
1010 # multi-seat
1011 if test "x$multi_seat_enabled" = "xyes" ; then
1012         AC_DEFINE([BUILD_ENABLE_MULTI_SEAT], [1],
1013                   [Use systemd for multi-seat support])
1014 fi
1015
1016 AM_CONDITIONAL([BUILD_ENABLE_MULTI_SEAT],
1017                [test "x$multi_seat_enabled" = "xyes"])
1018
1019 # hotplug
1020 if test "x$hotplug_enabled" = "xyes" ; then
1021         AC_DEFINE([BUILD_ENABLE_HOTPLUG], [1],
1022                   [Use udev for hotplug support])
1023 fi
1024
1025 AM_CONDITIONAL([BUILD_ENABLE_HOTPLUG],
1026                [test "x$hotplug_enabled" = "xyes"])
1027
1028 # pciaccess
1029 if test "x$pciaccess_enabled" = "xyes" ; then
1030         AC_DEFINE([BUILD_ENABLE_PCIACCESS], [1],
1031                   [Use pciaccess for device detection])
1032 fi
1033
1034 AM_CONDITIONAL([BUILD_ENABLE_PCIACCESS],
1035                [test "x$pciaccess_enabled" = "xyes"])
1036
1037 # renderer bblit
1038 if test "x$renderer_bblit_enabled" = "xyes" ; then
1039         AC_DEFINE([BUILD_ENABLE_RENDERER_BBLIT], [1],
1040                   [Build bblit rendering backend])
1041 fi
1042
1043 AM_CONDITIONAL([BUILD_ENABLE_RENDERER_BBLIT],
1044                [test "x$renderer_bblit_enabled" = "xyes"])
1045
1046 # renderer bbulk
1047 if test "x$renderer_bbulk_enabled" = "xyes" ; then
1048         AC_DEFINE([BUILD_ENABLE_RENDERER_BBULK], [1],
1049                   [Build bbulk rendering backend])
1050 fi
1051
1052 AM_CONDITIONAL([BUILD_ENABLE_RENDERER_BBULK],
1053                [test "x$renderer_bbulk_enabled" = "xyes"])
1054
1055 # renderer gltex
1056 if test "x$renderer_gltex_enabled" = "xyes" ; then
1057         AC_DEFINE([BUILD_ENABLE_RENDERER_GLTEX], [1],
1058                   [Build gltex rendering backend])
1059 fi
1060
1061 AM_CONDITIONAL([BUILD_ENABLE_RENDERER_GLTEX],
1062                [test "x$renderer_gltex_enabled" = "xyes"])
1063
1064 # font unifont
1065 if test "x$font_unifont_enabled" = "xyes" ; then
1066         AC_DEFINE([BUILD_ENABLE_FONT_UNIFONT], [1],
1067                   [Build static unifont backend])
1068 fi
1069
1070 AM_CONDITIONAL([BUILD_ENABLE_FONT_UNIFONT],
1071                [test "x$font_unifont_enabled" = "xyes"])
1072
1073 # font freetype2
1074 if test "x$font_freetype2_enabled" = "xyes" ; then
1075         AC_DEFINE([BUILD_ENABLE_FONT_FREETYPE2], [1],
1076                   [Build freetype2 font backend])
1077 fi
1078
1079 AM_CONDITIONAL([BUILD_ENABLE_FONT_FREETYPE2],
1080                [test "x$font_freetype2_enabled" = "xyes"])
1081
1082 # font pango
1083 if test "x$font_pango_enabled" = "xyes" ; then
1084         AC_DEFINE([BUILD_ENABLE_FONT_PANGO], [1],
1085                   [Build pango font backend])
1086 fi
1087
1088 AM_CONDITIONAL([BUILD_ENABLE_FONT_PANGO],
1089                [test "x$font_pango_enabled" = "xyes"])
1090
1091 # session dummy
1092 if test "x$session_dummy_enabled" = "xyes" ; then
1093         AC_DEFINE([BUILD_ENABLE_SESSION_DUMMY], [1],
1094                   [Build dummy session])
1095 fi
1096
1097 AM_CONDITIONAL([BUILD_ENABLE_SESSION_DUMMY],
1098                [test "x$session_dummy_enabled" = "xyes"])
1099
1100 # session terminal
1101 if test "x$session_terminal_enabled" = "xyes" ; then
1102         AC_DEFINE([BUILD_ENABLE_SESSION_TERMINAL], [1],
1103                   [Build terminal session])
1104 fi
1105
1106 AM_CONDITIONAL([BUILD_ENABLE_SESSION_TERMINAL],
1107                [test "x$session_terminal_enabled" = "xyes"])
1108
1109 # session cdev
1110 if test "x$session_cdev_enabled" = "xyes" ; then
1111         AC_DEFINE([BUILD_ENABLE_SESSION_CDEV], [1],
1112                   [Build cdev session])
1113 fi
1114
1115 AM_CONDITIONAL([BUILD_ENABLE_SESSION_CDEV],
1116                [test "x$session_cdev_enabled" = "xyes"])
1117
1118 # kmscon
1119 AM_CONDITIONAL([BUILD_ENABLE_KMSCON],
1120                [test "x$kmscon_enabled" = "xyes"])
1121
1122 # wlterm
1123 AM_CONDITIONAL([BUILD_ENABLE_WLTERM],
1124                [test "x$wlterm_enabled" = "xyes"])
1125
1126 #
1127 # Miscellaneous Checks
1128 # All checks below are independent of module checking or depend on the results
1129 # of it. They do not have any dependencies themself so they are not part of the
1130 # module infrastructure.
1131 #
1132
1133 # check for _Static_assert
1134 AC_MSG_CHECKING([whether _Static_assert() is supported])
1135 AC_LANG([C])
1136 have_static_assert=yes
1137 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[_Static_assert(1, "What?");]])],
1138                   [AC_DEFINE([BUILD_HAVE_STATIC_ASSERT],
1139                              [1],
1140                              [Define to 1 if _Static_assert() is supported])],
1141                   [have_static_assert=no])
1142 AC_MSG_RESULT([$have_static_assert])
1143
1144 # check for gbm_bo_get_pitch() function, otherwise gbm_bo_get_stride() is used
1145 if test x$have_gbm = xyes ; then
1146         save_CFLAGS="$CFLAGS"
1147         save_LIBS="$LIBS"
1148         save_LDFLAGS="$LDFLAGS"
1149         CFLAGS="$DRM_CFLAGS $GBM_CFLAGS"
1150         LIBS="$DRM_LIBS $GBM_LIBS"
1151         LDFLAGS=""
1152         AC_CHECK_LIB([gbm],
1153                      [gbm_bo_get_pitch],
1154                      [AC_DEFINE([BUILD_HAVE_GBM_BO_GET_PITCH],
1155                                 [1],
1156                                 [Define to 1 if your libgbm provides gbm_bo_get_pitch])])
1157         CFLAGS="$save_CFLAGS"
1158         LIBS="$save_LIBS"
1159         LDFLAGS="$save_LDFLAGS"
1160 fi
1161
1162 # check for xsltproc
1163 AC_PATH_PROG(XSLTPROC, xsltproc)
1164 AM_CONDITIONAL([BUILD_HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"])
1165
1166 # check for offline man-pages stylesheet
1167 AC_MSG_CHECKING([for docbook manpages stylesheet])
1168 BUILD_MANPAGES_STYLESHEET="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
1169 AC_PATH_PROGS_FEATURE_CHECK([XSLTPROC_TMP], [xsltproc],
1170                             AS_IF([`"$ac_path_XSLTPROC_TMP" --nonet "$BUILD_MANPAGES_STYLESHEET" > /dev/null 2>&1`],
1171                                   [BUILD_HAVE_MANPAGES_STYLESHEET=yes]))
1172 if test "x$BUILD_HAVE_MANPAGES_STYLESHEET" = "xyes"; then
1173         AM_CONDITIONAL([BUILD_HAVE_MANPAGES_STYLESHEET], true)
1174         AC_SUBST(BUILD_MANPAGES_STYLESHEET)
1175         AC_MSG_RESULT([yes])
1176 else
1177         AM_CONDITIONAL([BUILD_HAVE_MANPAGES_STYLESHEET], false)
1178         AC_MSG_RESULT([no])
1179 fi
1180
1181 #
1182 # Makefile vars
1183 # After everything is configured, we correctly substitute the values for the
1184 # makefiles.
1185 #
1186
1187 AC_CONFIG_FILES([Makefile
1188                  docs/pc/libeloop.pc
1189                  docs/pc/libtsm.pc
1190                  docs/pc/libuterm.pc])
1191 AC_OUTPUT
1192
1193 #
1194 # Configuration output
1195 # Show configuration to the user so they can check whether everything was
1196 # configured as expected.
1197 #
1198
1199 AC_MSG_NOTICE([Build configuration:
1200
1201                prefix: $prefix
1202           exec-prefix: $exec_prefix
1203                libdir: $libdir
1204            includedir: $includedir
1205
1206   Applications and Libraries:
1207                kmscon: $kmscon_enabled ($kmscon_avail: $kmscon_missing)
1208                wlterm: $wlterm_enabled ($wlterm_avail: $wlterm_missing)
1209                 uterm: $uterm_enabled ($uterm_avail: $uterm_missing)
1210                   tsm: $tsm_enabled ($tsm_avail: $tsm_missing)
1211                 eloop: $eloop_enabled ($eloop_avail: $eloop_missing)
1212
1213   Miscellaneous Options:
1214                 debug: $debug_enabled ($debug_avail: $debug_missing)
1215         optimizations: $optimizations_enabled ($optimizations_avail: $optimizations_missing)
1216            multi-seat: $multi_seat_enabled ($multi_seat_avail: $multi_seat_missing)
1217               hotplug: $hotplug_enabled ($hotplug_avail: $hotplug_missing)
1218             pciaccess: $pciaccess_enabled ($pciaccess_avail: $pciaccess_missing)
1219            eloop-dbus: $eloop_dbus_enabled ($eloop_dbus_avail: $eloop_dbus_missing)
1220
1221   Video Backends:
1222                 fbdev: $video_fbdev_enabled ($video_fbdev_avail: $video_fbdev_missing)
1223              dumb drm: $video_dumb_enabled ($video_dumb_avail: $video_dumb_missing)
1224                   drm: $video_drm_enabled ($video_drm_avail: $video_drm_missing)
1225
1226   Font Backends:
1227               unifont: $font_unifont_enabled ($font_unifont_avail: $font_unifont_missing)
1228             freetype2: $font_freetype2_enabled ($font_freetype2_avail: $font_freetype2_missing)
1229                 pango: $font_pango_enabled ($font_pango_avail: $font_pango_missing)
1230
1231   Renderers:
1232                 bblit: $renderer_bblit_enabled ($renderer_bblit_avail: $renderer_bblit_missing)
1233                 bbulk: $renderer_bbulk_enabled ($renderer_bbulk_avail: $renderer_bbulk_missing)
1234                 gltex: $renderer_gltex_enabled ($renderer_gltex_avail: $renderer_gltex_missing)
1235
1236   Session Types:
1237                 dummy: $session_dummy_enabled ($session_dummy_avail: $session_dummy_missing)
1238              terminal: $session_terminal_enabled ($session_terminal_avail: $session_terminal_missing)
1239                  cdev: $session_cdev_enabled ($session_cdev_avail: $session_cdev_missing)
1240
1241         Run "${MAKE-make}" to start compilation process])