configure.ac 62.1 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])
Matthias Clasen's avatar
Matthias Clasen committed
12
m4_define([gtk_minor_version], [19])
Matthias Clasen's avatar
Matthias Clasen committed
13
m4_define([gtk_micro_version], [9])
Matthias Clasen's avatar
Matthias Clasen committed
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
# This is the X.Y used in -lgtk-FOO-X.Y
20
m4_define([gtk_api_version], [3.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], [3.0.0])
42 43

# required versions of other packages
44
m4_define([glib_required_major], [2])
45 46
m4_define([glib_required_minor], [45])
m4_define([glib_required_micro], [8])
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.0])
64
m4_define([mirclient_required_version], [0.11.0])
65
m4_define([mircookie_required_version], [0.17.0])
66
m4_define([epoxy_required_version], [1.0])
67 68 69 70 71
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
72 73
INTROSPECTION_REQUIRED_VERSION=introspection_required_version

74 75 76 77 78
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)
79
AC_SUBST(INTROSPECTION_REQUIRED_VERSION)
80 81 82 83

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

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

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

92
#
93 94 95 96 97 98 99 100
# 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
101 102


103 104 105 106 107 108 109 110
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
111 112 113
AC_SUBST(GTK_MAJOR_VERSION)
AC_SUBST(GTK_MINOR_VERSION)
AC_SUBST(GTK_MICRO_VERSION)
114 115
AC_SUBST(GTK_INTERFACE_AGE)
AC_SUBST(GTK_BINARY_AGE)
Owen Taylor's avatar
Owen Taylor committed
116
AC_SUBST(GTK_API_VERSION)
117
AC_SUBST(GTK_VERSION)
118
AC_SUBST(GTK_BINARY_VERSION)
119 120

# libtool versioning
121 122 123 124 125 126
#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`

127 128 129 130 131 132
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
133
AC_SUBST(LT_CURRENT_MINUS_AGE)
134

135 136
m4_define([gail_lt_current],[0])
m4_define([gail_lt_revision],[0])
137 138 139 140 141
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])
142

143 144 145 146 147 148 149 150 151 152 153 154 155
# 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

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

164
GETTEXT_PACKAGE=gtk30
165
AC_SUBST(GETTEXT_PACKAGE)
166 167
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
                   [The prefix for our gettext translation domains.])
168

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

194
AC_SUBST(DISABLE_ON_W32)
195
AC_SUBST(LIB_EXE_MACHINE_FLAG)
196
AC_SUBST(EXE_MANIFEST_ARCHITECTURE)
197

198 199 200 201
case $host in
  *-*-linux*)
    os_linux=yes
    ;;
202 203 204
  *-*-darwin*)
    os_darwin=yes
    ;;
205
esac
206

207 208 209
# Define _GNU_SOURCE etc. where appropriate, e.g. for strptime() on glibc
AC_USE_SYSTEM_EXTENSIONS

210
dnl
211 212
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.
213
dnl
214
AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], gcc)
215
AC_LANG_PUSH([C++])
216

217 218 219
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
                                   [[class a { int b; } c;]])],
                  [],[CXX=])
220
AM_CONDITIONAL(HAVE_CXX, test "$CXX" != "")
221 222 223

gtk_save_cxxflags="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -x objective-c++"
224 225 226
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@interface Foo @end]],
                                   [[]])],
                  [OBJC=yes],[OBJC=no])
227
AM_CONDITIONAL(HAVE_OBJC, test "$OBJC" = "yes")
228
CXXFLAGS="$gtk_save_cxxflags"
229
AC_LANG_POP([C++])
230

Tor Lillqvist's avatar
Tor Lillqvist committed
231
if test "$os_win32" = "yes"; then
232 233 234 235 236 237 238 239 240 241
  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

242 243 244 245 246
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
247

248 249 250
# Make sure we use 64-bit versions of various file stuff.
AC_SYS_LARGEFILE

251
AM_PROG_AS
252
AC_PATH_TOOL(NM, nm, nm)
253

Tor Lillqvist's avatar
Tor Lillqvist committed
254 255 256 257 258 259 260 261 262 263 264 265 266
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")
267
AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
268
AM_CONDITIONAL(OS_LINUX, test "$os_linux" = "yes")
269
AM_CONDITIONAL(OS_DARWIN, test "$os_darwin" = "yes")
Tor Lillqvist's avatar
Tor Lillqvist committed
270 271

