http://packetstormsecurity.org/UNIX/admin/xscreensaver-4.04.2.tar.gz
[xscreensaver] / configure.in
1 # configure.in --- xscreensaver, Copyright (c) 1997-2000 Jamie Zawinski.
2 #
3
4 AC_PREREQ(2.52)
5 AC_INIT(driver/subprocs.c)
6 AC_CONFIG_HEADER(config.h)
7
8 echo "current directory: `pwd`"
9 echo "command line was: $0 $@"
10
11
12 # After checking to see that --srcdir is correct (which AC_INIT does)
13 # check for some random other files that come later in the tar file,
14 # to make sure everything is here.
15 #
16 for d in driver utils hacks hacks/glx ; do
17   f=$srcdir/$d/Makefile.in
18   if test \! -r $f ; then
19     echo ""
20     echo "ERROR: The package is incomplete: $f does not exist."
21     echo "       This probably means that your download was truncated."
22     echo ""
23     exit 1
24   fi
25 done
26
27 ###############################################################################
28 #
29 #       Function to figure out how to run the compiler.
30 #
31 ###############################################################################
32
33 AC_DEFUN(AC_PROG_CC_ANSI,
34  [AC_PROG_CC
35
36   if test -z "$GCC"; then
37     AC_MSG_CHECKING(how to request ANSI compilation)
38     case "$host" in
39       *-hpux* )
40         AC_MSG_RESULT(HPUX: adding -Ae)
41         CC="$CC -Ae"
42       ;;
43       *-aix* )
44         AC_MSG_RESULT(AIX: adding -qlanglvl=ansi -qhalt=e)
45         CC="$CC -qlanglvl=ansi -qhalt=e"
46       ;;
47
48       *-dec-* )
49         AC_MSG_RESULT(DEC: adding -std1 -ieee)
50         CC="$CC -std1"
51       ;;
52
53       *)
54         AC_MSG_RESULT(no idea)
55       ;;
56     esac
57   fi
58
59   AC_MSG_CHECKING([whether the compiler works on ANSI C])
60   AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
61      AC_MSG_RESULT(yes),
62      AC_MSG_RESULT(no)
63      AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.),
64      AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.))
65
66   if test -n "$GCC"; then
67     AC_MSG_RESULT(Turning on gcc compiler warnings.)
68     CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
69   else
70     case "$host" in
71       *-irix5* |*-irix6.[0-3]* )
72         AC_MSG_RESULT(Turning on SGI compiler warnings.)
73         CC="$CC -fullwarn -use_readonly_const -rdata_shared -g3"
74       ;;
75 #     *-dec-osf* )
76 #       if test -z "$GCC"; then
77 #         AC_MSG_RESULT(Turning on DEC C compiler warnings.)
78 #         CC="$CC -migrate -w0 -verbose -warnprotos"
79 #       fi
80 #     ;;
81     esac
82   fi
83 ])
84
85
86 ###############################################################################
87 #
88 #       Functions to figure out how to disable // comments in ANSI C code.
89 #
90 #       (With recent gcc, this is done with "-std=c89".  With older gcc, this
91 #       is done by passing "-lang-c89" to cpp, by passing "-Wp,-lang-c89" to
92 #       gcc.  Old gcc doesn't support -std, and new gcc doesn't support -lang.
93 #       so much for compatibility!)
94 #
95 ###############################################################################
96
97 AC_DEFUN(AC_GCC_ACCEPTS_STD,
98  [if test -n "$GCC"; then
99    AC_CACHE_CHECK([whether gcc accepts -std],
100      ac_cv_gcc_accepts_std,
101     [if ( ( gcc -E -std=c89 - </dev/null >/dev/null ) 2>&1 | \
102           grep unrecognized >/dev/null ); then
103        ac_cv_gcc_accepts_std=no
104      else
105        ac_cv_gcc_accepts_std=yes
106      fi])
107    ac_gcc_accepts_std="$ac_cv_gcc_accepts_std"
108   fi
109 ])
110
111 AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
112  [if test -n "$GCC"; then
113    AC_GCC_ACCEPTS_STD
114    AC_MSG_RESULT(Disabling C++ comments in ANSI C code.)
115    #
116    # The reason that // comments are banned from xscreensaver is that gcc is
117    # basically the only compiler in the world that supports them in C code.
118    # All other vendors support them only in their C++ compilers, not in their
119    # ANSI C compilers.  This means that it's a portability problem: every time
120    # these comments have snuck into the xscreensaver source code, I've gotten
121    # complaints about it the next day.  So we turn off support for them in gcc
122    # as well to prevent them from accidentially slipping in.
123    #
124    if test "$ac_gcc_accepts_std" = yes ; then
125      #
126      # -std=c89 defines __STRICT_ANSI__, which we don't want.
127      # (That appears to be the only additional preprocessor symbol
128      # it defines, in addition to the syntax changes it makes.)
129      #
130      # -std=gnu89 is no good, because // comments were a GNU extension
131      # before they were in the ANSI C 99 spec...  (gcc 2.96 permits //
132      # with -std=gnu89 but not with -std=c89.)
133      #
134      CC="$CC -std=c89 -U__STRICT_ANSI__"
135    else
136      # The old way:
137      CC="$CC -Wp,-lang-c89"
138    fi
139   fi
140 ])
141
142
143 ###############################################################################
144 #
145 #       Function to figure out how to create directory trees.
146 #
147 ###############################################################################
148
149 AC_DEFUN(AC_PROG_INSTALL_DIRS,
150  [AC_CACHE_CHECK([whether \"\${INSTALL} -d\" creates intermediate directories],
151     ac_cv_install_d_creates_dirs,
152     [ac_cv_install_d_creates_dirs=no
153      rm -rf conftestdir
154      if mkdir conftestdir; then
155        cd conftestdir 2>/dev/null
156        ${INSTALL} -d `pwd`/dir1/dir2 >/dev/null 2>&1
157        if test -d dir1/dir2/. ; then
158          ac_cv_install_d_creates_dirs=yes
159        fi
160        cd .. 2>/dev/null
161        rm -rf conftestdir
162      fi
163     ])
164
165   if test "$ac_cv_install_d_creates_dirs" = no ; then
166     AC_CACHE_CHECK([whether \"mkdir -p\" creates intermediate directories],
167       ac_cv_mkdir_p_creates_dirs,
168       [ac_cv_mkdir_p_creates_dirs=no
169        rm -rf conftestdir
170        if mkdir conftestdir; then
171          cd conftestdir 2>/dev/null
172          mkdir -p dir1/dir2 >/dev/null 2>&1
173          if test -d dir1/dir2/. ; then
174            ac_cv_mkdir_p_creates_dirs=yes
175          fi
176          cd .. 2>/dev/null
177          rm -rf conftestdir
178        fi
179       ])
180   fi
181
182   if test "$ac_cv_install_d_creates_dirs" = yes ; then
183     INSTALL_DIRS='${INSTALL} -d'
184   elif test "$ac_cv_mkdir_p_creates_dirs" = yes ; then
185     INSTALL_DIRS='mkdir -p'
186   else
187     # any other ideas?
188     INSTALL_DIRS='${INSTALL} -d'
189   fi
190 ])
191
192
193 ###############################################################################
194 #
195 #       Function to check whether gettimeofday() exists, and how to call it.
196 #       This may define HAVE_GETTIMEOFDAY and GETTIMEOFDAY_TWO_ARGS.
197 #
198 ###############################################################################
199
200 AC_DEFUN(AC_GETTIMEOFDAY_ARGS,
201  [AC_MSG_CHECKING(how to call gettimeofday)
202   AC_CACHE_VAL(ac_cv_gettimeofday_args,
203    [AC_TRY_COMPILE([#include <stdlib.h>
204                     #include <sys/time.h>],
205                    [struct timeval tv; struct timezone tzp;
206                     gettimeofday(&tv, &tzp);],
207                    [ac_gettimeofday_args=2],
208                    [AC_TRY_COMPILE([#include <stdlib.h>
209                                     #include <sys/time.h>],
210                                    [struct timeval tv; gettimeofday(&tv);],
211                                    [ac_gettimeofday_args=1],
212                                    [ac_gettimeofday_args=0])])
213     ac_cv_gettimeofday_args=$ac_gettimeofday_args])
214   ac_gettimeofday_args=$ac_cv_gettimeofday_args
215   if test "$ac_gettimeofday_args" = 1 ; then
216     AC_DEFINE(HAVE_GETTIMEOFDAY)
217     AC_MSG_RESULT(one argument)
218   elif test "$ac_gettimeofday_args" = 2 ; then
219     AC_DEFINE(HAVE_GETTIMEOFDAY)
220     AC_DEFINE(GETTIMEOFDAY_TWO_ARGS)
221     AC_MSG_RESULT(two arguments)
222   else
223     AC_MSG_RESULT(unknown)
224   fi
225 ])
226
227
228 ###############################################################################
229 #
230 #       Function to find perl5 (defines PERL and PERL_VERSION.)
231 #
232 ###############################################################################
233
234 # M4 sucks!!  perl sucks too!!
235 changequote(X,Y)
236 perl_version_cmd='print $]'
237 changequote([,])
238
239 AC_DEFUN(AC_PROG_PERL,
240  [AC_PATH_PROGS(PERL, [perl5 perl],,)
241   if test -z "$PERL" ; then
242     PERL_VERSION=0
243   else
244     AC_CACHE_CHECK([perl version], ac_cv_perl_version,
245                    [ac_cv_perl_version=`$PERL -e "$perl_version_cmd"`])
246     PERL_VERSION=$ac_cv_perl_version
247   fi
248  ])
249
250
251 ###############################################################################
252 #
253 #       Function to demand "bc".  Losers.
254 #
255 ###############################################################################
256
257 AC_DEFUN(AC_DEMAND_BC,
258  [ac_bc_result=`echo 6+9 | bc 2>/dev/null`
259   AC_MSG_CHECKING([for bc])
260   if test "$ac_bc_result" = "15" ; then
261     AC_MSG_RESULT(yes)
262   else
263     AC_MSG_RESULT(no)
264     echo ''
265     AC_MSG_ERROR([Your system doesn't have \"bc\", which has been a standard
266                   part of Unix since the 1970s.  Come back when your vendor
267                   has grown a clue.])
268   fi
269  ])
270
271 ###############################################################################
272 #
273 #       Functions to check how to do ICMP PING requests.
274 #
275 ###############################################################################
276
277 AC_DEFUN(AC_CHECK_ICMP,
278  [AC_CACHE_CHECK([for struct icmp], ac_cv_have_icmp,
279   [AC_TRY_COMPILE([#include <stdlib.h>
280                    #include <stdio.h>
281                    #include <math.h>
282                    #include <unistd.h>
283                    #include <limits.h>
284                    #include <signal.h>
285                    #include <fcntl.h>
286                    #include <sys/types.h>
287                    #include <sys/time.h>
288                    #include <sys/ipc.h>
289                    #include <sys/shm.h>
290                    #include <sys/socket.h>
291                    #include <netinet/in_systm.h>
292                    #include <netinet/in.h>
293                    #include <netinet/ip.h>
294                    #include <netinet/ip_icmp.h>
295                    #include <netinet/udp.h>
296                    #include <arpa/inet.h>
297                    #include <netdb.h>],
298                   [struct icmp i;
299                    struct sockaddr s;
300                    struct sockaddr_in si;
301                    struct ip ip;
302                    i.icmp_type = ICMP_ECHO;
303                    i.icmp_code = 0;
304                    i.icmp_cksum = 0;
305                    i.icmp_id = 0;
306                    i.icmp_seq = 0;
307                    si.sin_family = AF_INET;
308                    #if defined(__DECC) || defined(_IP_VHL)
309                    ip.ip_vhl = 0;
310                    #else
311                    ip.ip_hl = 0;
312                    #endif
313                    ],
314                   [ac_cv_have_icmp=yes],
315                   [ac_cv_have_icmp=no])])
316  if test "$ac_cv_have_icmp" = yes ; then
317    AC_DEFINE(HAVE_ICMP)
318  fi])
319
320 AC_DEFUN(AC_CHECK_ICMPHDR,
321  [AC_CACHE_CHECK([for struct icmphdr], ac_cv_have_icmphdr,
322   [AC_TRY_COMPILE([#include <stdlib.h>
323                    #include <stdio.h>
324                    #include <math.h>
325                    #include <unistd.h>
326                    #include <limits.h>
327                    #include <signal.h>
328                    #include <fcntl.h>
329                    #include <sys/types.h>
330                    #include <sys/time.h>
331                    #include <sys/ipc.h>
332                    #include <sys/shm.h>
333                    #include <sys/socket.h>
334                    #include <netinet/in_systm.h>
335                    #include <netinet/in.h>
336                    #include <netinet/ip.h>
337                    #include <netinet/ip_icmp.h>
338                    #include <netinet/udp.h>
339                    #include <arpa/inet.h>
340                    #include <netdb.h>],
341                   [struct icmphdr i;
342                    struct sockaddr s;
343                    struct sockaddr_in si;
344                    struct ip ip;
345                    i.type = ICMP_ECHO;
346                    i.code = 0;
347                    i.checksum = 0;
348                    i.un.echo.id = 0;
349                    i.un.echo.sequence = 0;
350                    si.sin_family = AF_INET;
351                    ip.ip_hl = 0;],
352                   [ac_cv_have_icmphdr=yes],
353                   [ac_cv_have_icmphdr=no])])
354  if test "$ac_cv_have_icmphdr" = yes ; then
355    AC_DEFINE(HAVE_ICMPHDR)
356  fi])
357
358
359 ###############################################################################
360 #
361 #       Functions to check for various X11 crap.
362 #
363 ###############################################################################
364
365 # Try and find the app-defaults directory.
366 # It sucks that autoconf doesn't do this already...
367 #
368 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,[
369   rm -fr conftestdir
370   if mkdir conftestdir; then
371     cd conftestdir 2>/dev/null
372     # Make sure to not put "make" in the Imakefile rules, since we grep it out.
373     cat > Imakefile <<'EOF'
374 acfindx:
375         @echo 'ac_x_app_defaults="${XAPPLOADDIR}"'
376 EOF
377     if (xmkmf) >/dev/null 2>&1 && test -f Makefile; then
378       # GNU make sometimes prints "make[1]: Entering...", which'd confuse us.
379       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
380     fi
381     cd .. 2>/dev/null
382     rm -fr conftestdir
383   fi])
384
385 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
386   # Look for the directory under a standard set of common directories.
387   # Check X11 before X11Rn because it's often a symlink to the current release.
388   for ac_dir in                                 \
389     /usr/X11/lib/app-defaults                   \
390     /usr/X11R6/lib/app-defaults                 \
391     /usr/X11R6/lib/X11/app-defaults             \
392     /usr/X11R5/lib/app-defaults                 \
393     /usr/X11R5/lib/X11/app-defaults             \
394     /usr/X11R4/lib/app-defaults                 \
395     /usr/X11R4/lib/X11/app-defaults             \
396                                                 \
397     /usr/lib/X11/app-defaults                   \
398     /usr/lib/X11R6/app-defaults                 \
399     /usr/lib/X11R5/app-defaults                 \
400     /usr/lib/X11R4/app-defaults                 \
401                                                 \
402     /usr/local/X11/lib/app-defaults             \
403     /usr/local/X11R6/lib/app-defaults           \
404     /usr/local/X11R5/lib/app-defaults           \
405     /usr/local/X11R4/lib/app-defaults           \
406                                                 \
407     /usr/local/lib/X11/app-defaults             \
408     /usr/local/lib/X11R6/app-defaults           \
409     /usr/local/lib/X11R6/X11/app-defaults       \
410     /usr/local/lib/X11R5/app-defaults           \
411     /usr/local/lib/X11R5/X11/app-defaults       \
412     /usr/local/lib/X11R4/app-defaults           \
413     /usr/local/lib/X11R4/X11/app-defaults       \
414                                                 \
415     /usr/X386/lib/X11/app-defaults              \
416     /usr/x386/lib/X11/app-defaults              \
417     /usr/XFree86/lib/X11/app-defaults           \
418                                                 \
419     /usr/lib/X11/app-defaults                   \
420     /usr/local/lib/X11/app-defaults             \
421     /usr/unsupported/lib/X11/app-defaults       \
422     /usr/athena/lib/X11/app-defaults            \
423     /usr/local/x11r5/lib/X11/app-defaults       \
424     /usr/lpp/Xamples/lib/X11/app-defaults       \
425     /lib/usr/lib/X11/app-defaults               \
426                                                 \
427     /usr/openwin/lib/app-defaults               \
428     /usr/openwin/lib/X11/app-defaults           \
429     /usr/openwin/share/lib/app-defaults         \
430     /usr/openwin/share/lib/X11/app-defaults     \
431                                                 \
432     /X11R6/lib/app-defaults                     \
433     /X11R5/lib/app-defaults                     \
434     /X11R4/lib/app-defaults                     \
435     ; \
436   do
437     if test -d "$ac_dir"; then
438       ac_x_app_defaults=$ac_dir
439       break
440     fi
441   done
442 ])
443
444 AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
445   [AC_REQUIRE_CPP()
446     AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
447      [AC_PATH_X_APP_DEFAULTS_XMKMF
448       if test x"$ac_x_app_defaults" = x; then
449         AC_PATH_X_APP_DEFAULTS_DIRECT
450       fi
451       if test x"$ac_x_app_defaults" = x; then
452         ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
453       else
454         # Record where we found app-defaults for the cache.
455         ac_cv_x_app_defaults="$ac_x_app_defaults"
456       fi])
457     eval ac_x_app_defaults="$ac_cv_x_app_defaults"])
458
459
460 AC_DEFUN(AC_XPOINTER,
461  [AC_CACHE_CHECK([for XPointer], ac_cv_xpointer,
462                  [AC_TRY_X_COMPILE([#include <X11/Xlib.h>],
463                                    [XPointer foo = (XPointer) 0;],
464                                    [ac_cv_xpointer=yes],
465                                    [ac_cv_xpointer=no])])
466   if test "$ac_cv_xpointer" != yes; then
467    AC_DEFINE(XPointer,[char*])
468   fi])
469
470
471 # Random special-cases for X on certain pathological OSes.
472 # You know who you are.
473 #
474 AC_DEFUN(AC_X_RANDOM_PATHS,
475  [case "$host" in
476     *-hpux*)
477
478       # The following arcana was gleaned from conversations with
479       # Eric Schwartz <erics@col.hp.com>:
480       #
481       # On HPUX 10.x, the parts of X that HP considers "standard" live in
482       # /usr/{include,lib}/X11R6/.  The parts that HP doesn't consider
483       # "standard", notably, Xaw and Xmu, live in /usr/contrib/X11R6/.
484       # Yet /usr/contrib/X11R6/ comes preinstalled on all HPUX systems.
485       # Also, there are symlinks from /usr/include/ and /usr/lib/ into
486       # /usr/{include,lib}/X11R6/, so that (if you don't use Xmu at all)
487       # you don't need any -I or -L arguments.
488       #
489       # On HPUX 9.x, /usr/{include,lib}/X11R5/ and /usr/contrib/X11R5/
490       # are the same division as 10.x.  However, there are no symlinks to
491       # the X stuff from /usr/include/ and /usr/lib/, so -I and -L
492       # arguments are always necessary.
493       #
494       # However, X11R6 was available on HPUX 9.x as a patch: if that
495       # patch was installed, then all of X11R6 went in to
496       # /usr/contrib/X11R6/ (there was no /usr/{include,lib}/X11R6/.)
497       #
498       # HPUX 8.x was the same as 9.x, but was X11R4 instead (I don't know
499       # whether R5 was available as a patch; R6 undoubtedly was not.)
500       #
501       # So.  We try and use the highest numbered pair of
502       # /usr/{include,lib}/X11R?/ and /usr/contrib/X11R?/{include,lib}/
503       # that are available.  We do not mix and match different versions
504       # of X.
505       #
506       # Question I still don't know the answer to: (do you?)
507       #
508       #   * On HPUX 9.x, where /usr/include/X11R5/ was standard, and
509       #     /usr/contrib/X11R6/ could be installed as a patch, what was in
510       #     that contrib directory?  Did it contain so-called "standard"
511       #     X11R6, or did it include Xaw and Xmu as well?  If the former,
512       #     where did one find Xaw and Xmu on 9.x R6 systems?  Would this
513       #     be a situation where one had to reach into the R5 headers and
514       #     libs to find Xmu?  That is, must both R6 and R5 directories
515       #     be on the -I and -L lists in that case?
516       #
517       for version in X11R6 X11R5 X11R4 ; do
518         # if either pair of directories exists...
519         if test -d /usr/include/$version || test -d /usr/contrib/$version/include
520         then
521            # if contrib exists, use it...
522            if test -d /usr/contrib/$version/include ; then
523              X_CFLAGS="$X_CFLAGS -I/usr/contrib/$version/include"
524              X_LIBS="$X_LIBS -L/usr/contrib/$version/lib"
525            fi
526            # if the "standard" one exists, use it.
527            if test -d /usr/include/$version ; then
528              X_CFLAGS="$X_CFLAGS -I/usr/include/$version"
529              X_LIBS="$X_LIBS -L/usr/lib/$version"
530            fi
531            # since at least one of the pair exists, go no farther.
532            break
533         fi
534       done
535
536       # Now find Motif.  Thanks for not making xmkmf find this by
537       # default, you losers.
538       #
539       if test -d /usr/include/Motif2.1 ; then
540         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif2.1"
541         X_LIBS="$X_LIBS -L/usr/lib/Motif2.1"
542       elif test -d /usr/include/Motif1.2 ; then
543         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.2"
544         X_LIBS="$X_LIBS -L/usr/lib/Motif1.2"
545       elif test -d /usr/include/Motif1.1 ; then
546         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.1"
547         X_LIBS="$X_LIBS -L/usr/lib/Motif1.1"
548       fi
549
550       # Now let's check for the pseudo-standard locations for OpenGL and XPM.
551       #
552       if test -d /opt/graphics/OpenGL/include ; then
553         # HP-UX 10.20 puts it here
554         X_CFLAGS="-I/opt/graphics/OpenGL/include $X_CFLAGS"
555         X_LIBS="-L/opt/graphics/OpenGL/lib $X_LIBS"
556       elif test -d /opt/Mesa/lib ; then
557         X_CFLAGS="-I/opt/Mesa/include $X_CFLAGS"
558         X_LIBS="-L/opt/Mesa/lib $X_LIBS"
559       fi
560
561
562       if test -d /opt/xpm/lib/X11 ; then
563         X_CFLAGS="-I/opt/xpm/include $X_CFLAGS"
564         X_LIBS="-L/opt/xpm/lib/X11 $X_LIBS"
565       fi
566
567       # On HPUX, default to installing in /opt/xscreensaver/ instead of
568       # in /usr/local/, unless there is already an xscreensaver in
569       # /usr/local/bin/.  This can be overridden with the --prefix arg
570       # to configure.  I'm not sure this is the right thing to do, but
571       # Richard Lloyd says so...
572       #
573       if test \! -x /usr/local/bin/xscreensaver ; then
574         ac_default_prefix=/opt/xscreensaver
575       fi
576
577     ;;
578     *-solaris*)
579
580       # Thanks for not making xmkmf find this by default, pinheads.
581       # And thanks for moving things around again, too.  Is this
582       # really the standard location now?  What happened to the
583       # joke that this kind of thing went in /opt?
584       # cthomp says "answer: CDE (Common Disorganized Environment)"
585       #
586       if test -f /usr/dt/include/Xm/Xm.h ; then
587         X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
588         X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib"
589
590         # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
591         AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"])
592       fi
593     ;;
594   esac])
595
596
597
598 ###############################################################################
599 #
600 #       Some utility functions to make checking for X things easier.
601 #
602 ###############################################################################
603
604 # Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
605 #
606 AC_DEFUN(AC_CHECK_X_HEADER, [
607   ac_save_CPPFLAGS="$CPPFLAGS"
608   if test \! -z "$includedir" ; then 
609     CPPFLAGS="$CPPFLAGS -I$includedir"
610   fi
611   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
612   AC_CHECK_HEADER([$1],[$2],[$3],[$4])
613   CPPFLAGS="$ac_save_CPPFLAGS"])
614
615 # Like AC_EGREP_HEADER, but it uses the already-computed -I directories.
616 #
617 AC_DEFUN(AC_EGREP_X_HEADER, [
618   ac_save_CPPFLAGS="$CPPFLAGS"
619   if test \! -z "$includedir" ; then 
620     CPPFLAGS="$CPPFLAGS -I$includedir"
621   fi
622   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
623   AC_EGREP_HEADER([$1], [$2], [$3], [$4])
624   CPPFLAGS="$ac_save_CPPFLAGS"])
625
626 # Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
627 #
628 AC_DEFUN(AC_TRY_X_COMPILE, [
629   ac_save_CPPFLAGS="$CPPFLAGS"
630   if test \! -z "$includedir" ; then 
631     CPPFLAGS="$CPPFLAGS -I$includedir"
632   fi
633   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
634   AC_TRY_COMPILE([$1], [$2], [$3], [$4])
635   CPPFLAGS="$ac_save_CPPFLAGS"])
636
637
638 # Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
639 # Use this sparingly; it probably doesn't work very well on X programs.
640 #
641 AC_DEFUN(AC_CHECK_X_LIB, [
642   ac_save_CPPFLAGS="$CPPFLAGS"
643   ac_save_LDFLAGS="$LDFLAGS"
644 #  ac_save_LIBS="$LIBS"
645
646   if test \! -z "$includedir" ; then 
647     CPPFLAGS="$CPPFLAGS -I$includedir"
648   fi
649   # note: $X_CFLAGS includes $x_includes
650   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
651
652   if test \! -z "$libdir" ; then
653     LDFLAGS="$LDFLAGS -L$libdir"
654   fi
655   # note: $X_LIBS includes $x_libraries
656   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
657
658   AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
659   CPPFLAGS="$ac_save_CPPFLAGS"
660   LDFLAGS="$ac_save_LDFLAGS"
661 #  LIBS="$ac_save_LIBS"
662   ])
663
664 # Like AC_TRY_RUN, but it uses the already-computed -I directories.
665 # (But not the -L directories!)
666 #
667 AC_DEFUN(AC_TRY_X_RUN, [
668   ac_save_CPPFLAGS="$CPPFLAGS"
669   if test \! -z "$includedir" ; then 
670     CPPFLAGS="$CPPFLAGS -I$includedir"
671   fi
672   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
673   AC_TRY_RUN([$1], [$2], [$3], [$4])
674   CPPFLAGS="$ac_save_CPPFLAGS"])
675
676
677
678 # Usage: HANDLE_X_PATH_ARG([variable_name],
679 #                          [--command-line-option],
680 #                          [descriptive string])
681 #
682 # All of the --with options take three forms:
683 #
684 #   --with-foo (or --with-foo=yes)
685 #   --without-foo (or --with-foo=no)
686 #   --with-foo=/DIR
687 #
688 # This function, HANDLE_X_PATH_ARG, deals with the /DIR case.  When it sees
689 # a directory (string beginning with a slash) it checks to see whether
690 # /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
691 # as appropriate.
692 #
693 AC_DEFUN(HANDLE_X_PATH_ARG, [
694    case "$[$1]" in
695     yes) ;;
696     no)  ;;
697
698     /*)
699      AC_MSG_CHECKING([for [$3] headers])
700      d=$[$1]/include
701      if test -d $d; then
702        X_CFLAGS="-I$d $X_CFLAGS"
703        AC_MSG_RESULT($d)
704      else
705        AC_MSG_RESULT(not found ($d: no such directory))
706      fi
707
708      AC_MSG_CHECKING([for [$3] libs])
709      d=$[$1]/lib
710      if test -d $d; then
711        X_LIBS="-L$d $X_LIBS"
712        AC_MSG_RESULT($d)
713      else
714        AC_MSG_RESULT(not found ($d: no such directory))
715      fi
716
717      # replace the directory string with "yes".
718      [$1]_req="yes"
719      [$1]=$[$1]_req
720      ;;
721
722     *)
723      echo ""
724      echo "error: argument to [$2] must be \"yes\", \"no\", or a directory."
725      echo "       If it is a directory, then \`DIR/include' will be added to"
726      echo "       the -I list, and \`DIR/lib' will be added to the -L list."
727      exit 1
728      ;;
729    esac
730   ])
731
732
733
734 ###############################################################################
735 ###############################################################################
736 #
737 #       End of function definitions.  Now start actually executing stuff.
738 #
739 ###############################################################################
740 ###############################################################################
741
742 # random compiler setup
743 AC_CANONICAL_HOST
744 AC_PROG_CC_ANSI
745 AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
746 AC_PROG_CPP
747 AC_C_CONST
748 AC_C_INLINE
749 AC_EXEEXT
750 AC_DEMAND_BC
751
752 # stuff for Makefiles
753 AC_PROG_INSTALL
754 AC_PROG_INSTALL_DIRS
755 AC_PROG_MAKE_SET
756
757 # By default, autoconf sets INSTALL_SCRIPT to '${INSTALL_PROGRAM}'.
758 # That's wrong: it should be set to '${INSTALL}', so that one can
759 # implement the "install-strip" target properly (strip executables,
760 # but do not try to strip scripts.)
761 #
762 INSTALL_SCRIPT='${INSTALL}'
763
764 # random libc stuff
765 AC_HEADER_STDC
766 AC_CHECK_HEADERS(unistd.h)
767 AC_TYPE_MODE_T
768 AC_TYPE_PID_T
769 AC_TYPE_SIZE_T
770 AC_TYPE_SIGNAL
771 AC_HEADER_TIME
772 AC_HEADER_SYS_WAIT
773 AC_HEADER_DIRENT
774 AC_GETTIMEOFDAY_ARGS
775 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk)
776
777 AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
778 AC_CHECK_ICMP
779 AC_CHECK_ICMPHDR
780 AC_CHECK_HEADERS(crypt.h sys/select.h)
781 AC_PROG_PERL
782
783 if test -z "$PERL" ; then
784   # don't let it be blank...
785   PERL=/usr/bin/perl
786 fi
787
788 AC_PATH_XTRA
789
790 if test "$have_x" != yes; then
791   AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try \`$0 --help'.)
792 fi
793
794 AC_PATH_X_APP_DEFAULTS
795 AC_X_RANDOM_PATHS
796 AC_XPOINTER
797
798
799 ###############################################################################
800 #
801 #       Gettext support
802 #
803 ###############################################################################
804
805 AC_PROG_INTLTOOL
806 GETTEXT_PACKAGE=xscreensaver
807 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
808 AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE")
809 AC_SUBST(GETTEXT_PACKAGE)
810
811 # #### no sign of  en_GB
812 #ALL_LINGUAS="ca de en_GB et fr it ko pl sv da es fi hu ja no pt pt_BR ru wa"
813 ALL_LINGUAS="ca de et fr it ko pl sv da es fi hu ja no pt pt_BR ru wa"
814 AM_GLIB_GNU_GETTEXT
815
816
817 ###############################################################################
818 #
819 #       Check for -lXmu (some fucked up vendors don't ship it...)
820 #
821 ###############################################################################
822
823 have_xmu=no
824 AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes],,
825                   [#include <stdlib.h>
826                    #include <stdio.h>
827                    #include <X11/Intrinsic.h>])
828 if test "$have_xmu" = no ; then
829   XMU_SRCS='$(UTILS_SRC)/xmu.c'
830   XMU_OBJS='$(UTILS_BIN)/xmu.o'
831   XMU_LIBS=''
832 else
833   XMU_SRCS=''
834   XMU_OBJS=''
835   XMU_LIBS='-lXmu'
836   AC_DEFINE(HAVE_XMU)
837 fi
838
839
840 ###############################################################################
841 #
842 #       Check for the SunOS 4.1.x _get_wmShellWidgetClass bug.
843 #       See comp.windows.x FAQ question 124.  The right fix is to
844 #       get OpenWindows 3.0 patches 100512-02 and 100573-03.
845 #
846 ###############################################################################
847
848 if test "$have_xmu" = yes ; then
849   case "$host" in
850     *-sunos4*)
851     AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
852                    ac_cv_sunos_xmu_bug,
853                    [ac_save_LDFLAGS="$LDFLAGS"
854                     if test \! -z "$x_libraries" ; then
855                       LDFLAGS="$LDFLAGS -L$x_libraries"
856                     fi
857                     # Note: this trick never works!  (Generally.)
858                     # We're only getting away with using AC_TRY_LINK
859                     # with X libraries because we know it's SunOS.
860                     LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
861                     AC_TRY_LINK(,,
862                                 [ac_cv_sunos_xmu_bug=no],
863                                 [ac_cv_sunos_xmu_bug=yes])
864                     LDFLAGS="$ac_save_LDFLAGS"])
865     if test "$ac_cv_sunos_xmu_bug" = yes ; then
866       AC_CACHE_CHECK([whether the compiler understands -static], 
867                      ac_cv_ld_static,
868                      [ac_save_LDFLAGS="$LDFLAGS"
869                       LDFLAGS="$LDFLAGS -static"
870                       AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
871                     LDFLAGS="$ac_save_LDFLAGS"])
872       if test "$ac_cv_ld_static" = yes ; then
873         LDFLAGS="$LDFLAGS -static"
874       else
875         LDFLAGS="$LDFLAGS -Bstatic"
876       fi
877     fi
878     ;;
879   esac
880 fi
881
882
883 ###############################################################################
884 #
885 #       Handle the --with-hackdir option
886 #
887 ###############################################################################
888
889 have_hackdir=yes
890 with_hackdir_req=unspecified
891 AC_ARG_WITH(hackdir,[
892 Installation options:
893
894   --with-hackdir=DIR      Where to install the hundreds of demo executables.
895                           Default: \`PREFIX/lib/xscreensaver/'],
896   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
897
898 if test x"$with_hackdir" = xyes; then
899   HACKDIR='${exec_prefix}/lib/xscreensaver'
900 elif test x"$with_hackdir" = xno; then
901   HACKDIR='${bindir}'
902 else
903   # there must be a better way than this...
904   if test -z "`echo $with_hackdir | sed 's@^/.*@@'`" ; then
905     # absolute path
906     HACKDIR=$with_hackdir
907   else
908     # relative path
909     HACKDIR="\${exec_prefix}$with_hackdir"
910   fi
911 fi
912
913 # canonicalize slashes.
914 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
915
916 # This option used to be called --enable-subdir; make sure that is no longer
917 # used, since configure brain-damagedly ignores unknown --enable options.
918
919 obsolete_enable=
920 AC_ARG_ENABLE(subdir,,[obsolete_enable=yes])
921 if test -n "$obsolete_enable"; then
922   echo "error: the --enable-subdir option has been replaced with"
923   echo "       the new --with-hackdir option; see \`configure --help'"
924   echo "       for more information."
925   exit 1
926 fi
927
928
929 ###############################################################################
930 #
931 #       Handle the --with-configdir option
932 #
933 ###############################################################################
934
935 have_configdir=yes
936 with_configdir_req=unspecified
937 AC_ARG_WITH(configdir,
938 [  --with-configdir=DIR    Where to install the data files that describe each
939                           of the display modes to the GUI.
940                           Default: \`GNOMEPREFIX/control-center/screensavers/'
941                           or \`PREFIX/lib/xscreensaver/config/', depending on
942                           whether GNOME is available.
943 ],
944   [with_configdir="$withval"; with_configdir_req="$withval"],
945   [with_configdir=yes])
946
947 if test x"$with_configdir" = xyes; then
948   # filled in later...
949   HACK_CONF_DIR=''
950 elif test x"$with_configdir" = xno; then
951   echo "error: must be yes, or a pathname: --with-configdir=$with_configdir"
952   exit 1
953 else
954   # there must be a better way than this...
955   if test -z "`echo $with_configdir | sed 's@^/.*@@'`" ; then
956     # absolute path
957     HACK_CONF_DIR=$with_configdir
958   else
959     # relative path
960     HACK_CONF_DIR="\${exec_prefix}$with_configdir"
961   fi
962 fi
963
964
965
966
967 ###############################################################################
968 #
969 #       Check for the SGI SCREEN_SAVER server extension.
970 #
971 ###############################################################################
972
973 have_sgi=no
974 with_sgi_req=unspecified
975 AC_ARG_WITH(sgi-ext,
976 [Except where noted, all of the --with options below can also take a
977 directory argument: for example, \`--with-motif=/opt/Motif'.  That would
978 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
979 to be added to the -L list, assuming those directories exist.  
980
981 By default, support for each of these options will be built in, if the
982 relevant library routines exist.  At run time, they will then be used
983 only if the X server being used supports them.  Each --with option has
984 a corresponding --without option, to override building support for them
985 at all.
986
987 Screen blanking and idle-detection options:
988
989   --with-sgi-ext          Include support for the SGI SCREEN_SAVER extension.],
990   [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
991
992 HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
993
994 if test "$with_sgi" = yes; then
995   AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
996                     [have_sgi=yes
997                      AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)],,
998                     [#include <X11/Xlib.h>])
999
1000 elif test "$with_sgi" != no; then
1001   echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
1002   exit 1
1003 fi
1004
1005
1006 ###############################################################################
1007 #
1008 #       Check for the MIT-SCREEN-SAVER server extension.
1009 #
1010 ###############################################################################
1011
1012 have_mit=no
1013 with_mit_req=unspecified
1014 AC_ARG_WITH(mit-ext,
1015 [  --with-mit-ext          Include support for the MIT-SCREEN-SAVER extension.],
1016   [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
1017
1018 HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER)
1019
1020 if test "$with_mit" = yes; then
1021   AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes],,
1022                     [#include <X11/Xlib.h>])
1023
1024   # Now check to see if it's really in the library; XF86Free-3.3 ships
1025   # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
1026   #
1027   if test "$have_mit" = yes; then
1028     AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [true], [have_mit=no], -lm)
1029
1030     if test "$have_mit" = no; then
1031       # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
1032       # of in Xext.  Thank you master, may I have another.
1033       AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
1034                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"],
1035                      [true], -lX11 -lXext -lm)
1036     fi
1037
1038     if test "$have_mit" = no; then
1039       # Double fuck!  Looks like some versions of XFree86 (whichever version
1040       # it is that comes with RedHat Linux 2.0 -- I can't find a version 
1041       # number) put this garbage in Xss instead of Xext.  Thank you master,
1042       #  may I have another.
1043       AC_CHECK_X_LIB(Xss, XScreenSaverRegister,
1044                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"],
1045                      [true], -lX11 -lXext -lm)
1046     fi
1047
1048   if test "$have_mit" = yes; then
1049     AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
1050   fi
1051
1052   fi
1053
1054 elif test "$with_mit" != no; then
1055   echo "error: must be yes or no: --with-mit-ext=$with_mit"
1056   exit 1
1057 fi
1058
1059
1060 ###############################################################################
1061 #
1062 #       Check for the XIDLE server extension.
1063 #
1064 ###############################################################################
1065
1066 have_xidle=no
1067 with_xidle_req=unspecified
1068 AC_ARG_WITH(xidle-ext,
1069 [  --with-xidle-ext        Include support for the XIDLE extension.],
1070   [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
1071
1072 HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
1073
1074 if test "$with_xidle" = yes; then
1075   AC_CHECK_X_HEADER(X11/extensions/xidle.h,
1076                     [have_xidle=yes
1077                      AC_DEFINE(HAVE_XIDLE_EXTENSION)],,
1078                     [#include <X11/Xlib.h>])
1079 elif test "$with_xidle" != no; then
1080   echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
1081   exit 1
1082 fi
1083
1084
1085 ###############################################################################
1086 #
1087 #       Check for the SGI-VIDEO-CONTROL server extension.
1088 #
1089 ###############################################################################
1090
1091 have_sgivc=no
1092 with_sgivc_req=unspecified
1093 AC_ARG_WITH(sgivc-ext,
1094 [  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL extension.],
1095   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
1096
1097 HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
1098
1099 if test "$with_sgivc" = yes; then
1100
1101   # first check for XSGIvc.h
1102   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes],,
1103                     [#include <X11/Xlib.h>])
1104
1105   # if that succeeded, then check for the -lXsgivc
1106   if test "$have_sgivc" = yes; then
1107     have_sgivc=no
1108     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
1109                   [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true],
1110                   -lXext -lX11)
1111   fi
1112
1113   # if that succeeded, then we've really got it.
1114   if test "$have_sgivc" = yes; then
1115     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
1116   fi
1117
1118 elif test "$with_sgivc" != no; then
1119   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
1120   exit 1
1121 fi
1122
1123
1124 ###############################################################################
1125 #
1126 #       Check for the DPMS server extension.
1127 #
1128 ###############################################################################
1129
1130 have_dpms=no
1131 with_dpms_req=unspecified
1132 AC_ARG_WITH(dpms-ext,
1133 [  --with-dpms-ext         Include support for the DPMS extension.],
1134   [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
1135
1136 HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
1137
1138 if test "$with_dpms" = yes; then
1139
1140   # first check for dpms.h
1141   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes],,
1142                     [#include <X11/Xlib.h>])
1143
1144   # if that succeeded, then check for the DPMS code in the libraries
1145   if test "$have_dpms" = yes; then
1146
1147     # first look in -lXext (this is where it is with XFree86 4.0)
1148     have_dpms=no
1149     AC_CHECK_X_LIB(Xext, DPMSInfo, [have_dpms=yes], [true], -lXext -lX11)
1150
1151     # if that failed, look in -lXdpms (this is where it was in XFree86 3.x)
1152     if test "$have_dpms" = no; then
1153       AC_CHECK_X_LIB(Xdpms, DPMSInfo,
1154                     [have_dpms=yes; XDPMS_LIBS="-lXdpms"], [true],
1155                     -lXext -lX11)
1156     fi
1157   fi
1158
1159
1160   # if that succeeded, then we've really got it.
1161   if test "$have_dpms" = yes; then
1162     AC_DEFINE(HAVE_DPMS_EXTENSION)
1163   fi
1164
1165 elif test "$with_dpms" != no; then
1166   echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
1167   exit 1
1168 fi
1169
1170
1171 ###############################################################################
1172 #
1173 #       Check for the XINERAMA server extension.
1174 #
1175 ###############################################################################
1176
1177 have_xinerama=no
1178 with_xinerama_req=unspecified
1179 AC_ARG_WITH(xinerama-ext,
1180 [  --with-xinerama-ext     Include support for the XINERAMA extension.],
1181   [with_xinerama="$withval"; with_xinerama_req="$withval"],[with_xinerama=yes])
1182
1183 HANDLE_X_PATH_ARG(with_xinerama, --with-xinerama-ext, XINERAMA)
1184
1185 if test "$with_xinerama" = yes; then
1186
1187   # first check for Xinerama.h
1188   AC_CHECK_X_HEADER(X11/extensions/Xinerama.h, [have_xinerama=yes],,
1189                     [#include <X11/Xlib.h>])
1190
1191   # if that succeeded, then check for the XINERAMA code in the libraries
1192   if test "$have_xinerama" = yes; then
1193
1194     # first look in -lXext
1195     have_xinerama=no
1196     AC_CHECK_X_LIB(Xext, XineramaQueryExtension, [have_xinerama=yes], [true],
1197                   -lXext -lX11)
1198
1199     # if that failed, look in -lXinerama (this is where it is in XFree86 4.1.)
1200     if test "$have_xinerama" = no; then
1201       AC_CHECK_X_LIB(Xinerama, XineramaQueryExtension,
1202                      [have_xinerama=yes; SAVER_LIBS="$SAVER_LIBS -lXinerama"],
1203                      [true], -lXext -lX11)
1204     fi
1205   fi
1206
1207   # if that succeeded, then we've really got it.
1208   if test "$have_xinerama" = yes; then
1209     AC_DEFINE(HAVE_XINERAMA)
1210   fi
1211
1212 elif test "$with_xinerama" != no; then
1213   echo "error: must be yes or no: --with-xinerama-ext=$with_xinerama"
1214   exit 1
1215 fi
1216
1217
1218 ###############################################################################
1219 #
1220 #       Check for the XF86VMODE server extension (for virtual screens.)
1221 #
1222 ###############################################################################
1223
1224 have_xf86vmode=no
1225 with_xf86vmode_req=unspecified
1226 AC_ARG_WITH(xf86vmode-ext,
1227 [  --with-xf86vmode-ext    Include support for XFree86 virtual screens.],
1228   [with_xf86vmode="$withval"; with_xf86vmode_req="$withval"],
1229   [with_xf86vmode=yes])
1230
1231 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
1232
1233 if test "$with_xf86vmode" = yes; then
1234
1235   # first check for xf86vmode.h
1236   AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes],,
1237                     [#include <X11/Xlib.h>])
1238
1239   # if that succeeded, then check for the -lXxf86vm
1240   if test "$have_xf86vmode" = yes; then
1241     have_xf86vmode=no
1242     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
1243                   [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"],
1244                    [true], -lXext -lX11)
1245   fi
1246
1247   # if that succeeded, then we've really got it.
1248   if test "$have_xf86vmode" = yes; then
1249     AC_DEFINE(HAVE_XF86VMODE)
1250   fi
1251
1252 elif test "$with_xf86vmode" != no; then
1253   echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
1254   exit 1
1255 fi
1256
1257
1258 ###############################################################################
1259 #
1260 #       Check for the XF86VMODE server extension (for gamma fading.)
1261 #
1262 ###############################################################################
1263
1264 have_xf86gamma=no
1265 have_xf86gamma_ramp=no
1266 with_xf86gamma_req=unspecified
1267 AC_ARG_WITH(xf86gamma-ext,
1268 [  --with-xf86gamma-ext    Include support for XFree86 gamma fading.],
1269   [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"],
1270   [with_xf86gamma=yes])
1271
1272 HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma)
1273
1274 if test "$with_xf86gamma" = yes; then
1275
1276   # first check for xf86vmode.h, if we haven't already
1277   if test "$have_xf86vmode" = yes; then
1278     have_xf86gamma=yes
1279   else
1280     AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes],,
1281                       [#include <X11/Xlib.h>])
1282   fi
1283
1284   # if that succeeded, then check for the -lXxf86vm
1285   if test "$have_xf86gamma" = yes; then
1286     have_xf86gamma=no
1287     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma,
1288                   [have_xf86gamma=yes],
1289                    [true], -lXext -lX11)
1290   fi
1291
1292   # check for the Ramp versions of the functions too.
1293   if test "$have_xf86gamma" = yes; then
1294     have_xf86gamma_ramp=no
1295     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGammaRamp,
1296                   [have_xf86gamma_ramp=yes],
1297                    [true], -lXext -lX11)
1298   fi
1299
1300   # if those tests succeeded, then we've really got the functions.
1301   if test "$have_xf86gamma" = yes; then
1302     AC_DEFINE(HAVE_XF86VMODE_GAMMA)
1303   fi
1304
1305   if test "$have_xf86gamma_ramp" = yes; then
1306     AC_DEFINE(HAVE_XF86VMODE_GAMMA_RAMP)
1307   fi
1308
1309   # pull in the lib, if we haven't already
1310   if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then
1311     SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
1312   fi
1313
1314 elif test "$with_xf86gamma" != no; then
1315   echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode"
1316   exit 1
1317 fi
1318
1319
1320 ###############################################################################
1321 #
1322 #       Check for HP XHPDisableReset and XHPEnableReset.
1323 #
1324 ###############################################################################
1325
1326 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
1327                   [AC_DEFINE(HAVE_XHPDISABLERESET)
1328                    SAVER_LIBS="-lXhp11 $SAVER_LIBS"])
1329
1330
1331 ###############################################################################
1332 #
1333 #       Check for /proc/interrupts.
1334 #
1335 ###############################################################################
1336
1337 have_proc_interrupts=no
1338 with_proc_interrupts_req=unspecified
1339 AC_ARG_WITH(proc-interrupts,
1340 [  --with-proc-interrupts  Include support for consulting the /proc/interrupts
1341                           file to notice keyboard activity.],
1342   [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
1343   [with_proc_interrupts=yes])
1344
1345 if test "$with_proc_interrupts" = yes; then
1346
1347    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
1348     ac_cv_have_proc_interrupts,
1349     [ac_cv_have_proc_interrupts=no
1350      if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
1351        ac_cv_have_proc_interrupts=yes
1352      fi
1353     ])
1354    have_proc_interrupts=$ac_cv_have_proc_interrupts
1355
1356   if test "$have_proc_interrupts" = yes; then
1357     AC_DEFINE(HAVE_PROC_INTERRUPTS)
1358   fi
1359
1360 elif test "$with_proc_interrupts" != no; then
1361   echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
1362   exit 1
1363 fi
1364
1365
1366 ###############################################################################
1367 #
1368 #       The --enable-locking option
1369 #
1370 ###############################################################################
1371
1372 AC_ARG_ENABLE(locking,[
1373 Screen locking options:
1374
1375   --enable-locking        Compile in support for locking the display.
1376   --disable-locking       Do not allow locking at all.],
1377   [enable_locking="$enableval"],[enable_locking=yes])
1378 if test "$enable_locking" = yes; then
1379   true
1380 elif test "$enable_locking" = no; then
1381   AC_DEFINE(NO_LOCKING)
1382 else
1383   echo "error: must be yes or no: --enable-locking=$enable_locking"
1384   exit 1
1385 fi
1386
1387
1388
1389 ###############################################################################
1390 #
1391 #       The --enable-vt-locking option
1392 #
1393 ###############################################################################
1394
1395 #ac_vt_lockswitch=no
1396 #AC_ARG_ENABLE(vt-locking,[
1397 #  --enable-vt-locking     Compile in support for locking Virtual Terminals.
1398 #                          This is the default if the system supports it, and
1399 #                          if locking support is included (--enable-locking.)
1400 #  --disable-vt-locking    Do not allow locking of VTs, even if locking is
1401 #                          enabled.],
1402 #  [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
1403 #if test "$enable_vt_locking" = yes; then
1404 #
1405 #  AC_CACHE_CHECK([for the VT_LOCKSWITCH ioctl], ac_cv_vt_lockswitch,
1406 #   [AC_TRY_COMPILE([#include <fcntl.h>
1407 #                   #include <sys/ioctl.h>
1408 #                   #include <sys/vt.h>],
1409 #                  [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
1410 #                  [ac_cv_vt_lockswitch=yes],
1411 #                  [ac_cv_vt_lockswitch=no])])
1412 #  ac_vt_lockswitch=$ac_cv_vt_lockswitch
1413 #
1414 #elif test "$enable_vt_locking" = no; then
1415 #  true
1416 #else
1417 #  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
1418 #  exit 1
1419 #fi
1420 #
1421 #if test "$ac_vt_lockswitch" = yes; then
1422 #  AC_DEFINE(HAVE_VT_LOCKSWITCH)
1423 #  # the VT_LOCKSWITCH ioctl can only be used when running as root.
1424 #  # #### but it doesn't work yet, so don't worry about that for now.
1425 ##  need_setuid=yes
1426 #fi
1427
1428
1429 ###############################################################################
1430 #
1431 #       Check for PAM.
1432 #
1433 ###############################################################################
1434
1435 case "$host" in
1436   *-solaris*)
1437    # Solaris systems tend to come with PAM misconfigured.
1438    #  Don't build it by default, even if the headers exist.
1439    with_pam_default=no
1440    ;;
1441   *)
1442    # Default to building PAM support on all other systems, if it exists.
1443    with_pam_default=yes
1444   ;;
1445 esac
1446
1447 have_pam=no
1448 with_pam_req=unspecified
1449
1450 AC_ARG_WITH(pam,
1451 [  --with-pam              Include support for PAM (Pluggable Auth Modules.)],
1452   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
1453
1454 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1455
1456 if test "$enable_locking" = yes -a "$with_pam" = yes; then
1457   AC_CACHE_CHECK([for PAM], ac_cv_pam,
1458                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1459                                    [ac_cv_pam=yes],
1460                                    [ac_cv_pam=no])])
1461   if test "$ac_cv_pam" = yes ; then
1462     have_pam=yes
1463     AC_DEFINE(HAVE_PAM)
1464     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
1465
1466     # libpam typically requires dlopen and dlsym.  On FreeBSD,
1467     # those are in libc.  On Linux and Solaris, they're in libdl.
1468     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
1469
1470     AC_MSG_CHECKING(how to call pam_strerror)
1471     AC_CACHE_VAL(ac_cv_pam_strerror_args,
1472      [AC_TRY_COMPILE([#include <stdio.h>
1473                       #include <stdlib.h>
1474                       #include <security/pam_appl.h>],
1475                      [pam_handle_t *pamh = 0;
1476                       char *s = pam_strerror(pamh, PAM_SUCCESS);],
1477                      [ac_pam_strerror_args=2],
1478                      [AC_TRY_COMPILE([#include <stdio.h>
1479                                       #include <stdlib.h>
1480                                       #include <security/pam_appl.h>],
1481                                      [char *s =
1482                                        pam_strerror(PAM_SUCCESS);],
1483                                      [ac_pam_strerror_args=1],
1484                                      [ac_pam_strerror_args=0])])
1485       ac_cv_pam_strerror_args=$ac_pam_strerror_args])
1486     ac_pam_strerror_args=$ac_cv_pam_strerror_args
1487     if test "$ac_pam_strerror_args" = 1 ; then
1488       AC_MSG_RESULT(one argument)
1489     elif test "$ac_pam_strerror_args" = 2 ; then
1490       AC_DEFINE(PAM_STRERROR_TWO_ARGS)
1491       AC_MSG_RESULT(two arguments)
1492     else
1493       AC_MSG_RESULT(unknown)
1494     fi
1495   fi
1496 fi
1497
1498
1499 ###############################################################################
1500 #
1501 #       Check for Kerberos.
1502 #
1503 ###############################################################################
1504
1505 have_kerberos=no
1506 have_kerberos5=no
1507 with_kerberos_req=unspecified
1508
1509 AC_ARG_WITH(kerberos, 
1510 [  --with-kerberos         Include support for Kerberos authentication.],
1511   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
1512
1513 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
1514
1515 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
1516   AC_CACHE_CHECK([for Kerberos 4], ac_cv_kerberos,
1517                  [AC_TRY_X_COMPILE([#include <krb.h>],,
1518                                    [ac_cv_kerberos=yes],
1519                                    [ac_cv_kerberos=no])])
1520   AC_CACHE_CHECK([for Kerberos 5], ac_cv_kerberos5,
1521                  [AC_TRY_X_COMPILE([#include <kerberosIV/krb.h>],,
1522                                    [ac_cv_kerberos5=yes],
1523                                    [ac_cv_kerberos5=no])])
1524
1525   if test "$ac_cv_kerberos" = yes ; then
1526     have_kerberos=yes
1527     AC_DEFINE(HAVE_KERBEROS)
1528   fi
1529
1530   if test "$ac_cv_kerberos5" = yes ; then
1531     have_kerberos=yes
1532     have_kerberos5=yes
1533     AC_DEFINE(HAVE_KERBEROS)
1534     AC_DEFINE(HAVE_KERBEROS5)
1535   fi
1536
1537   if test "$have_kerberos5" = yes ; then
1538     # from Matt Knopp <mhat@infocalypse.netlag.com>
1539     # (who got it from amu@mit.edu)
1540     PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcrypt -lcom_err"
1541   elif test "$have_kerberos" = yes ; then
1542     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
1543     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
1544   fi
1545
1546   if test "$have_kerberos" = yes ; then
1547     AC_CHECK_FUNC(res_search,,
1548       AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
1549         AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
1550       ))
1551   fi
1552 fi
1553
1554
1555 ###############################################################################
1556 #
1557 #       Check for the nine billion variants of shadow passwords...
1558 #
1559 ###############################################################################
1560
1561 need_setuid=no
1562
1563 have_shadow=no
1564 with_shadow_req=unspecified
1565
1566 AC_ARG_WITH(shadow,
1567 [  --with-shadow           Include support for shadow password authentication.],
1568   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
1569
1570 HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
1571
1572 if test "$enable_locking" = no ; then
1573   with_shadow_req=no
1574   with_shadow=no
1575 fi
1576
1577
1578 ###############################################################################
1579 #
1580 #       Check for Sun "adjunct" passwords.
1581 #
1582 ###############################################################################
1583
1584 if test "$with_shadow" = yes ; then
1585   AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
1586                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1587                                     #include <unistd.h>
1588                                     #include <sys/types.h>
1589                                     #include <sys/label.h>
1590                                     #include <sys/audit.h>
1591                                     #include <pwdadj.h>],
1592                       [struct passwd_adjunct *p = getpwanam("nobody");
1593                        const char *pw = p->pwa_passwd;],
1594                       [ac_cv_sun_adjunct=yes],
1595                       [ac_cv_sun_adjunct=no])])
1596   if test "$ac_cv_sun_adjunct" = yes; then
1597     have_shadow_adjunct=yes
1598     have_shadow=yes
1599     need_setuid=yes
1600   fi
1601 fi
1602
1603
1604 ###############################################################################
1605 #
1606 #       Check for DEC and SCO so-called "enhanced" security.
1607 #
1608 ###############################################################################
1609
1610 if test "$with_shadow" = yes ; then
1611   AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
1612                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1613                                     #include <unistd.h>
1614                                     #include <sys/types.h>
1615                                     #include <pwd.h>
1616                                     #include <sys/security.h>
1617                                     #include <prot.h>],
1618                       [struct pr_passwd *p;
1619                        const char *pw;
1620                        set_auth_parameters(0, 0);
1621                        check_auth_parameters();
1622                        p = getprpwnam("nobody");
1623                        pw = p->ufld.fd_encrypt;],
1624                       [ac_cv_enhanced_passwd=yes],
1625                       [ac_cv_enhanced_passwd=no])])
1626   if test $ac_cv_enhanced_passwd = yes; then
1627     have_shadow_enhanced=yes
1628     have_shadow=yes
1629     need_setuid=yes
1630
1631     # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
1632     # (I'm told it needs -lcurses too, but I don't understand why.)
1633     # But on DEC, it's in -lsecurity.
1634     #
1635     AC_CHECK_LIB(prot, getprpwnam, 
1636                  [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
1637                  [AC_CHECK_LIB(security, getprpwnam, 
1638                                [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
1639                  [-lx])
1640   fi
1641 fi
1642
1643 ###############################################################################
1644 #
1645 #       Check for HP's entry in the "Not Invented Here" Sweepstakes.
1646 #
1647 ###############################################################################
1648
1649 if test "$with_shadow" = yes ; then
1650   AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
1651                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1652                                     #include <unistd.h>
1653                                     #include <sys/types.h>
1654                                     #include <pwd.h>
1655                                     #include <hpsecurity.h>
1656                                     #include <prot.h>],
1657                       [struct s_passwd *p = getspwnam("nobody");
1658                        const char *pw = p->pw_passwd;],
1659                       [ac_cv_hpux_passwd=yes],
1660                       [ac_cv_hpux_passwd=no])])
1661   if test "$ac_cv_hpux_passwd" = yes; then
1662     have_shadow_hpux=yes
1663     have_shadow=yes
1664     need_setuid=yes
1665
1666     # on HPUX, bigcrypt is in -lsec
1667     AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
1668   fi
1669 fi
1670
1671
1672 ###############################################################################
1673 #
1674 #       Check for FreeBSD-style shadow passwords.
1675 #
1676 #       On FreeBSD, getpwnam() and friends work just like on non-shadow-
1677 #       password systems -- except you only get stuff in the pw_passwd field
1678 #       if the running program is setuid.  So, guess that we've got this
1679 #       lossage to contend with if /etc/master.passwd exists, and default to
1680 #       a setuid installation.
1681 #
1682 ###############################################################################
1683
1684 if test "$with_shadow" = yes ; then
1685   AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
1686                  [if test -f /etc/master.passwd ; then
1687                     ac_cv_master_passwd=yes
1688                   else
1689                     ac_cv_master_passwd=no
1690                   fi])
1691   if test "$ac_cv_master_passwd" = yes; then
1692     need_setuid=yes
1693   fi
1694 fi
1695
1696
1697 ###############################################################################
1698 #
1699 #       Check for traditional (ha!) shadow passwords.
1700 #
1701 ###############################################################################
1702
1703 if test "$with_shadow" = yes ; then
1704   AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
1705                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1706                                     #include <unistd.h>
1707                                     #include <sys/types.h>
1708                                     #include <pwd.h>
1709                                     #include <shadow.h>],
1710                       [struct spwd *p = getspnam("nobody");
1711                        const char *pw = p->sp_pwdp;],
1712                       [ac_cv_shadow=yes],
1713                       [ac_cv_shadow=no])])
1714   if test "$ac_cv_shadow" = yes; then
1715     have_shadow=yes
1716     need_setuid=yes
1717
1718     # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
1719     have_getspnam=no
1720     AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
1721     if test "$have_getspnam" = no ; then
1722       AC_CHECK_LIB(gen, getspnam,
1723                    [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
1724     fi
1725   fi
1726 fi
1727
1728
1729 ###############################################################################
1730 #
1731 #       Check for other libraries needed for non-shadow passwords.
1732 #
1733 ###############################################################################
1734
1735 if test "$enable_locking" = yes ; then
1736
1737   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
1738   have_crypt=no
1739   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
1740   if test "$have_crypt" = no ; then
1741     AC_CHECK_LIB(crypt, crypt,
1742                  [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1743   fi
1744 fi
1745
1746
1747 # Most of the above shadow mechanisms will have set need_setuid to yes,
1748 # if they were found.  But, on some systems, we need setuid even when
1749 # using plain old vanilla passwords.
1750 #
1751 if test "$enable_locking" = yes ; then
1752   case "$host" in
1753     *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
1754       need_setuid=yes
1755     ;;
1756   esac
1757 fi
1758
1759
1760 if test "$have_shadow_adjunct" = yes ; then
1761   AC_DEFINE(HAVE_ADJUNCT_PASSWD)
1762 elif test "$have_shadow_enhanced" = yes ; then
1763   AC_DEFINE(HAVE_ENHANCED_PASSWD)
1764 elif test "$have_shadow_hpux" = yes ; then
1765   AC_DEFINE(HAVE_HPUX_PASSWD)
1766 elif test "$have_shadow" = yes ; then
1767   AC_DEFINE(HAVE_SHADOW_PASSWD)
1768 fi
1769
1770
1771 ###############################################################################
1772 #
1773 #       Check for -lXm.
1774 #
1775 ###############################################################################
1776
1777 have_motif=no
1778 with_motif_req=unspecified
1779 AC_ARG_WITH(motif,[
1780 User interface options:
1781
1782   --with-motif            Use the Motif toolkit for the user interface
1783                           (not recommended.)],
1784   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes])
1785
1786 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
1787
1788 if test "$with_motif" != yes -a "$with_motif" != no ; then
1789   echo "error: must be yes or no: --with-motif=$with_motif"
1790   exit 1
1791 fi
1792
1793 if test "$with_motif" = yes; then
1794   have_motif=no
1795   AC_CHECK_X_HEADER(Xm/Xm.h,
1796                     [have_motif=yes
1797                      AC_DEFINE(HAVE_MOTIF)
1798                      MOTIF_LIBS="$MOTIF_LIBS -lXm"],,
1799                     [#include <stdlib.h>
1800                      #include <stdio.h>
1801                      #include <X11/Intrinsic.h>])
1802 fi
1803
1804
1805 if test "$have_motif" = yes; then
1806   AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)],,
1807                     [#include <stdlib.h>
1808                      #include <stdio.h>
1809                      #include <X11/Intrinsic.h>])
1810 fi
1811
1812
1813 ###############################################################################
1814 #
1815 #       Check for -lgtk (and Gnome stuff)
1816 #
1817 ###############################################################################
1818
1819 have_gtk=no
1820 have_gtk2=no
1821 with_gtk_req=unspecified
1822 AC_ARG_WITH(gtk,
1823 [  --with-gtk              Use the Gtk toolkit for the user interface.],
1824   [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
1825
1826 # if --with-gtk=/directory/ was specified, remember that directory so that
1827 # we can also look for the `gtk-config' program in that directory.
1828 case "$with_gtk" in
1829   /*)
1830     gtk_dir="$with_gtk"
1831     ;;
1832   *)
1833     gtk_dir=""
1834     ;;
1835 esac
1836
1837 HANDLE_X_PATH_ARG(with_gtk, --with-gtk, Gtk)
1838
1839 if test "$with_gtk" != yes -a "$with_gtk" != no ; then
1840   echo "error: must be yes or no: --with-gtk=$with_gtk"
1841   exit 1
1842 fi
1843
1844 have_gnome=no
1845 with_gnome_req=unspecified
1846 AC_ARG_WITH(gnome,
1847 [  --with-gnome            Include support for the Gnome 1.x Control Center.
1848                           (This option is not needed with GTK 2.x / Gnome 2.x.)
1849 ],
1850   [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes])
1851
1852 # if --with-gnome=/directory/ was specified, remember that directory so that
1853 # we can also look for the `gnome-config' program in that directory.
1854 case "$with_gnome" in
1855   /*)
1856     gnome_dir="$with_gnome"
1857     ;;
1858   *)
1859     gnome_dir=""
1860     ;;
1861 esac
1862
1863 HANDLE_X_PATH_ARG(with_gnome, --with-gnome, Gnome)
1864
1865 if test "$with_gnome" != yes -a "$with_gnome" != no ; then
1866   echo "error: must be yes or no: --with-gnome=$with_gnome"
1867   exit 1
1868 fi
1869
1870 parse_gtk_version_string() {
1871   # M4 sucks!!
1872   changequote(X,Y)
1873   maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
1874   min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
1875   changequote([,])
1876   ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
1877   if test -z "$ac_gtk_version"; then
1878     ac_gtk_version=unknown
1879     ac_gtk_version_string=unknown
1880   fi
1881 }
1882
1883
1884 jurassic_gtk=no
1885 if test "$with_gtk" = yes; then
1886   have_gtk=no
1887   
1888   # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
1889   # look in /foo/bin/ for glib-config, gtk-config, and gnome-config.
1890   #
1891   gtk_path="$PATH"
1892
1893   if test ! -z "$gtk_dir"; then
1894     # canonicalize slashes.
1895     foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
1896     gtk_path="$foo:$gtk_path"
1897   fi
1898
1899   if test ! -z "$gnome_dir"; then
1900     # canonicalize slashes.
1901     foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
1902     gtk_path="$foo:$gtk_path"
1903   fi
1904
1905   AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path)
1906
1907   if test -n "$pkg_config" ; then
1908     #
1909     # the new way...
1910     # run pkg-config based tests.
1911     #
1912
1913     pkgs=''
1914     pkg_check_version() {
1915       if test "$ok" = yes ; then
1916         req="$1"
1917         min="$2"
1918         AC_MSG_CHECKING(for $req)
1919         if $pkg_config --exists "$req" ; then
1920           vers=`$pkg_config --modversion "$req"`
1921           if $pkg_config --exists "$req >= $min" ; then
1922             AC_MSG_RESULT($vers)
1923             pkgs="$pkgs $req"
1924             return 1
1925           else
1926             AC_MSG_RESULT($vers (wanted >= $min))
1927             ok=no
1928             return 0
1929           fi
1930         else
1931           AC_MSG_RESULT(no)
1932           ok=no
1933           return 0
1934         fi
1935       fi
1936     }
1937
1938     ok="yes"
1939     pkg_check_version     gtk+-2.0  2.0.1  ; ac_gtk_version_string="$vers"
1940     pkg_check_version  gmodule-2.0  2.0.0
1941     pkg_check_version   libxml-2.0  2.4.6
1942     pkg_check_version libglade-2.0  1.99.0
1943     have_gtk="$ok"
1944
1945     if test "$have_gtk" = yes; then
1946       have_gtk2=yes
1947       AC_DEFINE(HAVE_GTK2)
1948     fi
1949
1950     if test "$have_gtk" = no; then
1951       #
1952       # we don't have GTK 2.  Let's look for GTK 1.
1953       #
1954       pkgs=''
1955       ok="yes"
1956       pkg_check_version gtk+ 1.2           ; ac_gtk_version_string="$vers"
1957       pkg_check_version glib 1.0
1958       have_gtk="$ok"
1959
1960       # Now check for Gnome...
1961       #
1962       if test "$have_gtk" = yes; then
1963         old_pkgs="$pkgs"
1964         ok=yes
1965         pkg_check_version capplet    1.0
1966         pkg_check_version gnomeui    1.0
1967         pkg_check_version gdk_pixbuf 0.1
1968         have_gnome="$ok"
1969
1970         if test "$have_gnome" = no; then
1971           pkgs="$old_pkgs"
1972         else
1973           AC_DEFINE(HAVE_CRAPPLET)
1974         fi
1975       fi
1976     fi
1977
1978     if test "$have_gtk" = yes; then
1979       parse_gtk_version_string
1980       jurassic_gtk=no
1981     else
1982       have_gnome=no
1983     fi
1984
1985     if test "$have_gtk" = yes; then
1986       AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
1987                      [ac_cv_gtk_config_cflags=`$pkg_config --cflags $pkgs`])
1988       AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
1989                      [ac_cv_gtk_config_libs=`$pkg_config --libs $pkgs`])
1990     fi
1991     ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
1992     ac_gtk_config_libs=$ac_cv_gtk_config_libs
1993
1994     ac_gnome_config_cflags=$ac_gtk_config_cflags
1995     ac_gnome_config_libs=$ac_gtk_config_libs
1996
1997   else
1998     #
1999     # the old way...
2000     # run {gnome,gtk}-config based tests.
2001     #
2002
2003     AC_PATH_PROGS(glib_config,  glib12-config glib-config,,  $gtk_path)
2004     AC_PATH_PROGS(gtk_config,   gtk12-config  gtk-config,,   $gtk_path)
2005
2006     if test "$with_gnome" = yes; then
2007       AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path)
2008     fi
2009
2010     if test -n "$glib_config" -a  -n "$gtk_config" ; then
2011       have_gtk=yes
2012       if test "$with_gnome" = yes -a -n "$gnome_config" ; then
2013         have_gnome=yes
2014       fi
2015     fi
2016
2017     if test "$have_gtk" = yes; then
2018       AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
2019                      [ac_cv_gtk_version_string=`$gtk_config --version`])
2020       ac_gtk_version_string=$ac_cv_gtk_version_string
2021     fi
2022
2023     parse_gtk_version_string
2024
2025     if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
2026     then
2027       have_gtk=no
2028       have_gnome=no
2029       jurassic_gtk=yes
2030     fi
2031
2032     if test "$have_gtk" = yes; then
2033       AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
2034                      [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
2035       AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
2036                      [ac_cv_gtk_config_libs=`$gtk_config --libs`])
2037     fi
2038     ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
2039     ac_gtk_config_libs=$ac_cv_gtk_config_libs
2040
2041     # Check for Gnome Capplet support.
2042     #
2043     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2044       gnome_config_libs="gtk capplet gnomeui gdk_pixbuf"
2045       AC_MSG_CHECKING(for Gnome capplet includes)
2046       AC_CACHE_VAL(ac_cv_gnome_config_cflags,
2047         [if ( $gnome_config --cflags $gnome_config_libs >/dev/null 2>&1 | \
2048               grep Unknown >/dev/null ) ; then
2049            ac_cv_gnome_config_cflags=''
2050          else
2051           ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs`
2052          fi])
2053       ac_gnome_config_cflags=$ac_cv_gnome_config_cflags
2054       if test "$ac_gnome_config_cflags" = "" ; then
2055         have_gnome=no
2056         AC_MSG_RESULT(no)
2057       else
2058         AC_MSG_RESULT($ac_gnome_config_cflags)
2059       fi
2060     fi
2061
2062     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2063       AC_MSG_CHECKING(for Gnome capplet libs)
2064       AC_CACHE_VAL(ac_cv_gnome_config_libs,
2065         [if ( $gnome_config --libs $gnome_config_libs >/dev/null 2>&1 |
2066               grep Unknown >/dev/null ) ; then
2067            ac_cv_gnome_config_libs=''
2068          else
2069            ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs`
2070          fi])
2071       ac_gnome_config_libs=$ac_cv_gnome_config_libs
2072       if test "$ac_gnome_config_libs" = "" ; then
2073         have_gnome=no
2074         AC_MSG_RESULT(no)
2075       else
2076         AC_MSG_RESULT($ac_gnome_config_libs)
2077       fi
2078     fi
2079
2080     # If we have Gnome, then override the gtk-config values with 
2081     # the gnome-config values.
2082     #
2083     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2084       ac_gtk_config_cflags=$ac_gnome_config_cflags
2085       ac_gtk_config_libs=$ac_gnome_config_libs
2086       AC_DEFINE(HAVE_CRAPPLET)
2087     fi
2088
2089   fi   # end of {gnome,gtk}-config based tests
2090
2091   if test "$have_gtk" = yes -a "$have_gtk2" = no; then
2092     # check for this function that was not in libcapplet 1.2.
2093     AC_CHECK_X_LIB(capplet, capplet_widget_changes_are_immediate,
2094                    [AC_DEFINE(HAVE_CRAPPLET_IMMEDIATE)], [true],
2095                    $ac_gnome_config_libs)
2096   fi
2097
2098
2099   GNOME_DATADIR=""
2100   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2101     if test -n "$gnome_config"; then
2102       GNOME_DATADIR=`$gnome_config --datadir`
2103     else
2104       #### is this right?
2105       GNOME_DATADIR=`$pkg_config --variable=prefix gtk+`
2106       GNOME_DATADIR="$GNOME_DATADIR/share"
2107     fi
2108   fi
2109
2110   # .desktop files go in different places in Gnome 1.x and Gnome 2.x...
2111   if test "$have_gtk2" = yes; then
2112     GNOME_PANELDIR='$(GNOME_PANELDIR2)'
2113   else
2114     GNOME_PANELDIR='$(GNOME_PANELDIR1)'
2115   fi
2116
2117
2118   if test "$have_gtk" = yes; then
2119     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
2120     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
2121     AC_DEFINE(HAVE_GTK)
2122
2123     if test "$have_gtk2" = yes; then
2124       GTK_EXTRA_OBJS=""
2125     else
2126       GTK_EXTRA_OBJS="\$(GTK_EXTRA_OBJS)"
2127     fi
2128   fi
2129
2130 fi
2131
2132
2133 # Check for the Gnome Help Browser.
2134 #
2135 if test "$have_gnome" = yes; then
2136   AC_CHECK_PROG(have_gnome_help, gnome-help-browser, yes, no)
2137 else
2138   have_gnome_help=no
2139 fi
2140
2141
2142 ###############################################################################
2143 #
2144 #       Check for -lxml
2145 #
2146 ###############################################################################
2147
2148 have_xml=no
2149 with_xml_req=unspecified
2150 xml_halfassed=no
2151 AC_ARG_WITH(xml,
2152 [  --with-xml              The XML toolkit is needed for some parts of
2153                           the Gtk interface.  Without it, the configuration
2154                           interface will be much less featureful.],
2155 [with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes])
2156
2157 # if --with-xml=/directory/ was specified, remember that directory so that
2158 # we can also look for the `xml-config' program in that directory.
2159 case "$with_xml" in
2160   /*)
2161     xml_dir="$with_xml"
2162     ;;
2163   *)
2164     xml_dir=""
2165     ;;
2166 esac
2167
2168 HANDLE_X_PATH_ARG(with_xml, --with-xml, XML)
2169
2170 if test "$with_xml" != yes -a "$with_xml" != no ; then
2171   echo "error: must be yes or no: --with-xml=$with_xml"
2172   exit 1
2173 fi
2174
2175 if test "$with_xml" = yes; then
2176   have_xml=no
2177   have_old_xml=no
2178
2179   # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
2180   # look in /foo/bin/ for for xml-config.
2181   #
2182   xml_path="$PATH"
2183
2184   if test ! -z "$gtk_dir"; then
2185     # canonicalize slashes.
2186     foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
2187     xml_path="$foo:$xml_path"
2188   fi
2189
2190   if test ! -z "$gnome_dir"; then
2191     # canonicalize slashes.
2192     foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
2193     xml_path="$foo:$xml_path"
2194   fi
2195
2196   if test -n "$pkg_config" ; then
2197     #
2198     # the new way...
2199     # run pkg-config based tests.
2200     #
2201     pkgs=""
2202     ok="yes"
2203     pkg_check_version xml2 1.0
2204
2205     if test "$ok" = no; then
2206       ok=yes
2207       pkg_check_version xml 1.0
2208     fi
2209
2210     have_xml="$ok"
2211
2212     if test "$have_xml" = yes; then
2213       AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
2214                      [ac_cv_xml_config_cflags=`$pkg_config --cflags $pkgs`])
2215       AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
2216                      [ac_cv_xml_config_libs=`$pkg_config --libs $pkgs`])
2217       ac_xml_config_cflags=$ac_cv_xml_config_cflags
2218       ac_xml_config_libs=$ac_cv_xml_config_libs
2219     fi
2220
2221   else
2222     #
2223     # the old way...
2224     # run {gnome,gtk}-config based tests.
2225     #
2226
2227     AC_PATH_PROGS(xml_config, xml2-config xml-config,, $xml_path)
2228
2229     # If we found the xml-config program, run it to get flags.
2230     #
2231     if test -n "$xml_config" ; then
2232       AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
2233                      [ac_cv_xml_config_cflags=`$xml_config --cflags`])
2234       AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
2235                      [ac_cv_xml_config_libs=`$xml_config --libs`])
2236       ac_xml_config_cflags=$ac_cv_xml_config_cflags
2237       ac_xml_config_libs=$ac_cv_xml_config_libs
2238     fi
2239
2240     ac_save_xml_CPPFLAGS="$CPPFLAGS"
2241     CPPFLAGS="$CPPFLAGS $ac_xml_config_cflags"
2242
2243     # first try <libxml/parser.h> which is the new way...
2244     #
2245     AC_CHECK_X_HEADER(libxml/xmlIO.h, [have_xml=yes],,
2246                       [#include <libxml/parser.h>])
2247
2248     # if that didn't work, then try just <parser.h> which is the old way...
2249     #
2250     if test "$have_xml" = no; then
2251       AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes; have_old_xml=yes],,
2252                         [#include <parser.h>])
2253     fi
2254
2255     CPPFLAGS="$ac_save_xml_CPPFLAGS"
2256   fi
2257
2258
2259   have_zlib=no
2260   if test "$have_xml" = yes; then
2261     # we have the XML headers; now make sure zlib is around.
2262     # yes, it's stupid we have to do this too, but there is
2263     # dependency screwage in Gnome.
2264     AC_CHECK_X_LIB(z, zlibVersion, [have_zlib=yes])
2265     if test "$have_zlib" = no; then
2266       xml_halfassed=yes
2267       have_xml=no
2268     fi
2269   fi
2270
2271   if test "$have_xml" = yes; then
2272     # we have the header, now check for the library
2273     have_xml=no
2274     xml_halfassed=yes
2275     AC_CHECK_X_LIB(xml, xmlParseChunk,
2276                    [have_xml=yes
2277                     xml_halfassed=no
2278                     XML_LIBS="$ac_xml_config_libs"
2279                     AC_DEFINE(HAVE_XML)],
2280                    [true],
2281                    $ac_xml_config_libs)
2282   fi
2283
2284   if test "$have_xml" = yes; then
2285     INCLUDES="$INCLUDES $ac_xml_config_cflags"
2286     GTK_LIBS="$GTK_LIBS $ac_xml_config_libs"
2287     AC_DEFINE(HAVE_XML)
2288     if test "$have_old_xml" = yes; then
2289       AC_DEFINE(HAVE_OLD_XML_HEADERS)
2290     fi
2291   fi
2292
2293 fi
2294
2295
2296 ###############################################################################
2297 #
2298 #       Checking whether Motif is really Lesstif.
2299 #
2300 ###############################################################################
2301
2302 have_lesstif=no
2303 if test "$have_motif" = yes ; then
2304   AC_CACHE_CHECK([whether Motif is really LessTif], 
2305                  ac_cv_have_lesstif,
2306                  [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
2307                                    [long vers = LesstifVersion;],
2308                                    [ac_cv_have_lesstif=yes],
2309                                    [ac_cv_have_lesstif=no])])
2310   have_lesstif=$ac_cv_have_lesstif
2311 fi
2312
2313
2314 lesstif_version=unknown
2315 lesstif_version_string=unknown
2316
2317 if test "$have_lesstif" = yes ; then
2318   ltv=unknown
2319   echo unknown > conftest-lt
2320   AC_CACHE_CHECK([LessTif version number],
2321                  ac_cv_lesstif_version_string,
2322       [AC_TRY_X_RUN([#include <stdio.h>
2323                      #include <Xm/Xm.h>
2324                      int main() {
2325                        FILE *f = fopen("conftest-lt", "w");
2326                        if (!f) exit(1);
2327                        fprintf(f, "%d %d.%d\n", LesstifVersion,
2328                           LESSTIF_VERSION, LESSTIF_REVISION);
2329                        fclose(f);
2330                        exit(0);
2331                      }],
2332                     [ltv=`cat conftest-lt`
2333                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
2334                      ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
2335                     [ac_cv_lesstif_version=unknown
2336                      ac_cv_lesstif_version_string=unknown],
2337                     [ac_cv_lesstif_version=unknown
2338                      ac_cv_lesstif_version_string=unknown])])
2339   rm -f conftest-lt
2340   lesstif_version=$ac_cv_lesstif_version
2341   lesstif_version_string=$ac_cv_lesstif_version_string
2342
2343 fi
2344
2345
2346 if test "$have_motif" = yes ; then
2347   mtv=unknown
2348   echo unknown > conftest-mt
2349   AC_CACHE_CHECK([Motif version number],
2350                  ac_cv_motif_version_string,
2351       [AC_TRY_X_RUN([#include <stdio.h>
2352                      #include <Xm/Xm.h>
2353                      int main() {
2354                        FILE *f = fopen("conftest-mt", "w");
2355                        if (!f) exit(1);
2356                        fprintf(f, "%d %d.%d\n", XmVersion,
2357                           XmVERSION, XmREVISION);
2358                        fclose(f);
2359                        exit(0);
2360                      }],
2361                     [mtv=`cat conftest-mt`
2362                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
2363                      ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
2364                     [ac_cv_motif_version=unknown
2365                      ac_cv_motif_version_string=unknown],
2366                     [ac_cv_motif_version=unknown
2367                      ac_cv_motif_version_string=unknown])])
2368   rm -f conftest-mt
2369   motif_version=$ac_cv_motif_version
2370   motif_version_string=$ac_cv_motif_version_string
2371
2372 fi
2373
2374
2375 ###############################################################################
2376 #
2377 #       Checking whether Motif requires -lXpm.
2378 #
2379 #       If this is Motif 2.x, and we have XPM, then link against XPM as well.
2380 #       The deal is, Motif 2.x requires XPM -- but it's a compilation option
2381 #       of the library whether to build the XPM code into libXm, or whether
2382 #       to rely on an external libXm.  So the only way to tell whether XPM is
2383 #       a link-time requirement is to examine libXm.a, which is very
2384 #       difficult to do in an autoconf script.  So... if it's Motif 2.x, we
2385 #       always link against XPM if the XPM lib exists (and this will be a
2386 #       no-op if libXm happens to already have the XPM code in it.)
2387 #
2388 ###############################################################################
2389
2390 motif_requires_xpm=no
2391 if test "$have_motif" = yes ; then
2392    AC_MSG_CHECKING(whether Motif requires XPM)
2393    if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000
2394    then
2395      motif_requires_xpm=yes
2396      AC_MSG_RESULT(maybe)
2397    else
2398      AC_MSG_RESULT(no)
2399    fi
2400 fi
2401
2402
2403 ###############################################################################
2404 #
2405 #       Checking whether Motif requires -lXp.
2406 #
2407 #       Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
2408 #       Extension".   Why this extension isn't in -lXext with all the others,
2409 #       I have no idea.
2410 #
2411 ###############################################################################
2412
2413 have_xp_ext=no
2414 if test "$have_motif" = yes ; then
2415    have_xp_ext=no
2416    AC_CHECK_X_LIB(Xp, XpQueryExtension,
2417                   [have_xp_ext=yes; MOTIF_LIBS="$MOTIF_LIBS -lXp"],
2418                   [true], -lX11 -lXext -lm)
2419 fi
2420
2421
2422 ###############################################################################
2423 #
2424 #       Checking whether Motif requires -lXintl (for _Xsetlocale.)
2425 #
2426 ###############################################################################
2427
2428 have_xintl=no
2429 if test "$have_motif" = yes ; then
2430   AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
2431                  -lX11 -lXext -lm)
2432   if test "$have_xintl" = yes; then
2433     MOTIF_LIBS="$MOTIF_LIBS -lXintl"
2434   fi
2435 fi
2436
2437
2438 ###############################################################################
2439 #
2440 #       Check for -lGL or -lMesaGL.
2441 #
2442 ###############################################################################
2443
2444 have_gl=no
2445 ac_have_mesa_gl=no
2446 with_gl_req=unspecified
2447 gl_halfassed=no
2448 AC_ARG_WITH(gl,[
2449 Graphics options:
2450
2451   --with-gl               Build those demos which depend on OpenGL.],
2452   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
2453
2454 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
2455
2456 ac_mesagl_version=unknown
2457 ac_mesagl_version_string=unknown
2458
2459 if test "$with_gl" = yes; then
2460   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
2461   if test "$have_gl" = yes ; then
2462     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no,
2463                       [#include <GL/gl.h>])
2464   fi
2465
2466   # If we have the headers, try and figure out which vendor it's from.
2467   #
2468   if test "$have_gl" = yes ; then
2469
2470     # We need to know whether it's MesaGL so that we know which libraries
2471     # to link against.
2472     #
2473     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
2474       [ac_cv_have_mesa_gl=no
2475        AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
2476       ])
2477     ac_have_mesa_gl=$ac_cv_have_mesa_gl
2478  
2479
2480     gl_lib_1=""
2481     GL_LIBS=""
2482
2483
2484     # Some versions of MesaGL are compiled to require -lpthread.
2485     # So if the Mesa headers exist, and -lpthread exists, then always
2486     # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
2487     #
2488     if test "$ac_have_mesa_gl" = yes; then
2489       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
2490     fi
2491
2492
2493     # If we have Mesa headers, check to see if we can link against -lMesaGL.
2494     # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
2495     # Else, warn that GL is busted.  (We have the headers, but no libs.)
2496     #
2497
2498     if test "$ac_have_mesa_gl" = yes ; then
2499       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
2500                      [gl_lib_1="MesaGL"
2501                       GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
2502                      [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
2503     fi
2504
2505     if test "$gl_lib_1" = "" ; then
2506       AC_CHECK_X_LIB(GL, glXCreateContext, 
2507                      [gl_lib_1="GL"
2508                       GL_LIBS="-lGL -lGLU $GL_LIBS"],
2509                      [], -lGLU $GL_LIBS -lX11 -lXext -lm)
2510     fi
2511
2512     if test "$gl_lib_1" = "" ; then
2513       # we have headers, but no libs -- bail.
2514       have_gl=no
2515       ac_have_mesa_gl=no
2516       gl_halfassed=yes
2517     else
2518       # linking works -- we can build the GL hacks.
2519       AC_DEFINE(HAVE_GL)
2520       if test "$ac_have_mesa_gl" = yes ; then
2521         AC_DEFINE(HAVE_MESA_GL)
2522       fi
2523     fi
2524   fi
2525
2526
2527   # Now that we know we have GL headers and libs, do some more GL testing.
2528   #
2529
2530   if test "$have_gl" = yes ; then
2531     # If it's MesaGL, we'd like to issue a warning if the version number
2532     # is less than or equal to 2.6, because that version had a security bug.
2533     #
2534     if test "$ac_have_mesa_gl" = yes; then
2535
2536       AC_CACHE_CHECK([MesaGL version number], ac_cv_mesagl_version_string,
2537         [cat > conftest.$ac_ext <<EOF
2538 #line __oline__ "configure"
2539 #include "confdefs.h"
2540 #include <GL/gl.h>
2541 #ifndef MESA_MAJOR_VERSION
2542 # include <GL/xmesa.h>
2543 # define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
2544 # define MESA_MINOR_VERSION XMESA_MINOR_VERSION
2545 #endif
2546 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
2547 EOF
2548
2549          ac_save_CPPFLAGS="$CPPFLAGS"
2550          if test \! -z "$includedir" ; then 
2551            CPPFLAGS="$CPPFLAGS -I$includedir"
2552          fi
2553          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2554
2555          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | grep configure:`
2556
2557          # M4 sucks!!
2558          changequote(X,Y)
2559           mglv=`echo "$mglv" | sed -n \
2560              's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
2561          changequote([,])
2562
2563          rm -f conftest.$ac_ext
2564
2565          CPPFLAGS="$ac_save_CPPFLAGS"
2566
2567          if test "$mglv" = ""; then
2568            ac_mesagl_version=unknown
2569            ac_mesagl_version_string=unknown
2570          else
2571            ac_mesagl_version_string=$mglv
2572            maj=`echo $mglv | sed -n 's/\..*//p'`
2573            min=`echo $mglv | sed -n 's/.*\.//p'`
2574            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
2575            if test -z "$ac_mesagl_version"; then
2576              ac_mesagl_version=unknown
2577              ac_mesagl_version_string=unknown
2578            fi
2579          fi
2580          ac_cv_mesagl_version=$ac_mesagl_version
2581          ac_cv_mesagl_version_string=$ac_mesagl_version_string
2582       ])
2583       ac_mesagl_version=$ac_cv_mesagl_version
2584       ac_mesagl_version_string=$ac_cv_mesagl_version_string
2585     fi
2586
2587
2588     # Check for OpenGL 1.1 features.
2589     #
2590     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
2591                    [true], $GL_LIBS -lX11 -lXext -lm)
2592   fi
2593
2594 elif test "$with_gl" != no; then
2595   echo "error: must be yes or no: --with-gl=$with_gl"
2596   exit 1
2597 fi
2598
2599
2600 ###############################################################################
2601 #
2602 #       Check for -lgle.
2603 #
2604 ###############################################################################
2605
2606 have_gle=no
2607 with_gle_req=unspecified
2608 gle_halfassed=no
2609 AC_ARG_WITH(gle,
2610 [  --with-gle              Build those demos which depend on GLE
2611                           (the OpenGL "extrusion" library.)],
2612   [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
2613
2614 HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
2615
2616 GLE_LIBS=""
2617
2618 if test "$with_gle" = yes; then
2619
2620   AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no,
2621                     [#include <GL/gl.h>])
2622   if test "$have_gle3" = yes ; then
2623     have_gle=yes;
2624   else
2625     AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no,
2626                     [#include <GL/gl.h>])
2627     if test "$have_gle" = yes ; then
2628       AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no,
2629                         [#include <GL/gl.h>])
2630     fi
2631   fi
2632
2633   if test "$have_gle" = yes ; then
2634     have_gle=no
2635     gle_halfassed=yes
2636     AC_CHECK_X_LIB(gle, gleCreateGC, 
2637                    [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
2638                    [], $GL_LIBS -lX11 -lXext -lm)
2639   fi
2640   if test "$have_gle" = yes ; then
2641     have_gle=no
2642     gle_halfassed=yes
2643
2644     # sometimes the libmatrix stuff is included in libgle.  look there first.
2645 #
2646 # I don't get it.  For some reason, this test passes on SGI, as if
2647 # uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
2648 # Yet the link is succeeding.  Why???
2649 #
2650 #    AC_CHECK_X_LIB(gle, uview_direction_d, 
2651 #                   [have_gle=yes; gle_halfassed=no],
2652 #                   [], $GL_LIBS -lX11 -lXext -lm)
2653
2654     # As of GLE 3 this is in libgle, and has changed name to uview_direction!
2655     # *sigh*
2656     if test "$have_gle3" = yes ; then
2657       AC_CHECK_X_LIB(gle, uview_direction, 
2658                      [have_gle=yes; gle_halfassed=no],
2659                     [], $GL_LIBS -lX11 -lXext -lm)
2660     fi
2661     # if it wasn't in libgle, then look in libmatrix.
2662     if test "$have_gle" = no ; then
2663       AC_CHECK_X_LIB(matrix, uview_direction_d, 
2664                      [have_gle=yes; gle_halfassed=no;
2665                       GLE_LIBS="$GLE_LIBS -lmatrix"],
2666                     [], $GL_LIBS -lX11 -lXext -lm)
2667     fi
2668   fi
2669
2670   if test "$have_gle" = yes ; then
2671     AC_DEFINE(HAVE_GLE)
2672     if test "$have_gle3" = yes ; then
2673       AC_DEFINE(HAVE_GLE3)
2674     fi
2675   fi
2676
2677 elif test "$with_gle" != no; then
2678   echo "error: must be yes or no: --with-gle=$with_gle"
2679   exit 1
2680
2681 fi
2682
2683
2684
2685 ###############################################################################
2686 #
2687 #       Check for -lXpm.
2688 #
2689 ###############################################################################
2690
2691 have_xpm=no
2692 with_xpm_req=unspecified
2693 AC_ARG_WITH(xpm,
2694 [  --with-xpm              Include support for XPM files in some demos.
2695                           (Not needed if Pixbuf is used.)],
2696   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
2697
2698 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
2699
2700 if test "$with_xpm" = yes; then
2701   AC_CHECK_X_HEADER(X11/xpm.h,
2702                    [have_xpm=yes
2703                     AC_DEFINE(HAVE_XPM)
2704                     XPM_LIBS="-lXpm"],,
2705                     [#include <X11/Xlib.h>])
2706 elif test "$with_xpm" != no; then
2707   echo "error: must be yes or no: --with-xpm=$with_xpm"
2708   exit 1
2709 fi
2710
2711 # See comment near $motif_requires_xpm, above.
2712 # Need to do this here, after both Motif and XPM have been checked for.
2713 #
2714 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
2715   if test "$motif_requires_xpm" = yes ; then
2716     MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
2717   fi
2718 fi
2719
2720
2721 ###############################################################################
2722 #
2723 #       Check for -lgdk_pixbuf.
2724 #
2725 ###############################################################################
2726
2727 have_gdk_pixbuf=no
2728 with_gdk_pixbuf_req=unspecified
2729 AC_ARG_WITH(pixbuf,
2730 [  --with-pixbuf           Include support for the GDK-Pixbuf library in some
2731                           demos, which will make it possible for them to read
2732                           GIF, JPEG, and PNG files as well.  (The path here is
2733                           ignored if GTK 2.x is being used.)],
2734   [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
2735   [with_gdk_pixbuf=yes])
2736
2737 # if --with-pixbuf=/directory/ was specified, remember that directory so that
2738 # we can also look for the `gdk-pixbuf-config' program in that directory.
2739 case "$with_gdk_pixbuf" in
2740   /*)
2741     gdk_pixbuf_dir="$with_gdk_pixbuf"
2742     ;;
2743   *)
2744     gdk_pixbuf_dir=""
2745     ;;
2746 esac
2747
2748 HANDLE_X_PATH_ARG(with_gdk_pixbuf, --with-pixbuf, GDK_PIXBUF)
2749
2750 if test "$with_gdk_pixbuf" != yes -a "$with_gdk_pixbuf" != no ; then
2751   echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf"
2752   exit 1
2753 fi
2754
2755 if test "$with_gdk_pixbuf" = yes; then
2756   have_gdk_pixbuf=no
2757   have_gdk_pixbuf2=no
2758
2759   if test -n "$pkg_config" ; then
2760     #
2761     # the new way...
2762     # run pkg-config based tests.
2763     #
2764     pkgs=''
2765     ok="yes"
2766     pkg_check_version gdk-pixbuf-2.0      2.0.0
2767     pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
2768     have_gdk_pixbuf="$ok"
2769     have_gdk_pixbuf2="$ok"
2770
2771     if test "$have_gdk_pixbuf2" = no; then
2772       #
2773       # We don't have pixbuf 2.x; check for 1.x.
2774       #
2775       pkgs=''
2776       ok="yes"
2777       pkg_check_version gdk-pixbuf      0.0
2778       pkg_check_version gdk-pixbuf-xlib 0.0
2779       have_gdk_pixbuf="$ok"
2780     fi
2781
2782     if test "$have_gdk_pixbuf" = yes; then
2783       AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
2784                  [ac_cv_gdk_pixbuf_config_cflags=`$pkg_config --cflags $pkgs`])
2785       AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
2786                  [ac_cv_gdk_pixbuf_config_libs=`$pkg_config --libs $pkgs`])
2787     fi
2788     ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
2789     ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
2790   fi
2791
2792   if test "$have_gdk_pixbuf" = no; then
2793     #
2794     # the old way...
2795     # run gdk-pixbuf-config based tests.
2796     # note that we can't assume that the existence of "pkg-config" means
2797     # that we don't have to look for gdk-pixbuf-config -- in Gnome 1.4,
2798     # pkg-config exists, but doesn't know about pixbuf.
2799     #
2800
2801     # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
2802     # look in /foo/bin/ for for gdk-pixbuf-config.
2803     #
2804     gdk_pixbuf_path="$PATH"
2805
2806     if test ! -z "$gtk_dir"; then
2807       # canonicalize slashes.
2808       foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
2809       gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
2810     fi
2811
2812     if test ! -z "$gnome_dir"; then
2813       # canonicalize slashes.
2814       foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
2815       gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
2816     fi
2817
2818     AC_PATH_PROGS(gdk_pixbuf_config, gdk-pixbuf-config,, $gdk_pixbuf_path)
2819
2820     # If we found the gdk-pixbuf-config program, run it to get flags.
2821     #
2822     if test -n "$gdk_pixbuf_config" ; then
2823       AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
2824                 [ac_cv_gdk_pixbuf_config_cflags=`$gdk_pixbuf_config --cflags`])
2825       AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
2826                 [ac_cv_gdk_pixbuf_config_libs=`$gdk_pixbuf_config --libs`])
2827
2828       # note that "gdk-pixbuf-config --libs" produces a link line including
2829       # -lgdk_pixbuf, but there's no way to get it to produce one that also
2830       # includes -lgdk_pixbuf_xlib.  Since we don't know *exactly* what the
2831       # name of the library will be, construct it with sed...
2832       # M4 sucks!!
2833       changequote(X,Y)
2834       ac_cv_gdk_pixbuf_config_libs=`echo $ac_cv_gdk_pixbuf_config_libs | \
2835        sed 's@ \(-lgdk_pixbuf\([-_a-zA-Z0-9.]*\)\) @ \1 -lgdk_pixbuf_xlib\2 @'`
2836       changequote([,])
2837
2838       ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
2839       ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
2840     fi
2841   fi
2842
2843   ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
2844   CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
2845
2846   if test "$have_gdk_pixbuf" = no; then
2847     #
2848     # we appear to have pixbuf; check for headers/libs to be sure.
2849     #
2850
2851     have_gdk_pixbuf=no
2852
2853     # check for header 1...
2854     AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
2855
2856     # if that worked, check for header 2...
2857     if test "$have_gdk_pixbuf" = yes; then
2858       have_gdk_pixbuf=no
2859       gdk_pixbuf_halfassed=yes
2860       AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h,
2861                         [have_gdk_pixbuf=yes
2862                          gdk_pixbuf_halfassed=no])
2863
2864       # yay, it has a new name in GTK2...
2865       if test "$have_gdk_pixbuf" = no; then
2866         have_gdk_pixbuf=no
2867         gdk_pixbuf_halfassed=yes
2868         AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h,
2869                           [have_gdk_pixbuf=yes
2870                            gdk_pixbuf_halfassed=no])
2871       fi
2872     fi
2873   fi
2874
2875   CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
2876
2877   if test "$have_gdk_pixbuf" = yes; then
2878     # we have the headers, now check for the libraries
2879     have_gdk_pixbuf=no
2880     gdk_pixbuf_halfassed=yes
2881
2882     # library 1...
2883     AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
2884                    $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
2885     # library 2...
2886     if test "$have_gdk_pixbuf" = yes; then
2887       have_gdk_pixbuf=no
2888       AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
2889                      [have_gdk_pixbuf=yes
2890                       gdk_pixbuf_halfassed=no],,
2891                      $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
2892     fi
2893   fi
2894
2895   if test "$have_gdk_pixbuf" = yes; then
2896     INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags"
2897     XPM_LIBS="$ac_gdk_pixbuf_config_libs"
2898     AC_DEFINE(HAVE_GDK_PIXBUF)
2899   else
2900     have_gdk_pixbuf2=no
2901   fi
2902 fi
2903
2904
2905 ###############################################################################
2906 #
2907 #       Check for -ljpeg
2908 #
2909 ###############################################################################
2910
2911 have_jpeg=no
2912 with_jpeg_req=unspecified
2913 jpeg_halfassed=no
2914 AC_ARG_WITH(jpeg,
2915 [  --with-jpeg             Include support for the JPEG library in some demos.
2916                           (If this library is available, webcollage will be a
2917                         . lot faster.)],
2918   [with_jpeg="$withval"; with_jpeg_req="$withval"],
2919   [with_jpeg=yes])
2920
2921 HANDLE_X_PATH_ARG(with_jpeg, --with-jpeg, JPEG)
2922
2923 if test "$with_jpeg" != yes -a "$with_jpeg" != no ; then
2924   echo "error: must be yes or no: --with-jpeg=$with_jpeg"
2925   exit 1
2926 fi
2927
2928 if test "$with_jpeg" = yes; then
2929
2930   have_jpeg=no
2931   AC_CHECK_X_HEADER(jpeglib.h, [have_jpeg=yes])
2932
2933   if test "$have_jpeg" = yes; then
2934     # we have the header, now check for the library
2935     have_jpeg=no
2936     jpeg_halfassed=yes
2937     AC_CHECK_X_LIB(jpeg, jpeg_start_compress,
2938                    [have_jpeg=yes
2939                     jpeg_halfassed=no
2940                     JPEG_LIBS="-ljpeg"
2941                     AC_DEFINE(HAVE_JPEGLIB)])
2942   fi
2943 fi
2944
2945
2946 ###############################################################################
2947 #
2948 #       Check for the XSHM server extension.
2949 #
2950 ###############################################################################
2951
2952 have_xshm=no
2953 with_xshm_req=unspecified
2954 AC_ARG_WITH(xshm-ext,
2955 [  --with-xshm-ext         Include support for the Shared Memory extension.],
2956   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
2957
2958 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
2959
2960 if test "$with_xshm" = yes; then
2961
2962   # first check for Xshm.h.
2963   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes],,
2964                     [#include <X11/Xlib.h>])
2965
2966   # if that succeeded, then check for sys/ipc.h.
2967   if test "$have_xshm" = yes; then
2968     have_xshm=no
2969     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
2970   fi
2971
2972   # if that succeeded, then check for sys/shm.h.
2973   if test "$have_xshm" = yes; then
2974     have_xshm=no
2975     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
2976   fi
2977
2978   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
2979   # to exist, but the library code to not exist.  And even better, the library
2980   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
2981   # lib doesn't exist, give up.  (This lib gets added to X_EXTRA_LIBS, and
2982   # that's not quite right, but close enough.)
2983   #
2984   case "$host" in
2985     *-aix*)
2986       if [ `uname -v` -eq 3 ]; then
2987         have_xshm=no
2988         AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
2989                        [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
2990                        [true], -lX11 -lXext -lm)
2991       fi
2992     ;;
2993   esac
2994
2995   # if that succeeded, then we've really got it.
2996   if test "$have_xshm" = yes; then
2997     AC_DEFINE(HAVE_XSHM_EXTENSION)
2998   fi
2999
3000 elif test "$with_xshm" != no; then
3001   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
3002   exit 1
3003 fi
3004
3005
3006 ###############################################################################
3007 #
3008 #       Check for the DOUBLE-BUFFER server extension.
3009 #
3010 ###############################################################################
3011
3012 have_xdbe=no
3013 with_xdbe_req=unspecified
3014 AC_ARG_WITH(xdbe-ext,
3015 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.],
3016   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
3017
3018 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
3019
3020 if test "$with_xdbe" = yes; then
3021
3022   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes],,
3023                     [#include <X11/Xlib.h>])
3024   if test "$have_xdbe" = yes; then
3025     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
3026   fi
3027
3028 elif test "$with_xdbe" != no; then
3029   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
3030   exit 1
3031 fi
3032
3033
3034 ###############################################################################
3035 #
3036 #       Check for the SGI XReadDisplay server extension.
3037 #
3038 #       Note: this has to be down here, rather than up with the other server
3039 #       extension tests, so that the output of `configure --help' is in the
3040 #       right order.  Arrgh!
3041 #
3042 ###############################################################################
3043
3044 have_readdisplay=no
3045 with_readdisplay_req=unspecified
3046 AC_ARG_WITH(readdisplay,
3047 [  --with-readdisplay      Include support for the XReadDisplay extension.],
3048   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
3049   [with_readdisplay=yes])
3050
3051 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
3052
3053 if test "$with_readdisplay" = yes; then
3054   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
3055                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION),,
3056                     [#include <X11/Xlib.h>])
3057 elif test "$with_readdisplay" != no; then
3058   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
3059   exit 1
3060 fi
3061
3062
3063 ###############################################################################
3064 #
3065 #       Check for a program to generate random text.
3066 #
3067 #       Zippy is funnier than the idiocy generally spat out by `fortune',
3068 #       so first see if "fortune zippy" works.  Else, use plain "fortune".
3069 #
3070 #       We used to dig around in Emacs to look for the "yow" program, but
3071 #       most people who have Emacs also have "fortune zippy", so nevermind.
3072 #
3073 ###############################################################################
3074
3075 with_fortune_req=""
3076 AC_ARG_WITH(fortune,[
3077   --with-fortune=PROGRAM  Some demos are able to run an external program and
3078                           display its text; this names the program to use by
3079                           default (though it can be overridden with X
3080                           resources.)  Default is \"/usr/games/fortune\".],
3081   [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes])
3082
3083 if test "$with_fortune" = no || test "$with_fortune" = yes ; then
3084   with_fortune=""
3085   with_fortune_req=""
3086 fi
3087
3088 if test -n "$with_fortune_req" ; then
3089   ac_cv_fortune_program=""
3090   case "$with_fortune_req" in
3091     /*)
3092
3093       set dummy $with_fortune_req ; fortune_tmp=$2
3094       AC_MSG_CHECKING([for $fortune_tmp])
3095       if test -x "$fortune_tmp" ; then
3096         AC_MSG_RESULT(yes)
3097       else
3098         AC_MSG_RESULT(no)
3099         with_fortune=""
3100       fi
3101     ;;
3102     *)
3103       set dummy $with_fortune_req ; fortune_tmp=$2
3104       # don't cache
3105       unset ac_cv_path_fortune_tmp
3106       AC_PATH_PROG(fortune_tmp, $fortune_tmp, [])
3107       if test -z "$fortune_tmp" ; then
3108         with_fortune=""
3109       fi
3110     ;;
3111   esac
3112   ac_cv_fortune_program="$with_fortune"
3113
3114 elif test -n "$ac_cv_fortune_program"; then
3115   AC_MSG_RESULT([checking for fortune... (cached) $ac_cv_fortune_program])
3116 fi
3117
3118 unset ac_cv_path_fortune_tmp
3119 unset fortune_tmp
3120
3121 if test -z "$ac_cv_fortune_program" ; then
3122
3123   # first look for fortune in /usr/games/ (and use absolute path)
3124   AC_PATH_PROGS(fortune_tmp, fortune,, "/usr/games")
3125
3126   # if it's not there, look on $PATH (and don't use absolute path)
3127   if test -z "$fortune_tmp" ; then
3128      AC_CHECK_PROGS(fortune_tmp, fortune)
3129   fi
3130
3131   # if we didn't find anything, then just assume /usr/games/
3132   if test -z "$fortune_tmp" ; then
3133      fortune_tmp="/usr/games/fortune"
3134   fi
3135
3136   ac_cv_fortune_program="$fortune_tmp"
3137
3138   # now check to see whether "fortune zippy" works.
3139   #
3140   fortune_tmp="$fortune_tmp zippy"
3141   AC_MSG_CHECKING([for zippy quotes])
3142   if ( $fortune_tmp >/dev/null 2>&1 ); then
3143     ac_cv_fortune_program="$fortune_tmp"
3144     AC_MSG_RESULT($fortune_tmp)
3145   else
3146     AC_MSG_RESULT(no)
3147   fi
3148
3149 fi
3150
3151 unset ac_cv_path_fortune_tmp
3152 unset fortune_tmp
3153
3154 AC_DEFINE_UNQUOTED(FORTUNE_PROGRAM, "$ac_cv_fortune_program")
3155
3156
3157 ###############################################################################
3158 #
3159 #       Check whether it's ok to install some hacks as setuid (e.g., "sonar")
3160 #       This should be safe, but let's give people the option.
3161 #
3162 ###############################################################################
3163
3164 setuid_hacks_default=no
3165 setuid_hacks="$setuid_hacks_default"
3166 AC_ARG_WITH(setuid-hacks,
3167 [  --with-setuid-hacks     Allow some demos to be installed \`setuid root'
3168                           (which is needed in order to ping other hosts.)
3169 ],
3170   [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"])
3171
3172 HANDLE_X_PATH_ARG(setuid_hacks, --with-setuid-hacks, setuid hacks)
3173
3174 if test "$setuid_hacks" = yes; then
3175   true
3176 elif test "$setuid_hacks" != no; then
3177   echo "error: must be yes or no: --with-setuid-hacks=$setuid_hacks"
3178   exit 1
3179 fi
3180
3181
3182 ###############################################################################
3183 #
3184 #       Done testing.  Now, set up the various -I and -L variables,
3185 #       and decide which GUI program to build by default.
3186 #
3187 ###############################################################################
3188
3189 DEPEND=makedepend
3190 DEPEND_FLAGS=
3191 DEPEND_DEFINES=
3192
3193
3194 if test \! -z "$includedir" ; then 
3195   INCLUDES="$INCLUDES -I$includedir"
3196 fi
3197
3198 if test \! -z "$libdir" ; then
3199   LDFLAGS="$LDFLAGS -L$libdir"
3200 fi
3201
3202
3203 PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
3204 ALL_DEMO_PROGRAMS=
3205 if test "$have_motif" = yes; then
3206   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
3207   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3208 fi
3209 if test "$have_gtk" = yes; then
3210   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
3211   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3212 fi
3213
3214
3215 if test "$have_kerberos" = yes; then
3216   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
3217   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
3218 fi
3219 if test "$have_pam" = yes; then
3220   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
3221   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
3222   INSTALL_PAM="install-pam"
3223 fi
3224   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
3225   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
3226
3227
3228 if test "$enable_locking" = yes; then
3229   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
3230   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
3231 else
3232   LOCK_SRCS='$(NOLOCK_SRCS_1)'
3233   LOCK_OBJS='$(NOLOCK_OBJS_1)'
3234 fi
3235
3236 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
3237
3238 if test "$need_setuid" = yes; then
3239   NEED_SETUID=yes
3240 else
3241   NEED_SETUID=no
3242 fi
3243
3244 if test "$setuid_hacks" = yes; then
3245   SETUID_HACKS=yes
3246 else
3247   SETUID_HACKS=no
3248 fi
3249
3250 tab='   '
3251 if test "$have_gl" = yes; then
3252   GL_EXES='$(GL_EXES)'
3253   GL_UTIL_EXES='$(GL_UTIL_EXES)'
3254   GL_MEN='$(GL_MEN)'
3255   GL_KLUDGE="${tab}  "
3256 else
3257   GL_KLUDGE="-${tab}  "
3258 fi
3259
3260 if test "$have_gle" = yes; then
3261   GLE_EXES='$(GLE_EXES)'
3262   GLE_MEN='$(GLE_MEN)'
3263   GLE_KLUDGE="${tab}   "
3264 else
3265   GLE_KLUDGE="-${tab}   "
3266 fi
3267
3268 if test "$have_jpeg" = yes -a "$have_gdk_pixbuf" = yes; then
3269  JPEG_EXES='$(JPEG_EXES)'
3270 fi
3271
3272
3273 # Another substitution in the XScreenSaver.ad.in file:
3274 #
3275 if test "$have_gnome_help" = yes; then
3276   GNOMEHELP_Y=''
3277   GNOMEHELP_N='!    '
3278 else
3279   GNOMEHELP_Y='!    '
3280   GNOMEHELP_N=''
3281 fi
3282
3283
3284 # Now that we know whether we have Gnome, we can decide where the XML
3285 # config files get installed.
3286 #
3287 if test -z "$HACK_CONF_DIR" ; then
3288   if test -n "$GNOME_DATADIR" ; then
3289     HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers'
3290   else
3291     HACK_CONF_DIR='${prefix}/lib/xscreensaver/config'
3292   fi
3293 fi
3294
3295
3296
3297 # After computing $HACK_CONF_DIR, make sure $GLADE_DATADIR has a value
3298 # so that we know where to install the Gtk pixmaps.
3299 #
3300 if test -n "$GNOME_DATADIR" ; then
3301   GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver'
3302 elif test "$have_gtk" = yes; then
3303   # should this be "$(prefix)/share/pixmaps"? But /usr/X11R6/share/ is wrong...
3304   GLADE_DATADIR='/usr/share/xscreensaver'
3305 else
3306   GLADE_DATADIR=''
3307 fi
3308
3309
3310 # canonicalize slashes.
3311 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
3312
3313
3314
3315 ###############################################################################
3316 #
3317 #       Perform substitutions and write Makefiles.
3318 #
3319 ###############################################################################
3320
3321 AC_SUBST(INCLUDES)
3322
3323 AC_SUBST(PREFERRED_DEMO_PROGRAM)
3324 AC_SUBST(ALL_DEMO_PROGRAMS)
3325 AC_SUBST(SAVER_LIBS)
3326 AC_SUBST(MOTIF_LIBS)
3327 AC_SUBST(GTK_LIBS)
3328 AC_SUBST(XML_LIBS)
3329 AC_SUBST(JPEG_LIBS)
3330 AC_SUBST(HACK_LIBS)
3331 AC_SUBST(XPM_LIBS)
3332 AC_SUBST(GL_LIBS)
3333 AC_SUBST(GLE_LIBS)
3334 AC_SUBST(XDPMS_LIBS)
3335 AC_SUBST(PASSWD_LIBS)
3336 AC_SUBST(INSTALL_SETUID)
3337 AC_SUBST(SETUID_HACKS)
3338 AC_SUBST(INSTALL_DIRS)
3339 AC_SUBST(NEED_SETUID)
3340 AC_SUBST(INSTALL_PAM)
3341
3342 AC_SUBST(PASSWD_SRCS)
3343 AC_SUBST(PASSWD_OBJS)
3344 AC_SUBST(XMU_SRCS)
3345 AC_SUBST(XMU_OBJS)
3346 AC_SUBST(XMU_LIBS)
3347 AC_SUBST(SAVER_GL_SRCS)
3348 AC_SUBST(SAVER_GL_OBJS)
3349 AC_SUBST(SAVER_GL_LIBS)
3350 AC_SUBST(LOCK_SRCS)
3351 AC_SUBST(LOCK_OBJS)
3352 AC_SUBST(JPEG_EXES)
3353 AC_SUBST(GL_EXES)
3354 AC_SUBST(GL_UTIL_EXES)
3355 AC_SUBST(GL_MEN)
3356 AC_SUBST(GL_KLUDGE)
3357 AC_SUBST(GLE_EXES)
3358 AC_SUBST(GLE_MEN)
3359 AC_SUBST(GLE_KLUDGE)
3360 AC_SUBST(GNOMEHELP_Y)
3361 AC_SUBST(GNOMEHELP_N)
3362 AC_SUBST(HACKDIR)
3363 AC_SUBST(GNOME_DATADIR)
3364 AC_SUBST(GLADE_DATADIR)
3365 AC_SUBST(GNOME_PANELDIR)
3366 AC_SUBST(HACK_CONF_DIR)
3367 AC_SUBST(GTK_EXTRA_OBJS)
3368
3369 APPDEFAULTS=$ac_x_app_defaults
3370 AC_SUBST(APPDEFAULTS)
3371
3372 AC_SUBST(DEPEND)
3373 AC_SUBST(DEPEND_FLAGS)
3374 AC_SUBST(DEPEND_DEFINES)
3375 AC_SUBST(PERL)
3376
3377 AC_OUTPUT(Makefile
3378           utils/Makefile
3379           driver/Makefile
3380           hacks/Makefile
3381           hacks/glx/Makefile
3382           po/Makefile.in
3383           driver/XScreenSaver.ad)
3384
3385 ###############################################################################
3386 #
3387 #       Print some warnings at the end.
3388 #
3389 ###############################################################################
3390
3391 warn_prefix_1="    Warning:"
3392 warn_prefix_2="       Note:"
3393 warn_prefix="$warn_prefix_1"
3394
3395 warning=no
3396 warnsep='    #################################################################'
3397
3398 warnpre() {
3399   if test "$warning" = no ; then
3400     echo '' ; echo "$warnsep" ; echo ''
3401     warning=yes
3402   fi
3403 }
3404
3405 warn() {
3406   warnpre
3407   if test "$warning" = long ; then echo '' ; fi
3408   warning=yes
3409   rest="$@"
3410   echo "$warn_prefix $rest"
3411 }
3412
3413 warnL() {
3414   was=$warning
3415   warnpre
3416   warning=yes
3417   if test "$was" != no ; then echo '' ; fi
3418   rest="$@"
3419   echo "$warn_prefix $rest"
3420 }
3421
3422 warn2() {
3423   rest="$@"
3424   echo "             $rest"
3425   warning=long
3426 }
3427
3428 note() {
3429   warn_prefix="$warn_prefix_2"
3430   warn $@
3431   warn_prefix="$warn_prefix_1"
3432 }
3433
3434 noteL() {
3435   warn_prefix="$warn_prefix_2"
3436   warnL $@
3437   warn_prefix="$warn_prefix_1"
3438 }
3439
3440
3441 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
3442   warn 'The SGI saver extension was requested, but was not found.'
3443 fi
3444
3445 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
3446   warn 'The MIT saver extension was requested, but was not found.'
3447 fi
3448
3449 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
3450   warn 'The XIdle extension was requested, but was not found.'
3451 fi
3452
3453 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
3454   warn 'The XSHM extension was requested, but was not found.'
3455 fi
3456
3457 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
3458   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
3459 fi
3460
3461 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
3462   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
3463 fi
3464
3465 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
3466   warn 'The DPMS extension was requested, but was not found.'
3467 fi
3468
3469 if test "$with_xinerama_req" = yes -a "$have_xinerama" = no ; then
3470   warn 'The Xinerama extension was requested, but was not found.'
3471 fi
3472
3473 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
3474   warn 'The XF86VMODE extension was requested, but was not found.'
3475 fi
3476
3477 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
3478   warn "Checking of /proc/interrupts was requested, but it's bogus."
3479 fi
3480
3481
3482 if test "$have_motif" = no -a "$have_gtk" = no; then
3483   warnL "Neither Motif nor Gtk seem to be available;"
3484   warn2 "the \`xscreensaver-demo' program requires one of these."
3485
3486 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
3487   warnL "Use of Motif was requested, but it wasn't found;"
3488   warn2 "Gtk will be used instead."
3489
3490 elif test "$jurassic_gtk" = yes ; then
3491
3492   pref_gtk=1.2
3493
3494   v="$ac_gtk_version_string"
3495   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
3496     warnL "Use of Gtk was requested, but its version number is unknown;"
3497   elif test "$with_gtk_req" = yes ; then
3498     warnL "Use of Gtk was requested, but it is version $v;"
3499   else
3500     warnL "Gtk was found on this system, but it is version $v;"
3501   fi
3502
3503   warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
3504
3505 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
3506   warnL "Use of Gtk was requested, but it wasn't found;"
3507   warn2 "Motif will be used instead."
3508 fi
3509
3510
3511 if test "$with_gnome_req" = yes -a "$have_gnome" = no ; then
3512   warn  'Use of the Gnome Control Panel was requested, but the necessary'
3513   warn2 'headers and/or libraries were not found.'
3514 fi
3515
3516 if test "$have_gtk" = yes ; then
3517   if test "$have_xml" = no ; then
3518     if test "$with_xml_req" = yes ; then
3519       warn  'Use of the XML library was requested, but the necessary'
3520       warn2 'headers and/or libraries were not found.'
3521     else
3522       warn  'GTK is being used, but the XML library was not found.'
3523     fi
3524
3525     if test "$xml_halfassed" = yes ; then
3526
3527       if test "$have_zlib" = yes ; then
3528         which="XML libraries"
3529       else
3530         which="\`zlib' library"
3531       fi
3532
3533       echo ''
3534       warn2 'More specifically, we found the headers, but not the'
3535       warn2 "$which; so either XML is half-installed on this"
3536       warn2 "system, or something else went wrong.  The \`config.log'"
3537       warn2 'file might contain some clues.'
3538     fi
3539
3540     echo ''
3541     warn2 "Without XML, the per-display-mode \`Settings' dialogs"
3542     warn2 'will not be available.  Specify the location of the XML'
3543     warn2 'library through the --with-xml option to configure.'
3544   fi
3545 fi
3546
3547 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
3548
3549   preferred_lesstif=0.92
3550
3551   if test "$lesstif_version" = unknown; then
3552     warnL "Unable to determine the LessTif version number!"
3553     warn2 "Make sure you are using version $preferred_lesstif or newer."
3554     warn2 "See <http://www.lesstif.org/>."
3555
3556   elif test \! $lesstif_version -gt 82; then
3557     warnL "LessTif version $lesstif_version_string is being used."
3558     warn2 "LessTif versions 0.82 and earlier are too buggy to"
3559     warn2 "use with XScreenSaver; it is strongly recommended"
3560     warn2 "that you upgrade to at least version $preferred_lesstif!"
3561     warn2 "See <http://www.lesstif.org/>."
3562   fi
3563 fi
3564
3565
3566 if test "$have_motif" = yes -a "$have_gtk" = no ; then
3567   warn  'Motif is being used, and GTK is not.'
3568   echo  ''
3569   warn2 'Though the Motif front-end to xscreensaver is still'
3570   warn2 'maintained, it is no longer being updated with new'
3571   warn2 'features: all new development on the xscreensaver-demo'
3572   warn2 'program is happening in the GTK version, and not in the'
3573   warn2 'Motif version.  It is recommended that you build against'
3574   warn2 'GTK instead of Motif.  See <http://www.gtk.org/>.'
3575 fi
3576
3577
3578 if test "$with_xpm_req" = yes -a "$have_xpm" = no; then
3579   warnL 'Use of XPM was requested, but it was not found.'
3580 fi
3581
3582 if test "$with_gdk_pixbuf_req" = yes  -a "$have_gdk_pixbuf" = no; then
3583   warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
3584 fi
3585
3586 if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no || \
3587    test "$gdk_pixbuf_halfassed" = yes; then
3588
3589   if test "$with_xpm_req" = yes -o "$have_xpm" = yes ; then
3590     true
3591   elif test "$with_xpm_req" = no ; then
3592     warnL 'The XPM library is not being used.'
3593   else
3594     warnL 'The XPM library was not found.'
3595   fi
3596
3597   if test "$with_gdk_pixbuf_req" = yes ; then
3598     true
3599   elif test "$with_gdk_pixbuf_req" = no ; then
3600     warnL 'The GDK-Pixbuf library is not being used.'
3601   else
3602     warnL 'The GDK-Pixbuf library was not found.'
3603   fi
3604
3605   if test "$gdk_pixbuf_halfassed" = yes ; then
3606     echo ''
3607     warn2 'More specifically, we found the headers, but not the'
3608     warn2 'libraries; so either GDK-Pixbuf is half-installed on this'
3609     warn2 "system, or something else went wrong.  The \`config.log'"
3610     warn2 'file might contain some clues.'
3611   fi
3612
3613   echo ''
3614   warn2 'Some of the demos will not be as colorful as they'
3615   warn2 'could be.  You should consider installing Pixbuf or'
3616   warn2 'XPM and re-running configure.  (Remember to delete'
3617   warn2 'the config.cache file first.)  The Pixbuf library is'
3618   warn2 'a part of GNOME.  The XPM library comes with most'
3619   warn2 'X11 installations; you can also find it at the X11'
3620   warn2 'archive sites, such as <http://sunsite.unc.edu/>.'
3621   echo  ''
3622   warn2 'GDK-Pixbuf is recommended over XPM, as it provides'
3623   warn2 'support for more image formats.'
3624 fi
3625
3626
3627 if test "$have_jpeg" = no ; then
3628   if test "$with_jpeg_req" = yes ; then
3629     warnL 'Use of libjpeg was requested, but it was not found.'
3630   elif test "$with_jpeg_req" = no ; then
3631     noteL 'The JPEG library is not being used.'
3632   else
3633     noteL 'The JPEG library was not found.'
3634   fi
3635
3636   if test "$jpeg_halfassed" = yes ; then
3637     echo ''
3638     warn2 'More specifically, we found the headers, but not the'
3639     warn2 'library; so either JPEG is half-installed on this'
3640     warn2 "system, or something else went wrong.  The \`config.log'"
3641     warn2 'file might contain some clues.'
3642     echo ''
3643   fi
3644
3645   warn2 "This means the \`webcollage' program will be much slower."
3646 fi
3647
3648
3649 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
3650   preferred_mesagl=3.4
3651   mgv="$ac_mesagl_version_string"
3652   pgl="$preferred_mesagl"
3653
3654   if test "$ac_mesagl_version" = unknown; then
3655     warnL "Unable to determine the MesaGL version number!"
3656     warn2 "Make sure you are using version $preferred_mesagl or newer."
3657
3658   elif test \! "$ac_mesagl_version" -gt 2006; then
3659     warnL "MesaGL version $mgv is being used.  MesaGL 2.6 and earlier"
3660     warn2 "have a security bug.  It is strongly recommended that you"
3661     warn2 "upgrade to at least version $preferred_mesagl."
3662
3663   elif test \! "$ac_mesagl_version" -gt 3003; then
3664     warnL "MesaGL version $mgv is being used.  That version has some"
3665     warn2 "bugs; it is recommended that you upgrade to $pgl or newer."
3666   fi
3667 fi
3668
3669 if test "$have_gl" = no ; then
3670   if test "$with_gl_req" = yes ; then
3671     warnL 'Use of GL was requested, but it was not found.'
3672   elif test "$with_gl_req" = no ; then
3673     noteL 'The OpenGL 3D library is not being used.'
3674   else
3675     noteL 'The OpenGL 3D library was not found.'
3676   fi
3677
3678   if test "$gl_halfassed" = yes ; then
3679     echo ''
3680     warn2 'More specifically, we found the headers, but not the'
3681     warn2 'libraries; so either GL is half-installed on this'
3682     warn2 "system, or something else went wrong.  The \`config.log'"
3683     warn2 'file might contain some clues.'
3684   fi
3685
3686   echo ''
3687   warn2 'Those demos which use 3D will not be built or installed.'
3688   warn2 'You might want to consider installing OpenGL and'
3689   warn2 're-running configure.  (Remember to delete the'
3690   warn2 "config.cache file first.)  If your vendor doesn't ship"
3691   warn2 'their own implementation of OpenGL, you can get a free'
3692   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
3693   warn2 'info, see <http://www.opengl.org/>.'
3694
3695 fi
3696
3697
3698 if test "$have_gl" = yes -a "$have_gle" = no ; then
3699   if test "$with_gle_req" = yes ; then
3700     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
3701     warn2 'it was not found (though the OpenGL library was found, and'
3702     warn2 'is being used.)'
3703   elif test "$with_gle_req" = no ; then
3704     noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
3705     warn2 'library is not.'
3706   else
3707     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
3708     warn2 'was not.'
3709   fi
3710
3711   if test "$gle_halfassed" = yes ; then
3712     echo ''
3713     warn2 'More specifically, we found the headers, but not the'
3714     warn2 'libraries; so either GLE is half-installed on this'
3715     warn2 "system, or something else went wrong.  The \`config.log'"
3716     warn2 'file might contain some clues.'
3717   fi
3718
3719   echo ''
3720   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
3721   warn2 'will not be built or installed.  You might want to consider'
3722   warn2 'installing GLE and re-running configure.  (Remember to delete'
3723   warn2 'the config.cache file first.)  You can find the GLE library'
3724   warn2 'at <http://www.linas.org/gle/>.  For general OpenGL info,'
3725   warn2 'see <http://www.opengl.org/>.'
3726
3727 fi
3728
3729
3730 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
3731   warn 'Use of XReadDisplay was requested, but it was not found.'
3732 fi
3733
3734 if test -n "$with_fortune_req"; then
3735   if test "$with_fortune_req" != "$ac_cv_fortune_program" ; then
3736     warnL "$with_fortune_req was requested as the Fortune program,"
3737     warn2 "but was not found.  The default will be used instead."
3738   fi
3739 fi
3740
3741 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
3742   warn 'Use of Kerberos was requested, but it was not found.'
3743 fi
3744
3745 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
3746   warn 'Use of PAM was requested, but it was not found.'
3747 fi
3748
3749 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
3750   warn 'Use of shadow passwords was requested, but they were not found.'
3751 fi
3752
3753
3754 # You are in a twisty maze of namespaces and syntaxes, all alike.
3755 # Fuck the skull of Unix.
3756 #
3757 eval bindir=${bindir}
3758 eval bindir=${bindir}
3759 eval bindir=${bindir}
3760 eval bindir=${bindir}
3761 eval bindir=${bindir}
3762 eval bindir=${bindir}
3763 eval HACKDIR=${HACKDIR}
3764 eval HACKDIR=${HACKDIR}
3765 eval HACKDIR=${HACKDIR}
3766 eval HACKDIR=${HACKDIR}
3767 eval HACKDIR=${HACKDIR}
3768 eval HACKDIR=${HACKDIR}
3769 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3770 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3771 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3772 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3773 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3774 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3775
3776 # canonicalize slashes.
3777 bindir=`echo  "${bindir}"              | sed 's@/$@@;s@//*@/@g'`
3778 HACKDIR=`echo "${HACKDIR}"             | sed 's@/$@@;s@//*@/@g'`
3779 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
3780
3781
3782 # Sanity check the hackdir
3783 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
3784   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
3785     echo ""
3786     AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
3787                    There will be an executable installed with that name, so
3788                    that can't be the name of a directory as well.  Please
3789                    re-configure with a different directory name.])
3790   fi
3791 done
3792
3793
3794 do_dir_warning=no
3795
3796 # Now let's see if there's a previous RPM version already installed.  Blargh!
3797
3798 # M4 sucks!!
3799 changequote(X,Y)
3800 rpmv=`(rpm -qv xscreensaver) 2>/dev/null | \
3801       sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'`
3802 changequote([,])
3803
3804 if test \! -z "$rpmv" ; then
3805   rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
3806   rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
3807
3808   warning=no
3809   warnL "There is already an installed RPM of xscreensaver $rpmv"
3810   warn2 "on this system.  You might want to remove it (with"
3811   warn2 '"rpm -ve xscreensaver") before running "make install"'
3812   warn2 "from this directory."
3813   echo ""
3814   warn2 "Alternately, you could build this version of xscreensaver"
3815   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
3816   warn2 "file is included.  See the RPM documentation for more info."
3817   echo ""
3818
3819   if test "$rpmbdir" = "$rpmhdir" ; then
3820     warn2 "The RPM version was installed in $rpmbdir/."
3821   else
3822     warn2 "The RPM version was installed in $rpmbdir/,"
3823     warn2 "with demos in $rpmhdir/."
3824   fi
3825
3826   do_dir_warning=yes
3827 fi
3828
3829
3830 if test "${bindir}" = "${HACKDIR}" ; then
3831   do_dir_warning=yes
3832 fi
3833
3834 if test "$do_dir_warning" = yes; then
3835   echo ""
3836   echo "$warnsep"
3837   echo ""
3838   echo '      When you run "make install", the "xscreensaver",'
3839   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
3840   echo "      will be installed in ${bindir}/."
3841   echo ""
3842   echo "      The various graphics demos (140+ different executables) will"
3843   echo "      be installed in ${HACKDIR}/."
3844   echo ""
3845   echo "      If you would prefer the demos to be installed elsewhere,"
3846   echo "      you should re-run configure with the --with-hackdir=DIR"
3847   echo "      option.  For more information, run \`./configure --help'."
3848   warning=yes
3849 fi
3850
3851 if test "$warning" != no; then
3852   echo '' ; echo "$warnsep" ; echo ''
3853 fi
3854
3855 if test "$do_dir_warning" = no; then
3856   if test "$warning" = no; then
3857     echo ''
3858   fi
3859   echo "User programs will be installed in ${bindir}/"
3860   echo "Screen savers will be installed in ${HACKDIR}/"
3861   echo "Configuration will be installed in ${HACK_CONF_DIR}/"
3862   echo ''
3863 fi