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

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

Matthias Clasen's avatar
Matthias Clasen committed
11
m4_define([gtk_major_version], [3])
Matthias Clasen's avatar
Matthias Clasen committed
12
m4_define([gtk_minor_version], [5])
Matthias Clasen's avatar
Matthias Clasen committed
13
m4_define([gtk_micro_version], [3])
Matthias Clasen's avatar
Matthias Clasen committed
14
m4_define([gtk_interface_age], [0])
Owen Taylor's avatar
Owen Taylor committed
15 16
m4_define([gtk_binary_age],
          [m4_eval(100 * gtk_minor_version + gtk_micro_version)])
17 18
m4_define([gtk_version],
          [gtk_major_version.gtk_minor_version.gtk_micro_version])
19
# This is the X.Y used in -lgtk-FOO-X.Y
20
m4_define([gtk_api_version], [3.0])
21

22
AC_PREREQ([2.62])
23 24 25 26 27 28 29
AC_INIT([gtk+], [gtk_version],
        [http://bugzilla.gnome.org/enter_bug.cgi?product=gtk%2B],
        [gtk+])

AC_CONFIG_HEADER([config.h])
AC_CONFIG_SRCDIR([gdk/gdktypes.h])
AC_CONFIG_MACRO_DIR([m4])
30
AC_CONFIG_AUX_DIR([build-aux])
31

32
# Define a string for the earliest version that this release has
33 34 35 36
# 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+.
37 38
#
#GTK_BINARY_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$LT_CURRENT
39
m4_define([gtk_binary_version], [3.0.0])
40 41

# required versions of other packages
42
m4_define([glib_required_version], [2.33.1])
43 44
m4_define([pango_required_version], [1.30.0])
m4_define([atk_required_version], [2.2.0])
Benjamin Otte's avatar
Benjamin Otte committed
45
m4_define([cairo_required_version], [1.10.0])
46 47
m4_define([gdk_pixbuf_required_version], [2.26.0])
m4_define([introspection_required_version], [1.32.0])
48 49 50 51 52
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
53 54
INTROSPECTION_REQUIRED_VERSION=introspection_required_version

55 56 57 58 59
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)
60
AC_SUBST(INTROSPECTION_REQUIRED_VERSION)
61 62 63 64

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

Javier Jardón's avatar
Javier Jardón committed
65
AM_INIT_AUTOMAKE([1.11 -Wall no-define -Wno-portability tar-ustar no-dist-gzip dist-xz])
66
AM_MAINTAINER_MODE([enable])
Elliot Lee's avatar
Elliot Lee committed
67

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

Owen Taylor's avatar
Owen Taylor committed
73
#
74 75 76 77 78 79 80 81
# 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
82 83


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

# libtool versioning
102 103 104 105 106 107
#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`

108 109 110 111 112 113
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
114
AC_SUBST(LT_CURRENT_MINUS_AGE)
115

116 117
m4_define([gail_lt_current],[0])
m4_define([gail_lt_revision],[0])
118 119 120 121 122
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])
123

124 125 126 127 128 129 130 131
# Checks for programs.
AC_PROG_CC
AC_PROG_CC_C_O
AC_PROG_CC_STDC
AC_PROG_INSTALL
AC_PROG_MAKE_SET


132
GETTEXT_PACKAGE=gtk30
133
AC_SUBST(GETTEXT_PACKAGE)
134 135
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
                   [The prefix for our gettext translation domains.])
136

137 138
AC_CANONICAL_HOST

139 140
MATH_LIB=-lm
AC_MSG_CHECKING([for native Win32])
141
LIB_EXE_MACHINE_FLAG=X86
142
EXE_MANIFEST_ARCHITECTURE=X86
143
DISABLE_ON_W32=''
144 145
case "$host" in
  *-*-mingw*)
146 147
    dnl Comment-out certain gtk3.types.in lines
    DISABLE_ON_W32='%'
148
    os_win32=yes
149
    gio_can_sniff=no
150
    MATH_LIB=
151 152 153
    case "$host" in
    x86_64-*-*)
      LIB_EXE_MACHINE_FLAG=X64
154
      EXE_MANIFEST_ARCHITECTURE=AMD64
155 156
      ;;
    esac
157 158 159 160 161 162
    ;;
  *)
    os_win32=no
    ;;
esac
AC_MSG_RESULT([$os_win32])
Elliot Lee's avatar
Elliot Lee committed
163

