configure.ac 61.3 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 13 14
m4_define([gtk_minor_version], [15])
m4_define([gtk_micro_version], [0])
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])
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.30.0])
49
m4_define([introspection_required_version], [1.39.0])
50
m4_define([wayland_required_version], [1.5.91])
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

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
case $host in
  *-*-linux*)
    os_linux=yes
    ;;
187 188 189
  *-*-darwin*)
    os_darwin=yes
    ;;
190
esac
191

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

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

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

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

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

227 228 229 230 231
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
232

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

236
AM_PROG_AS
237
AC_PATH_TOOL(NM, nm, nm)
238

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

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

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

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

274 275 276 277 278
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)
279

280
AC_ARG_ENABLE(gtk2-dependency,
281 282
              [AS_HELP_STRING([--enable-gtk2-dependency],
                              [Do not build gtk-update-icon-cache and other shared tools])],,
283 284 285 286
              [enable_gtk2_dependency=no])

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

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

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

if test -z "$backend_set"; then
  if test "$platform_win32" = yes; then
    enable_win32_backend=yes
  else
    enable_x11_backend=yes
338
    enable_wayland_backend=maybe
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 352 353 354
GDK_EXTRA_LIBS=
GDK_EXTRA_CFLAGS=
GDK_WINDOWING=
PANGO_PACKAGES="pango pangocairo"
355

356
ENABLE_ON_X11='%'
357
if test "$enable_x11_backend" = "yes"; then
358 359 360 361 362 363
  # 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
364
  have_gio_unix=yes
365 366 367
  backend_immodules="$backend_immodules,xim"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_X11"
368
  ENABLE_ON_X11=''
Tor Lillqvist's avatar
Tor Lillqvist committed
369
fi
370
AC_SUBST(ENABLE_ON_X11)
371

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

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

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

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

AC_CHECK_FUNCS(posix_fallocate)

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

427 428
PKG_PROG_PKG_CONFIG

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

460
# strip leading space
461
GDK_BACKENDS=${GDK_BACKENDS#* }
462

463
AC_SUBST(GDK_BACKENDS)
Tor Lillqvist's avatar
Tor Lillqvist committed
464

465 466 467
if test -z "$GDK_BACKENDS"; then
  AC_MSG_ERROR([No GDK backends selected.])
fi
Tor Lillqvist's avatar
Tor Lillqvist committed
468

469
if test "x$enable_debug" = "xyes"; then
Tim Janik's avatar
Tim Janik committed
470
  test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
471
  GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
Elliot Lee's avatar
Elliot Lee committed
472
else
473
  if test "x$enable_debug" = "xno"; then
474
    GTK_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
475
  else
476
    GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
477
  fi
Elliot Lee's avatar
Elliot Lee committed
478 479
fi

480

481 482
AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}",
                   [Define if debugging is enabled])
483

484

Elliot Lee's avatar
Elliot Lee committed
485 486 487
# Build time sanity check...
AM_SANITY_CHECK

Raja R Harinath's avatar
Raja R Harinath committed
488
changequote(,)dnl
489
if test "x$GCC" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
490 491 492 493
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
494

495
  if test "x$enable_ansi" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
496 497 498 499 500 501 502 503 504
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac

    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
505
  fi
506 507
fi
changequote([,])dnl
Tor Lillqvist's avatar
Tor Lillqvist committed
508

509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532
# 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
533
    esac
534 535 536 537 538 539 540
    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
541
  fi
Elliot Lee's avatar
Elliot Lee committed
542 543
fi

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

558
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
559

560 561
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])

562 563 564 565
dnl ******************************************************
dnl * See whether to include shared library dependencies *
dnl ******************************************************

566
AC_ARG_ENABLE(explicit-deps,
567
              [AS_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
568 569
                              [use explicit dependencies in .pc files [default=auto]])],,
              [enable_explicit_deps=auto])
570

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

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

594
AC_PATH_PROGS(PERL, perl5 perl)
595

596
AC_CHECK_FUNCS(lstat mkstemp)
597
AC_CHECK_FUNCS(localtime_r)
598 599 600

# _NL_TIME_FIRST_WEEKDAY is an enum and not a define
AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY])
601 602 603 604
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])
605 606 607 608 609
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
610

611 612
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
613 614 615 616
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])
617 618 619 620 621 622 623 624
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])
625 626 627 628
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])
629 630 631 632 633 634 635 636
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])
637 638 639 640
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])
641 642 643 644 645
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
646

Owen Taylor's avatar
Owen Taylor committed
647
# i18n stuff
Matthias Clasen's avatar
Matthias Clasen committed
648
ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
649
AM_GLIB_GNU_GETTEXT
650
LIBS="$LIBS $INTLLIBS"
651 652 653 654 655
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]],
                   [[]])
