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

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

11
m4_define([gtk_major_version], [3])
Matthias Clasen's avatar
Matthias Clasen committed
12
m4_define([gtk_minor_version], [15])
Matthias Clasen's avatar
Matthias Clasen committed
13
m4_define([gtk_micro_version], [12])
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.43.4])
45
m4_define([pango_required_version], [1.36.7])
Matthias Clasen's avatar
Matthias Clasen committed
46
m4_define([atk_required_version], [2.15.1])
47
m4_define([cairo_required_version], [1.14.0])
48
m4_define([gdk_pixbuf_required_version], [2.30.0])
49
m4_define([introspection_required_version], [1.39.0])
50
m4_define([wayland_required_version], [1.5.91])
51
m4_define([mirclient_required_version], [0.11.0])
52
m4_define([epoxy_required_version], [1.0])
53 54 55 56 57
GLIB_REQUIRED_VERSION=glib_required_version
PANGO_REQUIRED_VERSION=pango_required_version
ATK_REQUIRED_VERSION=atk_required_version
CAIRO_REQUIRED_VERSION=cairo_required_version
GDK_PIXBUF_REQUIRED_VERSION=gdk_pixbuf_required_version
58 59
INTROSPECTION_REQUIRED_VERSION=introspection_required_version

60 61 62 63 64
AC_SUBST(GLIB_REQUIRED_VERSION)
AC_SUBST(PANGO_REQUIRED_VERSION)
AC_SUBST(ATK_REQUIRED_VERSION)
AC_SUBST(CAIRO_REQUIRED_VERSION)
AC_SUBST(GDK_PIXBUF_REQUIRED_VERSION)
65
AC_SUBST(INTROSPECTION_REQUIRED_VERSION)
66 67 68 69

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

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

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

78
#
79 80 81 82 83 84 85 86
# For each of the libraries we build, we define the following
# substituted variables:
#
# foo_PACKAGES:     pkg-config packages this library requires
# foo_EXTRA_LIBS:   Libraries this module requires not pulled in by pkg-config
# foo_EXTRA_CFLAGS: cflags this module requires not pulled in by pkg-config
# foo_DEP_LIBS:     All libraries this module requires
# foo_DEP_CFLAGS:   All cflags this module requires
87 88


89 90 91 92 93 94 95 96
GTK_MAJOR_VERSION=gtk_major_version
GTK_MINOR_VERSION=gtk_minor_version
GTK_MICRO_VERSION=gtk_micro_version
GTK_INTERFACE_AGE=gtk_interface_age
GTK_BINARY_AGE=gtk_binary_age
GTK_VERSION=gtk_version
GTK_API_VERSION=gtk_api_version
GTK_BINARY_VERSION=gtk_binary_version
97 98 99
AC_SUBST(GTK_MAJOR_VERSION)
AC_SUBST(GTK_MINOR_VERSION)
AC_SUBST(GTK_MICRO_VERSION)
100 101
AC_SUBST(GTK_INTERFACE_AGE)
AC_SUBST(GTK_BINARY_AGE)
Owen Taylor's avatar
Owen Taylor committed
102
AC_SUBST(GTK_API_VERSION)
103
AC_SUBST(GTK_VERSION)
104
AC_SUBST(GTK_BINARY_VERSION)
105 106

# libtool versioning
107 108 109 110 111 112
#LT_RELEASE=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION
#LT_CURRENT=`expr $GTK_MICRO_VERSION - $GTK_INTERFACE_AGE`
#LT_REVISION=$GTK_INTERFACE_AGE
#LT_AGE=`expr $GTK_BINARY_AGE - $GTK_INTERFACE_AGE`
#LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`

113 114 115 116 117 118
m4_define([lt_current], [m4_eval(100 * gtk_minor_version + gtk_micro_version - gtk_interface_age)])
m4_define([lt_revision], [gtk_interface_age])
m4_define([lt_age], [m4_eval(gtk_binary_age - gtk_interface_age)])
LT_VERSION_INFO="lt_current:lt_revision:lt_age"
LT_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age)
AC_SUBST(LT_VERSION_INFO)
Tor Lillqvist's avatar
Tor Lillqvist committed
119
AC_SUBST(LT_CURRENT_MINUS_AGE)
120