164
AC_SUBST(DISABLE_ON_W32)
165
AC_SUBST(LIB_EXE_MACHINE_FLAG)
166
AC_SUBST(EXE_MANIFEST_ARCHITECTURE)
167

Matthias Clasen's avatar
Matthias Clasen committed
168 169 170 171 172
case $host in
  *-*-linux*)
    os_linux=yes
    ;;
esac
173

174
dnl
175 176
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.
177
dnl
178
AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], gcc)
179
AC_LANG_PUSH([C++])
180

181 182 183
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
                                   [[class a { int b; } c;]])],
                  [],[CXX=])
184
AM_CONDITIONAL(HAVE_CXX, test "$CXX" != "")
185 186 187

gtk_save_cxxflags="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -x objective-c++"
188 189 190
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@interface Foo @end]],
                                   [[]])],
                  [OBJC=yes],[OBJC=no])
191
AM_CONDITIONAL(HAVE_OBJC, test "$OBJC" = "yes")
192
CXXFLAGS="$gtk_save_cxxflags"
193
AC_LANG_POP([C++])
194

Tor Lillqvist's avatar
Typo.  
Tor Lillqvist committed
195
if test "$os_win32" = "yes"; then
196 197 198 199 200 201 202 203 204 205
  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

206 207 208 209 210
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
211

212 213 214
# Make sure we use 64-bit versions of various file stuff.
AC_SYS_LARGEFILE

215
AM_PROG_AS
Matthias Clasen's avatar
Matthias Clasen committed
216
AC_PATH_PROG(NM, nm, nm)
217

Tor Lillqvist's avatar
Tor Lillqvist committed
218 219 220 221 222 223 224 225 226 227 228 229 230
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")
231
AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
Matthias Clasen's avatar
Matthias Clasen committed
232
AM_CONDITIONAL(OS_LINUX, test "$os_linux" = "yes")
Tor Lillqvist's avatar
Tor Lillqvist committed
233 234

if test "$os_win32" = "yes"; then
Tor Lillqvist's avatar
Tor Lillqvist committed
235 236 237 238
  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
239 240 241 242
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
fi
AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)

243 244
m4_define([debug_default],
          m4_if(m4_eval(gtk_minor_version % 2), [1], [yes], [minimum]))
245 246

dnl declare --enable-* args and collect ac_help strings
247
AC_ARG_ENABLE(debug,
248 249 250
              [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
                              [turn on debugging @<:@default=debug_default@:>@])],,
              [enable_debug=debug_default])
Matthias Clasen's avatar
Matthias Clasen committed
251 252

AC_ARG_ENABLE(rebuilds,
253
              [AS_HELP_STRING([--disable-rebuilds],
Matthias Clasen's avatar
Matthias Clasen committed
254 255 256
                              [disable all source autogeneration rules])],,
              [enable_rebuilds=yes])

257
AC_ARG_ENABLE(gtk2-dependency,
258 259
              [AS_HELP_STRING([--enable-gtk2-dependency],
                              [Do not build gtk-update-icon-cache and other shared tools])],,
260 261 262 263
              [enable_gtk2_dependency=no])

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

264
AC_ARG_ENABLE(xkb,
265
              [AS_HELP_STRING([--enable-xkb],
Matthias Clasen's avatar
Matthias Clasen committed
266
                              [support XKB extension [default=maybe]])],,
267
              [enable_xkb="maybe"])
268
AC_ARG_ENABLE(xinerama,
269
              [AS_HELP_STRING([--enable-xinerama],
270
	                      [support Xinerama extension [default=maybe]])],,
Matthias Clasen's avatar
Matthias Clasen committed
271
              [enable_xinerama="maybe"])
272
AC_ARG_ENABLE(xrandr,
273
              [AS_HELP_STRING([--enable-xrandr],
274
                              [support XRandR extension [default=maybe]])],,
275 276
              [enable_xrandr="maybe"])
AC_ARG_ENABLE(xfixes,
277
              [AS_HELP_STRING([--enable-xfixes],
278
                              [support XFixes extension [default=maybe]])],,
279 280
              [enable_xfixes="maybe"])
AC_ARG_ENABLE(xcomposite,
281
              [AS_HELP_STRING([--enable-xcomposite],
282
                              [support X Composite extension [default=maybe]])],,
283 284
              [enable_xcomposite="maybe"])
