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

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

Matthias Clasen's avatar
Matthias Clasen committed
11
m4_define([gtk_major_version], [3])
Matthias Clasen's avatar
Matthias Clasen committed
12
m4_define([gtk_minor_version], [13])
Matthias Clasen's avatar
Matthias Clasen committed
13
m4_define([gtk_micro_version], [3])
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
Matthias Clasen's avatar
Matthias Clasen committed
44
m4_define([glib_required_version], [2.41.0])
45
m4_define([pango_required_version], [1.32.4])
Kalev Lember's avatar
Kalev Lember committed
46
m4_define([atk_required_version], [2.12.0])
47
m4_define([cairo_required_version], [1.12.0])
48
m4_define([gdk_pixbuf_required_version], [2.27.1])
49
m4_define([introspection_required_version], [1.39.0])
50
m4_define([wayland_required_version], [1.3.90])
51 52 53 54 55
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
56 57
INTROSPECTION_REQUIRED_VERSION=introspection_required_version

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

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

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

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

Owen Taylor's avatar
Owen Taylor committed
76
#
77 78 79 80 81 82 83 84
# 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
85 86


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

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

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

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

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

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


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

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

179
AC_SUBST(DISABLE_ON_W32)
180
AC_SUBST(LIB_EXE_MACHINE_FLAG)
181
AC_SUBST(EXE_MANIFEST_ARCHITECTURE)
182

183 184 185 186 187
case $host in
  *-*-linux*)
    os_linux=yes
    ;;
esac
188

189
dnl
190 191
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.
192
dnl
193
AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], gcc)
194
AC_LANG_PUSH([C++])
195

196 197 198
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
                                   [[class a { int b; } c;]])],
                  [],[CXX=])
199
AM_CONDITIONAL(HAVE_CXX, test "$CXX" != "")
200 201 202

gtk_save_cxxflags="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -x objective-c++"
203 204 205
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@interface Foo @end]],
                                   [[]])],
                  [OBJC=yes],[OBJC=no])
206
AM_CONDITIONAL(HAVE_OBJC, test "$OBJC" = "yes")
207
CXXFLAGS="$gtk_save_cxxflags"
208
AC_LANG_POP([C++])
209

Tor Lillqvist's avatar
Typo.  
Tor Lillqvist committed
210
if test "$os_win32" = "yes"; then
211 212 213 214 215 216 217 218 219 220
  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

221 222 223 224 225
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
226

227 228 229
# Make sure we use 64-bit versions of various file stuff.
AC_SYS_LARGEFILE

230
AM_PROG_AS
Matthias Clasen's avatar
Matthias Clasen committed
231
AC_PATH_PROG(NM, nm, nm)
232

Tor Lillqvist's avatar
Tor Lillqvist committed
233 234 235 236 237 238 239 240 241 242 243 244 245
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")
246
AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
247
AM_CONDITIONAL(OS_LINUX, test "$os_linux" = "yes")
Tor Lillqvist's avatar
Tor Lillqvist committed
248 249

if test "$os_win32" = "yes"; then
Tor Lillqvist's avatar
Tor Lillqvist committed
250 251 252 253
  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
254 255 256 257
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
fi
AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)

258 259
m4_define([debug_default],
          m4_if(m4_eval(gtk_minor_version % 2), [1], [yes], [minimum]))
260 261

dnl declare --enable-* args and collect ac_help strings
262
AC_ARG_ENABLE(debug,
263 264 265
              [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
                              [turn on debugging @<:@default=debug_default@:>@])],,
              [enable_debug=debug_default])
Matthias Clasen's avatar
Matthias Clasen committed
266

267 268 269 270 271
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)
Matthias Clasen's avatar
Matthias Clasen committed
272

273
AC_ARG_ENABLE(gtk2-dependency,
274 275
              [AS_HELP_STRING([--enable-gtk2-dependency],
                              [Do not build gtk-update-icon-cache and other shared tools])],,
276 277 278 279
              [enable_gtk2_dependency=no])

AM_CONDITIONAL(BUILD_ICON_CACHE, [test "x$enable_gtk2_dependency" = xno])

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

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

if test -z "$backend_set"; then
  if test "$platform_win32" = yes; then
    enable_win32_backend=yes
  else
    enable_x11_backend=yes
331
    enable_wayland_backend=maybe
332 333 334
  fi
fi

