configure.ac 49.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 11
# 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.

m4_define([gtk_major_version], [2])
Matthias Clasen's avatar
Matthias Clasen committed
12
m4_define([gtk_minor_version], [99])
Matthias Clasen's avatar
Matthias Clasen committed
13
m4_define([gtk_micro_version], [1])
Javier Jardón's avatar
Javier Jardón 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 30
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])

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

# required versions of other packages
41
m4_define([glib_required_version], [2.27.5])
42
m4_define([pango_required_version], [1.20])
Li Yuan's avatar
Li Yuan committed
43
m4_define([atk_required_version], [1.29.2])
Benjamin Otte's avatar
Benjamin Otte committed
44
m4_define([cairo_required_version], [1.10.0])
45
m4_define([gdk_pixbuf_required_version], [2.21.0])
46 47 48 49 50 51 52 53 54 55
GLIB_REQUIRED_VERSION=glib_required_version
PANGO_REQUIRED_VERSION=pango_required_version
ATK_REQUIRED_VERSION=atk_required_version
CAIRO_REQUIRED_VERSION=cairo_required_version
GDK_PIXBUF_REQUIRED_VERSION=gdk_pixbuf_required_version
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)
56 57 58 59 60


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

61 62
AM_INIT_AUTOMAKE([1.10 no-define -Wno-portability dist-bzip2])
AM_MAINTAINER_MODE([enable])
Elliot Lee's avatar
Elliot Lee committed
63

Javier Jardón's avatar
Javier Jardón committed
64 65
# Support silent build rules, requires at least automake-1.11. Disable
# by either passing --disable-silent-rules to configure or passing V=1
66
# to make
67
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
68

Owen Taylor's avatar
Owen Taylor committed
69
#
70 71 72 73 74 75 76 77
# 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
78 79


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

# libtool versioning
98 99 100 101 102 103
#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`

104 105 106 107 108 109
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
110
AC_SUBST(LT_CURRENT_MINUS_AGE)
111

112 113
m4_define([gail_lt_current],[0])
m4_define([gail_lt_revision],[0])
114 115 116 117 118
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])
119

120 121 122 123 124 125 126 127
# Checks for programs.
AC_PROG_CC
AC_PROG_CC_C_O
AC_PROG_CC_STDC
AC_PROG_INSTALL
AC_PROG_MAKE_SET


128
GETTEXT_PACKAGE=gtk30
129
AC_SUBST(GETTEXT_PACKAGE)
130 131
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
                   [The prefix for our gettext translation domains.])
132

133 134
AC_CANONICAL_HOST

135 136
MATH_LIB=-lm
AC_MSG_CHECKING([for native Win32])
137
LIB_EXE_MACHINE_FLAG=X86
138
EXE_MANIFEST_ARCHITECTURE=X86
139 140 141
case "$host" in
  *-*-mingw*)
    os_win32=yes
142
    gio_can_sniff=no
143
    MATH_LIB=
144 145 146
    case "$host" in
    x86_64-*-*)
      LIB_EXE_MACHINE_FLAG=X64
147
      EXE_MANIFEST_ARCHITECTURE=AMD64
148 149
      ;;
    esac
150 151 152 153 154 155
    ;;
  *)
    os_win32=no
    ;;
esac
AC_MSG_RESULT([$os_win32])
Elliot Lee's avatar
Elliot Lee committed
156

157
AC_SUBST(LIB_EXE_MACHINE_FLAG)
158
AC_SUBST(EXE_MANIFEST_ARCHITECTURE)
159

Matthias Clasen's avatar
Matthias Clasen committed
160 161 162 163 164
case $host in
  *-*-linux*)
    os_linux=yes
    ;;
esac
165

166
dnl
167 168
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.
169
dnl
170
AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], gcc)
171
AC_LANG_PUSH([C++])
172

173 174
AC_TRY_COMPILE(,[class a { int b; } c;], ,CXX=)
AM_CONDITIONAL(HAVE_CXX, test "$CXX" != "")
175 176 177 178

gtk_save_cxxflags="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS -x objective-c++"
AC_TRY_COMPILE([@interface Foo @end],,OBJC=yes,OBJC=no)
179
AM_CONDITIONAL(HAVE_OBJC, test "$OBJC" = "yes")
180
CXXFLAGS="$gtk_save_cxxflags"
181
AC_LANG_POP([C++])
182

Tor Lillqvist's avatar
Typo.  
Tor Lillqvist committed
183
if test "$os_win32" = "yes"; then
184 185 186 187 188 189 190 191 192 193
  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

194 195 196 197 198
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
199

200 201 202
# Make sure we use 64-bit versions of various file stuff.
AC_SYS_LARGEFILE

203
AM_PROG_AS
Matthias Clasen's avatar
Matthias Clasen committed
204
AC_PATH_PROG(NM, nm, nm)
205