AC_ARG_ENABLE(xdamage,
285
              [AS_HELP_STRING([--enable-xdamage],
286
                              [support X Damage extension [default=maybe]])],,
287
              [enable_xdamage="maybe"])
288

289
AC_ARG_ENABLE(x11-backend,
290
              [AS_HELP_STRING([--enable-x11-backend],
291 292 293
                              [enable the X11 gdk backend])],
			      [backend_set=yes])
AC_ARG_ENABLE(win32-backend,
294
              [AS_HELP_STRING([--enable-win32-backend],
295 296 297
                              [enable the Win32 gdk backend])],
			      [backend_set=yes])
AC_ARG_ENABLE(quartz-backend,
298
              [AS_HELP_STRING([--enable-quartz-backend],
299 300
                              [enable the quartz gdk backend])],
			      [backend_set=yes])
301
AC_ARG_ENABLE(broadway-backend,
302
              [AS_HELP_STRING([--enable-broadway-backend],
303 304
                              [enable the broadway (HTML5) gdk backend])],
			      [backend_set=yes])
Kristian Høgsberg's avatar
Kristian Høgsberg committed
305
AC_ARG_ENABLE(wayland-backend,
306
              [AS_HELP_STRING([--enable-wayland-backend],
Kristian Høgsberg's avatar
Kristian Høgsberg committed
307 308
                              [enable the wayland gdk backend])],
			      [backend_set=yes])
309 310 311 312 313 314 315 316 317

if test -z "$backend_set"; then
  if test "$platform_win32" = yes; then
    enable_win32_backend=yes
  else
    enable_x11_backend=yes
  fi
fi

318 319 320 321 322
AC_ARG_ENABLE(quartz-relocation,
              [AS_HELP_STRING([--enable-quartz-relocation],
                              [enable bundle-based relocation functions])],
                              [quartz_relocation=yes])

323 324 325 326 327 328
AC_ARG_ENABLE(wayland-cairo-gl,
              AS_HELP_STRING([--enable-wayland-cairo-gl],
                             [enable the use of Cairo GL in the Wayland backend]),
              [enable_wayland_cairo_gl=yes])


329
cairo_backends=
330
backend_immodules=
331
have_gio_unix=no
332
GDK_BACKENDS=
333 334 335 336
GDK_EXTRA_LIBS=
GDK_EXTRA_CFLAGS=
GDK_WINDOWING=
PANGO_PACKAGES="pango pangocairo"
337

338
if test "$enable_x11_backend" = "yes"; then
339 340 341 342 343 344
  # 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
345
  have_gio_unix=yes
346 347 348
  backend_immodules="$backend_immodules,xim"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_X11"
Tor Lillqvist's avatar
Tor Lillqvist committed
349
fi
350

351
if test "$enable_win32_backend" = "yes"; then
352 353
  cairo_backends="$cairo_backends cairo-win32"
  GDK_BACKENDS="$GDK_BACKENDS win32"
354 355 356 357 358 359 360 361
  backend_immodules="$backend_immodules,ime"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_WIN32"
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid"
  AM_CONDITIONAL(USE_WIN32, true)
  PANGO_PACKAGES="pangowin32 pangocairo"
else
  AM_CONDITIONAL(USE_WIN32, false)
362
fi
363

364
if test "x$enable_quartz_backend" = xyes; then
365 366
  cairo_backends="$cairo_backends cairo-quartz"
  GDK_BACKENDS="$GDK_BACKENDS quartz"
367 368 369 370
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_QUARTZ"
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa"
  AM_CONDITIONAL(USE_QUARTZ, true)
371 372 373 374
  if test "x$quartz_relocation" = xyes; then
    AC_DEFINE([QUARTZ_RELOCATION], [1], [Use NSBundle functions to determine load paths for libraries, translations, etc.])
  fi

Tor Lillqvist's avatar
Tor Lillqvist committed
375
else
376
  AM_CONDITIONAL(USE_QUARTZ, false)
Tor Lillqvist's avatar
Tor Lillqvist committed
377 378
fi

379

380 381
if test "x$enable_broadway_backend" == xyes; then
  GDK_BACKENDS="$GDK_BACKENDS broadway"
382
  cairo_backends="$cairo_backends cairo"
383 384 385 386 387 388 389
  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
390

