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