Tor Lillqvist's avatar
Tor Lillqvist committed
206 207 208 209 210 211 212 213 214 215 216 217 218
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")
219
AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
Matthias Clasen's avatar
Matthias Clasen committed
220
AM_CONDITIONAL(OS_LINUX, test "$os_linux" = "yes")
Tor Lillqvist's avatar
Tor Lillqvist committed
221 222

if test "$os_win32" = "yes"; then
Tor Lillqvist's avatar
Tor Lillqvist committed
223 224 225 226
  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
227 228 229 230
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
fi
AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)

231 232
m4_define([debug_default],
          m4_if(m4_eval(gtk_minor_version % 2), [1], [yes], [minimum]))
233 234

dnl declare --enable-* args and collect ac_help strings
235 236 237 238
AC_ARG_ENABLE(debug,
              AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
                             [turn on debugging @<:@default=debug_default@:>@]),,
              enable_debug=debug_default)
Matthias Clasen's avatar
Matthias Clasen committed
239 240 241 242 243 244

AC_ARG_ENABLE(rebuilds,
              [AC_HELP_STRING([--disable-rebuilds],
                              [disable all source autogeneration rules])],,
              [enable_rebuilds=yes])

245 246
AC_ARG_ENABLE(xkb,
              [AC_HELP_STRING([--enable-xkb],
Matthias Clasen's avatar
Matthias Clasen committed
247
                              [support XKB extension [default=maybe]])],,
248
              [enable_xkb="maybe"])
249 250
AC_ARG_ENABLE(xinerama,
              [AC_HELP_STRING([--enable-xinerama],
Matthias Clasen's avatar
Matthias Clasen committed
251 252
	                      [support Xinerama extension if available [default=maybe]])],,
              [enable_xinerama="maybe"])
Matthias Clasen's avatar
Matthias Clasen committed
253 254 255
AC_ARG_ENABLE(xinput,
              [AC_HELP_STRING([--enable-xinput],
                              [support XInput extension if available [default=yes]])],,
Matthias Clasen's avatar
Matthias Clasen committed
256
              [enable_xinput="maybe"])
257

258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279
AC_ARG_ENABLE(x11-backend,
              [AC_HELP_STRING([--enable-x11-backend],
                              [enable the X11 gdk backend])],
			      [backend_set=yes])
AC_ARG_ENABLE(win32-backend,
              [AC_HELP_STRING([--enable-win32-backend],
                              [enable the Win32 gdk backend])],
			      [backend_set=yes])
AC_ARG_ENABLE(quartz-backend,
              [AC_HELP_STRING([--enable-quartz-backend],
                              [enable the quartz gdk backend])],
			      [backend_set=yes])

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

cairo_backends=
280
backend_immodules=
281
GDK_BACKENDS=
282 283 284 285 286
GDK_EXTRA_LIBS=
GDK_EXTRA_CFLAGS=
GDK_WINDOWING=
GIO_PACKAGE=gio-2.0
PANGO_PACKAGES="pango pangocairo"
287 288 289 290 291 292 293 294 295

if test "x$enable_x11_backend" == xyes; then
  # 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
  GIO_PACKAGE=gio-unix-2.0
296 297 298
  backend_immodules="$backend_immodules,xim"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_X11"
Tor Lillqvist's avatar
Tor Lillqvist committed
299 300
fi

301 302 303
if test "x$enable_win32_backend" == xyes; then
  cairo_backends="$cairo_backends cairo-win32"
  GDK_BACKENDS="$GDK_BACKENDS win32"
304 305 306 307 308 309 310 311 312
  backend_immodules="$backend_immodules,ime"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_NATIVE_WINDOW_POINTER
#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)
313
fi
314

315 316 317
if test "x$enable_quartz_backend" == xyes; then
  cairo_backends="$cairo_backends cairo-quartz"
  GDK_BACKENDS="$GDK_BACKENDS quartz"
318 319 320 321 322 323
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_QUARTZ"
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa"
  AM_CONDITIONAL(USE_QUARTZ, true)
else
  AM_CONDITIONAL(USE_QUARTZ, false)
324 325
fi

Matthias Clasen's avatar
Matthias Clasen committed
326 327
# strip leading space
GDK_BACKENDS=${GDK_BACKENDS/# }
328

329 330 331 332 333
AC_SUBST(GDK_BACKENDS)

if test -z "$GDK_BACKENDS"; then
  AC_MSG_ERROR([No GDK backends selected.])
fi
334

335
if test "x$enable_debug" = "xyes"; then
Tim Janik's avatar
Tim Janik committed
336
  test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
337
  GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_ERRORCHECK_MUTEXES"
Elliot Lee's avatar
Elliot Lee committed
338
else
339
  if test "x$enable_debug" = "xno"; then
340
    GTK_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
341
  else
342
    GTK_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
343
  fi
Elliot Lee's avatar
Elliot Lee committed
344 345
fi

346

347 348
AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}",
                   [Define if debugging is enabled])