if test "$os_win32" = "yes"; then
272 273 274 275
  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
276 277 278 279
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
fi
AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)

280 281
m4_define([debug_default],
          m4_if(m4_eval(gtk_minor_version % 2), [1], [yes], [minimum]))
282 283

dnl declare --enable-* args and collect ac_help strings
284
AC_ARG_ENABLE(debug,
285 286 287
              [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
                              [turn on debugging @<:@default=debug_default@:>@])],,
              [enable_debug=debug_default])
288

289 290 291 292 293
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)
294

295
AC_ARG_ENABLE(xkb,
296
              [AS_HELP_STRING([--enable-xkb],
297
                              [support XKB extension [default=maybe]])],,
298
              [enable_xkb="maybe"])
299
AC_ARG_ENABLE(xinerama,
300
              [AS_HELP_STRING([--enable-xinerama],
301
	                      [support Xinerama extension [default=maybe]])],,
302
              [enable_xinerama="maybe"])
303
AC_ARG_ENABLE(xrandr,
304
              [AS_HELP_STRING([--enable-xrandr],
305
                              [support XRandR extension [default=maybe]])],,
306 307
              [enable_xrandr="maybe"])
AC_ARG_ENABLE(xfixes,
308
              [AS_HELP_STRING([--enable-xfixes],
309
                              [support XFixes extension [default=maybe]])],,
310 311
              [enable_xfixes="maybe"])
AC_ARG_ENABLE(xcomposite,
312
              [AS_HELP_STRING([--enable-xcomposite],
313
                              [support X Composite extension [default=maybe]])],,
314 315
              [enable_xcomposite="maybe"])
AC_ARG_ENABLE(xdamage,
316
              [AS_HELP_STRING([--enable-xdamage],
317
                              [support X Damage extension [default=maybe]])],,
318
              [enable_xdamage="maybe"])
319

320
AC_ARG_ENABLE(x11-backend,
321
              [AS_HELP_STRING([--enable-x11-backend],
322 323 324
                              [enable the X11 gdk backend])],
			      [backend_set=yes])
AC_ARG_ENABLE(win32-backend,
325
              [AS_HELP_STRING([--enable-win32-backend],
326 327 328
                              [enable the Win32 gdk backend])],
			      [backend_set=yes])
AC_ARG_ENABLE(quartz-backend,
329
              [AS_HELP_STRING([--enable-quartz-backend],
330 331
                              [enable the quartz gdk backend])],
			      [backend_set=yes])
332
AC_ARG_ENABLE(broadway-backend,
333
              [AS_HELP_STRING([--enable-broadway-backend],
334 335
                              [enable the broadway (HTML5) gdk backend])],
			      [backend_set=yes])
Kristian Høgsberg's avatar
Kristian Høgsberg committed
336
AC_ARG_ENABLE(wayland-backend,
337
              [AS_HELP_STRING([--enable-wayland-backend],
Kristian Høgsberg's avatar
Kristian Høgsberg committed
338 339
                              [enable the wayland gdk backend])],
			      [backend_set=yes])
340 341 342 343
AC_ARG_ENABLE(mir-backend,
              [AS_HELP_STRING([--enable-mir-backend],
                              [enable the Mir gdk backend])],
			      [backend_set=yes])
344 345 346 347 348 349

if test -z "$backend_set"; then
  if test "$platform_win32" = yes; then
    enable_win32_backend=yes
  else
    enable_x11_backend=yes
350
    enable_wayland_backend=maybe
351
    enable_mir_backend=no
352 353 354
  fi
fi

355 356 357 358 359
AC_ARG_ENABLE(quartz-relocation,
              [AS_HELP_STRING([--enable-quartz-relocation],
                              [enable bundle-based relocation functions])],
                              [quartz_relocation=yes])

360
cairo_backends=
361
backend_immodules=
362
have_gio_unix=no
363
GDK_BACKENDS=
364
GDK_EXTRA_LIBS=
365
GDK_EXTRA_CFLAGS=
366 367
GDK_WINDOWING=
PANGO_PACKAGES="pango pangocairo"
368

369
ENABLE_ON_X11='%'
370
if test "$enable_x11_backend" = "yes"; then
371 372 373 374
  # 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"
