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