configure.ac 31 KB
Newer Older
1
m4_define([weston_major_version], [5])
2
m4_define([weston_minor_version], [0])
3
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], [5])
7
m4_define([libweston_minor_version], [0])
8
m4_define([libweston_patch_version], [90])
9

10
AC_PREREQ([2.64])
11
AC_INIT([weston],
12
        [weston_version],
13
        [https://gitlab.freedesktop.org/wayland/weston/issues/],
14
        [weston],
15
        [https://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 39

save_CFLAGS="$CFLAGS"
export CFLAGS="$CFLAGS -Werror"
40
AC_HEADER_MAJOR
41
CFLAGS="$save_CFLAGS"
42

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

Kristian H. Kristensen's avatar
Kristian H. Kristensen committed
45
AM_SILENT_RULES([yes])
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 74 75 76 77 78
# 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.])
		 ])
       ])

79 80
# Check for programs
AC_PROG_CC
81
AC_PROG_SED
82

83 84
# Initialize libtool
LT_PREREQ([2.2])
85
LT_INIT([disable-static])
86

87 88
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@:>@])
89 90
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@:>@])
91

92 93
PKG_PROG_PKG_CONFIG()

94 95 96
# Check pthread
AX_PTHREAD

97 98
# Check for dlsym instead of dlopen because ASAN hijacks the latter
WESTON_SEARCH_LIBS([DL], [dl], [dlsym])
99

100
# In old glibc versions (< 2.17) clock_gettime() and clock_getres() are in librt
101
WESTON_SEARCH_LIBS([CLOCK_GETTIME], [rt], [clock_gettime])
102
WESTON_SEARCH_LIBS([CLOCK_GETRES], [rt], [clock_getres])
103

104 105 106 107 108 109 110 111 112
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>]])
113

114
AC_CHECK_FUNCS([mkostemp strchrnul initgroups posix_fallocate])
115

116 117
# check for libdrm as a build-time dependency only
# libdrm 2.4.30 introduced drm_fourcc.h.
118
PKG_CHECK_MODULES(LIBDRM, [libdrm >= 2.4.68], [], [AC_MSG_ERROR([
119 120 121 122 123
     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.])])

124
COMPOSITOR_MODULES="wayland-server >= $WAYLAND_PREREQ_VERSION pixman-1 >= 0.25.2"
125

126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
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")

145
AC_ARG_ENABLE(egl, [  --disable-egl],,
146 147 148 149
              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
150
	PKG_CHECK_MODULES(EGL, [egl glesv2])
151
	AC_CHECK_HEADERS([linux/sync_file.h])
152
fi
153

154 155 156 157 158
COMPOSITOR_MODULES="$COMPOSITOR_MODULES xkbcommon >= 0.3.0"

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)
159

160 161
AC_ARG_ENABLE(setuid-install, [  --enable-setuid-install],,
	      enable_setuid_install=yes)
162
AM_CONDITIONAL(ENABLE_SETUID_INSTALL, test x$enable_setuid_install = xyes)
163 164


165 166
AC_ARG_ENABLE(xwayland, [  --enable-xwayland],,
	      enable_xwayland=yes)
167 168
AC_ARG_ENABLE(xwayland-test, [  --enable-xwayland-test],,
              enable_xwayland_test=yes)
169
AM_CONDITIONAL(ENABLE_XWAYLAND, test x$enable_xwayland = xyes)
170
AM_CONDITIONAL(ENABLE_XWAYLAND_TEST, test x$enable_xwayland = xyes -a x$enable_xwayland_test = xyes)
171
if test x$enable_xwayland = xyes; then
172
  PKG_CHECK_MODULES([XWAYLAND], xcb xcb-xfixes xcb-composite xcb-shape xcursor cairo-xcb)
173
  AC_DEFINE([BUILD_XWAYLAND], [1], [Build the X server launcher])
174 175 176

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

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

192
  PKG_CHECK_MODULES(X11_COMPOSITOR_XKB, [xcb-xkb >= 1.9],
193 194 195 196 197 198 199
		    [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])
200 201 202 203
  AC_DEFINE([BUILD_X11_COMPOSITOR], [1], [Build the X11 compositor])
fi


204 205
AC_ARG_ENABLE(drm-compositor, [  --enable-drm-compositor],,
	      enable_drm_compositor=yes)