656

657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676
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.)

677
AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
Owen Taylor's avatar
Owen Taylor committed
678

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

683
gtk_save_LIBS=$LIBS
684
LIBS="$LIBS -lm"
685 686 687 688 689 690 691 692 693 694 695 696 697 698
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)])

699 700
LIBS=$gtk_save_LIBS

701 702 703
AC_MSG_CHECKING(for the BeOS)
case $host in
  *-*-beos*)
704
    AC_MSG_RESULT(yes)
705 706
    MATH_LIB=
  ;;
707 708
  *)
    AC_MSG_RESULT(no)
709 710
  ;;
esac
711

Benjamin Otte's avatar
Benjamin Otte committed
712
AC_SUBST(MATH_LIB)
713 714 715 716 717 718 719 720 721 722 723 724 725
#
# 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
726

727
#
Owen Taylor's avatar
Owen Taylor committed
728
# Run AM_PATH_GLIB_2_0 to make sure that GLib is installed and working
729
#
730

731
AM_PATH_GLIB_2_0(glib_required_version, :,
732
  AC_MSG_ERROR([
733
*** GLIB glib_required_version or better is required. The latest version of
734
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
735
  gobject gmodule-no-export)
736

737 738 739 740 741 742
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
743 744 745 746 747 748 749
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

750 751
AC_CHECK_HEADERS(sys/mman.h,
                 AC_DEFINE(HAVE_SYS_MMAN_H, 1,
Tarnyko's avatar
Tarnyko committed
752
                           [Define to 1 if mman.h is available]))
753 754 755 756 757 758 759 760 761
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]))
762

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

776 777 778 779 780 781 782 783 784 785 786 787 788
#
# 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
789 790 791
saved_cflags="$CFLAGS"
saved_ldflags="$LDFLAGS"

792

793 794
# Checks for library functions.
AC_FUNC_MMAP
795

Matthias Clasen's avatar
Matthias Clasen committed
796
AC_CHECK_FUNCS(mallinfo)
797 798
AC_CHECK_FUNCS(getresuid)
AC_TYPE_UID_T
799

800 801
# Check for round(), rint(), isnan(), isinf() and nearbyint()
AC_CHECK_LIB(m,round,,)
802 803
AC_CHECK_FUNCS(round rint nearbyint)
AC_CHECK_DECLS([isnan, isinf], [], [], [[#include <math.h>]])
804

Matthias Clasen's avatar
Matthias Clasen committed
805 806 807 808
# Checks for gdkspawn
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)

809 810
AC_MSG_CHECKING(whether to build dynamic modules)

811
AC_ARG_ENABLE(modules,
812
              [AS_HELP_STRING([--disable-modules],
813
                              [disable dynamic module loading])])
814

815
dynworks=false
816
build_dynamic_modules=no
817
deps=
818
if test x$enable_modules = xno; then
819 820 821 822
    AC_MSG_RESULT(no)
else
    AC_MSG_RESULT(yes)
    AC_MSG_CHECKING(whether dynamic modules work)
823
    ## for loop is to strip newline
824
    tmp=`$PKG_CONFIG --variable=gmodule_supported gmodule-no-export-2.0`
825 826 827
    for I in $tmp; do
        dynworks=$I
    done
828

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

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

854
AM_CONDITIONAL(BUILD_DYNAMIC_MODULES, $dynworks)
855

856 857 858 859 860 861
#
# Allow building some or all immodules included
#
AC_MSG_CHECKING(immodules to build)

AC_ARG_WITH(included_immodules,
862 863
            [AS_HELP_STRING([--with-included-immodules=MODULE1,MODULE2,...],
                            [build the specified input methods into gtk])])
864

865
if $dynworks; then
866 867 868 869 870 871 872 873
   :
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

874
all_immodules="am-et,cedilla,cyrillic-translit,inuktitut,ipa,multipress,thai,ti-er,ti-et,viqr$backend_immodules"
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 910 911 912 913

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])
914
AM_CONDITIONAL(INCLUDE_IM_QUARTZ, [test x"$INCLUDE_quartz" = xyes])
915
AM_CONDITIONAL(INCLUDE_IM_BROADWAY, [test x"$INCLUDE_broadway" = xyes])
916 917 918 919 920 921
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])

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

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

934
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
935

