configure.ac 60.8 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], [15])
Matthias Clasen's avatar
Matthias Clasen committed
13
m4_define([gtk_micro_version], [2])
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_version], [2.43.0])
45
m4_define([pango_required_version], [1.36.7])
Matthias Clasen's avatar
Matthias Clasen committed
46
m4_define([atk_required_version], [2.15.1])
47
m4_define([cairo_required_version], [1.14.0])
48
m4_define([gdk_pixbuf_required_version], [2.30.0])
49
m4_define([introspection_required_version], [1.39.0])
50
m4_define([wayland_required_version], [1.5.91])
51
m4_define([mirclient_required_version], [0.9.0])
52
m4_define([epoxy_required_version], [1.0])
53 54 55 56 57
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
58 59
INTROSPECTION_REQUIRED_VERSION=introspection_required_version

60 61 62 63 64
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)
65
AC_SUBST(INTROSPECTION_REQUIRED_VERSION)
66 67 68 69

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

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

73
# Support silent build rules. Disable
Javier Jardón's avatar
Javier Jardón committed
74
# by either passing --disable-silent-rules to configure or passing V=1
75
# to make
76
AM_SILENT_RULES([yes])
77

78
#
79 80 81 82 83 84 85 86
# 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
87 88


89 90 91 92 93 94 95 96
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
97 98 99
AC_SUBST(GTK_MAJOR_VERSION)
AC_SUBST(GTK_MINOR_VERSION)
AC_SUBST(GTK_MICRO_VERSION)
100 101
AC_SUBST(GTK_INTERFACE_AGE)
AC_SUBST(GTK_BINARY_AGE)
Owen Taylor's avatar
Owen Taylor committed
102
AC_SUBST(GTK_API_VERSION)
103
AC_SUBST(GTK_VERSION)
104
AC_SUBST(GTK_BINARY_VERSION)
105 106

# libtool versioning
107 108 109 110 111 112
#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`

113 114 115 116 117 118
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
119
AC_SUBST(LT_CURRENT_MINUS_AGE)
120

121 122
m4_define([gail_lt_current],[0])
m4_define([gail_lt_revision],[0])
123 124 125 126 127
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])
128

129 130 131 132 133 134 135 136 137 138 139 140 141
# 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

142 143
# Checks for programs.
AC_PROG_CC
144
AX_PROG_CC_FOR_BUILD
145
AC_PROG_CC_C_O
146
AC_PROG_MKDIR_P
147 148 149 150
AC_PROG_INSTALL
AC_PROG_MAKE_SET


151
GETTEXT_PACKAGE=gtk30
152
AC_SUBST(GETTEXT_PACKAGE)
153 154
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
                   [The prefix for our gettext translation domains.])
155

156 157
MATH_LIB=-lm
AC_MSG_CHECKING([for native Win32])
158
LIB_EXE_MACHINE_FLAG=X86
159
EXE_MANIFEST_ARCHITECTURE=X86
160
DISABLE_ON_W32=''
161 162
case "$host" in
  *-*-mingw*)
163 164
    dnl Comment-out certain gtk3.types.in lines
    DISABLE_ON_W32='%'
165
    os_win32=yes
166
    gio_can_sniff=no
167
    MATH_LIB=
168 169 170
    case "$host" in
    x86_64-*-*)
      LIB_EXE_MACHINE_FLAG=X64
171
      EXE_MANIFEST_ARCHITECTURE=AMD64
172 173
      ;;
    esac
174 175 176 177 178 179
    ;;
  *)
    os_win32=no
    ;;
esac
AC_MSG_RESULT([$os_win32])
Elliot Lee's avatar
Elliot Lee committed
180

181
AC_SUBST(DISABLE_ON_W32)
182
AC_SUBST(LIB_EXE_MACHINE_FLAG)
183
AC_SUBST(EXE_MANIFEST_ARCHITECTURE)
184

185 186 187 188
case $host in
  *-*-linux*)
    os_linux=yes
    ;;
189 190 191
  *-*-darwin*)
    os_darwin=yes
    ;;
192
esac
193