375 376 377
  backend_immodules="$backend_immodules,xim"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_X11"
378
  ENABLE_ON_X11=''
Tor Lillqvist's avatar
Tor Lillqvist committed
379
fi
380
AC_SUBST(ENABLE_ON_X11)
381

382
if test "$enable_win32_backend" = "yes"; then
383 384
  cairo_backends="$cairo_backends cairo-win32"
  GDK_BACKENDS="$GDK_BACKENDS win32"
385 386 387
  backend_immodules="$backend_immodules,ime"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_WIN32"
388
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi"
389 390 391 392
  AM_CONDITIONAL(USE_WIN32, true)
  PANGO_PACKAGES="pangowin32 pangocairo"
else
  AM_CONDITIONAL(USE_WIN32, false)
393
fi
394

395
DISABLE_ON_QUARTZ=''
396
if test "x$enable_quartz_backend" = xyes; then
397 398
  cairo_backends="$cairo_backends cairo-quartz"
  GDK_BACKENDS="$GDK_BACKENDS quartz"
399
  backend_immodules="$backend_immodules,quartz"
400 401 402
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_QUARTZ"
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa"
403
  DISABLE_ON_QUARTZ='%'
404
  AM_CONDITIONAL(USE_QUARTZ, true)
405 406 407
  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
408
else
409
  AM_CONDITIONAL(USE_QUARTZ, false)
Tor Lillqvist's avatar
Tor Lillqvist committed
410
fi
411
AC_SUBST(DISABLE_ON_QUARTZ)
412

413 414 415
AC_CHECK_LIB([rt], [shm_open], [SHM_LIBS="-lrt"], [SHM_LIBS=""])
AC_SUBST(SHM_LIBS)

416
AC_CHECK_FUNCS(posix_fallocate flockfile _lock_file)
417

418
if test "x$enable_broadway_backend" = xyes; then
419
  GDK_BACKENDS="$GDK_BACKENDS broadway"
420
  cairo_backends="$cairo_backends cairo"
421
  backend_immodules="$backend_immodules,broadway"
422 423 424 425 426 427 428
  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
429

430 431
PKG_PROG_PKG_CONFIG

432
WAYLAND_DEPENDENCIES="wayland-client >= wayland_required_version wayland-protocols >= wayland_protocols_required_version xkbcommon >= 0.2.0 wayland-cursor >= wayland_required_version wayland-egl"
433 434 435 436 437 438 439 440 441 442 443 444 445
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
446 447
  # For the cairo image backend
  cairo_backends="$cairo_backends cairo"
448
  AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, `$PKG_CONFIG --variable=pkgdatadir wayland-protocols`)
Kristian Høgsberg's avatar
Kristian Høgsberg committed
449 450 451
  GDK_BACKENDS="$GDK_BACKENDS wayland"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_WAYLAND"
452
  WAYLAND_PACKAGES="$WAYLAND_DEPENDENCIES"
453
  AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
454 455 456 457
  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
458 459 460 461 462
  AM_CONDITIONAL(USE_WAYLAND, true)
else
  AM_CONDITIONAL(USE_WAYLAND, false)
fi

463
MIR_DEPENDENCIES="mirclient >= mirclient_required_version mircookie >= mircookie_required_version"
464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486
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

487
# strip leading space
488
GDK_BACKENDS=${GDK_BACKENDS#* }
489

490
AC_SUBST(GDK_BACKENDS)
Tor Lillqvist's avatar
Tor Lillqvist committed
491

492 493 494
if test -z "$GDK_BACKENDS"; then
  AC_MSG_ERROR([No GDK backends selected.])
fi
Tor Lillqvist's avatar
Tor Lillqvist committed
495

496
if test "x$enable_debug" = "xyes"; then
Tim Janik's avatar
Tim Janik committed
497
  test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
498
  GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_ENABLE_CONSISTENCY_CHECKS"
Elliot Lee's avatar
Elliot Lee committed
499
else
500
  if test "x$enable_debug" = "xno"; then
501
    GTK_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
502
  else
503
    GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
504
  fi
Elliot Lee's avatar
Elliot Lee committed
505
fi
506
GTK_DEBUG_FLAGS="$GTK_DEBUG_FLAGS $GLIB_VERSION_CFLAGS"
Elliot Lee's avatar
Elliot Lee committed
507 508 509 510

# Build time sanity check...
AM_SANITY_CHECK

Raja R Harinath's avatar
Raja R Harinath committed
511
changequote(,)dnl
512
if test "x$GCC" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
513 514 515 516
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
517

518
  if test "x$enable_ansi" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
519 520 521 522 523 524 525 526 527
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac

    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
528
  fi
529 530
fi
changequote([,])dnl
Tor Lillqvist's avatar
Tor Lillqvist committed
531

532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555
# 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
556
    esac
557 558 559 560 561 562 563
    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
564
  fi
Elliot Lee's avatar
Elliot Lee committed
565 566
fi

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

581
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
582

LRN's avatar
LRN committed
583 584 585 586 587 588 589 590 591 592 593 594 595 596 597
# Remove this check once cairo_required_version reaches at least 1.14.4
case $host_os in
  mingw*)
    PKG_CHECK_MODULES(CAIRO, [cairo >= cairo_required_version])
    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