936 937 938
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
939 940 941
         AC_MSG_ERROR([
*** --enable-gtk2-dependency has been set but no existing
*** `gtk-update-icon-cache` has been found in the path.])
942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958
       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`
959 960
       # This is the native gtk-update-icon-cache which will be used at
       # build time, NOT the one installed on the target host.
Matthias Clasen's avatar
Matthias Clasen committed
961
       GTK_UPDATE_ICON_CACHE="`cd $builddir && pwd`/gtk/native/native-update-icon-cache$BUILD_EXEEXT"
962
       AC_SUBST(NATIVE_GDKPIXBUF_CFLAGS)
963 964 965 966 967
       AC_SUBST(NATIVE_GDKPIXBUF_LIBS)
       AC_SUBST(GTK_UPDATE_ICON_CACHE)],

      [# In native compiling case, the gtk-update-icon-cache installed
       # is the same as the one used during build.
Matthias Clasen's avatar
Matthias Clasen committed
968
       GTK_UPDATE_ICON_CACHE="\$(abs_top_builddir)/gtk/gtk-update-icon-cache$EXEEXT"
969
       AC_SUBST(GTK_UPDATE_ICON_CACHE)]
970
)
971

972
AM_CONDITIONAL(USE_EXTERNAL_ICON_CACHE, [test "x$enable_gtk2_dependency" = xyes])
973

974 975 976
########################################
# Windowing system checks
########################################
977

978 979 980
# GTK+ uses some X calls, so needs to link against X directly
GTK_DEP_PACKAGES_FOR_X=
GTK_DEP_LIBS_FOR_X=
981
X_EXTENSIONS=
982

983
if test "x$enable_x11_backend" = xyes; then
984 985
  X_PACKAGES=fontconfig

986 987 988 989 990 991 992 993 994
  #
  # 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

995
  #
996
  # Check for basic X packages; we use pkg-config if available
997
  #
998
  if $PKG_CONFIG --exists x11 xext; then
999
    have_base_x_pc=true
1000 1001
    X_PACKAGES="$X_PACKAGES x11 xext"
    x_libs="`$PKG_CONFIG --libs x11 xext`"
1002
    X_CFLAGS="`$PKG_CONFIG --cflags x11 xext`"
1003

1004 1005 1006 1007
    # 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
1008
      case $I in
1009 1010 1011 1012
        *.la) ;;
        *) x_libs_for_checks="$x_libs_for_checks $I" ;;
      esac
    done
1013

1014 1015 1016 1017 1018 1019 1020
    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
1021

1022
    x_cflags="$X_CFLAGS"
1023
    x_libs_for_checks="$X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
Elliot Lee's avatar
Elliot Lee committed
1024

1025
    GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
1026 1027
  fi

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

1031
  gtk_save_cppflags="$CPPFLAGS"
1032
  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Alexander Larsson's avatar
Alexander Larsson committed
1033

1034 1035
  gtk_save_LIBS=$LIBS
  LIBS="$x_libs_for_checks $LIBS"
1036

1037 1038 1039 1040
  # 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, :,
1041
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
1042
  AC_CHECK_FUNC(XextFindDisplay, :,
1043
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
1044

1045 1046 1047
  # Check for xReply

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

1062 1063 1064
  # Check for XKB support.

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

1077
  # Check for shaped window extension
1078

1079 1080
  AC_CHECK_FUNC(XShapeCombineMask, :,
     [AC_MSG_ERROR([Shape extension not found, check your development headers])])
1081

1082
  # X SYNC check
1083 1084
  gtk_save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS $x_cflags"
1085

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

1091 1092
  CFLAGS="$gtk_save_CFLAGS"

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

1098 1099
    gtk_save_cppflags="$CPPFLAGS"
    CPPFLAGS="$CPPFLAGS $x_cflags"
1100

1101
    # Check for XFree
1102
    AC_MSG_CHECKING(for Xinerama packages)
1103

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

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

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

1134 1135
	    AC_MSG_CHECKING(for Xinerama support on Solaris)

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

1158 1159 1160 1161
  # Check for XGetEventData for GenericEvents
  AC_CHECK_FUNC(XGetEventData,
                AC_DEFINE(HAVE_XGENERICEVENTS, 1, [Have XGenericEvent]))

1162
  # set up things for XInput
1163
  if $PKG_CONFIG --exists "xi" ; then
1164

1165
    X_PACKAGES="$X_PACKAGES xi"
1166
    GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xi"
1167 1168

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

1172 1173
    gtk_save_LIBS="$LIBS"
    LIBS="$LIBS -lXi"
1174 1175 1176 1177 1178 1179 1180 1181 1182

    # 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>]])])
1183
    LIBS="$gtk_save_LIBS"
1184 1185 1186 1187 1188 1189

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

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

  # Check for the RANDR extension
1196 1197 1198 1199 1200 1201 1202 1203 1204
  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
1205
  fi
1206

1207
  # Checks for Xcursor library
1208

1209
  if $PKG_CONFIG --exists xcursor ; then
1210
    AC_DEFINE(HAVE_XCURSOR, 1, [Have the Xcursor library])
1211

1212 1213 1214 1215
    X_PACKAGES="$X_PACKAGES xcursor"
  fi

  # Checks for XFixes extension
1216

1217 1218 1219
  if test x"$enable_xfixes" != xno; then
    if $PKG_CONFIG --exists xfixes ; then
      AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension])
1220

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

1229 1230
  # Checks for Xcomposite extension

1231 1232 1233
  if test x"$enable_xcomposite" != xno; then
    if $PKG_CONFIG --exists xcomposite ; then
      AC_DEFINE(HAVE_XCOMPOSITE, 1, [Have the XCOMPOSITE X extension])
1234

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

  # Checks for Xdamage extension

1245 1246 1247
  if test x"$enable_xdamage" != xno; then
    if $PKG_CONFIG --exists xdamage ; then
      AC_DEFINE(HAVE_XDAMAGE, 1, [Have the XDAMAGE X extension])
1248

1249 1250 1251 1252 1253 1254
      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
1255 1256
  fi

1257
  if $have_base_x_pc ; then
1258 1259
    GDK_EXTRA_LIBS="$x_extra_libs"
  else
1260
    GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs -lXext -lX11 $GDK_EXTRA_LIBS"
1261 1262 1263 1264 1265
  fi

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

1266
  AM_CONDITIONAL(USE_X11, true)
1267 1268

  # strip leading space
1269
  X_EXTENSIONS=${X_EXTENSIONS#* }
1270

1271
else
1272 1273
  XPACKAGES=

1274
  AM_CONDITIONAL(USE_X11, false)
1275 1276
fi

1277 1278
# Check for gio-unix
if test "$have_gio_unix" = "yes"; then
1279
  GDK_GIO_PACKAGE="gio-unix-2.0 >= glib_required_version"
1280 1281 1282
  AC_DEFINE([HAVE_GIO_UNIX], [1],
            [Define if gio-unix is available])
else
1283
  GDK_GIO_PACKAGE="gio-2.0 >= glib_required_version"
1284 1285
fi

1286
# Check for Pango flags
1287

1288 1289 1290 1291
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`
1292

