configure.ac 65.4 KB
Newer Older
Elliot Lee's avatar
Elliot Lee committed
1
# Process this file with autoconf to produce a configure script.
2

3 4 5 6 7 8 9 10
# Making releases:
#   GTK_MICRO_VERSION += 1;
#   GTK_INTERFACE_AGE += 1;
#   GTK_BINARY_AGE += 1;
# if any functions have been added, set GTK_INTERFACE_AGE to 0.
# if backwards compatibility has been broken,
# set GTK_BINARY_AGE and GTK_INTERFACE_AGE to 0.

11
m4_define([gtk_major_version], [3])
Timm Bäder's avatar
Timm Bäder committed
12
m4_define([gtk_minor_version], [91])
Matthias Clasen's avatar
Matthias Clasen committed
13
m4_define([gtk_micro_version], [0])
14
m4_define([gtk_interface_age], [0])
Owen Taylor's avatar
Owen Taylor committed
15 16
m4_define([gtk_binary_age],
          [m4_eval(100 * gtk_minor_version + gtk_micro_version)])
17 18
m4_define([gtk_version],
          [gtk_major_version.gtk_minor_version.gtk_micro_version])
19 20
# This is the X.Y used in -lgtk-X.Y
m4_define([gtk_api_version], [4.0])
21

22
AC_PREREQ([2.62])
23 24 25 26
AC_INIT([gtk+], [gtk_version],
        [http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B],
        [gtk+])

27
AC_CONFIG_HEADERS([config.h])
28 29
AC_CONFIG_SRCDIR([gdk/gdktypes.h])
AC_CONFIG_MACRO_DIR([m4])
30
AC_CONFIG_AUX_DIR([build-aux])
31

32 33
AC_CANONICAL_HOST

34
# Define a string for the earliest version that this release has
35 36 37 38
# backwards binary compatibility with for all interfaces a module
# might. Unless we add module-only API with lower stability
# guarantees, this should be unchanged until we break binary compat
# for GTK+.
39 40
#
#GTK_BINARY_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$LT_CURRENT
41
m4_define([gtk_binary_version], [4.0.0])
42 43

# required versions of other packages
44
m4_define([glib_required_major], [2])
45 46
m4_define([glib_required_minor], [53])
m4_define([glib_required_micro], [0])
47 48 49 50 51 52 53 54 55 56
m4_define([glib_required_version],
          [glib_required_major.glib_required_minor.glib_required_micro])
m4_define([glib_min_required_minor],
          [m4_eval(glib_required_minor - (glib_required_minor % 2))])
m4_define([glib_max_allowed_minor],
          [m4_eval(glib_required_minor + (glib_required_minor % 2))])
m4_define([glib_min_required_version], m4_join([_], [GLIB_VERSION], glib_required_major, glib_min_required_minor))
m4_define([glib_max_allowed_version], m4_join([_], [GLIB_VERSION], glib_required_major, glib_max_allowed_minor))
GLIB_VERSION_CFLAGS="-DGLIB_MIN_REQUIRED_VERSION=glib_min_required_version -DGLIB_MAX_ALLOWED_VERSION=glib_max_allowed_version"

57
m4_define([pango_required_version], [1.37.3])
Matthias Clasen's avatar
Matthias Clasen committed
58
m4_define([atk_required_version], [2.15.1])
59
m4_define([cairo_required_version], [1.14.0])
60
m4_define([gdk_pixbuf_required_version], [2.30.0])
61
m4_define([introspection_required_version], [1.39.0])
62
m4_define([wayland_required_version], [1.9.91])
63
m4_define([wayland_protocols_required_version], [1.7])
64
m4_define([mirclient_required_version], [0.22.0])
65
m4_define([mircookie_required_version], [0.17.0])
66
m4_define([epoxy_required_version], [1.0])
67
m4_define([graphene_required_version], [1.5.1])
68 69 70 71 72
GLIB_REQUIRED_VERSION=glib_required_version
PANGO_REQUIRED_VERSION=pango_required_version
ATK_REQUIRED_VERSION=atk_required_version
CAIRO_REQUIRED_VERSION=cairo_required_version
GDK_PIXBUF_REQUIRED_VERSION=gdk_pixbuf_required_version
73 74
INTROSPECTION_REQUIRED_VERSION=introspection_required_version

75 76 77 78 79
AC_SUBST(GLIB_REQUIRED_VERSION)
AC_SUBST(PANGO_REQUIRED_VERSION)
AC_SUBST(ATK_REQUIRED_VERSION)
AC_SUBST(CAIRO_REQUIRED_VERSION)
AC_SUBST(GDK_PIXBUF_REQUIRED_VERSION)
80
AC_SUBST(INTROSPECTION_REQUIRED_VERSION)
81 82 83 84

# Save this value here, since automake will set cflags later
cflags_set=${CFLAGS+set}

85
AM_INIT_AUTOMAKE([1.14 subdir-objects -Wall no-define -Wno-portability tar-ustar no-dist-gzip dist-xz])
86
AM_MAINTAINER_MODE([enable])
Elliot Lee's avatar
Elliot Lee committed
87

88
# Support silent build rules. Disable
Javier Jardón's avatar
Javier Jardón committed
89
# by either passing --disable-silent-rules to configure or passing V=1
90
# to make
91
AM_SILENT_RULES([yes])
92

93
#
94 95 96 97 98 99 100 101
# For each of the libraries we build, we define the following
# substituted variables:
#
# foo_PACKAGES:     pkg-config packages this library requires
# foo_EXTRA_LIBS:   Libraries this module requires not pulled in by pkg-config
# foo_EXTRA_CFLAGS: cflags this module requires not pulled in by pkg-config
# foo_DEP_LIBS:     All libraries this module requires
# foo_DEP_CFLAGS:   All cflags this module requires
102 103


104 105 106 107 108 109 110 111
GTK_MAJOR_VERSION=gtk_major_version
GTK_MINOR_VERSION=gtk_minor_version
GTK_MICRO_VERSION=gtk_micro_version
GTK_INTERFACE_AGE=gtk_interface_age
GTK_BINARY_AGE=gtk_binary_age
GTK_VERSION=gtk_version
GTK_API_VERSION=gtk_api_version
GTK_BINARY_VERSION=gtk_binary_version
112 113 114
AC_SUBST(GTK_MAJOR_VERSION)
AC_SUBST(GTK_MINOR_VERSION)
AC_SUBST(GTK_MICRO_VERSION)
115 116
AC_SUBST(GTK_INTERFACE_AGE)
AC_SUBST(GTK_BINARY_AGE)
Owen Taylor's avatar
Owen Taylor committed
117
AC_SUBST(GTK_API_VERSION)
118
AC_SUBST(GTK_VERSION)
119
AC_SUBST(GTK_BINARY_VERSION)
120 121

# libtool versioning
122 123 124 125 126 127
#LT_RELEASE=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION
#LT_CURRENT=`expr $GTK_MICRO_VERSION - $GTK_INTERFACE_AGE`
#LT_REVISION=$GTK_INTERFACE_AGE
#LT_AGE=`expr $GTK_BINARY_AGE - $GTK_INTERFACE_AGE`
#LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`

128 129 130 131 132 133
m4_define([lt_current], [m4_eval(100 * gtk_minor_version + gtk_micro_version - gtk_interface_age)])
m4_define([lt_revision], [gtk_interface_age])
m4_define([lt_age], [m4_eval(gtk_binary_age - gtk_interface_age)])
LT_VERSION_INFO="lt_current:lt_revision:lt_age"
LT_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age)
AC_SUBST(LT_VERSION_INFO)
Tor Lillqvist's avatar
Tor Lillqvist committed
134
AC_SUBST(LT_CURRENT_MINUS_AGE)
135

