68a89a58dff7c62e6bb81e473fcc44d9970d7b65
[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 --with-hackdir option
865 #
866 ###############################################################################
867
868 have_hackdir=yes
869 with_hackdir_req=unspecified
870 AC_ARG_WITH(hackdir,[
871 Installation options:
872
873   --with-hackdir=DIR      Where to install the hundreds of demo executables.
874                           Default: \`PREFIX/lib/xscreensaver/'
875 ],
876   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
877
878 if test x"$with_hackdir" = xyes; then
879   HACKDIR='${exec_prefix}/lib/xscreensaver'
880 elif test x"$with_hackdir" = xno; then
881   HACKDIR='${bindir}'
882 else
883   # there must be a better way than this...
884   if test -z "`echo $with_hackdir | sed 's@^/.*@@'`" ; then
885     # absolute path
886     HACKDIR=$with_hackdir
887   else
888     # relative path
889     HACKDIR="\${exec_prefix}$with_hackdir"
890   fi
891 fi
892
893 # canonicalize slashes.
894 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
895
896 # This option used to be called --enable-subdir; make sure that is no longer
897 # used, since configure brain-damagedly ignores unknown --enable options.
898
899 obsolete_enable=
900 AC_ARG_ENABLE(subdir,,[obsolete_enable=yes])
901 if test -n "$obsolete_enable"; then
902   echo "error: the --enable-subdir option has been replaced with"
903   echo "       the new --with-hackdir option; see \`configure --help'"
904   echo "       for more information."
905   exit 1
906 fi
907
908
909 ###############################################################################
910 #
911 #       Handle the --with-configdir option
912 #
913 ###############################################################################
914
915 have_configdir=yes
916 with_configdir_req=unspecified
917 AC_ARG_WITH(configdir,
918 [  --with-configdir=DIR    Where to install the data files that describe each
919                           of the display modes to the GUI.
920                           Default: \`GNOMEPREFIX/control-center/screensavers/'
921                           or \`PREFIX/lib/xscreensaver/config/', depending on
922                           whether GNOME is available.
923 ],
924   [with_configdir="$withval"; with_configdir_req="$withval"],
925   [with_configdir=yes])
926
927 if test x"$with_configdir" = xyes; then
928   # filled in later...
929   HACK_CONF_DIR=''
930 elif test x"$with_configdir" = xno; then
931   echo "error: must be yes, or a pathname: --with-configdir=$with_configdir"
932   exit 1
933 else
934   # there must be a better way than this...
935   if test -z "`echo $with_configdir | sed 's@^/.*@@'`" ; then
936     # absolute path
937     CONFIGDIR=$with_configdir
938   else
939     # relative path
940     CONFIGDIR="\${exec_prefix}$with_configdir"
941   fi
942 fi
943
944 # canonicalize slashes.
945 CONFIGDIR=`echo "${CONFIGDIR}" | sed 's@/$@@;s@//*@/@g'`
946
947
948
949
950 ###############################################################################
951 #
952 #       Check for the SGI SCREEN_SAVER server extension.
953 #
954 ###############################################################################
955
956 have_sgi=no
957 with_sgi_req=unspecified
958 AC_ARG_WITH(sgi-ext,
959 [Except where noted, all of the --with options below can also take a
960 directory argument: for example, \`--with-motif=/opt/Motif'.  That would
961 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
962 to be added to the -L list, assuming those directories exist.  
963
964 By default, support for each of these options will be built in, if the
965 relevant library routines exist.  At run time, they will then be used
966 only if the X server being used supports them.  Each --with option has
967 a corresponding --without option, to override building support for them
968 at all.
969
970 Screen blanking and idle-detection options:
971
972   --with-sgi-ext          Include support for the SGI SCREEN_SAVER extension.],
973   [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
974
975 HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
976
977 if test "$with_sgi" = yes; then
978   AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
979                     [have_sgi=yes
980                      AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)])
981
982 elif test "$with_sgi" != no; then
983   echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
984   exit 1
985 fi
986
987
988 ###############################################################################
989 #
990 #       Check for the MIT-SCREEN-SAVER server extension.
991 #
992 ###############################################################################
993
994 have_mit=no
995 with_mit_req=unspecified
996 AC_ARG_WITH(mit-ext,
997 [  --with-mit-ext          Include support for the MIT-SCREEN-SAVER extension.],
998   [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
999
1000 HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER)
1001
1002 if test "$with_mit" = yes; then
1003   AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes])
1004
1005   # Now check to see if it's really in the library; XF86Free-3.3 ships
1006   # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
1007   #
1008   if test "$have_mit" = yes; then
1009     AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [true], [have_mit=no], -lm)
1010
1011     if test "$have_mit" = no; then
1012       # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
1013       # of in Xext.  Thank you master, may I have another.
1014       AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
1015                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"],
1016                      [true], -lX11 -lXext -lm)
1017     fi
1018
1019     if test "$have_mit" = no; then
1020       # Double fuck!  Looks like some versions of XFree86 (whichever version
1021       # it is that comes with RedHat Linux 2.0 -- I can't find a version 
1022       # number) put this garbage in Xss instead of Xext.  Thank you master,
1023       #  may I have another.
1024       AC_CHECK_X_LIB(Xss, XScreenSaverRegister,
1025                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"],
1026                      [true], -lX11 -lXext -lm)
1027     fi
1028
1029   if test "$have_mit" = yes; then
1030     AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
1031   fi
1032
1033   fi
1034
1035 elif test "$with_mit" != no; then
1036   echo "error: must be yes or no: --with-mit-ext=$with_mit"
1037   exit 1
1038 fi
1039
1040
1041 ###############################################################################
1042 #
1043 #       Check for the XIDLE server extension.
1044 #
1045 ###############################################################################
1046
1047 have_xidle=no
1048 with_xidle_req=unspecified
1049 AC_ARG_WITH(xidle-ext,
1050 [  --with-xidle-ext        Include support for the XIDLE extension.],
1051   [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
1052
1053 HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
1054
1055 if test "$with_xidle" = yes; then
1056   AC_CHECK_X_HEADER(X11/extensions/xidle.h,
1057                     [have_xidle=yes
1058                      AC_DEFINE(HAVE_XIDLE_EXTENSION)])
1059 elif test "$with_xidle" != no; then
1060   echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
1061   exit 1
1062 fi
1063
1064
1065 ###############################################################################
1066 #
1067 #       Check for the SGI-VIDEO-CONTROL server extension.
1068 #
1069 ###############################################################################
1070
1071 have_sgivc=no
1072 with_sgivc_req=unspecified
1073 AC_ARG_WITH(sgivc-ext,
1074 [  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL extension.],
1075   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
1076
1077 HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
1078
1079 if test "$with_sgivc" = yes; then
1080
1081   # first check for XSGIvc.h
1082   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes])
1083
1084   # if that succeeded, then check for the -lXsgivc
1085   if test "$have_sgivc" = yes; then
1086     have_sgivc=no
1087     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
1088                   [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true],
1089                   -lXext -lX11)
1090   fi
1091
1092   # if that succeeded, then we've really got it.
1093   if test "$have_sgivc" = yes; then
1094     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
1095   fi
1096
1097 elif test "$with_sgivc" != no; then
1098   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
1099   exit 1
1100 fi
1101
1102
1103 ###############################################################################
1104 #
1105 #       Check for the DPMS server extension.
1106 #
1107 ###############################################################################
1108
1109 have_dpms=no
1110 with_dpms_req=unspecified
1111 AC_ARG_WITH(dpms-ext,
1112 [  --with-dpms-ext         Include support for the DPMS extension.],
1113   [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
1114
1115 HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
1116
1117 if test "$with_dpms" = yes; then
1118
1119   # first check for dpms.h
1120   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes])
1121
1122   # if that succeeded, then check for the DPMS code in the libraries
1123   if test "$have_dpms" = yes; then
1124
1125     # first look in -lXext (this is where it is with XFree86 4.0)
1126     have_dpms=no
1127     AC_CHECK_X_LIB(Xext, DPMSInfo, [have_dpms=yes], [true], -lXext -lX11)
1128
1129     # if that failed, look in -lXdpms (this is where it was in XFree86 3.x)
1130     if test "$have_dpms" = no; then
1131       AC_CHECK_X_LIB(Xdpms, DPMSInfo,
1132                     [have_dpms=yes; XDPMS_LIBS="-lXdpms"], [true],
1133                     -lXext -lX11)
1134     fi
1135   fi
1136
1137
1138   # if that succeeded, then we've really got it.
1139   if test "$have_dpms" = yes; then
1140     AC_DEFINE(HAVE_DPMS_EXTENSION)
1141   fi
1142
1143 elif test "$with_dpms" != no; then
1144   echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
1145   exit 1
1146 fi
1147
1148
1149 ###############################################################################
1150 #
1151 #       Check for the XINERAMA server extension.
1152 #
1153 ###############################################################################
1154
1155 have_xinerama=no
1156 with_xinerama_req=unspecified
1157 AC_ARG_WITH(xinerama-ext,
1158 [  --with-xinerama-ext     Include support for the XINERAMA extension.],
1159   [with_xinerama="$withval"; with_xinerama_req="$withval"],[with_xinerama=yes])
1160
1161 HANDLE_X_PATH_ARG(with_xinerama, --with-xinerama-ext, XINERAMA)
1162
1163 if test "$with_xinerama" = yes; then
1164
1165   # first check for Xinerama.h
1166   AC_CHECK_X_HEADER(X11/extensions/Xinerama.h, [have_xinerama=yes])
1167
1168   # if that succeeded, then check for the XINERAMA code in the libraries
1169   if test "$have_xinerama" = yes; then
1170
1171     # first look in -lXext
1172     have_xinerama=no
1173     AC_CHECK_X_LIB(Xext, XineramaQueryExtension, [have_xinerama=yes], [true],
1174                   -lXext -lX11)
1175
1176     # if that failed, look in -lXinerama (this is where it is in XFree86 4.1.)
1177     if test "$have_xinerama" = no; then
1178       AC_CHECK_X_LIB(Xinerama, XineramaQueryExtension,
1179                      [have_xinerama=yes; SAVER_LIBS="$SAVER_LIBS -lXinerama"],
1180                      [true], -lXext -lX11)
1181     fi
1182   fi
1183
1184   # if that succeeded, then we've really got it.
1185   if test "$have_xinerama" = yes; then
1186     AC_DEFINE(HAVE_XINERAMA)
1187   fi
1188
1189 elif test "$with_xinerama" != no; then
1190   echo "error: must be yes or no: --with-xinerama-ext=$with_xinerama"
1191   exit 1
1192 fi
1193
1194
1195 ###############################################################################
1196 #
1197 #       Check for the XF86VMODE server extension (for virtual screens.)
1198 #
1199 ###############################################################################
1200
1201 have_xf86vmode=no
1202 with_xf86vmode_req=unspecified
1203 AC_ARG_WITH(xf86vmode-ext,
1204 [  --with-xf86vmode-ext    Include support for XFree86 virtual screens.],
1205   [with_xf86vmode="$withval"; with_xf86vmode_req="$withval"],
1206   [with_xf86vmode=yes])
1207
1208 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
1209
1210 if test "$with_xf86vmode" = yes; then
1211
1212   # first check for xf86vmode.h
1213   AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes])
1214
1215   # if that succeeded, then check for the -lXxf86vm
1216   if test "$have_xf86vmode" = yes; then
1217     have_xf86vmode=no
1218     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
1219                   [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"],
1220                    [true], -lXext -lX11)
1221   fi
1222
1223   # if that succeeded, then we've really got it.
1224   if test "$have_xf86vmode" = yes; then
1225     AC_DEFINE(HAVE_XF86VMODE)
1226   fi
1227
1228 elif test "$with_xf86vmode" != no; then
1229   echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
1230   exit 1
1231 fi
1232
1233
1234 ###############################################################################
1235 #
1236 #       Check for the XF86VMODE server extension (for gamma fading.)
1237 #
1238 ###############################################################################
1239
1240 have_xf86gamma=no
1241 have_xf86gamma_ramp=no
1242 with_xf86gamma_req=unspecified
1243 AC_ARG_WITH(xf86gamma-ext,
1244 [  --with-xf86gamma-ext    Include support for XFree86 gamma fading.],
1245   [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"],
1246   [with_xf86gamma=yes])
1247
1248 HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma)
1249
1250 if test "$with_xf86gamma" = yes; then
1251
1252   # first check for xf86vmode.h, if we haven't already
1253   if test "$have_xf86vmode" = yes; then
1254     have_xf86gamma=yes
1255   else
1256     AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes])
1257   fi
1258
1259   # if that succeeded, then check for the -lXxf86vm
1260   if test "$have_xf86gamma" = yes; then
1261     have_xf86gamma=no
1262     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma,
1263                   [have_xf86gamma=yes],
1264                    [true], -lXext -lX11)
1265   fi
1266
1267   # check for the Ramp versions of the functions too.
1268   if test "$have_xf86gamma" = yes; then
1269     have_xf86gamma_ramp=no
1270     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGammaRamp,
1271                   [have_xf86gamma_ramp=yes],
1272                    [true], -lXext -lX11)
1273   fi
1274
1275   # if those tests succeeded, then we've really got the functions.
1276   if test "$have_xf86gamma" = yes; then
1277     AC_DEFINE(HAVE_XF86VMODE_GAMMA)
1278   fi
1279
1280   if test "$have_xf86gamma_ramp" = yes; then
1281     AC_DEFINE(HAVE_XF86VMODE_GAMMA_RAMP)
1282   fi
1283
1284   # pull in the lib, if we haven't already
1285   if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then
1286     SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
1287   fi
1288
1289 elif test "$with_xf86gamma" != no; then
1290   echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode"
1291   exit 1
1292 fi
1293
1294
1295 ###############################################################################
1296 #
1297 #       Check for HP XHPDisableReset and XHPEnableReset.
1298 #
1299 ###############################################################################
1300
1301 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
1302                   [AC_DEFINE(HAVE_XHPDISABLERESET)
1303                    SAVER_LIBS="-lXhp11 $SAVER_LIBS"])
1304
1305
1306 ###############################################################################
1307 #
1308 #       Check for /proc/interrupts.
1309 #
1310 ###############################################################################
1311
1312 have_proc_interrupts=no
1313 with_proc_interrupts_req=unspecified
1314 AC_ARG_WITH(proc-interrupts,
1315 [  --with-proc-interrupts  Include support for consulting the /proc/interrupts
1316                           file to notice keyboard activity.],
1317   [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
1318   [with_proc_interrupts=yes])
1319
1320 if test "$with_proc_interrupts" = yes; then
1321
1322    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
1323     ac_cv_have_proc_interrupts,
1324     [ac_cv_have_proc_interrupts=no
1325      if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
1326        ac_cv_have_proc_interrupts=yes
1327      fi
1328     ])
1329    have_proc_interrupts=$ac_cv_have_proc_interrupts
1330
1331   if test "$have_proc_interrupts" = yes; then
1332     AC_DEFINE(HAVE_PROC_INTERRUPTS)
1333   fi
1334
1335 elif test "$with_proc_interrupts" != no; then
1336   echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
1337   exit 1
1338 fi
1339
1340
1341 ###############################################################################
1342 #
1343 #       The --enable-locking option
1344 #
1345 ###############################################################################
1346
1347 AC_ARG_ENABLE(locking,[
1348 Screen locking options:
1349
1350   --enable-locking        Compile in support for locking the display.
1351   --disable-locking       Do not allow locking at all.
1352 ],
1353   [enable_locking="$enableval"],[enable_locking=yes])
1354 if test "$enable_locking" = yes; then
1355   true
1356 elif test "$enable_locking" = no; then
1357   AC_DEFINE(NO_LOCKING)
1358 else
1359   echo "error: must be yes or no: --enable-locking=$enable_locking"
1360   exit 1
1361 fi
1362
1363
1364
1365 ###############################################################################
1366 #
1367 #       The --enable-vt-locking option
1368 #
1369 ###############################################################################
1370
1371 #ac_vt_lockswitch=no
1372 #AC_ARG_ENABLE(vt-locking,[
1373 #  --enable-vt-locking     Compile in support for locking Virtual Terminals.
1374 #                          This is the default if the system supports it, and
1375 #                          if locking support is included (--enable-locking.)
1376 #  --disable-vt-locking    Do not allow locking of VTs, even if locking is
1377 #                          enabled.],
1378 #  [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
1379 #if test "$enable_vt_locking" = yes; then
1380 #
1381 #  AC_CACHE_CHECK([for the VT_LOCKSWITCH ioctl], ac_cv_vt_lockswitch,
1382 #   [AC_TRY_COMPILE([#include <fcntl.h>
1383 #                   #include <sys/ioctl.h>
1384 #                   #include <sys/vt.h>],
1385 #                  [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
1386 #                  [ac_cv_vt_lockswitch=yes],
1387 #                  [ac_cv_vt_lockswitch=no])])
1388 #  ac_vt_lockswitch=$ac_cv_vt_lockswitch
1389 #
1390 #elif test "$enable_vt_locking" = no; then
1391 #  true
1392 #else
1393 #  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
1394 #  exit 1
1395 #fi
1396 #
1397 #if test "$ac_vt_lockswitch" = yes; then
1398 #  AC_DEFINE(HAVE_VT_LOCKSWITCH)
1399 #  # the VT_LOCKSWITCH ioctl can only be used when running as root.
1400 #  # #### but it doesn't work yet, so don't worry about that for now.
1401 ##  need_setuid=yes
1402 #fi
1403
1404
1405
1406 ###############################################################################
1407 #
1408 #       Check for PAM.
1409 #
1410 ###############################################################################
1411
1412 case "$host" in
1413   *-solaris*)
1414    # Solaris systems tend to come with PAM misconfigured.
1415    #  Don't build it by default, even if the headers exist.
1416    with_pam_default=no
1417    ;;
1418   *)
1419    # Default to building PAM support on all other systems, if it exists.
1420    with_pam_default=yes
1421   ;;
1422 esac
1423
1424 have_pam=no
1425 with_pam_req=unspecified
1426
1427 AC_ARG_WITH(pam,
1428 [  --with-pam              Include support for PAM (Pluggable Auth Modules.)],
1429   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
1430
1431 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1432
1433 if test "$enable_locking" = yes -a "$with_pam" = yes; then
1434   AC_CACHE_CHECK([for PAM], ac_cv_pam,
1435                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1436                                    [ac_cv_pam=yes],
1437                                    [ac_cv_pam=no])])
1438   if test "$ac_cv_pam" = yes ; then
1439     have_pam=yes
1440     AC_DEFINE(HAVE_PAM)
1441     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
1442
1443     # libpam typically requires dlopen and dlsym.  On FreeBSD,
1444     # those are in libc.  On Linux and Solaris, they're in libdl.
1445     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
1446
1447     AC_MSG_CHECKING(how to call pam_strerror)
1448     AC_CACHE_VAL(ac_cv_pam_strerror_args,
1449      [AC_TRY_COMPILE([#include <stdio.h>
1450                       #include <stdlib.h>
1451                       #include <security/pam_appl.h>],
1452                      [pam_handle_t *pamh = 0;
1453                       char *s = pam_strerror(pamh, PAM_SUCCESS);],
1454                      [ac_pam_strerror_args=2],
1455                      [AC_TRY_COMPILE([#include <stdio.h>
1456                                       #include <stdlib.h>
1457                                       #include <security/pam_appl.h>],
1458                                      [char *s =
1459                                        pam_strerror(PAM_SUCCESS);],
1460                                      [ac_pam_strerror_args=1],
1461                                      [ac_pam_strerror_args=0])])
1462       ac_cv_pam_strerror_args=$ac_pam_strerror_args])
1463     ac_pam_strerror_args=$ac_cv_pam_strerror_args
1464     if test "$ac_pam_strerror_args" = 1 ; then
1465       AC_MSG_RESULT(one argument)
1466     elif test "$ac_pam_strerror_args" = 2 ; then
1467       AC_DEFINE(PAM_STRERROR_TWO_ARGS)
1468       AC_MSG_RESULT(two arguments)
1469     else
1470       AC_MSG_RESULT(unknown)
1471     fi
1472   fi
1473 fi
1474
1475
1476 ###############################################################################
1477 #
1478 #       Check for Kerberos.
1479 #
1480 ###############################################################################
1481
1482 have_kerberos=no
1483 have_kerberos5=no
1484 with_kerberos_req=unspecified
1485
1486 AC_ARG_WITH(kerberos, 
1487 [  --with-kerberos         Include support for Kerberos authentication.],
1488   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
1489
1490 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
1491
1492 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
1493   AC_CACHE_CHECK([for Kerberos 4], ac_cv_kerberos,
1494                  [AC_TRY_X_COMPILE([#include <krb.h>],,
1495                                    [ac_cv_kerberos=yes],
1496                                    [ac_cv_kerberos=no])])
1497   AC_CACHE_CHECK([for Kerberos 5], ac_cv_kerberos5,
1498                  [AC_TRY_X_COMPILE([#include <kerberosIV/krb.h>],,
1499                                    [ac_cv_kerberos5=yes],
1500                                    [ac_cv_kerberos5=no])])
1501
1502   if test "$ac_cv_kerberos" = yes ; then
1503     have_kerberos=yes
1504     AC_DEFINE(HAVE_KERBEROS)
1505   fi
1506
1507   if test "$ac_cv_kerberos5" = yes ; then
1508     have_kerberos=yes
1509     have_kerberos5=yes
1510     AC_DEFINE(HAVE_KERBEROS)
1511     AC_DEFINE(HAVE_KERBEROS5)
1512   fi
1513
1514   if test "$have_kerberos5" = yes ; then
1515     # from Matt Knopp <mhat@infocalypse.netlag.com>
1516     # (who got it from amu@mit.edu)
1517     PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcrypt -lcom_err"
1518   elif test "$have_kerberos" = yes ; then
1519     # from Tim Showalter <tjs+@andrew.cmu.edu>
1520     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes"
1521   fi
1522
1523   if test "$have_kerberos" = yes ; then
1524     AC_CHECK_FUNC(res_search,,
1525       AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
1526         AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
1527       ))
1528   fi
1529 fi
1530
1531
1532 ###############################################################################
1533 #
1534 #       Check for the nine billion variants of shadow passwords...
1535 #
1536 ###############################################################################
1537
1538 need_setuid=no
1539
1540 have_shadow=no
1541 with_shadow_req=unspecified
1542
1543 AC_ARG_WITH(shadow,
1544 [  --with-shadow           Include support for shadow password authentication.],
1545   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
1546
1547 HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
1548
1549 if test "$enable_locking" = no ; then
1550   with_shadow_req=no
1551   with_shadow=no
1552 fi
1553
1554
1555 ###############################################################################
1556 #
1557 #       Check for Sun "adjunct" passwords.
1558 #
1559 ###############################################################################
1560
1561 if test "$with_shadow" = yes ; then
1562   AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
1563                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1564                                     #include <unistd.h>
1565                                     #include <sys/types.h>
1566                                     #include <sys/label.h>
1567                                     #include <sys/audit.h>
1568                                     #include <pwdadj.h>],
1569                       [struct passwd_adjunct *p = getpwanam("nobody");
1570                        const char *pw = p->pwa_passwd;],
1571                       [ac_cv_sun_adjunct=yes],
1572                       [ac_cv_sun_adjunct=no])])
1573   if test "$ac_cv_sun_adjunct" = yes; then
1574     have_shadow_adjunct=yes
1575     have_shadow=yes
1576     need_setuid=yes
1577   fi
1578 fi
1579
1580
1581 ###############################################################################
1582 #
1583 #       Check for DEC and SCO so-called "enhanced" security.
1584 #
1585 ###############################################################################
1586
1587 if test "$with_shadow" = yes ; then
1588   AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
1589                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1590                                     #include <unistd.h>
1591                                     #include <sys/types.h>
1592                                     #include <pwd.h>
1593                                     #include <sys/security.h>
1594                                     #include <prot.h>],
1595                       [struct pr_passwd *p;
1596                        const char *pw;
1597                        set_auth_parameters(0, 0);
1598                        check_auth_parameters();
1599                        p = getprpwnam("nobody");
1600                        pw = p->ufld.fd_encrypt;],
1601                       [ac_cv_enhanced_passwd=yes],
1602                       [ac_cv_enhanced_passwd=no])])
1603   if test $ac_cv_enhanced_passwd = yes; then
1604     have_shadow_enhanced=yes
1605     have_shadow=yes
1606     need_setuid=yes
1607
1608     # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
1609     # (I'm told it needs -lcurses too, but I don't understand why.)
1610     # But on DEC, it's in -lsecurity.
1611     #
1612     AC_CHECK_LIB(prot, getprpwnam, 
1613                  [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
1614                  [AC_CHECK_LIB(security, getprpwnam, 
1615                                [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
1616                  [-lx])
1617   fi
1618 fi
1619
1620 ###############################################################################
1621 #
1622 #       Check for HP's entry in the "Not Invented Here" Sweepstakes.
1623 #
1624 ###############################################################################
1625
1626 if test "$with_shadow" = yes ; then
1627   AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
1628                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1629                                     #include <unistd.h>
1630                                     #include <sys/types.h>
1631                                     #include <pwd.h>
1632                                     #include <hpsecurity.h>
1633                                     #include <prot.h>],
1634                       [struct s_passwd *p = getspwnam("nobody");
1635                        const char *pw = p->pw_passwd;],
1636                       [ac_cv_hpux_passwd=yes],
1637                       [ac_cv_hpux_passwd=no])])
1638   if test "$ac_cv_hpux_passwd" = yes; then
1639     have_shadow_hpux=yes
1640     have_shadow=yes
1641     need_setuid=yes
1642
1643     # on HPUX, bigcrypt is in -lsec
1644     AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
1645   fi
1646 fi
1647
1648
1649 ###############################################################################
1650 #
1651 #       Check for FreeBSD-style shadow passwords.
1652 #
1653 #       On FreeBSD, getpwnam() and friends work just like on non-shadow-
1654 #       password systems -- except you only get stuff in the pw_passwd field
1655 #       if the running program is setuid.  So, guess that we've got this
1656 #       lossage to contend with if /etc/master.passwd exists, and default to
1657 #       a setuid installation.
1658 #
1659 ###############################################################################
1660
1661 if test "$with_shadow" = yes ; then
1662   AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
1663                  [if test -f /etc/master.passwd ; then
1664                     ac_cv_master_passwd=yes
1665                   else
1666                     ac_cv_master_passwd=no
1667                   fi])
1668   if test "$ac_cv_master_passwd" = yes; then
1669     need_setuid=yes
1670   fi
1671 fi
1672
1673
1674 ###############################################################################
1675 #
1676 #       Check for traditional (ha!) shadow passwords.
1677 #
1678 ###############################################################################
1679
1680 if test "$with_shadow" = yes ; then
1681   AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
1682                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1683                                     #include <unistd.h>
1684                                     #include <sys/types.h>
1685                                     #include <pwd.h>
1686                                     #include <shadow.h>],
1687                       [struct spwd *p = getspnam("nobody");
1688                        const char *pw = p->sp_pwdp;],
1689                       [ac_cv_shadow=yes],
1690                       [ac_cv_shadow=no])])
1691   if test "$ac_cv_shadow" = yes; then
1692     have_shadow=yes
1693     need_setuid=yes
1694
1695     # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
1696     have_getspnam=no
1697     AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
1698     if test "$have_getspnam" = no ; then
1699       AC_CHECK_LIB(gen, getspnam,
1700                    [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
1701     fi
1702   fi
1703 fi
1704
1705
1706 ###############################################################################
1707 #
1708 #       Check for other libraries needed for non-shadow passwords.
1709 #
1710 ###############################################################################
1711
1712 if test "$enable_locking" = yes ; then
1713
1714   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
1715   have_crypt=no
1716   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
1717   if test "$have_crypt" = no ; then
1718     AC_CHECK_LIB(crypt, crypt,
1719                  [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1720   fi
1721 fi
1722
1723
1724 # Most of the above shadow mechanisms will have set need_setuid to yes,
1725 # if they were found.  But, on some systems, we need setuid even when
1726 # using plain old vanilla passwords.
1727 #
1728 if test "$enable_locking" = yes ; then
1729   case "$host" in
1730     *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
1731       need_setuid=yes
1732     ;;
1733   esac
1734 fi
1735
1736
1737 if test "$have_shadow_adjunct" = yes ; then
1738   AC_DEFINE(HAVE_ADJUNCT_PASSWD)
1739 elif test "$have_shadow_enhanced" = yes ; then
1740   AC_DEFINE(HAVE_ENHANCED_PASSWD)
1741 elif test "$have_shadow_hpux" = yes ; then
1742   AC_DEFINE(HAVE_HPUX_PASSWD)
1743 elif test "$have_shadow" = yes ; then
1744   AC_DEFINE(HAVE_SHADOW_PASSWD)
1745 fi
1746
1747
1748 ###############################################################################
1749 #
1750 #       Check for -lXm.
1751 #
1752 ###############################################################################
1753
1754 have_motif=no
1755 with_motif_req=unspecified
1756 AC_ARG_WITH(motif,[
1757 User interface options:
1758
1759   --with-motif            Use the Motif toolkit for the user interface.],
1760   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes])
1761
1762 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
1763
1764 if test "$with_motif" != yes -a "$with_motif" != no ; then
1765   echo "error: must be yes or no: --with-motif=$with_motif"
1766   exit 1
1767 fi
1768
1769 if test "$with_motif" = yes; then
1770   have_motif=no
1771   AC_CHECK_X_HEADER(Xm/Xm.h,
1772                     [have_motif=yes
1773                      AC_DEFINE(HAVE_MOTIF)
1774                      MOTIF_LIBS="$MOTIF_LIBS -lXm"])
1775 fi
1776
1777
1778 if test "$have_motif" = yes; then
1779   AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)])
1780 fi
1781
1782
1783 ###############################################################################
1784 #
1785 #       Check for -lgtk (and Gnome stuff)
1786 #
1787 ###############################################################################
1788
1789 have_gtk=no
1790 with_gtk_req=unspecified
1791 AC_ARG_WITH(gtk,
1792 [  --with-gtk              Use the Gtk toolkit for the user interface.],
1793   [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
1794
1795 # if --with-gtk=/directory/ was specified, remember that directory so that
1796 # we can also look for the `gtk-config' program in that directory.
1797 case "$with_gtk" in
1798   /*)
1799     gtk_dir="$with_gtk"
1800     ;;
1801   *)
1802     gtk_dir=""
1803     ;;
1804 esac
1805
1806 HANDLE_X_PATH_ARG(with_gtk, --with-gtk, Gtk)
1807
1808 if test "$with_gtk" != yes -a "$with_gtk" != no ; then
1809   echo "error: must be yes or no: --with-gtk=$with_gtk"
1810   exit 1
1811 fi
1812
1813 have_gnome=no
1814 with_gnome_req=unspecified
1815 AC_ARG_WITH(gnome,
1816 [  --with-gnome            Include support for the Gnome Control Center.],
1817   [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes])
1818
1819 # if --with-gnome=/directory/ was specified, remember that directory so that
1820 # we can also look for the `gnome-config' program in that directory.
1821 case "$with_gnome" in
1822   /*)
1823     gnome_dir="$with_gnome"
1824     ;;
1825   *)
1826     gnome_dir=""
1827     ;;
1828 esac
1829
1830 HANDLE_X_PATH_ARG(with_gnome, --with-gnome, Gnome)
1831
1832 if test "$with_gnome" != yes -a "$with_gnome" != no ; then
1833   echo "error: must be yes or no: --with-gnome=$with_gnome"
1834   exit 1
1835 fi
1836
1837
1838 jurassic_gtk=no
1839 if test "$with_gtk" = yes; then
1840   have_gtk=no
1841   
1842   # if the user specified --with-gtk=/foo/ then look in /foo/bin/
1843   # for glib-config and gtk-config.
1844   #
1845   gtk_path="$PATH"
1846
1847   if test ! -z "$gtk_dir"; then
1848     # canonicalize slashes.
1849     gtk_dir=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
1850     gtk_path="$gtk_dir:$gtk_path"
1851   fi
1852
1853   if test ! -z "gnome_dir"; then
1854     # canonicalize slashes.
1855     gnome_dir=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
1856     gtk_path="$gnome_dir:$gtk_path"
1857   fi
1858
1859   AC_PATH_PROGS(glib_config,  glib12-config glib-config,,  $gtk_path)
1860   AC_PATH_PROGS(gtk_config,   gtk12-config  gtk-config,,   $gtk_path)
1861
1862   if test "$with_gnome" = yes; then
1863     AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path)
1864   fi
1865
1866   if test -n "$glib_config" -a  -n "gtk_config" ; then
1867     have_gtk=yes
1868     if test "$with_gnome" = yes -a -n "$gnome_config" ; then
1869       have_gnome=yes
1870     fi
1871   fi
1872
1873   if test "$have_gtk" = yes; then
1874     AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
1875                    [ac_cv_gtk_version_string=`$gtk_config --version`])
1876     ac_gtk_version_string=$ac_cv_gtk_version_string
1877     # M4 sucks!!
1878     changequote(X,Y)
1879     maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
1880     min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
1881     changequote([,])
1882     ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
1883     if test -z "$ac_gtk_version"; then
1884       ac_gtk_version=unknown
1885       ac_gtk_version_string=unknown
1886     fi
1887     if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
1888     then
1889       have_gtk=no
1890       have_gnome=no
1891       jurassic_gtk=yes
1892     fi
1893   fi
1894
1895   if test "$have_gtk" = yes; then
1896     AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
1897                    [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
1898     AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
1899                    [ac_cv_gtk_config_libs=`$gtk_config --libs`])
1900   fi
1901   ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
1902   ac_gtk_config_libs=$ac_cv_gtk_config_libs
1903
1904   # Check for Gnome Capplet support.
1905   #
1906   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
1907     gnome_config_libs="gtk capplet gnomeui xml"
1908     AC_MSG_CHECKING(for Gnome capplet includes)
1909     AC_CACHE_VAL(ac_cv_gnome_config_cflags,
1910       [if ( $gnome_config --cflags $gnome_config_libs 2>&1 >/dev/null | \
1911             grep Unknown >/dev/null ) ; then
1912          ac_cv_gnome_config_cflags=''
1913        else
1914          ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs`
1915        fi])
1916     ac_gnome_config_cflags=$ac_cv_gnome_config_cflags
1917     if test "$ac_gnome_config_cflags" = "" ; then
1918       have_gnome=no
1919       AC_MSG_RESULT(no)
1920     else
1921       AC_MSG_RESULT($ac_gnome_config_cflags)
1922     fi
1923   fi
1924
1925   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
1926     AC_MSG_CHECKING(for Gnome capplet libs)
1927     AC_CACHE_VAL(ac_cv_gnome_config_libs,
1928       [if ( $gnome_config --libs $gnome_config_libs 2>&1 >/dev/null |
1929             grep Unknown >/dev/null ) ; then
1930          ac_cv_gnome_config_libs=''
1931        else
1932          ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs`
1933        fi])
1934     ac_gnome_config_libs=$ac_cv_gnome_config_libs
1935     if test "$ac_gnome_config_libs" = "" ; then
1936       have_gnome=no
1937       AC_MSG_RESULT(no)
1938     else
1939       AC_MSG_RESULT($ac_gnome_config_libs)
1940     fi
1941   fi
1942
1943   GNOME_DATADIR=""
1944   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
1945     GNOME_DATADIR=`$gnome_config --datadir`
1946   fi
1947
1948
1949   # If we have Gnome, then override the gtk-config values with 
1950   # the gnome-config values.
1951   #
1952   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
1953     ac_gtk_config_cflags=$ac_gnome_config_cflags
1954     ac_gtk_config_libs=$ac_gnome_config_libs
1955     AC_DEFINE(HAVE_CRAPPLET)
1956   fi
1957
1958
1959   if test "$have_gtk" = yes; then
1960     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
1961     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
1962     AC_DEFINE(HAVE_GTK)
1963   fi
1964
1965 fi
1966
1967
1968 # Check for the Gnome Help Browser.
1969 #
1970 if test "$have_gnome" = yes; then
1971   AC_CHECK_PROG(have_gnome_help, gnome-help-browser, yes, no)
1972 else
1973   have_gnome_help=no
1974 fi
1975
1976
1977 ###############################################################################
1978 #
1979 #       Check for -lxml (if we have Gtk)
1980 #
1981 ###############################################################################
1982
1983 have_xml=no
1984 with_xml_req=unspecified
1985 AC_ARG_WITH(xml,
1986 [  --with-xml              The XML toolkit is needed for some parts of
1987                           the Gtk interface.],
1988 [with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes])
1989
1990 HANDLE_X_PATH_ARG(with_xml, --with-xml, XML)
1991
1992 if test "$with_xml" != yes -a "$with_xml" != no ; then
1993   echo "error: must be yes or no: --with-xml=$with_xml"
1994   exit 1
1995 fi
1996
1997 if test "$have_gtk" != yes; then
1998   # don't bother if no GTK
1999   with_xml=no
2000 fi
2001
2002 if test "$with_xml" = yes; then
2003   have_xml=no
2004
2005   # the XML stuff is likely to be in GTK paths.
2006   ac_save_X_CFLAGS="$X_CFLAGS"
2007   ac_save_X_LIBS="$X_LIBS"
2008   X_CFLAGS="$X_CFLAGS $ac_gtk_config_cflags"
2009   X_LIBS="$X_LIBS $ac_gtk_config_libs"
2010
2011   AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes])
2012
2013   if test "$have_xml" = yes; then
2014     # we have the header, now check for the library
2015     have_xml=no
2016     AC_CHECK_X_LIB(xml, xmlParseChunk,
2017                    [have_xml=yes
2018                     XML_LIBS="-lxml"
2019                     AC_DEFINE(HAVE_XML)])
2020   fi
2021
2022   X_CFLAGS="$ac_save_X_CFLAGS"
2023   X_LIBS="$ac_save_X_LIBS"
2024
2025 fi
2026
2027
2028 ###############################################################################
2029 #
2030 #       Checking whether Motif is really Lesstif.
2031 #
2032 ###############################################################################
2033
2034 have_lesstif=no
2035 if test "$have_motif" = yes ; then
2036   AC_CACHE_CHECK([whether Motif is really LessTif], 
2037                  ac_cv_have_lesstif,
2038                  [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
2039                                    [long vers = LesstifVersion;],
2040                                    [ac_cv_have_lesstif=yes],
2041                                    [ac_cv_have_lesstif=no])])
2042   have_lesstif=$ac_cv_have_lesstif
2043 fi
2044
2045
2046 lesstif_version=unknown
2047 lesstif_version_string=unknown
2048
2049 if test "$have_lesstif" = yes ; then
2050   ltv=unknown
2051   echo unknown > conftest-lt
2052   AC_CACHE_CHECK([LessTif version number],
2053                  ac_cv_lesstif_version_string,
2054       [AC_TRY_X_RUN([#include <stdio.h>
2055                      #include <Xm/Xm.h>
2056                      int main() {
2057                        FILE *f = fopen("conftest-lt", "w");
2058                        if (!f) exit(1);
2059                        fprintf(f, "%d %d.%d\n", LesstifVersion,
2060                           LESSTIF_VERSION, LESSTIF_REVISION);
2061                        fclose(f);
2062                        exit(0);
2063                      }],
2064                     [ltv=`cat conftest-lt`
2065                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
2066                      ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
2067                     [ac_cv_lesstif_version=unknown
2068                      ac_cv_lesstif_version_string=unknown],
2069                     [ac_cv_lesstif_version=unknown
2070                      ac_cv_lesstif_version_string=unknown])])
2071   rm -f conftest-lt
2072   lesstif_version=$ac_cv_lesstif_version
2073   lesstif_version_string=$ac_cv_lesstif_version_string
2074
2075 fi
2076
2077
2078 if test "$have_motif" = yes ; then
2079   mtv=unknown
2080   echo unknown > conftest-mt
2081   AC_CACHE_CHECK([Motif version number],
2082                  ac_cv_motif_version_string,
2083       [AC_TRY_X_RUN([#include <stdio.h>
2084                      #include <Xm/Xm.h>
2085                      int main() {
2086                        FILE *f = fopen("conftest-mt", "w");
2087                        if (!f) exit(1);
2088                        fprintf(f, "%d %d.%d\n", XmVersion,
2089                           XmVERSION, XmREVISION);
2090                        fclose(f);
2091                        exit(0);
2092                      }],
2093                     [mtv=`cat conftest-mt`
2094                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
2095                      ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
2096                     [ac_cv_motif_version=unknown
2097                      ac_cv_motif_version_string=unknown],
2098                     [ac_cv_motif_version=unknown
2099                      ac_cv_motif_version_string=unknown])])
2100   rm -f conftest-mt
2101   motif_version=$ac_cv_motif_version
2102   motif_version_string=$ac_cv_motif_version_string
2103
2104 fi
2105
2106
2107 ###############################################################################
2108 #
2109 #       Checking whether Motif requires -lXpm.
2110 #
2111 #       If this is Motif 2.x, and we have XPM, then link against XPM as well.
2112 #       The deal is, Motif 2.x requires XPM -- but it's a compilation option
2113 #       of the library whether to build the XPM code into libXm, or whether
2114 #       to rely on an external libXm.  So the only way to tell whether XPM is
2115 #       a link-time requirement is to examine libXm.a, which is very
2116 #       difficult to do in an autoconf script.  So... if it's Motif 2.x, we
2117 #       always link against XPM if the XPM lib exists (and this will be a
2118 #       no-op if libXm happens to already have the XPM code in it.)
2119 #
2120 ###############################################################################
2121
2122 motif_requires_xpm=no
2123 if test "$have_motif" = yes ; then
2124    AC_MSG_CHECKING(whether Motif requires XPM)
2125    if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000
2126    then
2127      motif_requires_xpm=yes
2128      AC_MSG_RESULT(maybe)
2129    else
2130      AC_MSG_RESULT(no)
2131    fi
2132 fi
2133
2134
2135 ###############################################################################
2136 #
2137 #       Checking whether Motif requires -lXp.
2138 #
2139 #       Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
2140 #       Extension".   Why this extension isn't in -lXext with all the others,
2141 #       I have no idea.
2142 #
2143 ###############################################################################
2144
2145 have_xp_ext=no
2146 if test "$have_motif" = yes ; then
2147    have_xp_ext=no
2148    AC_CHECK_X_LIB(Xp, XpQueryExtension,
2149                   [have_xp_ext=yes; MOTIF_LIBS="$MOTIF_LIBS -lXp"],
2150                   [true], -lX11 -lXext -lm)
2151 fi
2152
2153
2154 ###############################################################################
2155 #
2156 #       Checking whether Motif requires -lXintl (for _Xsetlocale.)
2157 #
2158 ###############################################################################
2159
2160 have_xintl=no
2161 if test "$have_motif" = yes ; then
2162   AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
2163                  -lX11 -lXext -lm)
2164   if test "$have_xintl" = yes; then
2165     MOTIF_LIBS="$MOTIF_LIBS -lXintl"
2166   fi
2167 fi
2168
2169
2170 ###############################################################################
2171 #
2172 #       Check for -lGL or -lMesaGL.
2173 #
2174 ###############################################################################
2175
2176 have_gl=no
2177 ac_have_mesa_gl=no
2178 with_gl_req=unspecified
2179 gl_halfassed=no
2180 AC_ARG_WITH(gl,[
2181 Graphics options:
2182
2183   --with-gl               Build those demos which depend on OpenGL.],
2184   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
2185
2186 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
2187
2188 ac_mesagl_version=unknown
2189 ac_mesagl_version_string=unknown
2190
2191 if test "$with_gl" = yes; then
2192   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
2193   if test "$have_gl" = yes ; then
2194     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no)
2195   fi
2196
2197   # If we have the headers, try and figure out which vendor it's from.
2198   #
2199   if test "$have_gl" = yes ; then
2200
2201     # We need to know whether it's MesaGL so that we know which libraries
2202     # to link against.
2203     #
2204     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
2205       [ac_cv_have_mesa_gl=no
2206        AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
2207       ])
2208     ac_have_mesa_gl=$ac_cv_have_mesa_gl
2209  
2210
2211     gl_lib_1=""
2212     GL_LIBS=""
2213
2214
2215     # Some versions of MesaGL are compiled to require -lpthread.
2216     # So if the Mesa headers exist, and -lpthread exists, then always
2217     # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
2218     #
2219     if test "$ac_have_mesa_gl" = yes; then
2220       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
2221     fi
2222
2223
2224     # If we have Mesa headers, check to see if we can link against -lMesaGL.
2225     # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
2226     # Else, warn that GL is busted.  (We have the headers, but no libs.)
2227     #
2228
2229     if test "$ac_have_mesa_gl" = yes ; then
2230       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
2231                      [gl_lib_1="MesaGL"
2232                       GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
2233                      [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
2234     fi
2235
2236     if test "$gl_lib_1" = "" ; then
2237       AC_CHECK_X_LIB(GL, glXCreateContext, 
2238                      [gl_lib_1="GL"
2239                       GL_LIBS="-lGL -lGLU $GL_LIBS"],
2240                      [], -lGLU $GL_LIBS -lX11 -lXext -lm)
2241     fi
2242
2243     if test "$gl_lib_1" = "" ; then
2244       # we have headers, but no libs -- bail.
2245       have_gl=no
2246       ac_have_mesa_gl=no
2247       gl_halfassed=yes
2248     else
2249       # linking works -- we can build the GL hacks.
2250       AC_DEFINE(HAVE_GL)
2251       if test "$ac_have_mesa_gl" = yes ; then
2252         AC_DEFINE(HAVE_MESA_GL)
2253       fi
2254     fi
2255   fi
2256
2257
2258   # Now that we know we have GL headers and libs, do some more GL testing.
2259   #
2260
2261   if test "$have_gl" = yes ; then
2262     # If it's MesaGL, we'd like to issue a warning if the version number
2263     # is less than or equal to 2.6, because that version had a security bug.
2264     #
2265     if test "$ac_have_mesa_gl" = yes; then
2266
2267       AC_CACHE_CHECK([MesaGL version number], ac_cv_mesagl_version_string,
2268         [cat > conftest.$ac_ext <<EOF
2269 #line __oline__ "configure"
2270 #include "confdefs.h"
2271 #include <GL/gl.h>
2272 #ifndef MESA_MAJOR_VERSION
2273 # include <GL/xmesa.h>
2274 # define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
2275 # define MESA_MINOR_VERSION XMESA_MINOR_VERSION
2276 #endif
2277 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
2278 EOF
2279
2280          ac_save_CPPFLAGS="$CPPFLAGS"
2281          if test \! -z "$includedir" ; then 
2282            CPPFLAGS="$CPPFLAGS -I$includedir"
2283          fi
2284          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2285
2286           # M4 sucks!!
2287          changequote(X,Y)
2288          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | sed -n \
2289               's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
2290          changequote([,])
2291
2292          rm -f conftest.$ac_ext
2293
2294          CPPFLAGS="$ac_save_CPPFLAGS"
2295
2296          if test "$mglv" = ""; then
2297            ac_mesagl_version=unknown
2298            ac_mesagl_version_string=unknown
2299          else
2300            ac_mesagl_version_string=$mglv
2301            maj=`echo $mglv | sed -n 's/\..*//p'`
2302            min=`echo $mglv | sed -n 's/.*\.//p'`
2303            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
2304            if test -z "$ac_mesagl_version"; then
2305              ac_mesagl_version=unknown
2306              ac_mesagl_version_string=unknown
2307            fi
2308          fi
2309          ac_cv_mesagl_version=$ac_mesagl_version
2310          ac_cv_mesagl_version_string=$ac_mesagl_version_string
2311       ])
2312       ac_mesagl_version=$ac_cv_mesagl_version
2313       ac_mesagl_version_string=$ac_cv_mesagl_version_string
2314     fi
2315
2316
2317     # Check for OpenGL 1.1 features.
2318     #
2319     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
2320                    [true], $GL_LIBS -lX11 -lXext -lm)
2321   fi
2322
2323 elif test "$with_gl" != no; then
2324   echo "error: must be yes or no: --with-gl=$with_gl"
2325   exit 1
2326 fi
2327
2328
2329 ###############################################################################
2330 #
2331 #       Check for -lgle.
2332 #
2333 ###############################################################################
2334
2335 have_gle=no
2336 with_gle_req=unspecified
2337 gle_halfassed=no
2338 AC_ARG_WITH(gle,
2339 [  --with-gle              Build those demos which depend on GLE
2340                           (the OpenGL "extrusion" library.)],
2341   [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
2342
2343 HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
2344
2345 GLE_LIBS=""
2346
2347 if test "$with_gle" = yes; then
2348
2349   AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no)
2350   if test "$have_gle3" = yes ; then
2351     have_gle=yes;
2352   else
2353     AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no)
2354     if test "$have_gle" = yes ; then
2355       AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no)
2356     fi
2357   fi
2358
2359   if test "$have_gle" = yes ; then
2360     have_gle=no
2361     gle_halfassed=yes
2362     AC_CHECK_X_LIB(gle, gleCreateGC, 
2363                    [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
2364                    [], $GL_LIBS -lX11 -lXext -lm)
2365   fi
2366   if test "$have_gle" = yes ; then
2367     have_gle=no
2368     gle_halfassed=yes
2369
2370     # sometimes the libmatrix stuff is included in libgle.  look there first.
2371 #
2372 # I don't get it.  For some reason, this test passes on SGI, as if
2373 # uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
2374 # Yet the link is succeeding.  Why???
2375 #
2376 #    AC_CHECK_X_LIB(gle, uview_direction_d, 
2377 #                   [have_gle=yes; gle_halfassed=no],
2378 #                   [], $GL_LIBS -lX11 -lXext -lm)
2379
2380     # As of GLE 3 this is in libgle, and has changed name to uview_direction!
2381     # *sigh*
2382     if test "$have_gle3" = yes ; then
2383       AC_CHECK_X_LIB(gle, uview_direction, 
2384                      [have_gle=yes; gle_halfassed=no],
2385                     [], $GL_LIBS -lX11 -lXext -lm)
2386     fi
2387     # if it wasn't in libgle, then look in libmatrix.
2388     if test "$have_gle" = no ; then
2389       AC_CHECK_X_LIB(matrix, uview_direction_d, 
2390                      [have_gle=yes; gle_halfassed=no;
2391                       GLE_LIBS="$GLE_LIBS -lmatrix"],
2392                     [], $GL_LIBS -lX11 -lXext -lm)
2393     fi
2394   fi
2395
2396   if test "$have_gle" = yes ; then
2397     AC_DEFINE(HAVE_GLE)
2398     if test "$have_gle3" = yes ; then
2399       AC_DEFINE(HAVE_GLE3)
2400     fi
2401   fi
2402
2403 elif test "$with_gle" != no; then
2404   echo "error: must be yes or no: --with-gle=$with_gle"
2405   exit 1
2406
2407 fi
2408
2409
2410
2411 ###############################################################################
2412 #
2413 #       Check for -lXpm.
2414 #
2415 ###############################################################################
2416
2417 have_xpm=no
2418 with_xpm_req=unspecified
2419 AC_ARG_WITH(xpm,
2420 [  --with-xpm              Include support for XPM files in some demos.],
2421   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
2422
2423 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
2424
2425 if test "$with_xpm" = yes; then
2426   AC_CHECK_X_HEADER(X11/xpm.h,
2427                    [have_xpm=yes
2428                     AC_DEFINE(HAVE_XPM)
2429                     XPM_LIBS="-lXpm"])
2430 elif test "$with_xpm" != no; then
2431   echo "error: must be yes or no: --with-xpm=$with_xpm"
2432   exit 1
2433 fi
2434
2435 # See comment near $motif_requires_xpm, above.
2436 # Need to do this here, after both Motif and XPM have been checked for.
2437 #
2438 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
2439   if test "$motif_requires_xpm" = yes ; then
2440     MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
2441   fi
2442 fi
2443
2444
2445 ###############################################################################
2446 #
2447 #       Check for the XSHM server extension.
2448 #
2449 ###############################################################################
2450
2451 have_xshm=no
2452 with_xshm_req=unspecified
2453 AC_ARG_WITH(xshm-ext,
2454 [  --with-xshm-ext         Include support for the XSHM extension.],
2455   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
2456
2457 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
2458
2459 if test "$with_xshm" = yes; then
2460
2461   # first check for Xshm.h.
2462   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes])
2463
2464   # if that succeeded, then check for sys/ipc.h.
2465   if test "$have_xshm" = yes; then
2466     have_xshm=no
2467     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
2468   fi
2469
2470   # if that succeeded, then check for sys/shm.h.
2471   if test "$have_xshm" = yes; then
2472     have_xshm=no
2473     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
2474   fi
2475
2476   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
2477   # to exist, but the library code to not exist.  And even better, the library
2478   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
2479   # lib doesn't exist, give up.  (This lib gets added to X_EXTRA_LIBS, and
2480   # that's not quite right, but close enough.)
2481   #
2482   case "$host" in
2483     *-aix*)
2484       if [ `uname -v` -eq 3 ]; then
2485         have_xshm=no
2486         AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
2487                        [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
2488                        [true], -lX11 -lXext -lm)
2489       fi
2490     ;;
2491   esac
2492
2493   # if that succeeded, then we've really got it.
2494   if test "$have_xshm" = yes; then
2495     AC_DEFINE(HAVE_XSHM_EXTENSION)
2496   fi
2497
2498 elif test "$with_xshm" != no; then
2499   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
2500   exit 1
2501 fi
2502
2503
2504 ###############################################################################
2505 #
2506 #       Check for the DOUBLE-BUFFER server extension.
2507 #
2508 ###############################################################################
2509
2510 have_xdbe=no
2511 with_xdbe_req=unspecified
2512 AC_ARG_WITH(xdbe-ext,
2513 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.],
2514   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
2515
2516 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
2517
2518 if test "$with_xdbe" = yes; then
2519
2520   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes])
2521   if test "$have_xdbe" = yes; then
2522     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
2523   fi
2524
2525 elif test "$with_xdbe" != no; then
2526   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
2527   exit 1
2528 fi
2529
2530
2531 ###############################################################################
2532 #
2533 #       Check for the SGI XReadDisplay server extension.
2534 #
2535 #       Note: this has to be down here, rather than up with the other server
2536 #       extension tests, so that the output of `configure --help' is in the
2537 #       right order.  Arrgh!
2538 #
2539 ###############################################################################
2540
2541 have_readdisplay=no
2542 with_readdisplay_req=unspecified
2543 AC_ARG_WITH(readdisplay,
2544 [  --with-readdisplay      Include support for the XReadDisplay extension.],
2545   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
2546   [with_readdisplay=yes])
2547
2548 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
2549
2550 if test "$with_readdisplay" = yes; then
2551   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
2552                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION))
2553 elif test "$with_readdisplay" != no; then
2554   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
2555   exit 1
2556 fi
2557
2558
2559 ###############################################################################
2560 #
2561 #       Check for a program to generate random text.
2562 #
2563 #       Zippy is funnier than the idiocy generally spat out by `fortune',
2564 #       so first see if "fortune zippy" works.  Else, use plain "fortune".
2565 #
2566 #       We used to dig around in Emacs to look for the "yow" program, but
2567 #       most people who have Emacs also have "fortune zippy", so nevermind.
2568 #
2569 ###############################################################################
2570
2571 with_fortune_req=""
2572 AC_ARG_WITH(fortune,[
2573   --with-fortune=PROGRAM  Some demos are able to run an external program and
2574                           display its text; this names the program to use by
2575                           default (though it can be overridden with X
2576                           resources.)  Default is \"/usr/games/fortune\".],
2577   [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes])
2578
2579 if test "$with_fortune" = no || test "$with_fortune" = yes ; then
2580   with_fortune=""
2581   with_fortune_req=""
2582 fi
2583
2584 if test -n "$with_fortune_req" ; then
2585   ac_cv_fortune_program=""
2586   case "$with_fortune_req" in
2587     /*)
2588
2589       set dummy $with_fortune_req ; fortune_tmp=$2
2590       AC_MSG_CHECKING([for $fortune_tmp])
2591       if test -x "$fortune_tmp" ; then
2592         AC_MSG_RESULT(yes)
2593       else
2594         AC_MSG_RESULT(no)
2595         with_fortune=""
2596       fi
2597     ;;
2598     *)
2599       set dummy $with_fortune_req ; fortune_tmp=$2
2600       # don't cache
2601       unset ac_cv_path_fortune_tmp
2602       AC_PATH_PROG(fortune_tmp, $fortune_tmp, [])
2603       if test -z "$fortune_tmp" ; then
2604         with_fortune=""
2605       fi
2606     ;;
2607   esac
2608   ac_cv_fortune_program="$with_fortune"
2609
2610 elif test -n "$ac_cv_fortune_program"; then
2611   AC_MSG_RESULT([checking for fortune... (cached) $ac_cv_fortune_program])
2612 fi
2613
2614 unset ac_cv_path_fortune_tmp
2615 unset fortune_tmp
2616
2617 if test -z "$ac_cv_fortune_program" ; then
2618
2619   # first look for fortune in /usr/games/ (and use absolute path)
2620   AC_PATH_PROGS(fortune_tmp, fortune,, "/usr/games")
2621
2622   # if it's not there, look on $PATH (and don't use absolute path)
2623   if test -z "$fortune_tmp" ; then
2624      AC_CHECK_PROGS(fortune_tmp, fortune)
2625   fi
2626
2627   # if we didn't find anything, then just assume /usr/games/
2628   if test -z "$fortune_tmp" ; then
2629      fortune_tmp="/usr/games/fortune"
2630   fi
2631
2632   ac_cv_fortune_program="$fortune_tmp"
2633
2634   # now check to see whether "fortune zippy" works.
2635   #
2636   fortune_tmp="$fortune_tmp zippy"
2637   AC_MSG_CHECKING([for zippy quotes])
2638   if ( $fortune_tmp >/dev/null 2>&1 ); then
2639     ac_cv_fortune_program="$fortune_tmp"
2640     AC_MSG_RESULT($fortune_tmp)
2641   else
2642     AC_MSG_RESULT(no)
2643   fi
2644
2645 fi
2646
2647 unset ac_cv_path_fortune_tmp
2648 unset fortune_tmp
2649
2650 AC_DEFINE_UNQUOTED(FORTUNE_PROGRAM, "$ac_cv_fortune_program")
2651
2652
2653 ###############################################################################
2654 #
2655 #       Check whether it's ok to install some hacks as setuid (e.g., "sonar")
2656 #       This should be safe, but let's give people the option.
2657 #
2658 ###############################################################################
2659
2660 setuid_hacks_default=no
2661 setuid_hacks="$setuid_hacks_default"
2662 AC_ARG_WITH(setuid-hacks,
2663 [  --with-setuid-hacks     Allow some demos to be installed \`setuid root'
2664                           (which is needed in order to ping other hosts.)
2665 ],
2666   [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"])
2667
2668 HANDLE_X_PATH_ARG(setuid_hacks, --with-setuid-hacks, setuid hacks)
2669
2670 if test "$setuid_hacks" = yes; then
2671   true
2672 elif test "$setuid_hacks" != no; then
2673   echo "error: must be yes or no: --with-setuid-hacks=$setuid_hacks"
2674   exit 1
2675 fi
2676
2677
2678 ###############################################################################
2679 #
2680 #       Done testing.  Now, set up the various -I and -L variables,
2681 #       and decide which GUI program to build by default.
2682 #
2683 ###############################################################################
2684
2685 DEPEND=makedepend
2686 DEPEND_FLAGS=
2687 DEPEND_DEFINES=
2688
2689
2690 if test \! -z "$includedir" ; then 
2691   INCLUDES="$INCLUDES -I$includedir"
2692 fi
2693
2694 if test \! -z "$libdir" ; then
2695   LDFLAGS="$LDFLAGS -L$libdir"
2696 fi
2697
2698
2699 PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
2700 ALL_DEMO_PROGRAMS=
2701 if test "$have_motif" = yes; then
2702   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
2703   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2704 fi
2705 if test "$have_gtk" = yes; then
2706   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
2707   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2708 fi
2709
2710
2711 if test "$have_kerberos" = yes; then
2712   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
2713   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
2714 fi
2715 if test "$have_pam" = yes; then
2716   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
2717   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
2718   INSTALL_PAM="install-pam"
2719 fi
2720   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
2721   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
2722
2723
2724 if test "$enable_locking" = yes; then
2725   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
2726   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
2727 else
2728   LOCK_SRCS='$(NOLOCK_SRCS_1)'
2729   LOCK_OBJS='$(NOLOCK_OBJS_1)'
2730 fi
2731
2732 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
2733
2734 if test "$need_setuid" = yes; then
2735   NEED_SETUID=yes
2736 else
2737   NEED_SETUID=no
2738 fi
2739
2740 if test "$setuid_hacks" = yes; then
2741   SETUID_HACKS=yes
2742 else
2743   SETUID_HACKS=no
2744 fi
2745
2746 tab='   '
2747 if test "$have_gl" = yes; then
2748   GL_EXES='$(GL_EXES)'
2749   GL_UTIL_EXES='$(GL_UTIL_EXES)'
2750   GL_MEN='$(GL_MEN)'
2751   GL_KLUDGE="${tab}  "
2752 else
2753   GL_KLUDGE="-${tab}  "
2754 fi
2755
2756 if test "$have_gle" = yes; then
2757   GLE_EXES='$(GLE_EXES)'
2758   GLE_MEN='$(GLE_MEN)'
2759   GLE_KLUDGE="${tab}   "
2760 else
2761   GLE_KLUDGE="-${tab}   "
2762 fi
2763
2764
2765 # Another substitution in the XScreenSaver.ad.in file:
2766 #
2767 if test "$have_gnome_help" = yes; then
2768   GNOMEHELP_Y=''
2769   GNOMEHELP_N='!    '
2770 else
2771   GNOMEHELP_Y='!    '
2772   GNOMEHELP_N=''
2773 fi
2774
2775
2776 # Now that we know whether we have Gnome, we can decide where the XML
2777 # config files get installed.
2778 if test -z "$HACK_CONF_DIR" ; then
2779   if test -n "$GNOME_DATADIR" ; then
2780     HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers'
2781   else
2782     HACK_CONF_DIR='${prefix}/lib/xscreensaver/config'
2783   fi
2784 fi
2785
2786
2787 ###############################################################################
2788 #
2789 #       Perform substitutions and write Makefiles.
2790 #
2791 ###############################################################################
2792
2793 AC_SUBST(INCLUDES)
2794
2795 AC_SUBST(PREFERRED_DEMO_PROGRAM)
2796 AC_SUBST(ALL_DEMO_PROGRAMS)
2797 AC_SUBST(SAVER_LIBS)
2798 AC_SUBST(MOTIF_LIBS)
2799 AC_SUBST(GTK_LIBS)
2800 AC_SUBST(XML_LIBS)
2801 AC_SUBST(HACK_LIBS)
2802 AC_SUBST(XPM_LIBS)
2803 AC_SUBST(GL_LIBS)
2804 AC_SUBST(GLE_LIBS)
2805 AC_SUBST(XDPMS_LIBS)
2806 AC_SUBST(PASSWD_LIBS)
2807 AC_SUBST(INSTALL_SETUID)
2808 AC_SUBST(SETUID_HACKS)
2809 AC_SUBST(INSTALL_DIRS)
2810 AC_SUBST(NEED_SETUID)
2811 AC_SUBST(INSTALL_PAM)
2812
2813 AC_SUBST(PASSWD_SRCS)
2814 AC_SUBST(PASSWD_OBJS)
2815 AC_SUBST(XMU_SRCS)
2816 AC_SUBST(XMU_OBJS)
2817 AC_SUBST(XMU_LIBS)
2818 AC_SUBST(SAVER_GL_SRCS)
2819 AC_SUBST(SAVER_GL_OBJS)
2820 AC_SUBST(SAVER_GL_LIBS)
2821 AC_SUBST(LOCK_SRCS)
2822 AC_SUBST(LOCK_OBJS)
2823 AC_SUBST(GL_EXES)
2824 AC_SUBST(GL_UTIL_EXES)
2825 AC_SUBST(GL_MEN)
2826 AC_SUBST(GL_KLUDGE)
2827 AC_SUBST(GLE_EXES)
2828 AC_SUBST(GLE_MEN)
2829 AC_SUBST(GLE_KLUDGE)
2830 AC_SUBST(GNOMEHELP_Y)
2831 AC_SUBST(GNOMEHELP_N)
2832 AC_SUBST(HACKDIR)
2833 AC_SUBST(GNOME_DATADIR)
2834 AC_SUBST(HACK_CONF_DIR)
2835
2836 APPDEFAULTS=$ac_x_app_defaults
2837 AC_SUBST(APPDEFAULTS)
2838
2839 AC_SUBST(DEPEND)
2840 AC_SUBST(DEPEND_FLAGS)
2841 AC_SUBST(DEPEND_DEFINES)
2842 AC_SUBST(PERL)
2843
2844 AC_OUTPUT(Makefile
2845           utils/Makefile
2846           driver/Makefile
2847           hacks/Makefile
2848           hacks/glx/Makefile
2849           driver/XScreenSaver.ad)
2850
2851 ###############################################################################
2852 #
2853 #       Print some warnings at the end.
2854 #
2855 ###############################################################################
2856
2857 warn_prefix_1="    Warning:"
2858 warn_prefix_2="       Note:"
2859 warn_prefix="$warn_prefix_1"
2860
2861 warning=no
2862 warnsep='    #################################################################'
2863
2864 warnpre() {
2865   if test "$warning" = no ; then
2866     echo '' ; echo "$warnsep" ; echo ''
2867     warning=yes
2868   fi
2869 }
2870
2871 warn() {
2872   warnpre
2873   if test "$warning" = long ; then echo '' ; fi
2874   warning=yes
2875   rest="$@"
2876   echo "$warn_prefix $rest"
2877 }
2878
2879 warnL() {
2880   was=$warning
2881   warnpre
2882   warning=yes
2883   if test "$was" != no ; then echo '' ; fi
2884   rest="$@"
2885   echo "$warn_prefix $rest"
2886 }
2887
2888 warn2() {
2889   rest="$@"
2890   echo "             $rest"
2891   warning=long
2892 }
2893
2894 note() {
2895   warn_prefix="$warn_prefix_2"
2896   warn $@
2897   warn_prefix="$warn_prefix_1"
2898 }
2899
2900 noteL() {
2901   warn_prefix="$warn_prefix_2"
2902   warnL $@
2903   warn_prefix="$warn_prefix_1"
2904 }
2905
2906
2907 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
2908   warn 'The SGI saver extension was requested, but was not found.'
2909 fi
2910
2911 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
2912   warn 'The MIT saver extension was requested, but was not found.'
2913 fi
2914
2915 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
2916   warn 'The XIdle extension was requested, but was not found.'
2917 fi
2918
2919 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
2920   warn 'The XSHM extension was requested, but was not found.'
2921 fi
2922
2923 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
2924   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
2925 fi
2926
2927 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
2928   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
2929 fi
2930
2931 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
2932   warn 'The DPMS extension was requested, but was not found.'
2933 fi
2934
2935 if test "$with_xinerama_req" = yes -a "$have_xinerama" = no ; then
2936   warn 'The Xinerama extension was requested, but was not found.'
2937 fi
2938
2939 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
2940   warn 'The XF86VMODE extension was requested, but was not found.'
2941 fi
2942
2943 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
2944   warn "Checking of /proc/interrupts was requested, but it's bogus."
2945 fi
2946
2947
2948 if test "$have_motif" = no -a "$have_gtk" = no; then
2949   warnL "Neither Motif nor Gtk seem to be available;"
2950   warn2 "the \`xscreensaver-demo' program requires one of these."
2951
2952 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
2953   warnL "Use of Motif was requested, but it wasn't found;"
2954   warn2 "Gtk will be used instead."
2955
2956 elif test "$jurassic_gtk" = yes ; then
2957
2958   pref_gtk=1.2
2959
2960   v="$ac_gtk_version_string"
2961   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
2962     warnL "Use of Gtk was requested, but its version number is unknown;"
2963   elif test "$with_gtk_req" = yes ; then
2964     warnL "Use of Gtk was requested, but it is version $v;"
2965   else
2966     warnL "Gtk was found on this system, but it is version $v;"
2967   fi
2968
2969   warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
2970
2971 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
2972   warnL "Use of Gtk was requested, but it wasn't found;"
2973   warn2 "Motif will be used instead."
2974
2975 fi
2976
2977
2978 if test "$with_gnome_req" = yes -a "$have_gnome" = no ; then
2979   warn  'Use of the Gnome Control Panel was requested, but the necessary'
2980   warn2 'headers and/or libraries were not found.'
2981 fi
2982
2983 if test "$with_xml_req" = yes -a "$have_xml" = no ; then
2984   warn  'Use of the XML library was requested, but the necessary'
2985   warn2 'headers and/or libraries were not found.'
2986 elif test "$have_gtk" = yes -a "$have_xml" = no ; then
2987   warn  'GTK is being used, but the XML library was not found.'
2988   warn2 'Some functionality will be disabled.'
2989 fi
2990
2991 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
2992
2993   preferred_lesstif=0.86
2994
2995   if test "$lesstif_version" = unknown; then
2996     warnL "Unable to determine the LessTif version number!"
2997     warn2 "Make sure you are using version $preferred_lesstif or newer."
2998     warn2 "See <http://www.lesstif.org/>."
2999
3000   elif test \! $lesstif_version -gt 82; then
3001     warnL "LessTif version $lesstif_version_string is being used."
3002     warn2 "LessTif versions 0.82 and earlier are too buggy to"
3003     warn2 "use with XScreenSaver; it is strongly recommended"
3004     warn2 "that you upgrade to at least version $preferred_lesstif!"
3005     warn2 "See <http://www.lesstif.org/>."
3006   fi
3007 fi
3008
3009
3010
3011 if test "$have_xpm" = no ; then
3012   if test "$with_xpm_req" = yes ; then
3013     warnL 'Use of XPM was requested, but it was not found.'
3014   elif test "$with_xpm_req" = no ; then
3015     noteL 'The XPM library is not being used.'
3016   else
3017     noteL 'The XPM library was not found.'
3018   fi
3019
3020   echo ''
3021   warn2 'Some of the demos will not be as colorful as they'
3022   warn2 'could be.  You might want to consider installing XPM'
3023   warn2 'and re-running configure.  (Remember to delete the'
3024   warn2 'config.cache file first.)  You can find XPM at most'
3025   warn2 'X11 archive sites, such as <http://sunsite.unc.edu/>.'
3026 fi
3027
3028
3029 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
3030   preferred_mesagl=3.4
3031   mgv="$ac_mesagl_version_string"
3032   pgl="$preferred_mesagl"
3033
3034   if test "$ac_mesagl_version" = unknown; then
3035     warnL "Unable to determine the MesaGL version number!"
3036     warn2 "Make sure you are using version $preferred_mesagl or newer."
3037
3038   elif test \! "$ac_mesagl_version" -gt 2006; then
3039     warnL "MesaGL version $mgv is being used.  MesaGL 2.6 and earlier"
3040     warn2 "have a security bug.  It is strongly recommended that you"
3041     warn2 "upgrade to at least version $preferred_mesagl."
3042
3043   elif test \! "$ac_mesagl_version" -gt 3003; then
3044     warnL "MesaGL version $mgv is being used.  That version has some"
3045     warn2 "bugs; it is recommended that you upgrade to $pgl or newer."
3046   fi
3047 fi
3048
3049 if test "$have_gl" = no ; then
3050   if test "$with_gl_req" = yes ; then
3051     warnL 'Use of GL was requested, but it was not found.'
3052   elif test "$with_gl_req" = no ; then
3053     noteL 'The OpenGL 3D library is not being used.'
3054   else
3055     noteL 'The OpenGL 3D library was not found.'
3056   fi
3057
3058   if test "$gl_halfassed" = yes ; then
3059     echo ''
3060     warn2 'More specifically, we found the headers, but not the'
3061     warn2 'libraries; so either GL is half-installed on this'
3062     warn2 "system, or something else went wrong.  The \`config.log'"
3063     warn2 'file might contain some clues.'
3064   fi
3065
3066   echo ''
3067   warn2 'Those demos which use 3D will not be built or installed.'
3068   warn2 'You might want to consider installing OpenGL and'
3069   warn2 're-running configure.  (Remember to delete the'
3070   warn2 "config.cache file first.)  If your vendor doesn't ship"
3071   warn2 'their own implementation of OpenGL, you can get a free'
3072   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
3073   warn2 'info, see <http://www.opengl.org/>.'
3074
3075 fi
3076
3077
3078 if test "$have_gl" = yes -a "$have_gle" = no ; then
3079   if test "$with_gle_req" = yes ; then
3080     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
3081     warn2 'it was not found (though the OpenGL library was found, and'
3082     warn2 'is being used.)'
3083   elif test "$with_gle_req" = no ; then
3084     noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
3085     warn2 'library is not.'
3086   else
3087     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
3088     warn2 'was not.'
3089   fi
3090
3091   if test "$gle_halfassed" = yes ; then
3092     echo ''
3093     warn2 'More specifically, we found the headers, but not the'
3094     warn2 'libraries; so either GLE is half-installed on this'
3095     warn2 "system, or something else went wrong.  The \`config.log'"
3096     warn2 'file might contain some clues.'
3097   fi
3098
3099   echo ''
3100   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
3101   warn2 'will not be built or installed.  You might want to consider'
3102   warn2 'installing GLE and re-running configure.  (Remember to delete'
3103   warn2 'the config.cache file first.)  You can find the GLE library'
3104   warn2 'at <http://www.linas.org/gle/>.  For general OpenGL info,'
3105   warn2 'see <http://www.opengl.org/>.'
3106
3107 fi
3108
3109
3110 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
3111   warn 'Use of XReadDisplay was requested, but it was not found.'
3112 fi
3113
3114 if test -n "$with_fortune_req"; then
3115   if test "$with_fortune_req" != "$ac_cv_fortune_program" ; then
3116     warnL "$with_fortune_req was requested as the Fortune program,"
3117     warn2 "but was not found.  The default will be used instead."
3118   fi
3119 fi
3120
3121 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
3122   warn 'Use of Kerberos was requested, but it was not found.'
3123 fi
3124
3125 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
3126   warn 'Use of PAM was requested, but it was not found.'
3127 fi
3128
3129 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
3130   warn 'Use of shadow passwords was requested, but they were not found.'
3131 fi
3132
3133
3134 # You are in a twisty maze of namespaces and syntaxes, all alike.
3135 # Fuck the skull of Unix.
3136 #
3137 eval bindir=${bindir}
3138 eval bindir=${bindir}
3139 eval bindir=${bindir}
3140 eval bindir=${bindir}
3141 eval bindir=${bindir}
3142 eval bindir=${bindir}
3143 eval HACKDIR=${HACKDIR}
3144 eval HACKDIR=${HACKDIR}
3145 eval HACKDIR=${HACKDIR}
3146 eval HACKDIR=${HACKDIR}
3147 eval HACKDIR=${HACKDIR}
3148 eval HACKDIR=${HACKDIR}
3149 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3150 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3151 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3152 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3153 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3154 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3155
3156 # canonicalize slashes.
3157 bindir=`echo  "${bindir}"              | sed 's@/$@@;s@//*@/@g'`
3158 HACKDIR=`echo "${HACKDIR}"             | sed 's@/$@@;s@//*@/@g'`
3159 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
3160
3161
3162 # Sanity check the hackdir
3163 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
3164   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
3165     echo ""
3166     AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
3167                    There will be an executable installed with that name, so
3168                    that can't be the name of a directory as well.  Please
3169                    re-configure with a different directory name.])
3170   fi
3171 done
3172
3173
3174 do_dir_warning=no
3175
3176 # Now let's see if there's a previous RPM version already installed.  Blargh!
3177
3178 # M4 sucks!!
3179 changequote(X,Y)
3180 rpmv=`(rpm -qv xscreensaver) 2>&- | \
3181       sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'`
3182 changequote([,])
3183
3184 if test \! -z "$rpmv" ; then
3185   rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
3186   rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
3187
3188   warning=no
3189   warnL "There is already an installed RPM of xscreensaver $rpmv"
3190   warn2 "on this system.  You might want to remove it (with"
3191   warn2 '"rpm -ve xscreensaver") before running "make install"'
3192   warn2 "from this directory."
3193   echo ""
3194   warn2 "Alternately, you could build this version of xscreensaver"
3195   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
3196   warn2 "file is included.  See the RPM documentation for more info."
3197   echo ""
3198
3199   if test "$rpmbdir" = "$rpmhdir" ; then
3200     warn2 "The RPM version was installed in $rpmbdir."
3201   else
3202     warn2 "The RPM version was installed in $rpmbdir,"
3203     warn2 "with demos in $rpmhdir."
3204   fi
3205
3206   do_dir_warning=yes
3207 fi
3208
3209
3210 if test "${bindir}" = "${HACKDIR}" ; then
3211   do_dir_warning=yes
3212 fi
3213
3214 if test "$do_dir_warning" = yes; then
3215   echo ""
3216   echo "$warnsep"
3217   echo ""
3218   echo '      When you run "make install", the "xscreensaver",'
3219   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
3220   echo "      will be installed in ${bindir}."
3221   echo ""
3222   echo "      The various graphics demos (120+ different executables) will"
3223   echo "      also be installed in ${HACKDIR}."
3224   echo ""
3225   echo "      If you would prefer the demos to be installed elsewhere"
3226   echo "      (for example, in a dedicated directory) you should re-run"
3227   echo "      configure with the --with-hackdir=DIR option.  For more"
3228   echo "      information, run $0 --help."
3229   warning=yes
3230 fi
3231
3232 if test "$warning" != no; then
3233   echo '' ; echo "$warnsep" ; echo ''
3234 fi
3235
3236 if test "$do_dir_warning" = no; then
3237   if test "$warning" = no; then
3238     echo ''
3239   fi
3240   echo "User programs will be installed in ${bindir}/"
3241   echo "Screen savers will be installed in ${HACKDIR}/"
3242   echo "Configuration will be installed in ${HACK_CONF_DIR}/"
3243   echo ''
3244 fi