206 207
AM_CONDITIONAL(ENABLE_DRM_COMPOSITOR, test x$enable_drm_compositor = xyes)
if test x$enable_drm_compositor = xyes; then
208
  AC_DEFINE([BUILD_DRM_COMPOSITOR], [1], [Build the DRM compositor])
209
  PKG_CHECK_MODULES(DRM_COMPOSITOR, [libudev >= 136 libdrm >= 2.4.30 gbm])
210 211 212
  PKG_CHECK_MODULES(DRM_COMPOSITOR_MODIFIERS, [libdrm >= 2.4.71],
		    [AC_DEFINE([HAVE_DRM_ADDFB2_MODIFIERS], 1, [libdrm supports modifiers])],
		    [AC_MSG_WARN([libdrm does not support AddFB2 with modifiers])])
213
  PKG_CHECK_MODULES(DRM_COMPOSITOR_ATOMIC, [libdrm >= 2.4.78],
214 215
		    [AC_DEFINE([HAVE_DRM_ATOMIC], 1, [libdrm supports atomic API])],
		    [AC_MSG_WARN([libdrm does not support atomic modesetting, will omit that capability])])
216 217 218
  PKG_CHECK_MODULES(DRM_COMPOSITOR_FORMATS_BLOB, [libdrm >= 2.4.83],
		    [AC_DEFINE([HAVE_DRM_FORMATS_BLOB], 1, [libdrm supports modifier advertisement])],
		    [AC_MSG_WARN([libdrm does not support modifier advertisement])])
219 220 221
  PKG_CHECK_MODULES(DRM_COMPOSITOR_GBM_MODIFIERS, [gbm >= 17.1],
		    [AC_DEFINE([HAVE_GBM_MODIFIERS], 1, [GBM supports modifiers])],
		    [AC_MSG_WARN([GBM does not support modifiers])])
222 223 224
  PKG_CHECK_MODULES(DRM_COMPOSITOR_GBM, [gbm >= 17.2],
		    [AC_DEFINE([HAVE_GBM_FD_IMPORT], 1, [gbm supports import with modifiers])],
		    [AC_MSG_WARN([GBM does not support dmabuf import, will omit that capability])])
225 226
fi

227 228 229 230 231 232 233 234 235 236
AC_ARG_ENABLE(remoting, [  --enable-remoting],,
              enable_remoting=no)
AM_CONDITIONAL(ENABLE_REMOTING, test x$enable_remoting = xyes)
if test x$enable_remoting = xyes; then
  if test x$enable_drm_compositor != xyes; then
    AC_MSG_WARN([The remoting-plugin.so module requires the DRM backend.])
  fi
  PKG_CHECK_MODULES(REMOTING_GST, [gstreamer-1.0 gstreamer-allocators-1.0 gstreamer-app-1.0 gstreamer-video-1.0])
fi

237

238
PKG_CHECK_MODULES(LIBEVDEV, [libevdev])
239
PKG_CHECK_MODULES(LIBINPUT_BACKEND, [libinput >= 0.8.0])
240
PKG_CHECK_MODULES(COMPOSITOR, [$COMPOSITOR_MODULES])
241

242 243 244 245
# XXX: For minor version 2 of zwp_linux_explicit_synchronization_v1, we
# actually need a development version after 1.17, but there is no way to
# express such a requirement at the moment.
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.17],
246 247 248
		  [ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)

249 250
AC_ARG_ENABLE(wayland-compositor, [  --enable-wayland-compositor],,
	      enable_wayland_compositor=yes)
251
AM_CONDITIONAL(ENABLE_WAYLAND_COMPOSITOR,
252 253
	       test x$enable_wayland_compositor = xyes)
if test x$enable_wayland_compositor = xyes; then
254 255
  AC_DEFINE([BUILD_WAYLAND_COMPOSITOR], [1],
	    [Build the Wayland (nested) compositor])
256 257 258 259
  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
260 261
fi

Pekka Paalanen's avatar
Pekka Paalanen committed
262

263 264 265 266
AC_ARG_ENABLE(headless-compositor, [  --enable-headless-compositor],,
	      enable_headless_compositor=yes)
AM_CONDITIONAL(ENABLE_HEADLESS_COMPOSITOR,
	       test x$enable_headless_compositor = xyes)