136 137
m4_define([gail_lt_current],[0])
m4_define([gail_lt_revision],[0])
138 139 140 141 142
m4_define([gail_lt_age],[0])
m4_define([gail_lt_version_info],[gail_lt_current:gail_lt_revision:gail_lt_age])
m4_define([gail_lt_current_minus_age],[m4_eval(gail_lt_current - gail_lt_age)])
AC_SUBST([GAIL_LT_VERSION_INFO],[gail_lt_version_info])
AC_SUBST([GAIL_LT_CURRENT_MINUS_AGE],[gail_lt_current_minus_age])
143

144 145 146 147 148 149 150 151 152 153 154 155 156
# Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=721346 until fixed upstream in autoconf-archive
if test "$cross_compiling" = "no"; then
  if test -n "$CFLAGS"; then
    CFLAGS_FOR_BUILD=$CFLAGS
  fi
  if test -n "$CPPFLAGS"; then
    CPPFLAGS_FOR_BUILD=$CPPFLAGS
  fi
  if test -n "$LDFLAGS"; then
    LDFLAGS_FOR_BUILD=$LDFLAGS
  fi
fi

157 158
# Checks for programs.
AC_PROG_CC
159
AX_PROG_CC_FOR_BUILD
160
AC_PROG_CC_C_O
161
AC_PROG_MKDIR_P
162 163 164
AC_PROG_INSTALL
AC_PROG_MAKE_SET

165 166 167
# Define _GNU_SOURCE etc. where appropriate, e.g. for strptime() on glibc
AC_USE_SYSTEM_EXTENSIONS

Javier Jardón's avatar
Javier Jardón committed
168 169 170 171
# i18n stuff
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.19.7])

172
GETTEXT_PACKAGE=gtk40
173
AC_SUBST(GETTEXT_PACKAGE)
174 175
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
                   [The prefix for our gettext translation domains.])
176

177 178
MATH_LIB=-lm
AC_MSG_CHECKING([for native Win32])
179
LIB_EXE_MACHINE_FLAG=X86
180
EXE_MANIFEST_ARCHITECTURE=X86
181
DISABLE_ON_W32=''
182 183
case "$host" in
  *-*-mingw*)
184 185
    dnl Comment-out certain gtk3.types.in lines
    DISABLE_ON_W32='%'
186
    os_win32=yes
187
    gio_can_sniff=no
188
    MATH_LIB=
189 190 191
    case "$host" in
    x86_64-*-*)
      LIB_EXE_MACHINE_FLAG=X64
192
      EXE_MANIFEST_ARCHITECTURE=AMD64
193 194
      ;;
    esac
195 196 197 198 199 200
    ;;
  *)
    os_win32=no
    ;;
esac
AC_MSG_RESULT([$os_win32])
Elliot Lee's avatar
Elliot Lee committed
201

202
AC_SUBST(DISABLE_ON_W32)
203
AC_SUBST(LIB_EXE_MACHINE_FLAG)
204
AC_SUBST(EXE_MANIFEST_ARCHITECTURE)
205

206 207 208 209
case $host in
  *-*-linux*)
    os_linux=yes
    ;;
210 211 212
  *-*-darwin*)
    os_darwin=yes
    ;;
213
esac
214

215
dnl
216 217
dnl Check for a working C++ compiler, but do not bail out, if none is found.
dnl We use this for an automated test for C++ header correctness.
218
dnl
219
AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], gcc)
220
AC_LANG_PUSH([C++])
221

222 223 224
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
                                   [[class a { int b; } c;]])],
                  [],[CXX=])
225
AM_CONDITIONAL(HAVE_CXX, test "$CXX" != "")
226 227 228

gtk_save_cxxflags="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -x objective-c++"
229 230 231
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@interface Foo @end]],
                                   [[]])],
                  [OBJC=yes],[OBJC=no])
232
AM_CONDITIONAL(HAVE_OBJC, test "$OBJC" = "yes")
233
CXXFLAGS="$gtk_save_cxxflags"
234
AC_LANG_POP([C++])
235

Tor Lillqvist's avatar
Tor Lillqvist committed
236
if test "$os_win32" = "yes"; then
237 238 239 240 241 242 243 244 245 246
  if test x$enable_static = xyes -o x$enable_static = x; then
    AC_MSG_WARN([Disabling static library build, must build as DLL on Windows.])
    enable_static=no
  fi
  if test x$enable_shared = xno; then
    AC_MSG_WARN([Enabling shared library build, must build as DLL on Windows.])
  fi
  enable_shared=yes
fi

247 248 249 250 251
dnl Initialize libtool
LT_PREREQ([2.2.6])
LT_INIT([disable-static win32-dll])
# Create libtool early, because it's used in configure
LT_OUTPUT
Elliot Lee's avatar
Elliot Lee committed
252

253 254 255
# Make sure we use 64-bit versions of various file stuff.
AC_SYS_LARGEFILE

256
AM_PROG_AS
257
AC_PATH_TOOL(NM, nm, nm)
258

Tor Lillqvist's avatar
Tor Lillqvist committed
259 260 261 262 263 264 265 266 267 268 269 270 271
AC_MSG_CHECKING([for some Win32 platform])
case "$host" in
  *-*-mingw*|*-*-cygwin*)
    platform_win32=yes
    ;;
  *)
    platform_win32=no
    ;;
esac
AC_MSG_RESULT([$platform_win32])
AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")

AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
272
AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
273
AM_CONDITIONAL(OS_LINUX, test "$os_linux" = "yes")
274
AM_CONDITIONAL(OS_DARWIN, test "$os_darwin" = "yes")
Tor Lillqvist's avatar
Tor Lillqvist committed
275 276

if test "$os_win32" = "yes"; then
277 278 279 280
  AC_CHECK_TOOL(WINDRES, windres, no)
  if test "$WINDRES" = no; then
    AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
  fi
Tor Lillqvist's avatar
Tor Lillqvist committed
281 282 283 284
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
fi
AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)

285 286
m4_define([debug_default],
          m4_if(m4_eval(gtk_minor_version % 2), [1], [yes], [minimum]))
287 288

dnl declare --enable-* args and collect ac_help strings
289
AC_ARG_ENABLE(debug,
290 291 292
              [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
                              [turn on debugging @<:@default=debug_default@:>@])],,
              [enable_debug=debug_default])
293

294 295 296 297 298
AC_ARG_ENABLE(installed_tests,
              AS_HELP_STRING([--enable-installed-tests],
                             [Install test programs (default: no)]),,
              [enable_installed_tests=no])
AM_CONDITIONAL(BUILDOPT_INSTALL_TESTS, test x$enable_installed_tests = xyes)
299

300 301 302 303 304
AC_ARG_ENABLE(vulkan,
              [AS_HELP_STRING([--enable-vulkan],
                              [support Vulkan graphics API [default=maybe]])],,
              [enable_vulkan="maybe"])

305
AC_ARG_ENABLE(xkb,
306
              [AS_HELP_STRING([--enable-xkb],
307
                              [support XKB extension [default=maybe]])],,
308
              [enable_xkb="maybe"])
309
AC_ARG_ENABLE(xinerama,
310
              [AS_HELP_STRING([--enable-xinerama],
311
	                      [support Xinerama extension [default=maybe]])],,
312
              [enable_xinerama="maybe"])
313
AC_ARG_ENABLE(xrandr,
314
              [AS_HELP_STRING([--enable-xrandr],
315
                              [support XRandR extension [default=maybe]])],,
316 317
              [enable_xrandr="maybe"])
AC_ARG_ENABLE(xfixes,
318
              [AS_HELP_STRING([--enable-xfixes],
319
                              [support XFixes extension [default=maybe]])],,
320 321
              [enable_xfixes="maybe"])
AC_ARG_ENABLE(xcomposite,
322
              [AS_HELP_STRING([--enable-xcomposite],
323
                              [support X Composite extension [default=maybe]])],,
324 325
              [enable_xcomposite="maybe"])
