http://ftp.x.org/contrib/applications/xscreensaver-3.20.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 AC_ARG_WITH(gl,[
1793 Graphics options:
1794
1795   --with-gl               Build those demos which depend on OpenGL.],
1796   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
1797
1798 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
1799
1800 ac_mesagl_version=unknown
1801 ac_mesagl_version_string=unknown
1802
1803 if test "$with_gl" = yes; then
1804   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
1805   if test "$have_gl" = yes ; then
1806     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no)
1807   fi
1808
1809   # If we have the headers, try and figure out which vendor it's from.
1810   #
1811   if test "$have_gl" = yes ; then
1812
1813     # We need to know whether it's MesaGL so that we know which libraries
1814     # to link against.
1815     #
1816     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
1817       [ac_cv_have_mesa_gl=no
1818        AC_EGREP_X_HEADER(Mesa, GL/glx.h, [ac_cv_have_mesa_gl=yes])
1819       ])
1820     ac_have_mesa_gl=$ac_cv_have_mesa_gl
1821  
1822
1823     gl_lib_1=""
1824     GL_LIBS=""
1825
1826
1827     # Some versions of MesaGL are compiled to require -lpthread.
1828     # So if the Mesa headers exist, and -lpthread exists, then always
1829     # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
1830     #
1831     if test "$ac_have_mesa_gl" = yes; then
1832       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
1833     fi
1834
1835
1836     # If we have Mesa headers, check to see if we can link against -lMesaGL.
1837     # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
1838     # Else, warn that GL is busted.  (We have the headers, but no libs.)
1839     #
1840
1841     if test "$ac_have_mesa_gl" = yes ; then
1842       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
1843                      [gl_lib_1="MesaGL"
1844                       GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
1845                      [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
1846     fi
1847
1848     if test "$gl_lib_1" = "" ; then
1849       AC_CHECK_X_LIB(GL, glXCreateContext, 
1850                      [gl_lib_1="GL"
1851                       GL_LIBS="-lGL -lGLU $GL_LIBS"],
1852                      [], -lGLU $GL_LIBS -lX11 -lXext -lm)
1853     fi
1854
1855     if test "$gl_lib_1" = "" ; then
1856       # we have headers, but no libs -- bail.
1857       have_gl=no
1858       ac_have_mesa_gl=no
1859     else
1860       # linking works -- we can build the GL hacks.
1861       AC_DEFINE(HAVE_GL)
1862       if test "$ac_have_mesa_gl" = yes ; then
1863         AC_DEFINE(HAVE_MESA_GL)
1864       fi
1865     fi
1866   fi
1867
1868
1869   # Now that we know we have GL headers and libs, do some more GL testing.
1870   #
1871
1872   if test "$have_gl" = yes ; then
1873     # If it's MesaGL, we'd like to issue a warning if the version number
1874     # is less than or equal to 2.6, because that version had a security bug.
1875     #
1876     if test "$ac_have_mesa_gl" = yes; then
1877
1878       AC_CACHE_CHECK([MesaGL version number], ac_cv_mesagl_version_string,
1879         [cat > conftest.$ac_ext <<EOF
1880 #line __oline__ "configure"
1881 #include "confdefs.h"
1882 #include <GL/gl.h>
1883 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
1884 EOF
1885
1886          ac_save_CPPFLAGS="$CPPFLAGS"
1887          if test \! -z "$includedir" ; then 
1888            CPPFLAGS="$CPPFLAGS -I$includedir"
1889          fi
1890          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1891
1892           # M4 sucks!!
1893          changequote(X,Y)
1894          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | sed -n \
1895               's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
1896          changequote([,])
1897
1898          rm -f conftest.$ac_ext
1899
1900          CPPFLAGS="$ac_save_CPPFLAGS"
1901
1902          if test "$mglv" = ""; then
1903            ac_mesagl_version=unknown
1904            ac_mesagl_version_string=unknown
1905          else
1906            ac_mesagl_version_string=$mglv
1907            maj=`echo $mglv | sed -n 's/\..*//p'`
1908            min=`echo $mglv | sed -n 's/.*\.//p'`
1909            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
1910            if test -z "$ac_mesagl_version"; then
1911              ac_mesagl_version=unknown
1912              ac_mesagl_version_string=unknown
1913            fi
1914          fi
1915          ac_cv_mesagl_version=$ac_mesagl_version
1916          ac_cv_mesagl_version_string=$ac_mesagl_version_string
1917       ])
1918       ac_mesagl_version=$ac_cv_mesagl_version
1919       ac_mesagl_version_string=$ac_cv_mesagl_version_string
1920     fi
1921
1922
1923     # Check for OpenGL 1.1 features.
1924     #
1925     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
1926                    [true], $GL_LIBS -lX11 -lXext -lm)
1927
1928
1929     # Check whether the `xscreensaver' executable should link against GL.
1930     # See comments in utils/visual-gl.c for why this is sometimes necessary.
1931     #
1932     AC_MSG_CHECKING(whether drastic GL measures must be taken)
1933     case "$host" in
1934       *-sgi*)
1935         AC_MSG_RESULT([yes -- hello, SGI.])
1936         AC_DEFINE(DAEMON_USE_GL)
1937         SAVER_GL_SRCS='$(UTILS_SRC)/visual-gl.c'
1938         SAVER_GL_OBJS='$(UTILS_BIN)/visual-gl.o'
1939         SAVER_GL_LIBS="$GL_LIBS"
1940       ;;
1941       *)
1942         AC_MSG_RESULT([no -- non-SGI.])
1943         SAVER_GL_SRCS=''
1944         SAVER_GL_OBJS=''
1945         SAVER_GL_LIBS=''
1946       ;;
1947     esac
1948
1949   fi
1950
1951 elif test "$with_gl" != no; then
1952   echo "error: must be yes or no: --with-gl=$with_gl"
1953   exit 1
1954 fi
1955
1956
1957 ###############################################################################
1958 #
1959 #       Check for -lgle.
1960 #
1961 ###############################################################################
1962
1963 have_gle=no
1964 with_gle_req=unspecified
1965 AC_ARG_WITH(gle,
1966 [  --with-gle              Build those demos which depend on GLE
1967                           (the OpenGL "extrusion" library.)],
1968   [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
1969
1970 HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
1971
1972 GLE_LIBS=""
1973
1974 if test "$with_gle" = yes; then
1975
1976   AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no)
1977   if test "$have_gle" = yes ; then
1978     AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no)
1979   fi
1980
1981 #          /usr/local/lib/GL/libgle.a
1982 #          /usr/local/lib/GL/libmatrix.a
1983
1984   if test "$have_gle" = yes ; then
1985     have_gle=no
1986     AC_CHECK_X_LIB(gle, gleCreateGC, 
1987                    [have_gle=yes; GLE_LIBS="-lgle"],
1988                    [], $GL_LIBS -lX11 -lXext -lm)
1989   fi
1990   if test "$have_gle" = yes ; then
1991     have_gle=no
1992     AC_CHECK_X_LIB(matrix, uview_direction_d, 
1993                    [have_gle=yes; GLE_LIBS="$GLE_LIBS -lmatrix"],
1994                    [], $GL_LIBS -lX11 -lXext -lm)
1995   fi
1996
1997   if test "$have_gle" = yes ; then
1998     AC_DEFINE(HAVE_GLE)
1999   fi
2000
2001 elif test "$with_gle" != no; then
2002   echo "error: must be yes or no: --with-gle=$with_gle"
2003   exit 1
2004
2005 fi
2006
2007
2008
2009 ###############################################################################
2010 #
2011 #       Check for -lXpm.
2012 #
2013 ###############################################################################
2014
2015 have_xpm=no
2016 with_xpm_req=unspecified
2017 AC_ARG_WITH(xpm,
2018 [  --with-xpm              Include support for XPM files in some demos.],
2019   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
2020
2021 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
2022
2023 if test "$with_xpm" = yes; then
2024   AC_CHECK_X_HEADER(X11/xpm.h,
2025                    [have_xpm=yes
2026                     AC_DEFINE(HAVE_XPM)
2027                     XPM_LIBS="-lXpm"])
2028 elif test "$with_xpm" != no; then
2029   echo "error: must be yes or no: --with-xpm=$with_xpm"
2030   exit 1
2031 fi
2032
2033 # See comment near $motif_requires_xpm, above.
2034 # Need to do this here, after both Motif and XPM have been checked for.
2035 #
2036 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
2037   if test "$motif_requires_xpm" = yes ; then
2038     MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
2039   fi
2040 fi
2041
2042
2043 ###############################################################################
2044 #
2045 #       Check for the XSHM server extension.
2046 #
2047 ###############################################################################
2048
2049 have_xshm=no
2050 with_xshm_req=unspecified
2051 AC_ARG_WITH(xshm-ext,
2052 [  --with-xshm-ext         Include support for the XSHM extension.],
2053   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
2054
2055 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
2056
2057 if test "$with_xshm" = yes; then
2058
2059   # first check for Xshm.h.
2060   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes])
2061
2062   # if that succeeded, then check for sys/ipc.h.
2063   if test "$have_xshm" = yes; then
2064     have_xshm=no
2065     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
2066   fi
2067
2068   # if that succeeded, then check for sys/shm.h.
2069   if test "$have_xshm" = yes; then
2070     have_xshm=no
2071     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
2072   fi
2073
2074   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
2075   # to exist, but the library code to not exist.  And even better, the library
2076   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
2077   # lib doesn't exist, give up.  (This lib gets added to X_EXTRA_LIBS, and
2078   # that's not quite right, but close enough.)
2079   #
2080   case "$host" in
2081     *-aix*)
2082       have_xshm=no
2083       AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
2084                      [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
2085                      [true], -lX11 -lXext -lm)
2086     ;;
2087   esac
2088
2089   # if that succeeded, then we've really got it.
2090   if test "$have_xshm" = yes; then
2091     AC_DEFINE(HAVE_XSHM_EXTENSION)
2092   fi
2093
2094 elif test "$with_xshm" != no; then
2095   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
2096   exit 1
2097 fi
2098
2099
2100 ###############################################################################
2101 #
2102 #       Check for the DOUBLE-BUFFER server extension.
2103 #
2104 ###############################################################################
2105
2106 have_xdbe=no
2107 with_xdbe_req=unspecified
2108 AC_ARG_WITH(xdbe-ext,
2109 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.],
2110   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
2111
2112 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
2113
2114 if test "$with_xdbe" = yes; then
2115
2116   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes])
2117   if test "$have_xdbe" = yes; then
2118     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
2119   fi
2120
2121 elif test "$with_xdbe" != no; then
2122   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
2123   exit 1
2124 fi
2125
2126
2127 ###############################################################################
2128 #
2129 #       Check for the SGI XReadDisplay server extension.
2130 #
2131 #       Note: this has to be down here, rather than up with the other server
2132 #       extension tests, so that the output of `configure --help' is in the
2133 #       right order.  Arrgh!
2134 #
2135 ###############################################################################
2136
2137 have_readdisplay=no
2138 with_readdisplay_req=unspecified
2139 AC_ARG_WITH(readdisplay,
2140 [  --with-readdisplay      Include support for the XReadDisplay extension.],
2141   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
2142   [with_readdisplay=yes])
2143
2144 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
2145
2146 if test "$with_readdisplay" = yes; then
2147   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
2148                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION))
2149 elif test "$with_readdisplay" != no; then
2150   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
2151   exit 1
2152 fi
2153
2154
2155 ###############################################################################
2156 #
2157 #       Check for the SGI Iris Video Library.
2158 #
2159 ###############################################################################
2160
2161 have_sgivideo=no
2162 with_sgivideo_req=unspecified
2163 AC_ARG_WITH(sgivideo,
2164 [  --with-sgivideo         Include support for SGI's Iris Video Library.],
2165   [with_sgivideo="$withval"; with_sgivideo_req="$withval"],
2166   [with_sgivideo=yes])
2167
2168 HANDLE_X_PATH_ARG(with_sgivideo, --with-sgivideo, Iris Video)
2169
2170 if test "$with_sgivideo" = yes; then
2171   AC_CHECK_X_HEADER(dmedia/vl.h, have_sgivideo=yes)
2172   if test "$have_sgivideo" = yes; then
2173     have_sgivideo=no
2174     AC_CHECK_LIB(vl, vlOpenVideo, [have_sgivideo=yes])
2175     if test "$have_sgivideo" = yes; then
2176       SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o"
2177       SGI_VIDEO_LIBS="-lvl"
2178       AC_DEFINE(HAVE_SGI_VIDEO)
2179     fi
2180   fi
2181 elif test "$with_sgivideo" != no; then
2182   echo "error: must be yes or no: --with-sgivideo=$with_sgivideo"
2183   exit 1
2184 fi
2185
2186
2187 ###############################################################################
2188 #
2189 #       Check for a program to generate random text.
2190 #
2191 #       Zippy is funnier than the idiocy generally spat out by `fortune',
2192 #       so try to find that, by invoking Emacs and asking it where its 
2193 #       libexec directory is ("yow" lives in there.)
2194 #
2195 #       If that doesn't work, see if fortune, zippy, or yow are on $PATH,
2196 #       and if so, use them.
2197 #
2198 #       If that doesn't work, look in /usr/games, and if it's there, use
2199 #       the full pathname.
2200 #
2201 ###############################################################################
2202
2203 with_zippy_req=""
2204 AC_ARG_WITH(zippy,[
2205   --with-zippy=PROGRAM    Some demos are able to run an external program and
2206                           display its text; this names the program to use by
2207                           default (though it can be overridden with X
2208                           resources.)  If you don't specify this, the default
2209                           is to use \"yow\" from the Emacs distribution (if you
2210                           have it) or else to use \"fortune\".
2211 ],
2212   [with_zippy_req="$withval"; with_zippy="$withval"],[with_zippy=yes])
2213
2214 if test "$with_zippy" = no || test "$with_zippy" = yes ; then
2215   with_zippy=""
2216   with_zippy_req=""
2217 fi
2218
2219 if test -n "$with_zippy_req" ; then
2220   ac_cv_zippy_program=""
2221   case "$with_zippy_req" in
2222     /*)
2223       AC_MSG_CHECKING([for $with_zippy_req])
2224       if test -x "$with_zippy_req" ; then
2225         AC_MSG_RESULT(yes)
2226       else
2227         AC_MSG_RESULT(no)
2228         with_zippy=""
2229       fi
2230     ;;
2231     *)
2232       # don't cache
2233       unset ac_cv_path_zip2
2234       AC_PATH_PROG(zip2, $with_zippy_req, [])
2235       if test "$zip2" = ""; then
2236         with_zippy=""
2237       fi
2238     ;;
2239   esac
2240   ac_cv_zippy_program="$with_zippy"
2241
2242 elif test -n "$ac_cv_zippy_program"; then
2243   AC_MSG_RESULT([checking for zippy... (cached) $ac_cv_zippy_program])
2244 fi
2245
2246 if test ! -n "$ac_cv_zippy_program"; then
2247
2248   AC_CHECK_PROGS(emacs_exe, emacs)
2249   AC_CHECK_PROGS(xemacs_exe, xemacs)
2250
2251   ac_cv_zippy_program=""
2252   eargs='-batch -q -nw --eval'
2253
2254   if test -n "$emacs_exe" ; then
2255     AC_MSG_CHECKING([for emacs yow])
2256     #
2257     # get emacs to tell us where the libexec directory is.
2258     #
2259     dir=`$emacs_exe $eargs '(princ (concat exec-directory "\n"))' \
2260          2>/dev/null | tail -1`
2261     dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
2262     #
2263     # try running libexec/yow and see if it exits without error.
2264     #
2265     if test x"$dir" != x -a -x "$dir/yow" ; then
2266       if $dir/yow >&- 2>&- ; then
2267         ac_cv_zippy_program="$dir/yow"
2268         AC_MSG_RESULT($ac_cv_zippy_program)
2269       else
2270         AC_MSG_RESULT(no)
2271       fi
2272     fi
2273   fi
2274
2275   if test -z "$ac_cv_zippy_program" ; then
2276     AC_MSG_CHECKING([for xemacs yow])
2277     if test -n "$xemacs_exe" ; then
2278       #
2279       # get xemacs to tell us where the libexec directory is.
2280       #
2281       dir=`$xemacs_exe $eargs '(princ (concat exec-directory "\n"))' \
2282            2>/dev/null | tail -1`
2283       dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
2284       #
2285       # try running libexec/yow and see if it exits without error.
2286       #
2287       if test x"$dir" != x -a -x "$dir/yow" ; then
2288         if $dir/yow >&- 2>&- ; then
2289           ac_cv_zippy_program="$dir/yow"
2290           AC_MSG_RESULT($ac_cv_zippy_program)
2291         else
2292           #
2293           # in some xemacs installations, the pathname of the yow.lines file
2294           # isn't hardcoded into the yow executable, and must be passed on 
2295           # the command line.  See if it's in libexec/../etc/.
2296
2297           # M4 sucks!!
2298           changequote(X,Y)
2299           dir_up=`echo "$dir" | sed 's@/[^/]*$@@'`
2300           changequote([,])
2301
2302           yowlines="$dir_up/etc/yow.lines"
2303           if $dir/yow -f $yowlines >&- 2>&- ; then
2304             ac_cv_zippy_program="$dir/yow -f $yowlines"
2305             AC_MSG_RESULT($ac_cv_zippy_program)
2306           else
2307             #
2308             # In newer XEmacs releases, yow.lines is in a different place,
2309             # and the easiest way to get it is by calling the new function
2310             # `locate-data-file'.
2311             #
2312             yowlines=`$xemacs_exe $eargs \
2313               '(princ (concat (locate-data-file "yow.lines") "\n"))' \
2314               2>/dev/null | tail -1`
2315             if $dir/yow -f $yowlines >&- 2>&- ; then
2316               ac_cv_zippy_program="$dir/yow -f $yowlines"
2317               AC_MSG_RESULT($ac_cv_zippy_program)
2318             else
2319               AC_MSG_RESULT(no)
2320             fi
2321           fi
2322         fi
2323       fi
2324     fi
2325   fi
2326
2327   # if that didn't work, try for some other programs...
2328   if test -z "$ac_cv_zippy_program" ; then
2329     fortune=''
2330     AC_CHECK_PROGS(fortune, [fortune zippy yow])
2331     # if that didn't work, try for those programs in /usr/games...
2332     if test -z "$fortune" ; then
2333       AC_PATH_PROGS(fortune, [fortune zippy yow], fortune,
2334                     /usr/games:/usr/local/games:$PATH)
2335     fi
2336   fi
2337 fi
2338
2339 if test -z "$ac_cv_zippy_program" ; then
2340   ac_cv_zippy_program=fortune
2341 fi
2342
2343 AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_program")
2344
2345
2346 ###############################################################################
2347 #
2348 #       Done testing.  Now, set up the various -I and -L variables,
2349 #       and decide which GUI program to build by default.
2350 #
2351 ###############################################################################
2352
2353 DEPEND=makedepend
2354 DEPEND_FLAGS=
2355 DEPEND_DEFINES=
2356
2357
2358 if test \! -z "$includedir" ; then 
2359   INCLUDES="$INCLUDES -I$includedir"
2360 fi
2361
2362 if test \! -z "$libdir" ; then
2363   LDFLAGS="$LDFLAGS -L$libdir"
2364 fi
2365
2366
2367 DEMO_MAN="xscreensaver-demo-old.man"
2368 ALL_DEMO_PROGRAMS=
2369 if test "$have_athena" = yes; then
2370   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xaw
2371   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2372 fi
2373 if test "$have_athena3d" = yes; then
2374   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xaw3d
2375   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2376 fi
2377 if test "$have_motif" = yes; then
2378   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
2379   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2380 fi
2381 if test "$have_gtk" = yes; then
2382   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
2383   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2384   DEMO_MAN="xscreensaver-demo.man"
2385 fi
2386
2387
2388 if test "$have_kerberos" = yes; then
2389   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
2390   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
2391 fi
2392 if test "$have_pam" = yes; then
2393   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
2394   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
2395   INSTALL_PAM="install-pam"
2396 fi
2397   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
2398   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
2399
2400
2401 if test "$enable_locking" = yes; then
2402   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
2403   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
2404 else
2405   LOCK_SRCS='$(NOLOCK_SRCS_1)'
2406   LOCK_OBJS='$(NOLOCK_OBJS_1)'
2407 fi
2408
2409 if test "$need_setuid" = yes; then
2410   NEED_SETUID=yes
2411   INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)'
2412 else
2413   NEED_SETUID=no
2414   INSTALL_SETUID='$(INSTALL_PROGRAM)'
2415 fi
2416
2417 tab='   '
2418 if test "$have_gl" = yes; then
2419   GL_EXES='$(GL_EXES)'
2420   GL_MEN='$(GL_MEN)'
2421   GL_KLUDGE="${tab}  "
2422 else
2423   GL_KLUDGE="-${tab}  "
2424 fi
2425
2426 if test "$have_gle" = yes; then
2427   GLE_EXES='$(GLE_EXES)'
2428   GLE_MEN='$(GLE_MEN)'
2429   GLE_KLUDGE="${tab}   "
2430 else
2431   GLE_KLUDGE="-${tab}   "
2432 fi
2433
2434
2435 ###############################################################################
2436 #
2437 #       Perform substitutions and write Makefiles.
2438 #
2439 ###############################################################################
2440
2441 AC_SUBST(INCLUDES)
2442
2443 AC_SUBST(PREFERRED_DEMO_PROGRAM)
2444 AC_SUBST(ALL_DEMO_PROGRAMS)
2445 AC_SUBST(DEMO_MAN)
2446 AC_SUBST(SAVER_LIBS)
2447 AC_SUBST(MOTIF_LIBS)
2448 AC_SUBST(GTK_LIBS)
2449 AC_SUBST(ATHENA_LIBS)
2450 AC_SUBST(ATHENA3D_LIBS)
2451 AC_SUBST(HACK_LIBS)
2452 AC_SUBST(XPM_LIBS)
2453 AC_SUBST(GL_LIBS)
2454 AC_SUBST(GLE_LIBS)
2455 AC_SUBST(PASSWD_LIBS)
2456 AC_SUBST(INSTALL_SETUID)
2457 AC_SUBST(INSTALL_DIRS)
2458 AC_SUBST(NEED_SETUID)
2459 AC_SUBST(INSTALL_PAM)
2460 AC_SUBST(SGI_VIDEO_OBJS)
2461 AC_SUBST(SGI_VIDEO_LIBS)
2462
2463 AC_SUBST(PASSWD_SRCS)
2464 AC_SUBST(PASSWD_OBJS)
2465 AC_SUBST(XMU_SRCS)
2466 AC_SUBST(XMU_OBJS)
2467 AC_SUBST(SAVER_GL_SRCS)
2468 AC_SUBST(SAVER_GL_OBJS)
2469 AC_SUBST(SAVER_GL_LIBS)
2470 AC_SUBST(LOCK_SRCS)
2471 AC_SUBST(LOCK_OBJS)
2472 AC_SUBST(GL_EXES)
2473 AC_SUBST(GL_MEN)
2474 AC_SUBST(GL_KLUDGE)
2475 AC_SUBST(GLE_EXES)
2476 AC_SUBST(GLE_MEN)
2477 AC_SUBST(GLE_KLUDGE)
2478 AC_SUBST(HACKDIR)
2479
2480 APPDEFAULTS=$ac_x_app_defaults
2481 AC_SUBST(APPDEFAULTS)
2482
2483 AC_SUBST(DEPEND)
2484 AC_SUBST(DEPEND_FLAGS)
2485 AC_SUBST(DEPEND_DEFINES)
2486 AC_SUBST(PERL)
2487
2488 AC_OUTPUT(Makefile
2489           utils/Makefile
2490           driver/Makefile
2491           hacks/Makefile
2492           hacks/glx/Makefile
2493           driver/XScreenSaver.ad)
2494
2495 ###############################################################################
2496 #
2497 #       Print some warnings at the end.
2498 #
2499 ###############################################################################
2500
2501 warn_prefix_1="    Warning:"
2502 warn_prefix_2="       Note:"
2503 warn_prefix="$warn_prefix_1"
2504
2505 warning=no
2506 warnsep='    #################################################################'
2507
2508 warnpre() {
2509   if test "$warning" = no ; then
2510     echo '' ; echo "$warnsep" ; echo ''
2511     warning=yes
2512   fi
2513 }
2514
2515 warn() {
2516   warnpre
2517   if test "$warning" = long ; then echo '' ; fi
2518   warning=yes
2519   echo "$warn_prefix $@"
2520 }
2521
2522 warnL() {
2523   was=$warning
2524   warnpre
2525   warning=yes
2526   if test "$was" != no ; then echo '' ; fi
2527   echo "$warn_prefix $@"
2528 }
2529
2530 warn2() {
2531   echo "             $@"
2532   warning=long
2533 }
2534
2535 note() {
2536   warn_prefix="$warn_prefix_2"
2537   warn $@
2538   warn_prefix="$warn_prefix_1"
2539 }
2540
2541 noteL() {
2542   warn_prefix="$warn_prefix_2"
2543   warnL $@
2544   warn_prefix="$warn_prefix_1"
2545 }
2546
2547
2548 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
2549   warn 'The SGI saver extension was requested, but was not found.'
2550 fi
2551
2552 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
2553   warn 'The MIT saver extension was requested, but was not found.'
2554 fi
2555
2556 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
2557   warn 'The XIdle extension was requested, but was not found.'
2558 fi
2559
2560 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
2561   warn 'The XSHM extension was requested, but was not found.'
2562 fi
2563
2564 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
2565   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
2566 fi
2567
2568 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
2569   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
2570 fi
2571
2572 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
2573   warn 'The DPMS extension was requested, but was not found.'
2574 fi
2575
2576 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
2577   warn 'The XF86VMODE extension was requested, but was not found.'
2578 fi
2579
2580 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
2581   warn "Checking of /proc/interrupts was requested, but it's bogus."
2582 fi
2583
2584
2585 if test "$have_motif" = no -a "$have_gtk" = no -a "$have_athena" = no ; then
2586   warnL "None of Motif, Gtk, or Athena widgets seem to be available;"
2587   warn2 "the \`xscreensaver-demo' program requires one of these."
2588
2589 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
2590   warnL "Use of Motif was requested, but it wasn't found;"
2591   if test "$have_gtk" = yes; then
2592     warn2 "Gtk will be used instead."
2593   else
2594     warn2 "Athena will be used instead."
2595   fi
2596
2597 elif test "$jurassic_gtk" = yes ; then
2598
2599   pref_gtk=1.2
2600
2601   v="$ac_gtk_version_string"
2602   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
2603     warnL "Use of Gtk was requested, but its version number is unknown;"
2604   elif test "$with_gtk_req" = yes ; then
2605     warnL "Use of Gtk was requested, but it is version $v;"
2606   else
2607     warnL "Gtk was found on this system, but it is version $v;"
2608   fi
2609
2610   if test "$have_motif" = yes; then
2611     which="Motif"
2612   else
2613     which="Athena"
2614   fi
2615
2616   warn2 "Gtk $pref_gtk or newer is required.  $which will be used instead."
2617
2618 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
2619   warnL "Use of Gtk was requested, but it wasn't found;"
2620   if test "$have_motif" = yes; then
2621     warn2 "Motif will be used instead."
2622   else
2623     warn2 "Athena will be used instead."
2624   fi
2625
2626 elif test "$with_athena_req" = yes -a "$have_athena" = no ; then
2627   warnL "Use of Athena was requested, but it wasn't found;"
2628   if test "$have_gtk" = yes; then
2629     warn2 "Gtk will be used instead."
2630   else
2631     warn2 "Motif will be used instead."
2632   fi
2633 fi
2634
2635
2636 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
2637
2638   preferred_lesstif=0.86
2639
2640   if test "$lesstif_version" = unknown; then
2641     warnL "Unable to determine the LessTif version number!"
2642     warn2 "Make sure you are using version $preferred_lesstif or newer."
2643     warn2 "See <http://www.lesstif.org/>."
2644
2645   elif test \! $lesstif_version -gt 82; then
2646     warnL "LessTif version $lesstif_version_string is being used."
2647     warn2 "LessTif versions 0.82 and earlier are too buggy to"
2648     warn2 "use with XScreenSaver; it is strongly recommended"
2649     warn2 "that you upgrade to at least version $preferred_lesstif!"
2650     warn2 "See <http://www.lesstif.org/>."
2651   fi
2652 fi
2653
2654 if test "$have_athena" = yes -a "$have_motif" = no -a "$have_gtk" = no; then
2655     warnL "Athena widgets are being used instead of Motif or Gtk."
2656     warn2 "The \`xscreensaver-demo' program looks much better"
2657     warn2 "with Motif or Gtk.  Wouldn't you rather be using Motif?"
2658     warn2 "Motif is shipped by every commercial Unix vendor,"
2659     warn2 "and there is a free implementation available as"
2660     warn2 "well: see <http://www.lesstif.org/>.  Gtk is shipped"
2661     warn2 "with most Linux and BSD distributions."
2662 fi
2663
2664
2665 if test "$have_xpm" = no ; then
2666   if test "$with_xpm_req" = yes ; then
2667     warnL 'Use of XPM was requested, but it was not found.'
2668   elif test "$with_xpm_req" = no ; then
2669     noteL 'The XPM library is not being used.'
2670   else
2671     noteL 'The XPM library was not found.'
2672   fi
2673
2674   echo ''
2675   warn2 'Some of the demos will not be as colorful as they'
2676   warn2 'could be.  You might want to consider installing XPM'
2677   warn2 'and re-running configure.  (Remember to delete the'
2678   warn2 'config.cache file first.)  You can find XPM at most'
2679   warn2 'X11 archive sites, such as <http://sunsite.unc.edu/>.'
2680 fi
2681
2682
2683 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
2684   preferred_mesagl=3.0
2685
2686   if test "$ac_mesagl_version" = unknown; then
2687     warnL "Unable to determine the MesaGL version number!"
2688     warn2 "Make sure you are using version $preferred_mesagl or newer."
2689
2690   elif test \! "$ac_mesagl_version" -gt 2006; then
2691     warnL "MesaGL version $ac_mesagl_version_string is being used."
2692     warn2 "MesaGL versions 2.6 and earlier have a security bug."
2693     warn2 "It is strongly recommended that you upgrade to at"
2694     warn2 "least version $preferred_mesagl."
2695   fi
2696 fi
2697
2698
2699 if test "$have_gl" = no ; then
2700   if test "$with_gl_req" = yes ; then
2701     warnL 'Use of GL was requested, but it was not found.'
2702   elif test "$with_gl_req" = no ; then
2703     noteL 'The OpenGL 3D library is not being used.'
2704   else
2705     noteL 'The OpenGL 3D library was not found.'
2706   fi
2707
2708   echo ''
2709   warn2 'Those demos which use 3D will not be built or installed.'
2710   warn2 'You might want to consider installing OpenGL and'
2711   warn2 're-running configure.  (Remember to delete the'
2712   warn2 "config.cache file first.)  If your vendor doesn't ship"
2713   warn2 'their own implementation of OpenGL, you can get a free'
2714   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
2715   warn2 'info, see <http://www.opengl.org/>.'
2716
2717 fi
2718
2719
2720 if test "$have_gl" = yes -a "$have_gle" = no ; then
2721   if test "$with_gle_req" = yes ; then
2722     warnL 'Use of GLE was requested, but it was not found.'
2723   elif test "$with_gle_req" = no ; then
2724     noteL 'The GLE (GL Extrusion) library is not being used.'
2725   else
2726     noteL 'The GLE (GL Extrusion) library was not found.'
2727   fi
2728
2729   echo ''
2730   warn2 'Some of the OpenGL (3D) demos will not be built or installed.'
2731   warn2 'You might want to consider installing GLE and re-running'
2732   warn2 'configure.  (Remember to delete the config.cache file first.)'
2733   warn2 'You can find the GLE library at <http://www.linas.org/gle/>.'
2734   warn2 'For general OpenGL info, see <http://www.opengl.org/>.'
2735
2736 fi
2737
2738
2739 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
2740   warn 'Use of XReadDisplay was requested, but it was not found.'
2741 fi
2742
2743 if test "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then
2744   warn 'Use of the Iris Video Library was requested, but it was not found.'
2745 fi
2746
2747 if test -n "$with_zippy_req"; then
2748   if test "$with_zippy_req" != "$ac_cv_zippy_program" ; then
2749     warnL "$with_zippy_req was requested as the Zippy program,"
2750     warn2 "but was not found.  The default will be used instead."
2751   fi
2752 fi
2753
2754 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
2755   warn 'Use of Kerberos was requested, but it was not found.'
2756 fi
2757
2758 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
2759   warn 'Use of PAM was requested, but it was not found.'
2760 fi
2761
2762 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
2763   warn 'Use of shadow passwords was requested, but they were not found.'
2764 fi
2765
2766
2767 # You are in a twisty maze of namespaces and syntaxes, all alike.
2768 # Fuck the skull of Unix.
2769 #
2770 eval bindir=${bindir}
2771 eval bindir=${bindir}
2772 eval bindir=${bindir}
2773 eval bindir=${bindir}
2774 eval bindir=${bindir}
2775 eval bindir=${bindir}
2776 eval HACKDIR=${HACKDIR}
2777 eval HACKDIR=${HACKDIR}
2778 eval HACKDIR=${HACKDIR}
2779 eval HACKDIR=${HACKDIR}
2780 eval HACKDIR=${HACKDIR}
2781 eval HACKDIR=${HACKDIR}
2782
2783 # canonicalize slashes.
2784 bindir=`echo  "${bindir}"  | sed 's@/$@@;s@//*@/@g'`
2785 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
2786
2787
2788 # Sanity check the subdir
2789 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
2790   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
2791     echo ""
2792     AC_MSG_ERROR([\"--enable-subdir=${bindir}/${bad_choice}\" won't work.
2793                    There will be an executable installed with that name, so
2794                    that can't be the name of a directory as well.  Please
2795                    re-configure with a different directory name.])
2796   fi
2797 done
2798
2799
2800 do_dir_warning=no
2801
2802 # Now let's see if there's a previous RPM version already installed.  Blargh!
2803
2804 # M4 sucks!!
2805 changequote(X,Y)
2806 rpmv=`(rpm -qv xscreensaver) 2>&- | \
2807       sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-[0-9][0-9]*$/\1/'`
2808 changequote([,])
2809
2810 if test \! -z "$rpmv" ; then
2811   rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
2812   rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
2813
2814   warning=no
2815   warnL "There is already an installed RPM of xscreensaver $rpmv"
2816   warn2 "on this system.  You might want to remove it (with"
2817   warn2 '"rpm -ve xscreensaver") before running "make install"'
2818   warn2 "from this directory."
2819   echo ""
2820   warn2 "Alternately, you could build this version of xscreensaver"
2821   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
2822   warn2 "file is included.  See the RPM documentation for more info."
2823   echo ""
2824
2825   if test "$rpmbdir" = "$rpmhdir" ; then
2826     warn2 "The RPM version was installed in $rpmbdir."
2827   else
2828     warn2 "The RPM version was installed in $rpmbdir,"
2829     warn2 "with demos in $rpmhdir."
2830   fi
2831
2832   do_dir_warning=yes
2833 fi
2834
2835
2836 # Warn about egregious GNOME bogosity.
2837 #
2838 if (rpm -qv control-center) >&- 2>&- ; then
2839   warning=no
2840   warnL "The Gnome Control Center seems to be installed."
2841   echo  ""
2842   warn2 "Note that simply installing this version of xscreensaver"
2843   warn2 "will not cause GNOME to know about the newly-added display"
2844   warn2 "modes -- GNOME is just lame that way.  Instead of using the"
2845   warn2 "Control Center, try using the \`xscreensaver-demo' command."
2846 fi
2847
2848
2849 if test "${bindir}" = "${HACKDIR}" ; then
2850   do_dir_warning=yes
2851 fi
2852
2853 if test "$do_dir_warning" = yes; then
2854   echo ""
2855   echo "$warnsep"
2856   echo ""
2857   echo '      When you run "make install", the "xscreensaver",'
2858   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
2859   echo "      will be installed in ${bindir}."
2860   echo ""
2861   echo "      The various graphics demos (100+ different executables) will"
2862   echo "      also be installed in ${HACKDIR}."
2863   echo ""
2864   echo "      If you would prefer the demos to be installed elsewhere"
2865   echo "      (for example, in a dedicated directory) you should re-run"
2866   echo "      configure with the --enable-subdir=DIR option.  For more"
2867   echo "      information, run $0 --help."
2868   warning=yes
2869 fi
2870
2871 if test "$warning" != no; then
2872   echo '' ; echo "$warnsep" ; echo ''
2873 fi