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