AC_ARG_ENABLE(xdamage,
326
              [AS_HELP_STRING([--enable-xdamage],
327
                              [support X Damage extension [default=maybe]])],,
328
              [enable_xdamage="maybe"])
329

330
AC_ARG_ENABLE(x11-backend,
331
              [AS_HELP_STRING([--enable-x11-backend],
332 333 334
                              [enable the X11 gdk backend])],
			      [backend_set=yes])
AC_ARG_ENABLE(win32-backend,
335
              [AS_HELP_STRING([--enable-win32-backend],
336 337 338
                              [enable the Win32 gdk backend])],
			      [backend_set=yes])
AC_ARG_ENABLE(quartz-backend,
339
              [AS_HELP_STRING([--enable-quartz-backend],
340 341
                              [enable the quartz gdk backend])],
			      [backend_set=yes])
342
AC_ARG_ENABLE(broadway-backend,
343
              [AS_HELP_STRING([--enable-broadway-backend],
344 345
                              [enable the broadway (HTML5) gdk backend])],
			      [backend_set=yes])
Kristian Høgsberg's avatar
Kristian Høgsberg committed
346
AC_ARG_ENABLE(wayland-backend,
347
              [AS_HELP_STRING([--enable-wayland-backend],
Kristian Høgsberg's avatar
Kristian Høgsberg committed
348 349
                              [enable the wayland gdk backend])],
			      [backend_set=yes])
350 351 352 353
AC_ARG_ENABLE(mir-backend,
              [AS_HELP_STRING([--enable-mir-backend],
                              [enable the Mir gdk backend])],
			      [backend_set=yes])
354 355 356 357 358 359

if test -z "$backend_set"; then
  if test "$platform_win32" = yes; then
    enable_win32_backend=yes
  else
    enable_x11_backend=yes
360
    enable_wayland_backend=maybe
361
    enable_mir_backend=no
362 363 364
  fi
fi

365 366 367 368 369
AC_ARG_ENABLE(quartz-relocation,
              [AS_HELP_STRING([--enable-quartz-relocation],
                              [enable bundle-based relocation functions])],
                              [quartz_relocation=yes])

370
cairo_backends=
371
backend_immodules=
372
have_gio_unix=no
373
GDK_BACKENDS=
374
GDK_EXTRA_LIBS=
375
GDK_EXTRA_CFLAGS=
376 377
GDK_WINDOWING=
PANGO_PACKAGES="pango pangocairo"
378

379
ENABLE_ON_X11='%'
380
if test "$enable_x11_backend" = "yes"; then
381 382 383 384
  # GDK calls the xlib backend "x11," cairo calls it "xlib." Other
  # backend names are identical.
  cairo_backends="$cairo_backends cairo-xlib"
  GDK_BACKENDS="$GDK_BACKENDS x11"
385 386 387
  backend_immodules="$backend_immodules,xim"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_X11"
388
  ENABLE_ON_X11=''
Tor Lillqvist's avatar
Tor Lillqvist committed
389
fi
390
AC_SUBST(ENABLE_ON_X11)
391

392
if test "$enable_win32_backend" = "yes"; then
393 394
  cairo_backends="$cairo_backends cairo-win32"
  GDK_BACKENDS="$GDK_BACKENDS win32"
395 396 397
  backend_immodules="$backend_immodules,ime"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_WIN32"
LRN's avatar
LRN committed
398
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32"
399 400 401 402
  AM_CONDITIONAL(USE_WIN32, true)
  PANGO_PACKAGES="pangowin32 pangocairo"
else
  AM_CONDITIONAL(USE_WIN32, false)
403
fi
404

405
DISABLE_ON_QUARTZ=''
406
if test "x$enable_quartz_backend" = xyes; then
407 408
  cairo_backends="$cairo_backends cairo-quartz"
  GDK_BACKENDS="$GDK_BACKENDS quartz"
409
  backend_immodules="$backend_immodules,quartz"
410 411
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_QUARTZ"
412
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa -framework Carbon"
413
  DISABLE_ON_QUARTZ='%'
414
  AM_CONDITIONAL(USE_QUARTZ, true)
415 416 417
  if test "x$quartz_relocation" = xyes; then
    AC_DEFINE([QUARTZ_RELOCATION], [1], [Use NSBundle functions to determine load paths for libraries, translations, etc.])
  fi
Tor Lillqvist's avatar
Tor Lillqvist committed
418
else
419
  AM_CONDITIONAL(USE_QUARTZ, false)
Tor Lillqvist's avatar
Tor Lillqvist committed
420
fi
421
AC_SUBST(DISABLE_ON_QUARTZ)
422

423 424 425
AC_CHECK_LIB([rt], [shm_open], [SHM_LIBS="-lrt"], [SHM_LIBS=""])
AC_SUBST(SHM_LIBS)

426
AC_CHECK_FUNCS(posix_fallocate flockfile _lock_file)
427

428
if test "x$enable_broadway_backend" = xyes; then
429
  GDK_BACKENDS="$GDK_BACKENDS broadway"
430
  cairo_backends="$cairo_backends cairo"
431
  backend_immodules="$backend_immodules,broadway"
432 433 434 435 436 437 438
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_BROADWAY"
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lz"
  AM_CONDITIONAL(USE_BROADWAY, true)
else
  AM_CONDITIONAL(USE_BROADWAY, false)
fi
439

440 441
PKG_PROG_PKG_CONFIG

442
WAYLAND_DEPENDENCIES="wayland-client >= wayland_required_version wayland-protocols >= wayland_protocols_required_version xkbcommon >= 0.2.0 wayland-cursor >= wayland_required_version wayland-egl"
443 444 445 446 447 448 449 450 451 452 453 454 455
if test "$enable_wayland_backend" = "maybe" ; then
  AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
  PKG_CHECK_EXISTS($WAYLAND_DEPENDENCIES, [have_wayland_deps=yes], [have_wayland_deps=no])
  AC_MSG_CHECKING([for WAYLAND_DEPENDENCIES])
  if test "$WAYLAND_SCANNER" = "no" -o "$have_wayland_deps" = "no" ; then
    enable_wayland_backend=no
  else
    enable_wayland_backend=yes
  fi
  AC_MSG_RESULT($enable_wayland_backend)
fi

if test "$enable_wayland_backend" = "yes"; then
456 457
  # For the cairo image backend
  cairo_backends="$cairo_backends cairo"
458
  AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
Kristian Høgsberg's avatar
Kristian Høgsberg committed
459 460 461
  GDK_BACKENDS="$GDK_BACKENDS wayland"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_WAYLAND"
462
  WAYLAND_PACKAGES="$WAYLAND_DEPENDENCIES"
463
  AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
464 465 466 467
  AS_IF([test "x$WAYLAND_SCANNER" = "xno"],
    AC_MSG_ERROR([Could not find wayland-scanner in your PATH, required for parsing wayland extension protocols]))
  AC_SUBST([WAYLAND_SCANNER])

Kristian Høgsberg's avatar
Kristian Høgsberg committed
468 469 470 471 472
  AM_CONDITIONAL(USE_WAYLAND, true)
else
  AM_CONDITIONAL(USE_WAYLAND, false)
fi

473
MIR_DEPENDENCIES="mirclient >= mirclient_required_version mircookie >= mircookie_required_version libcontent-hub-glib"
474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496
if test "$enable_mir_backend" = "maybe" ; then
  PKG_CHECK_EXISTS($MIR_DEPENDENCIES, [have_mir_deps=yes], [have_mir_deps=no])
  AC_MSG_CHECKING([for MIR_DEPENDENCIES])
  if test "$have_mir_deps" = "no" ; then
    enable_mir_backend=no
  else
    enable_mir_backend=yes
  fi
  AC_MSG_RESULT($enable_mir_backend)
fi