335 336 337 338 339
AC_ARG_ENABLE(quartz-relocation,
              [AS_HELP_STRING([--enable-quartz-relocation],
                              [enable bundle-based relocation functions])],
                              [quartz_relocation=yes])

340
cairo_backends=
341
backend_immodules=
342
have_gio_unix=no
343
GDK_BACKENDS=
344 345 346 347
GDK_EXTRA_LIBS=
GDK_EXTRA_CFLAGS=
GDK_WINDOWING=
PANGO_PACKAGES="pango pangocairo"
348

349
ENABLE_ON_X11='%'
350
if test "$enable_x11_backend" = "yes"; then
351 352 353 354 355 356
  # 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
357
  have_gio_unix=yes
358 359 360
  backend_immodules="$backend_immodules,xim"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_X11"
361
  ENABLE_ON_X11=''
Tor Lillqvist's avatar
Tor Lillqvist committed
362
fi
363
AC_SUBST(ENABLE_ON_X11)
364

365
if test "$enable_win32_backend" = "yes"; then
366 367
  cairo_backends="$cairo_backends cairo-win32"
  GDK_BACKENDS="$GDK_BACKENDS win32"
368 369 370
  backend_immodules="$backend_immodules,ime"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_WIN32"
Kalev Lember's avatar
Kalev Lember committed
371
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm"
372 373 374 375
  AM_CONDITIONAL(USE_WIN32, true)
  PANGO_PACKAGES="pangowin32 pangocairo"
else
  AM_CONDITIONAL(USE_WIN32, false)
376
fi
377

378
DISABLE_ON_QUARTZ=''
379
if test "x$enable_quartz_backend" = xyes; then
380 381
  cairo_backends="$cairo_backends cairo-quartz"
  GDK_BACKENDS="$GDK_BACKENDS quartz"
382
  backend_immodules="$backend_immodules,quartz"
383 384 385
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_QUARTZ"
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa"
386
  DISABLE_ON_QUARTZ='%'
387
  AM_CONDITIONAL(USE_QUARTZ, true)
388 389 390
  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
391 392 393
  # Pull in gio-unix for GDesktopAppInfo usage, see at least
  # gdkapplaunchcontext-x11.c
  have_gio_unix=yes
394

Tor Lillqvist's avatar
Tor Lillqvist committed
395
else
396
  AM_CONDITIONAL(USE_QUARTZ, false)
Tor Lillqvist's avatar
Tor Lillqvist committed
397
fi
398
AC_SUBST(DISABLE_ON_QUARTZ)
399

400 401 402 403 404
AC_CHECK_LIB([rt], [shm_open], [SHM_LIBS="-lrt"], [SHM_LIBS=""])
AC_SUBST(SHM_LIBS)

AC_CHECK_FUNCS(posix_fallocate)

405
if test "x$enable_broadway_backend" = xyes; then
406
  GDK_BACKENDS="$GDK_BACKENDS broadway"
407
  cairo_backends="$cairo_backends cairo"
408
  backend_immodules="$backend_immodules,broadway"
409
  if test "$os_win32" != "yes"; then
410 411
    have_gio_unix=yes
  fi
412 413 414 415 416 417 418
  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
419

420 421
PKG_PROG_PKG_CONFIG

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

Matthias Clasen's avatar
Matthias Clasen committed
453
# strip leading space
454
GDK_BACKENDS=${GDK_BACKENDS#* }
455

456
AC_SUBST(GDK_BACKENDS)
Tor Lillqvist's avatar
Tor Lillqvist committed
457

458 459 460
if test -z "$GDK_BACKENDS"; then
  AC_MSG_ERROR([No GDK backends selected.])
fi
Tor Lillqvist's avatar
Tor Lillqvist committed
461

462
if test "x$enable_debug" = "xyes"; then
Tim Janik's avatar
Tim Janik committed
463
  test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
464
  GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
Elliot Lee's avatar
Elliot Lee committed
465
else
466
  if test "x$enable_debug" = "xno"; then
467
    GTK_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
468
  else
469
    GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
470
  fi
Elliot Lee's avatar
Elliot Lee committed
471 472
fi

473

474 475
AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}",
                   [Define if debugging is enabled])
Owen Taylor's avatar
Owen Taylor committed
476

477

Elliot Lee's avatar
Elliot Lee committed
478 479 480
# Build time sanity check...
AM_SANITY_CHECK

Raja R Harinath's avatar
Raja R Harinath committed
481
changequote(,)dnl
482
if test "x$GCC" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
483 484 485 486
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
487