121 122
m4_define([gail_lt_current],[0])
m4_define([gail_lt_revision],[0])
123 124 125 126 127
m4_define([gail_lt_age],[0])
m4_define([gail_lt_version_info],[gail_lt_current:gail_lt_revision:gail_lt_age])
m4_define([gail_lt_current_minus_age],[m4_eval(gail_lt_current - gail_lt_age)])
AC_SUBST([GAIL_LT_VERSION_INFO],[gail_lt_version_info])
AC_SUBST([GAIL_LT_CURRENT_MINUS_AGE],[gail_lt_current_minus_age])
128

129 130 131 132 133 134 135 136 137 138 139 140 141
# Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=721346 until fixed upstream in autoconf-archive
if test "$cross_compiling" = "no"; then
  if test -n "$CFLAGS"; then
    CFLAGS_FOR_BUILD=$CFLAGS
  fi
  if test -n "$CPPFLAGS"; then
    CPPFLAGS_FOR_BUILD=$CPPFLAGS
  fi
  if test -n "$LDFLAGS"; then
    LDFLAGS_FOR_BUILD=$LDFLAGS
  fi
fi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

346
cairo_backends=
347
backend_immodules=
348
have_gio_unix=no
349
GDK_BACKENDS=
350
GDK_EXTRA_LIBS=
351 352
# expoxy.pc has Cflags: -I${includedir}, but pkg-config swallows that :-(
GDK_EXTRA_CFLAGS="-I${prefix}/include"
353 354
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
Tor Lillqvist's avatar
Tor Lillqvist committed
401
else
402
  AM_CONDITIONAL(USE_QUARTZ, false)
Tor Lillqvist's avatar
Tor Lillqvist committed
403
fi
404
AC_SUBST(DISABLE_ON_QUARTZ)
405

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

AC_CHECK_FUNCS(posix_fallocate)

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

426 427
PKG_PROG_PKG_CONFIG

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

459
MIR_DEPENDENCIES="mirclient >= mirclient_required_version"
460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482
if test "$enable_mir_backend" = "maybe" ; then
  PKG_CHECK_EXISTS($MIR_DEPENDENCIES, [have_mir_deps=yes], [have_mir_deps=no])
  AC_MSG_CHECKING([for MIR_DEPENDENCIES])
  if test "$have_mir_deps" = "no" ; then
    enable_mir_backend=no
  else
    enable_mir_backend=yes
  fi
  AC_MSG_RESULT($enable_mir_backend)
fi

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

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

483
# strip leading space
484
GDK_BACKENDS=${GDK_BACKENDS#* }
485

486
AC_SUBST(GDK_BACKENDS)
Tor Lillqvist's avatar
Tor Lillqvist committed
487

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

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

# Build time sanity check...
AM_SANITY_CHECK

Raja R Harinath's avatar
Raja R Harinath committed
506
changequote(,)dnl
507
if test "x$GCC" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
508 509 510 511
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
512

513
  if test "x$enable_ansi" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
514 515 516 517 518 519 520 521 522
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac

    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
523
  fi
524 525
fi
changequote([,])dnl
Tor Lillqvist's avatar
Tor Lillqvist committed
526

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

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

576
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
577

578 579
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])

580 581 582 583
dnl ******************************************************
dnl * See whether to include shared library dependencies *
dnl ******************************************************

584
AC_ARG_ENABLE(explicit-deps,
585
              [AS_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
586 587
                              [use explicit dependencies in .pc files [default=auto]])],,
              [enable_explicit_deps=auto])
588

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

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

612
AC_PATH_PROGS(PERL, perl5 perl)
613

614
AC_CHECK_FUNCS(lstat mkstemp)
615
AC_CHECK_FUNCS(localtime_r)
616 617 618

# _NL_TIME_FIRST_WEEKDAY is an enum and not a define
AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY])
619 620 621 622
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])
623 624 625 626 627
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
628

629 630
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
631 632 633 634
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])
635 636 637 638 639 640 641 642
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])
643 644 645 646
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])
647 648 649 650 651 652 653 654
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])
655 656 657 658
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])
659 660 661 662 663
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
664

Owen Taylor's avatar
Owen Taylor committed
665
# i18n stuff
Matthias Clasen's avatar
Matthias Clasen committed
666
ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
667
AM_GLIB_GNU_GETTEXT
668 669

AC_MSG_CHECKING([whether xgettext supports ui files])
670
if $ac_cv_path_XGETTEXT --output=- --language=Glade $srcdir/gtk/ui/gtkfilechooserwidget.ui > /dev/null 2>&1; then
671 672 673 674 675 676
  AC_MSG_RESULT([yes])
else
  AC_MSG_RESULT([no])
  AC_MSG_ERROR([GNU gettext 0.18.3 or newer is required])
fi

