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