194 195 196
# Define _GNU_SOURCE etc. where appropriate, e.g. for strptime() on glibc
AC_USE_SYSTEM_EXTENSIONS

197
dnl
198 199
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.
200
dnl
201
AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], gcc)
202
AC_LANG_PUSH([C++])
203

204 205 206
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
                                   [[class a { int b; } c;]])],
                  [],[CXX=])
207
AM_CONDITIONAL(HAVE_CXX, test "$CXX" != "")
208 209 210

gtk_save_cxxflags="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -x objective-c++"
211 212 213
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@interface Foo @end]],
                                   [[]])],
                  [OBJC=yes],[OBJC=no])
214
AM_CONDITIONAL(HAVE_OBJC, test "$OBJC" = "yes")
215
CXXFLAGS="$gtk_save_cxxflags"
216
AC_LANG_POP([C++])
217

Tor Lillqvist's avatar
Tor Lillqvist committed
218
if test "$os_win32" = "yes"; then
219 220 221 222 223 224 225 226 227 228
  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

229 230 231 232 233
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
234

235 236 237
# Make sure we use 64-bit versions of various file stuff.
AC_SYS_LARGEFILE

238
AM_PROG_AS
239
AC_PATH_TOOL(NM, nm, nm)
240

Tor Lillqvist's avatar
Tor Lillqvist committed
241 242 243 244 245 246 247 248 249 250 251 252 253
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")
254
AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
255
AM_CONDITIONAL(OS_LINUX, test "$os_linux" = "yes")
256
AM_CONDITIONAL(OS_DARWIN, test "$os_darwin" = "yes")
Tor Lillqvist's avatar
Tor Lillqvist committed
257 258

if test "$os_win32" = "yes"; then
259 260 261 262
  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
263 264 265 266
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
fi
AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)

267 268
m4_define([debug_default],
          m4_if(m4_eval(gtk_minor_version % 2), [1], [yes], [minimum]))
269 270

dnl declare --enable-* args and collect ac_help strings
271
AC_ARG_ENABLE(debug,
272 273 274
              [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
                              [turn on debugging @<:@default=debug_default@:>@])],,
              [enable_debug=debug_default])
275

276 277 278 279 280
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)
281

282
AC_ARG_ENABLE(xkb,
283
              [AS_HELP_STRING([--enable-xkb],
284
                              [support XKB extension [default=maybe]])],,
285
              [enable_xkb="maybe"])
286
AC_ARG_ENABLE(xinerama,
287
              [AS_HELP_STRING([--enable-xinerama],
288
	                      [support Xinerama extension [default=maybe]])],,
289
              [enable_xinerama="maybe"])
290
AC_ARG_ENABLE(xrandr,
291
              [AS_HELP_STRING([--enable-xrandr],
292
                              [support XRandR extension [default=maybe]])],,
293 294
              [enable_xrandr="maybe"])
AC_ARG_ENABLE(xfixes,
295
              [AS_HELP_STRING([--enable-xfixes],
296
                              [support XFixes extension [default=maybe]])],,
297 298
              [enable_xfixes="maybe"])
AC_ARG_ENABLE(xcomposite,
299
              [AS_HELP_STRING([--enable-xcomposite],
300
                              [support X Composite extension [default=maybe]])],,
301 302
              [enable_xcomposite="maybe"])
AC_ARG_ENABLE(xdamage,
303
              [AS_HELP_STRING([--enable-xdamage],
304
                              [support X Damage extension [default=maybe]])],,
305
              [enable_xdamage="maybe"])
306

307
AC_ARG_ENABLE(x11-backend,
308
              [AS_HELP_STRING([--enable-x11-backend],
309 310 311
                              [enable the X11 gdk backend])],
			      [backend_set=yes])
AC_ARG_ENABLE(win32-backend,
312
              [AS_HELP_STRING([--enable-win32-backend],
313 314 315
                              [enable the Win32 gdk backend])],
			      [backend_set=yes])
AC_ARG_ENABLE(quartz-backend,
316
              [AS_HELP_STRING([--enable-quartz-backend],
317 318
                              [enable the quartz gdk backend])],
			      [backend_set=yes])