Owen Taylor's avatar
Owen Taylor committed
349

350

Elliot Lee's avatar
Elliot Lee committed
351 352 353
# Build time sanity check...
AM_SANITY_CHECK

Raja R Harinath's avatar
Raja R Harinath committed
354
changequote(,)dnl
355
if test "x$GCC" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
356 357 358 359
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
360

361
  if test "x$enable_ansi" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
362 363 364 365 366 367 368 369 370
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac

    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
371
  fi
372 373
fi
changequote([,])dnl
Tor Lillqvist's avatar
Tor Lillqvist committed
374

375
CPPFLAGS="$CPPFLAGS -DG_DISABLE_SINGLE_INCLUDES -DATK_DISABLE_SINGLE_INCLUDES"
376

377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400
# 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
401
    esac
402 403 404 405 406 407 408
    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
409
  fi
Elliot Lee's avatar
Elliot Lee committed
410 411
fi

412
## Initial sanity check, done here so that users get told they
413 414
## have the wrong dependencies as early in the process as possible.
## Later on we actually use the cflags/libs from separate pkg-config
415 416
## calls. Oh, also the later pkg-config calls don't include
## the version requirements since those make the module lists
417
## annoying to construct
418 419 420
PKG_CHECK_MODULES(BASE_DEPENDENCIES,
  [glib-2.0 >= glib_required_version dnl
   atk >= atk_required_version dnl
Matthias Clasen's avatar
Matthias Clasen committed
421
   pango >= pango_required_version dnl
422
   cairo >= cairo_required_version dnl
Benjamin Otte's avatar
Benjamin Otte committed
423
   cairo-gobject >= cairo_required_version dnl
424
   gdk-pixbuf-2.0 >= gdk_pixbuf_required_version])
425

426
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
427

Tor Lillqvist's avatar
Tor Lillqvist committed
428 429 430 431 432
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
433
    # We currently use .def files on Windows (for gdk and gtk)
Tor Lillqvist's avatar
Tor Lillqvist committed
434 435
    LIBTOOL_EXPORT_OPTIONS=
fi
436 437
AC_SUBST(LIBTOOL_EXPORT_OPTIONS)

438 439 440 441
dnl ******************************************************
dnl * See whether to include shared library dependencies *
dnl ******************************************************

442
AC_ARG_ENABLE(explicit-deps,
443 444 445
              [AC_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
                              [use explicit dependencies in .pc files [default=auto]])],,
              [enable_explicit_deps=auto])
446 447 448 449

AC_MSG_CHECKING([Whether to write dependencies into .pc files])
case $enable_explicit_deps in
  auto)
450
    export SED
451
    deplibs_check_method=`(./libtool --config; echo 'eval echo \"$deplibs_check_method\"') | sh`
452
    if test "x$deplibs_check_method" '!=' xpass_all || test "x$enable_static" = xyes ; then
453
      enable_explicit_deps=yes
454
    else
455
      enable_explicit_deps=no
456 457
    fi
  ;;
458
  yes|no)
459 460 461 462 463 464 465 466
  ;;
  *) 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)

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

470
AC_PATH_PROGS(PERL, perl5 perl)
471

472 473 474
# We would like indent, but don't require it.
AC_CHECK_PROG(INDENT, indent, indent)

475
REBUILD=\#
476 477
if test "x$enable_rebuilds" = "xyes" && \
     test -n "$PERL" && \
478
     $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 ; then
479
  REBUILD=
480 481
fi
AC_SUBST(REBUILD)
482

Matthias Clasen's avatar
Matthias Clasen committed
483
AC_CHECK_FUNCS(lstat mkstemp flockfile getc_unlocked)
484
AC_CHECK_FUNCS(localtime_r)
485 486 487 488 489 490 491 492 493 494 495 496

# _NL_TIME_FIRST_WEEKDAY is an enum and not a define
AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY])
AC_TRY_LINK([#include <langinfo.h>], [
char c;
c = *((unsigned char *)  nl_langinfo(_NL_TIME_FIRST_WEEKDAY));
], gtk_ok=yes, gtk_ok=no)
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
497

498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532
# _NL_MEASUREMENT_MEASUREMENT is an enum and not a define
AC_MSG_CHECKING([for _NL_MEASUREMENT_MEASUREMENT])
AC_TRY_LINK([#include <langinfo.h>], [
char c;
c = *((unsigned char *)  nl_langinfo(_NL_MEASUREMENT_MEASUREMENT));
], gtk_ok=yes, gtk_ok=no)
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])
AC_TRY_LINK([#include <langinfo.h>], [
char c;
c = *((unsigned char *)  nl_langinfo(_NL_PAPER_HEIGHT));
], gtk_ok=yes, gtk_ok=no)
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])
AC_TRY_LINK([#include <langinfo.h>], [
char c;
c = *((unsigned char *)  nl_langinfo(_NL_PAPER_WIDTH));
], gtk_ok=yes, gtk_ok=no)
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
533

