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