677
LIBS="$LIBS $INTLLIBS"
678 679 680 681 682
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]],
                   [[]])
683

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

704
AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
Owen Taylor's avatar
Owen Taylor committed
705

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

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

726 727
LIBS=$gtk_save_LIBS

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

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

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

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

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

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

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

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

819

820 821
# Checks for library functions.
AC_FUNC_MMAP
822

Matthias Clasen's avatar
Matthias Clasen committed
823
AC_CHECK_FUNCS(mallinfo)
824 825
AC_CHECK_FUNCS(getresuid)
AC_TYPE_UID_T
826

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

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

836 837
AC_MSG_CHECKING(whether to build dynamic modules)

838
AC_ARG_ENABLE(modules,
839
              [AS_HELP_STRING([--disable-modules],
840
                              [disable dynamic module loading])])
841

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

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

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

881
AM_CONDITIONAL(BUILD_DYNAMIC_MODULES, $dynworks)
882

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

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

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

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

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

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

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

961
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
962

963 964 965
########################################
# Windowing system checks
########################################
966

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

972
if test "x$enable_x11_backend" = xyes; then
973 974
  X_PACKAGES=fontconfig

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

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

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

1003 1004 1005 1006 1007 1008 1009
    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
1010

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

1014
    GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
1015 1016
  fi

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

1020
  gtk_save_cppflags="$CPPFLAGS"
1021
  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Alexander Larsson's avatar
Alexander Larsson committed
1022

1023 1024
  gtk_save_LIBS=$LIBS
  LIBS="$x_libs_for_checks $LIBS"
1025

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

1034 1035 1036 1037 1038 1039 1040 1041 1042 1043
  # Check if <X11/extensions/XIproto.h> is needed for xReply.

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

1045 1046 1047
  # Check for XKB support.

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

1060
  # Check for shaped window extension
1061

1062 1063
  AC_CHECK_FUNC(XShapeCombineMask, :,
     [AC_MSG_ERROR([Shape extension not found, check your development headers])])
1064

1065
  # X SYNC check
1066 1067
  gtk_save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS $x_cflags"
1068