319
AC_ARG_ENABLE(broadway-backend,
320
              [AS_HELP_STRING([--enable-broadway-backend],
321 322
                              [enable the broadway (HTML5) gdk backend])],
			      [backend_set=yes])
Kristian Høgsberg's avatar
Kristian Høgsberg committed
323
AC_ARG_ENABLE(wayland-backend,
324
              [AS_HELP_STRING([--enable-wayland-backend],
Kristian Høgsberg's avatar
Kristian Høgsberg committed
325 326
                              [enable the wayland gdk backend])],
			      [backend_set=yes])
327 328 329 330
AC_ARG_ENABLE(mir-backend,
              [AS_HELP_STRING([--enable-mir-backend],
                              [enable the Mir gdk backend])],
			      [backend_set=yes])
331 332 333 334 335 336

if test -z "$backend_set"; then
  if test "$platform_win32" = yes; then
    enable_win32_backend=yes
  else
    enable_x11_backend=yes
337
    enable_wayland_backend=maybe
338
    enable_mir_backend=no
339 340 341
  fi
fi

342 343 344 345 346
AC_ARG_ENABLE(quartz-relocation,
              [AS_HELP_STRING([--enable-quartz-relocation],
                              [enable bundle-based relocation functions])],
                              [quartz_relocation=yes])

347
cairo_backends=
348
backend_immodules=
349
have_gio_unix=no
350
GDK_BACKENDS=
351
GDK_EXTRA_LIBS=
352 353
# expoxy.pc has Cflags: -I${includedir}, but pkg-config swallows that :-(
GDK_EXTRA_CFLAGS="-I${prefix}/include"
354 355
GDK_WINDOWING=
PANGO_PACKAGES="pango pangocairo"
356

357
ENABLE_ON_X11='%'
358
if test "$enable_x11_backend" = "yes"; then
359 360 361 362 363 364
  # 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"
  # Pull in gio-unix for GDesktopAppInfo usage, see at least
  # gdkapplaunchcontext-x11.c
365
  have_gio_unix=yes
366 367 368
  backend_immodules="$backend_immodules,xim"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_X11"
369
  ENABLE_ON_X11=''
Tor Lillqvist's avatar
Tor Lillqvist committed
370
fi
371
AC_SUBST(ENABLE_ON_X11)
372

373
if test "$enable_win32_backend" = "yes"; then
374 375
  cairo_backends="$cairo_backends cairo-win32"
  GDK_BACKENDS="$GDK_BACKENDS win32"
376 377 378
  backend_immodules="$backend_immodules,ime"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_WIN32"
Kalev Lember's avatar
Kalev Lember committed
379
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm"
380 381 382 383
  AM_CONDITIONAL(USE_WIN32, true)
  PANGO_PACKAGES="pangowin32 pangocairo"
else
  AM_CONDITIONAL(USE_WIN32, false)
384
fi
385

386
DISABLE_ON_QUARTZ=''
387
if test "x$enable_quartz_backend" = xyes; then
388 389
  cairo_backends="$cairo_backends cairo-quartz"
  GDK_BACKENDS="$GDK_BACKENDS quartz"
390
  backend_immodules="$backend_immodules,quartz"
391 392 393
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_QUARTZ"
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa"
394
  DISABLE_ON_QUARTZ='%'
395
  AM_CONDITIONAL(USE_QUARTZ, true)
396 397 398
  if test "x$quartz_relocation" = xyes; then
    AC_DEFINE([QUARTZ_RELOCATION], [1], [Use NSBundle functions to determine load paths for libraries, translations, etc.])
  fi
John Ralls's avatar
John Ralls committed
399 400 401
  # Pull in gio-unix for GDesktopAppInfo usage, see at least
  # gdkapplaunchcontext-x11.c
  have_gio_unix=yes
402

Tor Lillqvist's avatar
Tor Lillqvist committed
403
else
404
  AM_CONDITIONAL(USE_QUARTZ, false)
Tor Lillqvist's avatar
Tor Lillqvist committed
405
fi
406
AC_SUBST(DISABLE_ON_QUARTZ)
407