267 268 269
if test x$enable_headless_compositor = xyes; then
  AC_DEFINE([BUILD_HEADLESS_COMPOSITOR], [1], [Build the headless compositor])
fi
270 271


272 273 274 275 276 277
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])
278
  PKG_CHECK_MODULES([FBDEV_COMPOSITOR], [libudev >= 136])
279 280
])

David Fort's avatar
David Fort committed
281 282 283 284 285
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
286
  AC_DEFINE([BUILD_RDP_COMPOSITOR], [1], [Build the RDP compositor])
287 288 289 290
  PKG_CHECK_MODULES(RDP_COMPOSITOR, [freerdp2 >= 2.0.0],
    [],
    [PKG_CHECK_MODULES(RDP_COMPOSITOR, [freerdp >= 1.1.0],[])]
  )
291 292
  SAVED_CPPFLAGS="$CPPFLAGS"
  CPPFLAGS="$CPPFLAGS $RDP_COMPOSITOR_CFLAGS"
293

294
  AC_CHECK_HEADERS([freerdp/version.h])
295 296 297 298 299 300 301
  AC_CHECK_MEMBER([SURFACE_BITS_COMMAND.bmp],
	[AC_DEFINE([HAVE_SURFACE_BITS_BMP], [1], [SURFACE_BITS_CMD has bmp field])],
	[],
	[[#include <freerdp/update.h>]]
  )


302
  CPPFLAGS="$SAVED_CPPFLAGS"
David Fort's avatar
David Fort committed
303
fi
304

305
AC_ARG_ENABLE([screen-sharing], [  --enable-screen-sharing],,
Jason Ekstrand's avatar
Jason Ekstrand committed
306 307 308 309 310 311 312 313 314 315 316
              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

317 318 319 320 321 322 323 324 325 326
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"
327
	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.])
328 329 330
else
if test "x$with_cairo" = "xglesv2"; then
	cairo_modules="cairo-glesv2"
331
	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.])
332 333 334 335 336 337 338
else
	AC_ERROR([Unknown cairo renderer requested])
fi
fi
fi

# Included for legacy compat
339 340
AC_ARG_WITH(cairo-glesv2,
            AS_HELP_STRING([--with-cairo-glesv2],
341
                           [Use GLESv2 cairo]))
342 343
if test "x$with_cairo_glesv2" = "xyes"; then
  cairo_modules="cairo-glesv2"
Armin K.'s avatar
Armin K. committed
344
  with_cairo="glesv2"
345 346 347 348
fi

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

351 352
PKG_CHECK_MODULES(PIXMAN, [pixman-1])
PKG_CHECK_MODULES(PNG, [libpng])
353

354 355 356 357
AC_ARG_WITH([jpeg],
            AS_HELP_STRING([--without-jpeg],
                           [Use jpeglib for JPEG decoding support [default=auto]]))
AS_IF([test "x$with_jpeg" != "xno"],
358
      [WESTON_SEARCH_LIBS([JPEG], [jpeg], [jpeg_CreateDecompress], [have_jpeglib=yes], [have_jpeglib=no])],
359 360
      [have_jpeglib=no])
AS_IF([test "x$have_jpeglib" = "xyes"],
361
      [AC_DEFINE([HAVE_JPEG], [1], [Have jpeglib])],
362 363 364
      [AS_IF([test "x$with_jpeg" = "xyes"],
             [AC_MSG_ERROR([JPEG support explicitly requested, but jpeglib couldn't be found])])])

365 366 367 368 369 370
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])
371
AS_IF([test "x$have_webp" = "xyes"],
372 373 374
      [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])])])
375

376 377
AC_ARG_ENABLE(vaapi-recorder, [  --enable-vaapi-recorder],,
	      enable_vaapi_recorder=auto)
378
have_libva=no
379 380 381 382 383 384
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
385 386
  AS_IF([test "x$have_libva" = "xyes"],
        [AC_DEFINE([BUILD_VAAPI_RECORDER], [1], [Build the vaapi recorder])])
387
fi
388
AM_CONDITIONAL(ENABLE_VAAPI_RECORDER, test "x$have_libva" = xyes)
389

390
PKG_CHECK_MODULES(CAIRO, [cairo])
391

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