Owen Taylor's avatar
Owen Taylor committed
534
# i18n stuff
Matthias Clasen's avatar
Matthias Clasen committed
535
ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`"
536
AM_GLIB_GNU_GETTEXT
537
LIBS="$LIBS $INTLLIBS"
538 539 540
AC_OUTPUT_COMMANDS([case "$CONFIG_FILES" in *po-properties/Makefile.in*)
        sed -e "/POTFILES =/r po-properties/POTFILES" po-properties/Makefile.in > po-properties/Makefile
      esac])
541

542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561
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
562
AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
Owen Taylor's avatar
Owen Taylor committed
563

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

568
gtk_save_LIBS=$LIBS
569 570 571 572
LIBS="$LIBS -lm"
AC_TRY_RUN([#include <math.h>
             int main (void) { return (log(1) != log(1.)); }],
     AC_MSG_RESULT(none needed),
573
     gtk_save_CFLAGS="$CFLAGS"
574 575 576 577 578
     CFLAGS="$CFLAGS -std1"
     AC_TRY_RUN([#include <math.h>
	         int main (void) { return (log(1) != log(1.)); }],
         AC_MSG_RESULT(-std1),
         AC_MSG_RESULT()
579
         CFLAGS="$gtk_save_CFLAGS"
580
         AC_MSG_WARN(
581 582 583 584
                [No ANSI prototypes found in library. (-std1 didn't work.)]),
	 true
     ),
     AC_MSG_RESULT(none needed)
585 586 587
)
LIBS=$gtk_save_LIBS

588 589 590
AC_MSG_CHECKING(for the BeOS)
case $host in
  *-*-beos*)
Manish Singh's avatar
Manish Singh committed
591
    AC_MSG_RESULT(yes)
592 593
    MATH_LIB=
  ;;
Manish Singh's avatar
Manish Singh committed
594 595
  *)
    AC_MSG_RESULT(no)
596 597
  ;;
esac
598

Benjamin Otte's avatar
Benjamin Otte committed
599
AC_SUBST(MATH_LIB)
600 601 602 603 604 605 606 607 608 609 610 611 612
#
# 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
613

Manish Singh's avatar
Manish Singh committed
614 615 616 617
dnl NeXTStep cc seems to need this
AC_MSG_CHECKING([for extra flags for POSIX compliance])
AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
  AC_MSG_RESULT(none needed),
618
  gtk_save_CFLAGS="$CFLAGS"
Manish Singh's avatar
Manish Singh committed
619 620 621 622
  CFLAGS="$CFLAGS -posix"
  AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
    AC_MSG_RESULT(-posix),
    AC_MSG_RESULT()
623
    CFLAGS="$gtk_save_CFLAGS"
Manish Singh's avatar
Manish Singh committed
624 625
    AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))

626
#
Owen Taylor's avatar
Owen Taylor committed
627
# Run AM_PATH_GLIB_2_0 to make sure that GLib is installed and working
628
#
629

630
GLIB_PACKAGES="gobject-2.0 gio-2.0 gmodule-no-export-2.0"
631

632
AM_PATH_GLIB_2_0(glib_required_version, :,
Owen Taylor's avatar
Owen Taylor committed
633
  AC_MSG_ERROR([
634
*** GLIB glib_required_version or better is required. The latest version of
635
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
636
  gobject gmodule-no-export gthread)
Owen Taylor's avatar
Owen Taylor committed
637

638 639 640 641 642 643 644
# See if it's safe to turn G_DISABLE_DEPRECATED on.
GLIB_VERSION_MAJOR_MINOR=`$PKG_CONFIG --modversion glib-2.0 | sed "s/\.@<:@^.@:>@*\$//"`
GLIB_REQUIRED_VERSION_MAJOR_MINOR=`echo glib_required_version | sed "s/\.@<:@^.@:>@*\$//"`
if test "x$GLIB_VERSION_MAJOR_MINOR" = "x$GLIB_REQUIRED_VERSION_MAJOR_MINOR"; then
  CFLAGS="-DG_DISABLE_DEPRECATED $CFLAGS"
fi

645 646
CFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CFLAGS"

647

Owen Taylor's avatar
Owen Taylor committed
648 649 650 651 652 653 654 655
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

656 657 658 659 660 661 662 663 664 665 666 667
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]))
668

669 670 671 672 673 674
AC_MSG_CHECKING([for GNU ftw extensions])
AC_TRY_COMPILE([#define _XOPEN_SOURCE 500
#define _GNU_SOURCE
#include <ftw.h>], [int flags = FTW_ACTIONRETVAL;], gtk_ok=yes, gtk_ok=no)
if test $gtk_ok = yes; then
    AC_MSG_RESULT([yes])
675
    AC_DEFINE(HAVE_GNU_FTW, 1, [Have GNU ftw])
676 677 678 679
else
    AC_MSG_RESULT([no])
fi

680 681 682
saved_cflags="$CFLAGS"
saved_ldflags="$LDFLAGS"

683

684 685
# Checks for header files.
AC_HEADER_STDC
686

687 688
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
Elliot Lee's avatar
Elliot Lee committed
689

690 691 692
# Checks for library functions.
AC_TYPE_SIGNAL
AC_FUNC_MMAP
693

Matthias Clasen's avatar
Matthias Clasen committed
694
AC_CHECK_FUNCS(mallinfo)
695 696
AC_CHECK_FUNCS(getresuid)
AC_TYPE_UID_T
697

698 699 700 701 702 703 704 705 706
# Check if <sys/select.h> needs to be included for fd_set
AC_MSG_CHECKING([for fd_set])
AC_TRY_COMPILE([#include <sys/types.h>],
        [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
if test $gtk_ok = yes; then
    AC_MSG_RESULT([yes, found in sys/types.h])
else
    AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok=yes)
    if test $gtk_ok = yes; then
707 708
        AC_DEFINE(HAVE_SYS_SELECT_H, 1,
                  [Define to 1 if sys/select.h is available])
709 710
        AC_MSG_RESULT([yes, found in sys/select.h])
    else
711 712
	AC_DEFINE(NO_FD_SET, 1,
                  [Define to 1 if fd_set is not available])
713 714 715
	AC_MSG_RESULT(no)
    fi
fi
716

717 718 719 720
# Check for uxtheme.h (for MS-Windows Engine)
AC_MSG_CHECKING(for uxtheme.h)
AC_TRY_CPP([#include <uxtheme.h>], gtk_uxtheme_h=yes, gtk_uxtheme_h=no)
if test $gtk_uxtheme_h = yes; then
721
   AC_DEFINE(HAVE_UXTHEME_H, 1, [Have uxtheme.h include file])
722 723 724
fi
AC_MSG_RESULT($gtk_uxtheme_h)

Matthias Clasen's avatar
Matthias Clasen committed
725 726 727 728
# Checks for gdkspawn
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)

729 730
AC_MSG_CHECKING(whether to build dynamic modules)

731 732 733
AC_ARG_ENABLE(modules,
              [AC_HELP_STRING([--disable-modules],
                              [disable dynamic module loading])])
734

735
dynworks=false
Matthias Clasen's avatar
Matthias Clasen committed
736
build_dynamic_modules=no
737
deps=
738
if test x$enable_modules = xno; then
739 740 741 742
    AC_MSG_RESULT(no)
else
    AC_MSG_RESULT(yes)
    AC_MSG_CHECKING(whether dynamic modules work)
743
    ## for loop is to strip newline
744
    tmp=`$PKG_CONFIG --variable=gmodule_supported gmodule-no-export-2.0`
745 746 747
    for I in $tmp; do
        dynworks=$I
    done
748

749 750 751
    dnl Now we check to see if our libtool supports shared lib deps
    dnl (in a rather ugly way even)
    if $dynworks; then
752 753
        module_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
        module_deplibs_check=`$module_libtool_config | \