408 409 410 411 412
AC_CHECK_LIB([rt], [shm_open], [SHM_LIBS="-lrt"], [SHM_LIBS=""])
AC_SUBST(SHM_LIBS)

AC_CHECK_FUNCS(posix_fallocate)

413
if test "x$enable_broadway_backend" = xyes; then
414
  GDK_BACKENDS="$GDK_BACKENDS broadway"
415
  cairo_backends="$cairo_backends cairo"
416
  backend_immodules="$backend_immodules,broadway"
417
  if test "$os_win32" != "yes"; then
418 419
    have_gio_unix=yes
  fi
420 421 422 423 424 425 426
  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
427

428 429
PKG_PROG_PKG_CONFIG

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

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

485
# strip leading space
486
GDK_BACKENDS=${GDK_BACKENDS#* }
487

488
AC_SUBST(GDK_BACKENDS)
Tor Lillqvist's avatar
Tor Lillqvist committed
489

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

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

505

506 507
AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}",
                   [Define if debugging is enabled])
508

509

Elliot Lee's avatar
Elliot Lee committed
510 511 512
# Build time sanity check...
AM_SANITY_CHECK

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

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

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

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

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

583
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
584

585 586
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])

587 588 589 590
dnl ******************************************************
dnl * See whether to include shared library dependencies *
dnl ******************************************************

591
AC_ARG_ENABLE(explicit-deps,
592
              [AS_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
593 594
                              [use explicit dependencies in .pc files [default=auto]])],,
              [enable_explicit_deps=auto])
595

596
AC_MSG_CHECKING([whether to write dependencies into .pc files])
597 598
case $enable_explicit_deps in
  auto)
599
    export SED
600
    deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
601
    if test "x$deplibs_check_method" != xpass_all || test "x$enable_static" = xyes ; then
602
      enable_explicit_deps=yes
603
    else
604
      enable_explicit_deps=no
605 606
    fi
  ;;
607
  yes|no)
608 609 610 611 612 613 614 615
  ;;
  *) 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)

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

619
AC_PATH_PROGS(PERL, perl5 perl)
620

621
AC_CHECK_FUNCS(lstat mkstemp)
622
AC_CHECK_FUNCS(localtime_r)
623 624 625

# _NL_TIME_FIRST_WEEKDAY is an enum and not a define
AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY])
626 627 628 629
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])
630 631 632 633 634
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
635

636 637
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
638 639 640 641
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])
642 643 644 645 646 647 648 649
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])
650 651 652 653
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])
654 655 656 657 658 659 660 661
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])
662 663 664 665
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])
666 667 668 669 670
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
671

Owen Taylor's avatar
Owen Taylor committed
672
# i18n stuff
Matthias Clasen's avatar
Matthias Clasen committed
673
ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
674
AM_GLIB_GNU_GETTEXT
675
LIBS="$LIBS $INTLLIBS"
676 677 678 679 680
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]],
                   [[]])
681

682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701
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.)

702
AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
Owen Taylor's avatar
Owen Taylor committed
703

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

708
gtk_save_LIBS=$LIBS
709
LIBS="$LIBS -lm"
710 711 712 713 714 715 716 717 718 719 720 721 722 723
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)])

724 725
LIBS=$gtk_save_LIBS

726 727 728
AC_MSG_CHECKING(for the BeOS)
case $host in
  *-*-beos*)
729
    AC_MSG_RESULT(yes)
730 731
    MATH_LIB=
  ;;
732 733
  *)
    AC_MSG_RESULT(no)
734 735
  ;;
esac
736

Benjamin Otte's avatar
Benjamin Otte committed
737
AC_SUBST(MATH_LIB)
738 739 740 741 742 743 744 745 746 747 748 749 750
#
# 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
751

752
#
Owen Taylor's avatar
Owen Taylor committed
753
# Run AM_PATH_GLIB_2_0 to make sure that GLib is installed and working
754
#
755

