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

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

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

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

27
AC_CONFIG_HEADERS([config.h])
28 29
AC_CONFIG_SRCDIR([gdk/gdktypes.h])
AC_CONFIG_MACRO_DIR([m4])
30
AC_CONFIG_AUX_DIR([build-aux])
31

32 33
AC_CANONICAL_HOST

34
# Define a string for the earliest version that this release has
35 36 37 38
# backwards binary compatibility with for all interfaces a module
# might. Unless we add module-only API with lower stability
# guarantees, this should be unchanged until we break binary compat
# for GTK+.
39 40
#
#GTK_BINARY_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$LT_CURRENT
41
m4_define([gtk_binary_version], [3.0.0])
42 43

# required versions of other packages
Matthias Clasen's avatar
Matthias Clasen committed
44
m4_define([glib_required_version], [2.39.5])
45
m4_define([pango_required_version], [1.32.4])
46
m4_define([atk_required_version], [2.7.5])
47
m4_define([cairo_required_version], [1.12.0])
48
m4_define([gdk_pixbuf_required_version], [2.27.1])
49
m4_define([introspection_required_version], [1.39.0])
50
m4_define([wayland_required_version], [1.3.90])
51 52 53 54 55
GLIB_REQUIRED_VERSION=glib_required_version
PANGO_REQUIRED_VERSION=pango_required_version
ATK_REQUIRED_VERSION=atk_required_version
CAIRO_REQUIRED_VERSION=cairo_required_version
GDK_PIXBUF_REQUIRED_VERSION=gdk_pixbuf_required_version
56 57
INTROSPECTION_REQUIRED_VERSION=introspection_required_version

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

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

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

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

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


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

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

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

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

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

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


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

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

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

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

189
dnl
190 191
dnl Check for a working C++ compiler, but do not bail out, if none is found.
dnl We use this for an automated test for C++ header correctness.
192
dnl
193
AC_CHECK_TOOLS(CXX, [$CCC c++ g++ gcc CC cxx cc++ cl], gcc)
194
AC_LANG_PUSH([C++])
195

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

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

Tor Lillqvist's avatar
Tor Lillqvist committed
210
if test "$os_win32" = "yes"; then
211 212 213 214 215 216 217 218 219 220
  if test x$enable_static = xyes -o x$enable_static = x; then
    AC_MSG_WARN([Disabling static library build, must build as DLL on Windows.])
    enable_static=no
  fi
  if test x$enable_shared = xno; then
    AC_MSG_WARN([Enabling shared library build, must build as DLL on Windows.])
  fi
  enable_shared=yes
fi

221 222 223 224 225
dnl Initialize libtool
LT_PREREQ([2.2.6])
LT_INIT([disable-static win32-dll])
# Create libtool early, because it's used in configure
LT_OUTPUT
Elliot Lee's avatar
Elliot Lee committed
226

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

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

Tor Lillqvist's avatar
Tor Lillqvist committed
233 234 235 236 237 238 239 240 241 242 243 244 245
AC_MSG_CHECKING([for some Win32 platform])
case "$host" in
  *-*-mingw*|*-*-cygwin*)
    platform_win32=yes
    ;;
  *)
    platform_win32=no
    ;;
esac
AC_MSG_RESULT([$platform_win32])
AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")

AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
246
AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
247
AM_CONDITIONAL(OS_LINUX, test "$os_linux" = "yes")
Tor Lillqvist's avatar
Tor Lillqvist committed
248 249

if test "$os_win32" = "yes"; then
250 251 252 253
  AC_CHECK_TOOL(WINDRES, windres, no)
  if test "$WINDRES" = no; then
    AC_MSG_ERROR([*** Could not find an implementation of windres in your PATH.])
  fi
Tor Lillqvist's avatar
Tor Lillqvist committed
254 255 256 257
  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
fi
AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)

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

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

267 268 269 270 271
AC_ARG_ENABLE(installed_tests,
              AS_HELP_STRING([--enable-installed-tests],
                             [Install test programs (default: no)]),,
              [enable_installed_tests=no])
AM_CONDITIONAL(BUILDOPT_INSTALL_TESTS, test x$enable_installed_tests = xyes)
272

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

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

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

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

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

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

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

