http://ftp.x.org/contrib/applications/xscreensaver-3.24.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/gutil.h, have_gle=yes, have_gle=no)
2070   if test "$have_gle" = yes ; then
2071     AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no)
2072   fi
2073
2074   if test "$have_gle" = yes ; then
2075     have_gle=no
2076     gle_halfassed=yes
2077     AC_CHECK_X_LIB(gle, gleCreateGC, 
2078                    [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
2079                    [], $GL_LIBS -lX11 -lXext -lm)
2080   fi
2081   if test "$have_gle" = yes ; then
2082     have_gle=no
2083     gle_halfassed=yes
2084
2085     # sometimes the libmatrix stuff is included in libgle.  look there first.
2086 #
2087 # I don't get it.  For some reason, this test passes on SGI, as if
2088 # uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
2089 # Yet the link is succeeding.  Why???
2090 #
2091 #    AC_CHECK_X_LIB(gle, uview_direction_d, 
2092 #                   [have_gle=yes; gle_halfassed=no],
2093 #                   [], $GL_LIBS -lX11 -lXext -lm)
2094
2095     # if it wasn't in libgle, then look in libmatrix.
2096     if test "$have_gle" = no ; then
2097       AC_CHECK_X_LIB(matrix, uview_direction_d, 
2098                      [have_gle=yes; gle_halfassed=no;
2099                       GLE_LIBS="$GLE_LIBS -lmatrix"],
2100                     [], $GL_LIBS -lX11 -lXext -lm)
2101     fi
2102   fi
2103
2104   if test "$have_gle" = yes ; then
2105     AC_DEFINE(HAVE_GLE)
2106   fi
2107
2108 elif test "$with_gle" != no; then
2109   echo "error: must be yes or no: --with-gle=$with_gle"
2110   exit 1
2111
2112 fi
2113
2114
2115
2116 ###############################################################################
2117 #
2118 #       Check for -lXpm.
2119 #
2120 ###############################################################################
2121
2122 have_xpm=no
2123 with_xpm_req=unspecified
2124 AC_ARG_WITH(xpm,
2125 [  --with-xpm              Include support for XPM files in some demos.],
2126   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
2127
2128 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
2129
2130 if test "$with_xpm" = yes; then
2131   AC_CHECK_X_HEADER(X11/xpm.h,
2132                    [have_xpm=yes
2133                     AC_DEFINE(HAVE_XPM)
2134                     XPM_LIBS="-lXpm"])
2135 elif test "$with_xpm" != no; then
2136   echo "error: must be yes or no: --with-xpm=$with_xpm"
2137   exit 1
2138 fi
2139
2140 # See comment near $motif_requires_xpm, above.
2141 # Need to do this here, after both Motif and XPM have been checked for.
2142 #
2143 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
2144   if test "$motif_requires_xpm" = yes ; then
2145     MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
2146   fi
2147 fi
2148
2149
2150 ###############################################################################
2151 #
2152 #       Check for the XSHM server extension.
2153 #
2154 ###############################################################################
2155
2156 have_xshm=no
2157 with_xshm_req=unspecified
2158 AC_ARG_WITH(xshm-ext,
2159 [  --with-xshm-ext         Include support for the XSHM extension.],
2160   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
2161
2162 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
2163
2164 if test "$with_xshm" = yes; then
2165
2166   # first check for Xshm.h.
2167   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes])
2168
2169   # if that succeeded, then check for sys/ipc.h.
2170   if test "$have_xshm" = yes; then
2171     have_xshm=no
2172     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
2173   fi
2174
2175   # if that succeeded, then check for sys/shm.h.
2176   if test "$have_xshm" = yes; then
2177     have_xshm=no
2178     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
2179   fi
2180
2181   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
2182   # to exist, but the library code to not exist.  And even better, the library
2183   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
2184   # lib doesn't exist, give up.  (This lib gets added to X_EXTRA_LIBS, and
2185   # that's not quite right, but close enough.)
2186   #
2187   case "$host" in
2188     *-aix*)
2189       if [ `uname -v` -eq 3 ]; then
2190         have_xshm=no
2191         AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
2192                        [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
2193                        [true], -lX11 -lXext -lm)
2194       fi
2195     ;;
2196   esac
2197
2198   # if that succeeded, then we've really got it.
2199   if test "$have_xshm" = yes; then
2200     AC_DEFINE(HAVE_XSHM_EXTENSION)
2201   fi
2202
2203 elif test "$with_xshm" != no; then
2204   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
2205   exit 1
2206 fi
2207
2208
2209 ###############################################################################
2210 #
2211 #       Check for the DOUBLE-BUFFER server extension.
2212 #
2213 ###############################################################################
2214
2215 have_xdbe=no
2216 with_xdbe_req=unspecified
2217 AC_ARG_WITH(xdbe-ext,
2218 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.],
2219   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
2220
2221 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
2222
2223 if test "$with_xdbe" = yes; then
2224
2225   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes])
2226   if test "$have_xdbe" = yes; then
2227     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
2228   fi
2229
2230 elif test "$with_xdbe" != no; then
2231   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
2232   exit 1
2233 fi
2234
2235
2236 ###############################################################################
2237 #
2238 #       Check for the SGI XReadDisplay server extension.
2239 #
2240 #       Note: this has to be down here, rather than up with the other server
2241 #       extension tests, so that the output of `configure --help' is in the
2242 #       right order.  Arrgh!
2243 #
2244 ###############################################################################
2245
2246 have_readdisplay=no
2247 with_readdisplay_req=unspecified
2248 AC_ARG_WITH(readdisplay,
2249 [  --with-readdisplay      Include support for the XReadDisplay extension.],
2250   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
2251   [with_readdisplay=yes])
2252
2253 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
2254
2255 if test "$with_readdisplay" = yes; then
2256   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
2257                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION))
2258 elif test "$with_readdisplay" != no; then
2259   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
2260   exit 1
2261 fi
2262
2263
2264 ###############################################################################
2265 #
2266 #       Check for the SGI Iris Video Library.
2267 #
2268 ###############################################################################
2269
2270 have_sgivideo=no
2271 with_sgivideo_req=unspecified
2272 AC_ARG_WITH(sgivideo,
2273 [  --with-sgivideo         Include support for SGI's Iris Video Library.],
2274   [with_sgivideo="$withval"; with_sgivideo_req="$withval"],
2275   [with_sgivideo=yes])
2276
2277 HANDLE_X_PATH_ARG(with_sgivideo, --with-sgivideo, Iris Video)
2278
2279 if test "$with_sgivideo" = yes; then
2280   AC_CHECK_X_HEADER(dmedia/vl.h, have_sgivideo=yes)
2281   if test "$have_sgivideo" = yes; then
2282     have_sgivideo=no
2283     AC_CHECK_LIB(vl, vlOpenVideo, [have_sgivideo=yes])
2284     if test "$have_sgivideo" = yes; then
2285       SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o"
2286       SGI_VIDEO_LIBS="-lvl"
2287       AC_DEFINE(HAVE_SGI_VIDEO)
2288     fi
2289   fi
2290 elif test "$with_sgivideo" != no; then
2291   echo "error: must be yes or no: --with-sgivideo=$with_sgivideo"
2292   exit 1
2293 fi
2294
2295
2296 ###############################################################################
2297 #
2298 #       Check for a program to generate random text.
2299 #
2300 #       Zippy is funnier than the idiocy generally spat out by `fortune',
2301 #       so try to find that, by invoking Emacs and asking it where its 
2302 #       libexec directory is ("yow" lives in there.)
2303 #
2304 #       If that doesn't work, see if fortune, zippy, or yow are on $PATH,
2305 #       and if so, use them.
2306 #
2307 #       If that doesn't work, look in /usr/games, and if it's there, use
2308 #       the full pathname.
2309 #
2310 ###############################################################################
2311
2312 with_zippy_req=""
2313 AC_ARG_WITH(zippy,[
2314   --with-zippy=PROGRAM    Some demos are able to run an external program and
2315                           display its text; this names the program to use by
2316                           default (though it can be overridden with X
2317                           resources.)  If you don't specify this, the default
2318                           is to use \"yow\" from the Emacs distribution (if you
2319                           have it) or else to use \"fortune\".
2320 ],
2321   [with_zippy_req="$withval"; with_zippy="$withval"],[with_zippy=yes])
2322
2323 if test "$with_zippy" = no || test "$with_zippy" = yes ; then
2324   with_zippy=""
2325   with_zippy_req=""
2326 fi
2327
2328 if test -n "$with_zippy_req" ; then
2329   ac_cv_zippy_program=""
2330   case "$with_zippy_req" in
2331     /*)
2332       AC_MSG_CHECKING([for $with_zippy_req])
2333       if test -x "$with_zippy_req" ; then
2334         AC_MSG_RESULT(yes)
2335       else
2336         AC_MSG_RESULT(no)
2337         with_zippy=""
2338       fi
2339     ;;
2340     *)
2341       # don't cache
2342       unset ac_cv_path_zip2
2343       AC_PATH_PROG(zip2, $with_zippy_req, [])
2344       if test "$zip2" = ""; then
2345         with_zippy=""
2346       fi
2347     ;;
2348   esac
2349   ac_cv_zippy_program="$with_zippy"
2350
2351 elif test -n "$ac_cv_zippy_program"; then
2352   AC_MSG_RESULT([checking for zippy... (cached) $ac_cv_zippy_program])
2353 fi
2354
2355 if test ! -n "$ac_cv_zippy_program"; then
2356
2357   AC_CHECK_PROGS(emacs_exe, emacs)
2358   AC_CHECK_PROGS(xemacs_exe, xemacs)
2359
2360   ac_cv_zippy_program=""
2361   eargs='-batch -q -nw --eval'
2362
2363   if test -n "$emacs_exe" ; then
2364     AC_MSG_CHECKING([for emacs yow])
2365     #
2366     # get emacs to tell us where the libexec directory is.
2367     #
2368     dir=`$emacs_exe $eargs '(princ (concat exec-directory "\n"))' \
2369          2>/dev/null | tail -1`
2370     dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
2371     #
2372     # try running libexec/yow and see if it exits without error.
2373     #
2374     if test x"$dir" != x -a -x "$dir/yow" ; then
2375       if $dir/yow >&- 2>&- ; then
2376         ac_cv_zippy_program="$dir/yow"
2377         AC_MSG_RESULT($ac_cv_zippy_program)
2378       else
2379         AC_MSG_RESULT(no)
2380       fi
2381     fi
2382   fi
2383
2384   if test -z "$ac_cv_zippy_program" ; then
2385     AC_MSG_CHECKING([for xemacs yow])
2386     if test -n "$xemacs_exe" ; then
2387       #
2388       # get xemacs to tell us where the libexec directory is.
2389       #
2390       dir=`$xemacs_exe $eargs '(princ (concat exec-directory "\n"))' \
2391            2>/dev/null | tail -1`
2392       dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
2393       #
2394       # try running libexec/yow and see if it exits without error.
2395       #
2396       if test x"$dir" != x -a -x "$dir/yow" ; then
2397         if $dir/yow >&- 2>&- ; then
2398           ac_cv_zippy_program="$dir/yow"
2399           AC_MSG_RESULT($ac_cv_zippy_program)
2400         else
2401           #
2402           # in some xemacs installations, the pathname of the yow.lines file
2403           # isn't hardcoded into the yow executable, and must be passed on 
2404           # the command line.  See if it's in libexec/../etc/.
2405
2406           # M4 sucks!!
2407           changequote(X,Y)
2408           dir_up=`echo "$dir" | sed 's@/[^/]*$@@'`
2409           changequote([,])
2410
2411           yowlines="$dir_up/etc/yow.lines"
2412           if $dir/yow -f $yowlines >&- 2>&- ; then
2413             ac_cv_zippy_program="$dir/yow -f $yowlines"
2414             AC_MSG_RESULT($ac_cv_zippy_program)
2415           else
2416             #
2417             # In newer XEmacs releases, yow.lines is in a different place,
2418             # and the easiest way to get it is by calling the new function
2419             # `locate-data-file'.
2420             #
2421             yowlines=`$xemacs_exe $eargs \
2422               '(princ (concat (locate-data-file "yow.lines") "\n"))' \
2423               2>/dev/null | tail -1`
2424             if $dir/yow -f $yowlines >&- 2>&- ; then
2425               ac_cv_zippy_program="$dir/yow -f $yowlines"
2426               AC_MSG_RESULT($ac_cv_zippy_program)
2427             else
2428               AC_MSG_RESULT(no)
2429             fi
2430           fi
2431         fi
2432       fi
2433     fi
2434   fi
2435
2436   # if that didn't work, try for some other programs...
2437   if test -z "$ac_cv_zippy_program" ; then
2438     fortune=''
2439     AC_CHECK_PROGS(fortune, [fortune zippy yow])
2440     # if that didn't work, try for those programs in /usr/games...
2441     if test -z "$fortune" ; then
2442       AC_PATH_PROGS(fortune, [fortune zippy yow], fortune,
2443                     /usr/games:/usr/local/games:$PATH)
2444     fi
2445   fi
2446 fi
2447
2448 if test -z "$ac_cv_zippy_program" ; then
2449   ac_cv_zippy_program=fortune
2450 fi
2451
2452 AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_program")
2453
2454
2455 ###############################################################################
2456 #
2457 #       Done testing.  Now, set up the various -I and -L variables,
2458 #       and decide which GUI program to build by default.
2459 #
2460 ###############################################################################
2461
2462 DEPEND=makedepend
2463 DEPEND_FLAGS=
2464 DEPEND_DEFINES=
2465
2466
2467 if test \! -z "$includedir" ; then 
2468   INCLUDES="$INCLUDES -I$includedir"
2469 fi
2470
2471 if test \! -z "$libdir" ; then
2472   LDFLAGS="$LDFLAGS -L$libdir"
2473 fi
2474
2475
2476 PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
2477 ALL_DEMO_PROGRAMS=
2478 if test "$have_motif" = yes; then
2479   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
2480   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2481 fi
2482 if test "$have_gtk" = yes; then
2483   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
2484   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2485 fi
2486
2487
2488 if test "$have_kerberos" = yes; then
2489   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
2490   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
2491 fi
2492 if test "$have_pam" = yes; then
2493   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
2494   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
2495   INSTALL_PAM="install-pam"
2496 fi
2497   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
2498   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
2499
2500
2501 if test "$enable_locking" = yes; then
2502   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
2503   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
2504 else
2505   LOCK_SRCS='$(NOLOCK_SRCS_1)'
2506   LOCK_OBJS='$(NOLOCK_OBJS_1)'
2507 fi
2508
2509 if test "$need_setuid" = yes; then
2510   NEED_SETUID=yes
2511   INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)'
2512 else
2513   NEED_SETUID=no
2514   INSTALL_SETUID='$(INSTALL_PROGRAM)'
2515 fi
2516
2517 tab='   '
2518 if test "$have_gl" = yes; then
2519   GL_EXES='$(GL_EXES)'
2520   GL_MEN='$(GL_MEN)'
2521   GL_KLUDGE="${tab}  "
2522 else
2523   GL_KLUDGE="-${tab}  "
2524 fi
2525
2526 if test "$have_gle" = yes; then
2527   GLE_EXES='$(GLE_EXES)'
2528   GLE_MEN='$(GLE_MEN)'
2529   GLE_KLUDGE="${tab}   "
2530 else
2531   GLE_KLUDGE="-${tab}   "
2532 fi
2533
2534
2535 ###############################################################################
2536 #
2537 #       Perform substitutions and write Makefiles.
2538 #
2539 ###############################################################################
2540
2541 AC_SUBST(INCLUDES)
2542
2543 AC_SUBST(PREFERRED_DEMO_PROGRAM)
2544 AC_SUBST(ALL_DEMO_PROGRAMS)
2545 AC_SUBST(SAVER_LIBS)
2546 AC_SUBST(MOTIF_LIBS)
2547 AC_SUBST(GTK_LIBS)
2548 AC_SUBST(HACK_LIBS)
2549 AC_SUBST(XPM_LIBS)
2550 AC_SUBST(GL_LIBS)
2551 AC_SUBST(GLE_LIBS)
2552 AC_SUBST(PASSWD_LIBS)
2553 AC_SUBST(INSTALL_SETUID)
2554 AC_SUBST(INSTALL_DIRS)
2555 AC_SUBST(NEED_SETUID)
2556 AC_SUBST(INSTALL_PAM)
2557 AC_SUBST(SGI_VIDEO_OBJS)
2558 AC_SUBST(SGI_VIDEO_LIBS)
2559
2560 AC_SUBST(PASSWD_SRCS)
2561 AC_SUBST(PASSWD_OBJS)
2562 AC_SUBST(XMU_SRCS)
2563 AC_SUBST(XMU_OBJS)
2564 AC_SUBST(SAVER_GL_SRCS)
2565 AC_SUBST(SAVER_GL_OBJS)
2566 AC_SUBST(SAVER_GL_LIBS)
2567 AC_SUBST(LOCK_SRCS)
2568 AC_SUBST(LOCK_OBJS)
2569 AC_SUBST(GL_EXES)
2570 AC_SUBST(GL_MEN)
2571 AC_SUBST(GL_KLUDGE)
2572 AC_SUBST(GLE_EXES)
2573 AC_SUBST(GLE_MEN)
2574 AC_SUBST(GLE_KLUDGE)
2575 AC_SUBST(HACKDIR)
2576 AC_SUBST(GNOME_DATADIR)
2577
2578 APPDEFAULTS=$ac_x_app_defaults
2579 AC_SUBST(APPDEFAULTS)
2580
2581 AC_SUBST(DEPEND)
2582 AC_SUBST(DEPEND_FLAGS)
2583 AC_SUBST(DEPEND_DEFINES)
2584 AC_SUBST(PERL)
2585
2586 AC_OUTPUT(Makefile
2587           utils/Makefile
2588           driver/Makefile
2589           hacks/Makefile
2590           hacks/glx/Makefile
2591           driver/XScreenSaver.ad)
2592
2593 ###############################################################################
2594 #
2595 #       Print some warnings at the end.
2596 #
2597 ###############################################################################
2598
2599 warn_prefix_1="    Warning:"
2600 warn_prefix_2="       Note:"
2601 warn_prefix="$warn_prefix_1"
2602
2603 warning=no
2604 warnsep='    #################################################################'
2605
2606 warnpre() {
2607   if test "$warning" = no ; then
2608     echo '' ; echo "$warnsep" ; echo ''
2609     warning=yes
2610   fi
2611 }
2612
2613 warn() {
2614   warnpre
2615   if test "$warning" = long ; then echo '' ; fi
2616   warning=yes
2617   echo "$warn_prefix $@"
2618 }
2619
2620 warnL() {
2621   was=$warning
2622   warnpre
2623   warning=yes
2624   if test "$was" != no ; then echo '' ; fi
2625   echo "$warn_prefix $@"
2626 }
2627
2628 warn2() {
2629   echo "             $@"
2630   warning=long
2631 }
2632
2633 note() {
2634   warn_prefix="$warn_prefix_2"
2635   warn $@
2636   warn_prefix="$warn_prefix_1"
2637 }
2638
2639 noteL() {
2640   warn_prefix="$warn_prefix_2"
2641   warnL $@
2642   warn_prefix="$warn_prefix_1"
2643 }
2644
2645
2646 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
2647   warn 'The SGI saver extension was requested, but was not found.'
2648 fi
2649
2650 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
2651   warn 'The MIT saver extension was requested, but was not found.'
2652 fi
2653
2654 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
2655   warn 'The XIdle extension was requested, but was not found.'
2656 fi
2657
2658 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
2659   warn 'The XSHM extension was requested, but was not found.'
2660 fi
2661
2662 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
2663   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
2664 fi
2665
2666 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
2667   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
2668 fi
2669
2670 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
2671   warn 'The DPMS extension was requested, but was not found.'
2672 fi
2673
2674 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
2675   warn 'The XF86VMODE extension was requested, but was not found.'
2676 fi
2677
2678 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
2679   warn "Checking of /proc/interrupts was requested, but it's bogus."
2680 fi
2681
2682
2683 if test "$have_motif" = no -a "$have_gtk" = no; then
2684   warnL "Neither Motif nor Gtk seem to be available;"
2685   warn2 "the \`xscreensaver-demo' program requires one of these."
2686
2687 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
2688   warnL "Use of Motif was requested, but it wasn't found;"
2689   warn2 "Gtk will be used instead."
2690
2691 elif test "$jurassic_gtk" = yes ; then
2692
2693   pref_gtk=1.2
2694
2695   v="$ac_gtk_version_string"
2696   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
2697     warnL "Use of Gtk was requested, but its version number is unknown;"
2698   elif test "$with_gtk_req" = yes ; then
2699     warnL "Use of Gtk was requested, but it is version $v;"
2700   else
2701     warnL "Gtk was found on this system, but it is version $v;"
2702   fi
2703
2704   warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
2705
2706 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
2707   warnL "Use of Gtk was requested, but it wasn't found;"
2708   warn2 "Motif will be used instead."
2709
2710 fi
2711
2712
2713 if test "$with_gnome_req" = yes -a "$have_gnome" = no ; then
2714   warn  'Use of the Gnome Control Panel was requested, but the necessary'
2715   warn2 'headers and/or libraries were not found.'
2716 fi
2717
2718
2719 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
2720
2721   preferred_lesstif=0.86
2722
2723   if test "$lesstif_version" = unknown; then
2724     warnL "Unable to determine the LessTif version number!"
2725     warn2 "Make sure you are using version $preferred_lesstif or newer."
2726     warn2 "See <http://www.lesstif.org/>."
2727
2728   elif test \! $lesstif_version -gt 82; then
2729     warnL "LessTif version $lesstif_version_string is being used."
2730     warn2 "LessTif versions 0.82 and earlier are too buggy to"
2731     warn2 "use with XScreenSaver; it is strongly recommended"
2732     warn2 "that you upgrade to at least version $preferred_lesstif!"
2733     warn2 "See <http://www.lesstif.org/>."
2734   fi
2735 fi
2736
2737
2738
2739 if test "$have_xpm" = no ; then
2740   if test "$with_xpm_req" = yes ; then
2741     warnL 'Use of XPM was requested, but it was not found.'
2742   elif test "$with_xpm_req" = no ; then
2743     noteL 'The XPM library is not being used.'
2744   else
2745     noteL 'The XPM library was not found.'
2746   fi
2747
2748   echo ''
2749   warn2 'Some of the demos will not be as colorful as they'
2750   warn2 'could be.  You might want to consider installing XPM'
2751   warn2 'and re-running configure.  (Remember to delete the'
2752   warn2 'config.cache file first.)  You can find XPM at most'
2753   warn2 'X11 archive sites, such as <http://sunsite.unc.edu/>.'
2754 fi
2755
2756
2757 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
2758   preferred_mesagl=3.0
2759
2760   if test "$ac_mesagl_version" = unknown; then
2761     warnL "Unable to determine the MesaGL version number!"
2762     warn2 "Make sure you are using version $preferred_mesagl or newer."
2763
2764   elif test \! "$ac_mesagl_version" -gt 2006; then
2765     warnL "MesaGL version $ac_mesagl_version_string is being used."
2766     warn2 "MesaGL versions 2.6 and earlier have a security bug."
2767     warn2 "It is strongly recommended that you upgrade to at"
2768     warn2 "least version $preferred_mesagl."
2769   fi
2770 fi
2771
2772 if test "$have_gl" = no ; then
2773   if test "$with_gl_req" = yes ; then
2774     warnL 'Use of GL was requested, but it was not found.'
2775   elif test "$with_gl_req" = no ; then
2776     noteL 'The OpenGL 3D library is not being used.'
2777   else
2778     noteL 'The OpenGL 3D library was not found.'
2779   fi
2780
2781   if test "$gl_halfassed" = yes ; then
2782     echo ''
2783     warn2 'More specifically, we found the headers, but not the'
2784     warn2 'libraries; so either GL is half-installed on this'
2785     warn2 "system, or something else went wrong.  The \`config.log'"
2786     warn2 'file might contain some clues.'
2787   fi
2788
2789   echo ''
2790   warn2 'Those demos which use 3D will not be built or installed.'
2791   warn2 'You might want to consider installing OpenGL and'
2792   warn2 're-running configure.  (Remember to delete the'
2793   warn2 "config.cache file first.)  If your vendor doesn't ship"
2794   warn2 'their own implementation of OpenGL, you can get a free'
2795   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
2796   warn2 'info, see <http://www.opengl.org/>.'
2797
2798 fi
2799
2800
2801 if test "$have_gl" = yes -a "$have_gle" = no ; then
2802   if test "$with_gle_req" = yes ; then
2803     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
2804     warn2 'it was not found (though the OpenGL library was found, and'
2805     warn2 'is being used.)'
2806   elif test "$with_gle_req" = no ; then
2807     noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
2808     warn2 'library is not.'
2809   else
2810     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
2811     warn2 'was not.'
2812   fi
2813
2814   if test "$gle_halfassed" = yes ; then
2815     echo ''
2816     warn2 'More specifically, we found the headers, but not the'
2817     warn2 'libraries; so either GLE is half-installed on this'
2818     warn2 "system, or something else went wrong.  The \`config.log'"
2819     warn2 'file might contain some clues.'
2820   fi
2821
2822   echo ''
2823   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
2824   warn2 'will not be built or installed.  You might want to consider'
2825   warn2 'installing GLE and re-running configure.  (Remember to delete'
2826   warn2 'the config.cache file first.)  You can find the GLE library'
2827   warn2 'at <http://www.linas.org/gle/>.  For general OpenGL info,'
2828   warn2 'see <http://www.opengl.org/>.'
2829
2830 fi
2831
2832
2833 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
2834   warn 'Use of XReadDisplay was requested, but it was not found.'
2835 fi
2836
2837 if test "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then
2838   warn 'Use of the Iris Video Library was requested, but it was not found.'
2839 fi
2840
2841 if test -n "$with_zippy_req"; then
2842   if test "$with_zippy_req" != "$ac_cv_zippy_program" ; then
2843     warnL "$with_zippy_req was requested as the Zippy program,"
2844     warn2 "but was not found.  The default will be used instead."
2845   fi
2846 fi
2847
2848 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
2849   warn 'Use of Kerberos was requested, but it was not found.'
2850 fi
2851
2852 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
2853   warn 'Use of PAM was requested, but it was not found.'
2854 fi
2855
2856 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
2857   warn 'Use of shadow passwords was requested, but they were not found.'
2858 fi
2859
2860
2861 # You are in a twisty maze of namespaces and syntaxes, all alike.
2862 # Fuck the skull of Unix.
2863 #
2864 eval bindir=${bindir}
2865 eval bindir=${bindir}
2866 eval bindir=${bindir}
2867 eval bindir=${bindir}
2868 eval bindir=${bindir}
2869 eval bindir=${bindir}
2870 eval HACKDIR=${HACKDIR}
2871 eval HACKDIR=${HACKDIR}
2872 eval HACKDIR=${HACKDIR}
2873 eval HACKDIR=${HACKDIR}
2874 eval HACKDIR=${HACKDIR}
2875 eval HACKDIR=${HACKDIR}
2876
2877 # canonicalize slashes.
2878 bindir=`echo  "${bindir}"  | sed 's@/$@@;s@//*@/@g'`
2879 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
2880
2881
2882 # Sanity check the subdir
2883 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
2884   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
2885     echo ""
2886     AC_MSG_ERROR([\"--enable-subdir=${bindir}/${bad_choice}\" won't work.
2887                    There will be an executable installed with that name, so
2888                    that can't be the name of a directory as well.  Please
2889                    re-configure with a different directory name.])
2890   fi
2891 done
2892
2893
2894 do_dir_warning=no
2895
2896 # Now let's see if there's a previous RPM version already installed.  Blargh!
2897
2898 # M4 sucks!!
2899 changequote(X,Y)
2900 rpmv=`(rpm -qv xscreensaver) 2>&- | \
2901       sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/'`
2902 changequote([,])
2903
2904 if test \! -z "$rpmv" ; then
2905   rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
2906   rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
2907
2908   warning=no
2909   warnL "There is already an installed RPM of xscreensaver $rpmv"
2910   warn2 "on this system.  You might want to remove it (with"
2911   warn2 '"rpm -ve xscreensaver") before running "make install"'
2912   warn2 "from this directory."
2913   echo ""
2914   warn2 "Alternately, you could build this version of xscreensaver"
2915   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
2916   warn2 "file is included.  See the RPM documentation for more info."
2917   echo ""
2918
2919   if test "$rpmbdir" = "$rpmhdir" ; then
2920     warn2 "The RPM version was installed in $rpmbdir."
2921   else
2922     warn2 "The RPM version was installed in $rpmbdir,"
2923     warn2 "with demos in $rpmhdir."
2924   fi
2925
2926   do_dir_warning=yes
2927 fi
2928
2929
2930 # Warn about egregious GNOME bogosity.
2931 #
2932 #if (rpm -qv control-center) >&- 2>&- ; then
2933 #  warning=no
2934 #  warnL "The Gnome Control Center seems to be installed."
2935 #  echo  ""
2936 #  warn2 "Note that simply installing this version of xscreensaver"
2937 #  warn2 "will not cause GNOME to know about the newly-added display"
2938 #  warn2 "modes -- GNOME is just lame that way.  Instead of using the"
2939 #  warn2 "Control Center, try using the \`xscreensaver-demo' command."
2940 #fi
2941
2942
2943 if test "${bindir}" = "${HACKDIR}" ; then
2944   do_dir_warning=yes
2945 fi
2946
2947 if test "$do_dir_warning" = yes; then
2948   echo ""
2949   echo "$warnsep"
2950   echo ""
2951   echo '      When you run "make install", the "xscreensaver",'
2952   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
2953   echo "      will be installed in ${bindir}."
2954   echo ""
2955   echo "      The various graphics demos (100+ different executables) will"
2956   echo "      also be installed in ${HACKDIR}."
2957   echo ""
2958   echo "      If you would prefer the demos to be installed elsewhere"
2959   echo "      (for example, in a dedicated directory) you should re-run"
2960   echo "      configure with the --enable-subdir=DIR option.  For more"
2961   echo "      information, run $0 --help."
2962   warning=yes
2963 fi
2964
2965 if test "$warning" != no; then
2966   echo '' ; echo "$warnsep" ; echo ''
2967 fi