756
AM_PATH_GLIB_2_0(glib_required_version, :,
757
  AC_MSG_ERROR([
758
*** GLIB glib_required_version or better is required. The latest version of
759
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
760
  gobject gmodule-no-export)
761

762 763 764 765 766 767
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
768 769 770 771 772 773 774
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

775 776
AC_CHECK_HEADERS(sys/mman.h,
                 AC_DEFINE(HAVE_SYS_MMAN_H, 1,
Tarnyko's avatar
Tarnyko committed
777
                           [Define to 1 if mman.h is available]))
778 779 780 781 782 783 784 785 786
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]))
787

788
AC_MSG_CHECKING([for GNU ftw extensions])
789 790 791 792 793
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])
794 795
if test $gtk_ok = yes; then
    AC_MSG_RESULT([yes])
796
    AC_DEFINE(HAVE_GNU_FTW, 1, [Have GNU ftw])
797 798 799 800
else
    AC_MSG_RESULT([no])
fi

801 802 803 804 805 806 807 808 809 810 811 812 813
#
# 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
814 815 816
saved_cflags="$CFLAGS"
saved_ldflags="$LDFLAGS"

817

818 819
# Checks for library functions.
AC_FUNC_MMAP
820

Matthias Clasen's avatar
Matthias Clasen committed
821
AC_CHECK_FUNCS(mallinfo)
822 823
AC_CHECK_FUNCS(getresuid)
AC_TYPE_UID_T
824

