http://ftp.x.org/contrib/applications/xscreensaver-3.23.tar.gz
[xscreensaver] / configure.in
1 # configure.in --- xscreensaver, Copyright (c) 1997 Jamie Zawinski.
2 #
3
4 AC_INIT(driver/subprocs.c)
5 AC_CONFIG_HEADER(config.h)
6
7 echo "current directory: `pwd`"
8 echo "command line was: $0 $@"
9
10
11 # After checking to see that --srcdir is correct (which AC_INIT does)
12 # check for some random other files that come later in the tar file,
13 # to make sure everything is here.
14 #
15 for d in driver utils hacks hacks/glx ; do
16   f=$srcdir/$d/Makefile.in
17   if test \! -r $f ; then
18     echo ""
19     echo "ERROR: The package is incomplete: $f does not exist."
20     echo "       This probably means that your download was truncated."
21     echo ""
22     exit 1
23   fi
24 done
25
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)
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     AC_MSG_RESULT(Disabling C++ comments in ANSI C code.)
70     CC="$CC -Wp,-lang-c89"
71   else
72     case "$host" in
73       *-irix5* |*-irix6.[0-3]* )
74         AC_MSG_RESULT(Turning on SGI compiler warnings.)
75         CC="$CC -fullwarn -use_readonly_const -rdata_shared -g3"
76       ;;
77 #     *-dec-osf* )
78 #       if test -z "$GCC"; then
79 #         AC_MSG_RESULT(Turning on DEC C compiler warnings.)
80 #         CC="$CC -migrate -w0 -verbose -warnprotos"
81 #       fi
82 #     ;;
83     esac
84   fi
85 ])
86
87
88 ###############################################################################
89 #
90 #       Function to figure out how to create directory trees.
91 #
92 ###############################################################################
93
94 AC_DEFUN(AC_PROG_INSTALL_DIRS,
95  [AC_CACHE_CHECK([whether \"\${INSTALL} -d\" creates intermediate directories],
96     ac_cv_install_d_creates_dirs,
97     [ac_cv_install_d_creates_dirs=no
98      rm -rf conftestdir
99      if mkdir conftestdir; then
100        cd conftestdir >&-
101        ${INSTALL} -d `pwd`/dir1/dir2 >&- 2>&-
102        if test -d dir1/dir2/. ; then
103          ac_cv_install_d_creates_dirs=yes
104        fi
105        cd .. >&-
106        rm -rf conftestdir
107      fi
108     ])
109
110   if test "$ac_cv_install_d_creates_dirs" = no ; then
111     AC_CACHE_CHECK([whether \"mkdir -p\" creates intermediate directories],
112       ac_cv_mkdir_p_creates_dirs,
113       [ac_cv_mkdir_p_creates_dirs=no
114        rm -rf conftestdir
115        if mkdir conftestdir; then
116          cd conftestdir >&-
117          mkdir -p dir1/dir2 >&- 2>&-
118          if test -d dir1/dir2/. ; then
119            ac_cv_mkdir_p_creates_dirs=yes
120          fi
121          cd .. >&-
122          rm -rf conftestdir
123        fi
124       ])
125   fi
126
127   if test "$ac_cv_install_d_creates_dirs" = yes ; then
128     INSTALL_DIRS='${INSTALL} -d'
129   elif test "$ac_cv_mkdir_p_creates_dirs" = yes ; then
130     INSTALL_DIRS='mkdir -p'
131   else
132     # any other ideas?
133     INSTALL_DIRS='${INSTALL} -d'
134   fi
135 ])
136
137
138 ###############################################################################
139 #
140 #       Function to check whether gettimeofday() exists, and how to call it.
141 #       This may define HAVE_GETTIMEOFDAY and GETTIMEOFDAY_TWO_ARGS.
142 #
143 ###############################################################################
144
145 AC_DEFUN(AC_GETTIMEOFDAY_ARGS,
146  [AC_MSG_CHECKING(how to call gettimeofday)
147   AC_CACHE_VAL(ac_cv_gettimeofday_args,
148    [AC_TRY_COMPILE([#include <stdlib.h>
149                     #include <sys/time.h>],
150                    [struct timeval tv; struct timezone tzp;
151                     gettimeofday(&tv, &tzp);],
152                    [ac_gettimeofday_args=2],
153                    [AC_TRY_COMPILE([#include <stdlib.h>
154                                     #include <sys/time.h>],
155                                    [struct timeval tv; gettimeofday(&tv);],
156                                    [ac_gettimeofday_args=1],
157                                    [ac_gettimeofday_args=0])])
158     ac_cv_gettimeofday_args=$ac_gettimeofday_args])
159   ac_gettimeofday_args=$ac_cv_gettimeofday_args
160   if test "$ac_gettimeofday_args" = 1 ; then
161     AC_DEFINE(HAVE_GETTIMEOFDAY)
162     AC_MSG_RESULT(one argument)
163   elif test "$ac_gettimeofday_args" = 2 ; then
164     AC_DEFINE(HAVE_GETTIMEOFDAY)
165     AC_DEFINE(GETTIMEOFDAY_TWO_ARGS)
166     AC_MSG_RESULT(two arguments)
167   else
168     AC_MSG_RESULT(unknown)
169   fi
170 ])
171
172
173 ###############################################################################
174 #
175 #       Function to find perl5 (defines PERL and PERL_VERSION.)
176 #
177 ###############################################################################
178
179 # M4 sucks!!  perl sucks too!!
180 changequote(X,Y)
181 perl_version_cmd='print $]'
182 changequote([,])
183
184 AC_DEFUN(AC_PROG_PERL,
185  [AC_PATH_PROGS(PERL, [perl5 perl],,)
186   if test -z "$PERL" ; then
187     PERL_VERSION=0
188   else
189     AC_CACHE_CHECK([perl version], ac_cv_perl_version,
190                    [ac_cv_perl_version=`$PERL -e "$perl_version_cmd"`])
191     PERL_VERSION=$ac_cv_perl_version
192   fi
193  ])
194
195
196 ###############################################################################
197 #
198 #       Functions to check how to do ICMP PING requests.
199 #
200 ###############################################################################
201
202 AC_DEFUN(AC_CHECK_ICMP,
203  [AC_CACHE_CHECK([for struct icmp], ac_cv_have_icmp,
204   [AC_TRY_COMPILE([#include <stdlib.h>
205                    #include <stdio.h>
206                    #include <math.h>
207                    #include <unistd.h>
208                    #include <limits.h>
209                    #include <signal.h>
210                    #include <fcntl.h>
211                    #include <sys/types.h>
212                    #include <sys/time.h>
213                    #include <sys/ipc.h>
214                    #include <sys/shm.h>
215                    #include <sys/socket.h>
216                    #include <netinet/in_systm.h>
217                    #include <netinet/in.h>
218                    #include <netinet/ip.h>
219                    #include <netinet/ip_icmp.h>
220                    #include <netinet/udp.h>
221                    #include <arpa/inet.h>
222                    #include <netdb.h>],
223                   [struct icmp i;
224                    struct sockaddr s;
225                    struct sockaddr_in si;
226                    struct ip ip;
227                    i.icmp_type = ICMP_ECHO;
228                    i.icmp_code = 0;
229                    i.icmp_cksum = 0;
230                    i.icmp_id = 0;
231                    i.icmp_seq = 0;
232                    si.sin_family = AF_INET;
233                    ip.ip_hl = 0;],
234                   [ac_cv_have_icmp=yes],
235                   [ac_cv_have_icmp=no])])
236  if test "$ac_cv_have_icmp" = yes ; then
237    AC_DEFINE(HAVE_ICMP)
238  fi])
239
240 AC_DEFUN(AC_CHECK_ICMPHDR,
241  [AC_CACHE_CHECK([for struct icmphdr], ac_cv_have_icmphdr,
242   [AC_TRY_COMPILE([#include <stdlib.h>
243                    #include <stdio.h>
244                    #include <math.h>
245                    #include <unistd.h>
246                    #include <limits.h>
247                    #include <signal.h>
248                    #include <fcntl.h>
249                    #include <sys/types.h>
250                    #include <sys/time.h>
251                    #include <sys/ipc.h>
252                    #include <sys/shm.h>
253                    #include <sys/socket.h>
254                    #include <netinet/in_systm.h>
255                    #include <netinet/in.h>
256                    #include <netinet/ip.h>
257                    #include <netinet/ip_icmp.h>
258                    #include <netinet/udp.h>
259                    #include <arpa/inet.h>
260                    #include <netdb.h>],
261                   [struct icmphdr i;
262                    struct sockaddr s;
263                    struct sockaddr_in si;
264                    struct ip ip;
265                    i.type = ICMP_ECHO;
266                    i.code = 0;
267                    i.cksum = 0;
268                    i.un.echo.id = 0;
269                    i.un.echo.sequence = 0;
270                    si.sin_family = AF_INET;
271                    ip.ip_hl = 0;],
272                   [ac_cv_have_icmphdr=yes],
273                   [ac_cv_have_icmphdr=no])])
274  if test "$ac_cv_have_icmphdr" = yes ; then
275    AC_DEFINE(HAVE_ICMPHDR)
276  fi])
277
278
279 ###############################################################################
280 #
281 #       Functions to check for various X11 crap.
282 #
283 ###############################################################################
284
285 # Try and find the app-defaults directory.
286 # It sucks that autoconf doesn't do this already...
287 #
288 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,[
289   rm -fr conftestdir
290   if mkdir conftestdir; then
291     cd conftestdir >&-
292     # Make sure to not put "make" in the Imakefile rules, since we grep it out.
293     cat > Imakefile <<'EOF'
294 acfindx:
295         @echo 'ac_x_app_defaults="${XAPPLOADDIR}"'
296 EOF
297     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
298       # GNU make sometimes prints "make[1]: Entering...", which'd confuse us.
299       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
300     fi
301     cd .. >&-
302     rm -fr conftestdir
303   fi])
304
305 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
306   # Look for the directory under a standard set of common directories.
307   # Check X11 before X11Rn because it's often a symlink to the current release.
308   for ac_dir in                                 \
309     /usr/X11/lib/app-defaults                   \
310     /usr/X11R6/lib/app-defaults                 \
311     /usr/X11R6/lib/X11/app-defaults             \
312     /usr/X11R5/lib/app-defaults                 \
313     /usr/X11R5/lib/X11/app-defaults             \
314     /usr/X11R4/lib/app-defaults                 \
315     /usr/X11R4/lib/X11/app-defaults             \
316                                                 \
317     /usr/lib/X11/app-defaults                   \
318     /usr/lib/X11R6/app-defaults                 \
319     /usr/lib/X11R5/app-defaults                 \
320     /usr/lib/X11R4/app-defaults                 \
321                                                 \
322     /usr/local/X11/lib/app-defaults             \
323     /usr/local/X11R6/lib/app-defaults           \
324     /usr/local/X11R5/lib/app-defaults           \
325     /usr/local/X11R4/lib/app-defaults           \
326                                                 \
327     /usr/local/lib/X11/app-defaults             \
328     /usr/local/lib/X11R6/app-defaults           \
329     /usr/local/lib/X11R6/X11/app-defaults       \
330     /usr/local/lib/X11R5/app-defaults           \
331     /usr/local/lib/X11R5/X11/app-defaults       \
332     /usr/local/lib/X11R4/app-defaults           \
333     /usr/local/lib/X11R4/X11/app-defaults       \
334                                                 \
335     /usr/X386/lib/X11/app-defaults              \
336     /usr/x386/lib/X11/app-defaults              \
337     /usr/XFree86/lib/X11/app-defaults           \
338                                                 \
339     /usr/lib/X11/app-defaults                   \
340     /usr/local/lib/X11/app-defaults             \
341     /usr/unsupported/lib/X11/app-defaults       \
342     /usr/athena/lib/X11/app-defaults            \
343     /usr/local/x11r5/lib/X11/app-defaults       \
344     /usr/lpp/Xamples/lib/X11/app-defaults       \
345     /lib/usr/lib/X11/app-defaults               \
346                                                 \
347     /usr/openwin/lib/app-defaults               \
348     /usr/openwin/lib/X11/app-defaults           \
349     /usr/openwin/share/lib/app-defaults         \
350     /usr/openwin/share/lib/X11/app-defaults     \
351                                                 \
352     /X11R6/lib/app-defaults                     \
353     /X11R5/lib/app-defaults                     \
354     /X11R4/lib/app-defaults                     \
355     ; \
356   do
357     if test -d "$ac_dir"; then
358       ac_x_app_defaults=$ac_dir
359       break
360     fi
361   done
362 ])
363
364 AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
365   [AC_REQUIRE_CPP()
366     AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
367      [AC_PATH_X_APP_DEFAULTS_XMKMF
368       if test x"$ac_x_app_defaults" = x; then
369         AC_PATH_X_APP_DEFAULTS_DIRECT
370       fi
371       if test x"$ac_x_app_defaults" = x; then
372         ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
373       else
374         # Record where we found app-defaults for the cache.
375         ac_cv_x_app_defaults="$ac_x_app_defaults"
376       fi])
377     eval ac_x_app_defaults="$ac_cv_x_app_defaults"])
378
379
380 AC_DEFUN(AC_XPOINTER,
381  [AC_CACHE_CHECK([for XPointer], ac_cv_xpointer,
382                  [AC_TRY_X_COMPILE([#include <X11/Xlib.h>],
383                                    [XPointer foo = (XPointer) 0;],
384                                    [ac_cv_xpointer=yes],
385                                    [ac_cv_xpointer=no])])
386   if test "$ac_cv_xpointer" != yes; then
387    AC_DEFINE(XPointer,[char*])
388   fi])
389
390
391 # Random special-cases for X on certain pathological OSes.
392 # You know who you are.
393 #
394 AC_DEFUN(AC_X_RANDOM_PATHS,
395  [case "$host" in
396     *-hpux*)
397
398       # The following arcana was gleaned from conversations with
399       # Eric Schwartz <erics@col.hp.com>:
400       #
401       # On HPUX 10.x, the parts of X that HP considers "standard" live in
402       # /usr/{include,lib}/X11R6/.  The parts that HP doesn't consider
403       # "standard", notably, Xaw and Xmu, live in /usr/contrib/X11R6/.
404       # Yet /usr/contrib/X11R6/ comes preinstalled on all HPUX systems.
405       # Also, there are symlinks from /usr/include/ and /usr/lib/ into
406       # /usr/{include,lib}/X11R6/, so that (if you don't use Xmu at all)
407       # you don't need any -I or -L arguments.
408       #
409       # On HPUX 9.x, /usr/{include,lib}/X11R5/ and /usr/contrib/X11R5/
410       # are the same division as 10.x.  However, there are no symlinks to
411       # the X stuff from /usr/include/ and /usr/lib/, so -I and -L
412       # arguments are always necessary.
413       #
414       # However, X11R6 was available on HPUX 9.x as a patch: if that
415       # patch was installed, then all of X11R6 went in to
416       # /usr/contrib/X11R6/ (there was no /usr/{include,lib}/X11R6/.)
417       #
418       # HPUX 8.x was the same as 9.x, but was X11R4 instead (I don't know
419       # whether R5 was available as a patch; R6 undoubtedly was not.)
420       #
421       # So.  We try and use the highest numbered pair of
422       # /usr/{include,lib}/X11R?/ and /usr/contrib/X11R?/{include,lib}/
423       # that are available.  We do not mix and match different versions
424       # of X.
425       #
426       # Question I still don't know the answer to: (do you?)
427       #
428       #   * On HPUX 9.x, where /usr/include/X11R5/ was standard, and
429       #     /usr/contrib/X11R6/ could be installed as a patch, what was in
430       #     that contrib directory?  Did it contain so-called "standard"
431       #     X11R6, or did it include Xaw and Xmu as well?  If the former,
432       #     where did one find Xaw and Xmu on 9.x R6 systems?  Would this
433       #     be a situation where one had to reach into the R5 headers and
434       #     libs to find Xmu?  That is, must both R6 and R5 directories
435       #     be on the -I and -L lists in that case?
436       #
437       for version in X11R6 X11R5 X11R4 ; do
438         # if either pair of directories exists...
439         if test -d /usr/lib/$version || test -d /usr/contrib/$version/lib
440         then
441            # if contrib exists, use it...
442            if test -d /usr/contrib/$version/lib ; then
443              X_CFLAGS="$X_CFLAGS -I/usr/contrib/$version/include"
444              X_LIBS="$X_LIBS -L/usr/contrib/$version/lib"
445            fi
446            # if the "standard" one exists, use it.
447            if test -d /usr/lib/$version ; then
448              X_CFLAGS="$X_CFLAGS -I/usr/include/$version"
449              X_LIBS="$X_LIBS -L/usr/lib/$version"
450            fi
451            # since at least one of the pair exists, go no farther.
452            break
453         fi
454       done
455
456       # Now find Motif.  Thanks for not making xmkmf find this by
457       # default, you losers.
458       #
459       if test -d /usr/lib/Motif1.2 ; then
460         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.2"
461         X_LIBS="$X_LIBS -L/usr/lib/Motif1.2"
462       elif test -d /usr/lib/Motif1.1 ; then
463         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.1"
464         X_LIBS="$X_LIBS -L/usr/lib/Motif1.1"
465       fi
466
467       # Now let's check for the pseudo-standard locations for OpenGL and XPM.
468       #
469       if test -d /opt/Mesa/lib ; then
470         X_CFLAGS="-I/opt/Mesa/include $X_CFLAGS"
471         X_LIBS="-L/opt/Mesa/lib $X_LIBS"
472       fi
473
474       if test -d /opt/xpm/lib/X11 ; then
475         X_CFLAGS="-I/opt/xpm/include $X_CFLAGS"
476         X_LIBS="-L/opt/xpm/lib/X11 $X_LIBS"
477       fi
478
479       # On HPUX, default to installing in /opt/xscreensaver/ instead of
480       # in /usr/local/, unless there is already an xscreensaver in
481       # /usr/local/bin/.  This can be overridden with the --prefix arg
482       # to configure.  I'm not sure this is the right thing to do, but
483       # Richard Lloyd says so...
484       #
485       if test \! -x /usr/local/bin/xscreensaver ; then
486         ac_default_prefix=/opt/xscreensaver
487       fi
488
489     ;;
490     *-solaris*)
491
492       # Thanks for not making xmkmf find this by default, pinheads.
493       # And thanks for moving things around again, too.  Is this
494       # really the standard location now?  What happened to the
495       # joke that this kind of thing went in /opt?
496       # cthomp says "answer: CDE (Common Disorganized Environment)"
497       #
498       if test -f /usr/dt/include/Xm/Xm.h ; then
499         X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
500         X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib"
501
502         # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
503         AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"])
504       fi
505     ;;
506   esac])
507
508
509
510 ###############################################################################
511 #
512 #       Some utility functions to make checking for X things easier.
513 #
514 ###############################################################################
515
516 # Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
517 #
518 AC_DEFUN(AC_CHECK_X_HEADER, [
519   ac_save_CPPFLAGS="$CPPFLAGS"
520   if test \! -z "$includedir" ; then 
521     CPPFLAGS="$CPPFLAGS -I$includedir"
522   fi
523   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
524   AC_CHECK_HEADER([$1], [$2])
525   CPPFLAGS="$ac_save_CPPFLAGS"])
526
527 # Like AC_EGREP_HEADER, but it uses the already-computed -I directories.
528 #
529 AC_DEFUN(AC_EGREP_X_HEADER, [
530   ac_save_CPPFLAGS="$CPPFLAGS"
531   if test \! -z "$includedir" ; then 
532     CPPFLAGS="$CPPFLAGS -I$includedir"
533   fi
534   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
535   AC_EGREP_HEADER([$1], [$2], [$3], [$4])
536   CPPFLAGS="$ac_save_CPPFLAGS"])
537
538 # Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
539 #
540 AC_DEFUN(AC_TRY_X_COMPILE, [
541   ac_save_CPPFLAGS="$CPPFLAGS"
542   if test \! -z "$includedir" ; then 
543     CPPFLAGS="$CPPFLAGS -I$includedir"
544   fi
545   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
546   AC_TRY_COMPILE([$1], [$2], [$3], [$4])
547   CPPFLAGS="$ac_save_CPPFLAGS"])
548
549
550 # Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
551 # Use this sparingly; it probably doesn't work very well on X programs.
552 #
553 AC_DEFUN(AC_CHECK_X_LIB, [
554   ac_save_CPPFLAGS="$CPPFLAGS"
555   ac_save_LDFLAGS="$LDFLAGS"
556 #  ac_save_LIBS="$LIBS"
557
558   if test \! -z "$includedir" ; then 
559     CPPFLAGS="$CPPFLAGS -I$includedir"
560   fi
561   # note: $X_CFLAGS includes $x_includes
562   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
563
564   if test \! -z "$libdir" ; then
565     LDFLAGS="$LDFLAGS -L$libdir"
566   fi
567   # note: $X_LIBS includes $x_libraries
568   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
569
570   AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
571   CPPFLAGS="$ac_save_CPPFLAGS"
572   LDFLAGS="$ac_save_LDFLAGS"
573 #  LIBS="$ac_save_LIBS"
574   ])
575
576 # Like AC_TRY_RUN, but it uses the already-computed -I directories.
577 # (But not the -L directories!)
578 #
579 AC_DEFUN(AC_TRY_X_RUN, [
580   ac_save_CPPFLAGS="$CPPFLAGS"
581   if test \! -z "$includedir" ; then 
582     CPPFLAGS="$CPPFLAGS -I$includedir"
583   fi
584   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
585   AC_TRY_RUN([$1], [$2], [$3], [$4])
586   CPPFLAGS="$ac_save_CPPFLAGS"])
587
588
589
590 # Usage: HANDLE_X_PATH_ARG([variable_name],
591 #                          [--command-line-option],
592 #                          [descriptive string])
593 #
594 # All of the --with options take three forms:
595 #
596 #   --with-foo (or --with-foo=yes)
597 #   --without-foo (or --with-foo=no)
598 #   --with-foo=/DIR
599 #
600 # This function, HANDLE_X_PATH_ARG, deals with the /DIR case.  When it sees
601 # a directory (string beginning with a slash) it checks to see whether
602 # /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
603 # as appropriate.
604 #
605 AC_DEFUN(HANDLE_X_PATH_ARG, [
606    case "$[$1]" in
607     yes) ;;
608     no)  ;;
609
610     /*)
611      AC_MSG_CHECKING([for [$3] headers])
612      d=$[$1]/include
613      if test -d $d; then
614        X_CFLAGS="-I$d $X_CFLAGS"
615        AC_MSG_RESULT($d)
616      else
617        AC_MSG_RESULT(not found ($d: no such directory))
618      fi
619
620      AC_MSG_CHECKING([for [$3] libs])
621      d=$[$1]/lib
622      if test -d $d; then
623        X_LIBS="-L$d $X_LIBS"
624        AC_MSG_RESULT($d)
625      else
626        AC_MSG_RESULT(not found ($d: no such directory))
627      fi
628
629      # replace the directory string with "yes".
630      [$1]_req="yes"
631      [$1]=$[$1]_req
632      ;;
633
634     *)
635      echo ""
636      echo "error: argument to [$2] must be \"yes\", \"no\", or a directory."
637      echo "       If it is a directory, then \`DIR/include' will be added to"
638      echo "       the -I list, and \`DIR/lib' will be added to the -L list."
639      exit 1
640      ;;
641    esac
642   ])
643
644
645
646 ###############################################################################
647 ###############################################################################
648 #
649 #       End of function definitions.  Now start actually executing stuff.
650 #
651 ###############################################################################
652 ###############################################################################
653
654 # random compiler setup
655 AC_CANONICAL_HOST
656 AC_PROG_CC_ANSI
657 AC_PROG_CPP
658 AC_C_CONST
659 AC_C_INLINE
660
661 # stuff for Makefiles
662 AC_PROG_INSTALL
663 AC_PROG_INSTALL_DIRS
664 AC_PROG_MAKE_SET
665
666 # random libc stuff
667 AC_HEADER_STDC
668 AC_CHECK_HEADERS(unistd.h)
669 AC_TYPE_MODE_T
670 AC_TYPE_PID_T
671 AC_TYPE_SIZE_T
672 AC_TYPE_SIGNAL
673 AC_HEADER_TIME
674 AC_HEADER_SYS_WAIT
675 AC_HEADER_DIRENT
676 AC_GETTIMEOFDAY_ARGS
677 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv)
678
679 AC_CHECK_FUNCS(sigaction syslog realpath)
680 AC_CHECK_ICMP
681 AC_CHECK_ICMPHDR
682 AC_CHECK_HEADERS(crypt.h sys/select.h)
683 AC_PROG_PERL
684
685 if test -z "$PERL" ; then
686   # don't let it be blank...
687   PERL=/usr/local/bin/perl5
688 fi
689
690 AC_PATH_XTRA
691
692 if test "$have_x" != yes; then
693   AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try \`$0 --help'.)
694 fi
695
696 AC_PATH_X_APP_DEFAULTS
697 AC_X_RANDOM_PATHS
698 AC_XPOINTER
699
700
701
702 ###############################################################################
703 #
704 #       Check for -lXmu (some fucked up vendors don't ship it...)
705 #
706 ###############################################################################
707
708 have_xmu=no
709 AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes])
710 if test "$have_xmu" = no ; then
711   XMU_SRCS='$(UTILS_SRC)/xmu.c'
712   XMU_OBJS='$(UTILS_BIN)/xmu.o'
713 else
714   XMU_SRCS=''
715   XMU_OBJS=''
716   SAVER_LIBS="-lXmu $SAVER_LIBS"
717   HACK_LIBS="-lXmu $HACK_LIBS"
718   MOTIF_LIBS="-lXmu $MOTIF_LIBS"
719   GTK_LIBS="-lXmu $GTK_LIBS"
720   AC_DEFINE(HAVE_XMU)
721 fi
722
723
724 ###############################################################################
725 #
726 #       Check for the SunOS 4.1.x _get_wmShellWidgetClass bug.
727 #       See comp.windows.x FAQ question 124.  The right fix is to
728 #       get OpenWindows 3.0 patches 100512-02 and 100573-03.
729 #
730 ###############################################################################
731
732 if test "$have_xmu" = yes ; then
733   case "$host" in
734     *-sunos4*)
735     AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
736                    ac_cv_sunos_xmu_bug,
737                    [ac_save_LDFLAGS="$LDFLAGS"
738                     if test \! -z "$x_libraries" ; then
739                       LDFLAGS="$LDFLAGS -L$x_libraries"
740                     fi
741                     # Note: this trick never works!  (Generally.)
742                     # We're only getting away with using AC_TRY_LINK
743                     # with X libraries because we know it's SunOS.
744                     LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
745                     AC_TRY_LINK(,,
746                                 [ac_cv_sunos_xmu_bug=no],
747                                 [ac_cv_sunos_xmu_bug=yes])
748                     LDFLAGS="$ac_save_LDFLAGS"])
749     if test "$ac_cv_sunos_xmu_bug" = yes ; then
750       AC_CACHE_CHECK([whether the compiler understands -static], 
751                      ac_cv_ld_static,
752                      [ac_save_LDFLAGS="$LDFLAGS"
753                       LDFLAGS="$LDFLAGS -static"
754                       AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
755                     LDFLAGS="$ac_save_LDFLAGS"])
756       if test "$ac_cv_ld_static" = yes ; then
757         LDFLAGS="$LDFLAGS -static"
758       else
759         LDFLAGS="$LDFLAGS -Bstatic"
760       fi
761     fi
762     ;;
763   esac
764 fi
765
766
767 ###############################################################################
768 #
769 #       Handle the --enable-subdir option
770 #
771 ###############################################################################
772
773 AC_ARG_ENABLE(subdir,[
774 Installation options:
775
776   --enable-subdir=DIR     Put the demo programs in a subdirectory of \`bindir',
777                           instead of putting them in bindir itself.  You can
778                           specify the name of the subdirectory.  For example,
779                           \`--exec-prefix=/usr/local --enable-subdir=demos'
780                           would put xscreensaver in /usr/local/bin/, and would
781                           put the demos in /usr/local/bin/demos/.  (If DIR
782                           begins with /, then bindir will not be prepended.)
783
784   --disable-subdir        Just put the demos in \`bindir' (this is the default.)
785 ],
786   [enable_subdir="$enableval"],[enable_subdir=no])
787 if test x"$enable_subdir" = xno; then
788   HACKDIR='${bindir}'
789 elif test x"$enable_subdir" = xyes -o x"$enable_subdir" = x ; then
790   echo "error: must be a subdirectory name: --enable-subdir=$enable_subdir"
791   exit 1
792 else
793   # there must be a better way than this...
794   if test -z "`echo $enable_subdir | sed 's@^/.*@@'`" ; then
795     # absolute path
796     HACKDIR=$enable_subdir
797   else
798     # relative path
799     HACKDIR='${bindir}/'$enable_subdir
800   fi
801 fi
802
803 # canonicalize slashes.
804 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
805
806
807 ###############################################################################
808 #
809 #       Check for the SGI SCREEN_SAVER server extension.
810 #
811 ###############################################################################
812
813 have_sgi=no
814 with_sgi_req=unspecified
815 AC_ARG_WITH(sgi-ext,
816 [Except where noted, all of the --with options below can also take a
817 directory argument: for example, \`--with-motif=/opt/Motif'.  That would
818 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
819 to be added to the -L list, assuming those directories exist.  
820
821 By default, support for each of these options will be built in, if the
822 relevant library routines exist.  At run time, they will then be used
823 only if the X server being used supports them.  Each --with option has
824 a corresponding --without option, to override building support for them
825 at all.
826
827 Screen blanking and idle-detection options:
828
829   --with-sgi-ext          Include support for the SGI SCREEN_SAVER extension.],
830   [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
831
832 HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
833
834 if test "$with_sgi" = yes; then
835   AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
836                     [have_sgi=yes
837                      AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)])
838
839 elif test "$with_sgi" != no; then
840   echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
841   exit 1
842 fi
843
844
845 ###############################################################################
846 #
847 #       Check for the MIT-SCREEN-SAVER server extension.
848 #
849 ###############################################################################
850
851 have_mit=no
852 with_mit_req=unspecified
853 AC_ARG_WITH(mit-ext,
854 [  --with-mit-ext          Include support for the MIT-SCREEN-SAVER extension.],
855   [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
856
857 HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER)
858
859 if test "$with_mit" = yes; then
860   AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes])
861
862   # Now check to see if it's really in the library; XF86Free-3.3 ships
863   # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
864   #
865   if test "$have_mit" = yes; then
866     AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [true], [have_mit=no], -lm)
867
868     if test "$have_mit" = no; then
869       # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
870       # of in Xext.  Thank you master, may I have another.
871       AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
872                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"],
873                      [true], -lX11 -lXext -lm)
874     fi
875
876     if test "$have_mit" = no; then
877       # Double fuck!  Looks like some versions of XFree86 (whichever version
878       # it is that comes with RedHat Linux 2.0 -- I can't find a version 
879       # number) put this garbage in Xss instead of Xext.  Thank you master,
880       #  may I have another.
881       AC_CHECK_X_LIB(Xss, XScreenSaverRegister,
882                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"],
883                      [true], -lX11 -lXext -lm)
884     fi
885
886   if test "$have_mit" = yes; then
887     AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
888   fi
889
890   fi
891
892 elif test "$with_mit" != no; then
893   echo "error: must be yes or no: --with-mit-ext=$with_mit"
894   exit 1
895 fi
896
897
898 ###############################################################################
899 #
900 #       Check for the XIDLE server extension.
901 #
902 ###############################################################################
903
904 have_xidle=no
905 with_xidle_req=unspecified
906 AC_ARG_WITH(xidle-ext,
907 [  --with-xidle-ext        Include support for the XIDLE extension.],
908   [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
909
910 HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
911
912 if test "$with_xidle" = yes; then
913   AC_CHECK_X_HEADER(X11/extensions/xidle.h,
914                     [have_xidle=yes
915                      AC_DEFINE(HAVE_XIDLE_EXTENSION)])
916 elif test "$with_xidle" != no; then
917   echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
918   exit 1
919 fi
920
921
922 ###############################################################################
923 #
924 #       Check for the SGI-VIDEO-CONTROL server extension.
925 #
926 ###############################################################################
927
928 have_sgivc=no
929 with_sgivc_req=unspecified
930 AC_ARG_WITH(sgivc-ext,
931 [  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL extension.],
932   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
933
934 HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
935
936 if test "$with_sgivc" = yes; then
937
938   # first check for XSGIvc.h
939   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes])
940
941   # if that succeeded, then check for the -lXsgivc
942   if test "$have_sgivc" = yes; then
943     have_sgivc=no
944     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
945                   [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true],
946                   -lXext -lX11)
947   fi
948
949   # if that succeeded, then we've really got it.
950   if test "$have_sgivc" = yes; then
951     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
952   fi
953
954 elif test "$with_sgivc" != no; then
955   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
956   exit 1
957 fi
958
959
960 ###############################################################################
961 #
962 #       Check for the DPMS server extension.
963 #
964 ###############################################################################
965
966 have_dpms=no
967 with_dpms_req=unspecified
968 AC_ARG_WITH(dpms-ext,
969 [  --with-dpms-ext         Include support for the DPMS extension.],
970   [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
971
972 HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
973
974 if test "$with_dpms" = yes; then
975
976   # first check for dpms.h
977   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes])
978
979   # if that succeeded, then check for the -lXdpms
980   if test "$have_dpms" = yes; then
981     have_dpms=no
982     AC_CHECK_X_LIB(Xdpms, DPMSInfo,
983                   [have_dpms=yes; SAVER_LIBS="$SAVER_LIBS -lXdpms"], [true],
984                   -lXext -lX11)
985   fi
986
987   # if that succeeded, then we've really got it.
988   if test "$have_dpms" = yes; then
989     AC_DEFINE(HAVE_DPMS_EXTENSION)
990   fi
991
992 elif test "$with_dpms" != no; then
993   echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
994   exit 1
995 fi
996
997
998 ###############################################################################
999 #
1000 #       Check for the XF86VMODE server extension.
1001 #
1002 ###############################################################################
1003
1004 have_xf86vmode=no
1005 with_xf86vmode_req=unspecified
1006 AC_ARG_WITH(xf86vmode-ext,
1007 [  --with-xf86vmode-ext    Include support for XFree86 virtual screens.],
1008   [with_xf86vmode="$withval"; with_xf86vmode_req="$withval"],
1009   [with_xf86vmode=yes])
1010
1011 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
1012
1013 if test "$with_xf86vmode" = yes; then
1014
1015   # first check for xf86vmode.h
1016   AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes])
1017
1018   # if that succeeded, then check for the -lXxf86vm
1019   if test "$have_xf86vmode" = yes; then
1020     have_xf86vmode=no
1021     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
1022                   [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"],
1023                    [true], -lXext -lX11)
1024   fi
1025
1026   # if that succeeded, then we've really got it.
1027   if test "$have_xf86vmode" = yes; then
1028     AC_DEFINE(HAVE_XF86VMODE)
1029   fi
1030
1031 elif test "$with_xf86vmode" != no; then
1032   echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
1033   exit 1
1034 fi
1035
1036
1037 ###############################################################################
1038 #
1039 #       Check for HP XHPDisableReset and XHPEnableReset.
1040 #
1041 ###############################################################################
1042
1043 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
1044                   [AC_DEFINE(HAVE_XHPDISABLERESET)
1045                    SAVER_LIBS="-lXhp11 $SAVER_LIBS"])
1046
1047
1048 ###############################################################################
1049 #
1050 #       Check for /proc/interrupts.
1051 #
1052 ###############################################################################
1053
1054 have_proc_interrupts=no
1055 with_proc_interrupts_req=unspecified
1056 AC_ARG_WITH(proc-interrupts,
1057 [  --with-proc-interrupts  Include support for consulting the /proc/interrupts
1058                           file to notice keyboard activity.],
1059   [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
1060   [with_proc_interrupts=yes])
1061
1062 if test "$with_proc_interrupts" = yes; then
1063
1064    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
1065     ac_cv_have_proc_interrupts,
1066     [ac_cv_have_proc_interrupts=no
1067      if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
1068        ac_cv_have_proc_interrupts=yes
1069      fi
1070     ])
1071    have_proc_interrupts=$ac_cv_have_proc_interrupts
1072
1073   if test "$have_proc_interrupts" = yes; then
1074     AC_DEFINE(HAVE_PROC_INTERRUPTS)
1075   fi
1076
1077 elif test "$with_proc_interrupts" != no; then
1078   echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
1079   exit 1
1080 fi
1081
1082
1083 ###############################################################################
1084 #
1085 #       The --enable-locking option
1086 #
1087 ###############################################################################
1088
1089 AC_ARG_ENABLE(locking,[
1090 Screen locking options:
1091
1092   --enable-locking        Compile in support for locking the display.
1093   --disable-locking       Do not allow locking at all.
1094 ],
1095   [enable_locking="$enableval"],[enable_locking=yes])
1096 if test "$enable_locking" = yes; then
1097   true
1098 elif test "$enable_locking" = no; then
1099   AC_DEFINE(NO_LOCKING)
1100 else
1101   echo "error: must be yes or no: --enable-locking=$enable_locking"
1102   exit 1
1103 fi
1104
1105
1106
1107 ###############################################################################
1108 #
1109 #       The --enable-vt-locking option
1110 #
1111 ###############################################################################
1112
1113 #ac_vt_lockswitch=no
1114 #AC_ARG_ENABLE(vt-locking,[
1115 #  --enable-vt-locking     Compile in support for locking Virtual Terminals.
1116 #                          This is the default if the system supports it, and
1117 #                          if locking support is included (--enable-locking.)
1118 #  --disable-vt-locking    Do not allow locking of VTs, even if locking is
1119 #                          enabled.],
1120 #  [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
1121 #if test "$enable_vt_locking" = yes; then
1122 #
1123 #  AC_CACHE_CHECK([for the VT_LOCKSWITCH ioctl], ac_cv_vt_lockswitch,
1124 #   [AC_TRY_COMPILE([#include <fcntl.h>
1125 #                   #include <sys/ioctl.h>
1126 #                   #include <sys/vt.h>],
1127 #                  [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
1128 #                  [ac_cv_vt_lockswitch=yes],
1129 #                  [ac_cv_vt_lockswitch=no])])
1130 #  ac_vt_lockswitch=$ac_cv_vt_lockswitch
1131 #
1132 #elif test "$enable_vt_locking" = no; then
1133 #  true
1134 #else
1135 #  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
1136 #  exit 1
1137 #fi
1138 #
1139 #if test "$ac_vt_lockswitch" = yes; then
1140 #  AC_DEFINE(HAVE_VT_LOCKSWITCH)
1141 #  # the VT_LOCKSWITCH ioctl can only be used when running as root.
1142 #  # #### but it doesn't work yet, so don't worry about that for now.
1143 ##  need_setuid=yes
1144 #fi
1145
1146
1147
1148 ###############################################################################
1149 #
1150 #       Check for PAM.
1151 #
1152 ###############################################################################
1153
1154 case "$host" in
1155   *-solaris*)
1156    # Solaris systems tend to come with PAM misconfigured.
1157    #  Don't build it by default, even if the headers exist.
1158    with_pam_default=no
1159    ;;
1160   *)
1161    # Default to building PAM support on all other systems, if it exists.
1162    with_pam_default=yes
1163   ;;
1164 esac
1165
1166 have_pam=no
1167 with_pam_req=unspecified
1168
1169 AC_ARG_WITH(pam,
1170 [  --with-pam              Include support for PAM (Pluggable Auth Modules.)],
1171   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
1172
1173 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1174
1175 if test "$enable_locking" = yes -a "$with_pam" = yes; then
1176   AC_CACHE_CHECK([for PAM], ac_cv_pam,
1177                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1178                                    [ac_cv_pam=yes],
1179                                    [ac_cv_pam=no])])
1180   if test "$ac_cv_pam" = yes ; then
1181     have_pam=yes
1182     AC_DEFINE(HAVE_PAM)
1183     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
1184
1185     # libpam typically requires dlopen and dlsym.  On FreeBSD,
1186     # those are in libc.  On Linux and Solaris, they're in libdl.
1187     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
1188
1189     AC_MSG_CHECKING(how to call pam_strerror)
1190     AC_CACHE_VAL(ac_cv_pam_strerror_args,
1191      [AC_TRY_COMPILE([#include <stdio.h>
1192                       #include <stdlib.h>
1193                       #include <security/pam_appl.h>],
1194                      [pam_handle_t *pamh = 0;
1195                       char *s = pam_strerror(pamh, PAM_SUCCESS);],
1196                      [ac_pam_strerror_args=2],
1197                      [AC_TRY_COMPILE([#include <stdio.h>
1198                                       #include <stdlib.h>
1199                                       #include <security/pam_appl.h>],
1200                                      [char *s =
1201                                        pam_strerror(PAM_SUCCESS);],
1202                                      [ac_pam_strerror_args=1],
1203                                      [ac_pam_strerror_args=0])])
1204       ac_cv_pam_strerror_args=$ac_pam_strerror_args])
1205     ac_pam_strerror_args=$ac_cv_pam_strerror_args
1206     if test "$ac_pam_strerror_args" = 1 ; then
1207       AC_MSG_RESULT(one argument)
1208     elif test "$ac_pam_strerror_args" = 2 ; then
1209       AC_DEFINE(PAM_STRERROR_TWO_ARGS)
1210       AC_MSG_RESULT(two arguments)
1211     else
1212       AC_MSG_RESULT(unknown)
1213     fi
1214   fi
1215 fi
1216
1217
1218 ###############################################################################
1219 #
1220 #       Check for Kerberos.
1221 #
1222 ###############################################################################
1223
1224 have_kerberos=no
1225 with_kerberos_req=unspecified
1226
1227 AC_ARG_WITH(kerberos, 
1228 [  --with-kerberos         Include support for Kerberos authentication.],
1229   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
1230
1231 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
1232
1233 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
1234   AC_CACHE_CHECK([for Kerberos], ac_cv_kerberos,
1235                  [AC_TRY_X_COMPILE([#include <krb.h>],,
1236                                    [ac_cv_kerberos=yes],
1237                                    [ac_cv_kerberos=no])])
1238   if test "$ac_cv_kerberos" = yes ; then
1239     have_kerberos=yes
1240     AC_DEFINE(HAVE_KERBEROS)
1241
1242     # from Tim Showalter <tjs+@andrew.cmu.edu>
1243     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes"
1244     AC_CHECK_FUNC(res_search,,
1245       AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
1246         AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
1247       ))
1248
1249   fi
1250 fi
1251
1252
1253 ###############################################################################
1254 #
1255 #       Check for the nine billion variants of shadow passwords...
1256 #
1257 ###############################################################################
1258
1259 need_setuid=no
1260
1261 have_shadow=no
1262 with_shadow_req=unspecified
1263
1264 AC_ARG_WITH(shadow,
1265 [  --with-shadow           Include support for shadow password authentication.],
1266   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
1267
1268 HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
1269
1270 if test "$enable_locking" = no ; then
1271   with_shadow_req=no
1272   with_shadow=no
1273 fi
1274
1275
1276 ###############################################################################
1277 #
1278 #       Check for Sun "adjunct" passwords.
1279 #
1280 ###############################################################################
1281
1282 if test "$with_shadow" = yes ; then
1283   AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
1284                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1285                                     #include <unistd.h>
1286                                     #include <sys/types.h>
1287                                     #include <sys/label.h>
1288                                     #include <sys/audit.h>
1289                                     #include <pwdadj.h>],
1290                       [struct passwd_adjunct *p = getpwanam("nobody");
1291                        const char *pw = p->pwa_passwd;],
1292                       [ac_cv_sun_adjunct=yes],
1293                       [ac_cv_sun_adjunct=no])])
1294   if test "$ac_cv_sun_adjunct" = yes; then
1295     have_shadow_adjunct=yes
1296     have_shadow=yes
1297     need_setuid=yes
1298   fi
1299 fi
1300
1301
1302 ###############################################################################
1303 #
1304 #       Check for DEC and SCO so-called "enhanced" security.
1305 #
1306 ###############################################################################
1307
1308 if test "$with_shadow" = yes ; then
1309   AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
1310                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1311                                     #include <unistd.h>
1312                                     #include <sys/types.h>
1313                                     #include <pwd.h>
1314                                     #include <sys/security.h>
1315                                     #include <prot.h>],
1316                       [struct pr_passwd *p;
1317                        const char *pw;
1318                        set_auth_parameters(0, 0);
1319                        check_auth_parameters();
1320                        p = getprpwnam("nobody");
1321                        pw = p->ufld.fd_encrypt;],
1322                       [ac_cv_enhanced_passwd=yes],
1323                       [ac_cv_enhanced_passwd=no])])
1324   if test $ac_cv_enhanced_passwd = yes; then
1325     have_shadow_enhanced=yes
1326     have_shadow=yes
1327     need_setuid=yes
1328
1329     # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
1330     # (I'm told it needs -lcurses too, but I don't understand why.)
1331     # But on DEC, it's in -lsecurity.
1332     #
1333     AC_CHECK_LIB(prot, getprpwnam, 
1334                  [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
1335                  [AC_CHECK_LIB(security, getprpwnam, 
1336                                [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
1337                  [-lx])
1338   fi
1339 fi
1340
1341 ###############################################################################
1342 #
1343 #       Check for HP's entry in the "Not Invented Here" Sweepstakes.
1344 #
1345 ###############################################################################
1346
1347 if test "$with_shadow" = yes ; then
1348   AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
1349                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1350                                     #include <unistd.h>
1351                                     #include <sys/types.h>
1352                                     #include <pwd.h>
1353                                     #include <hpsecurity.h>
1354                                     #include <prot.h>],
1355                       [struct s_passwd *p = getspwnam("nobody");
1356                        const char *pw = p->pw_passwd;],
1357                       [ac_cv_hpux_passwd=yes],
1358                       [ac_cv_hpux_passwd=no])])
1359   if test "$ac_cv_hpux_passwd" = yes; then
1360     have_shadow_hpux=yes
1361     have_shadow=yes
1362     need_setuid=yes
1363
1364     # on HPUX, bigcrypt is in -lsec
1365     AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
1366   fi
1367 fi
1368
1369
1370 ###############################################################################
1371 #
1372 #       Check for FreeBSD-style shadow passwords.
1373 #
1374 #       On FreeBSD, getpwnam() and friends work just like on non-shadow-
1375 #       password systems -- except you only get stuff in the pw_passwd field
1376 #       if the running program is setuid.  So, guess that we've got this
1377 #       lossage to contend with if /etc/master.passwd exists, and default to
1378 #       a setuid installation.
1379 #
1380 ###############################################################################
1381
1382 if test "$with_shadow" = yes ; then
1383   AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
1384                  [if test -f /etc/master.passwd ; then
1385                     ac_cv_master_passwd=yes
1386                   else
1387                     ac_cv_master_passwd=no
1388                   fi])
1389   if test "$ac_cv_master_passwd" = yes; then
1390     need_setuid=yes
1391   fi
1392 fi
1393
1394
1395 ###############################################################################
1396 #
1397 #       Check for traditional (ha!) shadow passwords.
1398 #
1399 ###############################################################################
1400
1401 if test "$with_shadow" = yes ; then
1402   AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
1403                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1404                                     #include <unistd.h>
1405                                     #include <sys/types.h>
1406                                     #include <pwd.h>
1407                                     #include <shadow.h>],
1408                       [struct spwd *p = getspnam("nobody");
1409                        const char *pw = p->sp_pwdp;],
1410                       [ac_cv_shadow=yes],
1411                       [ac_cv_shadow=no])])
1412   if test "$ac_cv_shadow" = yes; then
1413     have_shadow=yes
1414     need_setuid=yes
1415
1416     # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
1417     have_getspnam=no
1418     AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
1419     if test "$have_getspnam" = no ; then
1420       AC_CHECK_LIB(gen, getspnam,
1421                    [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
1422     fi
1423   fi
1424 fi
1425
1426
1427 ###############################################################################
1428 #
1429 #       Check for other libraries needed for non-shadow passwords.
1430 #
1431 ###############################################################################
1432
1433 if test "$enable_locking" = yes ; then
1434
1435   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
1436   have_crypt=no
1437   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
1438   if test "$have_crypt" = no ; then
1439     AC_CHECK_LIB(crypt, crypt,
1440                  [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1441   fi
1442 fi
1443
1444
1445 # Most of the above shadow mechanisms will have set need_setuid to yes,
1446 # if they were found.  But, on some systems, we need setuid even when
1447 # using plain old vanilla passwords.
1448 #
1449 if test "$enable_locking" = yes ; then
1450   case "$host" in
1451     *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
1452       need_setuid=yes
1453     ;;
1454   esac
1455 fi
1456
1457
1458 if test "$have_shadow_adjunct" = yes ; then
1459   AC_DEFINE(HAVE_ADJUNCT_PASSWD)
1460 elif test "$have_shadow_enhanced" = yes ; then
1461   AC_DEFINE(HAVE_ENHANCED_PASSWD)
1462 elif test "$have_shadow_hpux" = yes ; then
1463   AC_DEFINE(HAVE_HPUX_PASSWD)
1464 elif test "$have_shadow" = yes ; then
1465   AC_DEFINE(HAVE_SHADOW_PASSWD)
1466 fi
1467
1468
1469 ###############################################################################
1470 #
1471 #       Check for -lXm.
1472 #
1473 ###############################################################################
1474
1475 have_motif=no
1476 with_motif_req=unspecified
1477 AC_ARG_WITH(motif,[
1478 User interface options:
1479
1480   --with-motif            Use the Motif toolkit for the user interface.],
1481   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes])
1482
1483 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
1484
1485 if test "$with_motif" != yes -a "$with_motif" != no ; then
1486   echo "error: must be yes or no: --with-motif=$with_motif"
1487   exit 1
1488 fi
1489
1490 if test "$with_motif" = yes; then
1491   have_motif=no
1492   AC_CHECK_X_HEADER(Xm/Xm.h,
1493                     [have_motif=yes
1494                      AC_DEFINE(HAVE_MOTIF)
1495                      MOTIF_LIBS="$MOTIF_LIBS -lXm"])
1496 fi
1497
1498
1499 if test "$have_motif" = yes; then
1500   AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)])
1501 fi
1502
1503
1504 ###############################################################################
1505 #
1506 #       Check for -lgtk.
1507 #
1508 ###############################################################################
1509
1510 have_gtk=no
1511 with_gtk_req=unspecified
1512 AC_ARG_WITH(gtk,
1513 [  --with-gtk              Use the Gtk toolkit for the user interface.],
1514   [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
1515
1516 # if --with-gtk=/directory/ was specified, remember that directory so that
1517 # we can also look for the `gtk-config' program in that directory.
1518 case "$with_gtk" in
1519   /*)
1520     gtk_dir="$with_gtk"
1521     ;;
1522   *)
1523     gtk_dir=""
1524     ;;
1525 esac
1526
1527 HANDLE_X_PATH_ARG(with_gtk, --with-gtk, Gtk)
1528
1529 if test "$with_gtk" != yes -a "$with_gtk" != no ; then
1530   echo "error: must be yes or no: --with-gtk=$with_gtk"
1531   exit 1
1532 fi
1533
1534 jurassic_gtk=no
1535 if test "$with_gtk" = yes; then
1536   have_gtk=no
1537   
1538   # if the user specified --with-gtk=/foo/ then look in /foo/bin/
1539   # for glib-config and gtk-config.
1540   #
1541   gtk_path="$PATH"
1542
1543   if test ! -z "$gtk_dir"; then
1544     # canonicalize slashes.
1545     gtk_dir=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
1546     gtk_path="$gtk_dir:$gtk_dir:$gtk_path"
1547   fi
1548
1549   AC_PATH_PROGS(glib_config, glib-config,, $gtk_path)
1550   AC_PATH_PROGS(gtk_config,  gtk-config,,  $gtk_path)
1551
1552   if test -n "$glib_config" -a  -n "gtk_config" ; then
1553     have_gtk=yes
1554   fi
1555   if test "$have_gtk" = yes; then
1556     AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
1557                    [ac_cv_gtk_version_string=`$glib_config --version`])
1558     ac_gtk_version_string=$ac_cv_gtk_version_string
1559     # M4 sucks!!
1560     changequote(X,Y)
1561     maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
1562     min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
1563     changequote([,])
1564     ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
1565     if test -z "$ac_gtk_version"; then
1566       ac_gtk_version=unknown
1567       ac_gtk_version_string=unknown
1568     fi
1569     if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
1570     then
1571       have_gtk=no
1572       jurassic_gtk=yes
1573     fi
1574   fi
1575   if test "$have_gtk" = yes; then
1576     AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
1577                    [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
1578     AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
1579                    [ac_cv_gtk_config_libs=`$gtk_config --libs`])
1580     INCLUDES="$INCLUDES $ac_cv_gtk_config_cflags"
1581     GTK_LIBS="$GTK_LIBS $ac_cv_gtk_config_libs"
1582     AC_DEFINE(HAVE_GTK)
1583   fi
1584 fi
1585
1586
1587 ###############################################################################
1588 #
1589 #       Checking whether Motif is really Lesstif.
1590 #
1591 ###############################################################################
1592
1593 have_lesstif=no
1594 if test "$have_motif" = yes ; then
1595   AC_CACHE_CHECK([whether Motif is really LessTif], 
1596                  ac_cv_have_lesstif,
1597                  [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
1598                                    [long vers = LesstifVersion;],
1599                                    [ac_cv_have_lesstif=yes],
1600                                    [ac_cv_have_lesstif=no])])
1601   have_lesstif=$ac_cv_have_lesstif
1602 fi
1603
1604
1605 lesstif_version=unknown
1606 lesstif_version_string=unknown
1607
1608 if test "$have_lesstif" = yes ; then
1609   ltv=unknown
1610   echo unknown > conftest-lt
1611   AC_CACHE_CHECK([LessTif version number],
1612                  ac_cv_lesstif_version_string,
1613       [AC_TRY_X_RUN([#include <stdio.h>
1614                      #include <Xm/Xm.h>
1615                      int main() {
1616                        FILE *f = fopen("conftest-lt", "w");
1617                        if (!f) exit(1);
1618                        fprintf(f, "%d %d.%d\n", LesstifVersion,
1619                           LESSTIF_VERSION, LESSTIF_REVISION);
1620                        fclose(f);
1621                        exit(0);
1622                      }],
1623                     [ltv=`cat conftest-lt`
1624                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
1625                      ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
1626                     [ac_cv_lesstif_version=unknown
1627                      ac_cv_lesstif_version_string=unknown],
1628                     [ac_cv_lesstif_version=unknown
1629                      ac_cv_lesstif_version_string=unknown])])
1630   rm -f conftest-lt
1631   lesstif_version=$ac_cv_lesstif_version
1632   lesstif_version_string=$ac_cv_lesstif_version_string
1633
1634 fi
1635
1636
1637 if test "$have_motif" = yes ; then
1638   mtv=unknown
1639   echo unknown > conftest-mt
1640   AC_CACHE_CHECK([Motif version number],
1641                  ac_cv_motif_version_string,
1642       [AC_TRY_X_RUN([#include <stdio.h>
1643                      #include <Xm/Xm.h>
1644                      int main() {
1645                        FILE *f = fopen("conftest-mt", "w");
1646                        if (!f) exit(1);
1647                        fprintf(f, "%d %d.%d\n", XmVersion,
1648                           XmVERSION, XmREVISION);
1649                        fclose(f);
1650                        exit(0);
1651                      }],
1652                     [mtv=`cat conftest-mt`
1653                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
1654                      ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
1655                     [ac_cv_motif_version=unknown
1656                      ac_cv_motif_version_string=unknown],
1657                     [ac_cv_motif_version=unknown
1658                      ac_cv_motif_version_string=unknown])])
1659   rm -f conftest-mt
1660   motif_version=$ac_cv_motif_version
1661   motif_version_string=$ac_cv_motif_version_string
1662
1663 fi
1664
1665
1666 ###############################################################################
1667 #
1668 #       Checking whether Motif requires -lXpm.
1669 #
1670 #       If this is Motif 2.x, and we have XPM, then link against XPM as well.
1671 #       The deal is, Motif 2.x requires XPM -- but it's a compilation option
1672 #       of the library whether to build the XPM code into libXm, or whether
1673 #       to rely on an external libXm.  So the only way to tell whether XPM is
1674 #       a link-time requirement is to examine libXm.a, which is very
1675 #       difficult to do in an autoconf script.  So... if it's Motif 2.x, we
1676 #       always link against XPM if the XPM lib exists (and this will be a
1677 #       no-op if libXm happens to already have the XPM code in it.)
1678 #
1679 ###############################################################################
1680
1681 motif_requires_xpm=no
1682 if test "$have_motif" = yes ; then
1683    AC_MSG_CHECKING(whether Motif requires XPM)
1684    if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000
1685    then
1686      motif_requires_xpm=yes
1687      AC_MSG_RESULT(maybe)
1688    else
1689      AC_MSG_RESULT(no)
1690    fi
1691 fi
1692
1693
1694 ###############################################################################
1695 #
1696 #       Checking whether Motif requires -lXp.
1697 #
1698 #       Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
1699 #       Extension".   Why this extension isn't in -lXext with all the others,
1700 #       I have no idea.
1701 #
1702 ###############################################################################
1703
1704 have_xp_ext=no
1705 if test "$have_motif" = yes ; then
1706    have_xp_ext=no
1707    AC_CHECK_X_LIB(Xp, XpQueryExtension,
1708                   [have_xp_ext=yes; MOTIF_LIBS="$MOTIF_LIBS -lXp"],
1709                   [true], -lX11 -lXext -lm)
1710 fi
1711
1712
1713 ###############################################################################
1714 #
1715 #       Checking whether Motif requires -lXintl (for _Xsetlocale.)
1716 #
1717 ###############################################################################
1718
1719 have_xintl=no
1720 if test "$have_motif" = yes ; then
1721   AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
1722                  -lX11 -lXext -lm)
1723   if test "$have_xintl" = yes; then
1724     MOTIF_LIBS="$MOTIF_LIBS -lXintl"
1725   fi
1726 fi
1727
1728
1729 ###############################################################################
1730 #
1731 #       Check for -lGL or -lMesaGL.
1732 #
1733 ###############################################################################
1734
1735 have_gl=no
1736 ac_have_mesa_gl=no
1737 with_gl_req=unspecified
1738 gl_halfassed=no
1739 AC_ARG_WITH(gl,[
1740 Graphics options:
1741
1742   --with-gl               Build those demos which depend on OpenGL.],
1743   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
1744
1745 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
1746
1747 ac_mesagl_version=unknown
1748 ac_mesagl_version_string=unknown
1749
1750 if test "$with_gl" = yes; then
1751   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
1752   if test "$have_gl" = yes ; then
1753     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no)
1754   fi
1755
1756   # If we have the headers, try and figure out which vendor it's from.
1757   #
1758   if test "$have_gl" = yes ; then
1759
1760     # We need to know whether it's MesaGL so that we know which libraries
1761     # to link against.
1762     #
1763     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
1764       [ac_cv_have_mesa_gl=no
1765        AC_EGREP_X_HEADER(Mesa, GL/glx.h, [ac_cv_have_mesa_gl=yes])
1766       ])
1767     ac_have_mesa_gl=$ac_cv_have_mesa_gl
1768  
1769
1770     gl_lib_1=""
1771     GL_LIBS=""
1772
1773
1774     # Some versions of MesaGL are compiled to require -lpthread.
1775     # So if the Mesa headers exist, and -lpthread exists, then always
1776     # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
1777     #
1778     if test "$ac_have_mesa_gl" = yes; then
1779       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
1780     fi
1781
1782
1783     # If we have Mesa headers, check to see if we can link against -lMesaGL.
1784     # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
1785     # Else, warn that GL is busted.  (We have the headers, but no libs.)
1786     #
1787
1788     if test "$ac_have_mesa_gl" = yes ; then
1789       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
1790                      [gl_lib_1="MesaGL"
1791                       GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
1792                      [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
1793     fi
1794
1795     if test "$gl_lib_1" = "" ; then
1796       AC_CHECK_X_LIB(GL, glXCreateContext, 
1797                      [gl_lib_1="GL"
1798                       GL_LIBS="-lGL -lGLU $GL_LIBS"],
1799                      [], -lGLU $GL_LIBS -lX11 -lXext -lm)
1800     fi
1801
1802     if test "$gl_lib_1" = "" ; then
1803       # we have headers, but no libs -- bail.
1804       have_gl=no
1805       ac_have_mesa_gl=no
1806       gl_halfassed=yes
1807     else
1808       # linking works -- we can build the GL hacks.
1809       AC_DEFINE(HAVE_GL)
1810       if test "$ac_have_mesa_gl" = yes ; then
1811         AC_DEFINE(HAVE_MESA_GL)
1812       fi
1813     fi
1814   fi
1815
1816
1817   # Now that we know we have GL headers and libs, do some more GL testing.
1818   #
1819
1820   if test "$have_gl" = yes ; then
1821     # If it's MesaGL, we'd like to issue a warning if the version number
1822     # is less than or equal to 2.6, because that version had a security bug.
1823     #
1824     if test "$ac_have_mesa_gl" = yes; then
1825
1826       AC_CACHE_CHECK([MesaGL version number], ac_cv_mesagl_version_string,
1827         [cat > conftest.$ac_ext <<EOF
1828 #line __oline__ "configure"
1829 #include "confdefs.h"
1830 #include <GL/gl.h>
1831 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
1832 EOF
1833
1834          ac_save_CPPFLAGS="$CPPFLAGS"
1835          if test \! -z "$includedir" ; then 
1836            CPPFLAGS="$CPPFLAGS -I$includedir"
1837          fi
1838          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1839
1840           # M4 sucks!!
1841          changequote(X,Y)
1842          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | sed -n \
1843               's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
1844          changequote([,])
1845
1846          rm -f conftest.$ac_ext
1847
1848          CPPFLAGS="$ac_save_CPPFLAGS"
1849
1850          if test "$mglv" = ""; then
1851            ac_mesagl_version=unknown
1852            ac_mesagl_version_string=unknown
1853          else
1854            ac_mesagl_version_string=$mglv
1855            maj=`echo $mglv | sed -n 's/\..*//p'`
1856            min=`echo $mglv | sed -n 's/.*\.//p'`
1857            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
1858            if test -z "$ac_mesagl_version"; then
1859              ac_mesagl_version=unknown
1860              ac_mesagl_version_string=unknown
1861            fi
1862          fi
1863          ac_cv_mesagl_version=$ac_mesagl_version
1864          ac_cv_mesagl_version_string=$ac_mesagl_version_string
1865       ])
1866       ac_mesagl_version=$ac_cv_mesagl_version
1867       ac_mesagl_version_string=$ac_cv_mesagl_version_string
1868     fi
1869
1870
1871     # Check for OpenGL 1.1 features.
1872     #
1873     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
1874                    [true], $GL_LIBS -lX11 -lXext -lm)
1875
1876
1877     # Check whether the `xscreensaver' executable should link against GL.
1878     # See comments in utils/visual-gl.c for why this is sometimes necessary.
1879     #
1880     AC_MSG_CHECKING(whether drastic GL measures must be taken)
1881     case "$host" in
1882       *-sgi*)
1883         AC_MSG_RESULT([yes -- hello, SGI.])
1884         AC_DEFINE(DAEMON_USE_GL)
1885         SAVER_GL_SRCS='$(UTILS_SRC)/visual-gl.c'
1886         SAVER_GL_OBJS='$(UTILS_BIN)/visual-gl.o'
1887         SAVER_GL_LIBS="$GL_LIBS"
1888       ;;
1889       *)
1890         AC_MSG_RESULT([no -- non-SGI.])
1891         SAVER_GL_SRCS=''
1892         SAVER_GL_OBJS=''
1893         SAVER_GL_LIBS=''
1894       ;;
1895     esac
1896
1897   fi
1898
1899 elif test "$with_gl" != no; then
1900   echo "error: must be yes or no: --with-gl=$with_gl"
1901   exit 1
1902 fi
1903
1904
1905 ###############################################################################
1906 #
1907 #       Check for -lgle.
1908 #
1909 ###############################################################################
1910
1911 have_gle=no
1912 with_gle_req=unspecified
1913 gle_halfassed=no
1914 AC_ARG_WITH(gle,
1915 [  --with-gle              Build those demos which depend on GLE
1916                           (the OpenGL "extrusion" library.)],
1917   [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
1918
1919 HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
1920
1921 GLE_LIBS=""
1922
1923 if test "$with_gle" = yes; then
1924
1925   AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no)
1926   if test "$have_gle" = yes ; then
1927     AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no)
1928   fi
1929
1930   if test "$have_gle" = yes ; then
1931     have_gle=no
1932     gle_halfassed=yes
1933     AC_CHECK_X_LIB(gle, gleCreateGC, 
1934                    [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
1935                    [], $GL_LIBS -lX11 -lXext -lm)
1936   fi
1937   if test "$have_gle" = yes ; then
1938     have_gle=no
1939     gle_halfassed=yes
1940
1941     # sometimes the libmatrix stuff is included in libgle.  look there first.
1942 #
1943 # I don't get it.  For some reason, this test passes on SGI, as if
1944 # uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
1945 # Yet the link is succeeding.  Why???
1946 #
1947 #    AC_CHECK_X_LIB(gle, uview_direction_d, 
1948 #                   [have_gle=yes; gle_halfassed=no],
1949 #                   [], $GL_LIBS -lX11 -lXext -lm)
1950
1951     # if it wasn't in libgle, then look in libmatrix.
1952     if test "$have_gle" = no ; then
1953       AC_CHECK_X_LIB(matrix, uview_direction_d, 
1954                      [have_gle=yes; gle_halfassed=no;
1955                       GLE_LIBS="$GLE_LIBS -lmatrix"],
1956                     [], $GL_LIBS -lX11 -lXext -lm)
1957     fi
1958   fi
1959
1960   if test "$have_gle" = yes ; then
1961     AC_DEFINE(HAVE_GLE)
1962   fi
1963
1964 elif test "$with_gle" != no; then
1965   echo "error: must be yes or no: --with-gle=$with_gle"
1966   exit 1
1967
1968 fi
1969
1970
1971
1972 ###############################################################################
1973 #
1974 #       Check for -lXpm.
1975 #
1976 ###############################################################################
1977
1978 have_xpm=no
1979 with_xpm_req=unspecified
1980 AC_ARG_WITH(xpm,
1981 [  --with-xpm              Include support for XPM files in some demos.],
1982   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
1983
1984 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
1985
1986 if test "$with_xpm" = yes; then
1987   AC_CHECK_X_HEADER(X11/xpm.h,
1988                    [have_xpm=yes
1989                     AC_DEFINE(HAVE_XPM)
1990                     XPM_LIBS="-lXpm"])
1991 elif test "$with_xpm" != no; then
1992   echo "error: must be yes or no: --with-xpm=$with_xpm"
1993   exit 1
1994 fi
1995
1996 # See comment near $motif_requires_xpm, above.
1997 # Need to do this here, after both Motif and XPM have been checked for.
1998 #
1999 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
2000   if test "$motif_requires_xpm" = yes ; then
2001     MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
2002   fi
2003 fi
2004
2005
2006 ###############################################################################
2007 #
2008 #       Check for the XSHM server extension.
2009 #
2010 ###############################################################################
2011
2012 have_xshm=no
2013 with_xshm_req=unspecified
2014 AC_ARG_WITH(xshm-ext,
2015 [  --with-xshm-ext         Include support for the XSHM extension.],
2016   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
2017
2018 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
2019
2020 if test "$with_xshm" = yes; then
2021
2022   # first check for Xshm.h.
2023   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes])
2024
2025   # if that succeeded, then check for sys/ipc.h.
2026   if test "$have_xshm" = yes; then
2027     have_xshm=no
2028     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
2029   fi
2030
2031   # if that succeeded, then check for sys/shm.h.
2032   if test "$have_xshm" = yes; then
2033     have_xshm=no
2034     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
2035   fi
2036
2037   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
2038   # to exist, but the library code to not exist.  And even better, the library
2039   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
2040   # lib doesn't exist, give up.  (This lib gets added to X_EXTRA_LIBS, and
2041   # that's not quite right, but close enough.)
2042   #
2043   case "$host" in
2044     *-aix*)
2045       if [ `uname -v` -eq 3 ]; then
2046         have_xshm=no
2047         AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
2048                        [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
2049                        [true], -lX11 -lXext -lm)
2050       fi
2051     ;;
2052   esac
2053
2054   # if that succeeded, then we've really got it.
2055   if test "$have_xshm" = yes; then
2056     AC_DEFINE(HAVE_XSHM_EXTENSION)
2057   fi
2058
2059 elif test "$with_xshm" != no; then
2060   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
2061   exit 1
2062 fi
2063
2064
2065 ###############################################################################
2066 #
2067 #       Check for the DOUBLE-BUFFER server extension.
2068 #
2069 ###############################################################################
2070
2071 have_xdbe=no
2072 with_xdbe_req=unspecified
2073 AC_ARG_WITH(xdbe-ext,
2074 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.],
2075   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
2076
2077 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
2078
2079 if test "$with_xdbe" = yes; then
2080
2081   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes])
2082   if test "$have_xdbe" = yes; then
2083     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
2084   fi
2085
2086 elif test "$with_xdbe" != no; then
2087   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
2088   exit 1
2089 fi
2090
2091
2092 ###############################################################################
2093 #
2094 #       Check for the SGI XReadDisplay server extension.
2095 #
2096 #       Note: this has to be down here, rather than up with the other server
2097 #       extension tests, so that the output of `configure --help' is in the
2098 #       right order.  Arrgh!
2099 #
2100 ###############################################################################
2101
2102 have_readdisplay=no
2103 with_readdisplay_req=unspecified
2104 AC_ARG_WITH(readdisplay,
2105 [  --with-readdisplay      Include support for the XReadDisplay extension.],
2106   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
2107   [with_readdisplay=yes])
2108
2109 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
2110
2111 if test "$with_readdisplay" = yes; then
2112   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
2113                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION))
2114 elif test "$with_readdisplay" != no; then
2115   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
2116   exit 1
2117 fi
2118
2119
2120 ###############################################################################
2121 #
2122 #       Check for the SGI Iris Video Library.
2123 #
2124 ###############################################################################
2125
2126 have_sgivideo=no
2127 with_sgivideo_req=unspecified
2128 AC_ARG_WITH(sgivideo,
2129 [  --with-sgivideo         Include support for SGI's Iris Video Library.],
2130   [with_sgivideo="$withval"; with_sgivideo_req="$withval"],
2131   [with_sgivideo=yes])
2132
2133 HANDLE_X_PATH_ARG(with_sgivideo, --with-sgivideo, Iris Video)
2134
2135 if test "$with_sgivideo" = yes; then
2136   AC_CHECK_X_HEADER(dmedia/vl.h, have_sgivideo=yes)
2137   if test "$have_sgivideo" = yes; then
2138     have_sgivideo=no
2139     AC_CHECK_LIB(vl, vlOpenVideo, [have_sgivideo=yes])
2140     if test "$have_sgivideo" = yes; then
2141       SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o"
2142       SGI_VIDEO_LIBS="-lvl"
2143       AC_DEFINE(HAVE_SGI_VIDEO)
2144     fi
2145   fi
2146 elif test "$with_sgivideo" != no; then
2147   echo "error: must be yes or no: --with-sgivideo=$with_sgivideo"
2148   exit 1
2149 fi
2150
2151
2152 ###############################################################################
2153 #
2154 #       Check for a program to generate random text.
2155 #
2156 #       Zippy is funnier than the idiocy generally spat out by `fortune',
2157 #       so try to find that, by invoking Emacs and asking it where its 
2158 #       libexec directory is ("yow" lives in there.)
2159 #
2160 #       If that doesn't work, see if fortune, zippy, or yow are on $PATH,
2161 #       and if so, use them.
2162 #
2163 #       If that doesn't work, look in /usr/games, and if it's there, use
2164 #       the full pathname.
2165 #
2166 ###############################################################################
2167
2168 with_zippy_req=""
2169 AC_ARG_WITH(zippy,[
2170   --with-zippy=PROGRAM    Some demos are able to run an external program and
2171                           display its text; this names the program to use by
2172                           default (though it can be overridden with X
2173                           resources.)  If you don't specify this, the default
2174                           is to use \"yow\" from the Emacs distribution (if you
2175                           have it) or else to use \"fortune\".
2176 ],
2177   [with_zippy_req="$withval"; with_zippy="$withval"],[with_zippy=yes])
2178
2179 if test "$with_zippy" = no || test "$with_zippy" = yes ; then
2180   with_zippy=""
2181   with_zippy_req=""
2182 fi
2183
2184 if test -n "$with_zippy_req" ; then
2185   ac_cv_zippy_program=""
2186   case "$with_zippy_req" in
2187     /*)
2188       AC_MSG_CHECKING([for $with_zippy_req])
2189       if test -x "$with_zippy_req" ; then
2190         AC_MSG_RESULT(yes)
2191       else
2192         AC_MSG_RESULT(no)
2193         with_zippy=""
2194       fi
2195     ;;
2196     *)
2197       # don't cache
2198       unset ac_cv_path_zip2
2199       AC_PATH_PROG(zip2, $with_zippy_req, [])
2200       if test "$zip2" = ""; then
2201         with_zippy=""
2202       fi
2203     ;;
2204   esac
2205   ac_cv_zippy_program="$with_zippy"
2206
2207 elif test -n "$ac_cv_zippy_program"; then
2208   AC_MSG_RESULT([checking for zippy... (cached) $ac_cv_zippy_program])
2209 fi
2210
2211 if test ! -n "$ac_cv_zippy_program"; then
2212
2213   AC_CHECK_PROGS(emacs_exe, emacs)
2214   AC_CHECK_PROGS(xemacs_exe, xemacs)
2215
2216   ac_cv_zippy_program=""
2217   eargs='-batch -q -nw --eval'
2218
2219   if test -n "$emacs_exe" ; then
2220     AC_MSG_CHECKING([for emacs yow])
2221     #
2222     # get emacs to tell us where the libexec directory is.
2223     #
2224     dir=`$emacs_exe $eargs '(princ (concat exec-directory "\n"))' \
2225          2>/dev/null | tail -1`
2226     dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
2227     #
2228     # try running libexec/yow and see if it exits without error.
2229     #
2230     if test x"$dir" != x -a -x "$dir/yow" ; then
2231       if $dir/yow >&- 2>&- ; then
2232         ac_cv_zippy_program="$dir/yow"
2233         AC_MSG_RESULT($ac_cv_zippy_program)
2234       else
2235         AC_MSG_RESULT(no)
2236       fi
2237     fi
2238   fi
2239
2240   if test -z "$ac_cv_zippy_program" ; then
2241     AC_MSG_CHECKING([for xemacs yow])
2242     if test -n "$xemacs_exe" ; then
2243       #
2244       # get xemacs to tell us where the libexec directory is.
2245       #
2246       dir=`$xemacs_exe $eargs '(princ (concat exec-directory "\n"))' \
2247            2>/dev/null | tail -1`
2248       dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
2249       #
2250       # try running libexec/yow and see if it exits without error.
2251       #
2252       if test x"$dir" != x -a -x "$dir/yow" ; then
2253         if $dir/yow >&- 2>&- ; then
2254           ac_cv_zippy_program="$dir/yow"
2255           AC_MSG_RESULT($ac_cv_zippy_program)
2256         else
2257           #
2258           # in some xemacs installations, the pathname of the yow.lines file
2259           # isn't hardcoded into the yow executable, and must be passed on 
2260           # the command line.  See if it's in libexec/../etc/.
2261
2262           # M4 sucks!!
2263           changequote(X,Y)
2264           dir_up=`echo "$dir" | sed 's@/[^/]*$@@'`
2265           changequote([,])
2266
2267           yowlines="$dir_up/etc/yow.lines"
2268           if $dir/yow -f $yowlines >&- 2>&- ; then
2269             ac_cv_zippy_program="$dir/yow -f $yowlines"
2270             AC_MSG_RESULT($ac_cv_zippy_program)
2271           else
2272             #
2273             # In newer XEmacs releases, yow.lines is in a different place,
2274             # and the easiest way to get it is by calling the new function
2275             # `locate-data-file'.
2276             #
2277             yowlines=`$xemacs_exe $eargs \
2278               '(princ (concat (locate-data-file "yow.lines") "\n"))' \
2279               2>/dev/null | tail -1`
2280             if $dir/yow -f $yowlines >&- 2>&- ; then
2281               ac_cv_zippy_program="$dir/yow -f $yowlines"
2282               AC_MSG_RESULT($ac_cv_zippy_program)
2283             else
2284               AC_MSG_RESULT(no)
2285             fi
2286           fi
2287         fi
2288       fi
2289     fi
2290   fi
2291
2292   # if that didn't work, try for some other programs...
2293   if test -z "$ac_cv_zippy_program" ; then
2294     fortune=''
2295     AC_CHECK_PROGS(fortune, [fortune zippy yow])
2296     # if that didn't work, try for those programs in /usr/games...
2297     if test -z "$fortune" ; then
2298       AC_PATH_PROGS(fortune, [fortune zippy yow], fortune,
2299                     /usr/games:/usr/local/games:$PATH)
2300     fi
2301   fi
2302 fi
2303
2304 if test -z "$ac_cv_zippy_program" ; then
2305   ac_cv_zippy_program=fortune
2306 fi
2307
2308 AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_program")
2309
2310
2311 ###############################################################################
2312 #
2313 #       Done testing.  Now, set up the various -I and -L variables,
2314 #       and decide which GUI program to build by default.
2315 #
2316 ###############################################################################
2317
2318 DEPEND=makedepend
2319 DEPEND_FLAGS=
2320 DEPEND_DEFINES=
2321
2322
2323 if test \! -z "$includedir" ; then 
2324   INCLUDES="$INCLUDES -I$includedir"
2325 fi
2326
2327 if test \! -z "$libdir" ; then
2328   LDFLAGS="$LDFLAGS -L$libdir"
2329 fi
2330
2331
2332 PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
2333 ALL_DEMO_PROGRAMS=
2334 if test "$have_motif" = yes; then
2335   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
2336   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2337 fi
2338 if test "$have_gtk" = yes; then
2339   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
2340   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2341 fi
2342
2343
2344 if test "$have_kerberos" = yes; then
2345   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
2346   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
2347 fi
2348 if test "$have_pam" = yes; then
2349   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
2350   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
2351   INSTALL_PAM="install-pam"
2352 fi
2353   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
2354   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
2355
2356
2357 if test "$enable_locking" = yes; then
2358   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
2359   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
2360 else
2361   LOCK_SRCS='$(NOLOCK_SRCS_1)'
2362   LOCK_OBJS='$(NOLOCK_OBJS_1)'
2363 fi
2364
2365 if test "$need_setuid" = yes; then
2366   NEED_SETUID=yes
2367   INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)'
2368 else
2369   NEED_SETUID=no
2370   INSTALL_SETUID='$(INSTALL_PROGRAM)'
2371 fi
2372
2373 tab='   '
2374 if test "$have_gl" = yes; then
2375   GL_EXES='$(GL_EXES)'
2376   GL_MEN='$(GL_MEN)'
2377   GL_KLUDGE="${tab}  "
2378 else
2379   GL_KLUDGE="-${tab}  "
2380 fi
2381
2382 if test "$have_gle" = yes; then
2383   GLE_EXES='$(GLE_EXES)'
2384   GLE_MEN='$(GLE_MEN)'
2385   GLE_KLUDGE="${tab}   "
2386 else
2387   GLE_KLUDGE="-${tab}   "
2388 fi
2389
2390
2391 ###############################################################################
2392 #
2393 #       Perform substitutions and write Makefiles.
2394 #
2395 ###############################################################################
2396
2397 AC_SUBST(INCLUDES)
2398
2399 AC_SUBST(PREFERRED_DEMO_PROGRAM)
2400 AC_SUBST(ALL_DEMO_PROGRAMS)
2401 AC_SUBST(SAVER_LIBS)
2402 AC_SUBST(MOTIF_LIBS)
2403 AC_SUBST(GTK_LIBS)
2404 AC_SUBST(HACK_LIBS)
2405 AC_SUBST(XPM_LIBS)
2406 AC_SUBST(GL_LIBS)
2407 AC_SUBST(GLE_LIBS)
2408 AC_SUBST(PASSWD_LIBS)
2409 AC_SUBST(INSTALL_SETUID)
2410 AC_SUBST(INSTALL_DIRS)
2411 AC_SUBST(NEED_SETUID)
2412 AC_SUBST(INSTALL_PAM)
2413 AC_SUBST(SGI_VIDEO_OBJS)
2414 AC_SUBST(SGI_VIDEO_LIBS)
2415
2416 AC_SUBST(PASSWD_SRCS)
2417 AC_SUBST(PASSWD_OBJS)
2418 AC_SUBST(XMU_SRCS)
2419 AC_SUBST(XMU_OBJS)
2420 AC_SUBST(SAVER_GL_SRCS)
2421 AC_SUBST(SAVER_GL_OBJS)
2422 AC_SUBST(SAVER_GL_LIBS)
2423 AC_SUBST(LOCK_SRCS)
2424 AC_SUBST(LOCK_OBJS)
2425 AC_SUBST(GL_EXES)
2426 AC_SUBST(GL_MEN)
2427 AC_SUBST(GL_KLUDGE)
2428 AC_SUBST(GLE_EXES)
2429 AC_SUBST(GLE_MEN)
2430 AC_SUBST(GLE_KLUDGE)
2431 AC_SUBST(HACKDIR)
2432
2433 APPDEFAULTS=$ac_x_app_defaults
2434 AC_SUBST(APPDEFAULTS)
2435
2436 AC_SUBST(DEPEND)
2437 AC_SUBST(DEPEND_FLAGS)
2438 AC_SUBST(DEPEND_DEFINES)
2439 AC_SUBST(PERL)
2440
2441 AC_OUTPUT(Makefile
2442           utils/Makefile
2443           driver/Makefile
2444           hacks/Makefile
2445           hacks/glx/Makefile
2446           driver/XScreenSaver.ad)
2447
2448 ###############################################################################
2449 #
2450 #       Print some warnings at the end.
2451 #
2452 ###############################################################################
2453
2454 warn_prefix_1="    Warning:"
2455 warn_prefix_2="       Note:"
2456 warn_prefix="$warn_prefix_1"
2457
2458 warning=no
2459 warnsep='    #################################################################'
2460
2461 warnpre() {
2462   if test "$warning" = no ; then
2463     echo '' ; echo "$warnsep" ; echo ''
2464     warning=yes
2465   fi
2466 }
2467
2468 warn() {
2469   warnpre
2470   if test "$warning" = long ; then echo '' ; fi
2471   warning=yes
2472   echo "$warn_prefix $@"
2473 }
2474
2475 warnL() {
2476   was=$warning
2477   warnpre
2478   warning=yes
2479   if test "$was" != no ; then echo '' ; fi
2480   echo "$warn_prefix $@"
2481 }
2482
2483 warn2() {
2484   echo "             $@"
2485   warning=long
2486 }
2487
2488 note() {
2489   warn_prefix="$warn_prefix_2"
2490   warn $@
2491   warn_prefix="$warn_prefix_1"
2492 }
2493
2494 noteL() {
2495   warn_prefix="$warn_prefix_2"
2496   warnL $@
2497   warn_prefix="$warn_prefix_1"
2498 }
2499
2500
2501 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
2502   warn 'The SGI saver extension was requested, but was not found.'
2503 fi
2504
2505 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
2506   warn 'The MIT saver extension was requested, but was not found.'
2507 fi
2508
2509 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
2510   warn 'The XIdle extension was requested, but was not found.'
2511 fi
2512
2513 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
2514   warn 'The XSHM extension was requested, but was not found.'
2515 fi
2516
2517 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
2518   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
2519 fi
2520
2521 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
2522   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
2523 fi
2524
2525 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
2526   warn 'The DPMS extension was requested, but was not found.'
2527 fi
2528
2529 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
2530   warn 'The XF86VMODE extension was requested, but was not found.'
2531 fi
2532
2533 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
2534   warn "Checking of /proc/interrupts was requested, but it's bogus."
2535 fi
2536
2537
2538 if test "$have_motif" = no -a "$have_gtk" = no; then
2539   warnL "Neither Motif nor Gtk seem to be available;"
2540   warn2 "the \`xscreensaver-demo' program requires one of these."
2541
2542 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
2543   warnL "Use of Motif was requested, but it wasn't found;"
2544   warn2 "Gtk will be used instead."
2545
2546 elif test "$jurassic_gtk" = yes ; then
2547
2548   pref_gtk=1.2
2549
2550   v="$ac_gtk_version_string"
2551   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
2552     warnL "Use of Gtk was requested, but its version number is unknown;"
2553   elif test "$with_gtk_req" = yes ; then
2554     warnL "Use of Gtk was requested, but it is version $v;"
2555   else
2556     warnL "Gtk was found on this system, but it is version $v;"
2557   fi
2558
2559   warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
2560
2561 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
2562   warnL "Use of Gtk was requested, but it wasn't found;"
2563   warn2 "Motif will be used instead."
2564
2565 fi
2566
2567
2568 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
2569
2570   preferred_lesstif=0.86
2571
2572   if test "$lesstif_version" = unknown; then
2573     warnL "Unable to determine the LessTif version number!"
2574     warn2 "Make sure you are using version $preferred_lesstif or newer."
2575     warn2 "See <http://www.lesstif.org/>."
2576
2577   elif test \! $lesstif_version -gt 82; then
2578     warnL "LessTif version $lesstif_version_string is being used."
2579     warn2 "LessTif versions 0.82 and earlier are too buggy to"
2580     warn2 "use with XScreenSaver; it is strongly recommended"
2581     warn2 "that you upgrade to at least version $preferred_lesstif!"
2582     warn2 "See <http://www.lesstif.org/>."
2583   fi
2584 fi
2585
2586
2587
2588 if test "$have_xpm" = no ; then
2589   if test "$with_xpm_req" = yes ; then
2590     warnL 'Use of XPM was requested, but it was not found.'
2591   elif test "$with_xpm_req" = no ; then
2592     noteL 'The XPM library is not being used.'
2593   else
2594     noteL 'The XPM library was not found.'
2595   fi
2596
2597   echo ''
2598   warn2 'Some of the demos will not be as colorful as they'
2599   warn2 'could be.  You might want to consider installing XPM'
2600   warn2 'and re-running configure.  (Remember to delete the'
2601   warn2 'config.cache file first.)  You can find XPM at most'
2602   warn2 'X11 archive sites, such as <http://sunsite.unc.edu/>.'
2603 fi
2604
2605
2606 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
2607   preferred_mesagl=3.0
2608
2609   if test "$ac_mesagl_version" = unknown; then
2610     warnL "Unable to determine the MesaGL version number!"
2611     warn2 "Make sure you are using version $preferred_mesagl or newer."
2612
2613   elif test \! "$ac_mesagl_version" -gt 2006; then
2614     warnL "MesaGL version $ac_mesagl_version_string is being used."
2615     warn2 "MesaGL versions 2.6 and earlier have a security bug."
2616     warn2 "It is strongly recommended that you upgrade to at"
2617     warn2 "least version $preferred_mesagl."
2618   fi
2619 fi
2620
2621 if test "$have_gl" = no ; then
2622   if test "$with_gl_req" = yes ; then
2623     warnL 'Use of GL was requested, but it was not found.'
2624   elif test "$with_gl_req" = no ; then
2625     noteL 'The OpenGL 3D library is not being used.'
2626   else
2627     noteL 'The OpenGL 3D library was not found.'
2628   fi
2629
2630   if test "$gl_halfassed" = yes ; then
2631     echo ''
2632     warn2 'More specifically, we found the headers, but not the'
2633     warn2 'libraries; so either GL is half-installed on this'
2634     warn2 "system, or something else went wrong.  The \`config.log'"
2635     warn2 'file might contain some clues.'
2636   fi
2637
2638   echo ''
2639   warn2 'Those demos which use 3D will not be built or installed.'
2640   warn2 'You might want to consider installing OpenGL and'
2641   warn2 're-running configure.  (Remember to delete the'
2642   warn2 "config.cache file first.)  If your vendor doesn't ship"
2643   warn2 'their own implementation of OpenGL, you can get a free'
2644   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
2645   warn2 'info, see <http://www.opengl.org/>.'
2646
2647 fi
2648
2649
2650 if test "$have_gl" = yes -a "$have_gle" = no ; then
2651   if test "$with_gle_req" = yes ; then
2652     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
2653     warn2 'it was not found (though the OpenGL library was found, and'
2654     warn2 'is being used.)'
2655   elif test "$with_gle_req" = no ; then
2656     noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
2657     warn2 'library is not.'
2658   else
2659     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
2660     warn2 'was not.'
2661   fi
2662
2663   if test "$gle_halfassed" = yes ; then
2664     echo ''
2665     warn2 'More specifically, we found the headers, but not the'
2666     warn2 'libraries; so either GLE is half-installed on this'
2667     warn2 "system, or something else went wrong.  The \`config.log'"
2668     warn2 'file might contain some clues.'
2669   fi
2670
2671   echo ''
2672   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
2673   warn2 'will not be built or installed.  You might want to consider'
2674   warn2 'installing GLE and re-running configure.  (Remember to delete'
2675   warn2 'the config.cache file first.)  You can find the GLE library'
2676   warn2 'at <http://www.linas.org/gle/>.  For general OpenGL info,'
2677   warn2 'see <http://www.opengl.org/>.'
2678
2679 fi
2680
2681
2682 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
2683   warn 'Use of XReadDisplay was requested, but it was not found.'
2684 fi
2685
2686 if test "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then
2687   warn 'Use of the Iris Video Library was requested, but it was not found.'
2688 fi
2689
2690 if test -n "$with_zippy_req"; then
2691   if test "$with_zippy_req" != "$ac_cv_zippy_program" ; then
2692     warnL "$with_zippy_req was requested as the Zippy program,"
2693     warn2 "but was not found.  The default will be used instead."
2694   fi
2695 fi
2696
2697 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
2698   warn 'Use of Kerberos was requested, but it was not found.'
2699 fi
2700
2701 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
2702   warn 'Use of PAM was requested, but it was not found.'
2703 fi
2704
2705 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
2706   warn 'Use of shadow passwords was requested, but they were not found.'
2707 fi
2708
2709
2710 # You are in a twisty maze of namespaces and syntaxes, all alike.
2711 # Fuck the skull of Unix.
2712 #
2713 eval bindir=${bindir}
2714 eval bindir=${bindir}
2715 eval bindir=${bindir}
2716 eval bindir=${bindir}
2717 eval bindir=${bindir}
2718 eval bindir=${bindir}
2719 eval HACKDIR=${HACKDIR}
2720 eval HACKDIR=${HACKDIR}
2721 eval HACKDIR=${HACKDIR}
2722 eval HACKDIR=${HACKDIR}
2723 eval HACKDIR=${HACKDIR}
2724 eval HACKDIR=${HACKDIR}
2725
2726 # canonicalize slashes.
2727 bindir=`echo  "${bindir}"  | sed 's@/$@@;s@//*@/@g'`
2728 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
2729
2730
2731 # Sanity check the subdir
2732 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
2733   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
2734     echo ""
2735     AC_MSG_ERROR([\"--enable-subdir=${bindir}/${bad_choice}\" won't work.
2736                    There will be an executable installed with that name, so
2737                    that can't be the name of a directory as well.  Please
2738                    re-configure with a different directory name.])
2739   fi
2740 done
2741
2742
2743 do_dir_warning=no
2744
2745 # Now let's see if there's a previous RPM version already installed.  Blargh!
2746
2747 # M4 sucks!!
2748 changequote(X,Y)
2749 rpmv=`(rpm -qv xscreensaver) 2>&- | \
2750       sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-[0-9][0-9]*$/\1/'`
2751 changequote([,])
2752
2753 if test \! -z "$rpmv" ; then
2754   rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
2755   rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
2756
2757   warning=no
2758   warnL "There is already an installed RPM of xscreensaver $rpmv"
2759   warn2 "on this system.  You might want to remove it (with"
2760   warn2 '"rpm -ve xscreensaver") before running "make install"'
2761   warn2 "from this directory."
2762   echo ""
2763   warn2 "Alternately, you could build this version of xscreensaver"
2764   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
2765   warn2 "file is included.  See the RPM documentation for more info."
2766   echo ""
2767
2768   if test "$rpmbdir" = "$rpmhdir" ; then
2769     warn2 "The RPM version was installed in $rpmbdir."
2770   else
2771     warn2 "The RPM version was installed in $rpmbdir,"
2772     warn2 "with demos in $rpmhdir."
2773   fi
2774
2775   do_dir_warning=yes
2776 fi
2777
2778
2779 # Warn about egregious GNOME bogosity.
2780 #
2781 if (rpm -qv control-center) >&- 2>&- ; then
2782   warning=no
2783   warnL "The Gnome Control Center seems to be installed."
2784   echo  ""
2785   warn2 "Note that simply installing this version of xscreensaver"
2786   warn2 "will not cause GNOME to know about the newly-added display"
2787   warn2 "modes -- GNOME is just lame that way.  Instead of using the"
2788   warn2 "Control Center, try using the \`xscreensaver-demo' command."
2789 fi
2790
2791
2792 if test "${bindir}" = "${HACKDIR}" ; then
2793   do_dir_warning=yes
2794 fi
2795
2796 if test "$do_dir_warning" = yes; then
2797   echo ""
2798   echo "$warnsep"
2799   echo ""
2800   echo '      When you run "make install", the "xscreensaver",'
2801   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
2802   echo "      will be installed in ${bindir}."
2803   echo ""
2804   echo "      The various graphics demos (100+ different executables) will"
2805   echo "      also be installed in ${HACKDIR}."
2806   echo ""
2807   echo "      If you would prefer the demos to be installed elsewhere"
2808   echo "      (for example, in a dedicated directory) you should re-run"
2809   echo "      configure with the --enable-subdir=DIR option.  For more"
2810   echo "      information, run $0 --help."
2811   warning=yes
2812 fi
2813
2814 if test "$warning" != no; then
2815   echo '' ; echo "$warnsep" ; echo ''
2816 fi