df6f23e67cbde728a45f12e8689963d9e7b87966
[xscreensaver] / configure.in
1 # configure.in --- xscreensaver, Copyright (c) 1997 Jamie Zawinski.
2 #
3
4 AC_INIT(driver/subprocs.c)
5
6 echo "current directory: `pwd`"
7 echo "command line was: $0 $@"
8
9 AC_CONFIG_HEADER(config.h)
10 AC_CANONICAL_HOST
11
12 AC_PROG_CC
13
14 if test -z "$GCC"; then
15   AC_MSG_CHECKING(how to request ANSI compilation)
16   case "$host" in
17     *-hpux*)
18       AC_MSG_RESULT(HPUX: adding -Ae)
19       CC="$CC -Ae"
20     ;;
21     *-aix*)
22       AC_MSG_RESULT(AIX: adding -qlanglvl=ansi -qhalt=e)
23       CC="$CC -qlanglvl=ansi -qhalt=e"
24     ;;
25
26     *-dec-*)
27       AC_MSG_RESULT(DEC: adding -std1)
28       CC="$CC -std1"
29     ;;
30
31     *)
32       AC_MSG_RESULT(no idea)
33     ;;
34   esac
35 fi
36
37
38 AC_MSG_CHECKING([whether the compiler works on ANSI C])
39 AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
40    AC_MSG_RESULT(yes),
41    AC_MSG_RESULT(no)
42    AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.),
43    AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.))
44
45 case "$host" in
46   *-irix5* |*-irix6.[0-3]* )
47     if test -n "$GCC"; then
48       AC_MSG_RESULT(Turning on gcc compiler warnings.)
49       CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
50     else
51       # not gcc
52       AC_MSG_RESULT(Turning on SGI compiler warnings.)
53       CC="$CC -fullwarn -use_readonly_const -rdata_shared -g3"
54     fi
55   ;;
56
57     *-linux-*)
58       AC_MSG_RESULT(Turning on gcc compiler warnings.)
59       CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
60   ;;
61
62 #  *-dec-osf*)
63 #    if test -z "$GCC"; then
64 #      AC_MSG_RESULT(Turning on DEC C compiler warnings.)
65 #      CC="$CC -migrate -w0 -verbose -warnprotos"
66 #    fi
67 #  ;;
68
69 esac
70
71
72 # Try and determine whether ${INSTALL} can create intermediate directories,
73 # and if not, whether "mkdir -p" works instead.  This sets ${INSTALL_DIRS}.
74 # (But autoconf should earn its keep and do this for us!)
75 #
76 AC_DEFUN(AC_PROG_INSTALL_DIRS,
77   [INSTALL_DIRS='${INSTALL} -d'
78    AC_MSG_CHECKING(whether \"\${INSTALL} -d\" creates intermediate directories)
79    rm -rf conftestdir
80    if mkdir conftestdir; then
81       cd conftestdir >&-
82
83       ${INSTALL} -d `pwd`/dir1/dir2 >&- 2>&-
84       if test -d dir1/dir2 ; then
85         AC_MSG_RESULT(yes)
86       else
87         AC_MSG_RESULT(no)
88         AC_MSG_CHECKING(whether \"mkdir -p\" creates intermediate directories)
89         rm -rf dir1
90         mkdir -p dir1/dir2 >&- 2>&-
91         if test -d dir1/dir2/. ; then
92           AC_MSG_RESULT(yes)
93           INSTALL_DIRS='mkdir -p'
94         else
95           AC_MSG_RESULT(no)
96         fi
97       fi
98       cd .. >&-
99       rm -rf conftestdir
100    fi
101 ])
102
103
104 AC_PROG_CPP
105 AC_PROG_INSTALL
106 AC_PROG_INSTALL_DIRS
107 AC_PROG_MAKE_SET
108
109 AC_C_CONST
110 AC_C_INLINE
111
112 AC_HEADER_STDC
113 AC_HEADER_TIME
114 AC_HEADER_SYS_WAIT
115 AC_HEADER_DIRENT
116
117 AC_TYPE_MODE_T
118 AC_TYPE_PID_T
119 AC_TYPE_SIZE_T
120 AC_TYPE_SIGNAL
121
122 AC_MSG_CHECKING(how to call gettimeofday)
123 AC_CACHE_VAL(ac_cv_gettimeofday_args,
124  [AC_TRY_COMPILE([#include <stdlib.h>
125                   #include <sys/time.h>],
126                  [struct timeval tv; struct timezone tzp;
127                   gettimeofday(&tv, &tzp);],
128                  [ac_gettimeofday_args=2],
129                  [AC_TRY_COMPILE([#include <stdlib.h>
130                                   #include <sys/time.h>],
131                                  [struct timeval tv; gettimeofday(&tv);],
132                                  [ac_gettimeofday_args=1],
133                                  [ac_gettimeofday_args=0])])
134   ac_cv_gettimeofday_args=$ac_gettimeofday_args])
135 ac_gettimeofday_args=$ac_cv_gettimeofday_args
136 if test "$ac_gettimeofday_args" = 1 ; then
137   AC_DEFINE(HAVE_GETTIMEOFDAY)
138   AC_MSG_RESULT(one argument)
139 elif test "$ac_gettimeofday_args" = 2 ; then
140   AC_DEFINE(HAVE_GETTIMEOFDAY)
141   AC_DEFINE(GETTIMEOFDAY_TWO_ARGS)
142   AC_MSG_RESULT(two arguments)
143 else
144   AC_MSG_RESULT(unknown)
145 fi
146
147
148 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv)
149 AC_CHECK_FUNCS(sigaction syslog)
150
151 AC_CHECK_HEADERS(unistd.h crypt.h sys/select.h)
152
153 dnl     /usr/local/src/ssh-1.2.17/putenv.c -- AC_REPLACE_FUNCS(putenv)
154
155
156 AC_ARG_ENABLE(subdir,[
157 Installation options:
158
159   --enable-subdir=DIR     Put the demo programs in a subdirectory of \`bindir',
160                           instead of putting them in bindir itself.  You can
161                           specify the name of the subdirectory.  For example,
162                           --exec-prefix=/usr/local/bin --enable-subdir=demos
163                           would put xscreensaver in /usr/local/bin/, and would
164                           put the demos in /usr/local/bin/demos/.  (If DIR
165                           begins with /, then bindir will not be prepended.)
166
167   --disable-subdir        Just put the demos in \`bindir' (this is the default.)
168 ],
169   [enable_subdir="$enableval"],[enable_subdir=no])
170 if test x"$enable_subdir" = xno; then
171   HACKDIR='${bindir}'
172 elif test x"$enable_subdir" = xyes -o x"$enable_subdir" = x ; then
173   echo "error: must be a subdirectory name: --enable-subdir=$enable_subdir"
174   exit 1
175 else
176   # there must be a better way than this...
177   if test -z "`echo $enable_subdir | sed 's@^/.*@@'`" ; then
178     # absolute path
179     HACKDIR=$enable_subdir
180   else
181     # relative path
182     HACKDIR='${bindir}/'$enable_subdir
183   fi
184 fi
185
186 # canonicalize slashes.
187 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
188
189
190 AC_PATH_XTRA
191
192 if test "$have_x" != yes; then
193   AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try \`$0 --help'.)
194 fi
195
196
197 # Try and find the app-defaults directory.
198 # It sucks that autoconf doesn't do this already...
199 #
200 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,[
201   rm -fr conftestdir
202   if mkdir conftestdir; then
203     cd conftestdir >&-
204     # Make sure to not put "make" in the Imakefile rules, since we grep it out.
205     cat > Imakefile <<'EOF'
206 acfindx:
207         @echo 'ac_x_app_defaults="${XAPPLOADDIR}"'
208 EOF
209     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
210       # GNU make sometimes prints "make[1]: Entering...", which'd confuse us.
211       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
212     fi
213     cd .. >&-
214     rm -fr conftestdir
215   fi])
216
217 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
218   # Look for the directory under a standard set of common directories.
219   # Check X11 before X11Rn because it's often a symlink to the current release.
220   for ac_dir in                                 \
221     /usr/X11/lib/app-defaults                   \
222     /usr/X11R6/lib/app-defaults                 \
223     /usr/X11R6/lib/X11/app-defaults             \
224     /usr/X11R5/lib/app-defaults                 \
225     /usr/X11R5/lib/X11/app-defaults             \
226     /usr/X11R4/lib/app-defaults                 \
227     /usr/X11R4/lib/X11/app-defaults             \
228                                                 \
229     /usr/lib/X11/app-defaults                   \
230     /usr/lib/X11R6/app-defaults                 \
231     /usr/lib/X11R5/app-defaults                 \
232     /usr/lib/X11R4/app-defaults                 \
233                                                 \
234     /usr/local/X11/lib/app-defaults             \
235     /usr/local/X11R6/lib/app-defaults           \
236     /usr/local/X11R5/lib/app-defaults           \
237     /usr/local/X11R4/lib/app-defaults           \
238                                                 \
239     /usr/local/lib/X11/app-defaults             \
240     /usr/local/lib/X11R6/app-defaults           \
241     /usr/local/lib/X11R6/X11/app-defaults       \
242     /usr/local/lib/X11R5/app-defaults           \
243     /usr/local/lib/X11R5/X11/app-defaults       \
244     /usr/local/lib/X11R4/app-defaults           \
245     /usr/local/lib/X11R4/X11/app-defaults       \
246                                                 \
247     /usr/X386/lib/X11/app-defaults              \
248     /usr/x386/lib/X11/app-defaults              \
249     /usr/XFree86/lib/X11/app-defaults           \
250                                                 \
251     /usr/lib/X11/app-defaults                   \
252     /usr/local/lib/X11/app-defaults             \
253     /usr/unsupported/lib/X11/app-defaults       \
254     /usr/athena/lib/X11/app-defaults            \
255     /usr/local/x11r5/lib/X11/app-defaults       \
256     /usr/lpp/Xamples/lib/X11/app-defaults       \
257     /lib/usr/lib/X11/app-defaults               \
258                                                 \
259     /usr/openwin/lib/app-defaults               \
260     /usr/openwin/lib/X11/app-defaults           \
261     /usr/openwin/share/lib/app-defaults         \
262     /usr/openwin/share/lib/X11/app-defaults     \
263                                                 \
264     /X11R6/lib/app-defaults                     \
265     /X11R5/lib/app-defaults                     \
266     /X11R4/lib/app-defaults                     \
267     ; \
268   do
269     if test -d "$ac_dir"; then
270       ac_x_app_defaults=$ac_dir
271       break
272     fi
273   done
274 ])
275
276
277 AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
278   [AC_REQUIRE_CPP()
279     AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
280      [AC_PATH_X_APP_DEFAULTS_XMKMF
281       if test x"$ac_x_app_defaults" = x; then
282         AC_PATH_X_APP_DEFAULTS_DIRECT
283       fi
284       if test x"$ac_x_app_defaults" = x; then
285         ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
286       else
287         # Record where we found app-defaults for the cache.
288         ac_cv_x_app_defaults="$ac_x_app_defaults"
289       fi])
290     eval ac_x_app_defaults="$ac_cv_x_app_defaults"])
291
292 AC_PATH_X_APP_DEFAULTS
293
294 APPDEFAULTS=$ac_x_app_defaults
295
296
297 # Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
298 #
299 AC_DEFUN(AC_CHECK_X_HEADER, [
300   ac_save_CPPFLAGS="$CPPFLAGS"
301   if test \! -z "$includedir" ; then 
302     CPPFLAGS="$CPPFLAGS -I$includedir"
303   fi
304   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
305   AC_CHECK_HEADER([$1], [$2])
306   CPPFLAGS="$ac_save_CPPFLAGS"])
307
308 # Like AC_EGREP_HEADER, but it uses the already-computed -I directories.
309 #
310 AC_DEFUN(AC_EGREP_X_HEADER, [
311   ac_save_CPPFLAGS="$CPPFLAGS"
312   if test \! -z "$includedir" ; then 
313     CPPFLAGS="$CPPFLAGS -I$includedir"
314   fi
315   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
316   AC_EGREP_HEADER([$1], [$2], [$3], [$4])
317   CPPFLAGS="$ac_save_CPPFLAGS"])
318
319 # Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
320 #
321 AC_DEFUN(AC_TRY_X_COMPILE, [
322   ac_save_CPPFLAGS="$CPPFLAGS"
323   if test \! -z "$includedir" ; then 
324     CPPFLAGS="$CPPFLAGS -I$includedir"
325   fi
326   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
327   AC_TRY_COMPILE([$1], [$2], [$3], [$4])
328   CPPFLAGS="$ac_save_CPPFLAGS"])
329
330
331 # Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
332 # Use this sparingly; it probably doesn't work very well on X programs.
333 #
334 AC_DEFUN(AC_CHECK_X_LIB, [
335   ac_save_CPPFLAGS="$CPPFLAGS"
336   ac_save_LDFLAGS="$LDFLAGS"
337
338   if test \! -z "$includedir" ; then 
339     CPPFLAGS="$CPPFLAGS -I$includedir"
340   fi
341   # note: $X_CFLAGS includes $x_includes
342   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
343
344   if test \! -z "$libdir" ; then
345     LDFLAGS="$LDFLAGS -L$libdir"
346   fi
347   # note: $X_LIBS includes $x_libraries
348   LDFLAGS="$LDFLAGS $X_LIBS"
349
350   AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
351   CPPFLAGS="$ac_save_CPPFLAGS"
352   LDFLAGS="$ac_save_LDFLAGS"])
353
354 # Like AC_TRY_RUN, but it uses the already-computed -I directories.
355 # (But not the -L directories!)
356 #
357 AC_DEFUN(AC_TRY_X_RUN, [
358   ac_save_CPPFLAGS="$CPPFLAGS"
359   if test \! -z "$includedir" ; then 
360     CPPFLAGS="$CPPFLAGS -I$includedir"
361   fi
362   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
363   AC_TRY_RUN([$1], [$2], [$3], [$4])
364   CPPFLAGS="$ac_save_CPPFLAGS"])
365
366
367
368 # Usage: HANDLE_X_PATH_ARG([variable_name],
369 #                          [--command-line-option],
370 #                          [descriptive string])
371 #
372 # All of the --with options take three forms:
373 #
374 #   --with-foo (or --with-foo=yes)
375 #   --without-foo (or --with-foo=no)
376 #   --with-foo=/DIR
377 #
378 # This function, HANDLE_X_PATH_ARG, deals with the /DIR case.  When it sees
379 # a directory (string beginning with a slash) it checks to see whether
380 # /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
381 # as appropriate.
382 #
383 AC_DEFUN(HANDLE_X_PATH_ARG, [
384    case "$[$1]" in
385     yes) ;;
386     no)  ;;
387
388     /*)
389      AC_MSG_CHECKING([for [$3] headers])
390      d=$[$1]/include
391      if test -d $d; then
392        X_CFLAGS="-I$d $X_CFLAGS"
393        AC_MSG_RESULT($d)
394      else
395        AC_MSG_RESULT(not found ($d: no such directory))
396      fi
397
398      AC_MSG_CHECKING([for [$3] libs])
399      d=$[$1]/lib
400      if test -d $d; then
401        X_LIBS="-L$d $X_LIBS"
402        AC_MSG_RESULT($d)
403      else
404        AC_MSG_RESULT(not found ($d: no such directory))
405      fi
406
407      # replace the directory string with "yes".
408      [$1]_req="yes"
409      [$1]=$[$1]_req
410      ;;
411
412     *)
413      echo ""
414      echo "error: argument to [$2] must be \"yes\", \"no\", or a directory."
415      echo "       If it is a directory, then \`DIR/include' will be added to"
416      echo "       the -I list, and \`DIR/lib' will be added to the -L list."
417      exit 1
418      ;;
419    esac
420
421    # why is this necessary?
422    # if we don't do this, then "./configure --with-motif=/usr/local/lesstif"
423    # behaves as if "--with-zippy=/usr/local/lesstif" was also present!
424    withval=
425   ])
426
427
428
429 # check for the HP XHPDisableReset server extension headers.
430 #
431 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
432                   [AC_DEFINE(HAVE_XHPDISABLERESET)
433                    SAVER_LIBS="-lXhp11 $SAVER_LIBS"])
434
435
436 # Check for the availability of the XPointer typedef, and define it otherwise.
437 #
438 AC_CACHE_CHECK([for XPointer], ac_cv_xpointer,
439                 [AC_TRY_X_COMPILE([#include <X11/Xlib.h>],
440                                   [XPointer foo = (XPointer) 0;],
441                                   [ac_cv_xpointer=yes],
442                                   [ac_cv_xpointer=no])])
443 if test "$ac_cv_xpointer" != yes; then
444   AC_DEFINE(XPointer,[char*])
445 fi
446
447
448 # Random special-cases for certain pathological OSes.  You know who you are.
449 #
450 case "$host" in
451   *-hpux*)
452
453     # The following arcana was gleaned from conversations with
454     # Eric Schwartz <erics@col.hp.com>:
455     #
456     # On HPUX 10.x, the parts of X that HP considers "standard" live in
457     # /usr/{include,lib}/X11R6/.  The parts that HP doesn't consider
458     # "standard", notably, Xaw and Xmu, live in /usr/contrib/X11R6/.
459     # Also, there are symlinks from /usr/include/ and /usr/lib/ into
460     # /usr/{include,lib}/X11R6/, so that (if you don't use Xmu at all)
461     # you don't need any -I or -L arguments.
462     #
463     # On HPUX 9.x, /usr/{include,lib}/X11R5/ and /usr/contrib/X11R5/
464     # are the same division as 10.x.  However, there are no symlinks to
465     # the X stuff from /usr/include/ and /usr/lib/, so -I and -L
466     # arguments are always necessary.
467     #
468     # However, X11R6 was available on HPUX 9.x as a patch: if that
469     # patch was installed, then all of X11R6 went in to
470     # /usr/contrib/X11R6/ (there was no /usr/{include,lib}/X11R6/.)
471     #
472     # HPUX 8.x was the same as 9.x, but was X11R4 instead (I don't know
473     # whether R5 was available as a patch; R6 undoubtedly was not.)
474     #
475     # So.  We try and use the highest numbered pair of
476     # /usr/{include,lib}/X11R?/ and /usr/contrib/X11R?/{include,lib}/
477     # that are available.  We do not mix and match different versions
478     # of X.
479     #
480     # Questions I still don't know the answers to: (do you?)
481     #
482     #   * Does HPUX 10.x come with /usr/contrib/X11R6/ standard?  
483     #     Or does that need to be installed separately?
484     #
485     #   * On HPUX 9.x, where /usr/include/X11R5/ was standard, and
486     #     /usr/contrib/X11R6/ could be installed as a patch, what was in
487     #     that contrib directory?  Did it contain so-called "standard"
488     #     X11R6, or did it include Xaw and Xmu as well?  If the former,
489     #     where did one find Xaw and Xmu on 9.x R6 systems?  Would this
490     #     be a situation where one had to reach into the R5 headers and
491     #     libs to find Xmu?  That is, must both R6 and R5 directories
492     #     be on the -I and -L lists in that case?
493     #
494     for version in X11R6 X11R5 X11R4 ; do
495       # if either pair of directories exists...
496       if test -d /usr/lib/$version || test -d /usr/contrib/$version/lib ; then
497          # if contrib exists, use it...
498          if test -d /usr/contrib/$version/lib ; then
499            X_CFLAGS="$X_CFLAGS -I/usr/contrib/$version/include"
500            X_LIBS="$X_LIBS -L/usr/contrib/$version/lib"
501          fi
502          # if the "standard" one exists, use it.
503          if test -d /usr/lib/$version ; then
504            X_CFLAGS="$X_CFLAGS -I/usr/include/$version"
505            X_LIBS="$X_LIBS -L/usr/lib/$version"
506          fi
507          # since at least one of the pair exists, go no farther.
508          break
509       fi
510     done
511
512     # Now find Motif.  Thanks for not making xmkmf find this by
513     # default, you losers.
514     #
515     if test -d /usr/lib/Motif1.2 ; then
516       X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.2"
517       X_LIBS="$X_LIBS -L/usr/lib/Motif1.2"
518     elif test -d /usr/lib/Motif1.1 ; then
519       X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.1"
520       X_LIBS="$X_LIBS -L/usr/lib/Motif1.1"
521     fi
522
523     # Now let's check for the pseudo-standard locations for OpenGL and XPM.
524     #
525     if test -d /opt/Mesa/lib ; then
526       X_CFLAGS="-I/opt/Mesa/include $X_CFLAGS"
527       X_LIBS="-L/opt/Mesa/lib $X_LIBS"
528     fi
529
530     if test -d /opt/xpm/lib/X11 ; then
531       X_CFLAGS="-I/opt/xpm/include $X_CFLAGS"
532       X_LIBS="-L/opt/xpm/lib/X11 $X_LIBS"
533     fi
534
535     # On HPUX, default to installing in /opt/xscreensaver/ instead of
536     # in /usr/local/, unless there is already an xscreensaver in
537     # /usr/local/bin/.  This can be overridden with the --prefix arg
538     # to configure.  I'm not sure this is the right thing to do, but
539     # Richard Lloyd says so...
540     #
541     if test \! -x /usr/local/bin/xscreensaver ; then
542       ac_default_prefix=/opt/xscreensaver
543     fi
544
545   ;;
546   *-solaris*)
547
548     # Thanks for not making xmkmf find this by default, pinheads.
549     # And thanks for moving things around again, too.  Is this
550     # really the standard location now?  What happened to the
551     # joke that this kind of thing went in /opt?
552     # cthomp says "answer: CDE (Common Disorganized Environment)"
553     #
554     if test -f /usr/dt/include/Xm/Xm.h ; then
555       X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
556       X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib"
557
558       # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
559       AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"])
560     fi
561   ;;
562 esac
563
564
565
566 # Check for Xmu (some fucked up vendors don't ship it...)
567 #
568 have_xmu=no
569 AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes])
570 if test "$have_xmu" = no ; then
571   XMU_SRCS='$(UTILS_SRC)/xmu.c'
572   XMU_OBJS='$(UTILS_BIN)/xmu.o'
573 else
574   XMU_SRCS=''
575   XMU_OBJS=''
576   SAVER_LIBS="-lXmu $SAVER_LIBS"
577   HACK_LIBS="-lXmu $HACK_LIBS"
578   TOOLKIT_LIBS="-lXmu $TOOLKIT_LIBS"
579   AC_DEFINE(HAVE_XMU)
580 fi
581
582
583 # See comp.windows.x FAQ question 124 about _get_wmShellWidgetClass on 4.1.x.
584 # The right fix is to get OpenWindows 3.0 patches 100512-02 and 100573-03.
585 #
586 if test "$have_xmu" = yes ; then
587   case "$host" in
588     *-sunos4*)
589     AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
590                    ac_cv_sunos_xmu_bug,
591                    [ac_save_LDFLAGS="$LDFLAGS"
592                     if test \! -z "$x_libraries" ; then
593                       LDFLAGS="$LDFLAGS -L$x_libraries"
594                     fi
595                     # Note: this trick never works!  (Generally.)
596                     # We're only getting away with using AC_TRY_LINK
597                     # with X libraries because we know it's SunOS.
598                     LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
599                     AC_TRY_LINK(,,
600                                 [ac_cv_sunos_xmu_bug=no],
601                                 [ac_cv_sunos_xmu_bug=yes])
602                     LDFLAGS="$ac_save_LDFLAGS"])
603     if test "$ac_cv_sunos_xmu_bug" = yes ; then
604       AC_CACHE_CHECK([whether the compiler understands -static], 
605                      ac_cv_ld_static,
606                      [ac_save_LDFLAGS="$LDFLAGS"
607                       LDFLAGS="$LDFLAGS -static"
608                       AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
609                     LDFLAGS="$ac_save_LDFLAGS"])
610       if test "$ac_cv_ld_static" = yes ; then
611         LDFLAGS="$LDFLAGS -static"
612       else
613         LDFLAGS="$LDFLAGS -Bstatic"
614       fi
615     fi
616     ;;
617   esac
618 fi
619
620
621 # Check for the SGI SCREEN_SAVER server extension header.
622 #
623 have_sgi=no
624 with_sgi_req=unspecified
625 AC_ARG_WITH(sgi-ext,
626 [Except where noted, all of the --with options below can also take a
627 directory argument: for example, --with-motif=/opt/Motif.  That would
628 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
629 to be added to the -L list, assuming those directories exist.
630
631 X Server Extension options:
632
633   --with-sgi-ext          Include support for the SGI SCREEN_SAVER
634                           server extension, if possible (this is the default).
635   --without-sgi-ext       Do not compile in support for this extension.],
636   [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
637
638 HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
639
640 if test "$with_sgi" = yes; then
641   AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
642                     [have_sgi=yes
643                      AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)])
644
645 elif test "$with_sgi" != no; then
646   echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
647   exit 1
648 fi
649
650 # Check for the MIT-SCREEN-SAVER server extension header,
651 # unless the SGI extension has already been found.
652 #
653 have_mit=no
654 with_mit_req=unspecified
655 AC_ARG_WITH(mit-ext,
656 [  --with-mit-ext          Include support for the MIT-SCREEN-SAVER
657                           server extension, if possible (this is the default).
658   --without-mit-ext       Do not compile in support for this extension.],
659   [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
660
661 HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER)
662
663 if test "$have_sgi" != yes; then
664   if test "$with_mit" = yes; then
665     AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes])
666
667     # Now check to see if it's really in the library; XF86Free-3.3 ships
668     # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
669     #
670     if test "$have_mit" = yes; then
671       AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [], [have_mit=no], -lm)
672
673       if test "$have_mit" = no; then
674         # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
675         # of in Xext.  Thank you master, may I have another.
676         AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
677                        [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"],
678                        [], -lX11 -lXext -lm)
679       fi
680
681       if test "$have_mit" = no; then
682         # Double fuck!  Looks like some versions of XFree86 (whichever version
683         # it is that comes with RedHat Linux 2.0 -- I can't find a version 
684         # number) put this garbage in Xss instead of Xext.  Thank you master,
685         #  may I have another.
686         AC_CHECK_X_LIB(Xss, XScreenSaverRegister,
687                        [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"],
688                        [], -lX11 -lXext -lm)
689       fi
690
691     if test "$have_mit" = yes; then
692       AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
693     fi
694
695     fi
696
697   elif test "$with_mit" != no; then
698     echo "error: must be yes or no: --with-mit-ext=$with_mit"
699     exit 1
700   fi
701 fi
702
703
704 # Check for the XIDLE server extension header.
705 #
706 have_xidle=no
707 with_xidle_req=unspecified
708 AC_ARG_WITH(xidle-ext,
709 [  --with-xidle-ext        Include support for the XIDLE server extension,
710                           if possible (this is the default).
711   --without-xidle-ext     Do not compile in support for this extension.],
712   [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
713
714 HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
715
716 if test "$with_xidle" = yes; then
717   AC_CHECK_X_HEADER(X11/extensions/xidle.h,
718                     [have_xidle=yes
719                      AC_DEFINE(HAVE_XIDLE_EXTENSION)])
720 elif test "$with_xidle" != no; then
721   echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
722   exit 1
723 fi
724
725
726 # Check for the XSHM server extension header.
727 #
728 have_xshm=no
729 with_xshm_req=unspecified
730 AC_ARG_WITH(xshm-ext,
731 [  --with-xshm-ext         Include support for the XSHM (Shared Memory) server
732                           extension, if possible (this is the default).
733   --without-xshm-ext      Do not compile in support for this extension.],
734   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
735
736 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
737
738 if test "$with_xshm" = yes; then
739
740   # first check for Xshm.h.
741   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes])
742
743   # if that succeeded, then check for sys/ipc.h.
744   if test "$have_xshm" = yes; then
745     have_xshm=no
746     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
747   fi
748
749   # if that succeeded, then check for sys/shm.h.
750   if test "$have_xshm" = yes; then
751     have_xshm=no
752     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
753   fi
754
755   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
756   # to exist, but the library code to not exist.  And even better, the library
757   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
758   # lib doesn't exist, give up.
759   #
760   case "$host" in
761     *-aix*)
762       have_xshm=no
763       AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
764                      [have_xshm=yes; SAVER_LIBS="$SAVER_LIBS -lXextSam"],
765                        [], -lX11 -lXext -lm)
766     ;;
767   esac
768
769   # if that succeeded, then we've really got it.
770   if test "$have_xshm" = yes; then
771     AC_DEFINE(HAVE_XSHM_EXTENSION)
772   fi
773
774 elif test "$with_xshm" != no; then
775   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
776   exit 1
777 fi
778
779
780 # Check for the SGI-VIDEO-CONTROL server extension header.
781 #
782 have_sgivc=no
783 with_sgivc_req=unspecified
784 AC_ARG_WITH(sgivc-ext,
785 [  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL server
786                           extension, if possible (this is the default).
787   --without-sgivc-ext     Do not compile in support for this extension.],
788   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
789
790 HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
791
792 if test "$with_sgivc" = yes; then
793
794   # first check for XSGIvc.h
795   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes])
796
797   # if that succeeded, then check for the -lXsgivc
798   if test "$have_sgivc" = yes; then
799     have_sgivc=no
800     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
801                   [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [],
802                   -lXext -lX11)
803   fi
804
805   # if that succeeded, then we've really got it.
806   if test "$have_sgivc" = yes; then
807     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
808   fi
809
810 elif test "$with_sgivc" != no; then
811   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
812   exit 1
813 fi
814
815
816 # Check for the DPMS server extension header.
817 #
818 have_dpms=no
819 with_dpms_req=unspecified
820 AC_ARG_WITH(dpms-ext,
821 [  --with-dpms-ext         Include support for the DPMS server extension,
822                           if possible (this is the default).
823   --without-dpms-ext      Do not compile in support for this extension.],
824   [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
825
826 HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
827
828 if test "$with_dpms" = yes; then
829
830   # first check for dpms.h
831   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes])
832
833   # if that succeeded, then check for the -lXdpms
834   if test "$have_dpms" = yes; then
835     have_dpms=no
836     AC_CHECK_X_LIB(Xdpms, DPMSInfo,
837                   [have_dpms=yes; SAVER_LIBS="$SAVER_LIBS -lXdpms"], [],
838                   -lXext -lX11)
839   fi
840
841   # if that succeeded, then we've really got it.
842   if test "$have_dpms" = yes; then
843     AC_DEFINE(HAVE_DPMS_EXTENSION)
844   fi
845
846 elif test "$with_dpms" != no; then
847   echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
848   exit 1
849 fi
850
851
852 # Check for /proc/interrupts
853 #
854 have_proc_interrupts=no
855 with_proc_interrupts_req=unspecified
856 AC_ARG_WITH(proc-interrupts,
857 [  --with-proc-interrupts  Include support for consulting the /proc/interrupts
858                           file to notice keyboard activity, if possible.
859   --without-proc-interrupts   Do not compile in support for this method.],
860   [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
861   [with_proc_interrupts=yes])
862
863 if test "$with_proc_interrupts" = yes; then
864
865    AC_MSG_CHECKING(whether /proc/interrupts contains keyboard data)
866    AC_CACHE_VAL(ac_cv_have_proc_interrupts,
867     [ac_cv_have_proc_interrupts=no
868      if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
869        ac_cv_have_proc_interrupts=yes
870      fi
871     ])
872    have_proc_interrupts=$ac_cv_have_proc_interrupts
873
874   AC_MSG_RESULT($have_proc_interrupts)
875
876   if test "$have_proc_interrupts" = yes; then
877     AC_DEFINE(HAVE_PROC_INTERRUPTS)
878   fi
879
880 elif test "$with_proc_interrupts" != no; then
881   echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
882   exit 1
883 fi
884
885
886
887 # Check for Motif and Athena --with and --without arguments.
888 #
889 have_motif=no
890 have_athena=no
891 have_athena3d=no
892 with_motif_req=unspecified
893 with_athena_req=unspecified
894
895 AC_ARG_WITH(motif,[
896 X Client Toolkit options:
897
898   --with-motif            Use the Motif toolkit for the user interface, if
899                           possible (this is the default).
900   --without-motif         Do not use Motif.],
901   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
902
903 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
904
905 AC_ARG_WITH(athena,
906 [  --with-athena           Use the Athena toolkit for the user interface, if
907                           possible (this is the default if Motif isn't used.)
908   --without-athena        Do not use Athena.],
909   [with_athena="$withval"; with_athena_req="$withval"],[with_athena=no])
910
911 HANDLE_X_PATH_ARG(with_athena, --with-athena, Athena)
912
913 if test "$with_motif" != yes -a "$with_motif" != no ; then
914   echo "error: must be yes or no: --with-motif=$with_motif"
915   exit 1
916 fi
917
918 if test "$with_athena" != yes -a "$with_athena" != no ; then
919   echo "error: must be yes or no: --with-athena=$with_athena"
920   exit 1
921 fi
922
923
924 # Saying --without-motif is the same as saying --with-athena.
925 if test "$with_motif_req" = no ; then
926   with_athena_req=yes
927   with_athena=yes
928 fi
929
930 # Saying --without-athena is the same as saying --with-motif.
931 if test "$with_athena_req" = no ; then
932   with_motif_req=yes
933   with_motif=yes
934 fi
935
936 # Check for Motif and Athena headers.
937
938 check_motif() {
939   AC_CHECK_X_HEADER(Xm/Xm.h,
940                     [have_motif=yes
941                      AC_DEFINE(HAVE_MOTIF)
942                      TOOLKIT_LIBS="-lXm $TOOLKIT_LIBS"])
943 }
944
945 check_athena() {
946   have_athena=no
947   have_athena3d=no
948   AC_CHECK_X_HEADER(X11/Xaw/Dialog.h, [have_athena=yes])
949   if test "$have_athena" = yes; then
950     AC_CHECK_X_LIB(Xaw3d, Xaw3dComputeTopShadowRGB,
951                    [have_athena=yes; have_athena3d=yes], [],
952                    -lXt -lXmu -lXext -lX11)
953   fi
954
955   if test "$have_athena3d" = yes; then
956     TOOLKIT_LIBS="-lXaw3d $TOOLKIT_LIBS"
957   elif test "$have_athena" = yes; then
958     TOOLKIT_LIBS="-lXaw $TOOLKIT_LIBS"
959   fi
960 }
961
962
963 # If they asked for both motif and athena, check motif then athena.
964 # If they asked for only motif, check motif then athena.
965 # If they asked for only athena, check athena then motif.
966 # If they asked for neither, check motif then athena.
967
968 proselytize_motif=yes
969 if test "$with_motif" = yes; then
970   # asked for both, or for motif only
971   check_motif
972   if test "$have_motif" = yes; then
973     with_athena=no
974     with_athena_req=no
975   else
976     check_athena
977   fi
978
979 elif test "$with_athena" = yes; then
980   # asked for athena only
981   check_athena
982   if test "$have_athena" = yes; then
983     with_motif=no
984     proselytize_motif=no
985   else
986     check_motif
987   fi
988
989 else
990   # asked for neither
991   check_motif
992   if test "$have_motif" = yes; then
993     with_athena=no
994   else
995     check_athena
996   fi
997
998 fi
999
1000 if test "$have_motif" = yes; then
1001   proselytize_motif=no
1002 fi
1003
1004 # If we have Athena, check whether it's a version that includes
1005 # XawViewportSetCoordinates in Viewport.h (R3 (or R4?) don't.)
1006 if test "$have_athena" = yes ; then
1007   AC_CACHE_CHECK([for XawViewportSetCoordinates in Viewport.h], 
1008                  ac_cv_have_XawViewportSetCoordinates,
1009                  [ac_cv_have_XawViewportSetCoordinates=no
1010                   AC_EGREP_X_HEADER(XawViewportSetCoordinates, 
1011                                     X11/Xaw/Viewport.h,
1012                                     ac_cv_have_XawViewportSetCoordinates=yes)])
1013   if test "$ac_cv_have_XawViewportSetCoordinates" = yes ; then
1014     AC_DEFINE(HAVE_XawViewportSetCoordinates)
1015   fi
1016 fi
1017
1018
1019 # If we have Motif, check whether it's really LessTif.
1020 #
1021 have_lesstif=no
1022 if test "$have_motif" = yes ; then
1023   AC_CACHE_CHECK([whether Motif is really LessTif], 
1024                  ac_cv_have_lesstif,
1025                  [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
1026                                    [long vers = LesstifVersion;],
1027                                    [ac_cv_have_lesstif=yes],
1028                                    [ac_cv_have_lesstif=no])])
1029   have_lesstif=$ac_cv_have_lesstif
1030 fi
1031
1032 # don't cache these
1033 unset ac_cv_lesstif_version
1034 unset ac_cv_lesstif_version_string
1035
1036 lesstif_version=unknown
1037 lesstif_version_string=unknown
1038
1039 if test "$have_lesstif" = yes ; then
1040   ltv=unknown
1041   echo unknown > conftest-lt
1042   AC_CACHE_CHECK([LessTif version number],
1043                  ac_cv_lesstif_version_string,
1044       [AC_TRY_X_RUN([#include <stdio.h>
1045                      #include <Xm/Xm.h>
1046                      int main() {
1047                        FILE *f = fopen("conftest-lt", "w");
1048                        if (!f) exit(1);
1049                        fprintf(f, "%d %d.%d\n", LesstifVersion,
1050                           LESSTIF_VERSION, LESSTIF_REVISION);
1051                        fclose(f);
1052                        exit(0);
1053                      }],
1054                     [ltv=`cat conftest-lt`
1055                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
1056                      ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
1057                     [ac_cv_lesstif_version=unknown
1058                      ac_cv_lesstif_version_string=unknown],
1059                     [ac_cv_lesstif_version=unknown
1060                      ac_cv_lesstif_version_string=unknown])])
1061   rm -f conftest-lt
1062   lesstif_version=$ac_cv_lesstif_version
1063   lesstif_version_string=$ac_cv_lesstif_version_string
1064
1065 fi
1066
1067
1068 if test "$have_motif" = yes ; then
1069   mtv=unknown
1070   echo unknown > conftest-mt
1071   AC_CACHE_CHECK([Motif version number],
1072                  ac_cv_motif_version_string,
1073       [AC_TRY_X_RUN([#include <stdio.h>
1074                      #include <Xm/Xm.h>
1075                      int main() {
1076                        FILE *f = fopen("conftest-mt", "w");
1077                        if (!f) exit(1);
1078                        fprintf(f, "%d %d.%d\n", XmVersion,
1079                           XmVERSION, XmREVISION);
1080                        fclose(f);
1081                        exit(0);
1082                      }],
1083                     [mtv=`cat conftest-mt`
1084                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
1085                      ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
1086                     [ac_cv_motif_version=unknown
1087                      ac_cv_motif_version_string=unknown],
1088                     [ac_cv_motif_version=unknown
1089                      ac_cv_motif_version_string=unknown])])
1090   rm -f conftest-mt
1091   motif_version=$ac_cv_motif_version
1092   motif_version_string=$ac_cv_motif_version_string
1093
1094 fi
1095
1096
1097 # If this is Motif 2.x, and we have XPM, then link against XPM as well.
1098 # The deal is, Motif 2.x requires XPM -- but it's a compilation option of
1099 # the library whether to build the XPM code into libXm, or whether to rely
1100 # on an external libXm.  So the only way to tell whether XPM is a link-time
1101 # requirement is to examine libXm.a, which is very difficult to do in an
1102 # autoconf script.  So... if it's Motif 2.x, we always link against XPM if
1103 # the XPM lib exists (and this will be a no-op if libXm happens to already
1104 # have the XPM code in it.)
1105 #
1106 motif_requires_xpm=no
1107 if test "$have_motif" = yes ; then
1108    AC_MSG_CHECKING(whether Motif requires XPM)
1109    if test "$motif_version" -ge 2000; then
1110      motif_requires_xpm=yes
1111      AC_MSG_RESULT(maybe)
1112    else
1113      AC_MSG_RESULT(no)
1114    fi
1115 fi
1116
1117
1118
1119 # Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
1120 # Extension".   Why this extension isn't in -lXext with all the others,
1121 # I have no idea.
1122 #
1123 have_xp_ext=no
1124 if test "$have_motif" = yes ; then
1125    have_xp_ext=no
1126    AC_CHECK_X_LIB(Xp, XpQueryExtension,
1127                   [have_xp_ext=yes; TOOLKIT_LIBS="$TOOLKIT_LIBS -lXp"],
1128                   [], -lX11 -lXext -lm)
1129 fi
1130
1131
1132 # Check for _Xsetlocale in -lXintl, since at least some recent versions
1133 # of Motif (on Linux) need it.
1134 #
1135 have_xintl=no
1136 if test "$have_motif" = yes ; then
1137   AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
1138                  -lX11 -lXext -lm)
1139   if test "$have_xintl" = yes; then
1140     TOOLKIT_LIBS="$TOOLKIT_LIBS -lXintl"
1141   fi
1142 fi
1143
1144
1145 # check for XPM header.
1146 #
1147 have_xpm=no
1148 with_xpm_req=unspecified
1149 AC_ARG_WITH(xpm,[
1150 Graphics Demo options:
1151
1152   --with-xpm              Include support for XPM files in some demos,
1153                           if possible (this is the default).
1154   --without-xpm           Do not compile in support for XPM files.],
1155   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
1156
1157 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
1158
1159 if test "$with_xpm" = yes; then
1160   AC_CHECK_X_HEADER(X11/xpm.h,
1161                    [have_xpm=yes
1162                     AC_DEFINE(HAVE_XPM)
1163                     XPM_LIBS="-lXpm"])
1164 elif test "$with_xpm" != no; then
1165   echo "error: must be yes or no: --with-xpm=$with_xpm"
1166   exit 1
1167 fi
1168
1169 # See comment near $motif_requires_xpm, above.
1170 # Need to do this here, after both Motif and XPM have been checked for.
1171 #
1172 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
1173   if test "$motif_requires_xpm" = yes ; then
1174     TOOLKIT_LIBS="$TOOLKIT_LIBS $XPM_LIBS"
1175   fi
1176 fi
1177
1178
1179 # check for the GL header
1180 #
1181 have_gl=no
1182 ac_have_mesa_gl=no
1183 with_gl_req=unspecified
1184 AC_ARG_WITH(gl,
1185 [  --with-gl               Build those demos which depend on OpenGL,
1186                           if possible (this is the default).
1187   --without-gl            Do not build the OpenGL demos.],
1188   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
1189
1190 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
1191
1192 ac_mesagl_version=unknown
1193 ac_mesagl_version_string=unknown
1194
1195 if test "$with_gl" = yes; then
1196   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
1197   if test "$have_gl" = yes ; then
1198     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no)
1199   fi
1200
1201   # If we have the headers, try and figure out which vendor it's from.
1202   #
1203   if test "$have_gl" = yes ; then
1204
1205     AC_DEFINE(HAVE_GL)
1206
1207     # We need to know whether it's MesaGL so that we know which libraries
1208     # to link against.
1209     #
1210     AC_MSG_CHECKING(whether GL is really MesaGL)
1211     AC_CACHE_VAL(ac_cv_have_mesa_gl,
1212       [ac_cv_have_mesa_gl=no
1213        AC_EGREP_X_HEADER(Mesa, GL/glx.h, [ac_cv_have_mesa_gl=yes])
1214       ])
1215     ac_have_mesa_gl=$ac_cv_have_mesa_gl
1216     AC_MSG_RESULT($ac_have_mesa_gl)
1217
1218     if test "$ac_have_mesa_gl" = no ; then
1219       gl_lib_1="GL"
1220       GL_LIBS="-lGL -lGLU"
1221     else
1222       AC_DEFINE(HAVE_MESA_GL)
1223       gl_lib_1="MesaGL"
1224       GL_LIBS="-lMesaGL -lMesaGLU"
1225     fi
1226
1227
1228     # If it's MesaGL, we'd like to issue a warning if the version number
1229     # is less than or equal to 2.6, because that version had a security bug.
1230     #
1231     if test "$ac_have_mesa_gl" = yes; then
1232
1233       # don't cache these.
1234       unset ac_cv_mesagl_version
1235       unset ac_cv_mesagl_version_string
1236
1237       AC_MSG_CHECKING(MesaGL version number)
1238       AC_CACHE_VAL(ac_cv_mesagl_version_string,
1239         [cat > conftest.$ac_ext <<EOF
1240 #line __oline__ "configure"
1241 #include "confdefs.h"
1242 #include <GL/gl.h>
1243 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
1244 EOF
1245
1246          ac_save_CPPFLAGS="$CPPFLAGS"
1247          if test \! -z "$includedir" ; then 
1248            CPPFLAGS="$CPPFLAGS -I$includedir"
1249          fi
1250          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1251
1252           # M4 sucks!!
1253          changequote(X,Y)
1254          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | sed -n \
1255               's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
1256          changequote([,])
1257
1258          rm -f conftest.$ac_ext
1259
1260          CPPFLAGS="$ac_save_CPPFLAGS"
1261
1262          if test "$mglv" = ""; then
1263            ac_mesagl_version=unknown
1264            ac_mesagl_version_string=unknown
1265          else
1266            ac_mesagl_version_string=$mglv
1267            maj=`echo $mglv | sed -n 's/\..*//p'`
1268            min=`echo $mglv | sed -n 's/.*\.//p'`
1269            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
1270            if test -z "$ac_mesagl_version"; then
1271              ac_mesagl_version=unknown
1272              ac_mesagl_version_string=unknown
1273            fi
1274          fi
1275          ac_cv_mesagl_version=$ac_mesagl_version
1276          ac_cv_mesagl_version_string=$ac_mesagl_version_string
1277       ])
1278       ac_mesagl_version=$ac_cv_mesagl_version
1279       ac_mesagl_version_string=$ac_cv_mesagl_version_string
1280       AC_MSG_RESULT($ac_cv_mesagl_version_string)
1281     fi
1282
1283
1284     # If it's MesaGL, check to see if it requires -lpthread.
1285     #
1286     have_pthread=no
1287     mesa_requires_pthread=no
1288     if test "$ac_have_mesa_gl" = yes; then
1289
1290       AC_CHECK_LIB(pthread, pthread_create, [have_pthread=yes], [],)
1291       if test "$have_pthread" = yes; then
1292         AC_CHECK_X_LIB($gl_lib_1, gl_get_thread_context,
1293                        [mesa_requires_pthread=yes], [],
1294                        $GL_LIBS -lpthread -lX11 -lXext -lm)
1295       fi
1296
1297       if test "$mesa_requires_pthread" = yes; then
1298         GL_LIBS="$GL_LIBS -lpthread"
1299       fi
1300     fi
1301
1302     # Check for OpenGL 1.1 features.
1303     #
1304     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
1305                    [], $GL_LIBS -lX11 -lXext -lm)
1306
1307   fi
1308
1309 elif test "$with_gl" != no; then
1310   echo "error: must be yes or no: --with-gl=$with_gl"
1311   exit 1
1312 fi
1313
1314
1315 # check for SGI XReadDisplay server extension header.
1316 #
1317 have_readdisplay=no
1318 with_readdisplay_req=unspecified
1319 AC_ARG_WITH(readdisplay,
1320 [  --with-readdisplay      Include support for the XReadDisplay server
1321                           extension if possible (this is the default).
1322   --without-readdisplay   Do not compile in support for this extension.],
1323   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
1324   [with_readdisplay=yes])
1325
1326 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
1327
1328 if test "$with_readdisplay" = yes; then
1329   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
1330                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION))
1331 elif test "$with_readdisplay" != no; then
1332   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
1333   exit 1
1334 fi
1335
1336
1337 # check for SGI's Iris Video Library header.
1338 #
1339 have_sgivideo=no
1340 with_sgivideo_req=unspecified
1341 AC_ARG_WITH(sgivideo,
1342 [  --with-sgivideo         Include support for SGI's Iris Video Library
1343                           if possible (this is the default).
1344   --without-sgivideo       Do not compile in support for this library.],
1345   [with_sgivideo="$withval"; with_sgivideo_req="$withval"],
1346   [with_sgivideo=yes])
1347
1348 HANDLE_X_PATH_ARG(with_sgivideo, --with-sgivideo, Iris Video)
1349
1350 if test "$with_sgivideo" = yes; then
1351   AC_CHECK_X_HEADER(dmedia/vl.h, have_sgivideo=yes)
1352   if test "$have_sgivideo" = yes; then
1353     have_sgivideo=no
1354     AC_CHECK_LIB(vl, vlOpenVideo, have_sgivideo=yes)
1355     if test "$have_sgivideo" = yes; then
1356       SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o"
1357       SGI_VIDEO_LIBS="-lvl"
1358       AC_DEFINE(HAVE_SGI_VIDEO)
1359     fi
1360   fi
1361 elif test "$with_sgivideo" != no; then
1362   echo "error: must be yes or no: --with-sgivideo=$with_sgivideo"
1363   exit 1
1364 fi
1365
1366
1367
1368 # Try to find a program to generate random text.
1369 #
1370 # Zippy is funnier than the idiocy generally spat out by `fortune',
1371 # so try to find that, by invoking Emacs and asking it where its 
1372 # libexec directory is ("yow" lives in there.)
1373 #
1374 # If that doesn't work, see if fortune, zippy, or yow are on $PATH,
1375 # and if so, use them.
1376 #
1377 # If that doesn't work, look in /usr/games, and if it's there, use
1378 # the full pathname.
1379 #
1380 with_zippy_req=""
1381 AC_ARG_WITH(zippy,
1382 [  --with-zippy=PROGRAM    Some demos are able to run an external program and
1383                           display its text; this names the program to use by
1384                           default (though it can be overridden with X
1385                           resources.)  If you don't specify this, the default
1386                           is to use \"yow\" from the Emacs distribution (if you
1387                           have it) or else to use \"fortune\".],
1388   [ with_zippy_req="$withval"; with_zippy="$withval" ],
1389   [ with_zippy_req="$withval"; with_zippy="$withval" ])
1390
1391 if test "$with_zippy" = no || test "$with_zippy" = yes ; then
1392   with_zippy=""
1393   with_zippy_req=""
1394 fi
1395
1396 if test -n "$with_zippy_req" ; then
1397   ac_cv_zippy_program=""
1398   case "$with_zippy_req" in
1399     /*)
1400       AC_MSG_CHECKING([for $with_zippy_req])
1401       if test -x "$with_zippy_req" ; then
1402         AC_MSG_RESULT(yes)
1403       else
1404         AC_MSG_RESULT(no)
1405         with_zippy=""
1406       fi
1407     ;;
1408     *)
1409       # don't cache
1410       unset ac_cv_path_zip2
1411       AC_PATH_PROG(zip2, $with_zippy_req, [])
1412       if test "$zip2" = ""; then
1413         with_zippy=""
1414       fi
1415     ;;
1416   esac
1417   ac_cv_zippy_program="$with_zippy"
1418
1419 elif test -n "$ac_cv_zippy_program"; then
1420   AC_MSG_RESULT([checking for zippy... (cached) $ac_cv_zippy_program])
1421 fi
1422
1423 if test ! -n "$ac_cv_zippy_program"; then
1424
1425   AC_CHECK_PROGS(emacs_exe, emacs)
1426   AC_CHECK_PROGS(xemacs_exe, xemacs)
1427
1428   ac_cv_zippy_program=""
1429   eargs='-batch -q -nw --eval'
1430
1431   if test -n "$emacs_exe" ; then
1432     AC_MSG_CHECKING([for emacs yow])
1433     #
1434     # get emacs to tell us where the libexec directory is.
1435     #
1436     dir=`$emacs_exe $eargs '(princ (concat exec-directory "\n"))' \
1437          2>/dev/null | tail -1`
1438     dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
1439     #
1440     # try running libexec/yow and see if it exits without error.
1441     #
1442     if test x"$dir" != x -a -x "$dir/yow" ; then
1443       if $dir/yow >&- 2>&- ; then
1444         ac_cv_zippy_program="$dir/yow"
1445         AC_MSG_RESULT($ac_cv_zippy_program)
1446       else
1447         AC_MSG_RESULT(no)
1448       fi
1449     fi
1450   fi
1451
1452   if test -z "$ac_cv_zippy_program" ; then
1453     AC_MSG_CHECKING([for xemacs yow])
1454     if test -n "$xemacs_exe" ; then
1455       #
1456       # get xemacs to tell us where the libexec directory is.
1457       #
1458       dir=`$xemacs_exe $eargs '(princ (concat exec-directory "\n"))' \
1459            2>/dev/null | tail -1`
1460       dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
1461       #
1462       # try running libexec/yow and see if it exits without error.
1463       #
1464       if test x"$dir" != x -a -x "$dir/yow" ; then
1465         if $dir/yow >&- 2>&- ; then
1466           ac_cv_zippy_program="$dir/yow"
1467           AC_MSG_RESULT($ac_cv_zippy_program)
1468         else
1469           #
1470           # in some xemacs installations, the pathname of the yow.lines file
1471           # isn't hardcoded into the yow executable, and must be passed on 
1472           # the command line.  See if it's in libexec/../etc/.
1473
1474           # M4 sucks!!
1475           changequote(X,Y)
1476           dir_up=`echo "$dir" | sed 's@/[^/]*$@@'`
1477           changequote([,])
1478
1479           yow="yow -f $dir_up/etc/yow.lines"
1480           if $dir/$yow >&- 2>&- ; then
1481             ac_cv_zippy_program="$dir/$yow"
1482             AC_MSG_RESULT($ac_cv_zippy_program)
1483           else
1484             AC_MSG_RESULT(no)
1485           fi
1486         fi
1487       fi
1488     fi
1489   fi
1490
1491   # if that didn't work, try for some other programs...
1492   if test -z "$ac_cv_zippy_program" ; then
1493     fortune=''
1494     AC_CHECK_PROGS(fortune, [fortune zippy yow])
1495     # if that didn't work, try for those programs in /usr/games...
1496     if test -z "$fortune" ; then
1497       AC_PATH_PROGS(fortune, [fortune zippy yow], fortune,
1498                     /usr/games:/usr/local/games)
1499     fi
1500   fi
1501 fi
1502
1503 if test -z "$ac_cv_zippy_program" ; then
1504   ac_cv_zippy_program=fortune
1505 fi
1506
1507 AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_program")
1508
1509
1510
1511
1512 # Allow locking to be disabled at compile-time.
1513 #
1514 have_kerberos=no
1515 with_kerberos_req=unspecified
1516 have_shadow=no
1517 with_shadow_req=unspecified
1518 have_pam=no
1519 with_pam_req=unspecified
1520 need_setuid=no
1521
1522 AC_ARG_ENABLE(locking,[
1523 Screen Locking options:
1524
1525   --enable-locking        Compile in support for locking the display
1526                           (this is the default.)
1527   --disable-locking       Do not allow locking at all.],
1528   [enable_locking="$enableval"],[enable_locking=yes])
1529 if test "$enable_locking" = yes; then
1530   true
1531 elif test "$enable_locking" = no; then
1532   AC_DEFINE(NO_LOCKING)
1533 else
1534   echo "error: must be yes or no: --enable-locking=$enable_locking"
1535   exit 1
1536 fi
1537
1538
1539
1540 # Check to see if we can lock Virtual-Terminal switching, but allow that 
1541 # to be disabled at compile-time.
1542 #
1543 ac_vt_lockswitch=no
1544 AC_ARG_ENABLE(vt-locking,[
1545   --enable-vt-locking     Compile in support for locking Virtual Terminals.
1546                           This is the default if the system supports it, and
1547                           if locking support is included (--enable-locking.)
1548   --disable-vt-locking    Do not allow locking of VTs, even if locking is
1549                           enabled.],
1550   [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
1551 if test "$enable_vt_locking" = yes; then
1552
1553   AC_MSG_CHECKING(for the VT_LOCKSWITCH ioctl)
1554   AC_CACHE_VAL(ac_cv_vt_lockswitch,
1555    [AC_TRY_COMPILE([#include <fcntl.h>
1556                     #include <sys/ioctl.h>
1557                     #include <sys/vt.h>],
1558                    [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
1559                    [ac_cv_vt_lockswitch=yes],
1560                    [ac_cv_vt_lockswitch=no])])
1561   ac_vt_lockswitch=$ac_cv_vt_lockswitch
1562   AC_MSG_RESULT($ac_vt_lockswitch)
1563
1564 elif test "$enable_vt_locking" = no; then
1565   true
1566 else
1567   echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
1568   exit 1
1569 fi
1570
1571 if test "$ac_vt_lockswitch" = yes; then
1572   AC_DEFINE(HAVE_VT_LOCKSWITCH)
1573   # the VT_LOCKSWITCH ioctl can only be used when running as root.
1574   # #### but it doesn't work yet, so don't worry about that for now.
1575 #  need_setuid=yes
1576 fi
1577
1578
1579
1580 if test "$enable_locking" = yes; then
1581
1582   # Check for Kerberos.
1583   #
1584   AC_ARG_WITH(kerberos, [
1585   --with-kerberos         Include support for Kerberos authentication,
1586                           if possible (this is the default.)
1587   --without-kerberos      Do not compile in support for Kerberos.],
1588   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
1589
1590   HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
1591
1592   if test "$with_kerberos" = yes; then
1593     AC_CACHE_CHECK([for Kerberos], ac_cv_kerberos,
1594                    [AC_TRY_X_COMPILE([#include <krb.h>],,
1595                                      [ac_cv_kerberos=yes],
1596                                      [ac_cv_kerberos=no])])
1597     if test "$ac_cv_kerberos" = yes ; then
1598       have_kerberos=yes
1599       AC_DEFINE(HAVE_KERBEROS)
1600
1601       # from Tim Showalter <tjs+@andrew.cmu.edu>
1602       PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes"
1603       AC_CHECK_FUNC(res_search,,
1604         AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
1605           AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
1606         ))
1607
1608     fi
1609   elif test "$with_kerberos" != no; then
1610     echo "error: must be yes or no: --with-kerberos=$with_kerberos"
1611     exit 1
1612   fi
1613   
1614   # Check for PAM.
1615   AC_ARG_WITH(pam,
1616 [  --with-pam              Include support for PAM (Pluggable Authentication
1617                           Modules) if possible (this is the default.)
1618   --without-pam           Do not compile in support for PAM.],
1619   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=no])
1620 #### Leave PAM off by default for now, since it's buggy on Solaris
1621 #### (and probably Linux, but it's so hard to tell...)
1622
1623   HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1624
1625   if test "$with_pam" = yes; then
1626     AC_CACHE_CHECK([for PAM], ac_cv_pam,
1627                    [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1628                                      [ac_cv_pam=yes],
1629                                      [ac_cv_pam=no])])
1630     if test "$ac_cv_pam" = yes ; then
1631           have_pam=yes
1632           AC_DEFINE(HAVE_PAM)
1633           PASSWD_LIBS="${PASSWD_LIBS} -lpam -ldl"
1634     fi
1635   elif test "$with_pam" != no; then
1636         echo "error: must be yes or no: --with-pam=$with_pam"
1637         exit 1
1638   fi
1639
1640   # Next, check for the nine billion variants of shadow passwords...
1641
1642   pwent_cruft_done=no
1643   AC_ARG_WITH(shadow,
1644 [  --with-shadow           Include support for shadow password authentication,
1645                           if possible (this is the default, if no Kerberos or
1646                           PAM.)
1647   --without-shadow        Do not compile in support for shadow passwords.
1648 ],
1649   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
1650
1651   HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
1652
1653   if test "$with_shadow" = no; then
1654     pwent_cruft_done=yes
1655   elif test "$with_shadow" != yes; then
1656     echo "error: must be yes or no: --with-shadow=$with_shadow"
1657     exit 1
1658   fi
1659
1660
1661   # Sun's "adjunct" passwords.
1662   #
1663   if test "$pwent_cruft_done" = no ; then
1664     AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
1665                    [AC_TRY_X_COMPILE([#include <stdlib.h>
1666                                       #include <unistd.h>
1667                                       #include <sys/types.h>
1668                                       #include <sys/label.h>
1669                                       #include <sys/audit.h>
1670                                       #include <pwdadj.h>],
1671                         [struct passwd_adjunct *p = getpwanam("nobody");
1672                          const char *pw = p->pwa_passwd;],
1673                         [ac_cv_sun_adjunct=yes],
1674                         [ac_cv_sun_adjunct=no])])
1675     if test "$ac_cv_sun_adjunct" = yes; then
1676       have_shadow=yes
1677       need_setuid=yes
1678       pwent_cruft_done=yes
1679       AC_DEFINE(HAVE_ADJUNCT_PASSWD)
1680     fi
1681   fi
1682
1683   # DEC and SCO so-called "enhanced" security.
1684   #
1685   if test "$pwent_cruft_done" = no ; then
1686     AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
1687                    [AC_TRY_X_COMPILE([#include <stdlib.h>
1688                                       #include <unistd.h>
1689                                       #include <sys/types.h>
1690                                       #include <pwd.h>
1691                                       #include <sys/security.h>
1692                                       #include <prot.h>],
1693                         [struct pr_passwd *p;
1694                          const char *pw;
1695                          set_auth_parameters(0, 0);
1696                          check_auth_parameters();
1697                          p = getprpwnam("nobody");
1698                          pw = p->ufld.fd_encrypt;],
1699                         [ac_cv_enhanced_passwd=yes],
1700                         [ac_cv_enhanced_passwd=no])])
1701     if test $ac_cv_enhanced_passwd = yes; then
1702       have_shadow=yes
1703       need_setuid=yes
1704       pwent_cruft_done=yes
1705       AC_DEFINE(HAVE_ENHANCED_PASSWD)
1706
1707       # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
1708       # (I'm told it needs -lcurses too, but I don't understand why.)
1709       AC_CHECK_LIB(prot, getprpwnam, 
1710                    [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
1711                    [# On DEC, getprpwnam() is in -lsecurity
1712                     AC_CHECK_LIB(security, getprpwnam, 
1713                                  [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
1714                    [-lx])
1715     fi
1716   fi
1717
1718   # HP's entry in the "Not Invented Here" Sweepstakes.
1719   #
1720   if test "$pwent_cruft_done" = no ; then
1721     AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
1722                    [AC_TRY_X_COMPILE([#include <stdlib.h>
1723                                       #include <unistd.h>
1724                                       #include <sys/types.h>
1725                                       #include <pwd.h>
1726                                       #include <hpsecurity.h>
1727                                       #include <prot.h>],
1728                         [struct s_passwd *p = getspwnam("nobody");
1729                          const char *pw = p->pw_passwd;],
1730                         [ac_cv_hpux_passwd=yes],
1731                         [ac_cv_hpux_passwd=no])])
1732     if test "$ac_cv_hpux_passwd" = yes; then
1733       have_shadow=yes
1734       need_setuid=yes
1735       pwent_cruft_done=yes
1736       AC_DEFINE(HAVE_HPUX_PASSWD)
1737
1738       # on HPUX, bigcrypt is in -lsec
1739       AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
1740     fi
1741   fi
1742
1743   # Traditional (ha!) shadow passwords.
1744   #
1745   if test "$pwent_cruft_done" = no ; then
1746     AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
1747                    [AC_TRY_X_COMPILE([#include <stdlib.h>
1748                                       #include <unistd.h>
1749                                       #include <sys/types.h>
1750                                       #include <pwd.h>
1751                                       #include <shadow.h>],
1752                         [struct spwd *p = getspnam("nobody");
1753                          const char *pw = p->sp_pwdp;],
1754                         [ac_cv_shadow=yes],
1755                         [ac_cv_shadow=no])])
1756     if test "$ac_cv_shadow" = yes; then
1757       have_shadow=yes
1758       need_setuid=yes
1759       pwent_cruft_done=yes
1760       AC_DEFINE(HAVE_SHADOW_PASSWD)
1761
1762       # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
1763       have_getspnam=no
1764       AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
1765       if test "$have_getspnam" = no ; then
1766         AC_CHECK_LIB(gen, getspnam,
1767                      [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
1768       fi
1769     fi
1770   fi
1771
1772   # On FreeBSD, getpwnam() and friends work just like on non-shadow-password
1773   # systems -- except you only get stuff in the pw_passwd field if the running
1774   # program is setuid.  So, guess that we've got this lossage to contend with
1775   # if /etc/master.passwd exists, and default to a setuid installation.
1776   #
1777   if test "$pwent_cruft_done" = no ; then
1778     AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
1779                    [if test -f /etc/master.passwd ; then
1780                       ac_cv_master_passwd=yes
1781                     else
1782                       ac_cv_master_passwd=no
1783                     fi])
1784     if test "$ac_cv_master_passwd" = yes; then
1785       need_setuid=yes
1786       pwent_cruft_done=yes
1787     fi
1788   fi
1789
1790   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
1791   have_crypt=no
1792   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
1793   if test "$have_crypt" = no ; then
1794     AC_CHECK_LIB(crypt, crypt,
1795                  [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1796   fi
1797
1798
1799   # Most of the above shadow mechanisms will have set need_setuid to yes,
1800   # if they were found.  But, on some systems, we need setuid even when
1801   # using plain old vanilla passwords.
1802   #
1803   if test "$need_setuid" = no ; then
1804     case "$host" in
1805       *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
1806         need_setuid=yes
1807       ;;
1808     esac
1809   fi
1810
1811 fi
1812
1813
1814 if test \! -z "$includedir" ; then 
1815   INCLUDES="-I$includedir"
1816 fi
1817
1818 if test \! -z "$libdir" ; then
1819   LDFLAGS="$LDFLAGS -L$libdir"
1820 fi
1821
1822
1823 ##### should have options to override the DEPEND crap, I guess...
1824 DEPEND=makedepend
1825 DEPEND_FLAGS=
1826 DEPEND_DEFINES=
1827
1828
1829 # Done testing things -- now substitute in some stuff for the Makefiles.
1830 #
1831 if test "$have_motif" = yes; then
1832   AC_DEFINE(HAVE_MOTIF)
1833   TOOLKIT_SRCS='$(MOTIF_SRCS)'
1834   TOOLKIT_OBJS='$(MOTIF_OBJS)'
1835 elif test "$have_athena" = yes; then
1836   AC_DEFINE(HAVE_ATHENA)
1837   TOOLKIT_SRCS='$(ATHENA_SRCS)'
1838   TOOLKIT_OBJS='$(ATHENA_OBJS)'
1839 else
1840   TOOLKIT_SRCS=''
1841   TOOLKIT_OBJS=''
1842 fi
1843
1844 if test "$have_kerberos" = yes; then
1845   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
1846   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
1847 fi
1848 if test "$have_pam" = yes; then
1849   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
1850   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
1851   INSTALL_PAM="install-pam"
1852 fi
1853   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
1854   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
1855
1856
1857 if test "$enable_locking" = yes; then
1858   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
1859   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
1860 else
1861   LOCK_SRCS=''
1862   LOCK_OBJS=''
1863 fi
1864
1865 if test "$need_setuid" = yes; then
1866   NEED_SETUID=yes
1867   INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)'
1868 else
1869   NEED_SETUID=no
1870   INSTALL_SETUID='$(INSTALL_PROGRAM)'
1871 fi
1872
1873 tab='   '
1874 if test "$have_gl" = yes; then
1875   GL_EXES='$(GL_EXES)'
1876   GL_KLUDGE=${tab}
1877 else
1878   GL_KLUDGE='  -'${tab}
1879 fi
1880
1881 AC_SUBST(INCLUDES)
1882
1883 AC_SUBST(SAVER_LIBS)
1884 AC_SUBST(TOOLKIT_LIBS)
1885 AC_SUBST(HACK_LIBS)
1886 AC_SUBST(XPM_LIBS)
1887 AC_SUBST(GL_LIBS)
1888 AC_SUBST(PASSWD_LIBS)
1889 AC_SUBST(INSTALL_SETUID)
1890 AC_SUBST(INSTALL_DIRS)
1891 AC_SUBST(NEED_SETUID)
1892 AC_SUBST(INSTALL_PAM)
1893 AC_SUBST(SGI_VIDEO_OBJS)
1894 AC_SUBST(SGI_VIDEO_LIBS)
1895
1896 AC_SUBST(TOOLKIT_SRCS)
1897 AC_SUBST(TOOLKIT_OBJS)
1898 AC_SUBST(PASSWD_SRCS)
1899 AC_SUBST(PASSWD_OBJS)
1900 AC_SUBST(XMU_SRCS)
1901 AC_SUBST(XMU_OBJS)
1902 AC_SUBST(LOCK_SRCS)
1903 AC_SUBST(LOCK_OBJS)
1904 AC_SUBST(GL_EXES)
1905 AC_SUBST(GL_KLUDGE)
1906 AC_SUBST(HACKDIR)
1907 AC_SUBST(APPDEFAULTS)
1908
1909 AC_SUBST(DEPEND)
1910 AC_SUBST(DEPEND_FLAGS)
1911 AC_SUBST(DEPEND_DEFINES)
1912
1913 # Print some warnings before emitting the Makefiles.
1914 #
1915 warn_prefix_1="    Warning:"
1916 warn_prefix_2="       Note:"
1917 warn_prefix="$warn_prefix_1"
1918
1919 warning=no
1920 warnsep='    #################################################################'
1921
1922 warnpre() {
1923   if test "$warning" = no ; then
1924     echo '' ; echo "$warnsep" ; echo ''
1925     warning=yes
1926   fi
1927 }
1928
1929 warn() {
1930   warnpre
1931   if test "$warning" = long ; then echo '' ; fi
1932   warning=yes
1933   echo "$warn_prefix $@"
1934 }
1935
1936 warnL() {
1937   was=$warning
1938   warnpre
1939   warning=yes
1940   if test "$was" != no ; then echo '' ; fi
1941   echo "$warn_prefix $@"
1942 }
1943
1944 warn2() {
1945   echo "             $@"
1946   warning=long
1947 }
1948
1949 note() {
1950   warn_prefix="$warn_prefix_2"
1951   warn $@
1952   warn_prefix="$warn_prefix_1"
1953 }
1954
1955 noteL() {
1956   warn_prefix="$warn_prefix_2"
1957   warnL $@
1958   warn_prefix="$warn_prefix_1"
1959 }
1960
1961
1962 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
1963   warn 'The SGI saver extension was requested, but was not found.'
1964 fi
1965
1966 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
1967   warn 'The MIT saver extension was requested, but was not found.'
1968 fi
1969
1970 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
1971   warn 'The XIdle extension was requested, but was not found.'
1972 fi
1973
1974 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
1975   warn 'The XSHM extension was requested, but was not found.'
1976 fi
1977
1978 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
1979   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
1980 fi
1981
1982 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
1983   warn 'The DPMS extension was requested, but was not found.'
1984 fi
1985
1986 if test "$have_motif" = no -a "$have_athena" = no ; then
1987   warnL "Neither Motif nor Athena widgets seem to be available;"
1988   warn2 "the \`xscreensaver-demo' program requires one or the"
1989   warn2 "other."
1990   proselytize_motif=no
1991
1992 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
1993   warnL "Use of Motif was requested, but it wasn't found;"
1994   warn2 "Athena will be used instead."
1995
1996 elif test "$with_athena_req" = yes -a "$have_athena" = no ; then
1997   warnL "Use of Athena was requested, but it wasn't found;"
1998   warn2 "Motif will be used instead."
1999 fi
2000
2001 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
2002
2003   preferred_lesstif=0.86
2004
2005   if test "$lesstif_version" = unknown; then
2006     warnL "Unable to determine the LessTif version number!"
2007     warn2 "Make sure you are using version $preferred_lesstif or newer."
2008     warn2 "See <http://www.lesstif.org/>."
2009
2010   elif test \! $lesstif_version -gt 82; then
2011     warnL "LessTif version $lesstif_version_string is being used."
2012     warn2 "LessTif versions 0.82 and earlier are too buggy to"
2013     warn2 "use with XScreenSaver; it is strongly recommended"
2014     warn2 "that you upgrade to at least version $preferred_lesstif!"
2015     warn2 "See <http://www.lesstif.org/>."
2016   fi
2017 fi
2018
2019 if test "$proselytize_motif" = yes ; then
2020     warnL "Athena widgets are being used instead of Motif."
2021     warn2 "The \`xscreensaver-demo' program looks much better"
2022     warn2 "with Motif.  Wouldn't you rather be using Motif?"
2023     warn2 "It is shipped by every commercial Unix vendor;"
2024     warn2 "and there is a free implementation available as"
2025     warn2 "well: see <http://www.lesstif.org/>."
2026 fi
2027
2028
2029 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
2030   preferred_mesagl=3.0
2031
2032   if test "$ac_mesagl_version" = unknown; then
2033     warnL "Unable to determine the MesaGL version number!"
2034     warn2 "Make sure you are using version $preferred_mesagl or newer."
2035
2036   elif test \! "$ac_mesagl_version" -gt 2006; then
2037     warnL "MesaGL version $ac_mesagl_version_string is being used."
2038     warn2 "MesaGL versions 2.6 and earlier have a security bug."
2039     warn2 "It is strongly recommended that you upgrade to at"
2040     warn2 "least version $preferred_mesagl."
2041   fi
2042 fi
2043
2044
2045 if test "$have_xpm" = no ; then
2046   if test "$with_xpm_req" = yes ; then
2047     warnL 'Use of XPM was requested, but it was not found.'
2048   elif test "$with_xpm_req" = no ; then
2049     noteL 'The XPM library is not being used.'
2050   else
2051     noteL 'The XPM library was not found.'
2052   fi
2053
2054   echo ''
2055   warn2 'Some of the demos will not be as colorful as they'
2056   warn2 'could be.  You might want to consider installing XPM'
2057   warn2 'and re-running configure.  (Remember to delete the'
2058   warn2 'config.cache file first.)  You can find XPM at most'
2059   warn2 'X11 archive sites, such as <http://sunsite.unc.edu/>.'
2060 fi
2061
2062 if test "$have_gl" = no ; then
2063   if test "$with_gl_req" = yes ; then
2064     warnL 'Use of GL was requested, but it was not found.'
2065   elif test "$with_gl_req" = no ; then
2066     noteL 'The OpenGL 3D library is not being used.'
2067   else
2068     noteL 'The OpenGL 3D library was not found.'
2069   fi
2070
2071   echo ''
2072   warn2 'Those demos which use 3D will not be built or installed.'
2073   warn2 'You might want to consider installing OpenGL and'
2074   warn2 're-running configure.  (Remember to delete the'
2075   warn2 "config.cache file first.)  If your vendor doesn't ship"
2076   warn2 'their own implementation of OpenGL, you can get a free'
2077   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
2078   warn2 'info, see <http://www.opengl.org/>.'
2079
2080 fi
2081
2082 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
2083   warn 'Use of XReadDisplay was requested, but it was not found.'
2084 fi
2085
2086 if test "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then
2087   warn 'Use of the Iris Video Library was requested, but it was not found.'
2088 fi
2089
2090 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
2091   warn 'Use of Kerberos was requested, but it was not found.'
2092 fi
2093
2094 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
2095   warn 'Use of PAM was requested, but it was not found.'
2096 fi
2097
2098 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
2099   warn 'Use of shadow passwords was requested, but they were not found.'
2100 fi
2101
2102 if test -n "$with_zippy_req"; then
2103   if test "$with_zippy_req" != "$ac_cv_zippy_program" ; then
2104     warnL "$with_zippy_req was requested as the Zippy program,"
2105     warn2 "but was not found.  The default will be used instead."
2106   fi
2107 fi
2108
2109 if test "$warning" != no; then
2110   echo '' ; echo "$warnsep" ; echo ''
2111 fi
2112
2113
2114 AC_OUTPUT(Makefile
2115           utils/Makefile
2116           driver/Makefile
2117           hacks/Makefile
2118           hacks/glx/Makefile
2119           driver/XScreenSaver.ad)
2120
2121 # You are in a twisty maze of namespaces and syntaxes, all alike.
2122 # Fuck the skull of Unix.
2123 #
2124 eval bindir=${bindir}
2125 eval bindir=${bindir}
2126 eval bindir=${bindir}
2127 eval bindir=${bindir}
2128 eval bindir=${bindir}
2129 eval bindir=${bindir}
2130 eval HACKDIR=${HACKDIR}
2131 eval HACKDIR=${HACKDIR}
2132 eval HACKDIR=${HACKDIR}
2133 eval HACKDIR=${HACKDIR}
2134 eval HACKDIR=${HACKDIR}
2135 eval HACKDIR=${HACKDIR}
2136
2137 # canonicalize slashes.
2138 bindir=`echo  "${bindir}"  | sed 's@/$@@;s@//*@/@g'`
2139 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
2140
2141 if test "${bindir}" = "${HACKDIR}" ; then
2142   echo ""
2143   echo "$warnsep"
2144   echo ""
2145   echo '      When you run "make install", the "xscreensaver",'
2146   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
2147   echo "      will be installed in ${bindir}."
2148   echo ""
2149   echo "      The various graphics demos (80+ different executables) will"
2150   echo "      also be installed in ${HACKDIR}."
2151   echo ""
2152   echo "      If you would prefer the demos to be installed elsewhere"
2153   echo "      (for example, in a dedicated directory) you should re-run"
2154   echo "      configure with the --enable-subdir=DIR option.  For more"
2155   echo "      information, run $0 --help."
2156   echo ""
2157   echo "$warnsep"
2158   echo ""
2159 fi