349
ENABLE_ON_X11='%'
350
if test "$enable_x11_backend" = "yes"; then
351 352 353 354 355 356
  # GDK calls the xlib backend "x11," cairo calls it "xlib." Other
  # backend names are identical.
  cairo_backends="$cairo_backends cairo-xlib"
  GDK_BACKENDS="$GDK_BACKENDS x11"
  # Pull in gio-unix for GDesktopAppInfo usage, see at least
  # gdkapplaunchcontext-x11.c
357
  have_gio_unix=yes
358 359 360
  backend_immodules="$backend_immodules,xim"
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_X11"
361
  ENABLE_ON_X11=''
Tor Lillqvist's avatar
Tor Lillqvist committed
362
fi
363
AC_SUBST(ENABLE_ON_X11)
364

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

378
DISABLE_ON_QUARTZ=''
379
if test "x$enable_quartz_backend" = xyes; then
380 381
  cairo_backends="$cairo_backends cairo-quartz"
  GDK_BACKENDS="$GDK_BACKENDS quartz"
382
  backend_immodules="$backend_immodules,quartz"
383 384 385
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_QUARTZ"
  GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -framework Cocoa"
386
  DISABLE_ON_QUARTZ='%'
387
  AM_CONDITIONAL(USE_QUARTZ, true)
388 389 390
  if test "x$quartz_relocation" = xyes; then
    AC_DEFINE([QUARTZ_RELOCATION], [1], [Use NSBundle functions to determine load paths for libraries, translations, etc.])
  fi
John Ralls's avatar
John Ralls committed
391 392 393
  # Pull in gio-unix for GDesktopAppInfo usage, see at least
  # gdkapplaunchcontext-x11.c
  have_gio_unix=yes
394

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

400
if test "x$enable_broadway_backend" = xyes; then
401
  GDK_BACKENDS="$GDK_BACKENDS broadway"
402
  cairo_backends="$cairo_backends cairo"
403
  backend_immodules="$backend_immodules,broadway"
404
  if test "$os_win32" != "yes"; then
405 406
    have_gio_unix=yes
  fi
407 408 409 410 411 412 413
  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
414

415 416
PKG_PROG_PKG_CONFIG

417
WAYLAND_DEPENDENCIES="wayland-client >= wayland_required_version xkbcommon >= 0.2.0 wayland-cursor >= wayland_required_version"
418 419 420 421 422 423 424 425 426 427 428 429 430
if test "$enable_wayland_backend" = "maybe" ; then
  AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
  PKG_CHECK_EXISTS($WAYLAND_DEPENDENCIES, [have_wayland_deps=yes], [have_wayland_deps=no])
  AC_MSG_CHECKING([for WAYLAND_DEPENDENCIES])
  if test "$WAYLAND_SCANNER" = "no" -o "$have_wayland_deps" = "no" ; then
    enable_wayland_backend=no
  else
    enable_wayland_backend=yes
  fi
  AC_MSG_RESULT($enable_wayland_backend)
fi

if test "$enable_wayland_backend" = "yes"; then
431 432
  # For the cairo image backend
  cairo_backends="$cairo_backends cairo"
Kristian Høgsberg's avatar
Kristian Høgsberg committed
433
  GDK_BACKENDS="$GDK_BACKENDS wayland"
434
  have_gio_unix=yes
Kristian Høgsberg's avatar
Kristian Høgsberg committed
435 436
  GDK_WINDOWING="$GDK_WINDOWING
#define GDK_WINDOWING_WAYLAND"
437
  WAYLAND_PACKAGES="$WAYLAND_DEPENDENCIES"
438
  AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
439 440 441 442
  AS_IF([test "x$WAYLAND_SCANNER" = "xno"],
    AC_MSG_ERROR([Could not find wayland-scanner in your PATH, required for parsing wayland extension protocols]))
  AC_SUBST([WAYLAND_SCANNER])

Kristian Høgsberg's avatar
Kristian Høgsberg committed
443 444 445 446 447
  AM_CONDITIONAL(USE_WAYLAND, true)
else
  AM_CONDITIONAL(USE_WAYLAND, false)
fi