You need cairo version newer than 2015-04-14])])
    ;;
  *)
    ;;
esac


598 599
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])

600 601 602 603
dnl ******************************************************
dnl * See whether to include shared library dependencies *
dnl ******************************************************

604
AC_ARG_ENABLE(explicit-deps,
605
              [AS_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
606 607
                              [use explicit dependencies in .pc files [default=auto]])],,
              [enable_explicit_deps=auto])
608

609
AC_MSG_CHECKING([whether to write dependencies into .pc files])
610 611
case $enable_explicit_deps in
  auto)
612
    export SED
613
    deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
614
    if test "x$deplibs_check_method" != xpass_all || test "x$enable_static" = xyes ; then
615
      enable_explicit_deps=yes
616
    else
617
      enable_explicit_deps=no
618 619
    fi
  ;;
620
  yes|no)
621 622 623 624 625 626 627 628
  ;;
  *) 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)

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

632
AC_PATH_PROGS(PERL, perl5 perl)
633

634
AC_CHECK_FUNCS(lstat mkstemp)
635
AC_CHECK_FUNCS(localtime_r)
636 637 638

# _NL_TIME_FIRST_WEEKDAY is an enum and not a define
AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY])
639 640 641 642
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])
643 644 645 646 647
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
648

649 650
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
651 652 653 654
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])
655 656 657 658 659 660 661 662
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])
663 664 665 666
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])
667 668 669 670 671 672 673 674
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])
675 676 677 678
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])
679 680 681 682 683
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
684

Owen Taylor's avatar
Owen Taylor committed
685
# i18n stuff
Matthias Clasen's avatar
Matthias Clasen committed
686
ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
687
AM_GLIB_GNU_GETTEXT
688 689

AC_MSG_CHECKING([whether xgettext supports ui files])
690
if $ac_cv_path_XGETTEXT --output=- --color=no --language=Glade $srcdir/gtk/ui/gtkfilechooserwidget.ui > /dev/null 2>&1; then
691 692 693 694 695 696
  AC_MSG_RESULT([yes])
else
  AC_MSG_RESULT([no])
  AC_MSG_ERROR([GNU gettext 0.18.3 or newer is required])
fi

697
LIBS="$LIBS $INTLLIBS"
698 699 700 701 702
AC_CONFIG_COMMANDS([po-properties],
                   [[case "$CONFIG_FILES" in *po-properties/Makefile.in*)
                       sed -e "/POTFILES =/r po-properties/POTFILES" po-properties/Makefile.in > po-properties/Makefile
                     esac]],
                   [[]])
703

704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723
dnl Snippet below is copied from AM_GLIB_GNU_GETTEXT to generate a first
dnl po-properties/POTFILES during configure; see GNOME #573515.
dnl
dnl Generate list of files to be processed by xgettext which will
dnl be included in po-properties/Makefile.
test -d po-properties || mkdir po-properties
if test "x$srcdir" != "x."; then
  if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
    popropsrcprefix="$srcdir/"
  else
    popropsrcprefix="../$srcdir/"
  fi
else
  popropsrcprefix="../"
fi
rm -f po-properties/POTFILES
sed -e "/^#/d" -e "/^\$/d" -e "s,.*,	$popropsrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
< $srcdir/po-properties/POTFILES.in > po-properties/POTFILES
dnl (End of adapted AM_GLIB_GNU_GETTEXT snippet.)