488
  if test "x$enable_ansi" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
489 490 491 492 493 494 495 496 497
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac

    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
498
  fi
499 500
fi
changequote([,])dnl
Tor Lillqvist's avatar
Tor Lillqvist committed
501

502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525
# 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
526
    esac
527 528 529 530 531 532 533
    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
534
  fi
Elliot Lee's avatar
Elliot Lee committed
535 536
fi

537
## Initial sanity check, done here so that users get told they
538 539
## have the wrong dependencies as early in the process as possible.
## Later on we actually use the cflags/libs from separate pkg-config
540 541
## calls. Oh, also the later pkg-config calls don't include
## the version requirements since those make the module lists
542
## annoying to construct
543 544 545
PKG_CHECK_MODULES(BASE_DEPENDENCIES,
  [glib-2.0 >= glib_required_version dnl
   atk >= atk_required_version dnl
Matthias Clasen's avatar
Matthias Clasen committed
546
   pango >= pango_required_version dnl
547
   cairo >= cairo_required_version dnl
548
   cairo-gobject >= cairo_required_version dnl
549
   gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])
550

551
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
552

553 554
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])

555 556 557 558
dnl ******************************************************
dnl * See whether to include shared library dependencies *
dnl ******************************************************

559
AC_ARG_ENABLE(explicit-deps,
560
              [AS_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
561 562
                              [use explicit dependencies in .pc files [default=auto]])],,
              [enable_explicit_deps=auto])
563

564
AC_MSG_CHECKING([whether to write dependencies into .pc files])
565 566
case $enable_explicit_deps in
  auto)
567
    export SED
568
    deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
569
    if test "x$deplibs_check_method" != xpass_all || test "x$enable_static" = xyes ; then
570
      enable_explicit_deps=yes
571
    else
572
      enable_explicit_deps=no
573 574
    fi
  ;;
575
  yes|no)
576 577 578 579 580 581 582 583
  ;;
  *) 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)

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

587
AC_PATH_PROGS(PERL, perl5 perl)
588

589
AC_CHECK_FUNCS(lstat mkstemp)
590
AC_CHECK_FUNCS(localtime_r)
591 592 593

# _NL_TIME_FIRST_WEEKDAY is an enum and not a define
AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY])
594 595 596 597
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])
598 599 600 601 602
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
603

604 605
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
606 607 608 609
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])
610 611 612 613 614 615 616 617
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])
618 619 620 621
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])
622 623 624 625 626 627 628 629
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])
630 631 632 633
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])
634 635 636 637 638
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
639

Owen Taylor's avatar
Owen Taylor committed
640
# i18n stuff
Matthias Clasen's avatar
Matthias Clasen committed
641
ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
642
AM_GLIB_GNU_GETTEXT
643
LIBS="$LIBS $INTLLIBS"
644 645 646 647 648
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]],
                   [[]])
649

650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669
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.)

670
AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
Owen Taylor's avatar
Owen Taylor committed
671

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

676
gtk_save_LIBS=$LIBS
677
LIBS="$LIBS -lm"
678 679 680 681 682 683 684 685 686 687 688 689 690 691
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)])

692 693
LIBS=$gtk_save_LIBS

694 695 696
AC_MSG_CHECKING(for the BeOS)
case $host in
  *-*-beos*)
697
    AC_MSG_RESULT(yes)
698 699
    MATH_LIB=
  ;;
700 701
  *)
    AC_MSG_RESULT(no)
702 703
  ;;
esac
704

Benjamin Otte's avatar
Benjamin Otte committed
705
AC_SUBST(MATH_LIB)
706 707 708 709 710 711 712 713 714 715 716 717 718
#
# 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
719

720
#
Owen Taylor's avatar
Owen Taylor committed
721
# Run AM_PATH_GLIB_2_0 to make sure that GLib is installed and working
722
#
723

724
AM_PATH_GLIB_2_0(glib_required_version, :,
Owen Taylor's avatar
Owen Taylor committed
725
  AC_MSG_ERROR([
726
*** GLIB glib_required_version or better is required. The latest version of
727
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
Matthias Clasen's avatar
Matthias Clasen committed
728
  gobject gmodule-no-export)
Owen Taylor's avatar
Owen Taylor committed
729

730 731 732 733 734 735
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
736 737 738 739 740 741 742
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

743 744 745
AC_CHECK_HEADERS(pwd.h,
                 AC_DEFINE(HAVE_PWD_H, 1,
                           [Define to 1 if pwd.h is available]))
746 747
AC_CHECK_HEADERS(sys/mman.h,
                 AC_DEFINE(HAVE_SYS_MMAN_H, 1,
Tarnyko's avatar
Tarnyko committed
748
                           [Define to 1 if mman.h is available]))
749 750 751 752 753 754 755 756 757
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]))
758