1293 1294 1295
        AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
else
        AC_MSG_ERROR([
1296 1297
*** Pango not found. Pango built with Cairo support is required
*** to build GTK+. See http://www.pango.org for Pango information.
1298 1299
])
fi
1300

1301
CFLAGS="$CFLAGS $PANGO_CFLAGS"
1302

1303 1304 1305
if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
        :
else
1306 1307 1308
	gtk_save_LIBS="$LIBS"
        LIBS="$PANGO_LIBS $LIBS"
        AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
1309
*** Can't link to Pango. Pango is required to build
1310 1311
*** GTK+. For more information see http://www.pango.org]))
        LIBS="$gtk_save_LIBS"
1312
fi
1313

1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324
# Check for cairo_set_device_scale, as we don't want to depend hard on
# this until there is a stable release with it
CAIRO_CFLAGS=`$PKG_CONFIG --cflags cairo`
CAIRO_LIBS=`$PKG_CONFIG --libs cairo`
CFLAGS="$CFLAGS $CAIRO_CFLAGS"
gtk_save_LIBS="$LIBS"
LIBS="$CAIRO_LIBS $LIBS"
AC_CHECK_FUNCS(cairo_surface_set_device_scale)
LIBS="$gtk_save_LIBS"


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

1328
GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 >= gdk_pixbuf_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version"
1329
GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $cairo_backends"
Matthias Clasen's avatar
Matthias Clasen committed
1330 1331 1332
if test "x$enable_x11_backend" = xyes; then
  GDK_PRIVATE_PACKAGES="$GDK_PRIVATE_PACKAGES pangoft2"
fi
1333

1334 1335 1336
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"
1337 1338 1339 1340 1341 1342 1343 1344
#
# 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

1345
AC_SUBST(GDK_PACKAGES)
Matthias Clasen's avatar
Matthias Clasen committed
1346
AC_SUBST(GDK_PRIVATE_PACKAGES)
1347 1348 1349 1350
AC_SUBST(GDK_EXTRA_LIBS)
AC_SUBST(GDK_EXTRA_CFLAGS)
AC_SUBST(GDK_DEP_LIBS)
AC_SUBST(GDK_DEP_CFLAGS)
1351 1352


1353 1354 1355
########################################
# Check for Accessibility Toolkit flags
########################################
Havoc Pennington's avatar
Havoc Pennington committed
1356

1357
if test x$enable_x11_backend = xyes; then