724
AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
Owen Taylor's avatar
Owen Taylor committed
725

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

730
gtk_save_LIBS=$LIBS
731
LIBS="$LIBS -lm"
732 733 734 735 736 737 738 739 740 741 742 743 744 745
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)])

746 747
LIBS=$gtk_save_LIBS

748 749 750
AC_MSG_CHECKING(for the BeOS)
case $host in
  *-*-beos*)
751
    AC_MSG_RESULT(yes)
752 753
    MATH_LIB=
  ;;
754 755
  *)
    AC_MSG_RESULT(no)
756 757
  ;;
esac
758

Benjamin Otte's avatar
Benjamin Otte committed
759
AC_SUBST(MATH_LIB)
760 761 762 763 764 765 766 767 768 769 770 771 772
#
# 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
773

774
#
Owen Taylor's avatar
Owen Taylor committed
775
# Run AM_PATH_GLIB_2_0 to make sure that GLib is installed and working
776
#
777

778
AM_PATH_GLIB_2_0(glib_required_version, :,
779
  AC_MSG_ERROR([
780
*** GLIB glib_required_version or better is required. The latest version of
781
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
782
  gobject gmodule-no-export)
783

784 785 786 787 788 789
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
790 791 792 793 794 795 796
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

797 798
AC_CHECK_HEADERS(sys/mman.h,
                 AC_DEFINE(HAVE_SYS_MMAN_H, 1,
Tarnyko's avatar
Tarnyko committed
799
                           [Define to 1 if mman.h is available]))
800 801 802 803 804 805 806 807 808
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]))
809

810
AC_MSG_CHECKING([for GNU ftw extensions])
811 812 813 814 815
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])
816 817
if test $gtk_ok = yes; then
    AC_MSG_RESULT([yes])
818
    AC_DEFINE(HAVE_GNU_FTW, 1, [Have GNU ftw])
819 820 821 822
else
    AC_MSG_RESULT([no])
fi

823 824 825 826 827 828 829 830 831 832 833 834 835
#
# 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
836 837 838
saved_cflags="$CFLAGS"
saved_ldflags="$LDFLAGS"

839

840 841
# Checks for library functions.
AC_FUNC_MMAP
842

Matthias Clasen's avatar
Matthias Clasen committed
843
AC_CHECK_FUNCS(mallinfo)
844 845
AC_CHECK_FUNCS(getresuid)
AC_TYPE_UID_T
846