if test "$enable_mir_backend" = "yes"; then
  cairo_backends="$cairo_backends cairo"
  GDK_BACKENDS="$GDK_BACKENDS mir"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_MIR"
  MIR_PACKAGES="$MIR_DEPENDENCIES"

  AM_CONDITIONAL(USE_MIR, true)
else
  AM_CONDITIONAL(USE_MIR, false)
fi

497
# strip leading space
498
GDK_BACKENDS=${GDK_BACKENDS#* }
499

500
AC_SUBST(GDK_BACKENDS)
Tor Lillqvist's avatar
Tor Lillqvist committed
501

502 503 504
if test -z "$GDK_BACKENDS"; then
  AC_MSG_ERROR([No GDK backends selected.])
fi
Tor Lillqvist's avatar
Tor Lillqvist committed
505

506
if test "x$enable_debug" = "xyes"; then
Tim Janik's avatar
Tim Janik committed
507
  test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
508
  GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_ENABLE_CONSISTENCY_CHECKS"
Elliot Lee's avatar
Elliot Lee committed
509
else
510
  if test "x$enable_debug" = "xno"; then
511
    GTK_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
512
  else
513
    GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
514
  fi
Elliot Lee's avatar
Elliot Lee committed
515
fi
516
GTK_DEBUG_FLAGS="$GTK_DEBUG_FLAGS $GLIB_VERSION_CFLAGS"
Elliot Lee's avatar
Elliot Lee committed
517 518 519 520

# Build time sanity check...
AM_SANITY_CHECK

Raja R Harinath's avatar
Raja R Harinath committed
521
changequote(,)dnl
522
if test "x$GCC" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
523 524 525 526
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
527

528
  if test "x$enable_ansi" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
529 530 531 532 533 534 535 536 537
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac

    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
538
  fi
539 540
fi
changequote([,])dnl
Tor Lillqvist's avatar
Tor Lillqvist committed
541

542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565
# Ensure MSVC-compatible struct packing convention is used when
# compiling for Win32 with gcc.
# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
# gcc2 uses "-fnative-struct".
if test x"$os_win32" = xyes; then
  if test x"$GCC" = xyes; then
    msnative_struct=''
    AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
    if test -z "$ac_cv_prog_CC"; then
      our_gcc="$CC"
    else
      our_gcc="$ac_cv_prog_CC"
    fi
    case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
      2.)
	if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
	  msnative_struct='-fnative-struct'
	fi
	;;
      *)
	if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
	  msnative_struct='-mms-bitfields'
	fi
	;;
Tor Lillqvist's avatar
Tor Lillqvist committed
566
    esac
567 568 569 570 571 572 573
    if test x"$msnative_struct" = x ; then
      AC_MSG_RESULT([no way])
      AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
    else
      CFLAGS="$CFLAGS $msnative_struct"
      AC_MSG_RESULT([${msnative_struct}])
    fi
Tor Lillqvist's avatar
Tor Lillqvist committed
574
  fi
Elliot Lee's avatar
Elliot Lee committed
575 576
fi

577
## Initial sanity check, done here so that users get told they
578 579
## have the wrong dependencies as early in the process as possible.
## Later on we actually use the cflags/libs from separate pkg-config
580 581
## calls. Oh, also the later pkg-config calls don't include
## the version requirements since those make the module lists
582
## annoying to construct
583 584 585
PKG_CHECK_MODULES(BASE_DEPENDENCIES,
  [glib-2.0 >= glib_required_version dnl
   atk >= atk_required_version dnl
586
   pango >= pango_required_version dnl
587
   cairo >= cairo_required_version dnl
588
   cairo-gobject >= cairo_required_version dnl
589
   gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])
590

591
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
592

593
# Remove this check once cairo_required_version reaches at least 1.16.0
594 595 596
AS_CASE([$host_os],
  [mingw*],
  [
LRN's avatar
LRN committed
597
    PKG_CHECK_MODULES(CAIRO, [cairo >= cairo_required_version])
598 599
    gtk_save_LIBS="$LIBS"
    LIBS="$CAIRO_LIBS $LIBS"
LRN's avatar
LRN committed
600 601 602 603
    AC_CHECK_LIB([cairo], [cairo_win32_surface_create_with_format],
      [AC_MSG_RESULT([found])],
      [AC_MSG_ERROR(
[cairo_win32_surface_create_with_format is not found in cairo library
604
You need a cairo snapshot 1.15.x or 1.16.x release or newer])])
605 606 607 608
    LIBS="$gtk_save_LIBS"
  ],
  []
)
LRN's avatar
LRN committed
609 610


611 612
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])

613 614 615 616
dnl ******************************************************
dnl * See whether to include shared library dependencies *
dnl ******************************************************

617
AC_ARG_ENABLE(explicit-deps,
618
              [AS_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
619 620
                              [use explicit dependencies in .pc files [default=auto]])],,
              [enable_explicit_deps=auto])
621

622
AC_MSG_CHECKING([whether to write dependencies into .pc files])
623 624
case $enable_explicit_deps in
  auto)
625
    export SED
626
    deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
627
    if test "x$deplibs_check_method" != xpass_all || test "x$enable_static" = xyes ; then
628
      enable_explicit_deps=yes
629
    else
630
      enable_explicit_deps=no
631 632
    fi
  ;;
633
  yes|no)
634 635 636 637 638 639 640 641
  ;;
  *) AC_MSG_ERROR([Value given to --enable-explicit-deps must be one of yes, no or auto])
  ;;
esac
AC_MSG_RESULT($enable_explicit_deps)

AM_CONDITIONAL(DISABLE_EXPLICIT_DEPS, test $enable_explicit_deps = no)

642
# define a MAINT-like variable REBUILD which is set if Perl
643 644
# and awk are found, so autogenerated sources can be rebuilt

645
AC_PATH_PROGS(PERL, perl5 perl)
646

647
AC_CHECK_FUNCS(lstat mkstemp)
648
AC_CHECK_FUNCS(localtime_r)
649 650 651

# _NL_TIME_FIRST_WEEKDAY is an enum and not a define
AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY])
652 653 654 655
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
                                [[char c;
                                  c = *((unsigned char *)  nl_langinfo(_NL_TIME_FIRST_WEEKDAY));]])],
               [gtk_ok=yes], [gtk_ok=no])
656 657 658 659 660
AC_MSG_RESULT($gtk_ok)
if test "$gtk_ok" = "yes"; then
  AC_DEFINE([HAVE__NL_TIME_FIRST_WEEKDAY], [1],
	    [Define if _NL_TIME_FIRST_WEEKDAY is available])
fi
661

662 663
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
664 665 666 667
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
                                [[char c;
                                  c = *((unsigned char *)  nl_langinfo(_NL_MEASUREMENT_MEASUREMENT));]])],
               [gtk_ok=yes], [gtk_ok=no])
668 669 670 671 672 673 674 675
AC_MSG_RESULT($gtk_ok)
if test "$gtk_ok" = "yes"; then
  AC_DEFINE([HAVE__NL_MEASUREMENT_MEASUREMENT], [1],
	    [Define if _NL_MEASUREMENT_MEASUREMENT is available])
fi

# _NL_PAPER_HEIGHT is an enum and not a define
AC_MSG_CHECKING([for _NL_PAPER_HEIGHT])
676 677 678 679
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
                                [[char c;
                                  c = *((unsigned char *)  nl_langinfo(_NL_PAPER_HEIGHT));]])],
               [gtk_ok=yes], [gtk_ok=no])
680 681 682 683 684 685 686 687
AC_MSG_RESULT($gtk_ok)
if test "$gtk_ok" = "yes"; then
  AC_DEFINE([HAVE__NL_PAPER_HEIGHT], [1],
	    [Define if _NL_PAPER_HEIGHT is available])
fi

# _NL_PAPER_WIDTH is an enum and not a define
AC_MSG_CHECKING([for _NL_PAPER_WIDTH])
688 689 690 691
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <langinfo.h>]],
                                [[char c;
                                  c = *((unsigned char *)  nl_langinfo(_NL_PAPER_WIDTH));]])],
               [gtk_ok=yes], [gtk_ok=no])