394 395 396 397 398
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")
399
if test x$enable_simple_clients = xyes; then
400 401 402 403 404 405
  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]),,
406 407 408
              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
409
  PKG_CHECK_MODULES(SIMPLE_EGL_CLIENT,
eucan's avatar
eucan committed
410
                    [egl glesv2 wayland-client wayland-egl wayland-cursor])
411
fi
412

413 414 415 416 417
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
418
  PKG_CHECK_MODULES(SIMPLE_DMABUF_DRM_CLIENT, [wayland-client libdrm], [have_simple_dmabuf_libs=yes],
419 420 421 422 423 424 425 426
		    [have_simple_dmabuf_libs=no])

  PKG_CHECK_MODULES(LIBDRM_PLATFORM_FREEDRENO, [libdrm_freedreno],
      AC_DEFINE([HAVE_LIBDRM_FREEDRENO], [1], [Build freedreno dmabuf client]) have_simple_dmabuf_drm_client=yes,
      [true])
  PKG_CHECK_MODULES(LIBDRM_PLATFORM_INTEL, [libdrm_intel],
      AC_DEFINE([HAVE_LIBDRM_INTEL], [1], [Build intel dmabuf client]) have_simple_dmabuf_drm_client=yes,
      [true])
427 428 429
  PKG_CHECK_MODULES(LIBDRM_PLATFORM_ETNAVIV, [libdrm_etnaviv],
      AC_DEFINE([HAVE_LIBDRM_ETNAVIV], [1], [Build etnaviv dmabuf client]) have_simple_dmabuf_drm_client=yes,
      [true])
430 431 432 433

  if test "x$have_simple_dmabuf_drm_client" != "xyes" -o \
	  "x$have_simple_dmabuf_libs" = "xno" && \
     test "x$enable_simple_dmabuf_drm_client" = "xyes"; then
434
    AC_MSG_ERROR([DRM dmabuf client explicitly enabled, but none of libdrm_{intel,freedreno,etnaviv} found])
435 436
  fi

437
  if test "x$have_simple_dmabuf_drm_client" = "xyes" -a "x$have_simple_dmabuf_libs" = "xyes"; then
438
    enable_simple_dmabuf_drm_client="yes"
439
  fi
440
fi
441
AM_CONDITIONAL(BUILD_SIMPLE_DMABUF_DRM_CLIENT, test "x$enable_simple_dmabuf_drm_client" = "xyes")
442

443 444 445 446 447 448 449 450 451 452 453 454 455 456
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")

457 458 459 460 461 462 463 464 465 466 467 468 469 470 471
AC_ARG_ENABLE(simple-dmabuf-egl-client,
              AS_HELP_STRING([--disable-simple-dmabuf-egl-client],
                             [do not build the simple dmabuf egl client]),,
              enable_simple_dmabuf_egl_client="auto")
