configure.ac 29.1 KB
Newer Older
1 2 3
m4_define([weston_major_version], [2])
m4_define([weston_minor_version], [99])
m4_define([weston_micro_version], [90])
4 5
m4_define([weston_version],
          [weston_major_version.weston_minor_version.weston_micro_version])
6
m4_define([libweston_major_version], [3])
7
m4_define([libweston_minor_version], [0])
8
m4_define([libweston_patch_version], [0])
9

10
AC_PREREQ([2.64])
11
AC_INIT([weston],
12 13
        [weston_version],
        [https://bugs.freedesktop.org/enter_bug.cgi?product=Wayland&component=weston&version=weston_version],
14
        [weston],
Daniel Stone's avatar
Daniel Stone committed
15
        [http://wayland.freedesktop.org])
16

17
WAYLAND_PREREQ_VERSION="1.12.0"
18

19 20 21 22
AC_SUBST([WESTON_VERSION_MAJOR], [weston_major_version])
AC_SUBST([WESTON_VERSION_MINOR], [weston_minor_version])
AC_SUBST([WESTON_VERSION_MICRO], [weston_micro_version])
AC_SUBST([WESTON_VERSION], [weston_version])
23 24 25 26 27 28 29
AC_SUBST([LIBWESTON_MAJOR], [libweston_major_version])
# We use minor as current and age since on ABI/API break/removal we bump major
# so minor will be reset to 0.
m4_define([lt_current], [libweston_minor_version])
m4_define([lt_revision], [libweston_patch_version])
m4_define([lt_age], [libweston_minor_version])
AC_SUBST([LT_VERSION_INFO], [lt_current:lt_revision:lt_age])
30

Guillem Jover's avatar
Guillem Jover committed
31
AC_CONFIG_AUX_DIR([build-aux])
32
AC_CONFIG_HEADERS([config.h])
33
AC_CONFIG_MACRO_DIR([m4])
34

35
AC_USE_SYSTEM_EXTENSIONS
36
AC_SYS_LARGEFILE
37

38
AM_INIT_AUTOMAKE([1.11 parallel-tests foreign no-dist-gzip dist-xz color-tests subdir-objects])
39

Kristian Høgsberg's avatar
Kristian Høgsberg committed
40
AM_SILENT_RULES([yes])
41

42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
# Check Weston and libweston version consistency
m4_if(m4_cmp(weston_micro_version, [90]), [-1],
      [
	dnl micro < 90
	dnl A final or stable release, not a pre-release:
	dnl Weston and libweston versions must match.
	m4_if(weston_version, libweston_major_version[.]libweston_minor_version[.]libweston_patch_version,
	      [],
	      [AC_MSG_ERROR([Weston and libweston version mismatch for a final release])])
      ],
      [
	dnl A pre-release:
	dnl libweston must be equal or greater than weston.
	m4_case(m4_list_cmp([weston_major_version, weston_minor_version, weston_micro_version],
			     [libweston_major_version, libweston_minor_version, libweston_patch_version]),
		 [-1], [
			dnl weston < libweston
			dnl libweston must be weston_major+1.0.0
			m4_if(m4_eval(weston_major_version+1)[.0.0],
			      libweston_major_version[.]libweston_minor_version[.]libweston_patch_version,
			      [],
			      [AC_MSG_ERROR([libweston version is greater but not (weston_major+1).0.0])])
		 ],
		 [0], [
			dnl weston == libweston, all ok
		 ],
		 [1], [
			dnl weston > libweston, wrong
			AC_MSG_ERROR([Weston version is greater than libweston.])
		 ])
       ])

74 75
# Check for programs
AC_PROG_CC
Pekka Paalanen's avatar
Pekka Paalanen committed
76
AC_PROG_SED
77

78 79
# Initialize libtool
LT_PREREQ([2.2])
80
LT_INIT([disable-static])
81

82 83
AC_ARG_VAR([WESTON_NATIVE_BACKEND],
           [Set the native backend to use, if Weston is not running under Wayland nor X11. @<:@default=drm-backend.so@:>@])
84 85
AC_ARG_VAR([WESTON_SHELL_CLIENT],
           [Set the default desktop shell client to load if none is specified in weston.ini. @<:@default=weston-desktop-shell@:>@])
86

87 88
PKG_PROG_PKG_CONFIG()

89
WESTON_SEARCH_LIBS([DLOPEN], [dl], [dlopen])
90

91
# In old glibc versions (< 2.17) clock_gettime() and clock_getres() are in librt
92
WESTON_SEARCH_LIBS([CLOCK_GETTIME], [rt], [clock_gettime])
93
WESTON_SEARCH_LIBS([CLOCK_GETRES], [rt], [clock_getres])
94

95 96 97 98 99 100 101 102 103
AC_CHECK_DECL(SFD_CLOEXEC,[],
	      [AC_MSG_ERROR("SFD_CLOEXEC is needed to compile weston")],
	      [[#include <sys/signalfd.h>]])
AC_CHECK_DECL(TFD_CLOEXEC,[],
	      [AC_MSG_ERROR("TFD_CLOEXEC is needed to compile weston")],
	      [[#include <sys/timerfd.h>]])
AC_CHECK_DECL(CLOCK_MONOTONIC,[],
	      [AC_MSG_ERROR("CLOCK_MONOTONIC is needed to compile weston")],
	      [[#include <time.h>]])
104 105
AC_CHECK_HEADERS([execinfo.h])

106
AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate])
107

108 109 110 111 112 113 114 115
# check for libdrm as a build-time dependency only
# libdrm 2.4.30 introduced drm_fourcc.h.
PKG_CHECK_MODULES(LIBDRM, [libdrm >= 2.4.30], [], [AC_MSG_ERROR([
     libdrm is a hard build-time dependency for libweston core,
     but a sufficient version was not found. However, libdrm
     is not a runtime dependency unless you have features
     enabled that require it.])])

116
COMPOSITOR_MODULES="wayland-server >= $WAYLAND_PREREQ_VERSION pixman-1 >= 0.25.2"
117

118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
AC_CONFIG_FILES([doc/doxygen/tools.doxygen doc/doxygen/tooldev.doxygen])

AC_ARG_ENABLE(devdocs,
	      AS_HELP_STRING([--disable-devdocs],
			     [do not enable building of developer documentation]),,
	      enable_devdocs=auto)
if test "x$enable_devdocs" != "xno"; then
	AC_CHECK_PROGS([DOXYGEN], [doxygen])
	if test "x$DOXYGEN" = "x" -a "x$enable_devdocs" = "xyes"; then
		AC_MSG_ERROR([Developer documentation explicitly requested, but Doxygen couldn't be found])
	fi
	if test "x$DOXYGEN" != "x"; then
		enable_devdocs=yes
	else
		enable_devdocs=no
	fi
fi
AM_CONDITIONAL(ENABLE_DEVDOCS, test "x$enable_devdocs" = "xyes")

137
AC_ARG_ENABLE(egl, [  --disable-egl],,
138 139 140 141
              enable_egl=yes)
AM_CONDITIONAL(ENABLE_EGL, test x$enable_egl = xyes)
if test x$enable_egl = xyes; then
	AC_DEFINE([ENABLE_EGL], [1], [Build Weston with EGL support])
eucan's avatar
eucan committed
142 143
	PKG_CHECK_MODULES(EGL, [egl glesv2])
        PKG_CHECK_MODULES([EGL_TESTS], [egl glesv2 wayland-client wayland-egl])
144
fi
145

146 147 148 149 150
AC_ARG_ENABLE(xkbcommon,
	      AS_HELP_STRING([--disable-xkbcommon], [Disable libxkbcommon
			      support: This is only useful in environments
			      where you do not have a hardware keyboard. If
			      libxkbcommon support is disabled clients will not
Abdur Rehman's avatar
Abdur Rehman committed
151 152
			      be sent a keymap and must know how to interpret
			      the keycode sent for any key event.]),,
153 154 155
	      enable_xkbcommon=yes)
if test x$enable_xkbcommon = xyes; then
	AC_DEFINE(ENABLE_XKBCOMMON, [1], [Build Weston with libxkbcommon support])
156
	COMPOSITOR_MODULES="$COMPOSITOR_MODULES xkbcommon >= 0.3.0"
157 158 159 160
	PKG_CHECK_MODULES(XKBCOMMON_COMPOSE, [xkbcommon >= 0.5.0],
	                  [AC_DEFINE(HAVE_XKBCOMMON_COMPOSE, 1,
			             [Define if xkbcommon is 0.5.0 or newer])],
                          true)
161 162
fi

163 164
AC_ARG_ENABLE(setuid-install, [  --enable-setuid-install],,
	      enable_setuid_install=yes)
165
AM_CONDITIONAL(ENABLE_SETUID_INSTALL, test x$enable_setuid_install = xyes)
166 167


Tiago Vignatti's avatar
Tiago Vignatti committed
168 169
AC_ARG_ENABLE(xwayland, [  --enable-xwayland],,
	      enable_xwayland=yes)
170 171
AC_ARG_ENABLE(xwayland-test, [  --enable-xwayland-test],,
              enable_xwayland_test=yes)
Tiago Vignatti's avatar
Tiago Vignatti committed
172
AM_CONDITIONAL(ENABLE_XWAYLAND, test x$enable_xwayland = xyes)
173
AM_CONDITIONAL(ENABLE_XWAYLAND_TEST, test x$enable_xwayland = xyes -a x$enable_xwayland_test = xyes)
Tiago Vignatti's avatar
Tiago Vignatti committed
174
if test x$enable_xwayland = xyes; then
175
  PKG_CHECK_MODULES([XWAYLAND], xcb xcb-xfixes xcb-composite xcursor cairo-xcb)
Tiago Vignatti's avatar
Tiago Vignatti committed
176
  AC_DEFINE([BUILD_XWAYLAND], [1], [Build the X server launcher])
177 178 179

  AC_ARG_WITH(xserver-path, AS_HELP_STRING([--with-xserver-path=PATH],
              [Path to X server]), [XSERVER_PATH="$withval"],
180
              [XSERVER_PATH="/usr/bin/Xwayland"])
181
  AC_SUBST([XSERVER_PATH])
182
  if test x$enable_xwayland_test = xyes; then
183
    PKG_CHECK_MODULES([XWAYLAND_TEST], x11)
184
  fi
185 186
fi

187 188
AC_ARG_ENABLE(x11-compositor, [  --enable-x11-compositor],,
	      enable_x11_compositor=yes)
189
AM_CONDITIONAL(ENABLE_X11_COMPOSITOR, test x$enable_x11_compositor = xyes)
190
have_xcb_xkb=no
191
if test x$enable_x11_compositor = xyes; then
192
  PKG_CHECK_MODULES([XCB], xcb >= 1.8)
193
  X11_COMPOSITOR_MODULES="x11 x11-xcb xcb-shm"
194

195
  PKG_CHECK_MODULES(X11_COMPOSITOR_XKB, [xcb-xkb >= 1.9],
196 197 198 199 200 201 202
		    [have_xcb_xkb="yes"], [have_xcb_xkb="no"])
  if test "x$have_xcb_xkb" = xyes; then
	X11_COMPOSITOR_MODULES="$X11_COMPOSITOR_MODULES xcb-xkb"
	AC_DEFINE([HAVE_XCB_XKB], [1], [libxcb supports XKB protocol])
  fi

  PKG_CHECK_MODULES(X11_COMPOSITOR, [$X11_COMPOSITOR_MODULES])
203 204 205 206
  AC_DEFINE([BUILD_X11_COMPOSITOR], [1], [Build the X11 compositor])
fi


207 208
AC_ARG_ENABLE(drm-compositor, [  --enable-drm-compositor],,
	      enable_drm_compositor=yes)
209 210
AM_CONDITIONAL(ENABLE_DRM_COMPOSITOR, test x$enable_drm_compositor = xyes)
if test x$enable_drm_compositor = xyes; then
211
  AC_DEFINE([BUILD_DRM_COMPOSITOR], [1], [Build the DRM compositor])
212
  PKG_CHECK_MODULES(DRM_COMPOSITOR, [libudev >= 136 libdrm >= 2.4.30 gbm mtdev >= 1.1.0])
213 214 215
  PKG_CHECK_MODULES(DRM_COMPOSITOR_GBM, [gbm >= 10.2],
		    [AC_DEFINE([HAVE_GBM_FD_IMPORT], 1, [gbm supports dmabuf import])],
		    [AC_MSG_WARN([gbm does not support dmabuf import, will omit that capability])])
216 217
fi

218

219
PKG_CHECK_MODULES(LIBINPUT_BACKEND, [libinput >= 0.8.0])
220
PKG_CHECK_MODULES(COMPOSITOR, [$COMPOSITOR_MODULES])
221

222
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.8],
223 224 225
		  [ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)

226 227
AC_ARG_ENABLE(wayland-compositor, [  --enable-wayland-compositor],,
	      enable_wayland_compositor=yes)
228
AM_CONDITIONAL(ENABLE_WAYLAND_COMPOSITOR,
229 230
	       test x$enable_wayland_compositor = xyes)
if test x$enable_wayland_compositor = xyes; then
231 232
  AC_DEFINE([BUILD_WAYLAND_COMPOSITOR], [1],
	    [Build the Wayland (nested) compositor])
233 234 235 236
  PKG_CHECK_MODULES(WAYLAND_COMPOSITOR, [wayland-client >= $WAYLAND_PREREQ_VERSION wayland-cursor])
  if test x$enable_egl = xyes; then
    PKG_CHECK_MODULES(WAYLAND_COMPOSITOR_EGL, [wayland-egl])
  fi
237 238
fi

Pekka Paalanen's avatar
Pekka Paalanen committed
239

240 241 242 243
AC_ARG_ENABLE(headless-compositor, [  --enable-headless-compositor],,
	      enable_headless_compositor=yes)
AM_CONDITIONAL(ENABLE_HEADLESS_COMPOSITOR,
	       test x$enable_headless_compositor = xyes)
244 245 246
if test x$enable_headless_compositor = xyes; then
  AC_DEFINE([BUILD_HEADLESS_COMPOSITOR], [1], [Build the headless compositor])
fi
247 248


249 250 251 252 253 254
AC_ARG_ENABLE([fbdev-compositor], [  --enable-fbdev-compositor],,
              enable_fbdev_compositor=yes)
AM_CONDITIONAL([ENABLE_FBDEV_COMPOSITOR],
               [test x$enable_fbdev_compositor = xyes])
AS_IF([test x$enable_fbdev_compositor = xyes], [
  AC_DEFINE([BUILD_FBDEV_COMPOSITOR], [1], [Build the fbdev compositor])
255
  PKG_CHECK_MODULES([FBDEV_COMPOSITOR], [libudev >= 136 mtdev >= 1.1.0])
256 257
])

David Fort's avatar
David Fort committed
258 259 260 261 262
AC_ARG_ENABLE([rdp-compositor], [  --enable-rdp-compositor],,
              enable_rdp_compositor=no)
AM_CONDITIONAL([ENABLE_RDP_COMPOSITOR],
               [test x$enable_rdp_compositor = xyes])
if test x$enable_rdp_compositor = xyes; then
David Fort's avatar
David Fort committed
263
  AC_DEFINE([BUILD_RDP_COMPOSITOR], [1], [Build the RDP compositor])
264 265 266 267
  PKG_CHECK_MODULES(RDP_COMPOSITOR, [freerdp2 >= 2.0.0],
    [],
    [PKG_CHECK_MODULES(RDP_COMPOSITOR, [freerdp >= 1.1.0],[])]
  )
268 269 270 271 272

  SAVED_CPPFLAGS="$CPPFLAGS"
  CPPFLAGS="$CPPFLAGS $RDP_COMPOSITOR_CFLAGS"
  AC_CHECK_HEADERS([freerdp/version.h])
  CPPFLAGS="$SAVED_CPPFLAGS"
David Fort's avatar
David Fort committed
273
fi
274

275
AC_ARG_ENABLE([screen-sharing], [  --enable-screen-sharing],,
Jason Ekstrand's avatar
Jason Ekstrand committed
276 277 278 279 280 281 282 283 284 285 286
              enable_screen_sharing=no)
AM_CONDITIONAL([ENABLE_SCREEN_SHARING],
               [test x$enable_screen_sharing = xyes])
if test x$enable_screen_sharing = xyes; then
  PKG_CHECK_MODULES(SCREEN_SHARE, [wayland-client])

  if test x$enable_rdp_compositor != xyes; then
    AC_MSG_WARN([The screen-share.so module requires the RDP backend.])
  fi
fi

287 288 289 290 291 292 293 294 295 296
AC_ARG_WITH(cairo,
	    AS_HELP_STRING([--with-cairo=@<:@image|gl|glesv2@:>@]
			   [Which Cairo renderer to use for the clients]),
			   [],[with_cairo="image"])

if test "x$with_cairo" = "ximage"; then
	cairo_modules="cairo"
else
if test "x$with_cairo" = "xgl"; then
	cairo_modules="cairo-gl"
297
	AC_MSG_WARN([The --with-cairo=gl option can cause increased resource usage and potential instability, and thus is not recommended.  It is needed only for a few special demo programs.])
298 299 300
else
if test "x$with_cairo" = "xglesv2"; then
	cairo_modules="cairo-glesv2"
301
	AC_MSG_WARN([The --with-cairo=gles2 option can cause increased resource usage and potential instability, and thus is not recommended.  It is needed only for a few special demo programs.])
302 303 304 305 306 307 308
else
	AC_ERROR([Unknown cairo renderer requested])
fi
fi
fi

# Included for legacy compat
309 310
AC_ARG_WITH(cairo-glesv2,
            AS_HELP_STRING([--with-cairo-glesv2],
311
                           [Use GLESv2 cairo]))
312 313
if test "x$with_cairo_glesv2" = "xyes"; then
  cairo_modules="cairo-glesv2"
Armin K.'s avatar
Armin K. committed
314
  with_cairo="glesv2"
315 316 317 318
fi

if test "x$cairo_modules" = "xcairo-glesv2"; then
AC_DEFINE([USE_CAIRO_GLESV2], [1], [Use the GLESv2 GL cairo backend])
319 320
fi

321 322
PKG_CHECK_MODULES(PIXMAN, [pixman-1])
PKG_CHECK_MODULES(PNG, [libpng])
323

324 325 326 327
AC_ARG_WITH([jpeg],
            AS_HELP_STRING([--without-jpeg],
                           [Use jpeglib for JPEG decoding support [default=auto]]))
AS_IF([test "x$with_jpeg" != "xno"],
328
      [WESTON_SEARCH_LIBS([JPEG], [jpeg], [jpeg_CreateDecompress], [have_jpeglib=yes], [have_jpeglib=no])],
329 330
      [have_jpeglib=no])
AS_IF([test "x$have_jpeglib" = "xyes"],
331
      [AC_DEFINE([HAVE_JPEG], [1], [Have jpeglib])],
332 333 334
      [AS_IF([test "x$with_jpeg" = "xyes"],
             [AC_MSG_ERROR([JPEG support explicitly requested, but jpeglib couldn't be found])])])

335 336 337 338 339 340
AC_ARG_WITH([webp],
            AS_HELP_STRING([--without-webp],
                           [Use libwebp for WebP decoding support [default=auto]]))
AS_IF([test "x$with_webp" != "xno"],
      [PKG_CHECK_MODULES(WEBP, [libwebp], [have_webp=yes], [have_webp=no])],
      [have_webp=no])
341
AS_IF([test "x$have_webp" = "xyes"],
342 343 344
      [AC_DEFINE([HAVE_WEBP], [1], [Have webp])],
      [AS_IF([test "x$with_webp" = "xyes"],
             [AC_MSG_ERROR([WebP support explicitly requested, but libwebp couldn't be found])])])
345

346 347
AC_ARG_ENABLE(vaapi-recorder, [  --enable-vaapi-recorder],,
	      enable_vaapi_recorder=auto)
348
have_libva=no
349 350 351 352 353 354
if test x$enable_vaapi_recorder != xno; then
  PKG_CHECK_MODULES(LIBVA, [libva >= 0.34.0 libva-drm >= 0.34.0],
                    [have_libva=yes], [have_libva=no])
  if test "x$have_libva" = "xno" -a "x$enable_vaapi_recorder" = "xyes"; then
    AC_MSG_ERROR([vaapi-recorder explicitly enabled, but libva couldn't be found])
  fi
355 356
  AS_IF([test "x$have_libva" = "xyes"],
        [AC_DEFINE([BUILD_VAAPI_RECORDER], [1], [Build the vaapi recorder])])
357
fi
358
AM_CONDITIONAL(ENABLE_VAAPI_RECORDER, test "x$have_libva" = xyes)
359

360
PKG_CHECK_MODULES(CAIRO, [cairo])
361

362
PKG_CHECK_MODULES(TEST_CLIENT, [wayland-client >= $WAYLAND_PREREQ_VERSION pixman-1])
363

364 365 366 367 368
AC_ARG_ENABLE(simple-clients,
              AS_HELP_STRING([--disable-simple-clients],
                             [do not build the simple wl_shm clients]),,
              enable_simple_clients=yes)
AM_CONDITIONAL(BUILD_SIMPLE_CLIENTS, test "x$enable_simple_clients" = "xyes")
369
if test x$enable_simple_clients = xyes; then
370 371 372 373 374 375
  PKG_CHECK_MODULES(SIMPLE_CLIENT, [wayland-client])
fi

AC_ARG_ENABLE(simple-egl-clients,
              AS_HELP_STRING([--disable-simple-egl-clients],
                             [do not build the simple EGL clients]),,
376 377 378
              enable_simple_egl_clients="$enable_egl")
AM_CONDITIONAL(BUILD_SIMPLE_EGL_CLIENTS, test "x$enable_simple_egl_clients" = "xyes")
if test x$enable_simple_egl_clients = xyes; then
379
  PKG_CHECK_MODULES(SIMPLE_EGL_CLIENT,
eucan's avatar
eucan committed
380
                    [egl glesv2 wayland-client wayland-egl wayland-cursor])
381
fi
382

383 384 385 386 387
AC_ARG_ENABLE(simple-dmabuf-drm-client,
              AS_HELP_STRING([--disable-simple-dmabuf-drm-client],
                             [do not build the simple dmabuf drm client]),,
              enable_simple_dmabuf_drm_client="auto")
if ! test "x$enable_simple_dmabuf_drm_client" = "xno"; then
388
  PKG_CHECK_MODULES(SIMPLE_DMABUF_DRM_CLIENT, [wayland-client libdrm egl],
389 390 391 392 393 394 395 396 397 398 399 400 401
    [PKG_CHECK_MODULES(LIBDRM_PLATFORM, [libdrm_freedreno],
      AC_DEFINE([HAVE_LIBDRM_FREEDRENO], [1], [Build freedreno dmabuf client]) have_simple_dmabuf_drm_client=freedreno,
    [PKG_CHECK_MODULES(LIBDRM_PLATFORM, [libdrm_intel],
      AC_DEFINE([HAVE_LIBDRM_INTEL], [1], [Build intel dmabuf client]) have_simple_dmabuf_drm_client=intel,
    have_simple_dmabuf_drm_client=unsupported)])],
  have_simple_dmabuf_drm_client=unsupported)

  if test "x$have_simple_dmabuf_drm_client" = "xunsupported" -a "x$enable_simple_dmabuf_drm_client" = "xyes"; then
    AC_MSG_ERROR([DRM dmabuf client explicitly enabled, but libdrm_intel or libdrm_freedreno not found])
  fi

  if test "x$have_simple_dmabuf_drm_client" = "xfreedreno" -o "x$have_simple_dmabuf_drm_client" = "xintel"; then
    enable_simple_dmabuf_drm_client="yes"
402
  fi
403
fi
404
AM_CONDITIONAL(BUILD_SIMPLE_DMABUF_DRM_CLIENT, test "x$enable_simple_dmabuf_drm_client" = "xyes")
405

406 407 408 409 410 411 412 413 414 415 416 417 418 419
AC_ARG_ENABLE(simple-dmabuf-v4l-client,
              AS_HELP_STRING([--disable-simple-dmabuf-v4l-client],
                             [do not build the simple dmabuf v4l client]),,
              enable_simple_dmabuf_v4l_client="auto")
if ! test "x$enable_simple_dmabuf_v4l_client" = "xno"; then
  PKG_CHECK_MODULES(SIMPLE_DMABUF_V4L_CLIENT, [wayland-client libdrm],
		    have_simple_dmabuf_v4l_client=yes, have_simple_dmabuf_v4l_client=no)
  if test "x$have_simple_dmabuf_v4l_client" = "xno" -a "x$enable_simple_dmabuf_v4l_client" = "xyes"; then
    AC_MSG_ERROR([V4L dmabuf client explicitly enabled, but libdrm couldn't be found])
  fi
  enable_simple_dmabuf_v4l_client="$have_simple_dmabuf_v4l_client"
fi
AM_CONDITIONAL(BUILD_SIMPLE_DMABUF_V4L_CLIENT, test "x$enable_simple_dmabuf_v4l_client" = "xyes")

420
AC_ARG_ENABLE(clients, [  --enable-clients],, enable_clients=yes)
421
AM_CONDITIONAL(BUILD_CLIENTS, test x$enable_clients = xyes)
422
have_cairo_egl=no
423
if test x$enable_clients = xyes; then
424 425
  AC_DEFINE([BUILD_CLIENTS], [1], [Build the Wayland clients])

426
  PKG_CHECK_MODULES(CLIENT, [wayland-client >= $WAYLAND_PREREQ_VERSION cairo >= 1.10.0 xkbcommon wayland-cursor])
Armin K.'s avatar
Armin K. committed
427
  PKG_CHECK_MODULES(SERVER, [wayland-server])
428
  PKG_CHECK_MODULES(WESTON_INFO, [wayland-client >= $WAYLAND_PREREQ_VERSION])
429

430 431
  # Only check for cairo-egl if a GL or GLES renderer requested
  AS_IF([test "x$cairo_modules" = "xcairo-gl" -o "x$cairo_modules" = "xcairo-glesv2"], [
eucan's avatar
eucan committed
432
    PKG_CHECK_MODULES(CAIRO_EGL, [wayland-egl egl cairo-egl >= 1.11.3 $cairo_modules],
433 434 435
                      [have_cairo_egl=yes], [have_cairo_egl=no])
    AS_IF([test "x$have_cairo_egl" = "xyes"],
	  [AC_DEFINE([HAVE_CAIRO_EGL], [1], [Have cairo-egl])],
Armin K.'s avatar
Armin K. committed
436 437
	  [AC_ERROR([cairo-egl not used because $CAIRO_EGL_PKG_ERRORS])])],
  [have_cairo_egl=no])
438

439
  PKG_CHECK_MODULES(PANGO, [pangocairo pango glib-2.0 >= 2.36], [have_pango=yes], [have_pango=no])
440 441
fi

442 443 444 445 446 447 448
AC_ARG_ENABLE(resize-optimization,
              AS_HELP_STRING([--disable-resize-optimization],
                             [disable resize optimization allocating a big buffer in toytoolkit]),,
              enable_resize_optimization=yes)
AS_IF([test "x$enable_resize_optimization" = "xyes"],
      [AC_DEFINE([USE_RESIZE_POOL], [1], [Use resize memory pool as a performance optimization])])

Benjamin Franzke's avatar
Benjamin Franzke committed
449
AC_ARG_ENABLE(weston-launch, [  --enable-weston-launch],, enable_weston_launch=yes)
450 451
AM_CONDITIONAL(BUILD_WESTON_LAUNCH, test x$enable_weston_launch = xyes)
if test x$enable_weston_launch = xyes; then
452
  WESTON_SEARCH_LIBS([PAM], [pam], [pam_open_session], [have_pam=yes], [have_pam=no])
453
  if test x$have_pam = xno; then
Benjamin Franzke's avatar
Benjamin Franzke committed
454 455 456 457
    AC_ERROR([weston-launch requires pam])
  fi
fi

458 459
AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes")

Armin K.'s avatar
Armin K. committed
460 461 462
AM_CONDITIONAL(HAVE_CAIRO_GLESV2,
	       [test "x$have_cairo_egl" = "xyes" -a "x$cairo_modules" = "xcairo-glesv2" -a "x$enable_egl" = "xyes"])

463
AM_CONDITIONAL(BUILD_FULL_GL_CLIENTS,
464
	       test x$cairo_modules = "xcairo-gl" -a "x$have_cairo_egl" = "xyes" -a "x$enable_egl" = "xyes")
465

Pekka Paalanen's avatar
Pekka Paalanen committed
466 467 468
AM_CONDITIONAL(BUILD_SUBSURFACES_CLIENT,
	       [test '(' "x$have_cairo_egl" != "xyes" -o "x$cairo_modules" = "xcairo-glesv2" ')' -a "x$enable_simple_egl_clients" = "xyes"])

469 470
AM_CONDITIONAL(ENABLE_DESKTOP_SHELL, true)

471 472 473 474 475 476 477
AC_ARG_ENABLE(fullscreen-shell,
              AS_HELP_STRING([--disable-fullscreen-shell],
                             [do not build fullscreen-shell server plugin]),,
	      enable_fullscreen_shell=yes)
AM_CONDITIONAL(ENABLE_FULLSCREEN_SHELL,
	       test "x$enable_fullscreen_shell" = "xyes")

478 479 480 481
# CMS modules
AC_ARG_ENABLE(colord,
              AS_HELP_STRING([--disable-colord],
                             [do not build colord CMS support]),,
482
	      enable_colord=auto)
483
have_colord=no
484 485 486 487 488 489 490 491 492 493 494
if test "x$enable_colord" != "xno"; then
	PKG_CHECK_MODULES(COLORD,
			  colord >= 0.1.27,
			  have_colord=yes,
			  have_colord=no)
	if test "x$have_colord" = "xno" -a "x$enable_colord" = "xyes"; then
	  AC_MSG_ERROR([colord support explicitly requested, but colord couldn't be found])
	fi
	if test "x$have_colord" = "xyes"; then
	     enable_colord=yes
	fi
495
fi
496
AM_CONDITIONAL(ENABLE_COLORD, test "x$enable_colord" = "xyes")
497

David Herrmann's avatar
David Herrmann committed
498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519
# dbus support
AC_ARG_ENABLE(dbus,
              AS_HELP_STRING([--disable-dbus],
                             [do not build with dbus support]),,
              enable_dbus=auto)
if test "x$enable_dbus" != "xno"; then
        PKG_CHECK_MODULES(DBUS,
                          dbus-1 >= 1.6,
                          have_dbus=yes,
                          have_dbus=no)
        if test "x$have_dbus" = "xno" -a "x$enable_dbus" = "xyes"; then
                AC_MSG_ERROR([dbus support explicitly requested, but libdbus couldn't be found])
        fi
        if test "x$have_dbus" = "xyes"; then
                enable_dbus=yes
                AC_DEFINE([HAVE_DBUS], [1], [Build with dbus support])
        else
                enable_dbus=no
        fi
fi
AM_CONDITIONAL(ENABLE_DBUS, test "x$enable_dbus" = "xyes")

520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553
# systemd-login support
AC_ARG_ENABLE(systemd-login,
              AS_HELP_STRING([--enable-systemd-login],
                             [Enable logind support]),,
              enable_systemd_login=auto)
if test x$enable_systemd_login != xno -a x$have_dbus != xno; then
  PKG_CHECK_MODULES(SYSTEMD_LOGIN,
                    [libsystemd >= 209],
                    [have_systemd_login_209=yes;have_systemd_login=yes],
                    [have_systemd_login_209=no;have_systemd_login=no])

  # Older versions of systemd package systemd-login separately. Fall back on that
  AS_IF([test x$have_systemd_login != xyes],[
        PKG_CHECK_MODULES(SYSTEMD_LOGIN,
                          [libsystemd-login >= 198],
                          [have_systemd_login=yes],
                          [have_systemd_login=no])
        ])
else
  have_systemd_login=no
fi

if test "x$have_systemd_login" = "xno" -a "x$enable_systemd_login" = "xyes"; then
  AC_MSG_ERROR([systemd-login support explicitly enabled, but can't find libsystemd>=209, libsystemd-login or dbus])
fi

AS_IF([test "x$have_systemd_login" = "xyes"],
      [AC_DEFINE([HAVE_SYSTEMD_LOGIN], [1], [Have systemd-login])])
AM_CONDITIONAL(HAVE_SYSTEMD_LOGIN, test "x$have_systemd_login" = "xyes")

AS_IF([test "x$have_systemd_login_209" = "xyes"],
      [AC_DEFINE([HAVE_SYSTEMD_LOGIN_209], [1], [Have systemd-login >= 209])])


554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577
# Note that other features might want libxml2, or this feature might use
# alternative xml libraries at some point. Therefore the feature and
# pre-requisite concepts are split.
AC_ARG_ENABLE(junit_xml,
	      AS_HELP_STRING([--disable-junit-xml],
			     [do not build with JUnit XML output]),,
	      enable_junit_xml=auto)
if test "x$enable_junit_xml" != "xno"; then
	PKG_CHECK_MODULES(LIBXML2,
			  [libxml-2.0 >= 2.6],
			  have_libxml2=yes,
			  have_libxml2=no)
	if test "x$have_libxml2" = "xno" -a "x$enable_junit_xml" = "xyes"; then
		AC_MSG_ERROR([JUnit XML support explicitly requested, but libxml2 couldn't be found])
	fi
	if test "x$have_libxml2" = "xyes"; then
		enable_junit_xml=yes
		AC_DEFINE(ENABLE_JUNIT_XML, [1], [Build Weston with JUnit output support])
	else
		enable_junit_xml=no
	fi
fi
AM_CONDITIONAL(ENABLE_JUNIT_XML, test "x$enable_junit_xml" = "xyes")

578 579 580 581 582 583 584
# ivi-shell support
AC_ARG_ENABLE(ivi-shell,
              AS_HELP_STRING([--disable-ivi-shell],
                             [do not build ivi-shell server plugin and client]),,
	      enable_ivi_shell=yes)
AM_CONDITIONAL(ENABLE_IVI_SHELL, test "x$enable_ivi_shell" = "xyes")

585 586 587 588
AC_ARG_ENABLE(wcap-tools, [  --disable-wcap-tools],, enable_wcap_tools=yes)
AM_CONDITIONAL(BUILD_WCAP_TOOLS, test x$enable_wcap_tools = xyes)
if test x$enable_wcap_tools = xyes; then
  AC_DEFINE([BUILD_WCAP_TOOLS], [1], [Build the wcap tools])
589
  PKG_CHECK_MODULES(WCAP, [cairo])
590 591 592
  WCAP_LIBS="$WCAP_LIBS -lm"
fi

593 594
PKG_CHECK_MODULES(SETBACKLIGHT, [libudev libdrm], enable_setbacklight=yes, enable_setbacklight=no)
AM_CONDITIONAL(BUILD_SETBACKLIGHT, test "x$enable_setbacklight" = "xyes")
595

Dylan Noblesmith's avatar
Dylan Noblesmith committed
596
if test "x$GCC" = "xyes"; then
Pekka Paalanen's avatar
Pekka Paalanen committed
597
	GCC_CFLAGS="-Wall -Wextra -Wno-unused-parameter \
598 599
		-Wno-shift-negative-value -Wno-missing-field-initializers \
		-g -fvisibility=hidden \
600
		-Wstrict-prototypes -Wmissing-prototypes -Wsign-compare"
601 602 603
fi
AC_SUBST(GCC_CFLAGS)

604 605 606 607
AC_ARG_ENABLE(libunwind,
              AS_HELP_STRING([--disable-libunwind],
                             [Disable libunwind usage for backtraces]),,
              enable_libunwind=auto)
608
AM_CONDITIONAL(HAVE_LIBUNWIND, [test "x$enable_libunwind" = xyes])
609
have_libunwind=no
610 611 612 613 614 615 616 617 618 619 620 621 622 623
if test "x$enable_libunwind" != "xno"; then
        PKG_CHECK_MODULES(LIBUNWIND,
                          libunwind,
                          have_libunwind=yes,
                          have_libunwind=no)
        if test "x$have_libunwind" = "xno" -a "x$enable_libunwind" = "xyes"; then
          AC_MSG_ERROR([libunwind support explicitly requested, but libunwind couldn't be found])
        fi
        if test "x$have_libunwind" = "xyes"; then
             enable_libunwind=yes
             AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
        fi
fi

624

625 626 627 628 629 630 631
if test "x$WESTON_NATIVE_BACKEND" = "x"; then
	WESTON_NATIVE_BACKEND="drm-backend.so"
fi
AC_MSG_NOTICE([Weston's native backend: $WESTON_NATIVE_BACKEND])
AC_DEFINE_UNQUOTED([WESTON_NATIVE_BACKEND], ["$WESTON_NATIVE_BACKEND"],
		   [The default backend to load, if not wayland nor x11.])

632 633 634 635 636 637 638
if test "x$WESTON_SHELL_CLIENT" = "x"; then
	WESTON_SHELL_CLIENT="weston-desktop-shell"
fi
AC_MSG_NOTICE([Weston's default desktop shell client: $WESTON_SHELL_CLIENT])
AC_DEFINE_UNQUOTED([WESTON_SHELL_CLIENT], ["$WESTON_SHELL_CLIENT"],
		   [The default desktop shell client to load.])

639 640 641
AC_ARG_ENABLE(demo-clients-install,
              AS_HELP_STRING([--enable-demo-clients-install],
                             [Install demo clients built with weston]),,
642 643
			     enable_demo_clients_install=no)
AM_CONDITIONAL(INSTALL_DEMO_CLIENTS, [test "x$enable_demo_clients_install" = "xyes"])
644

645 646 647 648
AC_ARG_ENABLE(lcms,
              AS_HELP_STRING([--disable-lcms],
                             [Disable lcms support]),,
              enable_lcms=auto)
649
have_lcms=no
650 651 652 653 654 655 656 657 658 659 660 661
if test "x$enable_lcms" != "xno"; then
        PKG_CHECK_MODULES(LCMS,
                          lcms2,
                          have_lcms=yes,
                          have_lcms=no)
        if test "x$have_lcms" = "xno" -a "x$enable_lcms" = "xyes"; then
          AC_MSG_ERROR([lcms support explicitly requested, but lcms couldn't be found])
        fi
        if test "x$have_lcms" = "xyes"; then
                enable_lcms=yes
                AC_DEFINE(HAVE_LCMS, 1, [Have lcms support])
        fi
662
fi
663
AM_CONDITIONAL(HAVE_LCMS, [test "x$enable_lcms" = xyes])
664

665 666
AC_PATH_PROG([wayland_scanner], [wayland-scanner])
if test x$wayland_scanner = x; then
667 668
	PKG_CHECK_MODULES(WAYLAND_SCANNER, [wayland-scanner])
	wayland_scanner=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`
669
fi
670

671 672 673 674
AC_ARG_ENABLE(systemd_notify,
              AS_HELP_STRING([--enable-systemd-notify],
                             [Enables systemd notifications to
                              notify systemd about weston state
675 676 677 678
                              and update watchdog.
                              Also sockets provided by systemd
                              in case of socket-base activation
                              are added to wayland display]),,
679 680 681 682 683 684 685
              enable_systemd_notify=no)
AM_CONDITIONAL(SYSTEMD_NOTIFY_SUPPORT, test x$enable_systemd_notify = xyes)
if test "x$enable_systemd_notify" = "xyes"; then
  AC_DEFINE([SYSTEMD_NOTIFY_SUPPORT], [1], [Build the systemd sd_notify support])
  PKG_CHECK_MODULES(SYSTEMD_DAEMON, [libsystemd])
fi

Pekka Paalanen's avatar
Pekka Paalanen committed
686
AC_CONFIG_FILES([Makefile libweston/version.h compositor/weston.pc])
687

Giulio Camuffo's avatar
Giulio Camuffo committed
688 689
# AC_CONFIG_FILES needs the full name when running autoconf, so we need to use
# libweston_abi_version here, and outside [] because of m4 quoting rules
690
AC_CONFIG_FILES([libweston/libweston-]libweston_major_version[.pc:libweston/libweston.pc.in])
Quentin Glidic's avatar
Quentin Glidic committed
691
AC_CONFIG_FILES([libweston-desktop/libweston-desktop-]libweston_major_version[.pc:libweston-desktop/libweston-desktop.pc.in])
Giulio Camuffo's avatar
Giulio Camuffo committed
692

693 694
AM_CONDITIONAL([HAVE_GIT_REPO], [test -f $srcdir/.git/logs/HEAD])

695
AC_OUTPUT
Armin K.'s avatar
Armin K. committed
696 697 698 699 700 701 702 703

AC_MSG_RESULT([
	Native Backend			${WESTON_NATIVE_BACKEND}
	setuid Install			${enable_setuid_install}

	Cairo Renderer			${with_cairo}
	EGL				${enable_egl}
	libxkbcommon			${enable_xkbcommon}
704
	xcb_xkb				${have_xcb_xkb}
Armin K.'s avatar
Armin K. committed
705
	XWayland			${enable_xwayland}
David Herrmann's avatar
David Herrmann committed
706
	dbus				${enable_dbus}
Armin K.'s avatar
Armin K. committed
707

708 709
	ivi-shell			${enable_ivi_shell}

Armin K.'s avatar
Armin K. committed
710
	Build wcap utility		${enable_wcap_tools}
711
	Build Fullscreen Shell		${enable_fullscreen_shell}
712
	Enable developer documentation	${enable_devdocs}
Armin K.'s avatar
Armin K. committed
713 714

	weston-launch utility		${enable_weston_launch}
David Herrmann's avatar
David Herrmann committed
715
	systemd-login support		${have_systemd_login}
716
	systemd notify support		${enable_systemd_notify}
Armin K.'s avatar
Armin K. committed
717 718 719 720 721 722 723

	DRM Compositor			${enable_drm_compositor}
	X11 Compositor			${enable_x11_compositor}
	Wayland Compositor		${enable_wayland_compositor}
	Headless Compositor		${enable_headless_compositor}
	FBDEV Compositor		${enable_fbdev_compositor}
	RDP Compositor			${enable_rdp_compositor}
Jason Ekstrand's avatar
Jason Ekstrand committed
724
	Screen Sharing			${enable_screen_sharing}
725
	JUnit XML output		${enable_junit_xml}
Armin K.'s avatar
Armin K. committed
726 727 728 729 730 731

	Build Clients			${enable_clients}
	Build EGL Clients		${have_cairo_egl}
	Build Simple Clients		${enable_simple_clients}
	Build Simple EGL Clients	${enable_simple_egl_clients}

732
	Install Demo Clients		${enable_demo_clients_install}
Armin K.'s avatar
Armin K. committed
733 734 735

	Colord Support			${have_colord}
	LCMS2 Support			${have_lcms}
736
	libjpeg Support			${have_jpeglib}
Armin K.'s avatar
Armin K. committed
737 738
	libwebp Support			${have_webp}
	libunwind Support		${have_libunwind}
739
	VA H.264 encoding Support	${have_libva}
Armin K.'s avatar
Armin K. committed
740
])