825 826
# Check for round(), rint(), isnan(), isinf() and nearbyint()
AC_CHECK_LIB(m,round,,)
827 828
AC_CHECK_FUNCS(round rint nearbyint)
AC_CHECK_DECLS([isnan, isinf], [], [], [[#include <math.h>]])
829

Matthias Clasen's avatar
Matthias Clasen committed
830 831 832 833
# Checks for gdkspawn
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)

834 835
AC_MSG_CHECKING(whether to build dynamic modules)

836
AC_ARG_ENABLE(modules,
837
              [AS_HELP_STRING([--disable-modules],
838
                              [disable dynamic module loading])])
839

840
dynworks=false
841
build_dynamic_modules=no
842
deps=
843
if test x$enable_modules = xno; then
844 845 846 847
    AC_MSG_RESULT(no)
else
    AC_MSG_RESULT(yes)
    AC_MSG_CHECKING(whether dynamic modules work)
848
    ## for loop is to strip newline
849
    tmp=`$PKG_CONFIG --variable=gmodule_supported gmodule-no-export-2.0`
850 851 852
    for I in $tmp; do
        dynworks=$I
    done
853

854 855 856
    dnl Now we check to see if our libtool supports shared lib deps
    dnl (in a rather ugly way even)
    if $dynworks; then
857 858
        module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
        module_deplibs_check=`$module_libtool_config | \
859 860
            grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
            sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
861 862 863
        if test "x$module_deplibs_check" = "xnone" || \
           test "x$module_deplibs_check" = "xunknown" || \
           test "x$module_deplibs_check" = "x"; then
864 865 866
            dynworks=false
        fi
    fi
867

868
    if $dynworks; then
869
        build_dynamic_modules=yes
870 871
        AC_DEFINE(USE_GMODULE, 1,
                  [Define to 1 if gmodule works and should be used])
872 873
        AC_MSG_RESULT(yes)
    else
874
        build_dynamic_modules=no
875 876
        AC_MSG_RESULT(no)
    fi
877
fi
Havoc Pennington's avatar
Havoc Pennington committed
878

879
AM_CONDITIONAL(BUILD_DYNAMIC_MODULES, $dynworks)
880

881 882 883 884 885 886
#
# Allow building some or all immodules included
#
AC_MSG_CHECKING(immodules to build)

AC_ARG_WITH(included_immodules,
887 888
            [AS_HELP_STRING([--with-included-immodules=MODULE1,MODULE2,...],
                            [build the specified input methods into gtk])])
889

890
if $dynworks; then
891 892 893 894 895 896 897 898
   :
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

899
all_immodules="am-et,cedilla,cyrillic-translit,inuktitut,ipa,multipress,thai,ti-er,ti-et,viqr$backend_immodules"
900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938

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])
939
AM_CONDITIONAL(INCLUDE_IM_QUARTZ, [test x"$INCLUDE_quartz" = xyes])
940
AM_CONDITIONAL(INCLUDE_IM_BROADWAY, [test x"$INCLUDE_broadway" = xyes])
941 942 943 944 945 946
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])

947 948 949
# Checks to see whether we should include mediaLib
# support.
#
950
AC_CHECK_HEADER(sys/systeminfo.h,
951
                AC_DEFINE(HAVE_SYS_SYSTEMINFO_H, 1,
952 953 954 955
                          [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]))
956

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

959
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
960

961 962 963
########################################
# Windowing system checks
########################################
964

965 966 967
# GTK+ uses some X calls, so needs to link against X directly
GTK_DEP_PACKAGES_FOR_X=
GTK_DEP_LIBS_FOR_X=
968
X_EXTENSIONS=
969

970
if test "x$enable_x11_backend" = xyes; then
971 972
  X_PACKAGES=fontconfig

973 974 975 976 977 978 979 980 981
  #
  # 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

982
  #
983
  # Check for basic X packages; we use pkg-config if available
984
  #
985
  if $PKG_CONFIG --exists x11 xext; then
986
    have_base_x_pc=true
987 988
    X_PACKAGES="$X_PACKAGES x11 xext"
    x_libs="`$PKG_CONFIG --libs x11 xext`"
989
    X_CFLAGS="`$PKG_CONFIG --cflags x11 xext`"
990

991 992 993 994
    # 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
995
      case $I in
996 997 998 999
        *.la) ;;
        *) x_libs_for_checks="$x_libs_for_checks $I" ;;
      esac
    done
1000

1001 1002 1003 1004 1005 1006 1007
    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
1008

1009
    x_cflags="$X_CFLAGS"
1010
    x_libs_for_checks="$X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
Elliot Lee's avatar
Elliot Lee committed
1011

1012
    GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
1013 1014
  fi

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

1018
  gtk_save_cppflags="$CPPFLAGS"
1019
  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Alexander Larsson's avatar
Alexander Larsson committed
1020

1021 1022
  gtk_save_LIBS=$LIBS
  LIBS="$x_libs_for_checks $LIBS"
1023

1024 1025 1026 1027
  # 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, :,
1028
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
1029
  AC_CHECK_FUNC(XextFindDisplay, :,
1030
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
1031

1032 1033 1034
  # Check for xReply

  AC_MSG_CHECKING([if <X11/extensions/XIproto.h> is needed for xReply])
1035
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlibint.h>]],
1036 1037
                                     [[xReply *rep = NULL;
                                       rep = rep;]])],
1038 1039 1040
                    [AC_MSG_RESULT([no])],
                    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/XIproto.h>
                                                          #include <X11/Xlibint.h>]],
1041 1042
                                                        [[xReply *rep = NULL;
                                                          rep = rep;]])],
1043 1044 1045 1046 1047
                                       [AC_MSG_RESULT([yes])
                                        AC_DEFINE([NEED_XIPROTO_H_FOR_XREPLY], [1],
                                                  [Define if <X11/extensions/XIproto.h> needed for xReply])],
                                       [AC_MSG_RESULT([unknown])
                                        AC_MSG_ERROR([xReply type unavailable. X11 is too old])])])
1048

1049 1050 1051
  # Check for XKB support.

  if test "x$enable_xkb" = "xyes"; then
1052 1053 1054 1055
        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.]))
1056
  elif test "x$enable_xkb" = "xmaybe"; then
1057
        AC_CHECK_FUNC(XkbQueryExtension,
1058
                      X_EXTENSIONS="$X_EXTENSIONS XKB"
1059
                      AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]))
1060 1061 1062 1063
  else
        AC_MSG_WARN(XKB support explicitly disabled)
  fi

1064
  # Check for shaped window extension
1065

1066 1067
  AC_CHECK_FUNC(XShapeCombineMask, :,
     [AC_MSG_ERROR([Shape extension not found, check your development headers])])
1068

1069
  # X SYNC check
1070 1071
  gtk_save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS $x_cflags"
1072

1073 1074
  AC_CHECK_FUNC(XSyncQueryExtension,
      [AC_CHECK_HEADER(X11/extensions/sync.h,
1075
	  AC_DEFINE(HAVE_XSYNC, 1, [Have the SYNC extension library]),
1076
	  :, [#include <X11/Xlib.h>])])
1077

1078 1079
  CFLAGS="$gtk_save_CFLAGS"

1080
  if test "x$enable_xinerama" != "xno"; then
1081
    # Check for Xinerama extension (Solaris impl or Xfree impl)
1082 1083 1084
    have_xfree_xinerama=false
    have_solaris_xinerama=false

1085 1086
    gtk_save_cppflags="$CPPFLAGS"
    CPPFLAGS="$CPPFLAGS $x_cflags"
1087

1088
    # Check for XFree
1089
    AC_MSG_CHECKING(for Xinerama packages)
1090

1091
    if $PKG_CONFIG --exists xinerama ; then
1092
       AC_MSG_RESULT(yes)
1093 1094
       have_xfree_xinerama=true
       X_PACKAGES="$X_PACKAGES xinerama"
1095
    else
1096
       AC_MSG_RESULT(no)
1097
       AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
1098
	   [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
1099 1100 1101 1102 1103 1104
	   [GTK_ADD_LIB(x_extra_libs,Xinerama)
	   have_xfree_xinerama=true], :,
           [#include <X11/Xlib.h>])])
    fi

    if $have_xfree_xinerama ; then
1105
      X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1106 1107 1108 1109 1110 1111 1112 1113
      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
1114

1115 1116 1117
	    have_solaris_xinerama=false
	    AC_CHECK_FUNC(XineramaGetInfo,
	        [AC_CHECK_HEADER(X11/extensions/xinerama.h,
1118
		    [have_solaris_xinerama=true], :,
1119
		    [#include <X11/Xlib.h>])])
1120

1121 1122
	    AC_MSG_CHECKING(for Xinerama support on Solaris)

1123
            if $have_solaris_xinerama ; then
1124
              X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137
              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
1138
  fi
1139 1140 1141 1142 1143
  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
1144

1145 1146 1147 1148
  # Check for XGetEventData for GenericEvents
  AC_CHECK_FUNC(XGetEventData,
                AC_DEFINE(HAVE_XGENERICEVENTS, 1, [Have XGenericEvent]))

1149
  # set up things for XInput
1150
  if $PKG_CONFIG --exists "xi" ; then
1151

1152
    X_PACKAGES="$X_PACKAGES xi"
1153
    GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xi"
1154 1155

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

1159 1160
    gtk_save_LIBS="$LIBS"
    LIBS="$LIBS -lXi"
1161 1162 1163 1164 1165 1166 1167 1168 1169

    # 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>]])])
1170
    LIBS="$gtk_save_LIBS"
1171 1172 1173 1174 1175 1176

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

1179 1180
  AS_IF([test "x$have_xinput2" != "xyes"],
        [AC_MSG_ERROR([*** XInput2 extension not found. Check 'config.log' for more details.])])
1181 1182

  # Check for the RANDR extension
1183 1184 1185 1186 1187 1188 1189 1190 1191
  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])

      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
1192
  fi
1193

1194
  # Checks for Xcursor library
1195

1196
  if $PKG_CONFIG --exists xcursor ; then
1197
    AC_DEFINE(HAVE_XCURSOR, 1, [Have the Xcursor library])
1198

1199 1200 1201 1202
    X_PACKAGES="$X_PACKAGES xcursor"
  fi

  # Checks for XFixes extension
1203

1204 1205 1206
  if test x"$enable_xfixes" != xno; then
    if $PKG_CONFIG --exists xfixes ; then
      AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension])
1207

1208 1209 1210 1211 1212 1213
      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
1214 1215
  fi

1216 1217
  # Checks for Xcomposite extension

1218 1219 1220
  if test x"$enable_xcomposite" != xno; then
    if $PKG_CONFIG --exists xcomposite ; then
      AC_DEFINE(HAVE_XCOMPOSITE, 1, [Have the XCOMPOSITE X extension])
1221

1222 1223 1224 1225 1226 1227
      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
1228 1229 1230 1231
  fi

  # Checks for Xdamage extension

1232 1233 1234
  if test x"$enable_xdamage" != xno; then
    if $PKG_CONFIG --exists xdamage ; then
      AC_DEFINE(HAVE_XDAMAGE, 1, [Have the XDAMAGE X extension])
1235

1236 1237 1238 1239 1240 1241
      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
1242 1243
  fi

1244
  if $have_base_x_pc ; then
1245 1246
    GDK_EXTRA_LIBS="$x_extra_libs"
  else
1247
    GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs -lXext -lX11 $GDK_EXTRA_LIBS"
1248 1249 1250 1251 1252
  fi

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

1253
  AM_CONDITIONAL(USE_X11, true)
1254 1255

  # strip leading space
1256
  X_EXTENSIONS=${X_EXTENSIONS#* }
1257

1258
else
1259 1260
  XPACKAGES=

1261
  AM_CONDITIONAL(USE_X11, false)
1262 1263
fi

1264 1265
# Check for gio-unix
if test "$have_gio_unix" = "yes"; then
1266
  GDK_GIO_PACKAGE="gio-unix-2.0 >= glib_required_version"
1267 1268 1269
  AC_DEFINE([HAVE_GIO_UNIX], [1],
            [Define if gio-unix is available])
else
1270
  GDK_GIO_PACKAGE="gio-2.0 >= glib_required_version"
1271 1272
fi

1273
# Check for Pango flags
1274

1275 1276 1277 1278
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`
1279

1280 1281 1282
        AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
else
        AC_MSG_ERROR([
1283 1284
*** Pango not found. Pango built with Cairo support is required
*** to build GTK+. See http://www.pango.org for Pango information.
1285 1286
])
fi
1287

1288
CFLAGS="$CFLAGS $PANGO_CFLAGS"
1289

1290 1291 1292
if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
        :
else
1293 1294 1295
	gtk_save_LIBS="$LIBS"
        LIBS="$PANGO_LIBS $LIBS"
        AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
1296
*** Can't link to Pango. Pango is required to build
1297 1298
*** GTK+. For more information see http://www.pango.org]))
        LIBS="$gtk_save_LIBS"
1299
fi
1300

1301 1302
CFLAGS="$saved_cflags"
LDFLAGS="$saved_ldflags"
1303

1304
GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 >= gdk_pixbuf_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version"
1305
GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES $cairo_backends epoxy >= epoxy_required_version"
Matthias Clasen's avatar
Matthias Clasen committed
1306 1307 1308
if test "x$enable_x11_backend" = xyes; then
  GDK_PRIVATE_PACKAGES="$GDK_PRIVATE_PACKAGES pangoft2"
fi
1309

1310 1311 1312
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"
1313 1314 1315 1316 1317 1318 1319 1320
#
# 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

1321
AC_SUBST(GDK_PACKAGES)
Matthias Clasen's avatar
Matthias Clasen committed
1322
AC_SUBST(GDK_PRIVATE_PACKAGES)
1323 1324 1325 1326
AC_SUBST(GDK_EXTRA_LIBS)
AC_SUBST(GDK_EXTRA_CFLAGS)
AC_SUBST(GDK_DEP_LIBS)
AC_SUBST(GDK_DEP_CFLAGS)
1327 1328


1329 1330 1331
########################################
# Check for Accessibility Toolkit flags
########################################
Havoc Pennington's avatar
Havoc Pennington committed
1332

1333
if test x$enable_x11_backend = xyes; then
1334 1335 1336 1337 1338
   ATK_PACKAGES="atk atk-bridge-2.0"
else
   ATK_PACKAGES="atk"
fi

1339
PKG_CHECK_MODULES(ATK, $ATK_PACKAGES)
1340

1341
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"
1342
GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES"
1343
if test "x$enable_x11_backend" = xyes; then
1344
  GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2"
1345
fi
1346
if test "$have_gio_unix" = "yes"; then