if ! test "x$enable_simple_dmabuf_egl_client" = "xno"; then
  PKG_CHECK_MODULES(SIMPLE_DMABUF_EGL_CLIENT, [wayland-client libdrm gbm egl glesv2],
		    [have_simple_dmabuf_egl_client=yes], [have_simple_dmabuf_egl_client=no])

  if test "x$have_simple_dmabuf_egl_client" = "xno" -a "x$enable_simple_dmabuf_egl_client" = "xyes"; then
    AC_MSG_ERROR([EGL dmabuf client explicitly enabled, but libdrm/egl/glev2 couldn't be found])
  fi
  enable_simple_dmabuf_egl_client="$have_simple_dmabuf_egl_client"
fi
AM_CONDITIONAL(BUILD_SIMPLE_DMABUF_EGL_CLIENT, test "x$enable_simple_dmabuf_egl_client" = "xyes")

472
AC_ARG_ENABLE(clients, [  --enable-clients],, enable_clients=yes)
473
AM_CONDITIONAL(BUILD_CLIENTS, test x$enable_clients = xyes)
474
have_cairo_egl=no
475
if test x$enable_clients = xyes; then
476 477
  AC_DEFINE([BUILD_CLIENTS], [1], [Build the Wayland clients])

478
  PKG_CHECK_MODULES(CLIENT, [wayland-client >= $WAYLAND_PREREQ_VERSION cairo >= 1.10.0 xkbcommon wayland-cursor])
Armin K.'s avatar
Armin K. committed
479
  PKG_CHECK_MODULES(SERVER, [wayland-server])
480
  PKG_CHECK_MODULES(WESTON_INFO, [wayland-client >= $WAYLAND_PREREQ_VERSION])
481

482 483
  # 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
484
    PKG_CHECK_MODULES(CAIRO_EGL, [wayland-egl egl cairo-egl >= 1.11.3 $cairo_modules],
485 486 487
                      [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
488 489
	  [AC_ERROR([cairo-egl not used because $CAIRO_EGL_PKG_ERRORS])])],
  [have_cairo_egl=no])
490

491
  PKG_CHECK_MODULES(PANGO, [pangocairo pango glib-2.0 >= 2.36], [have_pango=yes], [have_pango=no])
492 493
fi

494 495 496 497 498 499 500
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
501
AC_ARG_ENABLE(weston-launch, [  --enable-weston-launch],, enable_weston_launch=yes)
502 503
AM_CONDITIONAL(BUILD_WESTON_LAUNCH, test x$enable_weston_launch = xyes)
if test x$enable_weston_launch = xyes; then
504
  WESTON_SEARCH_LIBS([PAM], [pam], [pam_open_session], [have_pam=yes], [have_pam=no])
505
  if test x$have_pam = xno; then
Benjamin Franzke's avatar
Benjamin Franzke committed
506 507 508 509
    AC_ERROR([weston-launch requires pam])
  fi
fi

510
AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes")
511
if test "x$have_pango" = "xyes"; then
512
  AC_DEFINE([HAVE_PANGO], [1], [Have pango])
513
fi
514

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

518
AM_CONDITIONAL(BUILD_FULL_GL_CLIENTS,
519
	       test x$cairo_modules = "xcairo-gl" -a "x$have_cairo_egl" = "xyes" -a "x$enable_egl" = "xyes")
520

521 522 523
AM_CONDITIONAL(BUILD_SUBSURFACES_CLIENT,
	       [test '(' "x$have_cairo_egl" != "xyes" -o "x$cairo_modules" = "xcairo-glesv2" ')' -a "x$enable_simple_egl_clients" = "xyes"])

524 525
AM_CONDITIONAL(ENABLE_DESKTOP_SHELL, true)

526 527 528 529 530 531 532
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")

533 534 535 536
# CMS modules
AC_ARG_ENABLE(colord,
              AS_HELP_STRING([--disable-colord],
                             [do not build colord CMS support]),,
537
	      enable_colord=auto)
538
have_colord=no
539 540 541 542 543 544 545 546 547 548 549
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
550
fi
551
AM_CONDITIONAL(ENABLE_COLORD, test "x$enable_colord" = "xyes")
552

David Rheinsberg's avatar
David Rheinsberg committed
553 554 555 556 557
# dbus support
AC_ARG_ENABLE(dbus,
              AS_HELP_STRING([--disable-dbus],
                             [do not build with dbus support]),,
              enable_dbus=auto)
558
have_dbus=no
David Rheinsberg's avatar
David Rheinsberg committed
559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575
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")

576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609
# 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])])


610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633
# 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")

634 635 636 637 638 639 640
# 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")

641 642 643 644
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])
645
  PKG_CHECK_MODULES(WCAP, [cairo])
646 647 648
  WCAP_LIBS="$WCAP_LIBS -lm"
fi

649 650
PKG_CHECK_MODULES(SETBACKLIGHT, [libudev libdrm], enable_setbacklight=yes, enable_setbacklight=no)
AM_CONDITIONAL(BUILD_SETBACKLIGHT, test "x$enable_setbacklight" = "xyes")
651

652
if test "x$GCC" = "xyes"; then
653
	GCC_CFLAGS="-Wall -Wextra -Wno-unused-parameter \
654 655
		-Wno-shift-negative-value -Wno-missing-field-initializers \
		-g -fvisibility=hidden \
656
		-Wstrict-prototypes -Wmissing-prototypes -Wsign-compare"
657 658 659
fi
AC_SUBST(GCC_CFLAGS)

660

661 662 663 664 665 666 667
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.])

668 669 670 671 672 673 674
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.])

675 676 677
AC_ARG_ENABLE(demo-clients-install,
              AS_HELP_STRING([--enable-demo-clients-install],
                             [Install demo clients built with weston]),,
678 679
			     enable_demo_clients_install=no)
