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