754 755
            grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
            sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
756 757 758
        if test "x$module_deplibs_check" = "xnone" || \
           test "x$module_deplibs_check" = "xunknown" || \
           test "x$module_deplibs_check" = "x"; then
759 760 761
            dynworks=false
        fi
    fi
762

763
    if $dynworks; then
Matthias Clasen's avatar
Matthias Clasen committed
764
        build_dynamic_modules=yes
765 766
        AC_DEFINE(USE_GMODULE, 1,
                  [Define to 1 if gmodule works and should be used])
767 768
        AC_MSG_RESULT(yes)
    else
Matthias Clasen's avatar
Matthias Clasen committed
769
        build_dynamic_modules=no
770 771
        AC_MSG_RESULT(no)
    fi
772
fi
Havoc Pennington's avatar
Havoc Pennington committed
773

774
AM_CONDITIONAL(BUILD_DYNAMIC_MODULES, $dynworks)
775

776 777 778 779 780 781 782 783 784 785
#
# Allow building some or all immodules included
#
AC_MSG_CHECKING(immodules to build)

dnl due to an autoconf bug, commas in the first arg to
dnl AC_HELP_STRING cause problems.
dnl AC_HELP_STRING([--with-included-immodules=MODULE1 MODULE2 ...],
dnl                [build the specified input method modules into gtk])
AC_ARG_WITH(included_immodules,
Matthias Clasen's avatar
Matthias Clasen committed
786 787
            AC_HELP_STRING([--with-included-immodules=MODULE1,MODULE2,...],
                           [build the specified input methods into gtk]))
