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