http://ftp.x.org/contrib/applications/xscreensaver-3.10.tar.gz
[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 --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 DOUBLE-BUFFER server extension header.
781 #
782 have_xdbe=no
783 with_xdbe_req=unspecified
784 AC_ARG_WITH(xdbe-ext,
785 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER server
786                           extension, if possible (this is the default).
787   --without-xdbe-ext      Do not compile in support for this extension.],
788   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
789
790 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
791
792 if test "$with_xdbe" = yes; then
793
794   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes])
795   if test "$have_xdbe" = yes; then
796     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
797   fi
798
799 elif test "$with_xdbe" != no; then
800   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
801   exit 1
802 fi
803
804
805 # Check for the SGI-VIDEO-CONTROL server extension header.
806 #
807 have_sgivc=no
808 with_sgivc_req=unspecified
809 AC_ARG_WITH(sgivc-ext,
810 [  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL server
811                           extension, if possible (this is the default).
812   --without-sgivc-ext     Do not compile in support for this extension.],
813   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
814
815 HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
816
817 if test "$with_sgivc" = yes; then
818
819   # first check for XSGIvc.h
820   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes])
821
822   # if that succeeded, then check for the -lXsgivc
823   if test "$have_sgivc" = yes; then
824     have_sgivc=no
825     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
826                   [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [],
827                   -lXext -lX11)
828   fi
829
830   # if that succeeded, then we've really got it.
831   if test "$have_sgivc" = yes; then
832     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
833   fi
834
835 elif test "$with_sgivc" != no; then
836   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
837   exit 1
838 fi
839
840
841 # Check for the DPMS server extension header.
842 #
843 have_dpms=no
844 with_dpms_req=unspecified
845 AC_ARG_WITH(dpms-ext,
846 [  --with-dpms-ext         Include support for the DPMS server extension,
847                           if possible (this is the default).
848   --without-dpms-ext      Do not compile in support for this extension.],
849   [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
850
851 HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
852
853 if test "$with_dpms" = yes; then
854
855   # first check for dpms.h
856   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes])
857
858   # if that succeeded, then check for the -lXdpms
859   if test "$have_dpms" = yes; then
860     have_dpms=no
861     AC_CHECK_X_LIB(Xdpms, DPMSInfo,
862                   [have_dpms=yes; SAVER_LIBS="$SAVER_LIBS -lXdpms"], [],
863                   -lXext -lX11)
864   fi
865
866   # if that succeeded, then we've really got it.
867   if test "$have_dpms" = yes; then
868     AC_DEFINE(HAVE_DPMS_EXTENSION)
869   fi
870
871 elif test "$with_dpms" != no; then
872   echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
873   exit 1
874 fi
875
876
877 # Check for /proc/interrupts
878 #
879 have_proc_interrupts=no
880 with_proc_interrupts_req=unspecified
881 AC_ARG_WITH(proc-interrupts,
882 [  --with-proc-interrupts  Include support for consulting the /proc/interrupts
883                           file to notice keyboard activity, if possible.
884   --without-proc-interrupts   Do not compile in support for this method.],
885   [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
886   [with_proc_interrupts=yes])
887
888 if test "$with_proc_interrupts" = yes; then
889
890    AC_MSG_CHECKING(whether /proc/interrupts contains keyboard data)
891    AC_CACHE_VAL(ac_cv_have_proc_interrupts,
892     [ac_cv_have_proc_interrupts=no
893      if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
894        ac_cv_have_proc_interrupts=yes
895      fi
896     ])
897    have_proc_interrupts=$ac_cv_have_proc_interrupts
898
899   AC_MSG_RESULT($have_proc_interrupts)
900
901   if test "$have_proc_interrupts" = yes; then
902     AC_DEFINE(HAVE_PROC_INTERRUPTS)
903   fi
904
905 elif test "$with_proc_interrupts" != no; then
906   echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
907   exit 1
908 fi
909
910
911
912 # Check for Motif and Athena --with and --without arguments.
913 #
914 have_motif=no
915 have_athena=no
916 have_athena3d=no
917 with_motif_req=unspecified
918 with_athena_req=unspecified
919
920 AC_ARG_WITH(motif,[
921 X Client Toolkit options:
922
923   --with-motif            Use the Motif toolkit for the user interface, if
924                           possible (this is the default).
925   --without-motif         Do not use Motif.],
926   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
927
928 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
929
930 AC_ARG_WITH(athena,
931 [  --with-athena           Use the Athena toolkit for the user interface, if
932                           possible (this is the default if Motif isn't used.)
933   --without-athena        Do not use Athena.],
934   [with_athena="$withval"; with_athena_req="$withval"],[with_athena=no])
935
936 HANDLE_X_PATH_ARG(with_athena, --with-athena, Athena)
937
938 if test "$with_motif" != yes -a "$with_motif" != no ; then
939   echo "error: must be yes or no: --with-motif=$with_motif"
940   exit 1
941 fi
942
943 if test "$with_athena" != yes -a "$with_athena" != no ; then
944   echo "error: must be yes or no: --with-athena=$with_athena"
945   exit 1
946 fi
947
948
949 # Saying --without-motif is the same as saying --with-athena.
950 if test "$with_motif_req" = no ; then
951   with_athena_req=yes
952   with_athena=yes
953 fi
954
955 # Saying --without-athena is the same as saying --with-motif.
956 if test "$with_athena_req" = no ; then
957   with_motif_req=yes
958   with_motif=yes
959 fi
960
961 # Check for Motif and Athena headers.
962
963 check_motif() {
964   AC_CHECK_X_HEADER(Xm/Xm.h,
965                     [have_motif=yes
966                      AC_DEFINE(HAVE_MOTIF)
967                      TOOLKIT_LIBS="-lXm $TOOLKIT_LIBS"])
968 }
969
970 check_athena() {
971   have_athena=no
972   have_athena3d=no
973   AC_CHECK_X_HEADER(X11/Xaw/Dialog.h, [have_athena=yes])
974   if test "$have_athena" = yes; then
975     AC_CHECK_X_LIB(Xaw3d, Xaw3dComputeTopShadowRGB,
976                    [have_athena=yes; have_athena3d=yes], [],
977                    -lXt -lXmu -lXext -lX11)
978   fi
979
980   if test "$have_athena3d" = yes; then
981     TOOLKIT_LIBS="-lXaw3d $TOOLKIT_LIBS"
982   elif test "$have_athena" = yes; then
983     TOOLKIT_LIBS="-lXaw $TOOLKIT_LIBS"
984   fi
985 }
986
987
988 # If they asked for both motif and athena, check motif then athena.
989 # If they asked for only motif, check motif then athena.
990 # If they asked for only athena, check athena then motif.
991 # If they asked for neither, check motif then athena.
992
993 proselytize_motif=yes
994 if test "$with_motif" = yes; then
995   # asked for both, or for motif only
996   check_motif
997   if test "$have_motif" = yes; then
998     with_athena=no
999     with_athena_req=no
1000   else
1001     check_athena
1002   fi
1003
1004 elif test "$with_athena" = yes; then
1005   # asked for athena only
1006   check_athena
1007   if test "$have_athena" = yes; then
1008     with_motif=no
1009     proselytize_motif=no
1010   else
1011     check_motif
1012   fi
1013
1014 else
1015   # asked for neither
1016   check_motif
1017   if test "$have_motif" = yes; then
1018     with_athena=no
1019   else
1020     check_athena
1021   fi
1022
1023 fi
1024
1025 if test "$have_motif" = yes; then
1026   proselytize_motif=no
1027 fi
1028
1029 # If we have Athena, check whether it's a version that includes
1030 # XawViewportSetCoordinates in Viewport.h (R3 (or R4?) don't.)
1031 if test "$have_athena" = yes ; then
1032   AC_CACHE_CHECK([for XawViewportSetCoordinates in Viewport.h], 
1033                  ac_cv_have_XawViewportSetCoordinates,
1034                  [ac_cv_have_XawViewportSetCoordinates=no
1035                   AC_EGREP_X_HEADER(XawViewportSetCoordinates, 
1036                                     X11/Xaw/Viewport.h,
1037                                     ac_cv_have_XawViewportSetCoordinates=yes)])
1038   if test "$ac_cv_have_XawViewportSetCoordinates" = yes ; then
1039     AC_DEFINE(HAVE_XawViewportSetCoordinates)
1040   fi
1041 fi
1042
1043
1044 # If we have Motif, check whether it's really LessTif.
1045 #
1046 have_lesstif=no
1047 if test "$have_motif" = yes ; then
1048   AC_CACHE_CHECK([whether Motif is really LessTif], 
1049                  ac_cv_have_lesstif,
1050                  [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
1051                                    [long vers = LesstifVersion;],
1052                                    [ac_cv_have_lesstif=yes],
1053                                    [ac_cv_have_lesstif=no])])
1054   have_lesstif=$ac_cv_have_lesstif
1055 fi
1056
1057 # don't cache these
1058 unset ac_cv_lesstif_version
1059 unset ac_cv_lesstif_version_string
1060
1061 lesstif_version=unknown
1062 lesstif_version_string=unknown
1063
1064 if test "$have_lesstif" = yes ; then
1065   ltv=unknown
1066   echo unknown > conftest-lt
1067   AC_CACHE_CHECK([LessTif version number],
1068                  ac_cv_lesstif_version_string,
1069       [AC_TRY_X_RUN([#include <stdio.h>
1070                      #include <Xm/Xm.h>
1071                      int main() {
1072                        FILE *f = fopen("conftest-lt", "w");
1073                        if (!f) exit(1);
1074                        fprintf(f, "%d %d.%d\n", LesstifVersion,
1075                           LESSTIF_VERSION, LESSTIF_REVISION);
1076                        fclose(f);
1077                        exit(0);
1078                      }],
1079                     [ltv=`cat conftest-lt`
1080                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
1081                      ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
1082                     [ac_cv_lesstif_version=unknown
1083                      ac_cv_lesstif_version_string=unknown],
1084                     [ac_cv_lesstif_version=unknown
1085                      ac_cv_lesstif_version_string=unknown])])
1086   rm -f conftest-lt
1087   lesstif_version=$ac_cv_lesstif_version
1088   lesstif_version_string=$ac_cv_lesstif_version_string
1089
1090 fi
1091
1092
1093 if test "$have_motif" = yes ; then
1094   mtv=unknown
1095   echo unknown > conftest-mt
1096   AC_CACHE_CHECK([Motif version number],
1097                  ac_cv_motif_version_string,
1098       [AC_TRY_X_RUN([#include <stdio.h>
1099                      #include <Xm/Xm.h>
1100                      int main() {
1101                        FILE *f = fopen("conftest-mt", "w");
1102                        if (!f) exit(1);
1103                        fprintf(f, "%d %d.%d\n", XmVersion,
1104                           XmVERSION, XmREVISION);
1105                        fclose(f);
1106                        exit(0);
1107                      }],
1108                     [mtv=`cat conftest-mt`
1109                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
1110                      ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
1111                     [ac_cv_motif_version=unknown
1112                      ac_cv_motif_version_string=unknown],
1113                     [ac_cv_motif_version=unknown
1114                      ac_cv_motif_version_string=unknown])])
1115   rm -f conftest-mt
1116   motif_version=$ac_cv_motif_version
1117   motif_version_string=$ac_cv_motif_version_string
1118
1119 fi
1120
1121
1122 # If this is Motif 2.x, and we have XPM, then link against XPM as well.
1123 # The deal is, Motif 2.x requires XPM -- but it's a compilation option of
1124 # the library whether to build the XPM code into libXm, or whether to rely
1125 # on an external libXm.  So the only way to tell whether XPM is a link-time
1126 # requirement is to examine libXm.a, which is very difficult to do in an
1127 # autoconf script.  So... if it's Motif 2.x, we always link against XPM if
1128 # the XPM lib exists (and this will be a no-op if libXm happens to already
1129 # have the XPM code in it.)
1130 #
1131 motif_requires_xpm=no
1132 if test "$have_motif" = yes ; then
1133    AC_MSG_CHECKING(whether Motif requires XPM)
1134    if test "$motif_version" -ge 2000; then
1135      motif_requires_xpm=yes
1136      AC_MSG_RESULT(maybe)
1137    else
1138      AC_MSG_RESULT(no)
1139    fi
1140 fi
1141
1142
1143
1144 # Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
1145 # Extension".   Why this extension isn't in -lXext with all the others,
1146 # I have no idea.
1147 #
1148 have_xp_ext=no
1149 if test "$have_motif" = yes ; then
1150    have_xp_ext=no
1151    AC_CHECK_X_LIB(Xp, XpQueryExtension,
1152                   [have_xp_ext=yes; TOOLKIT_LIBS="$TOOLKIT_LIBS -lXp"],
1153                   [], -lX11 -lXext -lm)
1154 fi
1155
1156
1157 # Check for _Xsetlocale in -lXintl, since at least some recent versions
1158 # of Motif (on Linux) need it.
1159 #
1160 have_xintl=no
1161 if test "$have_motif" = yes ; then
1162   AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
1163                  -lX11 -lXext -lm)
1164   if test "$have_xintl" = yes; then
1165     TOOLKIT_LIBS="$TOOLKIT_LIBS -lXintl"
1166   fi
1167 fi
1168
1169
1170 # check for XPM header.
1171 #
1172 have_xpm=no
1173 with_xpm_req=unspecified
1174 AC_ARG_WITH(xpm,[
1175 Graphics Demo options:
1176
1177   --with-xpm              Include support for XPM files in some demos,
1178                           if possible (this is the default).
1179   --without-xpm           Do not compile in support for XPM files.],
1180   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
1181
1182 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
1183
1184 if test "$with_xpm" = yes; then
1185   AC_CHECK_X_HEADER(X11/xpm.h,
1186                    [have_xpm=yes
1187                     AC_DEFINE(HAVE_XPM)
1188                     XPM_LIBS="-lXpm"])
1189 elif test "$with_xpm" != no; then
1190   echo "error: must be yes or no: --with-xpm=$with_xpm"
1191   exit 1
1192 fi
1193
1194 # See comment near $motif_requires_xpm, above.
1195 # Need to do this here, after both Motif and XPM have been checked for.
1196 #
1197 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
1198   if test "$motif_requires_xpm" = yes ; then
1199     TOOLKIT_LIBS="$TOOLKIT_LIBS $XPM_LIBS"
1200   fi
1201 fi
1202
1203
1204 # check for the GL header
1205 #
1206 have_gl=no
1207 ac_have_mesa_gl=no
1208 with_gl_req=unspecified
1209 AC_ARG_WITH(gl,
1210 [  --with-gl               Build those demos which depend on OpenGL,
1211                           if possible (this is the default).
1212   --without-gl            Do not build the OpenGL demos.],
1213   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
1214
1215 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
1216
1217 ac_mesagl_version=unknown
1218 ac_mesagl_version_string=unknown
1219
1220 if test "$with_gl" = yes; then
1221   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
1222   if test "$have_gl" = yes ; then
1223     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no)
1224   fi
1225
1226   # If we have the headers, try and figure out which vendor it's from.
1227   #
1228   if test "$have_gl" = yes ; then
1229
1230     AC_DEFINE(HAVE_GL)
1231
1232     # We need to know whether it's MesaGL so that we know which libraries
1233     # to link against.
1234     #
1235     AC_MSG_CHECKING(whether GL is really MesaGL)
1236     AC_CACHE_VAL(ac_cv_have_mesa_gl,
1237       [ac_cv_have_mesa_gl=no
1238        AC_EGREP_X_HEADER(Mesa, GL/glx.h, [ac_cv_have_mesa_gl=yes])
1239       ])
1240     ac_have_mesa_gl=$ac_cv_have_mesa_gl
1241     AC_MSG_RESULT($ac_have_mesa_gl)
1242
1243     if test "$ac_have_mesa_gl" = no ; then
1244       gl_lib_1="GL"
1245       GL_LIBS="-lGL -lGLU"
1246     else
1247       AC_DEFINE(HAVE_MESA_GL)
1248       gl_lib_1="MesaGL"
1249       GL_LIBS="-lMesaGL -lMesaGLU"
1250     fi
1251
1252
1253     # If it's MesaGL, we'd like to issue a warning if the version number
1254     # is less than or equal to 2.6, because that version had a security bug.
1255     #
1256     if test "$ac_have_mesa_gl" = yes; then
1257
1258       # don't cache these.
1259       unset ac_cv_mesagl_version
1260       unset ac_cv_mesagl_version_string
1261
1262       AC_MSG_CHECKING(MesaGL version number)
1263       AC_CACHE_VAL(ac_cv_mesagl_version_string,
1264         [cat > conftest.$ac_ext <<EOF
1265 #line __oline__ "configure"
1266 #include "confdefs.h"
1267 #include <GL/gl.h>
1268 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
1269 EOF
1270
1271          ac_save_CPPFLAGS="$CPPFLAGS"
1272          if test \! -z "$includedir" ; then 
1273            CPPFLAGS="$CPPFLAGS -I$includedir"
1274          fi
1275          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1276
1277           # M4 sucks!!
1278          changequote(X,Y)
1279          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | sed -n \
1280               's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
1281          changequote([,])
1282
1283          rm -f conftest.$ac_ext
1284
1285          CPPFLAGS="$ac_save_CPPFLAGS"
1286
1287          if test "$mglv" = ""; then
1288            ac_mesagl_version=unknown
1289            ac_mesagl_version_string=unknown
1290          else
1291            ac_mesagl_version_string=$mglv
1292            maj=`echo $mglv | sed -n 's/\..*//p'`
1293            min=`echo $mglv | sed -n 's/.*\.//p'`
1294            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
1295            if test -z "$ac_mesagl_version"; then
1296              ac_mesagl_version=unknown
1297              ac_mesagl_version_string=unknown
1298            fi
1299          fi
1300          ac_cv_mesagl_version=$ac_mesagl_version
1301          ac_cv_mesagl_version_string=$ac_mesagl_version_string
1302       ])
1303       ac_mesagl_version=$ac_cv_mesagl_version
1304       ac_mesagl_version_string=$ac_cv_mesagl_version_string
1305       AC_MSG_RESULT($ac_cv_mesagl_version_string)
1306     fi
1307
1308
1309     # If it's MesaGL, check to see if it requires -lpthread.
1310     #
1311     have_pthread=no
1312     mesa_requires_pthread=no
1313     if test "$ac_have_mesa_gl" = yes; then
1314
1315       AC_CHECK_LIB(pthread, pthread_create, [have_pthread=yes], [],)
1316       if test "$have_pthread" = yes; then
1317         AC_CHECK_X_LIB($gl_lib_1, gl_get_thread_context,
1318                        [mesa_requires_pthread=yes], [],
1319                        $GL_LIBS -lpthread -lX11 -lXext -lm)
1320       fi
1321
1322       if test "$mesa_requires_pthread" = yes; then
1323         GL_LIBS="$GL_LIBS -lpthread"
1324       fi
1325     fi
1326
1327     # Check for OpenGL 1.1 features.
1328     #
1329     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
1330                    [], $GL_LIBS -lX11 -lXext -lm)
1331
1332   fi
1333
1334 elif test "$with_gl" != no; then
1335   echo "error: must be yes or no: --with-gl=$with_gl"
1336   exit 1
1337 fi
1338
1339
1340 # check for SGI XReadDisplay server extension header.
1341 #
1342 have_readdisplay=no
1343 with_readdisplay_req=unspecified
1344 AC_ARG_WITH(readdisplay,
1345 [  --with-readdisplay      Include support for the XReadDisplay server
1346                           extension if possible (this is the default).
1347   --without-readdisplay   Do not compile in support for this extension.],
1348   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
1349   [with_readdisplay=yes])
1350
1351 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
1352
1353 if test "$with_readdisplay" = yes; then
1354   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
1355                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION))
1356 elif test "$with_readdisplay" != no; then
1357   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
1358   exit 1
1359 fi
1360
1361
1362 # check for SGI's Iris Video Library header.
1363 #
1364 have_sgivideo=no
1365 with_sgivideo_req=unspecified
1366 AC_ARG_WITH(sgivideo,
1367 [  --with-sgivideo         Include support for SGI's Iris Video Library
1368                           if possible (this is the default).
1369   --without-sgivideo       Do not compile in support for this library.],
1370   [with_sgivideo="$withval"; with_sgivideo_req="$withval"],
1371   [with_sgivideo=yes])
1372
1373 HANDLE_X_PATH_ARG(with_sgivideo, --with-sgivideo, Iris Video)
1374
1375 if test "$with_sgivideo" = yes; then
1376   AC_CHECK_X_HEADER(dmedia/vl.h, have_sgivideo=yes)
1377   if test "$have_sgivideo" = yes; then
1378     have_sgivideo=no
1379     AC_CHECK_LIB(vl, vlOpenVideo, have_sgivideo=yes)
1380     if test "$have_sgivideo" = yes; then
1381       SGI_VIDEO_OBJS="$(UTILS_BIN)/sgivideo.o"
1382       SGI_VIDEO_LIBS="-lvl"
1383       AC_DEFINE(HAVE_SGI_VIDEO)
1384     fi
1385   fi
1386 elif test "$with_sgivideo" != no; then
1387   echo "error: must be yes or no: --with-sgivideo=$with_sgivideo"
1388   exit 1
1389 fi
1390
1391
1392
1393 # Try to find a program to generate random text.
1394 #
1395 # Zippy is funnier than the idiocy generally spat out by `fortune',
1396 # so try to find that, by invoking Emacs and asking it where its 
1397 # libexec directory is ("yow" lives in there.)
1398 #
1399 # If that doesn't work, see if fortune, zippy, or yow are on $PATH,
1400 # and if so, use them.
1401 #
1402 # If that doesn't work, look in /usr/games, and if it's there, use
1403 # the full pathname.
1404 #
1405 with_zippy_req=""
1406 AC_ARG_WITH(zippy,
1407 [  --with-zippy=PROGRAM    Some demos are able to run an external program and
1408                           display its text; this names the program to use by
1409                           default (though it can be overridden with X
1410                           resources.)  If you don't specify this, the default
1411                           is to use \"yow\" from the Emacs distribution (if you
1412                           have it) or else to use \"fortune\".],
1413   [ with_zippy_req="$withval"; with_zippy="$withval" ],
1414   [ with_zippy_req="$withval"; with_zippy="$withval" ])
1415
1416 if test "$with_zippy" = no || test "$with_zippy" = yes ; then
1417   with_zippy=""
1418   with_zippy_req=""
1419 fi
1420
1421 if test -n "$with_zippy_req" ; then
1422   ac_cv_zippy_program=""
1423   case "$with_zippy_req" in
1424     /*)
1425       AC_MSG_CHECKING([for $with_zippy_req])
1426       if test -x "$with_zippy_req" ; then
1427         AC_MSG_RESULT(yes)
1428       else
1429         AC_MSG_RESULT(no)
1430         with_zippy=""
1431       fi
1432     ;;
1433     *)
1434       # don't cache
1435       unset ac_cv_path_zip2
1436       AC_PATH_PROG(zip2, $with_zippy_req, [])
1437       if test "$zip2" = ""; then
1438         with_zippy=""
1439       fi
1440     ;;
1441   esac
1442   ac_cv_zippy_program="$with_zippy"
1443
1444 elif test -n "$ac_cv_zippy_program"; then
1445   AC_MSG_RESULT([checking for zippy... (cached) $ac_cv_zippy_program])
1446 fi
1447
1448 if test ! -n "$ac_cv_zippy_program"; then
1449
1450   AC_CHECK_PROGS(emacs_exe, emacs)
1451   AC_CHECK_PROGS(xemacs_exe, xemacs)
1452
1453   ac_cv_zippy_program=""
1454   eargs='-batch -q -nw --eval'
1455
1456   if test -n "$emacs_exe" ; then
1457     AC_MSG_CHECKING([for emacs yow])
1458     #
1459     # get emacs to tell us where the libexec directory is.
1460     #
1461     dir=`$emacs_exe $eargs '(princ (concat exec-directory "\n"))' \
1462          2>/dev/null | tail -1`
1463     dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
1464     #
1465     # try running libexec/yow and see if it exits without error.
1466     #
1467     if test x"$dir" != x -a -x "$dir/yow" ; then
1468       if $dir/yow >&- 2>&- ; then
1469         ac_cv_zippy_program="$dir/yow"
1470         AC_MSG_RESULT($ac_cv_zippy_program)
1471       else
1472         AC_MSG_RESULT(no)
1473       fi
1474     fi
1475   fi
1476
1477   if test -z "$ac_cv_zippy_program" ; then
1478     AC_MSG_CHECKING([for xemacs yow])
1479     if test -n "$xemacs_exe" ; then
1480       #
1481       # get xemacs to tell us where the libexec directory is.
1482       #
1483       dir=`$xemacs_exe $eargs '(princ (concat exec-directory "\n"))' \
1484            2>/dev/null | tail -1`
1485       dir=`echo "$dir" | sed 's@///*@/@g;s@/$@@'`
1486       #
1487       # try running libexec/yow and see if it exits without error.
1488       #
1489       if test x"$dir" != x -a -x "$dir/yow" ; then
1490         if $dir/yow >&- 2>&- ; then
1491           ac_cv_zippy_program="$dir/yow"
1492           AC_MSG_RESULT($ac_cv_zippy_program)
1493         else
1494           #
1495           # in some xemacs installations, the pathname of the yow.lines file
1496           # isn't hardcoded into the yow executable, and must be passed on 
1497           # the command line.  See if it's in libexec/../etc/.
1498
1499           # M4 sucks!!
1500           changequote(X,Y)
1501           dir_up=`echo "$dir" | sed 's@/[^/]*$@@'`
1502           changequote([,])
1503
1504           yowlines="$dir_up/etc/yow.lines"
1505           if $dir/yow -f $yowlines >&- 2>&- ; then
1506             ac_cv_zippy_program="$dir/yow -f $yowlines"
1507             AC_MSG_RESULT($ac_cv_zippy_program)
1508           else
1509             #
1510             # In newer XEmacs releases, yow.lines is in a different place,
1511             # and the easiest way to get it is by calling the new function
1512             # `locate-data-file'.
1513             #
1514             yowlines=`$xemacs_exe $eargs \
1515               '(princ (concat (locate-data-file "yow.lines") "\n"))' \
1516               2>/dev/null | tail -1`
1517             if $dir/yow -f $yowlines >&- 2>&- ; then
1518               ac_cv_zippy_program="$dir/yow -f $yowlines"
1519               AC_MSG_RESULT($ac_cv_zippy_program)
1520             else
1521               AC_MSG_RESULT(no)
1522             fi
1523           fi
1524         fi
1525       fi
1526     fi
1527   fi
1528
1529   # if that didn't work, try for some other programs...
1530   if test -z "$ac_cv_zippy_program" ; then
1531     fortune=''
1532     AC_CHECK_PROGS(fortune, [fortune zippy yow])
1533     # if that didn't work, try for those programs in /usr/games...
1534     if test -z "$fortune" ; then
1535       AC_PATH_PROGS(fortune, [fortune zippy yow], fortune,
1536                     /usr/games:/usr/local/games)
1537     fi
1538   fi
1539 fi
1540
1541 if test -z "$ac_cv_zippy_program" ; then
1542   ac_cv_zippy_program=fortune
1543 fi
1544
1545 AC_DEFINE_UNQUOTED(ZIPPY_PROGRAM, "$ac_cv_zippy_program")
1546
1547
1548
1549
1550 # Allow locking to be disabled at compile-time.
1551 #
1552 have_kerberos=no
1553 with_kerberos_req=unspecified
1554 have_shadow=no
1555 with_shadow_req=unspecified
1556 have_pam=no
1557 with_pam_req=unspecified
1558 need_setuid=no
1559
1560 AC_ARG_ENABLE(locking,[
1561 Screen Locking options:
1562
1563   --enable-locking        Compile in support for locking the display
1564                           (this is the default.)
1565   --disable-locking       Do not allow locking at all.],
1566   [enable_locking="$enableval"],[enable_locking=yes])
1567 if test "$enable_locking" = yes; then
1568   true
1569 elif test "$enable_locking" = no; then
1570   AC_DEFINE(NO_LOCKING)
1571 else
1572   echo "error: must be yes or no: --enable-locking=$enable_locking"
1573   exit 1
1574 fi
1575
1576
1577
1578 # Check to see if we can lock Virtual-Terminal switching, but allow that 
1579 # to be disabled at compile-time.
1580 #
1581 ac_vt_lockswitch=no
1582 AC_ARG_ENABLE(vt-locking,[
1583   --enable-vt-locking     Compile in support for locking Virtual Terminals.
1584                           This is the default if the system supports it, and
1585                           if locking support is included (--enable-locking.)
1586   --disable-vt-locking    Do not allow locking of VTs, even if locking is
1587                           enabled.],
1588   [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
1589 if test "$enable_vt_locking" = yes; then
1590
1591   AC_MSG_CHECKING(for the VT_LOCKSWITCH ioctl)
1592   AC_CACHE_VAL(ac_cv_vt_lockswitch,
1593    [AC_TRY_COMPILE([#include <fcntl.h>
1594                     #include <sys/ioctl.h>
1595                     #include <sys/vt.h>],
1596                    [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
1597                    [ac_cv_vt_lockswitch=yes],
1598                    [ac_cv_vt_lockswitch=no])])
1599   ac_vt_lockswitch=$ac_cv_vt_lockswitch
1600   AC_MSG_RESULT($ac_vt_lockswitch)
1601
1602 elif test "$enable_vt_locking" = no; then
1603   true
1604 else
1605   echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
1606   exit 1
1607 fi
1608
1609 if test "$ac_vt_lockswitch" = yes; then
1610   AC_DEFINE(HAVE_VT_LOCKSWITCH)
1611   # the VT_LOCKSWITCH ioctl can only be used when running as root.
1612   # #### but it doesn't work yet, so don't worry about that for now.
1613 #  need_setuid=yes
1614 fi
1615
1616
1617
1618 if test "$enable_locking" = yes; then
1619
1620   # Check for Kerberos.
1621   #
1622   AC_ARG_WITH(kerberos, [
1623   --with-kerberos         Include support for Kerberos authentication,
1624                           if possible (this is the default.)
1625   --without-kerberos      Do not compile in support for Kerberos.],
1626   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
1627
1628   HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
1629
1630   if test "$with_kerberos" = yes; then
1631     AC_CACHE_CHECK([for Kerberos], ac_cv_kerberos,
1632                    [AC_TRY_X_COMPILE([#include <krb.h>],,
1633                                      [ac_cv_kerberos=yes],
1634                                      [ac_cv_kerberos=no])])
1635     if test "$ac_cv_kerberos" = yes ; then
1636       have_kerberos=yes
1637       AC_DEFINE(HAVE_KERBEROS)
1638
1639       # from Tim Showalter <tjs+@andrew.cmu.edu>
1640       PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes"
1641       AC_CHECK_FUNC(res_search,,
1642         AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
1643           AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
1644         ))
1645
1646     fi
1647   elif test "$with_kerberos" != no; then
1648     echo "error: must be yes or no: --with-kerberos=$with_kerberos"
1649     exit 1
1650   fi
1651   
1652   # Check for PAM.
1653   AC_ARG_WITH(pam,
1654 [  --with-pam              Include support for PAM (Pluggable Authentication
1655                           Modules) if possible (this is the default.)
1656   --without-pam           Do not compile in support for PAM.],
1657   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=no])
1658 #### Leave PAM off by default for now, since it's buggy on Solaris
1659 #### (and probably Linux, but it's so hard to tell...)
1660
1661   HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1662
1663   if test "$with_pam" = yes; then
1664     AC_CACHE_CHECK([for PAM], ac_cv_pam,
1665                    [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1666                                      [ac_cv_pam=yes],
1667                                      [ac_cv_pam=no])])
1668     if test "$ac_cv_pam" = yes ; then
1669           have_pam=yes
1670           AC_DEFINE(HAVE_PAM)
1671           PASSWD_LIBS="${PASSWD_LIBS} -lpam -ldl"
1672     fi
1673   elif test "$with_pam" != no; then
1674         echo "error: must be yes or no: --with-pam=$with_pam"
1675         exit 1
1676   fi
1677
1678   # Next, check for the nine billion variants of shadow passwords...
1679
1680   pwent_cruft_done=no
1681   AC_ARG_WITH(shadow,
1682 [  --with-shadow           Include support for shadow password authentication,
1683                           if possible (this is the default, if no Kerberos or
1684                           PAM.)
1685   --without-shadow        Do not compile in support for shadow passwords.
1686 ],
1687   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
1688
1689   HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
1690
1691   if test "$with_shadow" = no; then
1692     pwent_cruft_done=yes
1693   elif test "$with_shadow" != yes; then
1694     echo "error: must be yes or no: --with-shadow=$with_shadow"
1695     exit 1
1696   fi
1697
1698
1699   # Sun's "adjunct" passwords.
1700   #
1701   if test "$pwent_cruft_done" = no ; then
1702     AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
1703                    [AC_TRY_X_COMPILE([#include <stdlib.h>
1704                                       #include <unistd.h>
1705                                       #include <sys/types.h>
1706                                       #include <sys/label.h>
1707                                       #include <sys/audit.h>
1708                                       #include <pwdadj.h>],
1709                         [struct passwd_adjunct *p = getpwanam("nobody");
1710                          const char *pw = p->pwa_passwd;],
1711                         [ac_cv_sun_adjunct=yes],
1712                         [ac_cv_sun_adjunct=no])])
1713     if test "$ac_cv_sun_adjunct" = yes; then
1714       have_shadow=yes
1715       need_setuid=yes
1716       pwent_cruft_done=yes
1717       AC_DEFINE(HAVE_ADJUNCT_PASSWD)
1718     fi
1719   fi
1720
1721   # DEC and SCO so-called "enhanced" security.
1722   #
1723   if test "$pwent_cruft_done" = no ; then
1724     AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
1725                    [AC_TRY_X_COMPILE([#include <stdlib.h>
1726                                       #include <unistd.h>
1727                                       #include <sys/types.h>
1728                                       #include <pwd.h>
1729                                       #include <sys/security.h>
1730                                       #include <prot.h>],
1731                         [struct pr_passwd *p;
1732                          const char *pw;
1733                          set_auth_parameters(0, 0);
1734                          check_auth_parameters();
1735                          p = getprpwnam("nobody");
1736                          pw = p->ufld.fd_encrypt;],
1737                         [ac_cv_enhanced_passwd=yes],
1738                         [ac_cv_enhanced_passwd=no])])
1739     if test $ac_cv_enhanced_passwd = yes; then
1740       have_shadow=yes
1741       need_setuid=yes
1742       pwent_cruft_done=yes
1743       AC_DEFINE(HAVE_ENHANCED_PASSWD)
1744
1745       # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
1746       # (I'm told it needs -lcurses too, but I don't understand why.)
1747       AC_CHECK_LIB(prot, getprpwnam, 
1748                    [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
1749                    [# On DEC, getprpwnam() is in -lsecurity
1750                     AC_CHECK_LIB(security, getprpwnam, 
1751                                  [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
1752                    [-lx])
1753     fi
1754   fi
1755
1756   # HP's entry in the "Not Invented Here" Sweepstakes.
1757   #
1758   if test "$pwent_cruft_done" = no ; then
1759     AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
1760                    [AC_TRY_X_COMPILE([#include <stdlib.h>
1761                                       #include <unistd.h>
1762                                       #include <sys/types.h>
1763                                       #include <pwd.h>
1764                                       #include <hpsecurity.h>
1765                                       #include <prot.h>],
1766                         [struct s_passwd *p = getspwnam("nobody");
1767                          const char *pw = p->pw_passwd;],
1768                         [ac_cv_hpux_passwd=yes],
1769                         [ac_cv_hpux_passwd=no])])
1770     if test "$ac_cv_hpux_passwd" = yes; then
1771       have_shadow=yes
1772       need_setuid=yes
1773       pwent_cruft_done=yes
1774       AC_DEFINE(HAVE_HPUX_PASSWD)
1775
1776       # on HPUX, bigcrypt is in -lsec
1777       AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
1778     fi
1779   fi
1780
1781   # Traditional (ha!) shadow passwords.
1782   #
1783   if test "$pwent_cruft_done" = no ; then
1784     AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
1785                    [AC_TRY_X_COMPILE([#include <stdlib.h>
1786                                       #include <unistd.h>
1787                                       #include <sys/types.h>
1788                                       #include <pwd.h>
1789                                       #include <shadow.h>],
1790                         [struct spwd *p = getspnam("nobody");
1791                          const char *pw = p->sp_pwdp;],
1792                         [ac_cv_shadow=yes],
1793                         [ac_cv_shadow=no])])
1794     if test "$ac_cv_shadow" = yes; then
1795       have_shadow=yes
1796       need_setuid=yes
1797       pwent_cruft_done=yes
1798       AC_DEFINE(HAVE_SHADOW_PASSWD)
1799
1800       # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
1801       have_getspnam=no
1802       AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
1803       if test "$have_getspnam" = no ; then
1804         AC_CHECK_LIB(gen, getspnam,
1805                      [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
1806       fi
1807     fi
1808   fi
1809
1810   # On FreeBSD, getpwnam() and friends work just like on non-shadow-password
1811   # systems -- except you only get stuff in the pw_passwd field if the running
1812   # program is setuid.  So, guess that we've got this lossage to contend with
1813   # if /etc/master.passwd exists, and default to a setuid installation.
1814   #
1815   if test "$pwent_cruft_done" = no ; then
1816     AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
1817                    [if test -f /etc/master.passwd ; then
1818                       ac_cv_master_passwd=yes
1819                     else
1820                       ac_cv_master_passwd=no
1821                     fi])
1822     if test "$ac_cv_master_passwd" = yes; then
1823       need_setuid=yes
1824       pwent_cruft_done=yes
1825     fi
1826   fi
1827
1828   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
1829   have_crypt=no
1830   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
1831   if test "$have_crypt" = no ; then
1832     AC_CHECK_LIB(crypt, crypt,
1833                  [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1834   fi
1835
1836
1837   # Most of the above shadow mechanisms will have set need_setuid to yes,
1838   # if they were found.  But, on some systems, we need setuid even when
1839   # using plain old vanilla passwords.
1840   #
1841   if test "$need_setuid" = no ; then
1842     case "$host" in
1843       *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
1844         need_setuid=yes
1845       ;;
1846     esac
1847   fi
1848
1849 fi
1850
1851
1852 if test \! -z "$includedir" ; then 
1853   INCLUDES="-I$includedir"
1854 fi
1855
1856 if test \! -z "$libdir" ; then
1857   LDFLAGS="$LDFLAGS -L$libdir"
1858 fi
1859
1860
1861 ##### should have options to override the DEPEND crap, I guess...
1862 DEPEND=makedepend
1863 DEPEND_FLAGS=
1864 DEPEND_DEFINES=
1865
1866
1867 # Done testing things -- now substitute in some stuff for the Makefiles.
1868 #
1869 if test "$have_motif" = yes; then
1870   AC_DEFINE(HAVE_MOTIF)
1871   TOOLKIT_SRCS='$(MOTIF_SRCS)'
1872   TOOLKIT_OBJS='$(MOTIF_OBJS)'
1873 elif test "$have_athena" = yes; then
1874   AC_DEFINE(HAVE_ATHENA)
1875   TOOLKIT_SRCS='$(ATHENA_SRCS)'
1876   TOOLKIT_OBJS='$(ATHENA_OBJS)'
1877 else
1878   TOOLKIT_SRCS=''
1879   TOOLKIT_OBJS=''
1880 fi
1881
1882 if test "$have_kerberos" = yes; then
1883   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
1884   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
1885 fi
1886 if test "$have_pam" = yes; then
1887   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
1888   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
1889   INSTALL_PAM="install-pam"
1890 fi
1891   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
1892   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
1893
1894
1895 if test "$enable_locking" = yes; then
1896   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
1897   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
1898 else
1899   LOCK_SRCS=''
1900   LOCK_OBJS=''
1901 fi
1902
1903 if test "$need_setuid" = yes; then
1904   NEED_SETUID=yes
1905   INSTALL_SETUID='$(INSTALL) $(SUID_FLAGS)'
1906 else
1907   NEED_SETUID=no
1908   INSTALL_SETUID='$(INSTALL_PROGRAM)'
1909 fi
1910
1911 tab='   '
1912 if test "$have_gl" = yes; then
1913   GL_EXES='$(GL_EXES)'
1914   GL_KLUDGE=${tab}
1915 else
1916   GL_KLUDGE='  -'${tab}
1917 fi
1918
1919 AC_SUBST(INCLUDES)
1920
1921 AC_SUBST(SAVER_LIBS)
1922 AC_SUBST(TOOLKIT_LIBS)
1923 AC_SUBST(HACK_LIBS)
1924 AC_SUBST(XPM_LIBS)
1925 AC_SUBST(GL_LIBS)
1926 AC_SUBST(PASSWD_LIBS)
1927 AC_SUBST(INSTALL_SETUID)
1928 AC_SUBST(INSTALL_DIRS)
1929 AC_SUBST(NEED_SETUID)
1930 AC_SUBST(INSTALL_PAM)
1931 AC_SUBST(SGI_VIDEO_OBJS)
1932 AC_SUBST(SGI_VIDEO_LIBS)
1933
1934 AC_SUBST(TOOLKIT_SRCS)
1935 AC_SUBST(TOOLKIT_OBJS)
1936 AC_SUBST(PASSWD_SRCS)
1937 AC_SUBST(PASSWD_OBJS)
1938 AC_SUBST(XMU_SRCS)
1939 AC_SUBST(XMU_OBJS)
1940 AC_SUBST(LOCK_SRCS)
1941 AC_SUBST(LOCK_OBJS)
1942 AC_SUBST(GL_EXES)
1943 AC_SUBST(GL_KLUDGE)
1944 AC_SUBST(HACKDIR)
1945 AC_SUBST(APPDEFAULTS)
1946
1947 AC_SUBST(DEPEND)
1948 AC_SUBST(DEPEND_FLAGS)
1949 AC_SUBST(DEPEND_DEFINES)
1950
1951 # Print some warnings before emitting the Makefiles.
1952 #
1953 warn_prefix_1="    Warning:"
1954 warn_prefix_2="       Note:"
1955 warn_prefix="$warn_prefix_1"
1956
1957 warning=no
1958 warnsep='    #################################################################'
1959
1960 warnpre() {
1961   if test "$warning" = no ; then
1962     echo '' ; echo "$warnsep" ; echo ''
1963     warning=yes
1964   fi
1965 }
1966
1967 warn() {
1968   warnpre
1969   if test "$warning" = long ; then echo '' ; fi
1970   warning=yes
1971   echo "$warn_prefix $@"
1972 }
1973
1974 warnL() {
1975   was=$warning
1976   warnpre
1977   warning=yes
1978   if test "$was" != no ; then echo '' ; fi
1979   echo "$warn_prefix $@"
1980 }
1981
1982 warn2() {
1983   echo "             $@"
1984   warning=long
1985 }
1986
1987 note() {
1988   warn_prefix="$warn_prefix_2"
1989   warn $@
1990   warn_prefix="$warn_prefix_1"
1991 }
1992
1993 noteL() {
1994   warn_prefix="$warn_prefix_2"
1995   warnL $@
1996   warn_prefix="$warn_prefix_1"
1997 }
1998
1999
2000 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
2001   warn 'The SGI saver extension was requested, but was not found.'
2002 fi
2003
2004 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
2005   warn 'The MIT saver extension was requested, but was not found.'
2006 fi
2007
2008 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
2009   warn 'The XIdle extension was requested, but was not found.'
2010 fi
2011
2012 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
2013   warn 'The XSHM extension was requested, but was not found.'
2014 fi
2015
2016 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
2017   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
2018 fi
2019
2020 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
2021   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
2022 fi
2023
2024 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
2025   warn 'The DPMS extension was requested, but was not found.'
2026 fi
2027
2028 if test "$have_motif" = no -a "$have_athena" = no ; then
2029   warnL "Neither Motif nor Athena widgets seem to be available;"
2030   warn2 "the \`xscreensaver-demo' program requires one or the"
2031   warn2 "other."
2032   proselytize_motif=no
2033
2034 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
2035   warnL "Use of Motif was requested, but it wasn't found;"
2036   warn2 "Athena will be used instead."
2037
2038 elif test "$with_athena_req" = yes -a "$have_athena" = no ; then
2039   warnL "Use of Athena was requested, but it wasn't found;"
2040   warn2 "Motif will be used instead."
2041 fi
2042
2043 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
2044
2045   preferred_lesstif=0.86
2046
2047   if test "$lesstif_version" = unknown; then
2048     warnL "Unable to determine the LessTif version number!"
2049     warn2 "Make sure you are using version $preferred_lesstif or newer."
2050     warn2 "See <http://www.lesstif.org/>."
2051
2052   elif test \! $lesstif_version -gt 82; then
2053     warnL "LessTif version $lesstif_version_string is being used."
2054     warn2 "LessTif versions 0.82 and earlier are too buggy to"
2055     warn2 "use with XScreenSaver; it is strongly recommended"
2056     warn2 "that you upgrade to at least version $preferred_lesstif!"
2057     warn2 "See <http://www.lesstif.org/>."
2058   fi
2059 fi
2060
2061 if test "$proselytize_motif" = yes ; then
2062     warnL "Athena widgets are being used instead of Motif."
2063     warn2 "The \`xscreensaver-demo' program looks much better"
2064     warn2 "with Motif.  Wouldn't you rather be using Motif?"
2065     warn2 "It is shipped by every commercial Unix vendor;"
2066     warn2 "and there is a free implementation available as"
2067     warn2 "well: see <http://www.lesstif.org/>."
2068 fi
2069
2070
2071 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
2072   preferred_mesagl=3.0
2073
2074   if test "$ac_mesagl_version" = unknown; then
2075     warnL "Unable to determine the MesaGL version number!"
2076     warn2 "Make sure you are using version $preferred_mesagl or newer."
2077
2078   elif test \! "$ac_mesagl_version" -gt 2006; then
2079     warnL "MesaGL version $ac_mesagl_version_string is being used."
2080     warn2 "MesaGL versions 2.6 and earlier have a security bug."
2081     warn2 "It is strongly recommended that you upgrade to at"
2082     warn2 "least version $preferred_mesagl."
2083   fi
2084 fi
2085
2086
2087 if test "$have_xpm" = no ; then
2088   if test "$with_xpm_req" = yes ; then
2089     warnL 'Use of XPM was requested, but it was not found.'
2090   elif test "$with_xpm_req" = no ; then
2091     noteL 'The XPM library is not being used.'
2092   else
2093     noteL 'The XPM library was not found.'
2094   fi
2095
2096   echo ''
2097   warn2 'Some of the demos will not be as colorful as they'
2098   warn2 'could be.  You might want to consider installing XPM'
2099   warn2 'and re-running configure.  (Remember to delete the'
2100   warn2 'config.cache file first.)  You can find XPM at most'
2101   warn2 'X11 archive sites, such as <http://sunsite.unc.edu/>.'
2102 fi
2103
2104 if test "$have_gl" = no ; then
2105   if test "$with_gl_req" = yes ; then
2106     warnL 'Use of GL was requested, but it was not found.'
2107   elif test "$with_gl_req" = no ; then
2108     noteL 'The OpenGL 3D library is not being used.'
2109   else
2110     noteL 'The OpenGL 3D library was not found.'
2111   fi
2112
2113   echo ''
2114   warn2 'Those demos which use 3D will not be built or installed.'
2115   warn2 'You might want to consider installing OpenGL and'
2116   warn2 're-running configure.  (Remember to delete the'
2117   warn2 "config.cache file first.)  If your vendor doesn't ship"
2118   warn2 'their own implementation of OpenGL, you can get a free'
2119   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
2120   warn2 'info, see <http://www.opengl.org/>.'
2121
2122 fi
2123
2124 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
2125   warn 'Use of XReadDisplay was requested, but it was not found.'
2126 fi
2127
2128 if test "$with_sgivideo_req" = yes -a "$have_sgivideo" = no ; then
2129   warn 'Use of the Iris Video Library was requested, but it was not found.'
2130 fi
2131
2132 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
2133   warn 'Use of Kerberos was requested, but it was not found.'
2134 fi
2135
2136 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
2137   warn 'Use of PAM was requested, but it was not found.'
2138 fi
2139
2140 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
2141   warn 'Use of shadow passwords was requested, but they were not found.'
2142 fi
2143
2144 if test -n "$with_zippy_req"; then
2145   if test "$with_zippy_req" != "$ac_cv_zippy_program" ; then
2146     warnL "$with_zippy_req was requested as the Zippy program,"
2147     warn2 "but was not found.  The default will be used instead."
2148   fi
2149 fi
2150
2151 if test "$warning" != no; then
2152   echo '' ; echo "$warnsep" ; echo ''
2153 fi
2154
2155
2156 AC_OUTPUT(Makefile
2157           utils/Makefile
2158           driver/Makefile
2159           hacks/Makefile
2160           hacks/glx/Makefile
2161           driver/XScreenSaver.ad)
2162
2163 # You are in a twisty maze of namespaces and syntaxes, all alike.
2164 # Fuck the skull of Unix.
2165 #
2166 eval bindir=${bindir}
2167 eval bindir=${bindir}
2168 eval bindir=${bindir}
2169 eval bindir=${bindir}
2170 eval bindir=${bindir}
2171 eval bindir=${bindir}
2172 eval HACKDIR=${HACKDIR}
2173 eval HACKDIR=${HACKDIR}
2174 eval HACKDIR=${HACKDIR}
2175 eval HACKDIR=${HACKDIR}
2176 eval HACKDIR=${HACKDIR}
2177 eval HACKDIR=${HACKDIR}
2178
2179 # canonicalize slashes.
2180 bindir=`echo  "${bindir}"  | sed 's@/$@@;s@//*@/@g'`
2181 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
2182
2183
2184 # Sanity check the subdir
2185 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
2186   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
2187     echo ""
2188     AC_MSG_ERROR([\"--enable-subdir=${bindir}/${bad_choice}\" won't work.
2189                    There will be an executable installed with that name, so
2190                    that can't be the name of a directory as well.  Please
2191                    re-configure with a different directory name.])
2192   fi
2193 done
2194
2195
2196 do_dir_warning=no
2197
2198 # Now let's see if there's a previous RPM version already installed.  Blargh!
2199
2200 # M4 sucks!!
2201 changequote(X,Y)
2202 rpmv=`(rpm -qv xscreensaver) 2>&- | \
2203       sed 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-[0-9][0-9]*$/\1/'`
2204 changequote([,])
2205
2206 if test \! -z "$rpmv" ; then
2207   rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
2208   rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
2209
2210   warning=no
2211   warnL "There is already an installed RPM of xscreensaver $rpmv"
2212   warn2 "on this system.  You might want to remove it (with"
2213   warn2 '"rpm -ve xscreensaver") before running "make install"'
2214   warn2 "from this directory."
2215   echo ""
2216   warn2 "Alternately, you could build this version of xscreensaver"
2217   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
2218   warn2 "file is included.  See the RPM documentation for more info."
2219   echo ""
2220
2221   if test "$rpmbdir" = "$rpmhdir" ; then
2222     warn2 "The RPM version was installed in $rpmbdir."
2223   else
2224     warn2 "The RPM version was installed in $rpmbdir,"
2225     warn2 "with demos in $rpmhdir."
2226   fi
2227
2228   do_dir_warning=yes
2229 fi
2230
2231
2232 if test "${bindir}" = "${HACKDIR}" ; then
2233   do_dir_warning=yes
2234 fi
2235
2236 if test "$do_dir_warning" = yes; then
2237   echo ""
2238   echo "$warnsep"
2239   echo ""
2240   echo '      When you run "make install", the "xscreensaver",'
2241   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
2242   echo "      will be installed in ${bindir}."
2243   echo ""
2244   echo "      The various graphics demos (90+ different executables) will"
2245   echo "      also be installed in ${HACKDIR}."
2246   echo ""
2247   echo "      If you would prefer the demos to be installed elsewhere"
2248   echo "      (for example, in a dedicated directory) you should re-run"
2249   echo "      configure with the --enable-subdir=DIR option.  For more"
2250   echo "      information, run $0 --help."
2251   echo ""
2252   echo "$warnsep"
2253   echo ""
2254 fi