448
# strip leading space
449
GDK_BACKENDS=${GDK_BACKENDS#* }
450

451
AC_SUBST(GDK_BACKENDS)
Tor Lillqvist's avatar
Tor Lillqvist committed
452

453 454 455
if test -z "$GDK_BACKENDS"; then
  AC_MSG_ERROR([No GDK backends selected.])
fi
Tor Lillqvist's avatar
Tor Lillqvist committed
456

457
if test "x$enable_debug" = "xyes"; then
Tim Janik's avatar
Tim Janik committed
458
  test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
459
  GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
Elliot Lee's avatar
Elliot Lee committed
460
else
461
  if test "x$enable_debug" = "xno"; then
462
    GTK_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
463
  else
464
    GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
465
  fi
Elliot Lee's avatar
Elliot Lee committed
466 467
fi

468

469 470
AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}",
                   [Define if debugging is enabled])
471

472

Elliot Lee's avatar
Elliot Lee committed
473 474 475
# Build time sanity check...
AM_SANITY_CHECK

Raja R Harinath's avatar
Raja R Harinath committed
476
changequote(,)dnl
477
if test "x$GCC" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
478 479 480 481
  case " $CFLAGS " in
  *[\ \	]-Wall[\ \	]*) ;;
  *) CFLAGS="$CFLAGS -Wall" ;;
  esac
Elliot Lee's avatar
Elliot Lee committed
482

483
  if test "x$enable_ansi" = "xyes"; then
Raja R Harinath's avatar
Raja R Harinath committed
484 485 486 487 488 489 490 491 492
    case " $CFLAGS " in
    *[\ \	]-ansi[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -ansi" ;;
    esac

    case " $CFLAGS " in
    *[\ \	]-pedantic[\ \	]*) ;;
    *) CFLAGS="$CFLAGS -pedantic" ;;
    esac
Elliot Lee's avatar
Elliot Lee committed
493
  fi
494 495
fi
changequote([,])dnl
Tor Lillqvist's avatar
Tor Lillqvist committed
496

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

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

546
PKG_CHECK_MODULES(CAIRO_BACKEND, [$cairo_backends])
547

548 549
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])

550 551 552 553
dnl ******************************************************
dnl * See whether to include shared library dependencies *
dnl ******************************************************

554
AC_ARG_ENABLE(explicit-deps,
555
              [AS_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
556 557
                              [use explicit dependencies in .pc files [default=auto]])],,
              [enable_explicit_deps=auto])
558

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

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

582
AC_PATH_PROGS(PERL, perl5 perl)
583

584
AC_CHECK_FUNCS(lstat mkstemp)
585
AC_CHECK_FUNCS(localtime_r)
586 587 588

# _NL_TIME_FIRST_WEEKDAY is an enum and not a define
AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY])
589 590 591 592
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])
593 594 595 596 597
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
598

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

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

645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664
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.)

665
AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
Owen Taylor's avatar
Owen Taylor committed
666

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

671
gtk_save_LIBS=$LIBS
672
LIBS="$LIBS -lm"
673 674 675 676 677 678 679 680 681 682 683 684 685 686
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)])

687 688
LIBS=$gtk_save_LIBS

689 690 691
AC_MSG_CHECKING(for the BeOS)
case $host in
  *-*-beos*)
692
    AC_MSG_RESULT(yes)
693 694
    MATH_LIB=
  ;;
695 696
  *)
    AC_MSG_RESULT(no)
697 698
  ;;
esac
699

Benjamin Otte's avatar
Benjamin Otte committed
700
AC_SUBST(MATH_LIB)
701 702 703 704 705 706 707 708 709 710 711 712 713
#
# 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
714

715
#
Owen Taylor's avatar
Owen Taylor committed
716
# Run AM_PATH_GLIB_2_0 to make sure that GLib is installed and working
717
#
718

