]> Pileus Git - ~andy/gtk/blob - configure.in
aa6101c8706b35251b78c9374d644d2ccdd12afb
[~andy/gtk] / configure.in
1 # Process this file with autoconf to produce a configure script.
2 # require autoconf 2.54
3 AC_PREREQ(2.54)
4
5 # Making releases:
6 #   GTK_MICRO_VERSION += 1;
7 #   GTK_INTERFACE_AGE += 1;
8 #   GTK_BINARY_AGE += 1;
9 # if any functions have been added, set GTK_INTERFACE_AGE to 0.
10 # if backwards compatibility has been broken,
11 # set GTK_BINARY_AGE and GTK_INTERFACE_AGE to 0.
12
13 m4_define([gtk_major_version], [2])
14 m4_define([gtk_minor_version], [4])
15 m4_define([gtk_micro_version], [0])
16 m4_define([gtk_version],
17           [gtk_major_version.gtk_minor_version.gtk_micro_version])
18 m4_define([gtk_interface_age], [0])
19 m4_define([gtk_binary_age],
20           [m4_eval(100 * gtk_minor_version + gtk_micro_version)])
21 # This is the X.Y used in -lgtk-FOO-X.Y
22 m4_define([gtk_api_version], [2.0])
23
24 # Define a string for the earliest version that this release has
25 # forward/backwards binary compatibility with. This is used for module
26 # locations. (Should this be backwards-compat instead?)
27 #
28 #GTK_BINARY_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$LT_CURRENT
29 m4_define([gtk_binary_version], [2.4.0])
30
31 # required versions of other packages
32 m4_define([glib_required_version], [2.4.0])
33 m4_define([pango_required_version], [1.4.0])
34 m4_define([atk_required_version], [1.0.1])
35
36
37 AC_INIT([gtk+], [gtk_version],
38         [http://bugzilla.gnome.org/enter_bug.cgi?product=gtk+],
39         [gtk+])
40
41 AC_CONFIG_SRCDIR([gdk/gdktypes.h])
42
43 # Save this value here, since automake will set cflags later
44 cflags_set=${CFLAGS+set}
45
46 AM_INIT_AUTOMAKE(no-define)
47 AM_CONFIG_HEADER(config.h)
48
49 #
50 # For each of the libraries we build, we define the following
51 # substituted variables:
52 #
53 # foo_PACKAGES:     pkg-config packages this library requires
54 # foo_EXTRA_LIBS:   Libraries this module requires not pulled in by pkg-config
55 # foo_EXTRA_CFLAGS: cflags this module requires not pulled in by pkg-config
56 # foo_DEP_LIBS:     All libraries this module requires
57 # foo_DEP_CFLAGS:   All cflags this module requires
58
59
60 GTK_MAJOR_VERSION=gtk_major_version
61 GTK_MINOR_VERSION=gtk_minor_version
62 GTK_MICRO_VERSION=gtk_micro_version
63 GTK_INTERFACE_AGE=gtk_interface_age
64 GTK_BINARY_AGE=gtk_binary_age
65 GTK_VERSION=gtk_version
66 GTK_API_VERSION=gtk_api_version
67 GTK_BINARY_VERSION=gtk_binary_version
68 AC_SUBST(GTK_MAJOR_VERSION)
69 AC_SUBST(GTK_MINOR_VERSION)
70 AC_SUBST(GTK_MICRO_VERSION)
71 AC_SUBST(GTK_INTERFACE_AGE)
72 AC_SUBST(GTK_BINARY_AGE)
73 AC_SUBST(GTK_API_VERSION)
74 AC_SUBST(GTK_VERSION)
75 AC_SUBST(GTK_BINARY_VERSION)
76
77 # libtool versioning
78 #LT_RELEASE=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION
79 #LT_CURRENT=`expr $GTK_MICRO_VERSION - $GTK_INTERFACE_AGE`
80 #LT_REVISION=$GTK_INTERFACE_AGE
81 #LT_AGE=`expr $GTK_BINARY_AGE - $GTK_INTERFACE_AGE`
82 #LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
83
84 m4_define([lt_current], [m4_eval(100 * gtk_minor_version + gtk_micro_version - gtk_interface_age)])
85 m4_define([lt_revision], [gtk_interface_age])
86 m4_define([lt_age], [m4_eval(gtk_binary_age - gtk_interface_age)])
87 LT_VERSION_INFO="lt_current:lt_revision:lt_age"
88 LT_CURRENT_MINUS_AGE=m4_eval(lt_current - lt_age)
89 AC_SUBST(LT_VERSION_INFO)
90 AC_SUBST(LT_CURRENT_MINUS_AGE)
91
92
93 #
94 # gdk-pixbuf gets versioned separately, and for now, using standard
95 # libtool versioning, not GTK+-style versioning
96 #
97 GDK_PIXBUF_MAJOR=gtk_major_version
98 GDK_PIXBUF_MINOR=gtk_minor_version
99 GDK_PIXBUF_MICRO=gtk_micro_version
100 GDK_PIXBUF_VERSION="${GDK_PIXBUF_MAJOR}.${GDK_PIXBUF_MINOR}.${GDK_PIXBUF_MICRO}"
101 AC_SUBST(GDK_PIXBUF_MAJOR)
102 AC_SUBST(GDK_PIXBUF_MINOR)
103 AC_SUBST(GDK_PIXBUF_MICRO)
104 AC_SUBST(GDK_PIXBUF_VERSION)
105
106 GETTEXT_PACKAGE=gtk20
107 AC_SUBST(GETTEXT_PACKAGE)
108 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE")
109
110 MATH_LIB=-lm
111 AC_MSG_CHECKING([for native Win32])
112 case "$host" in
113   *-*-mingw*)
114     os_win32=yes
115     MATH_LIB=
116     ;;
117   *)
118     os_win32=no
119     ;;
120 esac
121 AC_MSG_RESULT([$os_win32])
122
123 dnl Initialize libtool
124 AC_PROG_CC
125 AM_DISABLE_STATIC
126
127 if test "$os_win32" = "yes"; then
128   if test x$enable_static = xyes -o x$enable_static = x; then
129     AC_MSG_WARN([Disabling static library build, must build as DLL on Windows.])
130     enable_static=no
131   fi
132   if test x$enable_shared = xno; then
133     AC_MSG_WARN([Enabling shared library build, must build as DLL on Windows.])
134   fi
135   enable_shared=yes
136 fi
137
138 AM_PROG_LIBTOOL
139
140 # Make sure we use 64-bit versions of various file stuff.
141 AC_SYS_LARGEFILE
142
143 AM_PROG_AS
144
145 dnl Initialize maintainer mode
146 AM_MAINTAINER_MODE
147
148 AC_CANONICAL_HOST
149
150 AC_MSG_CHECKING([for some Win32 platform])
151 case "$host" in
152   *-*-mingw*|*-*-cygwin*)
153     platform_win32=yes
154     ;;
155   *)
156     platform_win32=no
157     ;;
158 esac
159 AC_MSG_RESULT([$platform_win32])
160 AM_CONDITIONAL(PLATFORM_WIN32, test "$platform_win32" = "yes")
161
162 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
163 AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes")
164
165 if test "$os_win32" = "yes"; then
166   AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
167 fi
168 AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
169
170 m4_define([debug_default],
171           m4_if(m4_eval(gtk_minor_version % 2), [1], [yes], [minimum]))
172
173 dnl declare --enable-* args and collect ac_help strings
174 AC_ARG_ENABLE(debug,
175               AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
176                              [turn on debugging @<:@default=debug_default@:>@]),,
177               enable_debug=debug_default)
178 AC_ARG_ENABLE(shm,
179               [AC_HELP_STRING([--enable-shm],
180                               [support shared memory if available [default=yes]])],,
181               [enable_shm="yes"])
182 AC_ARG_ENABLE(ansi,
183               [AC_HELP_STRING([--enable-ansi],
184                               [turn on strict ansi [default=no]])],,
185               [enable_ansi=no])
186 AC_ARG_ENABLE(xkb,
187               [AC_HELP_STRING([--enable-xkb],
188                               [support XKB [default=maybe]])],,
189               [enable_xkb="maybe"])
190 AC_ARG_ENABLE(rebuilds,
191               [AC_HELP_STRING([--disable-rebuilds],
192                               [disable all source autogeneration rules])],,
193               [enable_rebuilds=yes])
194
195 AC_ARG_WITH(xinput,
196             [AC_HELP_STRING([--with-xinput=@<:@no/yes@:>@], [support XInput])])
197
198 AC_ARG_WITH(wintab,
199             [AC_HELP_STRING([--with-wintab=DIRECTORY],
200                             [use Wintab API with win32 backend])])
201 AC_ARG_WITH(ie55,
202             [AC_HELP_STRING([--with-ie55=DIRECTORY],
203                             [IE5.5 libs and headers (for Active IMM)])])
204
205 GLIB_AC_DIVERT_BEFORE_HELP([
206 if test "$platform_win32" = yes; then
207   gdktarget=win32
208 else
209   gdktarget=x11
210 fi
211 ])
212
213 AC_ARG_WITH(gdktarget, [  --with-gdktarget=[[x11/linux-fb/win32]] select GDK target [default=$gdktarget]],
214         gdktarget=$with_gdktarget)
215
216 AC_SUBST(gdktarget)
217 case $gdktarget in
218   x11|linux-fb|win32) ;;
219   *) AC_MSG_ERROR([Invalid target for GDK: use x11, linux-fb or win32.]);;
220 esac
221
222 gdktargetlib=libgdk-$gdktarget-$GTK_API_VERSION.la
223 gtktargetlib=libgtk-$gdktarget-$GTK_API_VERSION.la
224
225 AC_SUBST(gdktargetlib)
226 AC_SUBST(gtktargetlib)
227
228 AC_ARG_ENABLE(shadowfb,
229               [AC_HELP_STRING([--disable-shadowfb],
230                               [disable shadowfb support for linux-fb])],,
231               [enable_shadowfb=yes])
232
233 AC_ARG_ENABLE(fbmanager,
234               [AC_HELP_STRING([--enable-fbmanager],
235                               [enable framebuffer manager support (GtkFB)])],,
236               enable_fbmanager=no)
237         
238 if test "x$enable_debug" = "xyes"; then
239   test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
240   GTK_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
241 else
242   if test "x$enable_debug" = "xno"; then
243     GTK_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
244   else
245     GTK_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
246   fi
247 fi
248
249 AC_DEFINE_UNQUOTED(GTK_COMPILED_WITH_DEBUGGING, "${enable_debug}")
250
251                         
252 # Build time sanity check...
253 AM_SANITY_CHECK
254
255 # Checks for programs.
256 AC_ISC_POSIX
257 AM_PROG_CC_STDC
258 AC_PROG_INSTALL
259 AC_PROG_MAKE_SET
260
261 changequote(,)dnl
262 if test "x$GCC" = "xyes"; then
263   case " $CFLAGS " in
264   *[\ \ ]-Wall[\ \      ]*) ;;
265   *) CFLAGS="$CFLAGS -Wall" ;;
266   esac
267
268   if test "x$enable_ansi" = "xyes"; then
269     case " $CFLAGS " in
270     *[\ \       ]-ansi[\ \      ]*) ;;
271     *) CFLAGS="$CFLAGS -ansi" ;;
272     esac
273
274     case " $CFLAGS " in
275     *[\ \       ]-pedantic[\ \  ]*) ;;
276     *) CFLAGS="$CFLAGS -pedantic" ;;
277     esac
278   fi
279 fi
280 changequote([,])dnl
281
282 # Ensure MSVC-compatible struct packing convention is used when
283 # compiling for Win32 with gcc.
284 # What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
285 # gcc2 uses "-fnative-struct".
286 if test x"$os_win32" = xyes; then
287   if test x"$GCC" = xyes; then
288     msnative_struct=''
289     AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
290     if test -z "$ac_cv_prog_CC"; then
291       our_gcc="$CC"
292     else
293       our_gcc="$ac_cv_prog_CC"
294     fi
295     case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
296       2.)
297         if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
298           msnative_struct='-fnative-struct'
299         fi
300         ;;
301       *)
302         if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
303           msnative_struct='-mms-bitfields'
304         fi
305         ;;
306     esac
307     if test x"$msnative_struct" = x ; then
308       AC_MSG_RESULT([no way])
309       AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
310     else
311       CFLAGS="$CFLAGS $msnative_struct"
312       AC_MSG_RESULT([${msnative_struct}])
313     fi
314   fi
315 fi
316
317 # Honor aclocal flags
318 ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
319
320 ## Initial sanity check, done here so that users get told they 
321 ## have the wrong dependencies as early in the process as possible.
322 ## Later on we actually use the cflags/libs from separate pkg-config
323 ## calls. Oh, also the later pkg-config calls don't include 
324 ## the version requirements since those make the module lists 
325 ## annoying to construct
326 PKG_CHECK_MODULES(BASE_DEPENDENCIES,
327   [glib-2.0 >= glib_required_version dnl
328    atk >= atk_required_version dnl
329    pango >= pango_required_version])
330
331 if test "$os_win32" != yes; then
332     # libtool option to control which symbols are exported
333     # right now, symbols starting with _ are not exported
334     LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^_]].*"'
335 else
336     # We currently use .def files on Windows (for gdk-pixbuf, gdk and gtk)
337     LIBTOOL_EXPORT_OPTIONS=
338 fi
339 AC_SUBST(LIBTOOL_EXPORT_OPTIONS)
340
341 dnl ******************************************************
342 dnl * See whether to include shared library dependencies *
343 dnl ******************************************************
344
345 AC_ARG_ENABLE(explicit-deps, 
346               [AC_HELP_STRING([--enable-explicit-deps=@<:@yes/no/auto@:>@],
347                               [use explicit dependencies in .pc files [default=auto]])],,
348               [enable_explicit_deps=auto])
349
350 AC_MSG_CHECKING([Whether to write dependencies into .pc files])
351 case $enable_explicit_deps in
352   auto)
353     deplib_check_method=`(./libtool --config; echo eval echo \\$deplib_check_method) | sh`
354     if test "X$deplib_check_method" = Xnone || test "x$enable_static" = xyes ; then
355       enable_explicit_deps=yes  
356     else
357       enable_explicit_deps=no  
358     fi
359   ;;
360   yes|no) 
361   ;;
362   *) AC_MSG_ERROR([Value given to --enable-explicit-deps must be one of yes, no or auto])
363   ;;
364 esac
365 AC_MSG_RESULT($enable_explicit_deps)
366
367 AM_CONDITIONAL(DISABLE_EXPLICIT_DEPS, test $enable_explicit_deps = no)
368
369 # define a MAINT-like variable REBUILD which is set if Perl
370 # and awk are found, so autogenerated sources can be rebuilt
371
372 AC_PATH_PROGS(PERL, perl5 perl)
373
374 # We would like indent, but don't require it.
375 AC_CHECK_PROG(INDENT, indent, indent)
376
377 REBUILD=\#
378 if test "x$enable_rebuilds" = "xyes" && \
379      test -n "$PERL" && \
380      $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 ; then
381   REBUILD=
382 fi
383 AC_SUBST(REBUILD)
384
385 AC_CHECK_FUNCS(lstat mkstemp flockfile)
386
387 # sigsetjmp is a macro on some platforms, so AC_CHECK_FUNCS is not reliable
388 AC_MSG_CHECKING(for sigsetjmp)
389 AC_TRY_LINK([#include <setjmp.h>], [
390 sigjmp_buf env;
391 sigsetjmp(env, 0);
392 ], gtk_ok=yes, gtk_ok=no)
393 AC_MSG_RESULT($gtk_ok)
394 if test "$gtk_ok" = "yes"; then
395   AC_DEFINE(HAVE_SIGSETJMP)
396 fi
397
398 # i18n stuff
399 # TRANSLATORS:  Please note that gtk+ has both po/ and po-properties/
400 # directories.  If you add a new language to ALL_LINGUAS, please make
401 # sure that both po/ and po-properties/ have .po files that correspond
402 # to your language.  If you only add one to po/, the build will break
403 # in po-properties/.
404 ALL_LINGUAS="af am ar az be bg bn br ca cs cy da de el en_CA en_GB es et eu fa fi fr ga gl he hi hr hu ia id it ja ko li lt lv mi mk ml mn ms ne nl nn no pl pt pt_BR ro ru sk sl sq sr sr@ije sr@Latn sv ta th tr uk uz uz@Latn vi wa yi zh_CN zh_TW"
405 AM_GLIB_GNU_GETTEXT
406 LIBS="$LIBS $INTLLIBS"
407 AC_OUTPUT_COMMANDS([case "$CONFIG_FILES" in *po-properties/Makefile.in*)
408         sed -e "/POTFILES =/r po-properties/POTFILES" po-properties/Makefile.in > po-properties/Makefile
409       esac])
410
411 AM_GLIB_DEFINE_LOCALEDIR(GTK_LOCALEDIR)
412
413 dnl The DU4 header files don't provide library prototypes unless 
414 dnl -std1 is given to the native cc.
415 AC_MSG_CHECKING([for extra flags to get ANSI library prototypes])
416
417 gtk_save_LIBS=$LIBS
418 LIBS="$LIBS -lm"
419 AC_TRY_RUN([#include <math.h>
420              int main (void) { return (log(1) != log(1.)); }],
421      AC_MSG_RESULT(none needed),
422      gtk_save_CFLAGS="$CFLAGS"
423      CFLAGS="$CFLAGS -std1"
424      AC_TRY_RUN([#include <math.h>
425                  int main (void) { return (log(1) != log(1.)); }],
426          AC_MSG_RESULT(-std1),
427          AC_MSG_RESULT()
428          CFLAGS="$gtk_save_CFLAGS"
429          AC_MSG_WARN(
430                 [No ANSI prototypes found in library. (-std1 didn't work.)]),
431          true
432      ),
433      AC_MSG_RESULT(none needed)
434 )
435 LIBS=$gtk_save_LIBS
436
437 AC_MSG_CHECKING(for the BeOS)
438 case $host in
439   *-*-beos*)
440     AC_MSG_RESULT(yes)
441     MATH_LIB=
442   ;;
443   *)
444     AC_MSG_RESULT(no)
445   ;;
446 esac
447
448 dnl NeXTStep cc seems to need this
449 AC_MSG_CHECKING([for extra flags for POSIX compliance])
450 AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
451   AC_MSG_RESULT(none needed),
452   gtk_save_CFLAGS="$CFLAGS"
453   CFLAGS="$CFLAGS -posix"
454   AC_TRY_COMPILE([#include <dirent.h>], [DIR *dir;],
455     AC_MSG_RESULT(-posix),
456     AC_MSG_RESULT()
457     CFLAGS="$gtk_save_CFLAGS"
458     AC_MSG_WARN([Could not determine POSIX flag. (-posix didn't work.)])))
459
460 #
461 # Run AM_PATH_GLIB_2_0 to make sure that GLib is installed and working
462
463
464 GLIB_PACKAGES="gobject-2.0 gmodule-2.0"
465
466 AM_PATH_GLIB_2_0(glib_required_version, :,
467   AC_MSG_ERROR([
468 *** GLIB glib_required_version or better is required. The latest version of 
469 *** GLIB is always available from ftp://ftp.gtk.org/pub/gtk/.]),
470   gobject gmodule gthread)
471
472 dnl
473 dnl Check for bind_textdomain_codeset, including -lintl if GLib brings it in.
474 dnl
475 gtk_save_LIBS=$LIBS
476 LIBS="$LIBS $GLIB_LIBS"
477 AC_CHECK_FUNCS(bind_textdomain_codeset)
478 LIBS=$gtk_save_LIBS
479
480 AC_CHECK_HEADERS(pwd.h, AC_DEFINE(HAVE_PWD_H))
481 AC_CHECK_HEADERS(sys/time.h, AC_DEFINE(HAVE_SYS_TIME_H))
482 AC_CHECK_HEADERS(unistd.h, AC_DEFINE(HAVE_UNISTD_H))
483
484 if test "${with_ie55+set}" = set && test $with_ie55 != no; then
485   AC_MSG_CHECKING([for dimm.h])
486   saved_CFLAGS="$CFLAGS"
487   CFLAGS="$CFLAGS -idirafter $with_ie55/Include"
488   AC_TRY_COMPILE([/* The w32api imm.h clashes a bit with the IE5.5 dimm.h */
489 #ifdef __GNUC__
490 #define IMEMENUITEMINFOA hidden_IMEMENUITEMINFOA
491 #define IMEMENUITEMINFOW hidden_IMEMENUITEMINFOW
492 #endif
493 #include <windows.h>
494 #include <objbase.h>
495 #include <imm.h>
496 #ifdef __GNUC__
497 #undef IMEMENUITEMINFOA
498 #undef IMEMENUITEMINFOW
499 #endif
500 #include <dimm.h>
501 ],
502    [],
503    [AC_MSG_RESULT(yes)
504     AC_MSG_CHECKING([for IE55 uuid.lib])
505     if test -f $with_ie55/Lib/uuid.lib ; then
506       AC_MSG_RESULT(yes)
507       have_ie55=yes
508       AC_DEFINE(HAVE_DIMM_H)
509       IE55_UUID_LIB="$with_ie55/Lib/uuid.lib"
510       AC_SUBST(IE55_UUID_LIB)
511     else
512       AC_MSG_RESULT(no)
513       CFLAGS="$saved_CFLAGS"
514       have_ie55=no
515     fi
516     ],
517    [AC_MSG_RESULT(no)
518     CFLAGS="$saved_CFLAGS"
519     have_ie55=no])
520 fi
521 AM_CONDITIONAL(HAVE_IE55, test x$have_ie55 = xyes)
522
523 if test "${with_wintab+set}" = set && test $with_wintab != no; then
524   AC_MSG_CHECKING([for wintab.h])
525   saved_CFLAGS="$CFLAGS"
526   CFLAGS="$CFLAGS -I$with_wintab/include"
527   AC_TRY_COMPILE([#include <windows.h>
528 #include <wintab.h>], 
529    [],
530    [AC_MSG_RESULT(yes)
531     AC_MSG_CHECKING([for wntab32x.lib])
532     if test -f $with_wintab/lib/i386/wntab32x.lib ; then
533       AC_MSG_RESULT(yes)
534       have_wintab=yes
535       AC_DEFINE(HAVE_WINTAB)
536       WINTAB_LIB="$with_wintab/lib/i386/wntab32x.lib"
537       AC_SUBST(WINTAB_LIB)
538     else
539       AC_MSG_RESULT(no)
540       CFLAGS="$saved_cflags"
541       have_wintab=no
542     fi
543     ],
544    [AC_MSG_RESULT(no)
545     CFLAGS="$saved_cflags"
546     have_wintab=no])
547 fi
548 AM_CONDITIONAL(HAVE_WINTAB, test x$have_wintab = xyes)
549
550 saved_cflags="$CFLAGS"
551 saved_ldflags="$LDFLAGS"
552
553
554 # Checks for header files.
555 AC_HEADER_STDC
556
557 # Checks for typedefs, structures, and compiler characteristics.
558 AC_C_CONST
559
560 # Checks for library functions.
561 AC_TYPE_SIGNAL
562 AC_FUNC_MMAP
563
564 AC_CHECK_FUNCS(getresuid)
565 AC_TYPE_UID_T
566
567 # Check if <sys/select.h> needs to be included for fd_set
568 AC_MSG_CHECKING([for fd_set])
569 AC_TRY_COMPILE([#include <sys/types.h>],
570         [fd_set readMask, writeMask;], gtk_ok=yes, gtk_ok=no)
571 if test $gtk_ok = yes; then
572     AC_MSG_RESULT([yes, found in sys/types.h])
573 else
574     AC_HEADER_EGREP(fd_mask, sys/select.h, gtk_ok=yes)
575     if test $gtk_ok = yes; then
576         AC_DEFINE(HAVE_SYS_SELECT_H)
577         AC_MSG_RESULT([yes, found in sys/select.h])
578     else
579         AC_DEFINE(NO_FD_SET)
580         AC_MSG_RESULT(no)
581     fi
582 fi
583
584 # `widechar' tests for gdki18n.h
585 AC_MSG_CHECKING(for wchar.h)
586 AC_TRY_CPP([#include <wchar.h>], gdk_wchar_h=yes, gdk_wchar_h=no)
587 if test $gdk_wchar_h = yes; then
588    AC_DEFINE(HAVE_WCHAR_H,1,[Have wchar.h include file])
589 fi
590 AC_MSG_RESULT($gdk_wchar_h)
591
592 # Check for wctype.h (for iswalnum)
593 AC_MSG_CHECKING(for wctype.h)
594 AC_TRY_CPP([#include <wctype.h>], gdk_wctype_h=yes, gdk_wctype_h=no)
595 if test $gdk_wctype_h = yes; then
596    AC_DEFINE(HAVE_WCTYPE_H,1,[Have wctype.h include file])
597 fi
598 AC_MSG_RESULT($gdk_wctype_h)
599
600 # in Solaris 2.5, `iswalnum' is in -lw
601 GDK_WLIBS=
602 AC_CHECK_FUNC(iswalnum,,[AC_CHECK_LIB(w,iswalnum,GDK_WLIBS=-lw)])
603
604 oLIBS="$LIBS"
605 LIBS="$LIBS $GDK_WLIBS"
606 # The following is necessary for Linux libc-5.4.38
607 AC_MSG_CHECKING(if iswalnum() and friends are properly defined)
608 AC_TRY_LINK([#include <stdlib.h>],[
609 #if (defined(HAVE_WCTYPE_H) || defined(HAVE_WCHAR_H))
610 #  ifdef HAVE_WCTYPE_H
611 #    include <wctype.h>
612 #  else
613 #    ifdef HAVE_WCHAR_H
614 #      include <wchar.h>
615 #    endif
616 #  endif
617 #else
618 #  define iswalnum(c) ((wchar_t)(c) <= 0xFF && isalnum(c))
619 #endif
620 iswalnum((wchar_t) 0);
621 ], gdk_working_wctype=yes, gdk_working_wctype=no)
622 LIBS="$oLIBS"
623
624 if test $gdk_working_wctype = no; then
625    AC_DEFINE(HAVE_BROKEN_WCTYPE,1,[Is the wctype implementation broken])
626    GDK_WLIBS=
627 fi
628 AC_MSG_RESULT($gdk_working_wctype)
629 AC_SUBST(GDK_WLIBS)
630
631
632 ##################################################
633 # Checks for gdk-pixbuf
634 ##################################################
635
636 dnl ********************************************************
637 dnl * See whether we need to load our modules as .la files *
638 dnl ********************************************************
639
640 use_la_modules=false
641 case $host in
642   *-aix*) use_la_modules=true
643 esac
644
645 if $use_la_modules ; then
646    AC_DEFINE(USE_LA_MODULES, 1, [Whether to load modules via .la files rather than directly])
647 fi
648
649
650 AC_MSG_CHECKING(whether to build gmodulized gdk-pixbuf)
651
652 AC_ARG_ENABLE(modules,
653               [AC_HELP_STRING([--disable-modules],
654                               [disable dynamic module loading])])
655
656 dynworks=false
657 deps=
658 if test x$enable_modules = xno; then
659     AC_MSG_RESULT(no)
660 else
661     AC_MSG_RESULT(yes)
662     AC_MSG_CHECKING(whether dynamic modules work)
663     ## for loop is to strip newline 
664     tmp=`$PKG_CONFIG --variable=gmodule_supported gmodule-2.0`
665     for I in $tmp; do
666         dynworks=$I
667     done
668
669     dnl Now we check to see if our libtool supports shared lib deps
670     dnl (in a rather ugly way even)
671     if $dynworks; then
672         pixbuf_libtool_config="${CONFIG_SHELL-/bin/sh} ./libtool --config"
673         pixbuf_deplibs_check=`$pixbuf_libtool_config | \
674             grep '^[[a-z_]]*check[[a-z_]]*_method=[['\''"]]' | \
675             sed 's/.*[['\''"]]\(.*\)[['\''"]]$/\1/'`
676         if test "x$pixbuf_deplibs_check" = "xnone" || \
677            test "x$pixbuf_deplibs_check" = "xunknown" || \
678            test "x$pixbuf_deplibs_check" = "x"; then
679             dynworks=false
680         fi
681     fi
682
683     if $dynworks; then
684         AC_DEFINE(USE_GMODULE)
685         AC_MSG_RESULT(yes)
686     else
687         AC_MSG_RESULT(no)
688     fi
689 fi
690
691 dnl We allow people to disable image loaders explicitely, but if they don't we error
692 dnl out so that people don't accidentally build without them.
693
694 AC_ARG_WITH(libpng,
695             [AC_HELP_STRING([--without-libpng],
696                             [disable PNG loader for gdk-pixbuf])])
697 AC_ARG_WITH(libjpeg,
698             [AC_HELP_STRING([--without-libjpeg],
699                             [disable JPEG loader for gdk-pixbuf])])
700 AC_ARG_WITH(libtiff,
701             [AC_HELP_STRING([--without-libtiff],
702                             [disable TIFF loader for gdk-pixbuf])])
703
704 dnl Test for libtiff
705   if test x$with_libtiff != xno && test -z "$LIBTIFF"; then
706     AC_CHECK_LIB(tiff, TIFFReadScanline,
707       [AC_CHECK_HEADER(tiffio.h,
708         TIFF='tiff'; LIBTIFF='-ltiff',
709         AC_MSG_WARN(*** TIFF loader will not be built (TIFF header files not found) ***))],
710       [AC_CHECK_LIB(tiff, TIFFWriteScanline,
711         [AC_CHECK_HEADER(tiffio.h,
712           TIFF='tiff'; LIBTIFF='-ltiff -ljpeg -lz',
713           AC_MSG_WARN(*** TIFF loader will not be built (TIFF header files not found) ***))],
714         [AC_CHECK_LIB(tiff34, TIFFFlushData,
715           [AC_CHECK_HEADER(tiffio.h,
716             TIFF='tiff'; LIBTIFF='-ltiff34 -ljpeg -lz',
717             AC_MSG_WARN(*** TIFF loader will not be built (TIFF header files not found) ***))],
718         AC_MSG_WARN(*** TIFF plug-in will not be built (TIFF library not found) ***), -ljpeg -lz -lm)], -ljpeg -lz -lm)], -lm)
719   fi
720
721   if test x$with_libtiff != xno && test -z "$LIBTIFF"; then
722      AC_MSG_ERROR([
723 *** Checks for TIFF loader failed. You can build without it by passing 
724 *** --without-libtiff to configure but some programs using GTK+ may
725 *** not work properly])
726   fi
727
728 dnl Test for libjpeg
729   if test x$with_libjpeg != xno && test -z "$LIBJPEG"; then
730     AC_CHECK_LIB(jpeg, jpeg_destroy_decompress,
731       jpeg_ok=yes,
732       jpeg_ok=no
733       AC_MSG_WARN(*** JPEG loader will not be built (JPEG library not found) ***))
734     if test "$jpeg_ok" = yes; then
735       AC_MSG_CHECKING([for jpeglib.h])
736       AC_TRY_CPP(
737 [#include <stdio.h>
738 #undef PACKAGE
739 #undef VERSION
740 #undef HAVE_STDLIB_H
741 #include <jpeglib.h>],
742         jpeg_ok=yes,
743         jpeg_ok=no)
744       AC_MSG_RESULT($jpeg_ok)
745       if test "$jpeg_ok" = yes; then
746         LIBJPEG='-ljpeg'
747         AC_CHECK_LIB(jpeg, jpeg_simple_progression,     
748           AC_DEFINE(HAVE_PROGRESSIVE_JPEG),
749           AC_MSG_WARN(JPEG library does not support progressive saving.))
750       else
751           AC_MSG_WARN(*** JPEG loader will not be built (JPEG header file not found) ***)
752       fi
753     fi
754   fi
755
756   if test x$with_libjpeg != xno && test -z "$LIBJPEG"; then
757      AC_MSG_ERROR([
758 *** Checks for JPEG loader failed. You can build without it by passing 
759 *** --without-libjpeg to configure but some programs using GTK+ may
760 *** not work properly])
761   fi
762
763 dnl Test for libpng
764   if test x$with_libpng != xno && test -z "$LIBPNG"; then
765     AC_MSG_CHECKING(for libpng12)
766     if $PKG_CONFIG --exists libpng12 ; then
767         AC_MSG_RESULT(yes)
768         PNG='png'
769         PNG_DEP_CFLAGS_PACKAGES=libpng12
770         LIBPNG=`$PKG_CONFIG --libs libpng12`
771     else
772       AC_MSG_RESULT(no)
773       AC_CHECK_LIB(png, png_read_info,
774         [AC_CHECK_HEADER(png.h,
775           png_ok=yes,
776           png_ok=no)],
777         AC_MSG_WARN(*** PNG loader will not be built (PNG library not found) ***), -lz -lm)
778       if test "$png_ok" = yes; then
779         AC_MSG_CHECKING([for png_structp in png.h])
780         AC_TRY_COMPILE([#include <png.h>],
781           [png_structp pp; png_infop info; png_colorp cmap; png_create_read_struct;],
782           png_ok=yes,
783           png_ok=no)
784         AC_MSG_RESULT($png_ok)
785         if test "$png_ok" = yes; then
786           PNG='png'; LIBPNG='-lpng -lz'
787         else
788           AC_MSG_WARN(*** PNG loader will not be built (PNG library is too old) ***)
789         fi
790       else
791        AC_MSG_WARN(*** PNG loader will not be built (PNG header file not found) ***)
792       fi
793     fi
794   fi
795
796   if test x$with_libpng != xno && test -z "$LIBPNG"; then
797      AC_MSG_ERROR([
798 *** Checks for PNG loader failed. You can build without it by passing 
799 *** --without-libpng to configure but many programs using GTK+ will
800 *** not work properly. The PNG loader is also needed if you are compiling
801 *** from CVS.])
802   fi
803
804 AC_SUBST(LIBTIFF)
805 AC_SUBST(LIBJPEG)
806 AC_SUBST(LIBPNG)
807
808 AM_CONDITIONAL(BUILD_DYNAMIC_MODULES, $dynworks)
809
810 #
811 # Allow building some or all gdk-pixbuf loaders included
812 #
813 AC_MSG_CHECKING(pixbuf loaders to build)
814
815 dnl due to an autoconf bug, commas in the first arg to
816 dnl AC_HELP_STRING cause problems.
817 dnl AC_HELP_STRING([--with-included-loaders=LOADER1 LOADER2 ...],
818 dnl                [build the specified loaders into gdk-pixbuf (only used if module loading disabled)])
819 AC_ARG_WITH(included_loaders,
820 [  --with-included-loaders=LOADER1,LOADER2,...
821                           build the specified loaders into gdk-pixbuf (only
822                           used if module loading disabled)])
823
824 if $dynworks; then 
825         :
826 else
827    ## if the option was specified, leave it; otherwise disable included loaders
828    if test x$with_included_loaders = xno; then
829            with_included_loaders=yes
830    fi
831 fi
832
833 all_loaders="png,bmp,wbmp,gif,ico,ani,jpeg,pnm,ras,tiff,xpm,tga,pcx"
834 included_loaders=""
835 # If no loaders specified, include all
836 if test "x$with_included_loaders" = xyes ; then
837   included_loaders="$all_loaders"
838 else
839   included_loaders="$with_included_loaders"
840 fi
841
842 AC_MSG_RESULT($included_loaders)
843
844 INCLUDED_LOADER_OBJ=
845 INCLUDED_LOADER_DEFINE=
846
847 IFS="${IFS=     }"; gtk_save_ifs="$IFS"; IFS=","
848 for loader in $included_loaders; do
849  if echo "$all_loaders" | egrep "(^|,)$loader(\$|,)" > /dev/null; then
850    :
851  else
852    AC_MSG_ERROR([the specified loader $loader does not exist])
853  fi
854
855  INCLUDED_LOADER_OBJ="$INCLUDED_LOADER_OBJ libpixbufloader-static-$loader.la"
856  INCLUDED_LOADER_DEFINE="$INCLUDED_LOADER_DEFINE -DINCLUDE_$loader"
857 done
858 IFS="$gtk_save_ifs"
859 AC_SUBST(INCLUDED_LOADER_OBJ)
860 AC_SUBST(INCLUDED_LOADER_DEFINE)
861
862 AC_HEADER_SYS_WAIT
863
864 AC_TYPE_SIGNAL
865
866 AM_CONDITIONAL(HAVE_TIFF, test "x$LIBTIFF" != x)
867 AM_CONDITIONAL(HAVE_PNG, test "x$LIBPNG" != x)
868 AM_CONDITIONAL(HAVE_JPEG, test "x$LIBJPEG" != x)
869
870 if $dynworks ; then
871   STATIC_LIB_DEPS=
872   if echo "$included_loaders" | egrep '(^|,)tiff($|,)' > /dev/null; then
873     STATIC_LIB_DEPS="$STATIC_LIB_DEPS $LIBTIFF"
874   fi
875   if echo "$included_loaders" | egrep '(^|,)jpeg($|,)' > /dev/null; then
876     STATIC_LIB_DEPS="$STATIC_LIB_DEPS $LIBJPEG"
877   fi
878   if echo "$included_loaders" | egrep '(^|,)png($|,)' > /dev/null; then
879     STATIC_LIB_DEPS="$STATIC_LIB_DEPS $LIBPNG"
880   fi
881 else
882   STATIC_LIB_DEPS="$LIBTIFF $LIBJPEG $LIBPNG"
883 fi
884
885 # Checks to see if we should compile in MMX support (there will be
886 # a runtime test when the code is actually run to see if it should
887 # be used - this just checks if we can compile it.)
888 #
889 # This code is partially taken from Mesa
890 #
891 AC_MSG_CHECKING(for x86 platform)
892 case $host_cpu in
893   i386|i486|i586|i686|i786|k6|k7)
894         use_x86_asm=yes
895         ;;
896    *)
897         use_x86_asm=no
898 esac
899 AC_MSG_RESULT($use_x86_asm)
900
901 use_mmx_asm=no
902 if test $use_x86_asm = yes; then
903     save_ac_ext=$ac_ext
904     ac_ext=S
905     
906     AC_MSG_CHECKING(compiler support for MMX)
907     cp $srcdir/gdk-pixbuf/pixops/scale_line_22_33_mmx.S conftest.S
908     if AC_TRY_EVAL(ac_compile); then
909         use_mmx_asm=yes
910     fi
911
912     rm -rf conftest*
913
914     ac_ext=$save_ac_ext
915     if test $use_mmx_asm = yes; then
916       AC_DEFINE(USE_MMX)
917       AC_MSG_RESULT(yes)
918     else
919       AC_MSG_RESULT(no)
920     fi
921 fi
922
923 AM_CONDITIONAL(USE_MMX, test x$use_mmx_asm = xyes)
924
925 REBUILD_PNGS=
926 if test -z "$LIBPNG"; then
927   REBUILD_PNGS=#
928 fi
929
930 dnl Look for a host system's gdk-pixbuf-csource if we are cross-compiling
931
932 AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes)
933
934 if test $cross_compiling = yes; then
935   AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no)
936   if test x$GDK_PIXBUF_CSOURCE = xno; then
937     REBUILD_PNGS=#
938   fi
939 fi
940
941 if test ! -f $srcdir/gtk/stock-icons/gtkstockpixbufs.h && 
942    test "x$REBUILD_PNGS" = "x#" ; then
943      AC_MSG_ERROR([
944 *** gtkstockpixbufs.h is not in the tree, and cannot be built
945 *** because you don't have libpng, or (when cross-compiling) you 
946 *** don't have a prebuilt gdk-pixbuf-csource on the host system.])
947 fi
948
949 AC_SUBST(REBUILD_PNGS)
950
951 GDK_PIXBUF_PACKAGES="gmodule-2.0 gobject-2.0"
952 GDK_PIXBUF_EXTRA_LIBS="$STATIC_LIB_DEPS $MATH_LIB"
953 GDK_PIXBUF_EXTRA_CFLAGS= 
954 GDK_PIXBUF_DEP_LIBS="`$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES` $GDK_PIXBUF_EXTRA_LIBS"
955 GDK_PIXBUF_DEP_CFLAGS="`$PKG_CONFIG --cflags  gthread-2.0 $GDK_PIXBUF_PACKAGES $PNG_DEP_CFLAGS_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS"
956
957 AC_SUBST(GDK_PIXBUF_PACKAGES)
958 AC_SUBST(GDK_PIXBUF_EXTRA_LIBS)
959 AC_SUBST(GDK_PIXBUF_EXTRA_CFLAGS)
960 AC_SUBST(GDK_PIXBUF_DEP_LIBS)
961 AC_SUBST(GDK_PIXBUF_DEP_CFLAGS)
962
963
964 ########################################
965 # Windowing system checks
966 ########################################
967
968 GDK_EXTRA_LIBS=$GDK_WLIBS
969 GDK_EXTRA_CFLAGS= 
970 GTK_DEP_LIBS_FOR_X=
971
972 FREETYPE_LIBS=
973 FREETYPE_CFLAGS=
974 if test "x$gdktarget" = "xlinux-fb" || test "x$gdktarget" = "xx11" ; then
975   #
976   # Checks for FreeType
977   #
978   have_freetype=false
979   AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, no)
980   if test "x$FREETYPE_CONFIG" != "xno" ; then
981     FREETYPE_CFLAGS=`$FREETYPE_CONFIG --cflags`
982     FREETYPE_LIBS=`$FREETYPE_CONFIG --libs`
983
984     gtk_save_LIBS="$LIBS"
985     LIBS="$FREETYPE_LIBS $LIBS"
986     AC_TRY_LINK_FUNC(FT_New_Face, have_freetype=true,:)
987     LIBS="$gtk_save_LIBS"
988
989     if $have_freetype ; then
990       gtk_save_cppflags="$CPPFLAGS"
991       CPPFLAGS="$CPPFLAGS $FREETYPE_CFLAGS"
992
993       AC_MSG_CHECKING([For sufficiently new FreeType (at least 2.0.1)])
994       AC_TRY_COMPILE([
995 #include <ft2build.h>
996 #include FT_FREETYPE_H
997 #include FT_ERRORS_H
998     ],
999                      [(void)1;],:,have_freetype=false)
1000       if $have_freetype ; then
1001         AC_MSG_RESULT(yes)
1002       else
1003         AC_MSG_RESULT(no)
1004       fi
1005
1006       CPPFLAGS="$gtk_save_cppflags"
1007     fi
1008   fi
1009   AC_SUBST(FREETYPE_LIBS)
1010   AC_SUBST(FREETYPE_CFLAGS)
1011 fi
1012
1013 if test "x$gdktarget" = "xx11"; then
1014   # We start off with the libraries from Pango
1015
1016   ## be sure we also have Pango built with Xft2 support
1017   if $PKG_CONFIG --exists 'pangoxft >= 1.2.0' ; then
1018     if $have_freetype ; then
1019       :
1020     else
1021       AC_MSG_ERROR([Xft Pango backend found but did not find freetype libraries])
1022     fi
1023   else
1024     AC_MSG_ERROR([Pango 1.2.0 and Xft backend is required for x11 target])
1025   fi
1026
1027   if $PKG_CONFIG --exists xft ; then : ; else
1028     AC_MSG_ERROR([Xft version 2 is required for x11 target])
1029   fi
1030
1031   #
1032   # If Pango included the shared library dependencies from X11 in
1033   # the pkg-config output, then we use that (to avoid duplicates).
1034   # but if they were omitted to avoid binary compatibility problems,
1035   # then we need to repeat the checks.
1036   #
1037   x_libs="`$PKG_CONFIG --libs pangoxft`"
1038   case "$x_libs" in
1039     *-lX11*) pango_omitted_x_deps=no ;;
1040     *)       pango_omitted_x_deps=yes ;;
1041   esac
1042
1043   x_cflags="`$PKG_CONFIG --cflags pangoxft`"
1044   x_extra_libs=
1045
1046   AC_PATH_XTRA
1047   if test x$no_x = xyes ; then
1048     AC_MSG_ERROR([X development libraries not found])
1049   fi
1050   
1051   if test $pango_omitted_x_deps = yes ; then
1052     # Old versions of Xft didn't necessarily include -lX11 in the output
1053     x_libs="`pkg-config --libs xft` -lX11 $X_EXTRA_LIBS"
1054   fi            
1055
1056   ## Strip the .la files
1057  
1058   x_libs_for_checks=""
1059   for I in $x_libs ; do
1060     case $I in 
1061       *.la) ;;
1062       *) x_libs_for_checks="$x_libs_for_checks $I" ;;
1063     esac
1064   done
1065
1066   # Sanity check for the X11 library
1067   AC_CHECK_LIB(X11, XOpenDisplay, :,
1068             AC_MSG_ERROR([*** libX11 not found. Check 'config.log' for more details.]),
1069             $x_libs_for_checks)
1070
1071   if test "x$enable_shm" = "xyes"; then
1072     # Check for the Xext library (needed for XShm extention)
1073     AC_CHECK_LIB(Xext, XShmAttach,
1074         [GTK_ADD_LIB(x_extra_libs,Xext)],
1075         # On AIX, it is in XextSam instead, but we still need -lXext
1076         [AC_CHECK_LIB(XextSam, XShmAttach, 
1077             [GTK_ADD_LIB(x_extra_libs,Xext)
1078              GTK_ADD_LIB(x_extra_libs,XextSam)
1079             ], , -lXext $x_libs_for_checks)],
1080         $x_libs_for_checks)
1081   fi
1082
1083   GDK_PIXBUF_XLIB_EXTRA_CFLAGS="$x_cflags"
1084   # Don't ever pull in the pangoxft libraries for gdk-pixbuf-x11
1085   GDK_PIXBUF_XLIB_EXTRA_LIBS="$X_LIBS -lX11 $x_extra_libs $X_EXTRA_LIBS"
1086
1087   # GTK+ uses some X calls, so needs to link against X directly
1088   if test $enable_explicit_deps != yes ; then
1089     GTK_DEP_LIBS_FOR_X="$X_LIBS -lX11 $X_EXTRA_LIBS"
1090   fi
1091
1092   # Check for Xinerama extension (Solaris impl or Xfree impl)
1093
1094   gtk_save_cppflags="$CPPFLAGS"
1095   CPPFLAGS="$CPPFLAGS $x_cflags"
1096
1097   case "$host" in
1098       *-*-solaris*)
1099           # Check for solaris
1100           use_solaris_xinerama=yes
1101           AC_CHECK_LIB(Xext, XineramaGetInfo,
1102                         use_solaris_xinerama=yes, use_solaris_xinerama=no)
1103           if test "x$use_solaris_xinerama" = "xyes"; then
1104               AC_CHECK_HEADER(X11/extensions/xinerama.h,
1105                 [GTK_ADD_LIB(x_extra_libs,Xext)
1106                 AC_DEFINE(HAVE_SOLARIS_XINERAMA)
1107                 AC_DEFINE(HAVE_XINERAMA)], use_solaris_xinerama=no, -lXext $x_libs_for_checks)
1108           fi    
1109           AC_MSG_CHECKING(for Xinerama support on Solaris)
1110           AC_MSG_RESULT($use_solaris_xinerama);
1111           ;;
1112       *)
1113           # Check for XFree
1114           use_xfree_xinerama=yes
1115           AC_CHECK_LIB(Xinerama, XineramaQueryExtension,
1116               [AC_CHECK_HEADER(X11/extensions/Xinerama.h, 
1117                   [GTK_ADD_LIB(x_extra_libs,Xext)
1118                   GTK_ADD_LIB(x_extra_libs,Xinerama)
1119                   AC_DEFINE(HAVE_XFREE_XINERAMA)
1120                   AC_DEFINE(HAVE_XINERAMA)], 
1121                   use_xfree_xinerama=no,
1122                   [#include <X11/Xlib.h>])],
1123               use_xfree_xinerama=no, -lXext $x_libs_for_checks)
1124           AC_MSG_CHECKING(for Xinerama support on XFree86)
1125           AC_MSG_RESULT($use_xfree_xinerama);       
1126           ;;
1127   esac
1128
1129   CPPFLAGS="$gtk_save_cppflags"
1130
1131   # Check for shaped window extension
1132
1133   AC_CHECK_LIB(Xext, XShapeCombineMask,
1134       [GTK_ADD_LIB(x_extra_libs,Xext)
1135        AC_DEFINE(HAVE_SHAPE_EXT)],
1136       ,
1137       $x_libs_for_checks)
1138
1139   # Check for XConvertCase (X11R6 specific)
1140
1141   AC_CHECK_LIB(X11, XConvertCase,
1142       AC_DEFINE(HAVE_XCONVERTCASE),
1143       ,
1144       $x_libs_for_checks)
1145
1146   # Generic X11R6 check needed for XIM support; we could
1147   # probably use this to replace the above, but we'll
1148   # leave the separate XConvertCase check for clarity
1149
1150   have_x11r6=false
1151   AC_CHECK_LIB(X11, XAddConnectionWatch,
1152       have_x11r6=true,
1153       ,
1154       $x_libs_for_checks)
1155
1156   if $have_x11r6; then
1157     AC_DEFINE(HAVE_X11R6,1,[Define if we have X11R6])
1158   fi
1159   AM_CONDITIONAL(HAVE_X11R6, $have_x11r6)
1160
1161   # Check for XKB support.
1162
1163   if test "x$enable_xkb" = "xyes"; then
1164         AC_MSG_WARN(XKB support explicitly enabled)
1165         AC_DEFINE(HAVE_XKB)
1166   elif test "x$enable_xkb" = "xmaybe"; then
1167         AC_CHECK_LIB(X11, XkbQueryExtension,
1168                      AC_DEFINE(HAVE_XKB),
1169                      ,
1170                      $x_libs_for_checks)
1171   else
1172         AC_MSG_WARN(XKB support explicitly disabled)
1173   fi
1174
1175   x_cflags="$X_CFLAGS"
1176   x_ldflags="$X_LDFLAGS"
1177
1178   # set up things for XInput
1179
1180   if test "x$with_xinput" = "xxfree" || test "x$with_xinput" = "xyes"; then
1181     AC_DEFINE(XINPUT_XFREE)
1182     GTK_ADD_LIB(x_extra_libs, Xi)
1183   else
1184     AC_DEFINE(XINPUT_NONE)
1185   fi
1186
1187   AM_CONDITIONAL(XINPUT_XFREE, test x$with_xinput = xxfree || test x$with_xinput = xyes)
1188
1189   # Check for the RANDR extension
1190
1191   AC_CHECK_LIB(Xrandr, XRRUpdateConfiguration,
1192       [AC_CHECK_HEADER(X11/extensions/Xrandr.h,
1193           # RANDR requires RENDER
1194           [GTK_ADD_LIB(x_extra_libs, Xrender)
1195           GTK_ADD_LIB(x_extra_libs, Xrandr)
1196           AC_DEFINE(HAVE_RANDR, 1, Have the Xrandr extension library)],
1197           :, [#include <X11/Xlib.h>])], : ,
1198        $X_LIBS -lXrandr -lXrender -lX11 $X_EXTRA_LIBS)
1199
1200   # Checks for Xcursor library
1201   
1202   have_xcursor=false
1203   PKG_CHECK_MODULES(XCURSOR, xcursor, have_xcursor=true, :)
1204
1205   if $have_xcursor ; then
1206     AC_DEFINE(HAVE_XCURSOR, 1, Have the Xcursor library)
1207     GDK_EXTRA_CFLAGS="`$PKG_CONFIG --cflags xcursor` $GDK_EXTRA_CFLAGS"
1208     GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xcursor` $GDK_EXTRA_LIBS"
1209   fi
1210     
1211   # Xshm checks
1212
1213   if test "x$enable_shm" = "xyes"; then
1214     # Check for shared memory
1215     AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc=yes)
1216     AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm=yes)
1217
1218     # Check for the X shared memory extension header file
1219     have_xshm=no 
1220     AC_MSG_CHECKING(X11/extensions/XShm.h)
1221     if test "x$no_xext_lib" = "xyes"; then
1222       :
1223     else
1224       gtk_save_CFLAGS="$CFLAGS"
1225       CFLAGS="$CFLAGS $x_cflags"
1226       AC_TRY_COMPILE([
1227 #include <stdlib.h>
1228 #include <sys/types.h>
1229 #include <sys/ipc.h>
1230 #include <sys/shm.h>
1231 #include <X11/Xlib.h>
1232 #include <X11/Xutil.h>
1233 #include <X11/extensions/XShm.h>
1234 ], [XShmSegmentInfo *x_shm_info;], have_xshm=yes)
1235       CFLAGS="$gtk_save_CFLAGS"
1236     fi
1237     AC_MSG_RESULT($have_xshm)
1238     if test $have_xshm = yes ; then
1239       AC_DEFINE(HAVE_XSHM_H)
1240     fi
1241   fi
1242
1243   GDK_EXTRA_CFLAGS=
1244   if test $pango_omitted_x_deps = yes ; then
1245     GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs $x_libs $GDK_EXTRA_LIBS"
1246   else
1247     GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs $GDK_EXTRA_LIBS"
1248   fi
1249
1250   AM_CONDITIONAL(USE_X11, true)
1251 else
1252   AM_CONDITIONAL(XINPUT_XFREE, false)
1253   AM_CONDITIONAL(USE_X11, false)
1254   AM_CONDITIONAL(HAVE_X11R6, false)
1255 fi
1256
1257 if test "x$gdktarget" = "xwin32"; then
1258   # We start off with the libraries from Pango
1259
1260   if test x$have_wintab = xyes; then
1261     GDK_WIN32_EXTRA_CFLAGS="-I $with_wintab/include"
1262     AC_SUBST(GDK_WIN32_EXTRA_CFLAGS)
1263   fi
1264
1265   GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -user32 -limm32 -lshell32 -lole32 -luuid"
1266   AM_CONDITIONAL(USE_WIN32, true)
1267 else
1268   AM_CONDITIONAL(USE_WIN32, false)
1269 fi
1270
1271 GDK_PIXBUF_XLIB_PACKAGES=
1272 GDK_PIXBUF_XLIB_DEP_LIBS="`$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PIXBUF_XLIB_PACKAGES` $GDK_PIXBUF_XLIB_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
1273 GDK_PIXBUF_XLIB_DEP_CFLAGS="`$PKG_CONFIG --cflags  gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PIXBUF_XLIB_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_PIXBUF_XLIB_EXTRA_CFLAGS"
1274
1275 AC_SUBST(GDK_PIXBUF_XLIB_PACKAGES)
1276 AC_SUBST(GDK_PIXBUF_XLIB_EXTRA_LIBS)
1277 AC_SUBST(GDK_PIXBUF_XLIB_EXTRA_CFLAGS)
1278 AC_SUBST(GDK_PIXBUF_XLIB_DEP_LIBS)
1279 AC_SUBST(GDK_PIXBUF_XLIB_DEP_CFLAGS)
1280
1281 if test "x$gdktarget" = "xlinux-fb"; then
1282   if $have_freetype ; then
1283     :
1284   else
1285     AC_MSG_ERROR([Using linux-fb backend but freetype was not found])
1286   fi
1287
1288   ft2_libs="`$PKG_CONFIG --libs pangoft2`"
1289   case "$ft2_libs" in
1290     *-lfreetype*) pango_omitted_ft2_deps=no ;;
1291     *)            pango_omitted_ft2_deps=yes ;;
1292   esac
1293
1294   CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
1295
1296   if test x$enable_shadowfb = xyes ; then
1297     AC_DEFINE(ENABLE_SHADOW_FB)
1298   fi
1299
1300   if test x$enable_fbmanager = xyes ; then
1301     AC_DEFINE(ENABLE_FB_MANAGER)
1302     AM_CONDITIONAL(ENABLE_FB_MANAGER, true)
1303   else
1304     AM_CONDITIONAL(ENABLE_FB_MANAGER, false)
1305   fi
1306   
1307   GDK_EXTRA_CFLAGS=""
1308   if test $pango_omitted_ft2_deps = yes ; then
1309     GDK_EXTRA_LIBS="$FREETYPE_LIBS $GDK_EXTRA_LIBS"
1310   fi
1311
1312   AM_CONDITIONAL(USE_LINUX_FB, true)
1313 else
1314   AM_CONDITIONAL(USE_LINUX_FB, false)
1315   AM_CONDITIONAL(ENABLE_FB_MANAGER, false)
1316 fi
1317
1318 #
1319 # Pick correct Pango packages to use
1320 #
1321
1322 if test "x$gdktarget" = "xx11"; then
1323         PANGO_PACKAGES=pangoxft
1324         
1325         # We no longer use pangox, but if we find it, we link to it 
1326         # for binary compatibility.
1327         if $PKG_CONFIG --exists pangox ; then
1328                 PANGO_PACKAGES="$PANGO_PACKAGES pangox"
1329         fi
1330 elif test "x$gdktarget" = "xwin32"; then
1331         PANGO_PACKAGES=pangowin32
1332 elif test "x$gdktarget" = "xlinux-fb"; then
1333         PANGO_PACKAGES=pangoft2
1334 else
1335         PANGO_PACKAGES=pango
1336 fi
1337
1338 # Check for Pango flags
1339
1340 AC_MSG_CHECKING(Pango flags)
1341 if $PKG_CONFIG --exists $PANGO_PACKAGES ; then
1342         PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_PACKAGES`
1343         PANGO_LIBS=`$PKG_CONFIG --libs $PANGO_PACKAGES`
1344
1345         AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
1346 else
1347         AC_MSG_ERROR([
1348 *** Pango not found. Pango is required to build GTK+.
1349 *** See http://www.pango.org for Pango information.
1350 *** For the framebuffer target, you will need to build 
1351 *** Pango with freetype support.
1352 ])
1353 fi
1354
1355 CFLAGS="$CFLAGS $PANGO_CFLAGS"
1356
1357 if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
1358         :
1359 else
1360         gtk_save_LIBS="$LIBS"
1361         LIBS="$PANGO_LIBS $LIBS"
1362         AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
1363 *** Can't link to Pango. Pango is required to build
1364 *** GTK+. For more information see http://www.pango.org]))
1365         LIBS="$gtk_save_LIBS"
1366 fi
1367
1368 CFLAGS="$saved_cflags"
1369 LDFLAGS="$saved_ldflags"
1370
1371 GDK_PACKAGES="$PANGO_PACKAGES"
1372 GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_LIBS"
1373 GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags  gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS"
1374
1375 #
1376 # If we aren't writing explicit dependencies, then don't put the extra libraries we need
1377 # into the pkg-config files
1378 #
1379 if test $enable_explicit_deps != yes ; then
1380   GDK_EXTRA_LIBS=
1381 fi
1382
1383 AC_SUBST(GDK_PACKAGES)
1384 AC_SUBST(GDK_EXTRA_LIBS)
1385 AC_SUBST(GDK_EXTRA_CFLAGS)
1386 AC_SUBST(GDK_DEP_LIBS)
1387 AC_SUBST(GDK_DEP_CFLAGS)
1388
1389
1390 ########################################
1391 # Check for Accessibility Toolkit flags
1392 ########################################
1393
1394 ATK_PACKAGES=atk
1395 AC_MSG_CHECKING(ATK flags)
1396 if $PKG_CONFIG --exists $ATK_PACKAGES ; then
1397         ATK_CFLAGS=`$PKG_CONFIG --cflags $ATK_PACKAGES`
1398         ATK_LIBS=`$PKG_CONFIG --libs $ATK_PACKAGES`
1399
1400         AC_MSG_RESULT($ATK_CFLAGS $ATK_LIBS)
1401 else
1402         AC_MSG_ERROR([
1403 *** Accessibility Toolkit not found. Accessibility Toolkit is required
1404 *** to build GTK+.
1405 ])
1406 fi
1407
1408 if $PKG_CONFIG --uninstalled $ATK_PACKAGES; then
1409         :
1410 else
1411         gtk_save_LIBS="$LIBS"
1412         LIBS="$ATK_LIBS $LIBS"
1413         AC_TRY_LINK_FUNC(atk_object_get_type, : , AC_MSG_ERROR([
1414                 *** Cannot link to Accessibility Toolkit. Accessibility Toolkit is required
1415                 *** to build GTK+]))
1416         LIBS="$gtk_save_LIBS"
1417 fi
1418
1419 GTK_PACKAGES=atk
1420 GTK_EXTRA_LIBS=
1421 GTK_EXTRA_CFLAGS= 
1422 GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
1423 GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags  gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
1424
1425 AC_SUBST(GTK_PACKAGES)
1426 AC_SUBST(GTK_EXTRA_LIBS)
1427 AC_SUBST(GTK_EXTRA_CFLAGS)
1428 AC_SUBST(GTK_DEP_LIBS)
1429 AC_SUBST(GTK_DEP_CFLAGS)
1430
1431
1432 AC_SUBST(GTK_DEBUG_FLAGS)
1433 AC_SUBST(GTK_XIM_FLAGS)
1434
1435 ################################################################
1436 # Strip -export-dynamic from the link lines of various libraries
1437 ################################################################
1438
1439 #
1440 # pkg-config --libs gmodule includes the "export_dynamic" flag,
1441 #  but this flag is only meaningful for executables. For libraries
1442 #  the effect is undefined; what it causes on Linux is that the
1443 #  export list from -export-symbols-regex is ignored and everything
1444 #  is exported
1445 #       
1446 export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
1447 if test -n "$export_dynamic"; then
1448   GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
1449   GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
1450   GDK_DEP_LIBS=`echo $GDK_DEP_LIBS | sed -e "s/$export_dynamic//"`
1451   GTK_DEP_LIBS=`echo $GTK_DEP_LIBS | sed -e "s/$export_dynamic//"`
1452 fi
1453
1454
1455 ##################################################
1456 # Checks for gtk-doc and docbook-tools
1457 ##################################################
1458
1459 GTK_DOC_CHECK([1.0])
1460
1461 AC_CHECK_PROG(DB2HTML, db2html, true, false)
1462 AM_CONDITIONAL(HAVE_DOCBOOK, $DB2HTML)
1463
1464 AC_ARG_ENABLE(man,
1465               [AC_HELP_STRING([--enable-man],
1466                               [regenerate man pages from Docbook [default=no]])],enable_man=yes,
1467               enable_man=no)
1468
1469 if test "${enable_man}" != no; then
1470   dnl
1471   dnl Check for xsltproc
1472   dnl
1473   AC_PATH_PROG([XSLTPROC], [xsltproc])
1474   if test -z "$XSLTPROC"; then
1475     enable_man=no
1476   fi
1477
1478   dnl check for DocBook DTD and stylesheets in the local catalog.
1479   JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
1480      [DocBook XML DTD V4.1.2],,enable_man=no)
1481   JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
1482      [DocBook XSL Stylesheets],,enable_man=no)
1483 fi
1484
1485 AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
1486
1487 ##################################################
1488 # Output commands
1489 ##################################################
1490
1491 AC_CONFIG_COMMANDS([gdk/gdkconfig.h], [
1492         outfile=gdkconfig.h-tmp
1493         cat > $outfile <<\_______EOF
1494 /* gdkconfig.h
1495  *
1496  * This is a generated file.  Please modify `configure.in'
1497  */
1498
1499 #ifndef GDKCONFIG_H
1500 #define GDKCONFIG_H
1501
1502 #ifdef __cplusplus
1503 extern "C" {
1504 #endif /* __cplusplus */
1505
1506 _______EOF
1507
1508         cat >>$outfile <<_______EOF
1509 $gdk_windowing
1510 $gdk_wc
1511 _______EOF
1512
1513         cat >>$outfile <<_______EOF
1514
1515 #ifdef __cplusplus
1516 }
1517 #endif /* __cplusplus */
1518
1519 #endif /* GDKCONFIG_H */
1520 _______EOF
1521
1522
1523         if cmp -s $outfile gdk/gdkconfig.h; then
1524           AC_MSG_NOTICE([gdk/gdkconfig.h is unchanged])
1525           rm -f $outfile
1526         else
1527           mv $outfile gdk/gdkconfig.h
1528         fi
1529 ],[
1530 if test "x$gdktarget" = "xx11" ; then
1531   gdk_windowing='
1532 #define GDK_WINDOWING_X11'
1533 elif test "x$gdktarget" = "xwin32" ; then
1534   gdk_windowing='
1535 #define GDK_WINDOWING_WIN32'
1536 elif test "x$gdktarget" = "xlinux-fb" ; then
1537   gdk_windowing='
1538 #define GDK_WINDOWING_FB
1539 #define GDK_NATIVE_WINDOW_POINTER'
1540 fi
1541
1542 if test x$gdk_wchar_h = xyes; then
1543   gdk_wc='
1544 #define GDK_HAVE_WCHAR_H 1'
1545 fi
1546 if test x$gdk_wctype_h = xyes; then
1547   gdk_wc="\$gdk_wc
1548 #define GDK_HAVE_WCTYPE_H 1"
1549 fi
1550 if test x$gdk_working_wctype = xno; then
1551   gdk_wc="\$gdk_wc
1552 #define GDK_HAVE_BROKEN_WCTYPE 1"
1553 fi
1554
1555
1556 ])
1557
1558 AC_CONFIG_FILES([
1559 config.h.win32
1560 gtk-zip.sh
1561 Makefile
1562 gdk-pixbuf-2.0.pc
1563 gdk-2.0.pc
1564 gtk+-2.0.pc
1565 gdk-pixbuf-2.0-uninstalled.pc
1566 gdk-2.0-uninstalled.pc
1567 gtk+-2.0-uninstalled.pc
1568 m4macros/Makefile
1569 po/Makefile.in
1570 po-properties/Makefile.in
1571 build/Makefile
1572 build/win32/Makefile
1573 build/win32/dirent/Makefile
1574 demos/Makefile
1575 demos/gtk-demo/Makefile
1576 demos/gtk-demo/geninclude.pl
1577 tests/Makefile
1578 docs/Makefile
1579 docs/reference/Makefile
1580 docs/reference/gdk-pixbuf/Makefile
1581 docs/reference/gdk-pixbuf/version.xml
1582 docs/reference/gdk/Makefile
1583 docs/reference/gdk/version.xml
1584 docs/reference/gtk/Makefile
1585 docs/reference/gtk/version.xml
1586 docs/faq/Makefile
1587 docs/tutorial/Makefile
1588 gdk-pixbuf/Makefile
1589 gdk-pixbuf/gdk_pixbuf.rc
1590 gdk-pixbuf/gdk-pixbuf-features.h
1591 gdk-pixbuf/pixops/Makefile
1592 gdk/Makefile
1593 gdk/x11/Makefile
1594 gdk/win32/Makefile
1595 gdk/win32/rc/Makefile
1596 gdk/win32/rc/gdk.rc
1597 gdk/linux-fb/Makefile
1598 gtk/Makefile
1599 gtk/makefile.msc
1600 gtk/gtkversion.h
1601 gtk/gtk-win32.rc
1602 gtk/stock-icons/Makefile
1603 gtk/theme-bits/Makefile
1604 gtk/xdgmime/Makefile
1605 modules/Makefile
1606 modules/input/Makefile
1607 contrib/Makefile
1608 contrib/gdk-pixbuf-xlib/Makefile
1609 contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-2.0.pc
1610 ])
1611
1612 AC_OUTPUT