788

789
if $dynworks; then
790 791 792 793 794 795 796 797
   :
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

798
all_immodules="am-et,cedilla,cyrillic-translit,inuktitut,ipa,multipress,thai,ti-er,ti-et,viqr$backend_immodules"
799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843

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

844
AC_HEADER_SYS_WAIT
Alexander Larsson's avatar
Alexander Larsson committed
845

846 847
AC_TYPE_SIGNAL

848 849 850
# Checks to see whether we should include mediaLib
# support.
#
851
AC_CHECK_HEADER(sys/systeminfo.h,
852
                AC_DEFINE(HAVE_SYS_SYSTEMINFO_H, 1,
853 854 855 856
                          [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]))
857

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

860
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
861

862
if test $cross_compiling = yes; then
863 864
  AC_PATH_PROG(GTK_UPDATE_ICON_CACHE, gtk-update-icon-cache, no)
  if test x$GTK_UPDATE_ICON_CACHE = xno; then
865
    REBUILD_PNGS=#
866 867
  fi
fi
868

869 870
AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)

871
if test ! -f $srcdir/gtk/gtkbuiltincache.h &&
872 873
   test "x$REBUILD_PNGS" = "x#" ; then
     AC_MSG_ERROR([
874
*** gtkbuiltincache.h is not in the tree, and cannot be built
875
*** because you don't have libpng, or (when cross-compiling) you
876
*** don't have a prebuilt gtk-update-icon-cache on the build system.])
877 878
fi

879 880 881
########################################
# Windowing system checks
########################################
882

883 884 885
# 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
886
X_EXTENSIONS=
887

888
if test "x$enable_x11_backend" == xyes; then
889 890
  X_PACKAGES=fontconfig

891 892 893 894 895 896 897 898 899
  #
  # 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

900
  #
901
  # Check for basic X packages; we use pkg-config if available
902
  #
903
  if $PKG_CONFIG --exists x11 xext; then
904
    have_base_x_pc=true
905 906 907
    X_PACKAGES="$X_PACKAGES x11 xext"
    x_libs="`$PKG_CONFIG --libs x11 xext`"
    X_CFLAGS="`$PKG_CONFIG --cflags x11 xext`"
908

909 910 911 912
    # 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
913
      case $I in
914 915 916 917
        *.la) ;;
        *) x_libs_for_checks="$x_libs_for_checks $I" ;;
      esac
    done
918

919 920 921 922 923 924 925
    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
926

927
    x_cflags="$X_CFLAGS"
928
    x_libs_for_checks="$X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
Elliot Lee's avatar
Elliot Lee committed
929

930
    GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
931 932
  fi

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

936
  gtk_save_cppflags="$CPPFLAGS"
937
  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Alexander Larsson's avatar
Alexander Larsson committed
938

939 940
  gtk_save_LIBS=$LIBS
  LIBS="$x_libs_for_checks $LIBS"
941

942 943 944 945 946 947 948
  # 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, :,
                AC_MSG_ERROR([*** libX11 not found. Check 'config.log' for more details.]))
  AC_CHECK_FUNC(XextFindDisplay, :,
                AC_MSG_ERROR([*** libXext not found. Check 'config.log' for more details.]))
949

950 951 952 953 954 955 956 957 958 959 960
  # Check for xReply

  AC_MSG_CHECKING([if <X11/extensions/XIproto.h> is needed for xReply])
  AC_TRY_COMPILE([#include <X11/Xlibint.h>],
      [xReply *rep;],
      [AC_MSG_RESULT([no])],
      [AC_TRY_COMPILE([#include <X11/extensions/XIproto.h>
#include <X11/Xlibint.h>],
           [xReply *rep;],
           [AC_MSG_RESULT([yes])
            AC_DEFINE([NEED_XIPROTO_H_FOR_XREPLY], 1,
961
                      [Define if <X11/extensions/XIproto.h> needed for xReply])],
962 963 964
           [AC_MSG_RESULT([unknown])
            AC_MSG_ERROR([xReply type unavailable. X11 is too old])])])

965
  # Check for XConvertCase, XInternAtoms (X11R6 specific)
966

967
  AC_CHECK_FUNCS(XConvertCase XInternAtoms)
968

969 970
  # Generic X11R6 check needed for XIM support; we could
  # probably use this to replace the above, but we'll
971
  # leave the separate checks for XConvertCase and XInternAtoms
972
  # for clarity
973

974
  have_x11r6=false
975 976
  AC_CHECK_FUNC(XAddConnectionWatch,
      have_x11r6=true)
977 978

  if $have_x11r6; then
979
    AC_DEFINE(HAVE_X11R6, 1, [Define if we have X11R6])
980
  fi
981
  AM_CONDITIONAL(HAVE_X11R6, $have_x11r6)
982 983 984 985

  # Check for XKB support.

  if test "x$enable_xkb" = "xyes"; then
Matthias Clasen's avatar
Matthias Clasen committed
986 987 988 989
        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.]))
