configure.ac 30 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

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])
150 151
	PKG_CHECK_MODULES(EGL, [egl glesv2])
        PKG_CHECK_MODULES([EGL_TESTS], [egl glesv2 wayland-client wayland-egl])
152
	AC_CHECK_HEADERS([linux/sync_file.h])
153
fi
154

155 156 157 158 159
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)
160

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


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

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

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

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


205 206
AC_ARG_ENABLE(drm-compositor, [  --enable-drm-compositor],,
	      enable_drm_compositor=yes)
207 208
AM_CONDITIONAL(ENABLE_DRM_COMPOSITOR, test x$enable_drm_compositor = xyes)
if test x$enable_drm_compositor = xyes; then
209
  AC_DEFINE([BUILD_DRM_COMPOSITOR], [1], [Build the DRM compositor])
210
  PKG_CHECK_MODULES(DRM_COMPOSITOR, [libudev >= 136 libdrm >= 2.4.30 gbm])
211 212 213
  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])])
214
  PKG_CHECK_MODULES(DRM_COMPOSITOR_ATOMIC, [libdrm >= 2.4.78],
215 216
		    [AC_DEFINE([HAVE_DRM_ATOMIC], 1, [libdrm supports atomic API])],
		    [AC_MSG_WARN([libdrm does not support atomic modesetting, will omit that capability])])
217 218 219
  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])])
220 221 222
  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])])
223 224 225
  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])])
226 227
fi

228 229 230 231 232 233 234 235 236 237
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

238

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