Kristian Høgsberg's avatar
Kristian Høgsberg committed
391
if test "x$enable_wayland_backend" == "xyes"; then
392 393 394 395 396 397 398 399
  if test "x$enable_wayland_cairo_gl" == "xyes"; then
    # Wayland can use cairo-gl
    cairo_backends="$cairo_backends cairo-gl"
    AC_DEFINE(GDK_WAYLAND_USE_EGL, [1], [Whether to use EGL in Wayland backend])
  else
    # For the cairo image backend
    cairo_backends="$cairo_backends cairo"
  fi
Kristian Høgsberg's avatar
Kristian Høgsberg committed
400
  GDK_BACKENDS="$GDK_BACKENDS wayland"
401
  have_gio_unix=yes
Kristian Høgsberg's avatar
Kristian Høgsberg committed
402 403
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_WAYLAND"
404 405 406 407
  WAYLAND_PACKAGES="wayland-client xkbcommon "
  if test "x$enable_wayland_cairo_gl" == "xyes"; then
    WAYLAND_PACKAGES="$WAYLAND_PACKAGES wayland-egl egl"
  fi
Kristian Høgsberg's avatar
Kristian Høgsberg committed
408 409 410 411 412
  AM_CONDITIONAL(USE_WAYLAND, true)
else
  AM_CONDITIONAL(USE_WAYLAND, false)
fi

Matthias Clasen's avatar
Matthias Clasen committed
413
# strip leading space
414
GDK_BACKENDS=${GDK_BACKENDS#* }
415

416
AC_SUBST(GDK_BACKENDS)
Tor Lillqvist's avatar
Tor Lillqvist committed
417

418 419 420
if test -z "$GDK_BACKENDS"; then
  AC_MSG_ERROR([No GDK backends selected.])
fi
Tor Lillqvist's avatar
Tor Lillqvist committed
421

422
if test "x$enable_debug" = "xyes"; then
Tim Janik's avatar
Tim Janik committed
423
  test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
424
  GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
Elliot Lee's avatar
Elliot Lee committed
425
else
426
  if test "x$enable_debug" = "xno"; then
427
    GTK_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
428
  else
429
    GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
430
  fi
Elliot Lee's avatar
Elliot Lee committed
431 432
fi

433

434 435
AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}",
                   [Define if debugging is enabled])
Owen Taylor's avatar
Owen Taylor committed
436

437

Elliot Lee's avatar
Elliot Lee committed
438 439 440
# Build time sanity check...
AM_SANITY_CHECK

Raja R Harinath's avatar
Raja R Harinath committed
441
changequote(,)dnl
442
if test "x$GCC" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
443 444 445 446
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
447

448
  if test "x$enable_ansi" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
449 450 451 452 453 454 455 456 457
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac

    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
458
  fi
459 460
fi
changequote([,])dnl
Tor Lillqvist's avatar
Tor Lillqvist committed
461

462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485
# 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
486
    esac
487 488 489 490 491 492 493
    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
494
  fi
Elliot Lee's avatar
Elliot Lee committed
495 496
fi

497
## Initial sanity check, done here so that users get told they
498 499
## have the wrong dependencies as early in the process as possible.
## Later on we actually use the cflags/libs from separate pkg-config
500 501
## calls. Oh, also the later pkg-config calls don't include
## the version requirements since those make the module lists
502
## annoying to construct
503 504 505
PKG_CHECK_MODULES(BASE_DEPENDENCIES,
  [glib-2.0 >= glib_required_version dnl
   atk >= atk_required_version dnl
Matthias Clasen's avatar
Matthias Clasen committed
506
   pango >= pango_required_version dnl
507
   cairo >= cairo_required_version dnl
Benjamin Otte's avatar
Benjamin Otte committed
508
   cairo-gobject >= cairo_required_version dnl
509
   gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])
510

511
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
512

513 514
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])

Tor Lillqvist's avatar
Tor Lillqvist committed
515 516 517 518 519
if test "$os_win32" != yes; then
    # libtool option to control which symbols are exported
    # right now, symbols starting with _ are not exported
    LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^_]].*"'
else
520
    # We currently use .def files on Windows (for gdk and gtk)
Tor Lillqvist's avatar
Tor Lillqvist committed
521 522
    LIBTOOL_EXPORT_OPTIONS=
fi
523 524
AC_SUBST(LIBTOOL_EXPORT_OPTIONS)

525 526 527 528
dnl ******************************************************
dnl * See whether to include shared library dependencies *
dnl ******************************************************