AM_CONDITIONAL(INSTALL_DEMO_CLIENTS, [test "x$enable_demo_clients_install" = "xyes"])
680

681 682 683 684
AC_ARG_ENABLE(lcms,
              AS_HELP_STRING([--disable-lcms],
                             [Disable lcms support]),,
              enable_lcms=auto)
685
have_lcms=no
686 687 688 689 690 691 692 693 694 695 696 697
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
698
fi
699
AM_CONDITIONAL(HAVE_LCMS, [test "x$enable_lcms" = xyes])
700

701 702
AC_PATH_PROG([wayland_scanner], [wayland-scanner])
if test x$wayland_scanner = x; then
703 704
	PKG_CHECK_MODULES(WAYLAND_SCANNER, [wayland-scanner])
	wayland_scanner=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`
705
fi
706

707 708 709 710
AC_ARG_ENABLE(systemd_notify,
              AS_HELP_STRING([--enable-systemd-notify],
                             [Enables systemd notifications to
                              notify systemd about weston state
711 712 713 714
                              and update watchdog.
                              Also sockets provided by systemd
                              in case of socket-base activation
                              are added to wayland display]),,
715 716 717 718 719 720 721
              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
722
AC_CONFIG_FILES([Makefile libweston/version.h compositor/weston.pc])
723

Giulio Camuffo's avatar
Giulio Camuffo committed
724 725
# 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
726
AC_CONFIG_FILES([libweston/libweston-]libweston_major_version[.pc:libweston/libweston.pc.in])
727
AC_CONFIG_FILES([libweston/libweston-]libweston_major_version[-uninstalled.pc:libweston/libweston-uninstalled.pc.in])
728
AC_CONFIG_FILES([libweston/libweston-]libweston_major_version[-protocols.pc:libweston/libweston-protocols.pc.in])
Quentin Glidic's avatar
Quentin Glidic committed
729
AC_CONFIG_FILES([libweston-desktop/libweston-desktop-]libweston_major_version[.pc:libweston-desktop/libweston-desktop.pc.in])
730
AC_CONFIG_FILES([libweston-desktop/libweston-desktop-]libweston_major_version[-uninstalled.pc:libweston-desktop/libweston-desktop-uninstalled.pc.in])
Giulio Camuffo's avatar
Giulio Camuffo committed
731

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

734
AC_OUTPUT
Armin K.'s avatar
Armin K. committed
735 736 737 738 739 740 741

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

	Cairo Renderer			${with_cairo}
	EGL				${enable_egl}
742
	xcb_xkb				${have_xcb_xkb}
Armin K.'s avatar
Armin K. committed
743
	XWayland			${enable_xwayland}
David Rheinsberg's avatar
David Rheinsberg committed
744
	dbus				${enable_dbus}
Armin K.'s avatar
Armin K. committed
745

746 747
	ivi-shell			${enable_ivi_shell}

Armin K.'s avatar
Armin K. committed
748
	Build wcap utility		${enable_wcap_tools}
749
	Build Fullscreen Shell		${enable_fullscreen_shell}
750
	Enable developer documentation	${enable_devdocs}
Armin K.'s avatar
Armin K. committed
751 752

	weston-launch utility		${enable_weston_launch}
753
	systemd-login support		${have_systemd_login}
754
	systemd notify support		${enable_systemd_notify}
Armin K.'s avatar
Armin K. committed
755 756

	DRM Compositor			${enable_drm_compositor}
757
	Remoting			${enable_remoting}
Armin K.'s avatar
Armin K. committed
758 759 760 761 762
	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
763
	Screen Sharing			${enable_screen_sharing}
764
	JUnit XML output		${enable_junit_xml}
Armin K.'s avatar
Armin K. committed
765 766 767 768 769 770

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

771
	Install Demo Clients		${enable_demo_clients_install}
Armin K.'s avatar
Armin K. committed
772 773 774

	Colord Support			${have_colord}
	LCMS2 Support			${have_lcms}
775
	libjpeg Support			${have_jpeglib}
Armin K.'s avatar
Armin K. committed
776
	libwebp Support			${have_webp}
777
	VA H.264 encoding Support	${have_libva}
Armin K.'s avatar
Armin K. committed
778
])