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