692 693 694 695 696
AC_MSG_RESULT($gtk_ok)
if test "$gtk_ok" = "yes"; then
  AC_DEFINE([HAVE__NL_PAPER_WIDTH], [1],
	    [Define if _NL_PAPER_WIDTH is available])
fi
697

698
LIBS="$LIBS $INTLLIBS"
Owen Taylor's avatar
Owen Taylor committed
699

700
dnl The DU4 header files don't provide library prototypes unless
701
dnl -std1 is given to the native cc.
Manish Singh's avatar
Manish Singh committed
702
AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
703

704
gtk_save_LIBS=$LIBS
705
LIBS="$LIBS -lm"
706 707 708 709 710 711 712 713 714 715 716 717 718 719
AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <math.h>
                                int main (void) { return (log(1) != log(1.)); }]])],
              [AC_MSG_RESULT(none needed)],
              [gtk_save_CFLAGS="$CFLAGS"
               CFLAGS="$CFLAGS -std1"
               AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <math.h>
                                               int main (void) { return (log(1) != log(1.)); }]])],
                             [AC_MSG_RESULT(-std1)],
                             [AC_MSG_RESULT()
                              CFLAGS="$gtk_save_CFLAGS"
                              AC_MSG_WARN([No ANSI prototypes found in library. (-std1 did not work.)])],
                             [true])],
              [AC_MSG_RESULT(none needed)])

720 721
LIBS=$gtk_save_LIBS

722 723 724
AC_MSG_CHECKING(for the BeOS)
case $host in
  *-*-beos*)
725
    AC_MSG_RESULT(yes)
726 727
    MATH_LIB=
  ;;
728 729
  *)
    AC_MSG_RESULT(no)
730 731
  ;;
esac
732

LRN's avatar
LRN committed
733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780
AS_CASE([$host_os],
  [mingw*],
  [
    AC_CHECK_SIZEOF(
      [DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY],
      [],
      [
#define _WIN32_WINNT 0x601
#include <windows.h>
      ]
    )
    AS_IF(
      [test x$ac_cv_sizeof_DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY = x4],
      [AC_MSG_RESULT([DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY is OK])],
      [test x$ac_cv_sizeof_DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY = x0],
      [AC_MSG_ERROR([DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY is unavailable])],
      [AC_MSG_RESULT([DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY is not OK])]
    )
    AC_MSG_CHECKING([for SetupDiGetDevicePropertyW])
    gtk_save_LIBS="$LIBS"
    LIBS="-lsetupapi $LIBS"
    AC_TRY_LINK(
      [
#define _WIN32_WINNT 0x0600
#include <windows.h>
#include <devpropdef.h>
#include <setupapi.h>
      ],
      [return SetupDiGetDevicePropertyW(NULL, NULL, NULL, NULL, NULL, 0, NULL, 0);],
      [have_SetupDiGetDevicePropertyW=yes],
      [have_SetupDiGetDevicePropertyW=no]
    )
    AS_IF(
      [test x$have_SetupDiGetDevicePropertyW = xyes],
      [
       AC_DEFINE(
         [HAVE_SETUP_DI_GET_DEVICE_PROPERTY_W],
         [1],
         [Define to 1 if SetupDiGetDevicePropertyW() is available]
       )
      ]
    )
    AC_MSG_RESULT([$have_SetupDiGetDevicePropertyW])
    LIBS="$gtk_save_LIBS"
  ],
  []
)

Benjamin Otte's avatar
Benjamin Otte committed
781
AC_SUBST(MATH_LIB)
782 783 784 785 786 787 788 789 790 791 792 793 794
#
# see bug 162979
#
AC_MSG_CHECKING(for HP-UX)
case $host_os in
  hpux9* | hpux10* | hpux11*)
    AC_MSG_RESULT(yes)
    CFLAGS="$CFLAGS -DHPPEX -DSHMLINK"
  ;;
  *)
    AC_MSG_RESULT(no)
  ;;
esac
795

796
#
Owen Taylor's avatar
Owen Taylor committed
797
# Run AM_PATH_GLIB_2_0 to make sure that GLib is installed and working
798
#
799

800
AM_PATH_GLIB_2_0(glib_required_version, :,
801
  AC_MSG_ERROR([
802
*** GLIB glib_required_version or better is required. The latest version of
803
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
804
  gobject gmodule-no-export)
805

806 807 808 809 810 811
PKG_PROG_PKG_CONFIG_FOR_BUILD
GLIB_CFLAGS_FOR_BUILD=`$PKG_CONFIG_FOR_BUILD --cflags glib-2.0 gobject-2.0 gmodule-no-export-2.0`
GLIB_LIBS_FOR_BUILD=`$PKG_CONFIG_FOR_BUILD --libs glib-2.0 gobject-2.0 gmodule-no-export-2.0`
AC_SUBST(GLIB_CFLAGS_FOR_BUILD)
AC_SUBST(GLIB_LIBS_FOR_BUILD)

Owen Taylor's avatar
Owen Taylor committed
812 813 814 815 816 817 818
dnl Check for bind_textdomain_codeset, including -lintl if GLib brings it in.
dnl
gtk_save_LIBS=$LIBS
LIBS="$LIBS $GLIB_LIBS"
AC_CHECK_FUNCS(bind_textdomain_codeset)
LIBS=$gtk_save_LIBS

819 820 821
AC_CHECK_HEADERS(linux/memfd.h,
                 AC_DEFINE(HAVE_LINUX_MEMFD_H, 1,
                           [Define to 1 if memfd.h is available]))
822 823
AC_CHECK_HEADERS(sys/mman.h,
                 AC_DEFINE(HAVE_SYS_MMAN_H, 1,
Tarnyko's avatar
Tarnyko committed
824
                           [Define to 1 if mman.h is available]))
825 826 827 828 829 830 831 832 833
AC_CHECK_HEADERS(sys/time.h,
                 AC_DEFINE(HAVE_SYS_TIME_H, 1,
                           [Define to 1 if time.h is available]))
AC_CHECK_HEADERS(unistd.h,
                 AC_DEFINE(HAVE_UNISTD_H, 1,
                           [Define to 1 if unistd.h is available]))
AC_CHECK_HEADERS(ftw.h,
                 AC_DEFINE(HAVE_FTW_H, 1,
                           [Define to 1 if ftw.h is available]))
834

835
AC_MSG_CHECKING([for GNU ftw extensions])
836 837 838 839 840
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#define _XOPEN_SOURCE 500
                                     #define _GNU_SOURCE
                                     #include <ftw.h>]],
                                   [[int flags = FTW_ACTIONRETVAL;]])],
                  [gtk_ok=yes],[gtk_ok=no])
841 842
if test $gtk_ok = yes; then
    AC_MSG_RESULT([yes])
843
    AC_DEFINE(HAVE_GNU_FTW, 1, [Have GNU ftw])
844 845 846 847
else
    AC_MSG_RESULT([no])
fi

848 849 850 851 852 853 854 855 856 857 858 859 860
#
# Disable deprecation checks for all libraries we depend on on stable branches.
# This is so newer versions of those libraries don't cause more warnings with
# a stable GTK version.
# We don't ever want to turn off deprecation warnings for master however, because
# that's where we get rid of deprecated API we use.
#
if test m4_eval(gtk_minor_version % 2) = 0 ; then
  AC_DEFINE_UNQUOTED(GLIB_DISABLE_DEPRECATION_WARNINGS, 1,
                     [Disable deprecation warnings from glib])
fi

dnl
861 862 863
saved_cflags="$CFLAGS"
saved_ldflags="$LDFLAGS"

864

865 866
# Checks for library functions.
AC_FUNC_MMAP
867