847 848
# Check for round(), rint(), isnan(), isinf() and nearbyint()
AC_CHECK_LIB(m,round,,)
849
AC_CHECK_FUNCS(round rint nearbyint sincos)
850
AC_CHECK_DECLS([isnan, isinf], [], [], [[#include <math.h>]])
851

Matthias Clasen's avatar
Matthias Clasen committed
852 853 854 855
# Checks for gdkspawn
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)

856 857
AC_MSG_CHECKING(whether to build dynamic modules)

858
AC_ARG_ENABLE(modules,
859
              [AS_HELP_STRING([--disable-modules],
860
                              [disable dynamic module loading])])
861

862
dynworks=false
863
build_dynamic_modules=no
864
deps=
865
if test x$enable_modules = xno; then
866 867 868 869
    AC_MSG_RESULT(no)
else
    AC_MSG_RESULT(yes)
    AC_MSG_CHECKING(whether dynamic modules work)
870
    ## for loop is to strip newline
871
    tmp=`$PKG_CONFIG --variable=gmodule_supported gmodule-no-export-2.0`
872 873 874
    for I in $tmp; do
        dynworks=$I
    done
875

876 877 878
    dnl Now we check to see if our libtool supports shared lib deps
    dnl (in a rather ugly way even)
    if $dynworks; then
879 880
        module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
        module_deplibs_check=`$module_libtool_config | \
881 882
            grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
            sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
883 884 885
        if test "x$module_deplibs_check" = "xnone" || \
           test "x$module_deplibs_check" = "xunknown" || \
           test "x$module_deplibs_check" = "x"; then
886 887 888
            dynworks=false
        fi
    fi
889

890
    if $dynworks; then
891
        build_dynamic_modules=yes
892 893
        AC_DEFINE(USE_GMODULE, 1,
                  [Define to 1 if gmodule works and should be used])
894 895
        AC_MSG_RESULT(yes)
    else
896
        build_dynamic_modules=no
897 898
        AC_MSG_RESULT(no)
    fi
899
fi
Havoc Pennington's avatar
Havoc Pennington committed
900

901
AM_CONDITIONAL(BUILD_DYNAMIC_MODULES, $dynworks)
902

903 904 905 906 907 908
#
# Allow building some or all immodules included
#
AC_MSG_CHECKING(immodules to build)

AC_ARG_WITH(included_immodules,
909 910
            [AS_HELP_STRING([--with-included-immodules=MODULE1,MODULE2,...],
                            [build the specified input methods into gtk])])
911

912
if $dynworks; then
913 914 915 916 917 918 919 920
   :
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

921
all_immodules="am-et,cedilla,cyrillic-translit,inuktitut,ipa,multipress,thai,ti-er,ti-et,viqr$backend_immodules"
922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960

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])
961
AM_CONDITIONAL(INCLUDE_IM_QUARTZ, [test x"$INCLUDE_quartz" = xyes])
962
AM_CONDITIONAL(INCLUDE_IM_BROADWAY, [test x"$INCLUDE_broadway" = xyes])
963 964 965 966 967 968
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])

969 970 971
# Checks to see whether we should include mediaLib
# support.
#
972
AC_CHECK_HEADER(sys/systeminfo.h,
973
                AC_DEFINE(HAVE_SYS_SYSTEMINFO_H, 1,
974 975 976 977
                          [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]))
978

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

981
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
982

983 984 985
########################################
# Windowing system checks
########################################
986

987 988 989
# GTK+ uses some X calls, so needs to link against X directly
GTK_DEP_PACKAGES_FOR_X=
GTK_DEP_LIBS_FOR_X=
990
X_EXTENSIONS=
991

992
if test "x$enable_x11_backend" = xyes; then
993 994
  X_PACKAGES=fontconfig

995 996 997 998 999 1000 1001 1002 1003
  #
  # 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

1004
  #
1005
  # Check for basic X packages; we use pkg-config if available
1006
  #
1007
  if $PKG_CONFIG --exists x11 xext; then
1008
    have_base_x_pc=true
1009 1010
    X_PACKAGES="$X_PACKAGES x11 xext"
    x_libs="`$PKG_CONFIG --libs x11 xext`"
1011
    X_CFLAGS="`$PKG_CONFIG --cflags x11 xext`"
1012

1013 1014 1015 1016
    # 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
1017
      case $I in
1018 1019 1020 1021
        *.la) ;;
        *) x_libs_for_checks="$x_libs_for_checks $I" ;;
      esac
    done
1022

1023 1024 1025 1026 1027 1028 1029
    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
1030

1031
    x_cflags="$X_CFLAGS"
1032
    x_libs_for_checks="$X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
Elliot Lee's avatar
Elliot Lee committed
1033

1034
    GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
1035 1036
  fi

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

1040
  gtk_save_cppflags="$CPPFLAGS"
1041
  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Alexander Larsson's avatar
Alexander Larsson committed
1042

1043 1044
  gtk_save_LIBS=$LIBS
  LIBS="$x_libs_for_checks $LIBS"
1045

1046 1047 1048 1049
  # 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, :,
1050
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
1051
  AC_CHECK_FUNC(XextFindDisplay, :,
1052
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
1053

1054 1055 1056 1057 1058 1059 1060 1061 1062 1063
  # 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>]])
1064

1065 1066 1067
  # Check for XKB support.

  if test "x$enable_xkb" = "xyes"; then
1068 1069 1070 1071
        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.]))
1072
  elif test "x$enable_xkb" = "xmaybe"; then
1073
        AC_CHECK_FUNC(XkbQueryExtension,
1074
                      X_EXTENSIONS="$X_EXTENSIONS XKB"
1075
                      AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]))
1076 1077 1078 1079
  else
        AC_MSG_WARN(XKB support explicitly disabled)
  fi

1080
  # Check for shaped window extension
1081

1082 1083
  AC_CHECK_FUNC(XShapeCombineMask, :,
     [AC_MSG_ERROR([Shape extension not found, check your development headers])])
1084

1085
  # X SYNC check
1086 1087
  gtk_save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS $x_cflags"
1088

1089 1090
  AC_CHECK_FUNC(XSyncQueryExtension,
      [AC_CHECK_HEADER(X11/extensions/sync.h,
1091
	  AC_DEFINE(HAVE_XSYNC, 1, [Have the SYNC extension library]),
1092
	  :, [#include <X11/Xlib.h>])])
1093

1094 1095
  CFLAGS="$gtk_save_CFLAGS"

1096
  if test "x$enable_xinerama" != "xno"; then
1097
    # Check for Xinerama extension (Solaris impl or Xfree impl)
1098 1099 1100
    have_xfree_xinerama=false
    have_solaris_xinerama=false

1101 1102
    gtk_save_cppflags="$CPPFLAGS"
    CPPFLAGS="$CPPFLAGS $x_cflags"
1103

1104
    # Check for XFree
1105
    AC_MSG_CHECKING(for Xinerama packages)
1106

1107
    if $PKG_CONFIG --exists xinerama ; then
1108
       AC_MSG_RESULT(yes)
1109 1110
       have_xfree_xinerama=true
       X_PACKAGES="$X_PACKAGES xinerama"
1111
    else
1112
       AC_MSG_RESULT(no)
1113
       AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
1114
	   [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
1115 1116 1117 1118 1119 1120
	   [GTK_ADD_LIB(x_extra_libs,Xinerama)
	   have_xfree_xinerama=true], :,
           [#include <X11/Xlib.h>])])
    fi

    if $have_xfree_xinerama ; then
1121
      X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1122 1123 1124 1125 1126 1127 1128 1129
      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
1130

1131 1132 1133
	    have_solaris_xinerama=false
	    AC_CHECK_FUNC(XineramaGetInfo,
	        [AC_CHECK_HEADER(X11/extensions/xinerama.h,
1134
		    [have_solaris_xinerama=true], :,
1135
		    [#include <X11/Xlib.h>])])
1136

1137 1138
	    AC_MSG_CHECKING(for Xinerama support on Solaris)

1139
            if $have_solaris_xinerama ; then
1140
              X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153
              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
1154
  fi
1155 1156 1157 1158 1159
  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
1160

1161 1162 1163 1164
  # Check for XGetEventData for GenericEvents
  AC_CHECK_FUNC(XGetEventData,
                AC_DEFINE(HAVE_XGENERICEVENTS, 1, [Have XGenericEvent]))

1165
  # set up things for XInput
1166
  if $PKG_CONFIG --exists "xi" ; then
1167

1168
    X_PACKAGES="$X_PACKAGES xi"
1169
    GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xi"
1170 1171

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

1175 1176
    gtk_save_LIBS="$LIBS"
    LIBS="$LIBS -lXi"
1177 1178 1179 1180 1181 1182 1183 1184 1185

    # 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>]])])
1186
    LIBS="$gtk_save_LIBS"
1187 1188 1189 1190 1191 1192

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

1195 1196
  AS_IF([test "x$have_xinput2" != "xyes"],
        [AC_MSG_ERROR([*** XInput2 extension not found. Check 'config.log' for more details.])])
1197 1198

  # Check for the RANDR extension
1199 1200 1201 1202
  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])

1203 1204 1205
      if $PKG_CONFIG --exists "xrandr >= 1.5.0" ; then
        AC_DEFINE(HAVE_RANDR15, 1, [Have the Xrandr 1.5 extension library])
      fi
1206 1207 1208 1209 1210
      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
1211
  fi
1212

1213
  # Checks for Xcursor library
1214

1215
  if $PKG_CONFIG --exists xcursor ; then
1216
    AC_DEFINE(HAVE_XCURSOR, 1, [Have the Xcursor library])
1217

1218 1219 1220 1221
    X_PACKAGES="$X_PACKAGES xcursor"
  fi

  # Checks for XFixes extension
1222

1223 1224 1225
  if test x"$enable_xfixes" != xno; then
    if $PKG_CONFIG --exists xfixes ; then
      AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension])
1226

1227 1228 1229 1230 1231 1232
      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
1233 1234
  fi

1235 1236
  # Checks for Xcomposite extension

1237 1238 1239
  if test x"$enable_xcomposite" != xno; then
    if $PKG_CONFIG --exists xcomposite ; then
      AC_DEFINE(HAVE_XCOMPOSITE, 1, [Have the XCOMPOSITE X extension])
1240

1241 1242 1243 1244 1245 1246
      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
1247 1248 1249 1250
  fi

  # Checks for Xdamage extension

1251 1252 1253
  if test x"$enable_xdamage" != xno; then
    if $PKG_CONFIG --exists xdamage ; then
      AC_DEFINE(HAVE_XDAMAGE, 1, [Have the XDAMAGE X extension])
1254

1255 1256 1257 1258 1259 1260
      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
1261 1262
  fi

1263
  if $have_base_x_pc ; then
1264 1265
    GDK_EXTRA_LIBS="$x_extra_libs"
  else
1266
    GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs -lXext -lX11 $GDK_EXTRA_LIBS"
1267 1268 1269 1270 1271
  fi

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

1272
  AM_CONDITIONAL(USE_X11, true)
1273 1274

  # strip leading space
1275
  X_EXTENSIONS=${X_EXTENSIONS#* }
1276

1277
else
1278 1279
  XPACKAGES=

1280
  AM_CONDITIONAL(USE_X11, false)
1281 1282
fi

1283
# Check for gio-unix
1284 1285 1286 1287 1288
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
1289
if test "$have_gio_unix" = "yes"; then
1290
  GDK_GIO_PACKAGE="gio-unix-2.0 >= glib_required_version"
1291 1292 1293
  AC_DEFINE([HAVE_GIO_UNIX], [1],
            [Define if gio-unix is available])
else
1294
  GDK_GIO_PACKAGE="gio-2.0 >= glib_required_version"
1295 1296
fi

1297
# Check for Pango flags
1298

1299 1300 1301 1302
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`
1303

1304 1305 1306
        AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
else
        AC_MSG_ERROR([
1307 1308
*** Pango not found. Pango built with Cairo support is required
*** to build GTK+. See http://www.pango.org for Pango information.
1309 1310
])
fi
1311

1312
CFLAGS="$CFLAGS $PANGO_CFLAGS"
1313

1314 1315 1316
if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
        :
else
1317 1318 1319
	gtk_save_LIBS="$LIBS"
        LIBS="$PANGO_LIBS $LIBS"
        AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
1320
*** Can't link to Pango. Pango is required to build
1321 1322
*** GTK+. For more information see http://www.pango.org]))
        LIBS="$gtk_save_LIBS"
1323
fi
1324

1325 1326
CFLAGS="$saved_cflags"
LDFLAGS="$saved_ldflags"
1327

1328
GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 >= gdk_pixbuf_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version"
1329
GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $cairo_backends epoxy >= epoxy_required_version"
1330

1331 1332 1333
PKG_CHECK_MODULES(GDK_DEP, $GDK_PACKAGES $GDK_PRIVATE_PACKAGES)
GDK_DEP_LIBS="$GDK_EXTRA_LIBS $GDK_DEP_LIBS $MATH_LIB"
GDK_DEP_CFLAGS="$GDK_DEP_CFLAGS $GDK_EXTRA_CFLAGS"
1334 1335 1336 1337 1338 1339 1340 1341
#
# If we aren't writing explicit dependencies, then don't put the extra libraries we need
# into the pkg-config files
#
if test $enable_explicit_deps != yes ; then
  GDK_EXTRA_LIBS=
fi

1342
AC_SUBST(GDK_PACKAGES)
Matthias Clasen's avatar
Matthias Clasen committed
1343
AC_SUBST(GDK_PRIVATE_PACKAGES)
1344 1345 1346 1347
AC_SUBST(GDK_EXTRA_LIBS)
AC_SUBST(GDK_EXTRA_CFLAGS)
AC_SUBST(GDK_DEP_LIBS)
AC_SUBST(GDK_DEP_CFLAGS)
1348 1349


1350 1351 1352
########################################
# Check for Accessibility Toolkit flags
########################################
Havoc Pennington's avatar
Havoc Pennington committed
1353

1354
if test x$enable_x11_backend = xyes; then
1355 1356 1357 1358 1359
   ATK_PACKAGES="atk atk-bridge-2.0"
else
   ATK_PACKAGES="atk"
fi

1360
PKG_CHECK_MODULES(ATK, $ATK_PACKAGES)
1361

1362
GTK_PACKAGES="atk >= atk_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version gdk-pixbuf-2.0 >= gdk_pixbuf_required_version gio-2.0 >= glib_required_version"