719
AM_PATH_GLIB_2_0(glib_required_version, :,
720
  AC_MSG_ERROR([
721
*** GLIB glib_required_version or better is required. The latest version of
722
*** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
723
  gobject gmodule-no-export)
724

725 726 727 728 729 730
PKG_PROG_PKG_CONFIG_FOR_BUILD
GLIB_CFLAGS_FOR_BUILD=`$PKG_CONFIG_FOR_BUILD --cflags glib-2.0 gobject-2.0 gmodule-no-export-2.0`
GLIB_LIBS_FOR_BUILD=`$PKG_CONFIG_FOR_BUILD --libs glib-2.0 gobject-2.0 gmodule-no-export-2.0`
AC_SUBST(GLIB_CFLAGS_FOR_BUILD)
AC_SUBST(GLIB_LIBS_FOR_BUILD)

Owen Taylor's avatar
Owen Taylor committed
731 732 733 734 735 736 737
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

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

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

767 768 769 770 771 772 773 774 775 776 777 778 779
#
# Disable deprecation checks for all libraries we depend on on stable branches.
# This is so newer versions of those libraries don't cause more warnings with
# a stable GTK version.
# We don't ever want to turn off deprecation warnings for master however, because
# that's where we get rid of deprecated API we use.
#
if test m4_eval(gtk_minor_version % 2) = 0 ; then
  AC_DEFINE_UNQUOTED(GLIB_DISABLE_DEPRECATION_WARNINGS, 1,
                     [Disable deprecation warnings from glib])
fi

dnl
780 781 782
saved_cflags="$CFLAGS"
saved_ldflags="$LDFLAGS"

783

784 785
# Checks for library functions.
AC_FUNC_MMAP
786

Matthias Clasen's avatar
Matthias Clasen committed
787
AC_CHECK_FUNCS(mallinfo)
788 789
AC_CHECK_FUNCS(getresuid)
AC_TYPE_UID_T
790

791 792
# Check for round(), rint(), isnan(), isinf() and nearbyint()
AC_CHECK_LIB(m,round,,)
793 794
AC_CHECK_FUNCS(round rint nearbyint)
AC_CHECK_DECLS([isnan, isinf], [], [], [[#include <math.h>]])
795

Matthias Clasen's avatar
Matthias Clasen committed
796 797 798 799
# Checks for gdkspawn
AC_CHECK_HEADERS(crt_externs.h)
AC_CHECK_FUNCS(_NSGetEnviron)

800 801
AC_MSG_CHECKING(whether to build dynamic modules)

802
AC_ARG_ENABLE(modules,
803
              [AS_HELP_STRING([--disable-modules],
804
                              [disable dynamic module loading])])
805

806
dynworks=false
807
build_dynamic_modules=no
808
deps=
809
if test x$enable_modules = xno; then
810 811 812 813
    AC_MSG_RESULT(no)
else
    AC_MSG_RESULT(yes)
    AC_MSG_CHECKING(whether dynamic modules work)
814
    ## for loop is to strip newline
815
    tmp=`$PKG_CONFIG --variable=gmodule_supported gmodule-no-export-2.0`
816 817 818
    for I in $tmp; do
        dynworks=$I
    done
819

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

834
    if $dynworks; then
835
        build_dynamic_modules=yes
836 837
        AC_DEFINE(USE_GMODULE, 1,
                  [Define to 1 if gmodule works and should be used])
838 839
        AC_MSG_RESULT(yes)
    else
840
        build_dynamic_modules=no
841 842
        AC_MSG_RESULT(no)
    fi
843
fi
Havoc Pennington's avatar
Havoc Pennington committed
844

845
AM_CONDITIONAL(BUILD_DYNAMIC_MODULES, $dynworks)
846

847 848 849 850 851 852
#
# Allow building some or all immodules included
#
AC_MSG_CHECKING(immodules to build)

AC_ARG_WITH(included_immodules,
853 854
            [AS_HELP_STRING([--with-included-immodules=MODULE1,MODULE2,...],
                            [build the specified input methods into gtk])])
855

856
if $dynworks; then
857 858 859 860 861 862 863 864
   :
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

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

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])
905
AM_CONDITIONAL(INCLUDE_IM_QUARTZ, [test x"$INCLUDE_quartz" = xyes])
906
AM_CONDITIONAL(INCLUDE_IM_BROADWAY, [test x"$INCLUDE_broadway" = xyes])
907 908 909 910 911 912
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])

913 914 915
# Checks to see whether we should include mediaLib
# support.
#
916
AC_CHECK_HEADER(sys/systeminfo.h,
917
                AC_DEFINE(HAVE_SYS_SYSTEMINFO_H, 1,
918 919 920 921
                          [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]))
922

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

925
AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
926

927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950
AS_IF([test "x$enable_gtk2_dependency" = xyes],
      [AC_PATH_PROG(GTK_UPDATE_ICON_CACHE, gtk-update-icon-cache, no)
       if test x$GTK_UPDATE_ICON_CACHE = xno; then
         REBUILD_PNGS=#
       fi],

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

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

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

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

952
AM_CONDITIONAL(USE_EXTERNAL_ICON_CACHE, [test "x$enable_gtk2_dependency" = xyes])
953

954 955
AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)

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

964 965 966
########################################
# Windowing system checks
########################################
967

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

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

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

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

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

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

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

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

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

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

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

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

1035 1036 1037
  # Check for xReply

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

1052 1053 1054
  # Check for XKB support.

  if test "x$enable_xkb" = "xyes"; then
1055 1056 1057 1058
        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.]))