759
AC_MSG_CHECKING([for GNU ftw extensions])
760 761 762 763 764
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])
765 766
if test $gtk_ok = yes; then
    AC_MSG_RESULT([yes])
767
    AC_DEFINE(HAVE_GNU_FTW, 1, [Have GNU ftw])
768 769 770 771
else
    AC_MSG_RESULT([no])
fi

772 773 774 775 776 777 778 779 780 781 782 783 784
#
# 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
785 786 787
saved_cflags="$CFLAGS"
saved_ldflags="$LDFLAGS"

788

789 790
# Checks for library functions.
AC_FUNC_MMAP
791

Matthias Clasen's avatar
Matthias Clasen committed
792
AC_CHECK_FUNCS(mallinfo)
793 794
AC_CHECK_FUNCS(getresuid)
AC_TYPE_UID_T
795

796 797
# Check for round(), rint(), isnan(), isinf() and nearbyint()
AC_CHECK_LIB(m,round,,)
798 799
AC_CHECK_FUNCS(round rint nearbyint)
AC_CHECK_DECLS([isnan, isinf], [], [], [[#include <math.h>]])
800

Matthias Clasen's avatar
Matthias Clasen committed
801 802 803 804
# Checks for gdkspawn
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)

805 806
AC_MSG_CHECKING(whether to build dynamic modules)

807
AC_ARG_ENABLE(modules,
808
              [AS_HELP_STRING([--disable-modules],
809
                              [disable dynamic module loading])])
810

811
dynworks=false
Matthias Clasen's avatar
Matthias Clasen committed
812
build_dynamic_modules=no
813
deps=
814
if test x$enable_modules = xno; then
815 816 817 818
    AC_MSG_RESULT(no)
else
    AC_MSG_RESULT(yes)
    AC_MSG_CHECKING(whether dynamic modules work)
819
    ## for loop is to strip newline
820
    tmp=`$PKG_CONFIG --variable=gmodule_supported gmodule-no-export-2.0`
821 822 823
    for I in $tmp; do
        dynworks=$I
    done
824

825 826 827
    dnl Now we check to see if our libtool supports shared lib deps
    dnl (in a rather ugly way even)
    if $dynworks; then
828 829
        module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
        module_deplibs_check=`$module_libtool_config | \
830 831
            grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
            sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
832 833 834
        if test "x$module_deplibs_check" = "xnone" || \
           test "x$module_deplibs_check" = "xunknown" || \
           test "x$module_deplibs_check" = "x"; then
835 836 837
            dynworks=false
        fi
    fi
838

839
    if $dynworks; then
Matthias Clasen's avatar
Matthias Clasen committed
840
        build_dynamic_modules=yes
841 842
        AC_DEFINE(USE_GMODULE, 1,
                  [Define to 1 if gmodule works and should be used])
843 844
        AC_MSG_RESULT(yes)
    else
Matthias Clasen's avatar
Matthias Clasen committed
845
        build_dynamic_modules=no
846 847
        AC_MSG_RESULT(no)
    fi
848
fi
Havoc Pennington's avatar
Havoc Pennington committed
849

850
AM_CONDITIONAL(BUILD_DYNAMIC_MODULES, $dynworks)
851

852 853 854 855 856 857
#
# Allow building some or all immodules included
#
AC_MSG_CHECKING(immodules to build)

AC_ARG_WITH(included_immodules,
858 859
            [AS_HELP_STRING([--with-included-immodules=MODULE1,MODULE2,...],
                            [build the specified input methods into gtk])])
860

861
if $dynworks; then
862 863 864 865 866 867 868 869
   :
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

870
all_immodules="am-et,cedilla,cyrillic-translit,inuktitut,ipa,multipress,thai,ti-er,ti-et,viqr$backend_immodules"
871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909

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])
910
AM_CONDITIONAL(INCLUDE_IM_QUARTZ, [test x"$INCLUDE_quartz" = xyes])
911
AM_CONDITIONAL(INCLUDE_IM_BROADWAY, [test x"$INCLUDE_broadway" = xyes])
912 913 914 915 916 917
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])

918 919 920
# Checks to see whether we should include mediaLib
# support.
#
921
AC_CHECK_HEADER(sys/systeminfo.h,
922
                AC_DEFINE(HAVE_SYS_SYSTEMINFO_H, 1,
923 924 925 926
                          [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]))
927

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

930
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
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
AS_IF([test "x$enable_gtk2_dependency" = xyes],
      [AC_PATH_PROG(GTK_UPDATE_ICON_CACHE, gtk-update-icon-cache, no)
       if test x$GTK_UPDATE_ICON_CACHE = xno; then
         REBUILD_PNGS=#
       fi],

      [test "x$cross_compiling" = xyes],
      [# If no GTK+2 dependency and cross compiling, we need to find a host gdk-pixbuf.
       # pkg.m4 blocks all variable starting with PKG, so allow this one
       m4_pattern_allow([PKG_CONFIG_FOR_BUILD])

       AS_IF([test x$PKG_CONFIG_FOR_BUILD = x],
             [AC_MSG_ERROR([You must define PKG_CONFIG_FOR_BUILD when cross compiling])])

       AC_MSG_CHECKING([for native gdk-pixbuf])
       AS_IF([AC_RUN_LOG([$PKG_CONFIG_FOR_BUILD --exists --print-errors gdk-pixbuf-2.0])],
             [AC_MSG_RESULT([yes])],
             [AC_MSG_ERROR([native gdk-pixbuf not found])])

       NATIVE_GDKPIXBUF_CFLAGS=`$PKG_CONFIG_FOR_BUILD --cflags gdk-pixbuf-2.0`
       NATIVE_GDKPIXBUF_LIBS=`$PKG_CONFIG_FOR_BUILD --libs gdk-pixbuf-2.0`
       AC_SUBST(NATIVE_GDKPIXBUF_CFLAGS)
       AC_SUBST(NATIVE_GDKPIXBUF_LIBS)]
)
956

957
AM_CONDITIONAL(USE_EXTERNAL_ICON_CACHE, [test "x$enable_gtk2_dependency" = xyes])
958

959 960
AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)

961
if test ! -f $srcdir/gtk/gtkbuiltincache.h &&
962 963
   test "x$REBUILD_PNGS" = "x#" ; then
     AC_MSG_ERROR([
964
*** gtkbuiltincache.h is not in the tree, and cannot be built
965
*** because you don't have libpng, or (when cross-compiling) you
966
*** don't have a prebuilt gtk-update-icon-cache on the build system.])
967 968
fi

969 970 971
########################################
# Windowing system checks
########################################
972

973 974 975
# GTK+ uses some X calls, so needs to link against X directly
GTK_DEP_PACKAGES_FOR_X=
GTK_DEP_LIBS_FOR_X=
Matthias Clasen's avatar
Matthias Clasen committed
976
X_EXTENSIONS=
977

978
if test "x$enable_x11_backend" = xyes; then
979 980
  X_PACKAGES=fontconfig

981 982 983 984 985 986 987 988 989
  #
  # 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

990
  #
991
  # Check for basic X packages; we use pkg-config if available
992
  #
993
  if $PKG_CONFIG --exists x11 xext; then
994
    have_base_x_pc=true
995 996
    X_PACKAGES="$X_PACKAGES x11 xext"
    x_libs="`$PKG_CONFIG --libs x11 xext`"
Matthias Clasen's avatar
Matthias Clasen committed
997
    X_CFLAGS="`$PKG_CONFIG --cflags x11 xext`"
998

999 1000 1001 1002
    # 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
1003
      case $I in
1004 1005 1006 1007
        *.la) ;;
        *) x_libs_for_checks="$x_libs_for_checks $I" ;;
      esac
    done
1008

1009 1010 1011 1012 1013 1014 1015
    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
1016

1017
    x_cflags="$X_CFLAGS"
1018
    x_libs_for_checks="$X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
Elliot Lee's avatar
Elliot Lee committed
1019

1020
    GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
1021 1022
  fi

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

1026
  gtk_save_cppflags="$CPPFLAGS"
1027
  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Alexander Larsson's avatar
Alexander Larsson committed
1028

1029 1030
  gtk_save_LIBS=$LIBS
  LIBS="$x_libs_for_checks $LIBS"
1031

1032 1033 1034 1035
  # 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, :,
1036
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
1037
  AC_CHECK_FUNC(XextFindDisplay, :,
1038
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
1039

1040 1041 1042
  # Check for xReply

  AC_MSG_CHECKING([if <X11/extensions/XIproto.h> is needed for xReply])
1043
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlibint.h>]],
1044 1045
                                     [[xReply *rep = NULL;
                                       rep = rep;]])],
1046 1047 1048
                    [AC_MSG_RESULT([no])],
                    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/XIproto.h>
                                                          #include <X11/Xlibint.h>]],
1049 1050
                                                        [[xReply *rep = NULL;
                                                          rep = rep;]])],
1051 1052 1053 1054 1055
                                       [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])])])
1056

1057 1058 1059
  # Check for XKB support.

  if test "x$enable_xkb" = "xyes"; then
Matthias Clasen's avatar
Matthias Clasen committed
1060 1061 1062 1063
        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.]))
1064
  elif test "x$enable_xkb" = "xmaybe"; then
1065
        AC_CHECK_FUNC(XkbQueryExtension,
Matthias Clasen's avatar
Matthias Clasen committed
1066
                      X_EXTENSIONS="$X_EXTENSIONS XKB"
1067
                      AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]))
1068 1069 1070 1071
  else
        AC_MSG_WARN(XKB support explicitly disabled)
  fi

1072
  # Check for shaped window extension
1073

1074 1075
  AC_CHECK_FUNC(XShapeCombineMask, :,
     [AC_MSG_ERROR([Shape extension not found, check your development headers])])
1076

1077
  # X SYNC check
1078 1079
  gtk_save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS $x_cflags"
1080

1081 1082
  AC_CHECK_FUNC(XSyncQueryExtension,
      [AC_CHECK_HEADER(X11/extensions/sync.h,
1083
	  AC_DEFINE(HAVE_XSYNC, 1, [Have the SYNC extension library]),
1084
	  :, [#include <X11/Xlib.h>])])
1085

1086 1087
  CFLAGS="$gtk_save_CFLAGS"

Matthias Clasen's avatar
Matthias Clasen committed
1088
  if test "x$enable_xinerama" != "xno"; then
1089
    # Check for Xinerama extension (Solaris impl or Xfree impl)
Matthias Clasen's avatar
Matthias Clasen committed
1090 1091 1092
    have_xfree_xinerama=false
    have_solaris_xinerama=false

1093 1094
    gtk_save_cppflags="$CPPFLAGS"
    CPPFLAGS="$CPPFLAGS $x_cflags"
1095

1096
    # Check for XFree
Matthias Clasen's avatar
Matthias Clasen committed
1097
    AC_MSG_CHECKING(for Xinerama packages)
1098

1099
    if $PKG_CONFIG --exists xinerama ; then
Matthias Clasen's avatar
Matthias Clasen committed
1100
       AC_MSG_RESULT(yes)
1101 1102
       have_xfree_xinerama=true
       X_PACKAGES="$X_PACKAGES xinerama"
1103
    else
Matthias Clasen's avatar
Matthias Clasen committed
1104
       AC_MSG_RESULT(no)
1105
       AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
1106
	   [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
1107 1108 1109 1110 1111 1112
	   [GTK_ADD_LIB(x_extra_libs,Xinerama)
	   have_xfree_xinerama=true], :,
           [#include <X11/Xlib.h>])])
    fi

    if $have_xfree_xinerama ; then
Matthias Clasen's avatar
Matthias Clasen committed
1113
      X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1114 1115 1116 1117 1118 1119 1120 1121
      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
1122

1123 1124 1125
	    have_solaris_xinerama=false
	    AC_CHECK_FUNC(XineramaGetInfo,
	        [AC_CHECK_HEADER(X11/extensions/xinerama.h,
1126
		    [have_solaris_xinerama=true], :,
1127
		    [#include <X11/Xlib.h>])])
1128

1129 1130
	    AC_MSG_CHECKING(for Xinerama support on Solaris)

1131
            if $have_solaris_xinerama ; then
Matthias Clasen's avatar
Matthias Clasen committed
1132
              X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145
              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
1146
  fi
Matthias Clasen's avatar
Matthias Clasen committed
1147 1148 1149 1150 1151
  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
1152

1153 1154 1155 1156
  # Check for XGetEventData for GenericEvents
  AC_CHECK_FUNC(XGetEventData,
                AC_DEFINE(HAVE_XGENERICEVENTS, 1, [Have XGenericEvent]))

1157
  # set up things for XInput
Javier Jardón's avatar