529
AC_ARG_ENABLE(explicit-deps,
530
              [AS_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
531 532
                              [use explicit dependencies in .pc files [default=auto]])],,
              [enable_explicit_deps=auto])
533 534 535 536

AC_MSG_CHECKING([Whether to write dependencies into .pc files])
case $enable_explicit_deps in
  auto)
537
    export SED
538
    deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
539
    if test "x$deplibs_check_method" != xpass_all || test "x$enable_static" = xyes ; then
540
      enable_explicit_deps=yes
541
    else
542
      enable_explicit_deps=no
543 544
    fi
  ;;
545
  yes|no)
546 547 548 549 550 551 552 553
  ;;
  *) 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)

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

557
AC_PATH_PROGS(PERL, perl5 perl)
558

559 560 561
# We would like indent, but don't require it.
AC_CHECK_PROG(INDENT, indent, indent)

562
REBUILD=\#
563 564
if test "x$enable_rebuilds" = "xyes" && \
     test -n "$PERL" && \
565
     $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 ; then
566
  REBUILD=
567 568
fi
AC_SUBST(REBUILD)
569

Matthias Clasen's avatar
Matthias Clasen committed
570
AC_CHECK_FUNCS(lstat mkstemp flockfile getc_unlocked)
571
AC_CHECK_FUNCS(localtime_r)
572 573 574

# _NL_TIME_FIRST_WEEKDAY is an enum and not a define
AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY])
575 576 577 578
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])
579 580 581 582 583
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
584

585 586
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
587 588 589 590
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])
591 592 593 594 595 596 597 598
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])
599 600 601 602
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])
603 604 605 606 607 608 609 610
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])
611 612 613 614
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])
615 616 617 618 619
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
620

Owen Taylor's avatar
Owen Taylor committed
621
# i18n stuff
Matthias Clasen's avatar
Matthias Clasen committed
622
ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
623
AM_GLIB_GNU_GETTEXT
624
LIBS="$LIBS $INTLLIBS"
625 626 627 628 629
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]],
                   [[]])
630

631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650
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.)

Owen Taylor's avatar
Owen Taylor committed
651
AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
Owen Taylor's avatar
Owen Taylor committed
652

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

657
gtk_save_LIBS=$LIBS
658
LIBS="$LIBS -lm"
659 660 661 662 663 664 665 666 667 668 669 670 671 672
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)])

673 674
LIBS=$gtk_save_LIBS

675 676 677
AC_MSG_CHECKING(for the BeOS)
case $host in
  *-*-beos*)
Manish Singh's avatar
Manish Singh committed
678
    AC_MSG_RESULT(yes)
679 680
    MATH_LIB=
  ;;
Manish Singh's avatar
Manish Singh committed
681 682
  *)
    AC_MSG_RESULT(no)
683 684
  ;;
esac
685

Benjamin Otte's avatar
Benjamin Otte committed
686
AC_SUBST(MATH_LIB)
687 688 689 690 691 692 693 694 695 696 697 698 699
#
# 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
700

701
#
Owen Taylor's avatar
Owen Taylor committed
702
# Run AM_PATH_GLIB_2_0 to make sure that GLib is installed and working
703
#
704

705
AM_PATH_GLIB_2_0(glib_required_version, :,
Owen Taylor's avatar
Owen Taylor committed
706
  AC_MSG_ERROR([
707
*** GLIB glib_required_version or better is required. The latest version of
708
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
Matthias Clasen's avatar
Matthias Clasen committed
709
  gobject gmodule-no-export)
Owen Taylor's avatar
Owen Taylor committed
710

Owen Taylor's avatar
Owen Taylor committed
711 712 713 714 715 716 717 718
dnl
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

719 720 721 722 723 724 725 726 727 728 729 730
AC_CHECK_HEADERS(pwd.h,
                 AC_DEFINE(HAVE_PWD_H, 1,
                           [Define to 1 if pwd.h is available]))
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]))
731

732
AC_MSG_CHECKING([for GNU ftw extensions])
733 734 735 736 737
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])
738 739
if test $gtk_ok = yes; then
    AC_MSG_RESULT([yes])
740
    AC_DEFINE(HAVE_GNU_FTW, 1, [Have GNU ftw])
741 742 743 744
else
    AC_MSG_RESULT([no])
fi

745 746 747
saved_cflags="$CFLAGS"
saved_ldflags="$LDFLAGS"

