]> Pileus Git - ~andy/gtk/blob - configure.in
Create an empty target list if targets is NULL.
[~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], [5])
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 AC_CANONICAL_HOST
111
112 MATH_LIB=-lm
113 AC_MSG_CHECKING([for native Win32])
114 case "$host" in
115   *-*-mingw*)
116     os_win32=yes
117     MATH_LIB=
118     ;;
119   *)
120     os_win32=no
121     ;;
122 esac
123 AC_MSG_RESULT([$os_win32])
124
125 dnl Initialize libtool
126 AC_PROG_CC
127 AM_DISABLE_STATIC
128
129 if test "$os_win32" = "yes"; then
130   if test x$enable_static = xyes -o x$enable_static = x; then
131     AC_MSG_WARN([Disabling static library build, must build as DLL on Windows.])
132     enable_static=no
133   fi
134   if test x$enable_shared = xno; then
135     AC_MSG_WARN([Enabling shared library build, must build as DLL on Windows.])
136   fi
137   enable_shared=yes
138 fi
139
140 AM_PROG_LIBTOOL
141
142 # Make sure we use 64-bit versions of various file stuff.
143 AC_SYS_LARGEFILE
144
145 AM_PROG_AS
146
147 dnl Initialize maintainer mode
148 AM_MAINTAINER_MODE
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 gu he hi hr hu ia id is it ja ko li lt lv mi mk ml mn mr ms ne nl nn no pa pl pt pt_BR ro ru sk sl sq sr sr@ije sr@Latn sv ta th tk 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   # X SYNC check
1212   AC_CHECK_LIB(Xext, XSyncQueryExtension,
1213       [AC_CHECK_HEADER(X11/extensions/sync.h,
1214           [GTK_ADD_LIB(x_extra_libs, Xext)
1215           AC_DEFINE(HAVE_XSYNC, 1, Have the SYNC extension library)],
1216           :, [#include <X11/Xlib.h>])], : ,
1217        $X_LIBS -lXext -lX11 $X_EXTRA_LIBS)
1218
1219   # Checks for XFixes extension
1220   
1221   have_xfixes=false
1222   PKG_CHECK_MODULES(XFIXES, xfixes, have_xfixes=true, :)
1223
1224   if $have_xfixes ; then
1225     AC_DEFINE(HAVE_XFIXES, 1, Have the XFIXES X extension)
1226     GDK_EXTRA_CFLAGS="`$PKG_CONFIG --cflags xfixes` $GDK_EXTRA_CFLAGS"
1227     GDK_EXTRA_LIBS="`$PKG_CONFIG --libs xfixes` $GDK_EXTRA_LIBS"
1228   fi
1229     
1230   # Xshm checks
1231
1232   if test "x$enable_shm" = "xyes"; then
1233     # Check for shared memory
1234     AC_CHECK_HEADER(sys/ipc.h, AC_DEFINE(HAVE_IPC_H), no_sys_ipc=yes)
1235     AC_CHECK_HEADER(sys/shm.h, AC_DEFINE(HAVE_SHM_H), no_sys_shm=yes)
1236
1237     # Check for the X shared memory extension header file
1238     have_xshm=no 
1239     AC_MSG_CHECKING(X11/extensions/XShm.h)
1240     if test "x$no_xext_lib" = "xyes"; then
1241       :
1242     else
1243       gtk_save_CFLAGS="$CFLAGS"
1244       CFLAGS="$CFLAGS $x_cflags"
1245       AC_TRY_COMPILE([
1246 #include <stdlib.h>
1247 #include <sys/types.h>
1248 #include <sys/ipc.h>
1249 #include <sys/shm.h>
1250 #include <X11/Xlib.h>
1251 #include <X11/Xutil.h>
1252 #include <X11/extensions/XShm.h>
1253 ], [XShmSegmentInfo *x_shm_info;], have_xshm=yes)
1254       CFLAGS="$gtk_save_CFLAGS"
1255     fi
1256     AC_MSG_RESULT($have_xshm)
1257     if test $have_xshm = yes ; then
1258       AC_DEFINE(HAVE_XSHM_H)
1259     fi
1260   fi
1261
1262   if test $pango_omitted_x_deps = yes ; then
1263     GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs $x_libs $GDK_EXTRA_LIBS"
1264   else
1265     GDK_EXTRA_LIBS="$X_LIBS $x_extra_libs $GDK_EXTRA_LIBS"
1266   fi
1267
1268   AM_CONDITIONAL(USE_X11, true)
1269 else
1270   AM_CONDITIONAL(XINPUT_XFREE, false)
1271   AM_CONDITIONAL(USE_X11, false)
1272   AM_CONDITIONAL(HAVE_X11R6, false)
1273 fi
1274
1275 if test "x$gdktarget" = "xwin32"; then
1276   # We start off with the libraries from Pango
1277
1278   if test x$have_wintab = xyes; then
1279     GDK_WIN32_EXTRA_CFLAGS="-I $with_wintab/include"
1280     AC_SUBST(GDK_WIN32_EXTRA_CFLAGS)
1281   fi
1282
1283   GDK_EXTRA_LIBS="$GDK_EXTRA_LIBS -lgdi32 -user32 -limm32 -lshell32 -lole32 -luuid"
1284   AM_CONDITIONAL(USE_WIN32, true)
1285 else
1286   AM_CONDITIONAL(USE_WIN32, false)
1287 fi
1288
1289 GDK_PIXBUF_XLIB_PACKAGES=
1290 GDK_PIXBUF_XLIB_DEP_LIBS="`$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PIXBUF_XLIB_PACKAGES` $GDK_PIXBUF_XLIB_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
1291 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"
1292
1293 AC_SUBST(GDK_PIXBUF_XLIB_PACKAGES)
1294 AC_SUBST(GDK_PIXBUF_XLIB_EXTRA_LIBS)
1295 AC_SUBST(GDK_PIXBUF_XLIB_EXTRA_CFLAGS)
1296 AC_SUBST(GDK_PIXBUF_XLIB_DEP_LIBS)
1297 AC_SUBST(GDK_PIXBUF_XLIB_DEP_CFLAGS)
1298
1299 if test "x$gdktarget" = "xlinux-fb"; then
1300   if $have_freetype ; then
1301     :
1302   else
1303     AC_MSG_ERROR([Using linux-fb backend but freetype was not found])
1304   fi
1305
1306   ft2_libs="`$PKG_CONFIG --libs pangoft2`"
1307   case "$ft2_libs" in
1308     *-lfreetype*) pango_omitted_ft2_deps=no ;;
1309     *)            pango_omitted_ft2_deps=yes ;;
1310   esac
1311
1312   CFLAGS="$CFLAGS $FREETYPE_CFLAGS"
1313
1314   if test x$enable_shadowfb = xyes ; then
1315     AC_DEFINE(ENABLE_SHADOW_FB)
1316   fi
1317
1318   if test x$enable_fbmanager = xyes ; then
1319     AC_DEFINE(ENABLE_FB_MANAGER)
1320     AM_CONDITIONAL(ENABLE_FB_MANAGER, true)
1321   else
1322     AM_CONDITIONAL(ENABLE_FB_MANAGER, false)
1323   fi
1324   
1325   if test $pango_omitted_ft2_deps = yes ; then
1326     GDK_EXTRA_LIBS="$FREETYPE_LIBS $GDK_EXTRA_LIBS"
1327   fi
1328
1329   AM_CONDITIONAL(USE_LINUX_FB, true)
1330 else
1331   AM_CONDITIONAL(USE_LINUX_FB, false)
1332   AM_CONDITIONAL(ENABLE_FB_MANAGER, false)
1333 fi
1334
1335 #
1336 # Pick correct Pango packages to use
1337 #
1338
1339 if test "x$gdktarget" = "xx11"; then
1340         PANGO_PACKAGES=pangoxft
1341         
1342         # We no longer use pangox, but if we find it, we link to it 
1343         # for binary compatibility.
1344         if $PKG_CONFIG --exists pangox ; then
1345                 PANGO_PACKAGES="$PANGO_PACKAGES pangox"
1346         fi
1347 elif test "x$gdktarget" = "xwin32"; then
1348         PANGO_PACKAGES=pangowin32
1349 elif test "x$gdktarget" = "xlinux-fb"; then
1350         PANGO_PACKAGES=pangoft2
1351 else
1352         PANGO_PACKAGES=pango
1353 fi
1354
1355 # Check for Pango flags
1356
1357 AC_MSG_CHECKING(Pango flags)
1358 if $PKG_CONFIG --exists $PANGO_PACKAGES ; then
1359         PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_PACKAGES`
1360         PANGO_LIBS=`$PKG_CONFIG --libs $PANGO_PACKAGES`
1361
1362         AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
1363 else
1364         AC_MSG_ERROR([
1365 *** Pango not found. Pango is required to build GTK+.
1366 *** See http://www.pango.org for Pango information.
1367 *** For the framebuffer target, you will need to build 
1368 *** Pango with freetype support.
1369 ])
1370 fi
1371
1372 CFLAGS="$CFLAGS $PANGO_CFLAGS"
1373
1374 if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
1375         :
1376 else
1377         gtk_save_LIBS="$LIBS"
1378         LIBS="$PANGO_LIBS $LIBS"
1379         AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
1380 *** Can't link to Pango. Pango is required to build
1381 *** GTK+. For more information see http://www.pango.org]))
1382         LIBS="$gtk_save_LIBS"
1383 fi
1384
1385 CFLAGS="$saved_cflags"
1386 LDFLAGS="$saved_ldflags"
1387
1388 GDK_PACKAGES="$PANGO_PACKAGES"
1389 GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_LIBS"
1390 GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags  gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS"
1391
1392 #
1393 # If we aren't writing explicit dependencies, then don't put the extra libraries we need
1394 # into the pkg-config files
1395 #
1396 if test $enable_explicit_deps != yes ; then
1397   GDK_EXTRA_LIBS=
1398 fi
1399
1400 AC_SUBST(GDK_PACKAGES)
1401 AC_SUBST(GDK_EXTRA_LIBS)
1402 AC_SUBST(GDK_EXTRA_CFLAGS)
1403 AC_SUBST(GDK_DEP_LIBS)
1404 AC_SUBST(GDK_DEP_CFLAGS)
1405
1406
1407 ########################################
1408 # Check for Accessibility Toolkit flags
1409 ########################################
1410
1411 ATK_PACKAGES=atk
1412 AC_MSG_CHECKING(ATK flags)
1413 if $PKG_CONFIG --exists $ATK_PACKAGES ; then
1414         ATK_CFLAGS=`$PKG_CONFIG --cflags $ATK_PACKAGES`
1415         ATK_LIBS=`$PKG_CONFIG --libs $ATK_PACKAGES`
1416
1417         AC_MSG_RESULT($ATK_CFLAGS $ATK_LIBS)
1418 else
1419         AC_MSG_ERROR([
1420 *** Accessibility Toolkit not found. Accessibility Toolkit is required
1421 *** to build GTK+.
1422 ])
1423 fi
1424
1425 if $PKG_CONFIG --uninstalled $ATK_PACKAGES; then
1426         :
1427 else
1428         gtk_save_LIBS="$LIBS"
1429         LIBS="$ATK_LIBS $LIBS"
1430         AC_TRY_LINK_FUNC(atk_object_get_type, : , AC_MSG_ERROR([
1431                 *** Cannot link to Accessibility Toolkit. Accessibility Toolkit is required
1432                 *** to build GTK+]))
1433         LIBS="$gtk_save_LIBS"
1434 fi
1435
1436 GTK_PACKAGES=atk
1437 GTK_EXTRA_LIBS=
1438 GTK_EXTRA_CFLAGS= 
1439 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"
1440 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"
1441
1442 AC_SUBST(GTK_PACKAGES)
1443 AC_SUBST(GTK_EXTRA_LIBS)
1444 AC_SUBST(GTK_EXTRA_CFLAGS)
1445 AC_SUBST(GTK_DEP_LIBS)
1446 AC_SUBST(GTK_DEP_CFLAGS)
1447
1448
1449 AC_SUBST(GTK_DEBUG_FLAGS)
1450 AC_SUBST(GTK_XIM_FLAGS)
1451
1452 ################################################################
1453 # Strip -export-dynamic from the link lines of various libraries
1454 ################################################################
1455
1456 #
1457 # pkg-config --libs gmodule includes the "export_dynamic" flag,
1458 #  but this flag is only meaningful for executables. For libraries
1459 #  the effect is undefined; what it causes on Linux is that the
1460 #  export list from -export-symbols-regex is ignored and everything
1461 #  is exported
1462 #       
1463 export_dynamic=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh`
1464 if test -n "$export_dynamic"; then
1465   GDK_PIXBUF_DEP_LIBS=`echo $GDK_PIXBUF_DEP_LIBS | sed -e "s/$export_dynamic//"`
1466   GDK_PIXBUF_XLIB_DEP_LIBS=`echo $GDK_PIXBUF_XLIB_DEP_LIBS | sed -e "s/$export_dynamic//"`
1467   GDK_DEP_LIBS=`echo $GDK_DEP_LIBS | sed -e "s/$export_dynamic//"`
1468   GTK_DEP_LIBS=`echo $GTK_DEP_LIBS | sed -e "s/$export_dynamic//"`
1469 fi
1470
1471
1472 ##################################################
1473 # Checks for gtk-doc and docbook-tools
1474 ##################################################
1475
1476 GTK_DOC_CHECK([1.0])
1477
1478 AC_CHECK_PROG(DB2HTML, db2html, true, false)
1479 AM_CONDITIONAL(HAVE_DOCBOOK, $DB2HTML)
1480
1481 AC_ARG_ENABLE(man,
1482               [AC_HELP_STRING([--enable-man],
1483                               [regenerate man pages from Docbook [default=no]])],enable_man=yes,
1484               enable_man=no)
1485
1486 if test "${enable_man}" != no; then
1487   dnl
1488   dnl Check for xsltproc
1489   dnl
1490   AC_PATH_PROG([XSLTPROC], [xsltproc])
1491   if test -z "$XSLTPROC"; then
1492     enable_man=no
1493   fi
1494
1495   dnl check for DocBook DTD and stylesheets in the local catalog.
1496   JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
1497      [DocBook XML DTD V4.1.2],,enable_man=no)
1498   JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
1499      [DocBook XSL Stylesheets],,enable_man=no)
1500 fi
1501
1502 AM_CONDITIONAL(ENABLE_MAN, test x$enable_man != xno)
1503
1504 ##################################################
1505 # Output commands
1506 ##################################################
1507
1508 AC_CONFIG_COMMANDS([gdk/gdkconfig.h], [
1509         outfile=gdkconfig.h-tmp
1510         cat > $outfile <<\_______EOF
1511 /* gdkconfig.h
1512  *
1513  * This is a generated file.  Please modify `configure.in'
1514  */
1515
1516 #ifndef GDKCONFIG_H
1517 #define GDKCONFIG_H
1518
1519 #ifdef __cplusplus
1520 extern "C" {
1521 #endif /* __cplusplus */
1522
1523 _______EOF
1524
1525         cat >>$outfile <<_______EOF
1526 $gdk_windowing
1527 $gdk_wc
1528 _______EOF
1529
1530         cat >>$outfile <<_______EOF
1531
1532 #ifdef __cplusplus
1533 }
1534 #endif /* __cplusplus */
1535
1536 #endif /* GDKCONFIG_H */
1537 _______EOF
1538
1539
1540         if cmp -s $outfile gdk/gdkconfig.h; then
1541           AC_MSG_NOTICE([gdk/gdkconfig.h is unchanged])
1542           rm -f $outfile
1543         else
1544           mv $outfile gdk/gdkconfig.h
1545         fi
1546 ],[
1547 if test "x$gdktarget" = "xx11" ; then
1548   gdk_windowing='
1549 #define GDK_WINDOWING_X11'
1550 elif test "x$gdktarget" = "xwin32" ; then
1551   gdk_windowing='
1552 #define GDK_WINDOWING_WIN32'
1553 elif test "x$gdktarget" = "xlinux-fb" ; then
1554   gdk_windowing='
1555 #define GDK_WINDOWING_FB
1556 #define GDK_NATIVE_WINDOW_POINTER'
1557 fi
1558
1559 if test x$gdk_wchar_h = xyes; then
1560   gdk_wc='
1561 #define GDK_HAVE_WCHAR_H 1'
1562 fi
1563 if test x$gdk_wctype_h = xyes; then
1564   gdk_wc="\$gdk_wc
1565 #define GDK_HAVE_WCTYPE_H 1"
1566 fi
1567 if test x$gdk_working_wctype = xno; then
1568   gdk_wc="\$gdk_wc
1569 #define GDK_HAVE_BROKEN_WCTYPE 1"
1570 fi
1571
1572
1573 ])
1574
1575 AC_CONFIG_FILES([
1576 config.h.win32
1577 gtk-zip.sh
1578 Makefile
1579 gdk-pixbuf-2.0.pc
1580 gdk-2.0.pc
1581 gtk+-2.0.pc
1582 gdk-pixbuf-2.0-uninstalled.pc
1583 gdk-2.0-uninstalled.pc
1584 gtk+-2.0-uninstalled.pc
1585 m4macros/Makefile
1586 po/Makefile.in
1587 po-properties/Makefile.in
1588 build/Makefile
1589 build/win32/Makefile
1590 build/win32/dirent/Makefile
1591 demos/Makefile
1592 demos/gtk-demo/Makefile
1593 demos/gtk-demo/geninclude.pl
1594 tests/Makefile
1595 docs/Makefile
1596 docs/reference/Makefile
1597 docs/reference/gdk-pixbuf/Makefile
1598 docs/reference/gdk-pixbuf/version.xml
1599 docs/reference/gdk/Makefile
1600 docs/reference/gdk/version.xml
1601 docs/reference/gtk/Makefile
1602 docs/reference/gtk/version.xml
1603 docs/faq/Makefile
1604 docs/tutorial/Makefile
1605 gdk-pixbuf/Makefile
1606 gdk-pixbuf/gdk_pixbuf.rc
1607 gdk-pixbuf/gdk-pixbuf-features.h
1608 gdk-pixbuf/pixops/Makefile
1609 gdk/Makefile
1610 gdk/x11/Makefile
1611 gdk/win32/Makefile
1612 gdk/win32/rc/Makefile
1613 gdk/win32/rc/gdk.rc
1614 gdk/linux-fb/Makefile
1615 gtk/Makefile
1616 gtk/makefile.msc
1617 gtk/gtkversion.h
1618 gtk/gtk-win32.rc
1619 gtk/stock-icons/Makefile
1620 gtk/theme-bits/Makefile
1621 gtk/xdgmime/Makefile
1622 modules/Makefile
1623 modules/input/Makefile
1624 contrib/Makefile
1625 contrib/gdk-pixbuf-xlib/Makefile
1626 contrib/gdk-pixbuf-xlib/gdk-pixbuf-xlib-2.0.pc
1627 ])
1628
1629 AC_OUTPUT