1# required autoconf version
2AC_PREREQ([2.54])
3
4#
5# Making releases:
6#   gtkglext_micro_version += 1;
7#   gtkglext_interface_age += 1;
8#   gtkglext_binary_age += 1;
9# if any functions have been added, set gtkglext_interface_age to 0.
10# if backwards compatibility has been broken,
11# set gtkglext_binary_age and gtkglext_interface_age to 0.
12#
13m4_define([gtkglext_major_version], [1])
14m4_define([gtkglext_minor_version], [2])
15m4_define([gtkglext_micro_version], [0])
16m4_define([gtkglext_interface_age], [0])
17m4_define([gtkglext_binary_age],    [0])
18m4_define([gtkglext_version],
19          [gtkglext_major_version.gtkglext_minor_version.gtkglext_micro_version])
20
21# This is the X.Y used in -lgtkglext-FOO-X.Y
22m4_define([gtkglext_api_major_version], [1])
23m4_define([gtkglext_api_minor_version], [0])
24m4_define([gtkglext_api_version],
25          [gtkglext_api_major_version.gtkglext_api_minor_version])
26
27# libtool version related macros
28m4_define([gtkglext_lt_release],
29          [gtkglext_major_version.gtkglext_minor_version])
30m4_define([gtkglext_lt_current],
31          [m4_eval(gtkglext_micro_version - gtkglext_interface_age)])
32m4_define([gtkglext_lt_revision],
33          [gtkglext_interface_age])
34m4_define([gtkglext_lt_age],
35          [m4_eval(gtkglext_binary_age - gtkglext_interface_age)])
36m4_define([gtkglext_lt_current_minus_age],
37          [m4_eval(gtkglext_lt_current - gtkglext_lt_age)])
38
39# if the minor version number is odd, then we want debugging.  Otherwise
40# we only want minimal debugging support.
41m4_define([gtkglext_debug_default],
42          [m4_if(m4_eval(gtkglext_minor_version % 2), [1], [yes], [minimum])])dnl
43
44# Versions of dependencies
45
46# Glib
47m4_define([glib_pkg], [glib-2.0])
48m4_define([glib_required_version], [2.0.0])
49
50# GObject
51m4_define([gobject_pkg], [gobject-2.0])
52m4_define([gobject_required_version], [2.0.0])
53
54# GModule
55m4_define([gmodule_pkg], [gmodule-2.0])
56m4_define([gmodule_required_version], [2.0.0])
57
58# Pango
59m4_define([pango_pkg], [pango])
60m4_define([pango_required_version], [1.0.0])
61
62# Pangox
63m4_define([pangox_pkg], [pangox])
64m4_define([pangox_required_version], [1.0.0])
65
66# PangoFT2
67m4_define([pangoft2_pkg], [pangoft2])
68m4_define([pangoft2_required_version], [1.0.0])
69
70# GDK
71m4_define([gdk_pkg], [gdk-2.0])
72m4_define([gdk_required_version], [2.0.0])
73
74# GTK+
75m4_define([gtk_pkg], [gtk+-2.0])
76m4_define([gtk_required_version], [2.0.0])
77
78
79# Process this file with autoconf to produce a configure script.
80AC_INIT([gtkglext], [gtkglext_version],
81        [gtkglext-list@gnome.org])
82
83AC_CONFIG_SRCDIR([gdk/gdkgl.h])
84
85# Save this value here, since automake will set cflags later
86cflags_set=${CFLAGS+set}
87
88# Initialize automake stuff
89AM_INIT_AUTOMAKE([1.7 no-define dist-bzip2 dist-zip])
90
91# Specify a configuration file
92AM_CONFIG_HEADER([config.h])
93
94dnl Initialize maintainer mode
95AM_MAINTAINER_MODE
96
97AC_CANONICAL_HOST
98
99# GtkGLExt version
100GTKGLEXT_MAJOR_VERSION=gtkglext_major_version
101GTKGLEXT_MINOR_VERSION=gtkglext_minor_version
102GTKGLEXT_MICRO_VERSION=gtkglext_micro_version
103GTKGLEXT_INTERFACE_AGE=gtkglext_interface_age
104GTKGLEXT_BINARY_AGE=gtkglext_binary_age
105GTKGLEXT_VERSION=gtkglext_version
106# This is the X.Y used in -lgtkglext-FOO-X.Y
107GTKGLEXT_API_MAJOR_VERSION=gtkglext_api_major_version
108GTKGLEXT_API_MINOR_VERSION=gtkglext_api_minor_version
109GTKGLEXT_API_VERSION=gtkglext_api_version
110API_MJ=$GTKGLEXT_API_MAJOR_VERSION
111API_MI=$GTKGLEXT_API_MINOR_VERSION
112AC_SUBST([GTKGLEXT_MAJOR_VERSION])
113AC_SUBST([GTKGLEXT_MINOR_VERSION])
114AC_SUBST([GTKGLEXT_MICRO_VERSION])
115AC_SUBST([GTKGLEXT_INTERFACE_AGE])
116AC_SUBST([GTKGLEXT_BINARY_AGE])
117AC_SUBST([GTKGLEXT_VERSION])
118AC_SUBST([GTKGLEXT_API_MAJOR_VERSION])
119AC_SUBST([GTKGLEXT_API_MINOR_VERSION])
120AC_SUBST([GTKGLEXT_API_VERSION])
121AC_SUBST([API_MJ])
122AC_SUBST([API_MI])
123
124# libtool versioning
125LT_RELEASE=gtkglext_lt_release
126LT_CURRENT=gtkglext_lt_current
127LT_REVISION=gtkglext_lt_revision
128LT_AGE=gtkglext_lt_age
129LT_CURRENT_MINUS_AGE=gtkglext_lt_current_minus_age
130AC_SUBST([LT_RELEASE])
131AC_SUBST([LT_CURRENT])
132AC_SUBST([LT_REVISION])
133AC_SUBST([LT_AGE])
134AC_SUBST([LT_CURRENT_MINUS_AGE])
135
136dnl Initialize libtool
137AC_PROG_CC
138AC_PROG_CPP
139AC_ISC_POSIX
140#AM_DISABLE_STATIC
141AC_LIBTOOL_WIN32_DLL
142AC_PROG_LIBTOOL
143
144platform_win32=no
145AC_MSG_CHECKING([for some Win32 platform])
146case "$host_os" in
147  *mingw*|*cygwin*)
148    platform_win32=yes
149    ;;
150  *)
151    ;;
152esac
153AC_MSG_RESULT([$platform_win32])
154AM_CONDITIONAL([PLATFORM_WIN32], [test "x$platform_win32" = "xyes"])
155
156os_win32=no
157MATH_LIB=-lm
158AC_MSG_CHECKING([for native Win32])
159case "$host_os" in
160  *mingw*)
161    os_win32=yes
162    MATH_LIB=
163    ;;
164  *)
165    ;;
166esac
167AC_MSG_RESULT([$os_win32])
168AM_CONDITIONAL([OS_WIN32], [test "x$os_win32" = "xyes"])
169AC_SUBST([MATH_LIB])
170
171if test "x$os_win32" = "xyes"; then
172  AC_CHECK_PROG([ms_librarian], [lib.exe], [yes], [no])
173fi
174AM_CONDITIONAL([MS_LIB_AVAILABLE], [test "x$ms_librarian" = "xyes"])
175
176if test "x$platform_win32" = "xyes"; then
177  gdktarget=win32
178else
179  gdktarget=x11
180fi
181
182AC_ARG_WITH([gdktarget],
183            [AC_HELP_STRING([--with-gdktarget=@<:@x11/win32@:>@],
184                            [select GDK target])],
185            [gdktarget=$with_gdktarget])
186
187AC_SUBST([gdktarget])
188case $gdktarget in
189  x11|win32) ;;
190  *) AC_MSG_ERROR([Invalid target for GDK: use x11 or win32.]);;
191esac
192
193gdkglext_targetlib=libgdkglext-$gdktarget-$GTKGLEXT_API_VERSION.la
194gtkglext_targetlib=libgtkglext-$gdktarget-$GTKGLEXT_API_VERSION.la
195
196AC_SUBST([gdkglext_targetlib])
197AC_SUBST([gtkglext_targetlib])
198
199
200# Build time sanity check...
201AM_SANITY_CHECK
202
203# Checks for programs.
204AM_PROG_CC_STDC
205AC_PROG_INSTALL
206AC_PROG_MAKE_SET
207AC_PROG_LN_S
208AC_PROG_AWK
209
210# Debug option
211AC_ARG_ENABLE([debug],
212              AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
213                             [turn on debugging @<:@default=gtkglext_debug_default@:>@]), ,
214              [enable_debug=gtkglext_debug_default])
215
216# Strict ansi
217AC_ARG_ENABLE([ansi],
218              [AC_HELP_STRING([--enable-ansi],
219                              [turn on strict ansi [default=no]])], ,
220	      [enable_ansi=no])
221
222changequote(,)dnl
223if test "x$GCC" = "xyes"; then
224  case " $CFLAGS " in
225  *[\ \	]-Wall[\ \	]*) ;;
226  *) CFLAGS="$CFLAGS -Wall" ;;
227  esac
228
229  if test "x$enable_ansi" = "xyes"; then
230    case " $CFLAGS " in
231    *[\ \	]-ansi[\ \	]*) ;;
232    *) CFLAGS="$CFLAGS -ansi" ;;
233    esac
234
235    case " $CFLAGS " in
236    *[\ \	]-pedantic[\ \	]*) ;;
237    *) CFLAGS="$CFLAGS -pedantic" ;;
238    esac
239  fi
240fi
241
242if test "x$enable_debug" = "xyes"; then
243  if test x$cflags_set != xset ; then
244      case " $CFLAGS " in
245      *[[\ \	]]-g[[\ \	]]*) ;;
246      *) CFLAGS="$CFLAGS -g" ;;
247      esac
248  fi
249  GTKGLEXT_DEBUG_FLAGS="-DG_ENABLE_DEBUG"
250else
251  if test "x$enable_debug" = "xno"; then
252    GTKGLEXT_DEBUG_FLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
253  else
254    GTKGLEXT_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS"
255  fi
256fi
257changequote([,])dnl
258
259AC_SUBST([GTKGLEXT_DEBUG_FLAGS])
260
261# Platform-specific compiler options
262case "$host_os" in
263  irix5* | irix6*)
264    # Suppress linker warnings
265    if test "x$with_gnu_ld" = "xno"; then
266      LDFLAGS="$LDFLAGS -Wl,-woff,84 -Wl,-woff,127"
267    fi
268    ;;
269  *)
270    ;;
271esac
272
273# Ensure MSVC-compatible struct packing convention is used when
274# compiling for Win32 with gcc.
275# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while
276# gcc2 uses "-fnative-struct".
277if test "x$os_win32" = "xyes"; then
278  if test "x$GCC" = "xyes"; then
279    msnative_struct=''
280    AC_MSG_CHECKING([how to get MSVC-compatible struct packing])
281    if test -z "$ac_cv_prog_CC"; then
282      our_gcc="$CC"
283    else
284      our_gcc="$ac_cv_prog_CC"
285    fi
286    case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
287      2.)
288	if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then
289	  msnative_struct='-fnative-struct'
290	fi
291	;;
292      *)
293	if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then
294	  msnative_struct='-mms-bitfields'
295	fi
296	;;
297    esac
298    if test x"$msnative_struct" = x ; then
299      AC_MSG_RESULT([no way])
300      AC_MSG_WARN([produced libraries might be incompatible with MSVC-compiled code])
301    else
302      CFLAGS="$CFLAGS $msnative_struct"
303      AC_MSG_RESULT([${msnative_struct}])
304    fi
305  fi
306fi
307
308if test "x$os_win32" != "xyes"; then
309    # libtool option to control which symbols are exported
310    # right now, symbols starting with _ are not exported
311    LIBTOOL_EXPORT_OPTIONS='-export-symbols-regex "^[[^_]].*"'
312else
313    # We currently use .def files on Windows
314    LIBTOOL_EXPORT_OPTIONS=
315fi
316AC_SUBST([LIBTOOL_EXPORT_OPTIONS])
317
318# define a MAINT-like variable REBUILD which is set if Perl
319# and awk are found, so autogenerated sources can be rebuilt
320
321AC_ARG_ENABLE([rebuilds],
322              [AC_HELP_STRING([--disable-rebuilds],
323                              [disable all source autogeneration rules])], ,
324              [enable_rebuilds=yes])
325
326AC_PATH_PROGS([PERL], [perl5 perl])
327
328# We would like indent, but don't require it.
329AC_CHECK_PROG([INDENT], [indent], [indent])
330
331REBUILD=\#
332if test "x$enable_rebuilds" = "xyes" && \
333     test -n "$PERL" && \
334     $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 ; then
335  REBUILD=
336fi
337AC_SUBST([REBUILD])
338
339# Honor aclocal flags
340ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS -I $srcdir/m4macros"
341
342## Initial sanity check, done here so that users get told they
343## have the wrong dependencies as early in the process as possible.
344## Later on we actually use the cflags/libs from separate pkg-config
345## calls. Oh, also the later pkg-config calls don't include
346## the version requirements since those make the module lists
347## annoying to construct
348PKG_CHECK_MODULES([BASE_DEPENDENCIES], [\
349gtk_pkg >= gtk_required_version \
350gdk_pkg >= gdk_required_version \
351pango_pkg >= pango_required_version \
352pangox_pkg >= pangox_required_version \
353gmodule_pkg >= gmodule_required_version \
354])
355
356# Check for GLib
357AM_PATH_GLIB_2_0([glib_required_version], ,
358                 [AC_MSG_ERROR([GLib 2.0 not found])])
359
360# Check for GTK+
361AM_PATH_GTK_2_0([gtk_required_version], ,
362                [AC_MSG_ERROR([GTK+ 2.0 not found])])
363
364# Checks for libraries.
365
366# Checks for header files.
367AC_HEADER_STDC
368AC_CHECK_HEADERS([inttypes.h stdlib.h string.h])
369
370# Checks for typedefs, structures, and compiler characteristics.
371AC_C_CONST
372
373# Checks for library functions.
374save_LIBS="$LIBS"
375LIBS="$LIBS $MATH_LIB"
376
377AC_FUNC_MALLOC
378AC_CHECK_FUNCS([memset sqrt strchr strrchr strstr])
379
380LIBS="$save_LIBS"
381
382
383##################################################
384# Checks for GDK multihead support
385##################################################
386
387GDKGLEXT_MULTIHEAD_SUPPORT=no
388
389save_CPPFLAGS="$CPPFLAGS"
390CPPFLAGS="$CPPFLAGS $BASE_DEPENDENCIES_CFLAGS"
391save_LIBS="$LIBS"
392LIBS="$LIBS $BASE_DEPENDENCIES_LIBS"
393
394AC_CHECK_HEADERS([gdk/gdkdisplay.h gdk/gdkscreen.h],
395                 [GDKGLEXT_MULTIHEAD_SUPPORT=yes],
396                 [GDKGLEXT_MULTIHEAD_SUPPORT=no])
397
398if test "x$GDKGLEXT_MULTIHEAD_SUPPORT" = "xyes"; then
399  AC_MSG_CHECKING([for gdk_display_get_default in GDK library])
400  AC_TRY_LINK([#include <gdk/gdk.h>],
401              [gdk_display_get_default();],
402              [GDKGLEXT_MULTIHEAD_SUPPORT=yes],
403              [GDKGLEXT_MULTIHEAD_SUPPORT=no])
404  AC_MSG_RESULT([$GDKGLEXT_MULTIHEAD_SUPPORT])
405fi
406
407CPPFLAGS="$save_CPPFLAGS"
408LIBS="$save_LIBS"
409
410if test "x$GDKGLEXT_MULTIHEAD_SUPPORT" = "xyes"; then
411  AC_MSG_NOTICE([GDK supports multihead])
412else
413  AC_MSG_NOTICE([GDK doesn't support multihead])
414fi
415
416AC_SUBST([GDKGLEXT_MULTIHEAD_SUPPORT])
417AM_CONDITIONAL([MULTIHEAD_SUPPORT],
418               [test "x$GDKGLEXT_MULTIHEAD_SUPPORT" = "xyes"])
419
420
421##################################################
422# Checks for GDK functions
423##################################################
424
425save_LIBS="$LIBS"
426LIBS="$LIBS $BASE_DEPENDENCIES_LIBS"
427
428if test "x$gdktarget" = "xx11"; then
429  AC_CHECK_FUNCS([gdk_x11_colormap_foreign_new])
430fi
431
432LIBS="$save_LIBS"
433
434
435##################################################
436# Checks for Window System
437##################################################
438
439WINDOWING_CFLAGS=""
440WINDOWING_LIBS=""
441
442GDKGLEXT_WIN_CFLAGS=""
443GDKGLEXT_WIN_LIBS=""
444
445GDKGLEXT_WIN_EXTRA_DEFS=""
446
447if test "x$gdktarget" = "xx11"; then
448  AC_PATH_XTRA
449
450  if test "x$no_x" = "xyes" ; then
451    AC_MSG_ERROR([X development libraries not found])
452  fi
453
454  save_CPPFLAGS="$CPPFLAGS"
455  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
456  save_LIBS="$LIBS"
457  LIBS="$LIBS $X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
458
459  AC_CHECK_HEADERS([X11/Xmu/StdCmap.h Xmu/StdCmap.h], , ,
460                   [#include <X11/Xlib.h>
461                    #include <X11/Xutil.h>])
462
463  XMU_LIBS=""
464  AC_CHECK_LIB([Xmu], [XmuLookupStandardColormap], , ,
465               [-lXt $X_PRE_LIBS])
466  if test "x$ac_cv_lib_Xmu_XmuLookupStandardColormap" = "xyes" ; then
467    XMU_LIBS="-lXmu -lXt $X_PRE_LIBS"
468  fi
469
470  WINDOWING_CFLAGS="$X_CFLAGS"
471  WINDOWING_LIBS="$X_LIBS $XMU_LIBS -lXext -lX11 $X_EXTRA_LIBS"
472
473  GDKGLEXT_WIN_CFLAGS="$X_CFLAGS"
474  GDKGLEXT_WIN_LIBS="$X_LIBS $XMU_LIBS"
475
476  CPPFLAGS="$save_CPPFLAGS"
477  LIBS="$save_LIBS"
478
479  AM_CONDITIONAL([USE_X11], [true])
480else
481  AM_CONDITIONAL([USE_X11], [false])
482fi
483
484if test "x$gdktarget" = "xwin32"; then
485  WINDOWING_LIBS="-lgdi32 -luser32 -lkernel32"
486  GDKGLEXT_WIN_LIBS="-lgdi32 -luser32 -lkernel32"
487  AM_CONDITIONAL([USE_WIN32], [true])
488else
489  AM_CONDITIONAL([USE_WIN32], [false])
490fi
491
492AC_SUBST([WINDOWING_CFLAGS])
493AC_SUBST([WINDOWING_LIBS])
494
495AC_SUBST([GDKGLEXT_WIN_CFLAGS])
496AC_SUBST([GDKGLEXT_WIN_LIBS])
497
498AC_SUBST([GDKGLEXT_WIN_EXTRA_DEFS])
499
500
501##################################################
502# Checks for OpenGL
503##################################################
504
505GL_CFLAGS=""
506GL_LDFLAGS=""
507GL_LIBS=""
508
509AC_ARG_WITH([gl-prefix],
510            [AC_HELP_STRING([--with-gl-prefix=DIR],
511                            [OpenGL (Mesa) is installed in DIR [default=auto]])], ,
512            [with_gl_prefix=auto])
513
514AC_ARG_WITH([gl-includedir],
515            [AC_HELP_STRING([--with-gl-includedir=DIR],
516                            [OpenGL (Mesa) headers are in DIR [default=auto]])], ,
517            [with_gl_includedir=auto])
518
519AC_ARG_WITH([gl-libdir],
520            [AC_HELP_STRING([--with-gl-libdir=DIR],
521                            [OpenGL (Mesa) libraries are in DIR [default=auto]])], ,
522            [with_gl_libdir=auto])
523
524if test "x$with_gl_includedir" != "xauto"; then
525  GL_CFLAGS="-I$with_gl_includedir"
526elif test "x$with_gl_prefix" != "xauto"; then
527  GL_CFLAGS="-I$with_gl_prefix/include"
528fi
529
530if test "x$with_gl_libdir" != "xauto"; then
531  GL_LDFLAGS="-L$with_gl_libdir"
532elif test "x$with_gl_prefix" != "xauto"; then
533  GL_LDFLAGS="-L$with_gl_prefix/lib"
534fi
535
536save_CPPFLAGS="$CPPFLAGS"
537CPPFLAGS="$CPPFLAGS $GL_CFLAGS $WINDOWING_CFLAGS"
538save_LIBS="$LIBS"
539LIBS="$LIBS $GL_LDFLAGS $WINDOWING_LIBS $MATH_LIB"
540
541if test "x$gdktarget" = "xx11"; then
542  AC_CHECK_HEADERS([GL/glx.h], ,
543                   [AC_MSG_ERROR([Cannot find GLX header])])
544fi
545
546AC_CHECK_HEADERS([GL/gl.h GL/glu.h], ,
547                 [AC_MSG_ERROR([Cannot find OpenGL headers])])
548
549if test "x$gdktarget" = "xx11"; then
550
551  # for X11
552
553  THREAD_LIB="-lpthread"
554  STDCXX_LIB="-lstdc++"
555
556  have_GL=no
557  GL_LIB_NAME=GL
558
559  # GLcore and GL (SGI)
560  AC_CHECK_LIB([GLcore], [glVertex3d],
561               [GL_LIBS="-lGLcore"])
562  if test "x$ac_cv_lib_GLcore_glVertex3d" = "xyes" ; then
563    # if GLcore found, then also check for GL
564    AC_CHECK_LIB([GL], [glXCreateContext],
565                 [GL_LIBS="-lGL $GL_LIBS"
566                  have_GL=yes])
567  fi
568
569  # GL
570  if test "x$have_GL" = "xno" ; then
571    # if no GLcore and GL, check for GL
572    AC_CHECK_LIB([GL], [glVertex3d],
573                 [GL_LIBS="-lGL"
574                  have_GL=yes])
575    if test "x$ac_cv_lib_GL_glVertex3d" = "xno" ; then
576      # GL may need to be linked with the thread library explicitly
577      AC_CHECK_LIB([GL], [glVertex3f],
578                   [GL_LIBS="-lGL $THREAD_LIB"
579                    have_GL=yes], ,
580                   [$THREAD_LIB])
581      if test "x$ac_cv_lib_GL_glVertex3f" = "xno" ; then
582        # GL may need to be linked with std C++ library explicitly
583        AC_CHECK_LIB([GL], [glVertex3i],
584                     [GL_LIBS="-lGL $STDCXX_LIB"
585                      have_GL=yes], ,
586                     [$STDCXX_LIB])
587        if test "x$ac_cv_lib_GL_glVertex3i" = "xno" ; then
588          # GL may need to be linked with std C++ and thread libraries explicitly
589          AC_CHECK_LIB([GL], [glVertex3s],
590                       [GL_LIBS="-lGL $STDCXX_LIB $THREAD_LIB"
591                        have_GL=yes], ,
592                       [$STDCXX_LIB $THREAD_LIB])
593        fi
594      fi
595    fi
596  fi
597
598  # MesaGL
599  if test "x$have_GL" = "xno" ; then
600    # if no GL, check for MesaGL
601    AC_CHECK_LIB([MesaGL], [glVertex3d],
602                 [GL_LIBS="-lMesaGL"
603                  have_GL=yes
604                  GL_LIB_NAME=MesaGL])
605  fi
606
607  if test "x$have_GL" = "xno" ; then
608    # no GL found
609    AC_MSG_ERROR([Cannot find GL library])
610  fi
611
612  # GLU
613
614  have_GLU=no
615  have_SGI_GLU=no
616
617  AC_CHECK_LIB([GLU], [gluSphere],
618               [GL_LIBS="-lGLU $GL_LIBS"
619                have_GLU=yes], ,
620               [$GL_LIBS])
621  if test "x$ac_cv_lib_GLU_gluSphere" = "xno" ; then
622    # GLU may need to be linked with the thread library explicitly
623    AC_CHECK_LIB([GLU], [gluCylinder],
624                 [GL_LIBS="-lGLU $GL_LIBS $THREAD_LIB"
625                  have_GLU=yes], ,
626                 [$GL_LIBS $THREAD_LIB])
627    if test "x$ac_cv_lib_GLU_gluCylinder" = "xno" ; then
628      # GLU may need to be linked with std C++ library explicitly
629      AC_CHECK_LIB([GLU], [gluDisk],
630                   [GL_LIBS="-lGLU $GL_LIBS $STDCXX_LIB"
631                    have_GLU=yes
632                    have_SGI_GLU=yes], ,
633                   [$GL_LIBS $STDCXX_LIB])
634      if test "x$ac_cv_lib_GLU_gluDisk" = "xno" ; then
635        # GLU may need to be linked with std C++ and thread libraries explicitly
636        AC_CHECK_LIB([GLU], [gluPartialDisk],
637                     [GL_LIBS="-lGLU $GL_LIBS $STDCXX_LIB $THREAD_LIB"
638                      have_GLU=yes
639                      have_SGI_GLU=yes], ,
640                     [$GL_LIBS $STDCXX_LIB $THREAD_LIB])
641      fi
642    fi
643  fi
644
645  if test "x$have_GLU" = "xno" ; then
646    # if no GLU, check for MesaGLU
647    AC_CHECK_LIB([MesaGLU], [gluSphere],
648                 [GL_LIBS="-lMesaGLU $GL_LIBS"
649                  have_GLU=yes], ,
650                 [$GL_LIBS])
651  fi
652
653  if test "x$have_GLU" = "xno" ; then
654    # no GLU found
655    AC_MSG_ERROR([Cannot find GLU library])
656  fi
657
658  # Checks for SGI's GLU library
659  if test "x$have_SGI_GLU" = "xno" ; then
660    # Try static linking
661    save_LDFLAGS="$LDFLAGS"
662    LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
663
664    AC_CHECK_LIB([GLU], [gluBeginCurve],
665                 [have_SGI_GLU=no], ,
666                 [$GL_LIBS])
667    if test "x$ac_cv_lib_GLU_gluBeginCurve" = "xno" ; then
668      AC_CHECK_LIB([GLU], [gluBeginPolygon],
669                   [GL_LIBS="$GL_LIBS $STDCXX_LIB"
670                    have_SGI_GLU=yes], ,
671                   [$GL_LIBS $STDCXX_LIB])
672    fi
673
674    LDFLAGS="$save_LDFLAGS"
675  fi
676
677  AC_MSG_CHECKING([whether libGLU needs to be linked with the std C++ library])
678  AC_MSG_RESULT([$have_SGI_GLU])
679
680  # Checks for some types in gdk/GL/glxext.h
681
682  # GLXFBConfigSGIX
683  GDKGLEXT_NEED_GLXFBCONFIGSGIX_TYPEDEF=no
684  AC_CHECK_TYPES([GLXFBConfigSGIX], , ,
685                 [#include <GL/glx.h>])
686  if test "x$ac_cv_type_GLXFBConfigSGIX" = "xno" ; then
687    GDKGLEXT_NEED_GLXFBCONFIGSGIX_TYPEDEF=yes
688  fi
689
690  # GLXFBConfigIDSGIX
691  GDKGLEXT_NEED_GLXFBCONFIGIDSGIX_TYPEDEF=no
692  AC_CHECK_TYPES([GLXFBConfigIDSGIX], , ,
693                 [#include <GL/glx.h>])
694  if test "x$ac_cv_type_GLXFBConfigIDSGIX" = "xno" ; then
695    GDKGLEXT_NEED_GLXFBCONFIGIDSGIX_TYPEDEF=yes
696  fi
697
698  # GLXPbufferSGIX
699  GDKGLEXT_NEED_GLXPBUFFERSGIX_TYPEDEF=no
700  AC_CHECK_TYPES([GLXPbufferSGIX], , ,
701                 [#include <GL/glx.h>])
702  if test "x$ac_cv_type_GLXPbufferSGIX" = "xno" ; then
703    GDKGLEXT_NEED_GLXPBUFFERSGIX_TYPEDEF=yes
704  fi
705
706  # GLXVideoSourceSGIX
707  GDKGLEXT_NEED_GLXVIDEOSOURCESGIX_TYPEDEF=no
708  AC_CHECK_TYPES([GLXVideoSourceSGIX], , ,
709                 [#include <GL/glx.h>])
710  if test "x$ac_cv_type_GLXVideoSourceSGIX" = "xno" ; then
711    GDKGLEXT_NEED_GLXVIDEOSOURCESGIX_TYPEDEF=yes
712  fi
713
714  # __GLXextFuncPtr
715  GDKGLEXT_NEED_GLXEXTFUNCPTR_TYPEDEF=no
716  AC_CHECK_TYPES([__GLXextFuncPtr], , ,
717                 [#include <GL/glx.h>])
718  if test "x$ac_cv_type___GLXextFuncPtr" = "xno" ; then
719    GDKGLEXT_NEED_GLXEXTFUNCPTR_TYPEDEF=yes
720  fi
721
722else
723
724  # for Win32
725
726  AC_MSG_CHECKING([for glNewList in -lopengl32])
727  have_opengl32=no
728  LIBS="-lopengl32 $LIBS"
729  AC_TRY_LINK([#include <windows.h>
730               #include <GL/gl.h>],
731              [glVertex3d(0.0, 0.0, 0.0);],
732              [GL_LIBS="-lopengl32"
733               have_opengl32=yes])
734  AC_MSG_RESULT([$have_opengl32])
735  if test "x$have_opengl32" = "xno" ; then
736    AC_MSG_ERROR([Cannot find GL library])
737  fi
738
739  AC_MSG_CHECKING([for gluNewQuadric in -lglu32])
740  have_glu32=no
741  LIBS="-lglu32 $LIBS"
742  AC_TRY_LINK([#include <windows.h>
743               #include <GL/gl.h>
744               #include <GL/glu.h>],
745              [gluNewQuadric();],
746              [GL_LIBS="-lglu32 $GL_LIBS"
747               have_glu32=yes])
748  AC_MSG_RESULT([$have_glu32])
749  if test "x$have_glu32" = "xno" ; then
750    AC_MSG_ERROR([Cannot find GLU library])
751  fi
752
753dnl   AC_CHECK_LIB(opengl32, glNewList,
754dnl                GL_LIBS="-lopengl32",
755dnl                AC_MSG_ERROR(Cannot find GL library))
756
757dnl   AC_CHECK_LIB(glu32, gluNewQuadric,
758dnl                GL_LIBS="-lglu32 $GL_LIBS",
759dnl                AC_MSG_ERROR(Cannot find GLU library),
760dnl                $GL_LIBS)
761
762fi
763
764dnl # if using mesa, check for xmesa.h
765dnl if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then
766dnl   AC_CHECK_HEADERS([GL/xmesa.h])
767dnl   AM_CONDITIONAL(ENABLE_XMESA_FX, \
768dnl                  test "x$ac_cv_header_GL_xmesa_h" = "xyes")
769dnl else
770dnl   # force a failed check
771dnl   AM_CONDITIONAL(ENABLE_XMESA_FX, test "no" = "yes")
772dnl fi
773
774# Checks for typedefs in gdk/GL/glext.h
775
776# GLhalfNV
777GDKGLEXT_NEED_GLHALFNV_TYPEDEF=no
778AC_CHECK_TYPES([GLhalfNV], , ,
779               [#include <GL/gl.h>])
780if test "x$ac_cv_type_GLhalfNV" = "xno" ; then
781  GDKGLEXT_NEED_GLHALFNV_TYPEDEF=yes
782fi
783
784GL_LIBS="$GL_LDFLAGS $GL_LIBS"
785
786AC_SUBST([GL_CFLAGS])
787AC_SUBST([GL_LIBS])
788
789CPPFLAGS="$save_CPPFLAGS"
790LIBS="$save_LIBS"
791
792
793##################################################
794# CFLAGS and LIBS
795##################################################
796
797GDKGLEXT_PACKAGES="gdk_pkg pango_pkg pangox_pkg gmodule_pkg"
798GDKGLEXT_EXTRA_CFLAGS="$GL_CFLAGS $GDKGLEXT_WIN_CFLAGS"
799GDKGLEXT_EXTRA_LIBS="$GL_LIBS $GDKGLEXT_WIN_LIBS"
800GDKGLEXT_DEP_CFLAGS="$GDKGLEXT_EXTRA_CFLAGS `$PKG_CONFIG --cflags $GDKGLEXT_PACKAGES`"
801GDKGLEXT_DEP_LIBS="$GDKGLEXT_EXTRA_LIBS `$PKG_CONFIG --libs $GDKGLEXT_PACKAGES` $MATH_LIB"
802AC_SUBST([GDKGLEXT_PACKAGES])
803AC_SUBST([GDKGLEXT_EXTRA_CFLAGS])
804AC_SUBST([GDKGLEXT_EXTRA_LIBS])
805AC_SUBST([GDKGLEXT_DEP_CFLAGS])
806AC_SUBST([GDKGLEXT_DEP_LIBS])
807
808GTKGLEXT_PACKAGES="gtk_pkg"
809GTKGLEXT_EXTRA_CFLAGS=""
810GTKGLEXT_EXTRA_LIBS=""
811GTKGLEXT_DEP_CFLAGS="$GTKGLEXT_EXTRA_CFLAGS $GDKGLEXT_EXTRA_CFLAGS `$PKG_CONFIG --cflags $GDKGLEXT_PACKAGES $GTKGLEXT_PACKAGES`"
812GTKGLEXT_DEP_LIBS="$GTKGLEXT_EXTRA_LIBS $GDKGLEXT_EXTRA_LIBS `$PKG_CONFIG --libs $GDKGLEXT_PACKAGES $GTKGLEXT_PACKAGES` $MATH_LIB"
813AC_SUBST([GTKGLEXT_PACKAGES])
814AC_SUBST([GTKGLEXT_EXTRA_CFLAGS])
815AC_SUBST([GTKGLEXT_EXTRA_LIBS])
816AC_SUBST([GTKGLEXT_DEP_CFLAGS])
817AC_SUBST([GTKGLEXT_DEP_LIBS])
818
819# CFLAGS for examples
820EXAMPLES_DEP_CFLAGS="$GTKGLEXT_EXTRA_CFLAGS $GDKGLEXT_EXTRA_CFLAGS `$PKG_CONFIG --cflags $GDKGLEXT_PACKAGES $GTKGLEXT_PACKAGES pangoft2_pkg`"
821AC_SUBST([EXAMPLES_DEP_CFLAGS])
822
823# GtkGLExt dep libs + PangoFT2
824GTKGLEXT_DEP_LIBS_WITH_PANGOFT2="$GTKGLEXT_EXTRA_LIBS $GDKGLEXT_EXTRA_LIBS `$PKG_CONFIG --libs $GDKGLEXT_PACKAGES $GTKGLEXT_PACKAGES pangoft2_pkg` $MATH_LIB"
825AC_SUBST([GTKGLEXT_DEP_LIBS_WITH_PANGOFT2])
826
827
828##################################################
829# Checks for gtk-doc and docbook-tools
830##################################################
831
832AC_ARG_WITH([html-dir],
833            [AC_HELP_STRING([--with-html-dir=PATH],
834                            [path to installed docs])])
835
836if test "x$with_html_dir" = "x" ; then
837  HTML_DIR='${datadir}/gtk-doc/html'
838else
839  HTML_DIR=$with_html_dir
840fi
841
842AC_SUBST([HTML_DIR])
843
844dnl Make people enable the gtk-doc stuff explicitely.
845AC_ARG_ENABLE([gtk-doc],
846              [AC_HELP_STRING([--enable-gtk-doc],
847                              [use gtk-doc to build documentation [default=no]])], ,
848              [enable_gtk_doc=no])
849
850if test "x$enable_gtk_doc" = "xyes" ; then
851
852  gtk_doc_min_version=0.10
853
854  AC_CHECK_PROG([GTKDOC], [gtkdoc-mkdb], [true], [false])
855
856  if $GTKDOC ; then
857    gtk_doc_version=`gtkdoc-mkdb --version`
858    AC_MSG_CHECKING([gtk-doc version ($gtk_doc_version) >= $gtk_doc_min_version])
859
860    IFS="${IFS= 	}"; gtk_save_IFS="$IFS"; IFS="."
861    set $gtk_doc_version
862    for min in $gtk_doc_min_version ; do
863        cur=$1; shift
864        if test -z $min ; then break; fi
865        if test -z $cur ; then GTKDOC=false; break; fi
866        if test $cur -gt $min ; then break ; fi
867        if test $cur -lt $min ; then GTKDOC=false; break ; fi
868    done
869    IFS="$gtk_save_IFS"
870
871    if $GTKDOC ; then
872      AC_MSG_RESULT([yes])
873    else
874      AC_MSG_RESULT([no])
875    fi
876  fi
877
878  if test x$GTKDOC != xtrue ; then
879    enable_gtk_doc=no
880  fi
881
882fi
883
884AM_CONDITIONAL([ENABLE_GTK_DOC], [test "x$enable_gtk_doc" = "xyes"])
885
886
887##################################################
888# Output configuration header
889##################################################
890
891dnl this section will only be run if config.status is invoked with no
892dnl arguments, or with "gdk/gdkglext-config.h" as an argument.
893AC_CONFIG_COMMANDS([gdk/gdkglext-config.h],
894[
895  outfile=gdkglext-config.h-tmp
896  cat > $outfile <<\_______EOF
897/* gdkglext-config.h
898 *
899 * This is a generated file.  Please modify `configure.in'
900 */
901
902#ifndef GDKGLEXT_CONFIG_H
903#define GDKGLEXT_CONFIG_H
904
905#ifdef __cplusplus
906extern "C" {
907#endif /* __cplusplus */
908
909_______EOF
910
911	cat >>$outfile <<_______EOF
912$gdkglext_windowing
913$gdkglext_multihead_support
914_______EOF
915
916	cat >>$outfile <<_______EOF
917
918#if !defined(GDKGLEXT_MULTIHEAD_SUPPORT) && defined(GDK_MULTIHEAD_SAFE)
919#error "Installed GdkGLExt library doesn't have multihead support."
920#endif
921
922_______EOF
923
924	cat >>$outfile <<_______EOF
925$gdkglext_need_glxfbconfigsgix_typedef
926$gdkglext_need_glxfbconfigidsgix_typedef
927$gdkglext_need_glxpbuffersgix_typedef
928$gdkglext_need_glxvideosourcesgix_typedef
929$gdkglext_need_glxextfuncptr_typedef
930$gdkglext_need_glhalfnv_typedef
931_______EOF
932
933	cat >>$outfile <<_______EOF
934
935#ifdef __cplusplus
936}
937#endif /* __cplusplus */
938
939#endif /* GDKGLEXT_CONFIG_H */
940_______EOF
941
942
943  if cmp -s $outfile gdk/gdkglext-config.h; then
944    AC_MSG_NOTICE([gdk/gdkglext-config.h is unchanged])
945    rm -f $outfile
946  else
947    mv $outfile gdk/gdkglext-config.h
948  fi
949
950],[
951
952if test "x$gdktarget" = "xx11" ; then
953  gdkglext_windowing='
954#define GDKGLEXT_WINDOWING_X11'
955elif test "x$gdktarget" = "xwin32" ; then
956  gdkglext_windowing='
957#define GDKGLEXT_WINDOWING_WIN32'
958fi
959
960if test "x$GDKGLEXT_MULTIHEAD_SUPPORT" = "xyes"; then
961  gdkglext_multihead_support='
962#define GDKGLEXT_MULTIHEAD_SUPPORT'
963fi
964
965if test "x$GDKGLEXT_NEED_GLXFBCONFIGSGIX_TYPEDEF" = "xyes"; then
966  gdkglext_need_glxfbconfigsgix_typedef='
967#define GDKGLEXT_NEED_GLXFBCONFIGSGIX_TYPEDEF'
968fi
969
970if test "x$GDKGLEXT_NEED_GLXFBCONFIGIDSGIX_TYPEDEF" = "xyes"; then
971  gdkglext_need_glxfbconfigidsgix_typedef='
972#define GDKGLEXT_NEED_GLXFBCONFIGIDSGIX_TYPEDEF'
973fi
974
975if test "x$GDKGLEXT_NEED_GLXPBUFFERSGIX_TYPEDEF" = "xyes"; then
976  gdkglext_need_glxpbuffersgix_typedef='
977#define GDKGLEXT_NEED_GLXPBUFFERSGIX_TYPEDEF'
978fi
979
980if test "x$GDKGLEXT_NEED_GLXVIDEOSOURCESGIX_TYPEDEF" = "xyes"; then
981  gdkglext_need_glxvideosourcesgix_typedef='
982#define GDKGLEXT_NEED_GLXVIDEOSOURCESGIX_TYPEDEF'
983fi
984
985if test "x$GDKGLEXT_NEED_GLXEXTFUNCPTR_TYPEDEF" = "xyes"; then
986  gdkglext_need_glxextfuncptr_typedef='
987#define GDKGLEXT_NEED_GLXEXTFUNCPTR_TYPEDEF'
988fi
989
990if test "x$GDKGLEXT_NEED_GLHALFNV_TYPEDEF" = "xyes"; then
991  gdkglext_need_glhalfnv_typedef='
992#define GDKGLEXT_NEED_GLHALFNV_TYPEDEF'
993fi
994
995])
996
997
998##################################################
999# Config files
1000##################################################
1001
1002AC_CONFIG_FILES([
1003gdkglext.pc
1004gtkglext.pc
1005gdkglext-uninstalled.pc
1006gtkglext-uninstalled.pc
1007gtkglext.spec
1008gtkglext.nsi
1009Makefile
1010gdk/Makefile
1011gdk/gdkglversion.h
1012gdk/glext/Makefile
1013gdk/x11/Makefile
1014gdk/win32/Makefile
1015gtk/Makefile
1016gtk/gtkglversion.h
1017m4macros/Makefile
1018docs/Makefile
1019docs/reference/Makefile
1020docs/reference/gtkglext/Makefile
1021docs/reference/gtkglext/version.xml
1022examples/Makefile
1023examples/glade/Makefile
1024])
1025
1026AC_OUTPUT
1027
1028
1029##################################################
1030# Print configuration
1031##################################################
1032
1033echo "
1034configuration:
1035	OpenGL CFLAGS:		$GL_CFLAGS
1036	OpenGL LIBS:		$GL_LIBS
1037	multihead support:	$GDKGLEXT_MULTIHEAD_SUPPORT
1038	debug:			$enable_debug
1039	extra defs:		$GDKGLEXT_WIN_EXTRA_DEFS
1040"
1041