748

749 750
# Checks for library functions.
AC_FUNC_MMAP
751

Matthias Clasen's avatar
Matthias Clasen committed
752
AC_CHECK_FUNCS(mallinfo)
753 754
AC_CHECK_FUNCS(getresuid)
AC_TYPE_UID_T
755

756 757
# Check for round(), rint(), isnan(), isinf() and nearbyint()
AC_CHECK_LIB(m,round,,)
758 759
AC_CHECK_FUNCS(round rint nearbyint)
AC_CHECK_DECLS([isnan, isinf], [], [], [[#include <math.h>]])
760

Matthias Clasen's avatar
Matthias Clasen committed
761 762 763 764
# Checks for gdkspawn
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)

765 766
AC_MSG_CHECKING(whether to build dynamic modules)

767
AC_ARG_ENABLE(modules,
768
              [AS_HELP_STRING([--disable-modules],
769
                              [disable dynamic module loading])])
770

771
dynworks=false
Matthias Clasen's avatar
Matthias Clasen committed
772
build_dynamic_modules=no
773
deps=
774
if test x$enable_modules = xno; then
775 776 777 778
    AC_MSG_RESULT(no)
else
    AC_MSG_RESULT(yes)
    AC_MSG_CHECKING(whether dynamic modules work)
779
    ## for loop is to strip newline
780
    tmp=`$PKG_CONFIG --variable=gmodule_supported gmodule-no-export-2.0`
781 782 783
    for I in $tmp; do
        dynworks=$I
    done
784

785 786 787
    dnl Now we check to see if our libtool supports shared lib deps
    dnl (in a rather ugly way even)
    if $dynworks; then
788 789
        module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
        module_deplibs_check=`$module_libtool_config | \
790 791
            grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
            sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
792 793 794
        if test "x$module_deplibs_check" = "xnone" || \
           test "x$module_deplibs_check" = "xunknown" || \
           test "x$module_deplibs_check" = "x"; then
795 796 797
            dynworks=false
        fi
    fi
798

799
    if $dynworks; then
Matthias Clasen's avatar
Matthias Clasen committed
800
        build_dynamic_modules=yes
801 802
        AC_DEFINE(USE_GMODULE, 1,
                  [Define to 1 if gmodule works and should be used])
803 804
        AC_MSG_RESULT(yes)
    else
Matthias Clasen's avatar
Matthias Clasen committed
805
        build_dynamic_modules=no
806 807
        AC_MSG_RESULT(no)
    fi
808
fi
Havoc Pennington's avatar
Havoc Pennington committed
809

810
AM_CONDITIONAL(BUILD_DYNAMIC_MODULES, $dynworks)
811

812 813 814 815 816 817
#
# Allow building some or all immodules included
#
AC_MSG_CHECKING(immodules to build)

AC_ARG_WITH(included_immodules,
818 819
            [AS_HELP_STRING([--with-included-immodules=MODULE1,MODULE2,...],
                            [build the specified input methods into gtk])])
820

821
if $dynworks; then
822 823 824 825 826 827 828 829
   :
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

830
all_immodules="am-et,cedilla,cyrillic-translit,inuktitut,ipa,multipress,thai,ti-er,ti-et,viqr$backend_immodules"
831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875

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])
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])

876 877 878
# Checks to see whether we should include mediaLib
# support.
#
879
AC_CHECK_HEADER(sys/systeminfo.h,
880
                AC_DEFINE(HAVE_SYS_SYSTEMINFO_H, 1,
881 882 883 884
                          [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]))
885

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

888
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
889

890
if test "x$cross_compiling" = xyes || test "x$enable_gtk2_dependency" = xyes; then
891 892
  AC_PATH_PROG(GTK_UPDATE_ICON_CACHE, gtk-update-icon-cache, no)
  if test x$GTK_UPDATE_ICON_CACHE = xno; then
893
    REBUILD_PNGS=#
894 895
  fi
fi
896

897 898
AM_CONDITIONAL(USE_EXTERNAL_ICON_CACHE, [test "x$cross_compiling" = xyes || test "x$enable_gtk2_dependency" = xyes])

899 900
AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)

901
if test ! -f $srcdir/gtk/gtkbuiltincache.h &&
902 903
   test "x$REBUILD_PNGS" = "x#" ; then
     AC_MSG_ERROR([
904
*** gtkbuiltincache.h is not in the tree, and cannot be built
905
*** because you don't have libpng, or (when cross-compiling) you
906
*** don't have a prebuilt gtk-update-icon-cache on the build system.])
907 908
fi

909 910 911
########################################
# Windowing system checks
########################################
912

913 914 915
# GTK+ uses some X calls, so needs to link against X directly
GTK_DEP_PACKAGES_FOR_X=
GTK_DEP_LIBS_FOR_X=
Matthias Clasen's avatar
Matthias Clasen committed
916
X_EXTENSIONS=
917

918
if test "x$enable_x11_backend" = xyes; then
919 920
  X_PACKAGES=fontconfig

921 922 923 924 925 926 927 928 929
  #
  # 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

930
  #
931
  # Check for basic X packages; we use pkg-config if available
932
  #
933
  if $PKG_CONFIG --exists x11 xext; then
934
    have_base_x_pc=true
935 936
    X_PACKAGES="$X_PACKAGES x11 xext"
    x_libs="`$PKG_CONFIG --libs x11 xext`"
Matthias Clasen's avatar
Matthias Clasen committed
937
    X_CFLAGS="`$PKG_CONFIG --cflags x11 xext`"
938

939 940 941 942
    # 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
943
      case $I in
944 945 946 947
        *.la) ;;
        *) x_libs_for_checks="$x_libs_for_checks $I" ;;
      esac
    done
948

949 950 951 952 953 954 955
    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
956

957
    x_cflags="$X_CFLAGS"
958
    x_libs_for_checks="$X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
Elliot Lee's avatar
Elliot Lee committed
959

960
    GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
961 962
  fi

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

966
  gtk_save_cppflags="$CPPFLAGS"
967
  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Alexander Larsson's avatar
Alexander Larsson committed
968

969 970
  gtk_save_LIBS=$LIBS
  LIBS="$x_libs_for_checks $LIBS"
971

972 973 974 975
  # 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, :,
976
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
977
  AC_CHECK_FUNC(XextFindDisplay, :,
978
                AC_MSG_ERROR([*** libX11 and libXext not found. Check 'config.log' for more details.]))
979

980 981 982
  # Check for xReply

  AC_MSG_CHECKING([if <X11/extensions/XIproto.h> is needed for xReply])
983 984 985 986 987 988 989 990 991 992 993
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/Xlibint.h>]],
                                     [[xReply *rep;]])],
                    [AC_MSG_RESULT([no])],
                    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <X11/extensions/XIproto.h>
                                                          #include <X11/Xlibint.h>]],
                                                        [[xReply *rep;]])],
                                       [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])])])
994

995 996 997
  # Check for XKB support.

  if test "x$enable_xkb" = "xyes"; then
Matthias Clasen's avatar
Matthias Clasen committed
998 999 1000 1001
        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.]))
1002
  elif test "x$enable_xkb" = "xmaybe"; then
1003
        AC_CHECK_FUNC(XkbQueryExtension,
Matthias Clasen's avatar
Matthias Clasen committed
1004
                      X_EXTENSIONS="$X_EXTENSIONS XKB"
1005
                      AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]))
1006 1007 1008 1009
  else
        AC_MSG_WARN(XKB support explicitly disabled)
  fi

1010
  # Check for shaped window extension
1011

1012 1013
  AC_CHECK_FUNC(XShapeCombineMask, :,
     [AC_MSG_ERROR([Shape extension not found, check your development headers])])
1014

1015
  # X SYNC check
1016 1017
  gtk_save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS $x_cflags"
1018

1019 1020
  AC_CHECK_FUNC(XSyncQueryExtension,
      [AC_CHECK_HEADER(X11/extensions/sync.h,
1021
	  AC_DEFINE(HAVE_XSYNC, 1, [Have the SYNC extension library]),
1022
	  :, [#include <X11/Xlib.h>])])
1023

1024 1025
  CFLAGS="$gtk_save_CFLAGS"

Matthias Clasen's avatar
Matthias Clasen committed
1026
  if test "x$enable_xinerama" != "xno"; then
1027
    # Check for Xinerama extension (Solaris impl or Xfree impl)
Matthias Clasen's avatar
Matthias Clasen committed
1028 1029 1030
    have_xfree_xinerama=false
    have_solaris_xinerama=false

1031 1032
    gtk_save_cppflags="$CPPFLAGS"
    CPPFLAGS="$CPPFLAGS $x_cflags"
1033

1034
    # Check for XFree
Matthias Clasen's avatar
Matthias Clasen committed
1035
    AC_MSG_CHECKING(for Xinerama packages)
1036

1037
    if $PKG_CONFIG --exists xinerama ; then
Matthias Clasen's avatar
Matthias Clasen committed
1038
       AC_MSG_RESULT(yes)
1039 1040
       have_xfree_xinerama=true
       X_PACKAGES="$X_PACKAGES xinerama"
1041
    else
Matthias Clasen's avatar
Matthias Clasen committed
1042
       AC_MSG_RESULT(no)
1043
       AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
1044
	   [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
1045 1046 1047 1048 1049 1050
	   [GTK_ADD_LIB(x_extra_libs,Xinerama)
	   have_xfree_xinerama=true], :,
           [#include <X11/Xlib.h>])])
    fi

    if $have_xfree_xinerama ; then
Matthias Clasen's avatar
Matthias Clasen committed
1051
      X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1052 1053 1054 1055 1056 1057 1058 1059 1060
      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
	    AC_MSG_CHECKING(for Xinerama support on Solaris)
1061

1062 1063 1064
	    have_solaris_xinerama=false
	    AC_CHECK_FUNC(XineramaGetInfo,
	        [AC_CHECK_HEADER(X11/extensions/xinerama.h,
1065
		    [have_solaris_xinerama=true], :,
1066
		    [#include <X11/Xlib.h>])])
1067

1068
            if $have_solaris_xinerama ; then
Matthias Clasen's avatar
Matthias Clasen committed
1069
              X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082
              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
1083
  fi
Matthias Clasen's avatar
Matthias Clasen committed
1084 1085 1086 1087 1088
  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
1089

1090 1091 1092 1093
  # Check for XGetEventData for GenericEvents
  AC_CHECK_FUNC(XGetEventData,
                AC_DEFINE(HAVE_XGENERICEVENTS, 1, [Have XGenericEvent]))

1094
  # set up things for XInput
1095
  if $PKG_CONFIG --exists "xi" ; then
1096

1097
    X_PACKAGES="$X_PACKAGES xi"
Matthias Clasen's avatar
Matthias Clasen committed
1098
    GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xi"
1099 1100

    AC_CHECK_HEADER(X11/extensions/XInput2.h,
Matthias Clasen's avatar
Matthias Clasen committed
1101
                    have_xinput2=yes
1102
                    AC_DEFINE(XINPUT_2, 1, [Define to 1 if XInput 2.0 is available]))
Matthias Clasen's avatar
Matthias Clasen committed
1103

Carlos Garnacho's avatar
Carlos Garnacho committed
1104 1105
    gtk_save_LIBS="$LIBS"
    LIBS="$LIBS -lXi"
1106 1107 1108 1109 1110 1111 1112 1113 1114

    # 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>]])])
Carlos Garnacho's avatar
Carlos Garnacho committed
1115
    LIBS="$gtk_save_LIBS"
1116 1117 1118 1119 1120 1121

    if test "x$have_xinput2_2" = "xyes"; then
      X_EXTENSIONS="$X_EXTENSIONS XI2.2"
    else
      X_EXTENSIONS="$X_EXTENSIONS XI2"
    fi
1122
  fi
Owen Taylor's avatar
Owen Taylor committed
1123

1124 1125
  AS_IF([test "x$have_xinput2" != "xyes"],
        [AC_MSG_ERROR([*** XInput2 extension not found. Check 'config.log' for more details.])])
1126 1127

  # Check for the RANDR extension
1128 1129 1130 1131 1132 1133 1134 1135 1136
  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
1137
  fi
1138

1139
  # Checks for Xcursor library
1140

1141
  if $PKG_CONFIG --exists xcursor ; then
1142
    AC_DEFINE(HAVE_XCURSOR, 1, [Have the Xcursor library])
1143

1144 1145 1146 1147
    X_PACKAGES="$X_PACKAGES xcursor"
  fi

  # Checks for XFixes extension
1148

1149 1150 1151
  if test x"$enable_xfixes" != xno; then
    if $PKG_CONFIG --exists xfixes ; then
      AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension])
1152

1153 1154 1155 1156 1157 1158
      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
1159 1160
  fi

1161 1162
  # Checks for Xcomposite extension

Emilio Pozuelo Monfort's avatar