1069 1070
  AC_CHECK_FUNC(XSyncQueryExtension,
      [AC_CHECK_HEADER(X11/extensions/sync.h,
1071
	  AC_DEFINE(HAVE_XSYNC, 1, [Have the SYNC extension library]),
1072
	  :, [#include <X11/Xlib.h>])])
1073

1074 1075
  CFLAGS="$gtk_save_CFLAGS"

1076
  if test "x$enable_xinerama" != "xno"; then
1077
    # Check for Xinerama extension (Solaris impl or Xfree impl)
1078 1079 1080
    have_xfree_xinerama=false
    have_solaris_xinerama=false

1081 1082
    gtk_save_cppflags="$CPPFLAGS"
    CPPFLAGS="$CPPFLAGS $x_cflags"
1083

1084
    # Check for XFree
1085
    AC_MSG_CHECKING(for Xinerama packages)
1086

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

    if $have_xfree_xinerama ; then
1101
      X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1102 1103 1104 1105 1106 1107 1108 1109
      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
1110

1111 1112 1113
	    have_solaris_xinerama=false
	    AC_CHECK_FUNC(XineramaGetInfo,
	        [AC_CHECK_HEADER(X11/extensions/xinerama.h,
1114
		    [have_solaris_xinerama=true], :,
1115
		    [#include <X11/Xlib.h>])])
1116

1117 1118
	    AC_MSG_CHECKING(for Xinerama support on Solaris)

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

1141 1142 1143 1144
  # Check for XGetEventData for GenericEvents
  AC_CHECK_FUNC(XGetEventData,
                AC_DEFINE(HAVE_XGENERICEVENTS, 1, [Have XGenericEvent]))

1145
  # set up things for XInput
1146
  if $PKG_CONFIG --exists "xi" ; then
1147

1148
    X_PACKAGES="$X_PACKAGES xi"
1149
    GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xi"
1150 1151

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

1155 1156
    gtk_save_LIBS="$LIBS"
    LIBS="$LIBS -lXi"
1157 1158 1159 1160 1161 1162 1163 1164 1165

    # 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>]])])
1166
    LIBS="$gtk_save_LIBS"
1167 1168 1169 1170 1171 1172

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

1175 1176
  AS_IF([test "x$have_xinput2" != "xyes"],
        [AC_MSG_ERROR([*** XInput2 extension not found. Check 'config.log' for more details.])])
1177 1178

  # Check for the RANDR extension
1179 1180 1181 1182 1183 1184 1185 1186 1187
  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
1188
  fi
1189

1190
  # Checks for Xcursor library
1191

1192
  if $PKG_CONFIG --exists xcursor ; then
1193
    AC_DEFINE(HAVE_XCURSOR, 1, [Have the Xcursor library])
1194

1195 1196 1197 1198
    X_PACKAGES="$X_PACKAGES xcursor"
  fi

  # Checks for XFixes extension
1199

1200 1201 1202
  if test x"$enable_xfixes" != xno; then
    if $PKG_CONFIG --exists xfixes ; then
      AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension])
1203

1204 1205 1206 1207 1208 1209
      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
1210 1211
  fi

1212 1213
  # Checks for Xcomposite extension

1214 1215 1216
  if test x"$enable_xcomposite" != xno; then
    if $PKG_CONFIG --exists xcomposite ; then
      AC_DEFINE(HAVE_XCOMPOSITE, 1, [Have the XCOMPOSITE X extension])
1217

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

  # Checks for Xdamage extension

1228 1229 1230
  if test x"$enable_xdamage" != xno; then
    if $PKG_CONFIG --exists xdamage ; then
      AC_DEFINE(HAVE_XDAMAGE, 1, [Have the XDAMAGE X extension])
1231

1232 1233 1234 1235 1236 1237
      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
1238 1239
  fi

1240
  if $have_base_x_pc ; then
1241 1242
    GDK_EXTRA_LIBS="$x_extra_libs"
  else
1243
    GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs -lXext -lX11 $GDK_EXTRA_LIBS"
1244 1245 1246 1247 1248
  fi

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

1249
  AM_CONDITIONAL(USE_X11, true)
1250 1251

  # strip leading space
1252
  X_EXTENSIONS=${X_EXTENSIONS#* }
1253

1254
else
1255 1256
  XPACKAGES=

1257
  AM_CONDITIONAL(USE_X11, false)
1258 1259
fi

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

1269
# Check for Pango flags
1270

1271 1272 1273 1274
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`
1275

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

1284
CFLAGS="$CFLAGS $PANGO_CFLAGS"
1285

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

1297 1298
CFLAGS="$saved_cflags"
LDFLAGS="$saved_ldflags"
1299

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

1306 1307 1308
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"
1309 1310 1311 1312 1313 1314 1315 1316
#
# 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

1317
AC_SUBST(GDK_PACKAGES)
Matthias Clasen's avatar
Matthias Clasen committed
1318
AC_SUBST(GDK_PRIVATE_PACKAGES)
1319 1320 1321 1322
AC_SUBST(GDK_EXTRA_LIBS)
AC_SUBST(GDK_EXTRA_CFLAGS)
AC_SUBST(GDK_DEP_LIBS)
AC_SUBST(GDK_DEP_CFLAGS)
1323 1324


1325 1326 1327
########################################
# Check for Accessibility Toolkit flags
########################################
Havoc Pennington's avatar
Havoc Pennington committed
1328

1329
if test x$enable_x11_backend = xyes; then
1330 1331 1332 1333 1334
   ATK_PACKAGES="atk atk-bridge-2.0"
else
   ATK_PACKAGES="atk"
fi

1335
PKG_CHECK_MODULES(ATK, $ATK_PACKAGES)
1336

1337
GTK_PACKAGES="atk >= atk_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version gdk-pixbuf-2.0 >= gdk_pixbuf_required_version gio-2.0 >= glib_required_version"
1338
GTK_PRIVATE_PACKAGES="$ATK_PACKAGES $WAYLAND_PACKAGES $MIR_PACKAGES epoxy >= epoxy_required_version"
1339
if test "x$enable_x11_backend" = xyes; then
1340
  GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2"
1341
fi
1342
if test "$have_gio_unix" = "yes"; then
1343
  GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES gio-unix-2.0 >= glib_required_version"
1344
fi
1345
GTK_EXTRA_LIBS=
1346

1347
GTK_EXTRA_CFLAGS=
1348 1349 1350
PKG_CHECK_MODULES(GTK_DEP, $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES $GTK_PRIVATE_PACKAGES)
GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X $GTK_DEP_LIBS $GTK_EXTRA_LIBS $MATH_LIB"
GTK_DEP_CFLAGS="$GTK_DEP_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
1351

1352 1353 1354 1355
if test x"$os_win32" = xyes; then
  GTK_EXTRA_CFLAGS="$msnative_struct"
fi

1356 1357 1358
GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"