242
PKG_CHECK_MODULES(WAYLAND_PROTOCOLS, [wayland-protocols >= 1.14],
243 244 245
		  [ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`])
AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)

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

Pekka Paalanen's avatar
Pekka Paalanen committed
259

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


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

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

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


299
  CPPFLAGS="$SAVED_CPPFLAGS"
David Fort's avatar
David Fort committed
300
fi
301

302
AC_ARG_ENABLE([screen-sharing], [  --enable-screen-sharing],,
303 304 305 306 307 308 309 310 311 312 313
              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

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

# Included for legacy compat
336 337
AC_ARG_WITH(cairo-glesv2,
            AS_HELP_STRING([--with-cairo-glesv2],
338
                           [Use GLESv2 cairo]))
339 340
if test "x$with_cairo_glesv2" = "xyes"; then
  cairo_modules="cairo-glesv2"
341
  with_cairo="glesv2"
342 343 344 345
fi

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

348 349
PKG_CHECK_MODULES(PIXMAN, [pixman-1])
PKG_CHECK_MODULES(PNG, [libpng])
350

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

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

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

387
PKG_CHECK_MODULES(CAIRO, [cairo])
388

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

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

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

  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
431
    AC_MSG_ERROR([DRM dmabuf client explicitly enabled, but none of libdrm_{intel,freedreno,etnaviv} found])
432 433
  fi

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

440 441 442 443 444 445 446 447 448 449 450 451 452 453
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")

454
AC_ARG_ENABLE(clients, [  --enable-clients],, enable_clients=yes)
455
AM_CONDITIONAL(BUILD_CLIENTS, test x$enable_clients = xyes)
456
have_cairo_egl=no
457
if test x$enable_clients = xyes; then
458 459
  AC_DEFINE([BUILD_CLIENTS], [1], [Build the Wayland clients])

460
  PKG_CHECK_MODULES(CLIENT, [wayland-client >= $WAYLAND_PREREQ_VERSION cairo >= 1.10.0 xkbcommon wayland-cursor])
461
  PKG_CHECK_MODULES(SERVER, [wayland-server])
462
  PKG_CHECK_MODULES(WESTON_INFO, [wayland-client >= $WAYLAND_PREREQ_VERSION])
463

464 465
  # 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"], [
466
    PKG_CHECK_MODULES(CAIRO_EGL, [wayland-egl egl cairo-egl >= 1.11.3 $cairo_modules],
467 468 469
                      [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])],
470 471
	  [AC_ERROR([cairo-egl not used because $CAIRO_EGL_PKG_ERRORS])])],
  [have_cairo_egl=no])
472

473
  PKG_CHECK_MODULES(PANGO, [pangocairo pango glib-2.0 >= 2.36], [have_pango=yes], [have_pango=no])
474 475
fi

476 477 478 479 480 481 482
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])])

483
AC_ARG_ENABLE(weston-launch, [  --enable-weston-launch],, enable_weston_launch=yes)
484 485
AM_CONDITIONAL(BUILD_WESTON_LAUNCH, test x$enable_weston_launch = xyes)
if test x$enable_weston_launch = xyes; then
486
  WESTON_SEARCH_LIBS([PAM], [pam], [pam_open_session], [have_pam=yes], [have_pam=no])
487
  if test x$have_pam = xno; then
488 489 490 491
    AC_ERROR([weston-launch requires pam])
  fi
fi

492
AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes")
493
if test "x$have_pango" = "xyes"; then
494
  AC_DEFINE([HAVE_PANGO], [1], [Have pango])
495
fi
496

497 498 499
AM_CONDITIONAL(HAVE_CAIRO_GLESV2,
	       [test "x$have_cairo_egl" = "xyes" -a "x$cairo_modules" = "xcairo-glesv2" -a "x$enable_egl" = "xyes"])

500
AM_CONDITIONAL(BUILD_FULL_GL_CLIENTS,
501
	       test x$cairo_modules = "xcairo-gl" -a "x$have_cairo_egl" = "xyes" -a "x$enable_egl" = "xyes")
502

503 504 505
AM_CONDITIONAL(BUILD_SUBSURFACES_CLIENT,
	       [test '(' "x$have_cairo_egl" != "xyes" -o "x$cairo_modules" = "xcairo-glesv2" ')' -a "x$enable_simple_egl_clients" = "xyes"])

506 507
AM_CONDITIONAL(ENABLE_DESKTOP_SHELL, true)

508 509 510 511 512 513 514
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")

515 516 517 518
# CMS modules
AC_ARG_ENABLE(colord,
              AS_HELP_STRING([--disable-colord],
                             [do not build colord CMS support]),,
519
	      enable_colord=auto)
520
have_colord=no
521 522 523 524 525 526 527 528 529 530 531
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
532
fi
533
AM_CONDITIONAL(ENABLE_COLORD, test "x$enable_colord" = "xyes")
534

535 536 537 538 539
# dbus support
AC_ARG_ENABLE(dbus,
              AS_HELP_STRING([--disable-dbus],
                             [do not build with dbus support]),,
              enable_dbus=auto)
540
have_dbus=no
541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557
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")

558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591
# 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])])


592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615
# 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")

616 617 618 619 620 621 622
# 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")

623 624 625 626
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])
627
  PKG_CHECK_MODULES(WCAP, [cairo])
628 629 630
  WCAP_LIBS="$WCAP_LIBS -lm"
fi

631 632
PKG_CHECK_MODULES(SETBACKLIGHT, [libudev libdrm], enable_setbacklight=yes, enable_setbacklight=no)
AM_CONDITIONAL(BUILD_SETBACKLIGHT, test "x$enable_setbacklight" = "xyes")
633

634
if test "x$GCC" = "xyes"; then
635
	GCC_CFLAGS="-Wall -Wextra -Wno-unused-parameter \
636 637
		-Wno-shift-negative-value -Wno-missing-field-initializers \
		-g -fvisibility=hidden \
638
		-Wstrict-prototypes -Wmissing-prototypes -Wsign-compare"
639 640 641
fi
AC_SUBST(GCC_CFLAGS)

642

643 644 645 646 647 648 649
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.])

650 651 652 653 654 655 656
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.])

657 658 659
AC_ARG_ENABLE(demo-clients-install,
              AS_HELP_STRING([--enable-demo-clients-install],
                             [Install demo clients built with weston]),,
660 661
			     enable_demo_clients_install=no)
AM_CONDITIONAL(INSTALL_DEMO_CLIENTS, [test "x$enable_demo_clients_install" = "xyes"])
662

663 664 665 666
AC_ARG_ENABLE(lcms,
              AS_HELP_STRING([--disable-lcms],
                             [Disable lcms support]),,
              enable_lcms=auto)
667
have_lcms=no
668 669 670 671 672 673 674 675 676 677 678 679
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
680
fi
681
AM_CONDITIONAL(HAVE_LCMS, [test "x$enable_lcms" = xyes])
682

683 684
AC_PATH_PROG([wayland_scanner], [wayland-scanner])
if test x$wayland_scanner = x; then
685 686
	PKG_CHECK_MODULES(WAYLAND_SCANNER, [wayland-scanner])
	wayland_scanner=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`
687
fi
688

689 690 691 692
AC_ARG_ENABLE(systemd_notify,
              AS_HELP_STRING([--enable-systemd-notify],
                             [Enables systemd notifications to
                              notify systemd about weston state
693 694 695 696
                              and update watchdog.
                              Also sockets provided by systemd
                              in case of socket-base activation
                              are added to wayland display]),,
697 698 699 700 701 702 703
              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

704
AC_CONFIG_FILES([Makefile libweston/version.h compositor/weston.pc])
705

Giulio Camuffo's avatar
Giulio Camuffo committed
706 707
# 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
708
AC_CONFIG_FILES([libweston/libweston-]libweston_major_version[.pc:libweston/libweston.pc.in])
709
AC_CONFIG_FILES([libweston/libweston-]libweston_major_version[-uninstalled.pc:libweston/libweston-uninstalled.pc.in])
710
AC_CONFIG_FILES([libweston/libweston-]libweston_major_version[-protocols.pc:libweston/libweston-protocols.pc.in])
711
AC_CONFIG_FILES([libweston-desktop/libweston-desktop-]libweston_major_version[.pc:libweston-desktop/libweston-desktop.pc.in])
712
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
713

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

716
AC_OUTPUT
717 718 719 720 721 722 723

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

	Cairo Renderer			${with_cairo}
	EGL				${enable_egl}
724
	xcb_xkb				${have_xcb_xkb}
725
	XWayland			${enable_xwayland}
726
	dbus				${enable_dbus}
727

728 729
	ivi-shell			${enable_ivi_shell}

730
	Build wcap utility		${enable_wcap_tools}
731
	Build Fullscreen Shell		${enable_fullscreen_shell}
732
	Enable developer documentation	${enable_devdocs}
733 734

	weston-launch utility		${enable_weston_launch}
735
	systemd-login support		${have_systemd_login}
736
	systemd notify support		${enable_systemd_notify}
737 738

	DRM Compositor			${enable_drm_compositor}
739
	Remoting			${enable_remoting}
740 741 742 743 744
	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}
745
	Screen Sharing			${enable_screen_sharing}
746
	JUnit XML output		${enable_junit_xml}
747 748 749 750 751 752

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

753
	Install Demo Clients		${enable_demo_clients_install}
754 755 756

	Colord Support			${have_colord}
	LCMS2 Support			${have_lcms}
757
	libjpeg Support			${have_jpeglib}
758
	libwebp Support			${have_webp}
759
	VA H.264 encoding Support	${have_libva}
760
])