990
  elif test "x$enable_xkb" = "xmaybe"; then
991
        AC_CHECK_FUNC(XkbQueryExtension,
Matthias Clasen's avatar
Matthias Clasen committed
992
                      X_EXTENSIONS="$X_EXTENSIONS XKB"
993
                      AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]))
994 995 996 997
  else
        AC_MSG_WARN(XKB support explicitly disabled)
  fi

998
  # Check for shaped window extension
999

1000 1001
  AC_CHECK_FUNC(XShapeCombineMask, :,
     [AC_MSG_ERROR([Shape extension not found, check your development headers])])
1002

1003
  # X SYNC check
1004 1005
  gtk_save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS $x_cflags"
1006

1007 1008
  AC_CHECK_FUNC(XSyncQueryExtension,
      [AC_CHECK_HEADER(X11/extensions/sync.h,
1009
	  AC_DEFINE(HAVE_XSYNC, 1, [Have the SYNC extension library]),
1010
	  :, [#include <X11/Xlib.h>])])
1011

1012 1013
  CFLAGS="$gtk_save_CFLAGS"

Matthias Clasen's avatar
Matthias Clasen committed
1014
  if test "x$enable_xinerama" != "xno"; then
1015
    # Check for Xinerama extension (Solaris impl or Xfree impl)
Matthias Clasen's avatar
Matthias Clasen committed
1016 1017 1018
    have_xfree_xinerama=false
    have_solaris_xinerama=false

1019 1020
    gtk_save_cppflags="$CPPFLAGS"
    CPPFLAGS="$CPPFLAGS $x_cflags"
1021

1022
    # Check for XFree
Matthias Clasen's avatar
Matthias Clasen committed
1023
    AC_MSG_CHECKING(for Xinerama packages)
1024

1025
    if $PKG_CONFIG --exists xinerama ; then
Matthias Clasen's avatar
Matthias Clasen committed
1026
       AC_MSG_RESULT(yes)
1027 1028
       have_xfree_xinerama=true
       X_PACKAGES="$X_PACKAGES xinerama"
1029
    else
Matthias Clasen's avatar
Matthias Clasen committed
1030
       AC_MSG_RESULT(no)
1031
       AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
1032
	   [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
1033 1034 1035 1036 1037 1038
	   [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
1039
      X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1040 1041 1042 1043 1044 1045 1046 1047 1048
      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)
1049

1050 1051 1052
	    have_solaris_xinerama=false
	    AC_CHECK_FUNC(XineramaGetInfo,
	        [AC_CHECK_HEADER(X11/extensions/xinerama.h,
1053
		    [have_solaris_xinerama=true], :,
1054
		    [#include <X11/Xlib.h>])])
1055

1056
            if $have_solaris_xinerama ; then
Matthias Clasen's avatar
Matthias Clasen committed
1057
              X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070
              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
1071
  fi
Matthias Clasen's avatar
Matthias Clasen committed
1072 1073 1074 1075 1076
  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
1077

1078
  # set up things for XInput
Matthias Clasen's avatar
Matthias Clasen committed
1079
  if test "x$enable_xinput" != "xno" && $PKG_CONFIG --exists "xi" ; then
1080 1081
    have_xinput=yes

1082 1083
    AC_DEFINE(XINPUT_XFREE, 1,
              [Define to 1 if XFree XInput should be used])
1084

1085 1086 1087
    X_PACKAGES="$X_PACKAGES xi"

    AC_CHECK_HEADER(X11/extensions/XInput2.h,
Matthias Clasen's avatar
Matthias Clasen committed
1088 1089 1090 1091 1092
                    have_xinput2=yes
                    X_EXTENSIONS="$X_EXTENSIONS XI2"
                    AC_DEFINE(XINPUT_2, 1, [Define to 1 if XInput 2.0 is available]),
                    X_EXTENSIONS="$X_EXTENSIONS XInput")

1093
  else
1094 1095
    AC_DEFINE(XINPUT_NONE, 1,
              [Define to 1 if no XInput should be used])
1096
  fi
Owen Taylor's avatar
Owen Taylor committed
1097

1098
  AM_CONDITIONAL(XINPUT_XFREE, test "x$have_xinput" = "xyes")
1099
  AM_CONDITIONAL(XINPUT_2,     test "x$have_xinput2" = "xyes")
1100

Matthias Clasen's avatar
Matthias Clasen committed
1101 1102 1103 1104 1105 1106
  if test "x$enable_xinput" = "xyes" ; then
    if test "x$have_xinput" != "xyes" -a "x$have_xinput2" != "xyes" ; then
      AC_MSG_ERROR([*** XInput extension not found. Check 'config.log' for more details.])
    fi
  fi

1107
  # Check for the RANDR extension
Matthias Clasen's avatar
Matthias Clasen committed
1108
  if $PKG_CONFIG --exists "xrandr >= 1.2.99" ; then
1109
     AC_DEFINE(HAVE_RANDR, 1, [Have the Xrandr extension library])
1110

Søren Sandmann's avatar
Søren Sandmann committed
1111
     X_PACKAGES="$X_PACKAGES xrandr"
Matthias Clasen's avatar
Matthias Clasen committed
1112
     X_EXTENSIONS="$X_EXTENSIONS XRANDR"
1113
  fi
1114

1115
  # Checks for Xcursor library
1116

1117
  if $PKG_CONFIG --exists xcursor ; then
1118
    AC_DEFINE(HAVE_XCURSOR, 1, [Have the Xcursor library])
1119

1120 1121 1122 1123
    X_PACKAGES="$X_PACKAGES xcursor"
  fi

  # Checks for XFixes extension
1124

1125
  if $PKG_CONFIG --exists xfixes ; then
1126
    AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension])
1127

1128
    X_PACKAGES="$X_PACKAGES xfixes"
Matthias Clasen's avatar
Matthias Clasen committed
1129
    X_EXTENSIONS="$X_EXTENSIONS XFIXES"
1130
    GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xfixes"
1131 1132
  fi

1133 1134 1135
  # Checks for Xcomposite extension

  if $PKG_CONFIG --exists xcomposite ; then
1136
    AC_DEFINE(HAVE_XCOMPOSITE, 1, [Have the XCOMPOSITE X extension])
1137 1138

    X_PACKAGES="$X_PACKAGES xcomposite"
Matthias Clasen's avatar
Matthias Clasen committed
1139
    X_EXTENSIONS="$X_EXTENSIONS Composite"
1140 1141 1142 1143 1144 1145
    GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xcomposite"
  fi

  # Checks for Xdamage extension

  if $PKG_CONFIG --exists xdamage ; then
1146
    AC_DEFINE(HAVE_XDAMAGE, 1, [Have the XDAMAGE X extension])
1147 1148

    X_PACKAGES="$X_PACKAGES xdamage"
Matthias Clasen's avatar
Matthias Clasen committed
1149
    X_EXTENSIONS="$X_EXTENSIONS DAMAGE"
1150 1151 1152
    GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xdamage"
  fi

1153
  if $have_base_x_pc ; then
1154 1155
    GDK_EXTRA_LIBS="$x_extra_libs"
  else
1156
    GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs -lXext -lX11 $GDK_EXTRA_LIBS"
1157 1158 1159 1160 1161
  fi

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

1162
  AM_CONDITIONAL(USE_X11, true)
Matthias Clasen's avatar
Matthias Clasen committed
1163 1164 1165 1166

  # strip leading space
  X_EXTENSIONS=${X_EXTENSIONS/# }

Owen Taylor's avatar
Owen Taylor committed
1167
else
1168 1169
  XPACKAGES=

1170
  AM_CONDITIONAL(XINPUT_XFREE, false)
1171
  AM_CONDITIONAL(XINPUT_2, false)
1172
  AM_CONDITIONAL(USE_X11, false)
1173
  AM_CONDITIONAL(HAVE_X11R6, false)
Owen Taylor's avatar
Owen Taylor committed
1174 1175
fi

1176
# Check for Pango flags
1177

1178 1179 1180 1181
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`
1182

1183 1184 1185
        AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
else
        AC_MSG_ERROR([
1186 1187
*** Pango not found. Pango built with Cairo support is required
*** to build GTK+. See http://www.pango.org for Pango information.
1188 1189
])
fi
1190

1191
CFLAGS="$CFLAGS $PANGO_CFLAGS"
1192

1193 1194 1195
if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
        :
else
1196 1197 1198
	gtk_save_LIBS="$LIBS"
        LIBS="$PANGO_LIBS $LIBS"
        AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
1199
*** Can't link to Pango. Pango is required to build
1200 1201
*** GTK+. For more information see http://www.pango.org]))
        LIBS="$gtk_save_LIBS"
1202
fi
Owen Taylor's avatar
Owen Taylor committed
1203

1204 1205
CFLAGS="$saved_cflags"
LDFLAGS="$saved_ldflags"
Owen Taylor's avatar
Owen Taylor committed
1206

1207
GDK_PACKAGES="$PANGO_PACKAGES $GIO_PACKAGE $X_PACKAGES gdk-pixbuf-2.0 $cairo_backends cairo-gobject"