Matthias Clasen's avatar
Matthias Clasen committed
868
AC_CHECK_FUNCS(mallinfo)
869 870
AC_CHECK_FUNCS(getresuid)
AC_TYPE_UID_T
871

872 873
# Check for round(), rint(), isnan(), isinf() and nearbyint()
AC_CHECK_LIB(m,round,,)
874
AC_CHECK_FUNCS(round rint nearbyint sincos exp2 log2)
875
AC_CHECK_DECLS([isnan, isinf], [], [], [[#include <math.h>]])
876

Matthias Clasen's avatar
Matthias Clasen committed
877 878 879 880
# Checks for gdkspawn
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)

881 882
AC_MSG_CHECKING(whether to build dynamic modules)

883
AC_ARG_ENABLE(modules,
884
              [AS_HELP_STRING([--disable-modules],
885
                              [disable dynamic module loading])])
886

887
dynworks=false
888
build_dynamic_modules=no
889
deps=
890
if test x$enable_modules = xno; then
891 892 893 894
    AC_MSG_RESULT(no)
else
    AC_MSG_RESULT(yes)
    AC_MSG_CHECKING(whether dynamic modules work)
895
    ## for loop is to strip newline
896
    tmp=`$PKG_CONFIG --variable=gmodule_supported gmodule-no-export-2.0`
897 898 899
    for I in $tmp; do
        dynworks=$I
    done
900

901 902 903
    dnl Now we check to see if our libtool supports shared lib deps
    dnl (in a rather ugly way even)
    if $dynworks; then
904 905
        module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
        module_deplibs_check=`$module_libtool_config | \
906 907
            grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
            sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
908 909 910
        if test "x$module_deplibs_check" = "xnone" || \
           test "x$module_deplibs_check" = "xunknown" || \
           test "x$module_deplibs_check" = "x"; then
911 912 913
            dynworks=false
        fi
    fi
914

915
    if $dynworks; then
916
        build_dynamic_modules=yes
917 918
        AC_DEFINE(USE_GMODULE, 1,
                  [Define to 1 if gmodule works and should be used])
919 920
        AC_MSG_RESULT(yes)
    else
921
        build_dynamic_modules=no
922 923
        AC_MSG_RESULT(no)
    fi
924
fi
Havoc Pennington's avatar
Havoc Pennington committed
925

926
AM_CONDITIONAL(BUILD_DYNAMIC_MODULES, $dynworks)
927

928 929 930 931 932 933
#
# Allow building some or all immodules included
#
AC_MSG_CHECKING(immodules to build)

AC_ARG_WITH(included_immodules,
934 935
            [AS_HELP_STRING([--with-included-immodules=MODULE1,MODULE2,...],
                            [build the specified input methods into gtk])])
936

937
if $dynworks; then
938 939 940 941 942 943 944 945
   :
else
   ## if the option was specified, leave it; otherwise disable included immodules
   if test x$with_included_immodules = xno; then
           with_included_immodules=yes
   fi
fi

946
all_immodules="am-et,cedilla,cyrillic-translit,inuktitut,ipa,multipress,thai,ti-er,ti-et,viqr$backend_immodules"
947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985

included_immodules=""
# If the switch specified without listing any specific ones, include all
if test "x$with_included_immodules" = xyes ; then
  included_immodules="$all_immodules"
else
  included_immodules="$with_included_immodules"
fi

AC_MSG_RESULT($included_immodules)
AM_CONDITIONAL(HAVE_INCLUDED_IMMMODULES, test "x$included_immodules" != x)

INCLUDED_IMMODULE_OBJ=
INCLUDED_IMMODULE_DEFINE=

IFS="${IFS= 	}"; gtk_save_ifs="$IFS"; IFS=","
for immodule in $included_immodules; do
 immodule_underscores=`echo $immodule | sed -e 's/-/_/g'`
 if echo "$all_immodules" | egrep "(^|,)$immodule(\$|,)" > /dev/null; then
   :
 else
   AC_MSG_ERROR([the specified input method $immodule does not exist])
 fi

 INCLUDED_IMMODULE_OBJ="$INCLUDED_IMMODULE_OBJ ../modules/input/libstatic-im-$immodule.la"
 INCLUDED_IMMODULE_DEFINE="$INCLUDED_IMMODULE_DEFINE -DINCLUDE_IM_$immodule_underscores"
 eval INCLUDE_$immodule_underscores=yes
done
IFS="$gtk_save_ifs"
AC_SUBST(INCLUDED_IMMODULE_OBJ)
AC_SUBST(INCLUDED_IMMODULE_DEFINE)

AM_CONDITIONAL(INCLUDE_IM_AM_ET, [test x"$INCLUDE_am_et" = xyes])
AM_CONDITIONAL(INCLUDE_IM_CEDILLA, [test x"$INCLUDE_cedilla" = xyes])
AM_CONDITIONAL(INCLUDE_IM_CYRILLIC_TRANSLIT, [test x"$INCLUDE_cyrillic_translit" = xyes])
AM_CONDITIONAL(INCLUDE_IM_IME, [test x"$INCLUDE_ime" = xyes])
AM_CONDITIONAL(INCLUDE_IM_INUKTITUT, [test x"$INCLUDE_inuktitut" = xyes])
AM_CONDITIONAL(INCLUDE_IM_IPA, [test x"$INCLUDE_ipa" = xyes])
AM_CONDITIONAL(INCLUDE_IM_MULTIPRESS, [test x"$INCLUDE_multipress" = xyes])
986
AM_CONDITIONAL(INCLUDE_IM_QUARTZ, [test x"$INCLUDE_quartz" = xyes])
987
AM_CONDITIONAL(INCLUDE_IM_BROADWAY, [test x"$INCLUDE_broadway" = xyes])
988 989 990 991 992 993
AM_CONDITIONAL(INCLUDE_IM_THAI, [test x"$INCLUDE_thai" = xyes])
AM_CONDITIONAL(INCLUDE_IM_TI_ER, [test x"$INCLUDE_ti_er" = xyes])
AM_CONDITIONAL(INCLUDE_IM_TI_ET, [test x"$INCLUDE_ti_et" = xyes])
AM_CONDITIONAL(INCLUDE_IM_VIQR, [test x"$INCLUDE_viqr" = xyes])
AM_CONDITIONAL(INCLUDE_IM_XIM, [test x"$INCLUDE_xim" = xyes])

994 995 996
# Checks to see whether we should include mediaLib
# support.
#
997
AC_CHECK_HEADER(sys/systeminfo.h,
998
                AC_DEFINE(HAVE_SYS_SYSTEMINFO_H, 1,
999 1000 1001 1002
                          [Define to 1 if sys/systeminfo.h is available]))
AC_CHECK_HEADER(sys/sysinfo.h,
                AC_DEFINE(HAVE_SYS_SYSINFO_H, 1,
                          [Define to 1 if sys/sysinfo.h is available]))
1003

1004 1005
dnl Look for a host system's gdk-pixbuf-csource if we are cross-compiling

1006
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
1007

1008 1009 1010
########################################
# Windowing system checks
########################################
1011

1012 1013 1014
# GTK+ uses some X calls, so needs to link against X directly
GTK_DEP_PACKAGES_FOR_X=
GTK_DEP_LIBS_FOR_X=
1015
X_EXTENSIONS=
1016

1017
if test "x$enable_x11_backend" = xyes; then
1018 1019
  X_PACKAGES=fontconfig

1020 1021 1022 1023 1024 1025 1026 1027 1028
  #
  # We use fontconfig very peripherally when decoding the default
  # settings.
  #
  if $PKG_CONFIG --exists fontconfig; then : ; else
    AC_MSG_ERROR([
*** fontconfig (http://www.fontconfig.org) is required by the X11 backend.])
  fi

1029
  #
1030
  # Check for basic X packages; we use pkg-config if available
1031
  #
1032
  if $PKG_CONFIG --exists x11 xext; then
1033
    have_base_x_pc=true
1034 1035
    X_PACKAGES="$X_PACKAGES x11 xext"
    x_libs="`$PKG_CONFIG --libs x11 xext`"
1036
    X_CFLAGS="`$PKG_CONFIG --cflags x11 xext`"
1037

1038 1039 1040 1041
    # Strip out any .la files that pkg-config might give us (this happens
    # with -uninstalled.pc files)
    x_libs_for_checks=
    for I in $x_libs ; do
1042
      case $I in
1043 1044 1045 1046
        *.la) ;;
        *) x_libs_for_checks="$x_libs_for_checks $I" ;;
      esac
    done
1047

1048 1049 1050 1051 1052 1053 1054
    GTK_PACKAGES_FOR_X="x11"
  else
    have_base_x_pc=false
    AC_PATH_XTRA
    if test x$no_x = xyes ; then
      AC_MSG_ERROR([X development libraries not found])
    fi
1055

1056
    x_cflags="$X_CFLAGS"
1057
    x_libs_for_checks="$X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
Elliot Lee's avatar
Elliot Lee committed
1058

1059
    GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
1060 1061
  fi

1062 1063
  # Extra libraries found during checks (-lXinerama, etc), not from pkg-config.
  x_extra_libs=
Alexander Larsson's avatar
Alexander Larsson committed
1064

1065
  gtk_save_cppflags="$CPPFLAGS"
1066
  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Alexander Larsson's avatar
Alexander Larsson committed
1067

1068 1069
  gtk_save_LIBS=$LIBS
  LIBS="$x_libs_for_checks $LIBS"
1070

1071 1072 1073 1074
  # Sanity check for the X11 and Xext libraries. While everything we need from
  # Xext is optional, the chances a system has *none* of these things is so
  # small that we just unconditionally require it.
  AC_CHECK_FUNC(XOpenDisplay, :,
1075
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
1076
  AC_CHECK_FUNC(XextFindDisplay, :,
1077
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
1078

1079 1080 1081 1082 1083 1084 1085 1086 1087 1088
  # Check if <X11/extensions/XIproto.h> is needed for xReply.

  AC_CHECK_TYPE([xReply], ,
                [AC_CHECK_TYPE([xReply],
                               [AC_DEFINE([NEED_XIPROTO_H_FOR_XREPLY], 1,
                                          [Define if <X11/extensions/XIproto.h> needed for xReply])],
                               [AC_MSG_ERROR([xReply type unavailable. X11 is too old])],
                               [[#include <X11/extensions/XIproto.h>
                                 #include <X11/Xlibint.h>]])],
                [[#include <X11/Xlibint.h>]])
1089

1090 1091 1092
  # Check for XKB support.

  if test "x$enable_xkb" = "xyes"; then
1093 1094 1095 1096
        AC_CHECK_FUNC(XkbQueryExtension,
                      X_EXTENSIONS="$X_EXTENSIONS XKB"
                      AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]),
                      AC_MSG_ERROR([*** XKB extension not found. Check 'config.log' for more details.]))
1097
  elif test "x$enable_xkb" = "xmaybe"; then
1098
        AC_CHECK_FUNC(XkbQueryExtension,
1099
                      X_EXTENSIONS="$X_EXTENSIONS XKB"
1100
                      AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]))
1101 1102 1103 1104
  else
        AC_MSG_WARN(XKB support explicitly disabled)
  fi

1105
  # Check for shaped window extension
1106

1107 1108
  AC_CHECK_FUNC(XShapeCombineMask, :,
     [AC_MSG_ERROR([Shape extension not found, check your development headers])])
1109

1110
  # X SYNC check
1111 1112
  gtk_save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS $x_cflags"
1113

1114 1115
  AC_CHECK_FUNC(XSyncQueryExtension,
      [AC_CHECK_HEADER(X11/extensions/sync.h,
1116
	  AC_DEFINE(HAVE_XSYNC, 1, [Have the SYNC extension library]),
1117
	  :, [#include <X11/Xlib.h>])])
1118

1119 1120
  CFLAGS="$gtk_save_CFLAGS"

1121
  if test "x$enable_xinerama" != "xno"; then
1122
    # Check for Xinerama extension (Solaris impl or Xfree impl)
1123 1124 1125
    have_xfree_xinerama=false
    have_solaris_xinerama=false

1126 1127
    gtk_save_cppflags="$CPPFLAGS"
    CPPFLAGS="$CPPFLAGS $x_cflags"
1128

1129
    # Check for XFree
1130
    AC_MSG_CHECKING(for Xinerama packages)
1131

1132
    if $PKG_CONFIG --exists xinerama ; then
1133
       AC_MSG_RESULT(yes)
1134 1135
       have_xfree_xinerama=true
       X_PACKAGES="$X_PACKAGES xinerama"
1136
    else
1137
       AC_MSG_RESULT(no)
1138
       AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
1139
	   [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
1140 1141 1142 1143 1144 1145
	   [GTK_ADD_LIB(x_extra_libs,Xinerama)
	   have_xfree_xinerama=true], :,
           [#include <X11/Xlib.h>])])
    fi

    if $have_xfree_xinerama ; then
1146
      X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1147 1148 1149 1150 1151 1152 1153 1154
      AC_DEFINE(HAVE_XFREE_XINERAMA, 1,
                [Define to 1 if XFree Xinerama is available])
      AC_DEFINE(HAVE_XINERAMA, 1,
                [Define to 1 is Xinerama is available])
    else
      case "$host" in
        *-*-solaris*)
            # Check for solaris
1155

1156 1157 1158
	    have_solaris_xinerama=false
	    AC_CHECK_FUNC(XineramaGetInfo,
	        [AC_CHECK_HEADER(X11/extensions/xinerama.h,
1159
		    [have_solaris_xinerama=true], :,
1160
		    [#include <X11/Xlib.h>])])
1161

1162 1163
	    AC_MSG_CHECKING(for Xinerama support on Solaris)

1164
            if $have_solaris_xinerama ; then
1165
              X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178
              AC_DEFINE(HAVE_SOLARIS_XINERAMA, 1,
                        [Define to 1 if solaris xinerama is available])
	      AC_DEFINE(HAVE_XINERAMA, 1,
                        [Define to 1 if xinerama is available])
              AC_MSG_RESULT(yes)
            else
              AC_MSG_RESULT(no)
            fi
            ;;
        *)
            ;;
      esac
    fi
1179
  fi
1180 1181 1182 1183 1184
  if test "x$enable_xinerama" = "xyes" ; then
    if test "x$have_xfree_xinerama" != "xtrue" -a "x$have_solaris_xinerama" != "xtrue" ; then
      AC_MSG_ERROR([*** Xinerama extension not found. Check 'config.log' for more details.])
    fi
  fi
1185

1186 1187 1188 1189
  # Check for XGetEventData for GenericEvents
  AC_CHECK_FUNC(XGetEventData,
                AC_DEFINE(HAVE_XGENERICEVENTS, 1, [Have XGenericEvent]))

1190
  # set up things for XInput
1191
  if $PKG_CONFIG --exists "xi" ; then
1192

1193
    X_PACKAGES="$X_PACKAGES xi"
1194
    GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xi"
1195 1196

    AC_CHECK_HEADER(X11/extensions/XInput2.h,
1197
                    have_xinput2=yes
1198
                    AC_DEFINE(XINPUT_2, 1, [Define to 1 if XInput 2.0 is available]))
1199

1200 1201
    gtk_save_LIBS="$LIBS"
    LIBS="$LIBS -lXi"
1202 1203 1204 1205 1206 1207 1208 1209 1210

    # Note that we also check that the XIScrollClassInfo struct is defined,
    # because at least Ubuntu Oneiric seems to have XIAllowTouchEvents(), but not the XIScrollClassInfo struct.
    AC_CHECK_FUNC([XIAllowTouchEvents],
      [AC_CHECK_MEMBER([XIScrollClassInfo.number],
                       have_xinput2_2=yes
                       AC_DEFINE(XINPUT_2_2, 1, [Define to 1 if XInput 2.2 is available]),
                       have_xinput2_2=no,
                       [[#include <X11/extensions/XInput2.h>]])])
1211
    LIBS="$gtk_save_LIBS"
1212 1213 1214 1215 1216 1217

    if test "x$have_xinput2_2" = "xyes"; then
      X_EXTENSIONS="$X_EXTENSIONS XI2.2"
    else
      X_EXTENSIONS="$X_EXTENSIONS XI2"
    fi
1218
  fi
1219

1220 1221
  AS_IF([test "x$have_xinput2" != "xyes"],
        [AC_MSG_ERROR([*** XInput2 extension not found. Check 'config.log' for more details.])])
1222 1223

  # Check for the RANDR extension
1224 1225 1226 1227
  if test x"$enable_xrandr" != xno; then
    if $PKG_CONFIG --exists "xrandr >= 1.2.99" ; then
      AC_DEFINE(HAVE_RANDR, 1, [Have the Xrandr extension library])

1228 1229 1230
      if $PKG_CONFIG --exists "xrandr >= 1.5.0" ; then
        AC_DEFINE(HAVE_RANDR15, 1, [Have the Xrandr 1.5 extension library])
      fi
1231 1232 1233 1234 1235
      X_PACKAGES="$X_PACKAGES xrandr"
      X_EXTENSIONS="$X_EXTENSIONS XRANDR"
    elif test x"$enable_xrandr" = xyes; then
      AC_MSG_ERROR([RANDR support requested but xrandr not found])
    fi
1236
  fi
1237

1238
  # Checks for Xcursor library
1239

1240
  if $PKG_CONFIG --exists xcursor ; then
1241
    AC_DEFINE(HAVE_XCURSOR, 1, [Have the Xcursor library])
1242

1243 1244 1245 1246
    X_PACKAGES="$X_PACKAGES xcursor"
  fi

  # Checks for XFixes extension
1247

1248 1249 1250
  if test x"$enable_xfixes" != xno; then
    if $PKG_CONFIG --exists xfixes ; then
      AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension])
1251

1252 1253 1254 1255 1256 1257
      X_PACKAGES="$X_PACKAGES xfixes"
      X_EXTENSIONS="$X_EXTENSIONS XFIXES"
      GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xfixes"
    elif test x"$enable_xfixes" = xyes; then
      AC_MSG_ERROR([XFixes support requested but xfixes not found])
    fi
1258 1259
  fi

1260 1261
  # Checks for Xcomposite extension

1262 1263 1264
  if test x"$enable_xcomposite" != xno; then
    if $PKG_CONFIG --exists xcomposite ; then
      AC_DEFINE(HAVE_XCOMPOSITE, 1, [Have the XCOMPOSITE X extension])
1265

1266 1267 1268 1269 1270 1271
      X_PACKAGES="$X_PACKAGES xcomposite"
      X_EXTENSIONS="$X_EXTENSIONS Composite"
      GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xcomposite"
    elif test x"$enable_xcomposite" = xyes; then
      AC_MSG_ERROR([Xcomposite support requested but xcomposite not found])
    fi
1272 1273 1274 1275
  fi

  # Checks for Xdamage extension

1276 1277 1278
  if test x"$enable_xdamage" != xno; then
    if $PKG_CONFIG --exists xdamage ; then
      AC_DEFINE(HAVE_XDAMAGE, 1, [Have the XDAMAGE X extension])
1279

1280 1281 1282 1283 1284 1285
      X_PACKAGES="$X_PACKAGES xdamage"
      X_EXTENSIONS="$X_EXTENSIONS DAMAGE"
      GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xdamage"
    elif test x"$enable_xdamage" = xyes; then
      AC_MSG_ERROR([Xdamage support requested but xdamage not found])
    fi
1286 1287
  fi

1288
  if $have_base_x_pc ; then
1289 1290
    GDK_EXTRA_LIBS="$x_extra_libs"
  else
1291
    GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs -lXext -lX11 $GDK_EXTRA_LIBS"
1292 1293 1294 1295 1296
  fi

  CPPFLAGS="$gtk_save_cppflags"
  LIBS="$gtk_save_libs"

1297
  AM_CONDITIONAL(USE_X11, true)
1298 1299

  # strip leading space
1300
  X_EXTENSIONS=${X_EXTENSIONS#* }
1301

1302
else
1303 1304
  XPACKAGES=

1305
  AM_CONDITIONAL(USE_X11, false)
1306 1307
fi

1308
# Check for gio-unix
1309 1310 1311 1312 1313
if test "$os_win32" != "yes"; then
  # Pull in gio-unix for gtk-launch usage, see at least
  # gtk-launch.c
  have_gio_unix=yes
fi
1314
if test "$have_gio_unix" = "yes"; then
1315
  GDK_GIO_PACKAGE="gio-unix-2.0 >= glib_required_version"
1316 1317 1318
  AC_DEFINE([HAVE_GIO_UNIX], [1],
            [Define if gio-unix is available])
else
1319
  GDK_GIO_PACKAGE="gio-2.0 >= glib_required_version"
1320 1321
fi

1322 1323 1324 1325
# Check for Vulkan support.

if test "x$enable_vulkan" != "xno"; then
      vulkan_error=""
1326 1327 1328
      AC_CHECK_HEADER([vulkan/vulkan.h],
          [AC_CHECK_LIB([vulkan], [vkCreateInstance], [], [vulkan_error="Vulkan library not found"])],
          [vulkan_error="Vulkan header not found"])
1329
      if test "x$vulkan_error" != "x"; then
1330
          if test "x$enable_vulkan" = "xyes"; then
1331 1332 1333 1334
              AC_MSG_ERROR($vulkan_error)
          else
              AC_MSG_WARN($vulkan_error)
          fi
1335
          vulkan_result="no ($vulkan_error)"
1336 1337 1338
      else
          GDK_EXTRA_LIBS="-lvulkan"
          GDK_WINDOWING="$GDK_WINDOWING
1339
#define GDK_RENDERING_VULKAN"
1340 1341
          AC_PATH_PROG([GLSLC], [glslc])
          vulkan_result="yes"
1342 1343 1344
      fi
else
      AC_MSG_WARN(Vulkan support explicitly disabled)
1345
      vulkan_result="no (Vulkan support explicitly disabled)"
1346
fi
1347
AM_CONDITIONAL(HAVE_VULKAN, test "$vulkan_result" = "yes")
1348

1349
# Check for Pango flags
1350

1351 1352 1353 1354
AC_MSG_CHECKING(Pango flags)
if $PKG_CONFIG --exists $PANGO_PACKAGES ; then
        PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_PACKAGES`
        PANGO_LIBS=`$PKG_CONFIG --libs $PANGO_PACKAGES`
1355

1356 1357 1358
        AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
else
        AC_MSG_ERROR([
1359 1360
*** Pango not found. Pango built with Cairo support is required
*** to build GTK+. See http://www.pango.org for Pango information.
1361 1362
])
fi
1363

1364
CFLAGS="$CFLAGS $PANGO_CFLAGS"
1365

1366 1367 1368
if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
        :
else
1369 1370 1371
	gtk_save_LIBS="$LIBS"
        LIBS="$PANGO_LIBS $LIBS"
        AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
1372
*** Can't link to Pango. Pango is required to build
1373 1374
*** GTK+. For more information see http://www.pango.org]))
        LIBS="$gtk_save_LIBS"
1375
fi
1376

1377 1378
CFLAGS="$saved_cflags"
LDFLAGS="$saved_ldflags"
1379

1380
GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 >= gdk_pixbuf_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version"
1381
GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $cairo_backends epoxy >= epoxy_required_version"
1382