1059
  elif test "x$enable_xkb" = "xmaybe"; then
1060
        AC_CHECK_FUNC(XkbQueryExtension,
1061
                      X_EXTENSIONS="$X_EXTENSIONS XKB"
1062
                      AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension]))
1063 1064 1065 1066
  else
        AC_MSG_WARN(XKB support explicitly disabled)
  fi

1067
  # Check for shaped window extension
1068

1069 1070
  AC_CHECK_FUNC(XShapeCombineMask, :,
     [AC_MSG_ERROR([Shape extension not found, check your development headers])])
1071

1072
  # X SYNC check
1073 1074
  gtk_save_CFLAGS="$CFLAGS"
  CFLAGS="$CFLAGS $x_cflags"
1075

1076 1077
  AC_CHECK_FUNC(XSyncQueryExtension,
      [AC_CHECK_HEADER(X11/extensions/sync.h,
1078
	  AC_DEFINE(HAVE_XSYNC, 1, [Have the SYNC extension library]),
1079
	  :, [#include <X11/Xlib.h>])])
1080

1081 1082
  CFLAGS="$gtk_save_CFLAGS"

1083
  if test "x$enable_xinerama" != "xno"; then
1084
    # Check for Xinerama extension (Solaris impl or Xfree impl)
1085 1086 1087
    have_xfree_xinerama=false
    have_solaris_xinerama=false

1088 1089
    gtk_save_cppflags="$CPPFLAGS"
    CPPFLAGS="$CPPFLAGS $x_cflags"
1090

1091
    # Check for XFree
1092
    AC_MSG_CHECKING(for Xinerama packages)
1093

1094
    if $PKG_CONFIG --exists xinerama ; then
1095
       AC_MSG_RESULT(yes)
1096 1097
       have_xfree_xinerama=true
       X_PACKAGES="$X_PACKAGES xinerama"
1098
    else
1099
       AC_MSG_RESULT(no)
1100
       AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
1101
	   [AC_CHECK_HEADER(X11/extensions/Xinerama.h,
1102 1103 1104 1105 1106 1107
	   [GTK_ADD_LIB(x_extra_libs,Xinerama)
	   have_xfree_xinerama=true], :,
           [#include <X11/Xlib.h>])])
    fi

    if $have_xfree_xinerama ; then
1108
      X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1109 1110 1111 1112 1113 1114 1115 1116
      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
1117

1118 1119 1120
	    have_solaris_xinerama=false
	    AC_CHECK_FUNC(XineramaGetInfo,
	        [AC_CHECK_HEADER(X11/extensions/xinerama.h,
1121
		    [have_solaris_xinerama=true], :,
1122
		    [#include <X11/Xlib.h>])])
1123

1124 1125
	    AC_MSG_CHECKING(for Xinerama support on Solaris)

1126
            if $have_solaris_xinerama ; then
1127
              X_EXTENSIONS="$X_EXTENSIONS Xinerama"
1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140
              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
1141
  fi
1142 1143 1144 1145 1146
  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
1147

1148 1149 1150 1151
  # Check for XGetEventData for GenericEvents
  AC_CHECK_FUNC(XGetEventData,
                AC_DEFINE(HAVE_XGENERICEVENTS, 1, [Have XGenericEvent]))

1152
  # set up things for XInput
1153
  if $PKG_CONFIG --exists "xi" ; then
1154

1155
    X_PACKAGES="$X_PACKAGES xi"
1156
    GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xi"
1157 1158

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

1162 1163
    gtk_save_LIBS="$LIBS"
    LIBS="$LIBS -lXi"
1164 1165 1166 1167 1168 1169 1170 1171 1172

    # 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>]])])
1173
    LIBS="$gtk_save_LIBS"
1174 1175 1176 1177 1178 1179

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

1182 1183
  AS_IF([test "x$have_xinput2" != "xyes"],
        [AC_MSG_ERROR([*** XInput2 extension not found. Check 'config.log' for more details.])])
1184 1185

  # Check for the RANDR extension
1186 1187 1188 1189 1190 1191 1192 1193 1194
  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
1195
  fi
1196

1197
  # Checks for Xcursor library
1198

1199
  if $PKG_CONFIG --exists xcursor ; then
1200
    AC_DEFINE(HAVE_XCURSOR, 1, [Have the Xcursor library])
1201

1202 1203 1204 1205
    X_PACKAGES="$X_PACKAGES xcursor"
  fi

  # Checks for XFixes extension
1206

1207 1208 1209
  if test x"$enable_xfixes" != xno; then
    if $PKG_CONFIG --exists xfixes ; then
      AC_DEFINE(HAVE_XFIXES, 1, [Have the XFIXES X extension])
1210

1211 1212 1213 1214 1215 1216
      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
1217 1218
  fi

1219 1220
  # Checks for Xcomposite extension

1221 1222 1223
  if test x"$enable_xcomposite" != xno; then
    if $PKG_CONFIG --exists xcomposite ; then
      AC_DEFINE(HAVE_XCOMPOSITE, 1, [Have the XCOMPOSITE X extension])
1224

1225 1226 1227 1228 1229 1230
      X_PACKAGES="$X_PACKAGES xcomposite"
      X_EXTENSIONS="$X_EXTENSIONS Composite"
      GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xcomposite"
    elif test x"$enable_xcomposite" = xyes; then
      AC_MSG_ERROR([Xcomposite support requested but xcomposite not found])
    fi
1231 1232 1233 1234
  fi

  # Checks for Xdamage extension

1235 1236 1237
  if test x"$enable_xdamage" != xno; then
    if $PKG_CONFIG --exists xdamage ; then
      AC_DEFINE(HAVE_XDAMAGE, 1, [Have the XDAMAGE X extension])
1238

1239 1240 1241 1242 1243 1244
      X_PACKAGES="$X_PACKAGES xdamage"
      X_EXTENSIONS="$X_EXTENSIONS DAMAGE"
      GTK_PACKAGES_FOR_X="$GTK_PACKAGES_FOR_X xdamage"
    elif test x"$enable_xdamage" = xyes; then
      AC_MSG_ERROR([Xdamage support requested but xdamage not found])
    fi
1245 1246
  fi

1247
  if $have_base_x_pc ; then
1248 1249
    GDK_EXTRA_LIBS="$x_extra_libs"
  else
1250
    GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs -lXext -lX11 $GDK_EXTRA_LIBS"
1251 1252 1253 1254 1255
  fi

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

1256
  AM_CONDITIONAL(USE_X11, true)
1257 1258

  # strip leading space
1259
  X_EXTENSIONS=${X_EXTENSIONS#* }
1260

1261
else
1262 1263
  XPACKAGES=

1264
  AM_CONDITIONAL(USE_X11, false)
1265 1266
fi

1267 1268
# Check for gio-unix
if test "$have_gio_unix" = "yes"; then
1269
  GDK_GIO_PACKAGE="gio-unix-2.0 >= glib_required_version"
1270 1271 1272
  AC_DEFINE([HAVE_GIO_UNIX], [1],
            [Define if gio-unix is available])
else
1273
  GDK_GIO_PACKAGE="gio-2.0 >= glib_required_version"
1274 1275
fi

1276
# Check for Pango flags
1277

1278 1279 1280 1281
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`
1282

1283 1284 1285
        AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
else
        AC_MSG_ERROR([
1286 1287
*** Pango not found. Pango built with Cairo support is required
*** to build GTK+. See http://www.pango.org for Pango information.
1288 1289
])
fi
1290

1291
CFLAGS="$CFLAGS $PANGO_CFLAGS"
1292

1293 1294 1295
if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
        :
else
1296 1297 1298
	gtk_save_LIBS="$LIBS"
        LIBS="$PANGO_LIBS $LIBS"
        AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
1299
*** Can't link to Pango. Pango is required to build
1300 1301
*** GTK+. For more information see http://www.pango.org]))
        LIBS="$gtk_save_LIBS"
1302
fi
1303

1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314
# Check for cairo_set_device_scale, as we don't want to depend hard on
# this until there is a stable release with it
CAIRO_CFLAGS=`$PKG_CONFIG --cflags cairo`
CAIRO_LIBS=`$PKG_CONFIG --libs cairo`
CFLAGS="$CFLAGS $CAIRO_CFLAGS"
gtk_save_LIBS="$LIBS"
LIBS="$CAIRO_LIBS $LIBS"
AC_CHECK_FUNCS(cairo_surface_set_device_scale)
LIBS="$gtk_save_LIBS"


1315 1316
CFLAGS="$saved_cflags"
LDFLAGS="$saved_ldflags"
1317

1318
GDK_PACKAGES="$PANGO_PACKAGES gdk-pixbuf-2.0 >= gdk_pixbuf_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version"
1319
GDK_PRIVATE_PACKAGES="$GDK_GIO_PACKAGE $X_PACKAGES $WAYLAND_PACKAGES $cairo_backends"
Matthias Clasen's avatar
Matthias Clasen committed
1320 1321 1322
if test "x$enable_x11_backend" = xyes; then
  GDK_PRIVATE_PACKAGES="$GDK_PRIVATE_PACKAGES pangoft2"
fi
1323

1324 1325 1326
PKG_CHECK_MODULES(GDK_DEP, $GDK_PACKAGES $GDK_PRIVATE_PACKAGES)
GDK_DEP_LIBS="$GDK_EXTRA_LIBS $GDK_DEP_LIBS $MATH_LIB"
GDK_DEP_CFLAGS="$GDK_DEP_CFLAGS $GDK_EXTRA_CFLAGS"
1327 1328 1329 1330 1331 1332 1333 1334
#
# If we aren't writing explicit dependencies, then don't put the extra libraries we need
# into the pkg-config files
#
if test $enable_explicit_deps != yes ; then
  GDK_EXTRA_LIBS=
fi

1335
AC_SUBST(GDK_PACKAGES)
Matthias Clasen's avatar
Matthias Clasen committed
1336
AC_SUBST(GDK_PRIVATE_PACKAGES)
1337 1338 1339 1340
AC_SUBST(GDK_EXTRA_LIBS)
AC_SUBST(GDK_EXTRA_CFLAGS)
AC_SUBST(GDK_DEP_LIBS)
AC_SUBST(GDK_DEP_CFLAGS)
1341 1342


1343 1344 1345
########################################
# Check for Accessibility Toolkit flags
########################################
Havoc Pennington's avatar
Havoc Pennington committed
1346

1347
if test x$enable_x11_backend = xyes; then
1348 1349 1350 1351 1352
   ATK_PACKAGES="atk atk-bridge-2.0"
else
   ATK_PACKAGES="atk"
fi

1353
PKG_CHECK_MODULES(ATK, $ATK_PACKAGES)
1354

1355
GTK_PACKAGES="atk >= atk_required_version cairo >= cairo_required_version cairo-gobject >= cairo_required_version gdk-pixbuf-2.0 >= gdk_pixbuf_required_version gio-2.0 >= glib_required_version"
1356
GTK_PRIVATE_PACKAGES="$ATK_PACKAGES"
1357
if test "x$enable_x11_backend" = xyes; then
1358
  GTK_PRIVATE_PACKAGES="$GTK_PRIVATE_PACKAGES pangoft2"