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