http://www.archive.org/download/tucows_10294_XScreenSaver/xscreensaver-4.10.tar.gz
[xscreensaver] / configure.in
1 # configure.in --- xscreensaver, Copyright (c) 1997-2003 Jamie Zawinski.
2 #
3
4 AC_PREREQ(2.52)
5 AC_INIT(driver/subprocs.c)
6 AC_CONFIG_HEADER(config.h)
7
8 echo "current directory: `pwd`"
9 echo "command line was: $0 $@"
10
11
12 # After checking to see that --srcdir is correct (which AC_INIT does)
13 # check for some random other files that come later in the tar file,
14 # to make sure everything is here.
15 #
16 for d in driver utils hacks hacks/glx ; do
17   f=$srcdir/$d/Makefile.in
18   if test \! -r $f ; then
19     echo ""
20     echo "ERROR: The package is incomplete: $f does not exist."
21     echo "       This probably means that your download was truncated."
22     echo ""
23     exit 1
24   fi
25 done
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"
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 >/dev/null ) 2>&1 | \
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 turn off Objective C on MacOS X.
146 #       (We have to do this to work around an Apple-specific gcc bug.)
147 #
148 ###############################################################################
149
150 AC_DEFUN(AC_GCC_ACCEPTS_NO_CPP_PRECOMP,
151  [if test -n "$GCC"; then
152    AC_CACHE_CHECK([whether gcc accepts -no-cpp-precomp],
153      ac_cv_gcc_accepts_no_cpp_precomp,
154     [if ( ( gcc -E -no-cpp-precomp - </dev/null >/dev/null ) 2>&1 | \
155           grep unrecognized >/dev/null ); then
156        ac_cv_gcc_accepts_no_cpp_precomp=no
157      else
158        ac_cv_gcc_accepts_no_cpp_precomp=yes
159      fi])
160    ac_gcc_accepts_no_cpp_precomp="$ac_cv_gcc_accepts_no_cpp_precomp"
161   fi
162 ])
163
164 AC_DEFUN(AC_NO_OBJECTIVE_C,
165  [if test -n "$GCC"; then
166    AC_GCC_ACCEPTS_NO_CPP_PRECOMP
167    if test "$ac_gcc_accepts_no_cpp_precomp" = yes ; then
168      AC_MSG_RESULT(Disabling Objective C extensions in ANSI C code.)
169      CC="$CC -no-cpp-precomp"
170    fi
171   fi
172 ])
173
174
175 ###############################################################################
176 #
177 #       Function to figure out how to create directory trees.
178 #
179 ###############################################################################
180
181 AC_DEFUN(AC_PROG_INSTALL_DIRS,
182  [AC_CACHE_CHECK([whether \"\${INSTALL} -d\" creates intermediate directories],
183     ac_cv_install_d_creates_dirs,
184     [ac_cv_install_d_creates_dirs=no
185      rm -rf conftestdir
186      if mkdir conftestdir; then
187        cd conftestdir 2>/dev/null
188        ${INSTALL} -d `pwd`/dir1/dir2 >/dev/null 2>&1
189        if test -d dir1/dir2/. ; then
190          ac_cv_install_d_creates_dirs=yes
191        fi
192        cd .. 2>/dev/null
193        rm -rf conftestdir
194      fi
195     ])
196
197   if test "$ac_cv_install_d_creates_dirs" = no ; then
198     AC_CACHE_CHECK([whether \"mkdir -p\" creates intermediate directories],
199       ac_cv_mkdir_p_creates_dirs,
200       [ac_cv_mkdir_p_creates_dirs=no
201        rm -rf conftestdir
202        if mkdir conftestdir; then
203          cd conftestdir 2>/dev/null
204          mkdir -p dir1/dir2 >/dev/null 2>&1
205          if test -d dir1/dir2/. ; then
206            ac_cv_mkdir_p_creates_dirs=yes
207          fi
208          cd .. 2>/dev/null
209          rm -rf conftestdir
210        fi
211       ])
212   fi
213
214   if test "$ac_cv_install_d_creates_dirs" = yes ; then
215     INSTALL_DIRS='${INSTALL} -d'
216   elif test "$ac_cv_mkdir_p_creates_dirs" = yes ; then
217     INSTALL_DIRS='mkdir -p'
218   else
219     # any other ideas?
220     INSTALL_DIRS='${INSTALL} -d'
221   fi
222 ])
223
224
225 ###############################################################################
226 #
227 #       Function to check whether gettimeofday() exists, and how to call it.
228 #       This may define HAVE_GETTIMEOFDAY and GETTIMEOFDAY_TWO_ARGS.
229 #
230 ###############################################################################
231
232 AC_DEFUN(AC_GETTIMEOFDAY_ARGS,
233  [AC_MSG_CHECKING(how to call gettimeofday)
234   AC_CACHE_VAL(ac_cv_gettimeofday_args,
235    [AC_TRY_COMPILE([#include <stdlib.h>
236                     #include <sys/time.h>],
237                    [struct timeval tv; struct timezone tzp;
238                     gettimeofday(&tv, &tzp);],
239                    [ac_gettimeofday_args=2],
240                    [AC_TRY_COMPILE([#include <stdlib.h>
241                                     #include <sys/time.h>],
242                                    [struct timeval tv; gettimeofday(&tv);],
243                                    [ac_gettimeofday_args=1],
244                                    [ac_gettimeofday_args=0])])
245     ac_cv_gettimeofday_args=$ac_gettimeofday_args])
246   ac_gettimeofday_args=$ac_cv_gettimeofday_args
247   if test "$ac_gettimeofday_args" = 1 ; then
248     AC_DEFINE(HAVE_GETTIMEOFDAY)
249     AC_MSG_RESULT(one argument)
250   elif test "$ac_gettimeofday_args" = 2 ; then
251     AC_DEFINE(HAVE_GETTIMEOFDAY)
252     AC_DEFINE(GETTIMEOFDAY_TWO_ARGS)
253     AC_MSG_RESULT(two arguments)
254   else
255     AC_MSG_RESULT(unknown)
256   fi
257 ])
258
259
260 ###############################################################################
261 #
262 #       Function to find perl5 (defines PERL and PERL_VERSION.)
263 #
264 ###############################################################################
265
266 # M4 sucks!!  perl sucks too!!
267 changequote(X,Y)
268 perl_version_cmd='print $]'
269 changequote([,])
270
271 AC_DEFUN(AC_PROG_PERL,
272  [AC_PATH_PROGS(PERL, [perl5 perl],,)
273   if test -z "$PERL" ; then
274     PERL_VERSION=0
275   else
276     AC_CACHE_CHECK([perl version], ac_cv_perl_version,
277                    [ac_cv_perl_version=`$PERL -e "$perl_version_cmd"`])
278     PERL_VERSION=$ac_cv_perl_version
279   fi
280  ])
281
282
283 ###############################################################################
284 #
285 #       Function to demand "bc".  Losers.
286 #
287 ###############################################################################
288
289 AC_DEFUN(AC_DEMAND_BC,
290  [ac_bc_result=`echo 6+9 | bc 2>/dev/null`
291   AC_MSG_CHECKING([for bc])
292   if test "$ac_bc_result" = "15" ; then
293     AC_MSG_RESULT(yes)
294   else
295     AC_MSG_RESULT(no)
296     echo ''
297     AC_MSG_ERROR([Your system doesn't have \"bc\", which has been a standard
298                   part of Unix since the 1970s.  Come back when your vendor
299                   has grown a clue.])
300   fi
301  ])
302
303 ###############################################################################
304 #
305 #       Functions to check how to do ICMP PING requests.
306 #
307 ###############################################################################
308
309 AC_DEFUN(AC_CHECK_ICMP,
310  [AC_CACHE_CHECK([for struct icmp], ac_cv_have_icmp,
311   [AC_TRY_COMPILE([#include <stdlib.h>
312                    #include <stdio.h>
313                    #include <math.h>
314                    #include <unistd.h>
315                    #include <limits.h>
316                    #include <signal.h>
317                    #include <fcntl.h>
318                    #include <sys/types.h>
319                    #include <sys/time.h>
320                    #include <sys/ipc.h>
321                    #include <sys/shm.h>
322                    #include <sys/socket.h>
323                    #include <netinet/in_systm.h>
324                    #include <netinet/in.h>
325                    #include <netinet/ip.h>
326                    #include <netinet/ip_icmp.h>
327                    #include <netinet/udp.h>
328                    #include <arpa/inet.h>
329                    #include <netdb.h>],
330                   [struct icmp i;
331                    struct sockaddr s;
332                    struct sockaddr_in si;
333                    struct ip ip;
334                    i.icmp_type = ICMP_ECHO;
335                    i.icmp_code = 0;
336                    i.icmp_cksum = 0;
337                    i.icmp_id = 0;
338                    i.icmp_seq = 0;
339                    si.sin_family = AF_INET;
340                    #if defined(__DECC) || defined(_IP_VHL)
341                    ip.ip_vhl = 0;
342                    #else
343                    ip.ip_hl = 0;
344                    #endif
345                    ],
346                   [ac_cv_have_icmp=yes],
347                   [ac_cv_have_icmp=no])])
348  if test "$ac_cv_have_icmp" = yes ; then
349    AC_DEFINE(HAVE_ICMP)
350  fi])
351
352 AC_DEFUN(AC_CHECK_ICMPHDR,
353  [AC_CACHE_CHECK([for struct icmphdr], ac_cv_have_icmphdr,
354   [AC_TRY_COMPILE([#include <stdlib.h>
355                    #include <stdio.h>
356                    #include <math.h>
357                    #include <unistd.h>
358                    #include <limits.h>
359                    #include <signal.h>
360                    #include <fcntl.h>
361                    #include <sys/types.h>
362                    #include <sys/time.h>
363                    #include <sys/ipc.h>
364                    #include <sys/shm.h>
365                    #include <sys/socket.h>
366                    #include <netinet/in_systm.h>
367                    #include <netinet/in.h>
368                    #include <netinet/ip.h>
369                    #include <netinet/ip_icmp.h>
370                    #include <netinet/udp.h>
371                    #include <arpa/inet.h>
372                    #include <netdb.h>],
373                   [struct icmphdr i;
374                    struct sockaddr s;
375                    struct sockaddr_in si;
376                    struct ip ip;
377                    i.type = ICMP_ECHO;
378                    i.code = 0;
379                    i.checksum = 0;
380                    i.un.echo.id = 0;
381                    i.un.echo.sequence = 0;
382                    si.sin_family = AF_INET;
383                    ip.ip_hl = 0;],
384                   [ac_cv_have_icmphdr=yes],
385                   [ac_cv_have_icmphdr=no])])
386  if test "$ac_cv_have_icmphdr" = yes ; then
387    AC_DEFINE(HAVE_ICMPHDR)
388  fi])
389
390
391 ###############################################################################
392 #
393 #       Functions to check for various X11 crap.
394 #
395 ###############################################################################
396
397 # Try and find the app-defaults directory.
398 # It sucks that autoconf doesn't do this already...
399 #
400 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,[
401   rm -fr conftestdir
402   if mkdir conftestdir; then
403     cd conftestdir 2>/dev/null
404     # Make sure to not put "make" in the Imakefile rules, since we grep it out.
405     cat > Imakefile <<'EOF'
406 acfindx:
407         @echo 'ac_x_app_defaults="${XAPPLOADDIR}"'
408 EOF
409     if (xmkmf) >/dev/null 2>&1 && test -f Makefile; then
410       # GNU make sometimes prints "make[1]: Entering...", which'd confuse us.
411       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
412     fi
413     cd .. 2>/dev/null
414     rm -fr conftestdir
415   fi])
416
417 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
418   # Look for the directory under a standard set of common directories.
419   # Check X11 before X11Rn because it's often a symlink to the current release.
420   for ac_dir in                                 \
421     /usr/X11/lib/app-defaults                   \
422     /usr/X11R6/lib/app-defaults                 \
423     /usr/X11R6/lib/X11/app-defaults             \
424     /usr/X11R5/lib/app-defaults                 \
425     /usr/X11R5/lib/X11/app-defaults             \
426     /usr/X11R4/lib/app-defaults                 \
427     /usr/X11R4/lib/X11/app-defaults             \
428                                                 \
429     /usr/lib/X11/app-defaults                   \
430     /usr/lib/X11R6/app-defaults                 \
431     /usr/lib/X11R5/app-defaults                 \
432     /usr/lib/X11R4/app-defaults                 \
433                                                 \
434     /usr/local/X11/lib/app-defaults             \
435     /usr/local/X11R6/lib/app-defaults           \
436     /usr/local/X11R5/lib/app-defaults           \
437     /usr/local/X11R4/lib/app-defaults           \
438                                                 \
439     /usr/local/lib/X11/app-defaults             \
440     /usr/local/lib/X11R6/app-defaults           \
441     /usr/local/lib/X11R6/X11/app-defaults       \
442     /usr/local/lib/X11R5/app-defaults           \
443     /usr/local/lib/X11R5/X11/app-defaults       \
444     /usr/local/lib/X11R4/app-defaults           \
445     /usr/local/lib/X11R4/X11/app-defaults       \
446                                                 \
447     /usr/X386/lib/X11/app-defaults              \
448     /usr/x386/lib/X11/app-defaults              \
449     /usr/XFree86/lib/X11/app-defaults           \
450                                                 \
451     /usr/lib/X11/app-defaults                   \
452     /usr/local/lib/X11/app-defaults             \
453     /usr/unsupported/lib/X11/app-defaults       \
454     /usr/athena/lib/X11/app-defaults            \
455     /usr/local/x11r5/lib/X11/app-defaults       \
456     /usr/lpp/Xamples/lib/X11/app-defaults       \
457     /lib/usr/lib/X11/app-defaults               \
458                                                 \
459     /usr/openwin/lib/app-defaults               \
460     /usr/openwin/lib/X11/app-defaults           \
461     /usr/openwin/share/lib/app-defaults         \
462     /usr/openwin/share/lib/X11/app-defaults     \
463                                                 \
464     /X11R6/lib/app-defaults                     \
465     /X11R5/lib/app-defaults                     \
466     /X11R4/lib/app-defaults                     \
467     ; \
468   do
469     if test -d "$ac_dir"; then
470       ac_x_app_defaults=$ac_dir
471       break
472     fi
473   done
474 ])
475
476 AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
477   [AC_REQUIRE_CPP()
478     AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
479      [AC_PATH_X_APP_DEFAULTS_XMKMF
480       if test x"$ac_x_app_defaults" = x; then
481         AC_PATH_X_APP_DEFAULTS_DIRECT
482       fi
483       if test x"$ac_x_app_defaults" = x; then
484         ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
485       else
486         # Record where we found app-defaults for the cache.
487         ac_cv_x_app_defaults="$ac_x_app_defaults"
488       fi])
489     eval ac_x_app_defaults="$ac_cv_x_app_defaults"])
490
491
492 AC_DEFUN(AC_XPOINTER,
493  [AC_CACHE_CHECK([for XPointer], ac_cv_xpointer,
494                  [AC_TRY_X_COMPILE([#include <X11/Xlib.h>],
495                                    [XPointer foo = (XPointer) 0;],
496                                    [ac_cv_xpointer=yes],
497                                    [ac_cv_xpointer=no])])
498   if test "$ac_cv_xpointer" != yes; then
499    AC_DEFINE(XPointer,[char*])
500   fi])
501
502
503 # Random special-cases for X on certain pathological OSes.
504 # You know who you are.
505 #
506 AC_DEFUN(AC_X_RANDOM_PATHS,
507  [case "$host" in
508     *-hpux*)
509
510       # The following arcana was gleaned from conversations with
511       # Eric Schwartz <erics@col.hp.com>:
512       #
513       # On HPUX 10.x, the parts of X that HP considers "standard" live in
514       # /usr/{include,lib}/X11R6/.  The parts that HP doesn't consider
515       # "standard", notably, Xaw and Xmu, live in /usr/contrib/X11R6/.
516       # Yet /usr/contrib/X11R6/ comes preinstalled on all HPUX systems.
517       # Also, there are symlinks from /usr/include/ and /usr/lib/ into
518       # /usr/{include,lib}/X11R6/, so that (if you don't use Xmu at all)
519       # you don't need any -I or -L arguments.
520       #
521       # On HPUX 9.x, /usr/{include,lib}/X11R5/ and /usr/contrib/X11R5/
522       # are the same division as 10.x.  However, there are no symlinks to
523       # the X stuff from /usr/include/ and /usr/lib/, so -I and -L
524       # arguments are always necessary.
525       #
526       # However, X11R6 was available on HPUX 9.x as a patch: if that
527       # patch was installed, then all of X11R6 went in to
528       # /usr/contrib/X11R6/ (there was no /usr/{include,lib}/X11R6/.)
529       #
530       # HPUX 8.x was the same as 9.x, but was X11R4 instead (I don't know
531       # whether R5 was available as a patch; R6 undoubtedly was not.)
532       #
533       # So.  We try and use the highest numbered pair of
534       # /usr/{include,lib}/X11R?/ and /usr/contrib/X11R?/{include,lib}/
535       # that are available.  We do not mix and match different versions
536       # of X.
537       #
538       # Question I still don't know the answer to: (do you?)
539       #
540       #   * On HPUX 9.x, where /usr/include/X11R5/ was standard, and
541       #     /usr/contrib/X11R6/ could be installed as a patch, what was in
542       #     that contrib directory?  Did it contain so-called "standard"
543       #     X11R6, or did it include Xaw and Xmu as well?  If the former,
544       #     where did one find Xaw and Xmu on 9.x R6 systems?  Would this
545       #     be a situation where one had to reach into the R5 headers and
546       #     libs to find Xmu?  That is, must both R6 and R5 directories
547       #     be on the -I and -L lists in that case?
548       #
549       for version in X11R6 X11R5 X11R4 ; do
550         # if either pair of directories exists...
551         if test -d /usr/include/$version || test -d /usr/contrib/$version/include
552         then
553            # if contrib exists, use it...
554            if test -d /usr/contrib/$version/include ; then
555              X_CFLAGS="$X_CFLAGS -I/usr/contrib/$version/include"
556              X_LIBS="$X_LIBS -L/usr/contrib/$version/lib"
557            fi
558            # if the "standard" one exists, use it.
559            if test -d /usr/include/$version ; then
560              X_CFLAGS="$X_CFLAGS -I/usr/include/$version"
561              X_LIBS="$X_LIBS -L/usr/lib/$version"
562            fi
563            # since at least one of the pair exists, go no farther.
564            break
565         fi
566       done
567
568       # Now find Motif.  Thanks for not making xmkmf find this by
569       # default, you losers.
570       #
571       if test -d /usr/include/Motif2.1 ; then
572         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif2.1"
573         X_LIBS="$X_LIBS -L/usr/lib/Motif2.1"
574       elif test -d /usr/include/Motif1.2 ; then
575         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.2"
576         X_LIBS="$X_LIBS -L/usr/lib/Motif1.2"
577       elif test -d /usr/include/Motif1.1 ; then
578         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.1"
579         X_LIBS="$X_LIBS -L/usr/lib/Motif1.1"
580       fi
581
582       # Now let's check for the pseudo-standard locations for OpenGL and XPM.
583       #
584       if test -d /opt/graphics/OpenGL/include ; then
585         # HP-UX 10.20 puts it here
586         X_CFLAGS="-I/opt/graphics/OpenGL/include $X_CFLAGS"
587         X_LIBS="-L/opt/graphics/OpenGL/lib $X_LIBS"
588       elif test -d /opt/Mesa/lib ; then
589         X_CFLAGS="-I/opt/Mesa/include $X_CFLAGS"
590         X_LIBS="-L/opt/Mesa/lib $X_LIBS"
591       fi
592
593
594       if test -d /opt/xpm/lib/X11 ; then
595         X_CFLAGS="-I/opt/xpm/include $X_CFLAGS"
596         X_LIBS="-L/opt/xpm/lib/X11 $X_LIBS"
597       fi
598
599       # On HPUX, default to installing in /opt/xscreensaver/ instead of
600       # in /usr/local/, unless there is already an xscreensaver in
601       # /usr/local/bin/.  This can be overridden with the --prefix arg
602       # to configure.  I'm not sure this is the right thing to do, but
603       # Richard Lloyd says so...
604       #
605       if test \! -x /usr/local/bin/xscreensaver ; then
606         ac_default_prefix=/opt/xscreensaver
607       fi
608
609     ;;
610     *-solaris*)
611
612       # Thanks for not making xmkmf find this by default, pinheads.
613       # And thanks for moving things around again, too.  Is this
614       # really the standard location now?  What happened to the
615       # joke that this kind of thing went in /opt?
616       # cthomp says "answer: CDE (Common Disorganized Environment)"
617       #
618       if test -f /usr/dt/include/Xm/Xm.h ; then
619         X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
620         X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib"
621
622         # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
623         AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"])
624       fi
625
626     ;;
627     *-darwin*)
628
629       # On MacOS X (10.x with "fink"), many things are under /sw/.
630       #
631       if test -d /sw/include ; then
632         X_CFLAGS="-I/sw/include $X_CFLAGS"
633         X_LIBS="-L/sw/lib $X_LIBS"
634       fi
635     ;;
636   esac])
637
638
639
640 ###############################################################################
641 #
642 #       Some utility functions to make checking for X things easier.
643 #
644 ###############################################################################
645
646 # Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
647 #
648 AC_DEFUN(AC_CHECK_X_HEADER, [
649   ac_save_CPPFLAGS="$CPPFLAGS"
650   if test \! -z "$includedir" ; then 
651     CPPFLAGS="$CPPFLAGS -I$includedir"
652   fi
653   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
654   AC_CHECK_HEADER([$1],[$2],[$3],[$4])
655   CPPFLAGS="$ac_save_CPPFLAGS"])
656
657 # Like AC_EGREP_HEADER, but it uses the already-computed -I directories.
658 #
659 AC_DEFUN(AC_EGREP_X_HEADER, [
660   ac_save_CPPFLAGS="$CPPFLAGS"
661   if test \! -z "$includedir" ; then 
662     CPPFLAGS="$CPPFLAGS -I$includedir"
663   fi
664   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
665   AC_EGREP_HEADER([$1], [$2], [$3], [$4])
666   CPPFLAGS="$ac_save_CPPFLAGS"])
667
668 # Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
669 #
670 AC_DEFUN(AC_TRY_X_COMPILE, [
671   ac_save_CPPFLAGS="$CPPFLAGS"
672   if test \! -z "$includedir" ; then 
673     CPPFLAGS="$CPPFLAGS -I$includedir"
674   fi
675   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
676   AC_TRY_COMPILE([$1], [$2], [$3], [$4])
677   CPPFLAGS="$ac_save_CPPFLAGS"])
678
679
680 # Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
681 # Use this sparingly; it probably doesn't work very well on X programs.
682 #
683 AC_DEFUN(AC_CHECK_X_LIB, [
684   ac_save_CPPFLAGS="$CPPFLAGS"
685   ac_save_LDFLAGS="$LDFLAGS"
686 #  ac_save_LIBS="$LIBS"
687
688   if test \! -z "$includedir" ; then 
689     CPPFLAGS="$CPPFLAGS -I$includedir"
690   fi
691   # note: $X_CFLAGS includes $x_includes
692   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
693
694   if test \! -z "$libdir" ; then
695     LDFLAGS="$LDFLAGS -L$libdir"
696   fi
697   # note: $X_LIBS includes $x_libraries
698   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
699
700   AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
701   CPPFLAGS="$ac_save_CPPFLAGS"
702   LDFLAGS="$ac_save_LDFLAGS"
703 #  LIBS="$ac_save_LIBS"
704   ])
705
706 # Like AC_TRY_RUN, but it uses the already-computed -I directories.
707 # (But not the -L directories!)
708 #
709 AC_DEFUN(AC_TRY_X_RUN, [
710   ac_save_CPPFLAGS="$CPPFLAGS"
711   if test \! -z "$includedir" ; then 
712     CPPFLAGS="$CPPFLAGS -I$includedir"
713   fi
714   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
715   AC_TRY_RUN([$1], [$2], [$3], [$4])
716   CPPFLAGS="$ac_save_CPPFLAGS"])
717
718
719
720 # Usage: HANDLE_X_PATH_ARG([variable_name],
721 #                          [--command-line-option],
722 #                          [descriptive string])
723 #
724 # All of the --with options take three forms:
725 #
726 #   --with-foo (or --with-foo=yes)
727 #   --without-foo (or --with-foo=no)
728 #   --with-foo=/DIR
729 #
730 # This function, HANDLE_X_PATH_ARG, deals with the /DIR case.  When it sees
731 # a directory (string beginning with a slash) it checks to see whether
732 # /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
733 # as appropriate.
734 #
735 AC_DEFUN(HANDLE_X_PATH_ARG, [
736    case "$[$1]" in
737     yes) ;;
738     no)  ;;
739
740     /*)
741      AC_MSG_CHECKING([for [$3] headers])
742      d=$[$1]/include
743      if test -d $d; then
744        X_CFLAGS="-I$d $X_CFLAGS"
745        AC_MSG_RESULT($d)
746      else
747        AC_MSG_RESULT(not found ($d: no such directory))
748      fi
749
750      AC_MSG_CHECKING([for [$3] libs])
751      d=$[$1]/lib
752      if test -d $d; then
753        X_LIBS="-L$d $X_LIBS"
754        AC_MSG_RESULT($d)
755      else
756        AC_MSG_RESULT(not found ($d: no such directory))
757      fi
758
759      # replace the directory string with "yes".
760      [$1]_req="yes"
761      [$1]=$[$1]_req
762      ;;
763
764     *)
765      echo ""
766      echo "error: argument to [$2] must be \"yes\", \"no\", or a directory."
767      echo "       If it is a directory, then \`DIR/include' will be added to"
768      echo "       the -I list, and \`DIR/lib' will be added to the -L list."
769      exit 1
770      ;;
771    esac
772   ])
773
774
775
776 ###############################################################################
777 ###############################################################################
778 #
779 #       End of function definitions.  Now start actually executing stuff.
780 #
781 ###############################################################################
782 ###############################################################################
783
784 # random compiler setup
785 AC_CANONICAL_HOST
786 AC_PROG_CC_ANSI
787 AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
788 AC_NO_OBJECTIVE_C
789 AC_PROG_CPP
790 AC_C_CONST
791 AC_C_INLINE
792 AC_EXEEXT
793 AC_DEMAND_BC
794
795 # stuff for Makefiles
796 AC_PROG_INSTALL
797 AC_PROG_INSTALL_DIRS
798 AC_PROG_MAKE_SET
799
800 # By default, autoconf sets INSTALL_SCRIPT to '${INSTALL_PROGRAM}'.
801 # That's wrong: it should be set to '${INSTALL}', so that one can
802 # implement the "install-strip" target properly (strip executables,
803 # but do not try to strip scripts.)
804 #
805 INSTALL_SCRIPT='${INSTALL}'
806
807 # random libc stuff
808 AC_HEADER_STDC
809 AC_CHECK_HEADERS(unistd.h)
810 AC_TYPE_MODE_T
811 AC_TYPE_PID_T
812 AC_TYPE_SIZE_T
813 AC_TYPE_SIGNAL
814 AC_HEADER_TIME
815 AC_HEADER_SYS_WAIT
816 AC_HEADER_DIRENT
817 AC_GETTIMEOFDAY_ARGS
818 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk)
819
820 AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
821 AC_CHECK_ICMP
822 AC_CHECK_ICMPHDR
823 AC_CHECK_HEADERS(crypt.h sys/select.h)
824 AC_PROG_PERL
825
826 if test -z "$PERL" ; then
827   # don't let it be blank...
828   PERL=/usr/bin/perl
829 fi
830
831 AC_PATH_XTRA
832
833 if test "$have_x" != yes; then
834   AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try \`$0 --help'.)
835 fi
836
837 AC_PATH_X_APP_DEFAULTS
838 AC_X_RANDOM_PATHS
839 AC_XPOINTER
840
841
842 ###############################################################################
843 #
844 #       Gettext support
845 #
846 ###############################################################################
847
848 AC_PROG_INTLTOOL
849 GETTEXT_PACKAGE=xscreensaver
850 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
851 AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE")
852 AC_SUBST(GETTEXT_PACKAGE)
853
854 ALL_LINGUAS="ca da de es et fi fr hu it ja ko nl no pl pt pt_BR ru sk sv vi wa zh_CN zh_TW"
855 AM_GLIB_GNU_GETTEXT
856
857
858 ###############################################################################
859 #
860 #       Check for -lXmu (some fucked up vendors don't ship it...)
861 #
862 ###############################################################################
863
864 have_xmu=no
865 AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes],,
866                   [#include <stdlib.h>
867                    #include <stdio.h>
868                    #include <X11/Intrinsic.h>])
869 if test "$have_xmu" = no ; then
870   XMU_SRCS='$(UTILS_SRC)/xmu.c'
871   XMU_OBJS='$(UTILS_BIN)/xmu.o'
872   XMU_LIBS=''
873 else
874   XMU_SRCS=''
875   XMU_OBJS=''
876   XMU_LIBS='-lXmu'
877   AC_DEFINE(HAVE_XMU)
878 fi
879
880
881 ###############################################################################
882 #
883 #       Check for the SunOS 4.1.x _get_wmShellWidgetClass bug.
884 #       See comp.windows.x FAQ question 124.  The right fix is to
885 #       get OpenWindows 3.0 patches 100512-02 and 100573-03.
886 #
887 ###############################################################################
888
889 if test "$have_xmu" = yes ; then
890   case "$host" in
891     *-sunos4*)
892     AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
893                    ac_cv_sunos_xmu_bug,
894                    [ac_save_LDFLAGS="$LDFLAGS"
895                     if test \! -z "$x_libraries" ; then
896                       LDFLAGS="$LDFLAGS -L$x_libraries"
897                     fi
898                     # Note: this trick never works!  (Generally.)
899                     # We're only getting away with using AC_TRY_LINK
900                     # with X libraries because we know it's SunOS.
901                     LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
902                     AC_TRY_LINK(,,
903                                 [ac_cv_sunos_xmu_bug=no],
904                                 [ac_cv_sunos_xmu_bug=yes])
905                     LDFLAGS="$ac_save_LDFLAGS"])
906     if test "$ac_cv_sunos_xmu_bug" = yes ; then
907       AC_CACHE_CHECK([whether the compiler understands -static], 
908                      ac_cv_ld_static,
909                      [ac_save_LDFLAGS="$LDFLAGS"
910                       LDFLAGS="$LDFLAGS -static"
911                       AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
912                     LDFLAGS="$ac_save_LDFLAGS"])
913       if test "$ac_cv_ld_static" = yes ; then
914         LDFLAGS="$LDFLAGS -static"
915       else
916         LDFLAGS="$LDFLAGS -Bstatic"
917       fi
918     fi
919     ;;
920   esac
921 fi
922
923
924 ###############################################################################
925 #
926 #       Handle the --with-hackdir option
927 #
928 ###############################################################################
929
930 have_hackdir=yes
931 with_hackdir_req=unspecified
932 AC_ARG_WITH(hackdir,[
933 Installation options:
934
935   --with-hackdir=DIR      Where to install the hundreds of demo executables.
936                           Default: \`PREFIX/lib/xscreensaver/'],
937   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
938
939 if test x"$with_hackdir" = xyes; then
940   HACKDIR='${exec_prefix}/lib/xscreensaver'
941 elif test x"$with_hackdir" = xno; then
942   HACKDIR='${bindir}'
943 else
944   # there must be a better way than this...
945   if test -z "`echo $with_hackdir | sed 's@^/.*@@'`" ; then
946     # absolute path
947     HACKDIR=$with_hackdir
948   else
949     # relative path
950     HACKDIR="\${exec_prefix}$with_hackdir"
951   fi
952 fi
953
954 # canonicalize slashes.
955 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
956
957 # This option used to be called --enable-subdir; make sure that is no longer
958 # used, since configure brain-damagedly ignores unknown --enable options.
959
960 obsolete_enable=
961 AC_ARG_ENABLE(subdir,,[obsolete_enable=yes])
962 if test -n "$obsolete_enable"; then
963   echo "error: the --enable-subdir option has been replaced with"
964   echo "       the new --with-hackdir option; see \`configure --help'"
965   echo "       for more information."
966   exit 1
967 fi
968
969
970 ###############################################################################
971 #
972 #       Handle the --with-configdir option
973 #
974 ###############################################################################
975
976 have_configdir=yes
977 with_configdir_req=unspecified
978 AC_ARG_WITH(configdir,
979 [  --with-configdir=DIR    Where to install the data files that describe each
980                           of the display modes to the GUI.
981                           Default: \`GNOMEPREFIX/control-center/screensavers/'
982                           or \`PREFIX/lib/xscreensaver/config/', depending on
983                           whether GNOME is available.
984 ],
985   [with_configdir="$withval"; with_configdir_req="$withval"],
986   [with_configdir=yes])
987
988 if test x"$with_configdir" = xyes; then
989   # filled in later...
990   HACK_CONF_DIR=''
991 elif test x"$with_configdir" = xno; then
992   echo "error: must be yes, or a pathname: --with-configdir=$with_configdir"
993   exit 1
994 else
995   # there must be a better way than this...
996   if test -z "`echo $with_configdir | sed 's@^/.*@@'`" ; then
997     # absolute path
998     HACK_CONF_DIR=$with_configdir
999   else
1000     # relative path
1001     HACK_CONF_DIR="\${exec_prefix}$with_configdir"
1002   fi
1003 fi
1004
1005
1006
1007
1008 ###############################################################################
1009 #
1010 #       Check for the SGI SCREEN_SAVER server extension.
1011 #
1012 ###############################################################################
1013
1014 have_sgi=no
1015 with_sgi_req=unspecified
1016 AC_ARG_WITH(sgi-ext,
1017 [Except where noted, all of the --with options below can also take a
1018 directory argument: for example, \`--with-motif=/opt/Motif'.  That would
1019 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
1020 to be added to the -L list, assuming those directories exist.  
1021
1022 By default, support for each of these options will be built in, if the
1023 relevant library routines exist.  At run time, they will then be used
1024 only if the X server being used supports them.  Each --with option has
1025 a corresponding --without option, to override building support for them
1026 at all.
1027
1028 Screen blanking and idle-detection options:
1029
1030   --with-sgi-ext          Include support for the SGI SCREEN_SAVER extension.],
1031   [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
1032
1033 HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
1034
1035 if test "$with_sgi" = yes; then
1036   AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
1037                     [have_sgi=yes
1038                      AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)],,
1039                     [#include <X11/Xlib.h>])
1040
1041 elif test "$with_sgi" != no; then
1042   echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
1043   exit 1
1044 fi
1045
1046
1047 ###############################################################################
1048 #
1049 #       Check for the MIT-SCREEN-SAVER server extension.
1050 #
1051 ###############################################################################
1052
1053 have_mit=no
1054 with_mit_req=unspecified
1055 AC_ARG_WITH(mit-ext,
1056 [  --with-mit-ext          Include support for the MIT-SCREEN-SAVER extension.],
1057   [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
1058
1059 HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER)
1060
1061 if test "$with_mit" = yes; then
1062   AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes],,
1063                     [#include <X11/Xlib.h>])
1064
1065   # Now check to see if it's really in the library; XF86Free-3.3 ships
1066   # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
1067   #
1068   if test "$have_mit" = yes; then
1069     AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [true], [have_mit=no], -lm)
1070
1071     if test "$have_mit" = no; then
1072       # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
1073       # of in Xext.  Thank you master, may I have another.
1074       AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
1075                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"],
1076                      [true], -lX11 -lXext -lm)
1077     fi
1078
1079     if test "$have_mit" = no; then
1080       # Double fuck!  Looks like some versions of XFree86 (whichever version
1081       # it is that comes with RedHat Linux 2.0 -- I can't find a version 
1082       # number) put this garbage in Xss instead of Xext.  Thank you master,
1083       #  may I have another.
1084       AC_CHECK_X_LIB(Xss, XScreenSaverRegister,
1085                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"],
1086                      [true], -lX11 -lXext -lm)
1087     fi
1088
1089   if test "$have_mit" = yes; then
1090     AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
1091   fi
1092
1093   fi
1094
1095 elif test "$with_mit" != no; then
1096   echo "error: must be yes or no: --with-mit-ext=$with_mit"
1097   exit 1
1098 fi
1099
1100
1101 ###############################################################################
1102 #
1103 #       Check for the XIDLE server extension.
1104 #
1105 ###############################################################################
1106
1107 have_xidle=no
1108 with_xidle_req=unspecified
1109 AC_ARG_WITH(xidle-ext,
1110 [  --with-xidle-ext        Include support for the XIDLE extension.],
1111   [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
1112
1113 HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
1114
1115 if test "$with_xidle" = yes; then
1116   AC_CHECK_X_HEADER(X11/extensions/xidle.h,
1117                     [have_xidle=yes
1118                      AC_DEFINE(HAVE_XIDLE_EXTENSION)],,
1119                     [#include <X11/Xlib.h>])
1120 elif test "$with_xidle" != no; then
1121   echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
1122   exit 1
1123 fi
1124
1125
1126 ###############################################################################
1127 #
1128 #       Check for the SGI-VIDEO-CONTROL server extension.
1129 #
1130 ###############################################################################
1131
1132 have_sgivc=no
1133 with_sgivc_req=unspecified
1134 AC_ARG_WITH(sgivc-ext,
1135 [  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL extension.],
1136   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
1137
1138 HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
1139
1140 if test "$with_sgivc" = yes; then
1141
1142   # first check for XSGIvc.h
1143   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes],,
1144                     [#include <X11/Xlib.h>])
1145
1146   # if that succeeded, then check for the -lXsgivc
1147   if test "$have_sgivc" = yes; then
1148     have_sgivc=no
1149     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
1150                   [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true],
1151                   -lXext -lX11)
1152   fi
1153
1154   # if that succeeded, then we've really got it.
1155   if test "$have_sgivc" = yes; then
1156     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
1157   fi
1158
1159 elif test "$with_sgivc" != no; then
1160   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
1161   exit 1
1162 fi
1163
1164
1165 ###############################################################################
1166 #
1167 #       Check for the DPMS server extension.
1168 #
1169 ###############################################################################
1170
1171 have_dpms=no
1172 with_dpms_req=unspecified
1173 AC_ARG_WITH(dpms-ext,
1174 [  --with-dpms-ext         Include support for the DPMS extension.],
1175   [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
1176
1177 HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
1178
1179 if test "$with_dpms" = yes; then
1180
1181   # first check for dpms.h
1182   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes],,
1183                     [#include <X11/Xlib.h>])
1184
1185   # if that succeeded, then check for the DPMS code in the libraries
1186   if test "$have_dpms" = yes; then
1187
1188     # first look in -lXext (this is where it is with XFree86 4.0)
1189     have_dpms=no
1190     AC_CHECK_X_LIB(Xext, DPMSInfo, [have_dpms=yes], [true], -lXext -lX11)
1191
1192     # if that failed, look in -lXdpms (this is where it was in XFree86 3.x)
1193     if test "$have_dpms" = no; then
1194       AC_CHECK_X_LIB(Xdpms, DPMSInfo,
1195                     [have_dpms=yes; XDPMS_LIBS="-lXdpms"], [true],
1196                     -lXext -lX11)
1197     fi
1198   fi
1199
1200
1201   # if that succeeded, then we've really got it.
1202   if test "$have_dpms" = yes; then
1203     AC_DEFINE(HAVE_DPMS_EXTENSION)
1204   fi
1205
1206 elif test "$with_dpms" != no; then
1207   echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
1208   exit 1
1209 fi
1210
1211
1212 ###############################################################################
1213 #
1214 #       Check for the XINERAMA server extension.
1215 #
1216 ###############################################################################
1217
1218 have_xinerama=no
1219 with_xinerama_req=unspecified
1220 AC_ARG_WITH(xinerama-ext,
1221 [  --with-xinerama-ext     Include support for the XINERAMA extension.],
1222   [with_xinerama="$withval"; with_xinerama_req="$withval"],[with_xinerama=yes])
1223
1224 HANDLE_X_PATH_ARG(with_xinerama, --with-xinerama-ext, XINERAMA)
1225
1226 if test "$with_xinerama" = yes; then
1227
1228   # first check for Xinerama.h
1229   AC_CHECK_X_HEADER(X11/extensions/Xinerama.h, [have_xinerama=yes],,
1230                     [#include <X11/Xlib.h>])
1231
1232   # if that succeeded, then check for the XINERAMA code in the libraries
1233   if test "$have_xinerama" = yes; then
1234
1235     # first look in -lXext
1236     have_xinerama=no
1237     AC_CHECK_X_LIB(Xext, XineramaQueryExtension, [have_xinerama=yes], [true],
1238                   -lXext -lX11)
1239
1240     # if that failed, look in -lXinerama (this is where it is in XFree86 4.1.)
1241     if test "$have_xinerama" = no; then
1242       AC_CHECK_X_LIB(Xinerama, XineramaQueryExtension,
1243                      [have_xinerama=yes; SAVER_LIBS="$SAVER_LIBS -lXinerama"],
1244                      [true], -lXext -lX11)
1245     fi
1246   fi
1247
1248   # if that succeeded, then we've really got it.
1249   if test "$have_xinerama" = yes; then
1250     AC_DEFINE(HAVE_XINERAMA)
1251   fi
1252
1253 elif test "$with_xinerama" != no; then
1254   echo "error: must be yes or no: --with-xinerama-ext=$with_xinerama"
1255   exit 1
1256 fi
1257
1258
1259 ###############################################################################
1260 #
1261 #       Check for the XF86VMODE server extension (for virtual screens.)
1262 #
1263 ###############################################################################
1264
1265 have_xf86vmode=no
1266 with_xf86vmode_req=unspecified
1267 AC_ARG_WITH(xf86vmode-ext,
1268 [  --with-xf86vmode-ext    Include support for XFree86 virtual screens.],
1269   [with_xf86vmode="$withval"; with_xf86vmode_req="$withval"],
1270   [with_xf86vmode=yes])
1271
1272 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
1273
1274 if test "$with_xf86vmode" = yes; then
1275
1276   # first check for xf86vmode.h
1277   AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes],,
1278                     [#include <X11/Xlib.h>])
1279
1280   # if that succeeded, then check for the -lXxf86vm
1281   if test "$have_xf86vmode" = yes; then
1282     have_xf86vmode=no
1283     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
1284                   [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"],
1285                    [true], -lXext -lX11)
1286   fi
1287
1288   # if that succeeded, then we've really got it.
1289   if test "$have_xf86vmode" = yes; then
1290     AC_DEFINE(HAVE_XF86VMODE)
1291   fi
1292
1293 elif test "$with_xf86vmode" != no; then
1294   echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
1295   exit 1
1296 fi
1297
1298
1299 ###############################################################################
1300 #
1301 #       Check for the XF86VMODE server extension (for gamma fading.)
1302 #
1303 ###############################################################################
1304
1305 have_xf86gamma=no
1306 have_xf86gamma_ramp=no
1307 with_xf86gamma_req=unspecified
1308 AC_ARG_WITH(xf86gamma-ext,
1309 [  --with-xf86gamma-ext    Include support for XFree86 gamma fading.],
1310   [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"],
1311   [with_xf86gamma=yes])
1312
1313 HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma)
1314
1315 if test "$with_xf86gamma" = yes; then
1316
1317   # first check for xf86vmode.h, if we haven't already
1318   if test "$have_xf86vmode" = yes; then
1319     have_xf86gamma=yes
1320   else
1321     AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes],,
1322                       [#include <X11/Xlib.h>])
1323   fi
1324
1325   # if that succeeded, then check for the -lXxf86vm
1326   if test "$have_xf86gamma" = yes; then
1327     have_xf86gamma=no
1328     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma,
1329                   [have_xf86gamma=yes],
1330                    [true], -lXext -lX11)
1331   fi
1332
1333   # check for the Ramp versions of the functions too.
1334   if test "$have_xf86gamma" = yes; then
1335     have_xf86gamma_ramp=no
1336     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGammaRamp,
1337                   [have_xf86gamma_ramp=yes],
1338                    [true], -lXext -lX11)
1339   fi
1340
1341   # if those tests succeeded, then we've really got the functions.
1342   if test "$have_xf86gamma" = yes; then
1343     AC_DEFINE(HAVE_XF86VMODE_GAMMA)
1344   fi
1345
1346   if test "$have_xf86gamma_ramp" = yes; then
1347     AC_DEFINE(HAVE_XF86VMODE_GAMMA_RAMP)
1348   fi
1349
1350   # pull in the lib, if we haven't already
1351   if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then
1352     SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
1353   fi
1354
1355 elif test "$with_xf86gamma" != no; then
1356   echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode"
1357   exit 1
1358 fi
1359
1360
1361 ###############################################################################
1362 #
1363 #       Check for XF86MiscSetGrabKeysState (but only bother if we are already
1364 #       using other XF86 stuff.)
1365 #
1366 ###############################################################################
1367
1368 have_xf86miscsetgrabkeysstate=no
1369 if test "$have_xf86gamma" = yes -o "$have_xf86vmode" = yes; then
1370   AC_CHECK_X_LIB(Xxf86misc, XF86MiscSetGrabKeysState,
1371                 [have_xf86miscsetgrabkeysstate=yes],
1372                 [true], -lXext -lX11)
1373   if test "$have_xf86miscsetgrabkeysstate" = yes ; then
1374     SAVER_LIBS="$SAVER_LIBS -lXxf86misc"
1375     AC_DEFINE(HAVE_XF86MISCSETGRABKEYSSTATE)
1376   fi
1377 fi
1378
1379
1380 ###############################################################################
1381 #
1382 #       Check for HP XHPDisableReset and XHPEnableReset.
1383 #
1384 ###############################################################################
1385
1386 AC_MSG_CHECKING([for XHPDisableReset in X11/XHPlib.h])
1387 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
1388                   [AC_DEFINE(HAVE_XHPDISABLERESET)
1389                    SAVER_LIBS="-lXhp11 $SAVER_LIBS"
1390                    AC_MSG_RESULT(yes)],
1391                   [AC_MSG_RESULT(no)])
1392
1393
1394 ###############################################################################
1395 #
1396 #       Check for /proc/interrupts.
1397 #
1398 ###############################################################################
1399
1400 have_proc_interrupts=no
1401 with_proc_interrupts_req=unspecified
1402 AC_ARG_WITH(proc-interrupts,
1403 [  --with-proc-interrupts  Include support for consulting the /proc/interrupts
1404                           file to notice keyboard activity.],
1405   [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
1406   [with_proc_interrupts=yes])
1407
1408 if test "$with_proc_interrupts" = yes; then
1409
1410    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
1411     ac_cv_have_proc_interrupts,
1412     [ac_cv_have_proc_interrupts=no
1413      if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
1414        ac_cv_have_proc_interrupts=yes
1415      fi
1416     ])
1417    have_proc_interrupts=$ac_cv_have_proc_interrupts
1418
1419   if test "$have_proc_interrupts" = yes; then
1420     AC_DEFINE(HAVE_PROC_INTERRUPTS)
1421   fi
1422
1423 elif test "$with_proc_interrupts" != no; then
1424   echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
1425   exit 1
1426 fi
1427
1428
1429 ###############################################################################
1430 #
1431 #       The --enable-locking option
1432 #
1433 ###############################################################################
1434
1435 AC_ARG_ENABLE(locking,[
1436 Screen locking options:
1437
1438   --enable-locking        Compile in support for locking the display.
1439   --disable-locking       Do not allow locking at all.],
1440   [enable_locking="$enableval"],[enable_locking=yes])
1441 if test "$enable_locking" = yes; then
1442   true
1443 elif test "$enable_locking" = no; then
1444   AC_DEFINE(NO_LOCKING)
1445 else
1446   echo "error: must be yes or no: --enable-locking=$enable_locking"
1447   exit 1
1448 fi
1449
1450
1451
1452 ###############################################################################
1453 #
1454 #       The --enable-vt-locking option
1455 #
1456 ###############################################################################
1457
1458 #ac_vt_lockswitch=no
1459 #AC_ARG_ENABLE(vt-locking,[
1460 #  --enable-vt-locking     Compile in support for locking Virtual Terminals.
1461 #                          This is the default if the system supports it, and
1462 #                          if locking support is included (--enable-locking.)
1463 #  --disable-vt-locking    Do not allow locking of VTs, even if locking is
1464 #                          enabled.],
1465 #  [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
1466 #if test "$enable_vt_locking" = yes; then
1467 #
1468 #  AC_CACHE_CHECK([for the VT_LOCKSWITCH ioctl], ac_cv_vt_lockswitch,
1469 #   [AC_TRY_COMPILE([#include <fcntl.h>
1470 #                   #include <sys/ioctl.h>
1471 #                   #include <sys/vt.h>],
1472 #                  [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
1473 #                  [ac_cv_vt_lockswitch=yes],
1474 #                  [ac_cv_vt_lockswitch=no])])
1475 #  ac_vt_lockswitch=$ac_cv_vt_lockswitch
1476 #
1477 #elif test "$enable_vt_locking" = no; then
1478 #  true
1479 #else
1480 #  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
1481 #  exit 1
1482 #fi
1483 #
1484 #if test "$ac_vt_lockswitch" = yes; then
1485 #  AC_DEFINE(HAVE_VT_LOCKSWITCH)
1486 #  # the VT_LOCKSWITCH ioctl can only be used when running as root.
1487 #  # #### but it doesn't work yet, so don't worry about that for now.
1488 ##  need_setuid=yes
1489 #fi
1490
1491
1492 ###############################################################################
1493 #
1494 #       Check for PAM.
1495 #
1496 ###############################################################################
1497
1498 case "$host" in
1499   *-solaris*)
1500    # Solaris systems tend to come with PAM misconfigured.
1501    #  Don't build it by default, even if the headers exist.
1502    with_pam_default=no
1503    ;;
1504   *)
1505    # Default to building PAM support on all other systems, if it exists.
1506    with_pam_default=yes
1507   ;;
1508 esac
1509
1510 have_pam=no
1511 with_pam_req=unspecified
1512
1513 AC_ARG_WITH(pam,
1514 [  --with-pam              Include support for PAM (Pluggable Auth Modules.)],
1515   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
1516
1517 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1518
1519 if test "$enable_locking" = yes -a "$with_pam" = yes; then
1520   AC_CACHE_CHECK([for PAM], ac_cv_pam,
1521                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1522                                    [ac_cv_pam=yes],
1523                                    [ac_cv_pam=no])])
1524   if test "$ac_cv_pam" = yes ; then
1525     have_pam=yes
1526     AC_DEFINE(HAVE_PAM)
1527     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
1528
1529     # libpam typically requires dlopen and dlsym.  On FreeBSD,
1530     # those are in libc.  On Linux and Solaris, they're in libdl.
1531     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
1532
1533     AC_MSG_CHECKING(how to call pam_strerror)
1534     AC_CACHE_VAL(ac_cv_pam_strerror_args,
1535      [AC_TRY_COMPILE([#include <stdio.h>
1536                       #include <stdlib.h>
1537                       #include <security/pam_appl.h>],
1538                      [pam_handle_t *pamh = 0;
1539                       char *s = pam_strerror(pamh, PAM_SUCCESS);],
1540                      [ac_pam_strerror_args=2],
1541                      [AC_TRY_COMPILE([#include <stdio.h>
1542                                       #include <stdlib.h>
1543                                       #include <security/pam_appl.h>],
1544                                      [char *s =
1545                                        pam_strerror(PAM_SUCCESS);],
1546                                      [ac_pam_strerror_args=1],
1547                                      [ac_pam_strerror_args=0])])
1548       ac_cv_pam_strerror_args=$ac_pam_strerror_args])
1549     ac_pam_strerror_args=$ac_cv_pam_strerror_args
1550     if test "$ac_pam_strerror_args" = 1 ; then
1551       AC_MSG_RESULT(one argument)
1552     elif test "$ac_pam_strerror_args" = 2 ; then
1553       AC_DEFINE(PAM_STRERROR_TWO_ARGS)
1554       AC_MSG_RESULT(two arguments)
1555     else
1556       AC_MSG_RESULT(unknown)
1557     fi
1558   fi
1559 fi
1560
1561
1562 ###############################################################################
1563 #
1564 #       Check for Kerberos.
1565 #
1566 ###############################################################################
1567
1568 have_kerberos=no
1569 have_kerberos5=no
1570 with_kerberos_req=unspecified
1571
1572 AC_ARG_WITH(kerberos, 
1573 [  --with-kerberos         Include support for Kerberos authentication.],
1574   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
1575
1576 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
1577
1578 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
1579   AC_CACHE_CHECK([for Kerberos 4], ac_cv_kerberos,
1580                  [AC_TRY_X_COMPILE([#include <krb.h>],,
1581                                    [ac_cv_kerberos=yes],
1582                                    [ac_cv_kerberos=no])])
1583   AC_CACHE_CHECK([for Kerberos 5], ac_cv_kerberos5,
1584                  [AC_TRY_X_COMPILE([#include <kerberosIV/krb.h>],,
1585                                    [ac_cv_kerberos5=yes],
1586                                    [ac_cv_kerberos5=no])])
1587
1588   if test "$ac_cv_kerberos" = yes ; then
1589     have_kerberos=yes
1590     AC_DEFINE(HAVE_KERBEROS)
1591   fi
1592
1593   if test "$ac_cv_kerberos5" = yes ; then
1594     have_kerberos=yes
1595     have_kerberos5=yes
1596     AC_DEFINE(HAVE_KERBEROS)
1597     AC_DEFINE(HAVE_KERBEROS5)
1598   fi
1599
1600   if test "$have_kerberos5" = yes ; then
1601     # from Matt Knopp <mhat@infocalypse.netlag.com>
1602     # (who got it from amu@mit.edu)
1603
1604     PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"
1605
1606     # jwz: MacOS X uses -lkrb5, but not -lcrypt
1607     AC_CHECK_X_LIB(crypt, crypt, [PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1608
1609   elif test "$have_kerberos" = yes ; then
1610     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
1611     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
1612   fi
1613
1614   if test "$have_kerberos" = yes ; then
1615     AC_CHECK_FUNC(res_search,,
1616       AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
1617         AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
1618       ))
1619   fi
1620 fi
1621
1622
1623 ###############################################################################
1624 #
1625 #       Check for the nine billion variants of shadow passwords...
1626 #
1627 ###############################################################################
1628
1629 need_setuid=no
1630
1631 have_shadow=no
1632 with_shadow_req=unspecified
1633
1634 AC_ARG_WITH(shadow,
1635 [  --with-shadow           Include support for shadow password authentication.],
1636   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
1637
1638 HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
1639
1640 if test "$enable_locking" = no ; then
1641   with_shadow_req=no
1642   with_shadow=no
1643 fi
1644
1645
1646 ###############################################################################
1647 #
1648 #       Check for Sun "adjunct" passwords.
1649 #
1650 ###############################################################################
1651
1652 if test "$with_shadow" = yes ; then
1653   AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
1654                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1655                                     #include <unistd.h>
1656                                     #include <sys/types.h>
1657                                     #include <sys/label.h>
1658                                     #include <sys/audit.h>
1659                                     #include <pwdadj.h>],
1660                       [struct passwd_adjunct *p = getpwanam("nobody");
1661                        const char *pw = p->pwa_passwd;],
1662                       [ac_cv_sun_adjunct=yes],
1663                       [ac_cv_sun_adjunct=no])])
1664   if test "$ac_cv_sun_adjunct" = yes; then
1665     have_shadow_adjunct=yes
1666     have_shadow=yes
1667     need_setuid=yes
1668   fi
1669 fi
1670
1671
1672 ###############################################################################
1673 #
1674 #       Check for DEC and SCO so-called "enhanced" security.
1675 #
1676 ###############################################################################
1677
1678 if test "$with_shadow" = yes ; then
1679   AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
1680                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1681                                     #include <unistd.h>
1682                                     #include <sys/types.h>
1683                                     #include <pwd.h>
1684                                     #include <sys/security.h>
1685                                     #include <prot.h>],
1686                       [struct pr_passwd *p;
1687                        const char *pw;
1688                        set_auth_parameters(0, 0);
1689                        check_auth_parameters();
1690                        p = getprpwnam("nobody");
1691                        pw = p->ufld.fd_encrypt;],
1692                       [ac_cv_enhanced_passwd=yes],
1693                       [ac_cv_enhanced_passwd=no])])
1694   if test $ac_cv_enhanced_passwd = yes; then
1695     have_shadow_enhanced=yes
1696     have_shadow=yes
1697     need_setuid=yes
1698
1699     # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
1700     # (I'm told it needs -lcurses too, but I don't understand why.)
1701     # But on DEC, it's in -lsecurity.
1702     #
1703     AC_CHECK_LIB(prot, getprpwnam, 
1704                  [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
1705                  [AC_CHECK_LIB(security, getprpwnam, 
1706                                [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
1707                  [-lx])
1708   fi
1709 fi
1710
1711 ###############################################################################
1712 #
1713 #       Check for HP's entry in the "Not Invented Here" Sweepstakes.
1714 #
1715 ###############################################################################
1716
1717 if test "$with_shadow" = yes ; then
1718   AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
1719                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1720                                     #include <unistd.h>
1721                                     #include <sys/types.h>
1722                                     #include <pwd.h>
1723                                     #include <hpsecurity.h>
1724                                     #include <prot.h>],
1725                       [struct s_passwd *p = getspwnam("nobody");
1726                        const char *pw = p->pw_passwd;],
1727                       [ac_cv_hpux_passwd=yes],
1728                       [ac_cv_hpux_passwd=no])])
1729   if test "$ac_cv_hpux_passwd" = yes; then
1730     have_shadow_hpux=yes
1731     have_shadow=yes
1732     need_setuid=yes
1733
1734     # on HPUX, bigcrypt is in -lsec
1735     AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
1736   fi
1737 fi
1738
1739
1740 ###############################################################################
1741 #
1742 #       Check for FreeBSD-style shadow passwords.
1743 #
1744 #       On FreeBSD, getpwnam() and friends work just like on non-shadow-
1745 #       password systems -- except you only get stuff in the pw_passwd field
1746 #       if the running program is setuid.  So, guess that we've got this
1747 #       lossage to contend with if /etc/master.passwd exists, and default to
1748 #       a setuid installation.
1749 #
1750 ###############################################################################
1751
1752 if test "$with_shadow" = yes ; then
1753   AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
1754                  [if test -f /etc/master.passwd ; then
1755                     ac_cv_master_passwd=yes
1756                   else
1757                     ac_cv_master_passwd=no
1758                   fi])
1759   if test "$ac_cv_master_passwd" = yes; then
1760     need_setuid=yes
1761   fi
1762 fi
1763
1764
1765 ###############################################################################
1766 #
1767 #       Check for traditional (ha!) shadow passwords.
1768 #
1769 ###############################################################################
1770
1771 if test "$with_shadow" = yes ; then
1772   AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
1773                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1774                                     #include <unistd.h>
1775                                     #include <sys/types.h>
1776                                     #include <pwd.h>
1777                                     #include <shadow.h>],
1778                       [struct spwd *p = getspnam("nobody");
1779                        const char *pw = p->sp_pwdp;],
1780                       [ac_cv_shadow=yes],
1781                       [ac_cv_shadow=no])])
1782   if test "$ac_cv_shadow" = yes; then
1783     have_shadow=yes
1784     need_setuid=yes
1785
1786     # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
1787     have_getspnam=no
1788     AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
1789     if test "$have_getspnam" = no ; then
1790       AC_CHECK_LIB(gen, getspnam,
1791                    [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
1792     fi
1793   fi
1794 fi
1795
1796
1797 ###############################################################################
1798 #
1799 #       Check for other libraries needed for non-shadow passwords.
1800 #
1801 ###############################################################################
1802
1803 if test "$enable_locking" = yes ; then
1804
1805   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
1806   have_crypt=no
1807   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
1808   if test "$have_crypt" = no ; then
1809     AC_CHECK_LIB(crypt, crypt,
1810                  [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1811   fi
1812 fi
1813
1814
1815 # Most of the above shadow mechanisms will have set need_setuid to yes,
1816 # if they were found.  But, on some systems, we need setuid even when
1817 # using plain old vanilla passwords.
1818 #
1819 if test "$enable_locking" = yes ; then
1820   case "$host" in
1821     *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
1822       need_setuid=yes
1823     ;;
1824   esac
1825 fi
1826
1827
1828 if test "$have_shadow_adjunct" = yes ; then
1829   AC_DEFINE(HAVE_ADJUNCT_PASSWD)
1830 elif test "$have_shadow_enhanced" = yes ; then
1831   AC_DEFINE(HAVE_ENHANCED_PASSWD)
1832 elif test "$have_shadow_hpux" = yes ; then
1833   AC_DEFINE(HAVE_HPUX_PASSWD)
1834 elif test "$have_shadow" = yes ; then
1835   AC_DEFINE(HAVE_SHADOW_PASSWD)
1836 fi
1837
1838
1839 ###############################################################################
1840 #
1841 #       Check for -lXm.
1842 #
1843 ###############################################################################
1844
1845 have_motif=no
1846 with_motif_req=unspecified
1847 AC_ARG_WITH(motif,[
1848 User interface options:
1849
1850   --with-motif            Use the Motif toolkit for the user interface
1851                           (not recommended.)],
1852   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes])
1853
1854 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
1855
1856 if test "$with_motif" != yes -a "$with_motif" != no ; then
1857   echo "error: must be yes or no: --with-motif=$with_motif"
1858   exit 1
1859 fi
1860
1861 if test "$with_motif" = yes; then
1862   have_motif=no
1863   AC_CHECK_X_HEADER(Xm/Xm.h,
1864                     [have_motif=yes
1865                      AC_DEFINE(HAVE_MOTIF)
1866                      MOTIF_LIBS="$MOTIF_LIBS -lXm"],,
1867                     [#include <stdlib.h>
1868                      #include <stdio.h>
1869                      #include <X11/Intrinsic.h>])
1870 fi
1871
1872
1873 if test "$have_motif" = yes; then
1874   AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)],,
1875                     [#include <stdlib.h>
1876                      #include <stdio.h>
1877                      #include <X11/Intrinsic.h>])
1878 fi
1879
1880
1881 ###############################################################################
1882 #
1883 #       Check for -lgtk (and Gnome stuff)
1884 #
1885 ###############################################################################
1886
1887 have_gtk=no
1888 have_gtk2=no
1889 with_gtk_req=unspecified
1890 AC_ARG_WITH(gtk,
1891 [  --with-gtk              Use the Gtk toolkit for the user interface.],
1892   [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
1893
1894 # if --with-gtk=/directory/ was specified, remember that directory so that
1895 # we can also look for the `gtk-config' program in that directory.
1896 case "$with_gtk" in
1897   /*)
1898     gtk_dir="$with_gtk"
1899     ;;
1900   *)
1901     gtk_dir=""
1902     ;;
1903 esac
1904
1905 HANDLE_X_PATH_ARG(with_gtk, --with-gtk, Gtk)
1906
1907 if test "$with_gtk" != yes -a "$with_gtk" != no ; then
1908   echo "error: must be yes or no: --with-gtk=$with_gtk"
1909   exit 1
1910 fi
1911
1912 have_gnome=no
1913 with_gnome_req=unspecified
1914 AC_ARG_WITH(gnome,
1915 [  --with-gnome            Include support for the Gnome 1.x Control Center.
1916                           (This option is not needed with GTK 2.x / Gnome 2.x.)
1917 ],
1918   [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes])
1919
1920 # if --with-gnome=/directory/ was specified, remember that directory so that
1921 # we can also look for the `gnome-config' program in that directory.
1922 case "$with_gnome" in
1923   /*)
1924     gnome_dir="$with_gnome"
1925     ;;
1926   *)
1927     gnome_dir=""
1928     ;;
1929 esac
1930
1931 HANDLE_X_PATH_ARG(with_gnome, --with-gnome, Gnome)
1932
1933 if test "$with_gnome" != yes -a "$with_gnome" != no ; then
1934   echo "error: must be yes or no: --with-gnome=$with_gnome"
1935   exit 1
1936 fi
1937
1938 parse_gtk_version_string() {
1939   # M4 sucks!!
1940   changequote(X,Y)
1941   maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
1942   min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
1943   changequote([,])
1944   ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
1945   if test -z "$ac_gtk_version"; then
1946     ac_gtk_version=unknown
1947     ac_gtk_version_string=unknown
1948   fi
1949 }
1950
1951
1952 jurassic_gtk=no
1953 gtk2_halfassed=no
1954
1955 if test "$with_gtk" = yes; then
1956   have_gtk=no
1957   
1958   # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
1959   # look in /foo/bin/ for glib-config, gtk-config, and gnome-config.
1960   #
1961   gtk_path="$PATH"
1962
1963   if test ! -z "$gtk_dir"; then
1964     # canonicalize slashes.
1965     foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
1966     gtk_path="$foo:$gtk_path"
1967   fi
1968
1969   if test ! -z "$gnome_dir"; then
1970     # canonicalize slashes.
1971     foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
1972     gtk_path="$foo:$gtk_path"
1973   fi
1974
1975   AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path)
1976
1977   if test -n "$pkg_config" ; then
1978     #
1979     # the new way...
1980     # run pkg-config based tests.
1981     #
1982
1983     pkgs=''
1984     pkg_check_version() {
1985       if test "$ok" = yes ; then
1986         req="$1"
1987         min="$2"
1988         AC_MSG_CHECKING(for $req)
1989         if $pkg_config --exists "$req" ; then
1990           vers=`$pkg_config --modversion "$req"`
1991           if $pkg_config --exists "$req >= $min" ; then
1992             AC_MSG_RESULT($vers)
1993             pkgs="$pkgs $req"
1994             return 1
1995           else
1996             AC_MSG_RESULT($vers (wanted >= $min))
1997             ok=no
1998             return 0
1999           fi
2000         else
2001           AC_MSG_RESULT(no)
2002           ok=no
2003           return 0
2004         fi
2005       fi
2006     }
2007
2008     ok="yes"
2009     pkg_check_version     gtk+-2.0  2.0.1  ; ac_gtk_version_string="$vers"
2010     pkg_check_version  gmodule-2.0  2.0.0
2011     pkg_check_version   libxml-2.0  2.4.6
2012     pkg_check_version libglade-2.0  1.99.0
2013     have_gtk="$ok"
2014
2015     if test "$have_gtk" = yes; then
2016       have_gtk2=yes
2017       AC_DEFINE(HAVE_GTK2)
2018     else
2019       if test -n "$ac_gtk_version_string" ; then
2020         gtk2_halfassed="$ac_gtk_version_string"
2021         gtk2_halfassed_lib="$req"
2022       fi
2023     fi
2024
2025     if test "$have_gtk" = no; then
2026       #
2027       # we don't have GTK 2.  Let's look for GTK 1.
2028       #
2029       pkgs=''
2030       ok="yes"
2031       pkg_check_version gtk+ 1.2           ; ac_gtk_version_string="$vers"
2032       pkg_check_version glib 1.0
2033       have_gtk="$ok"
2034
2035       # Now check for Gnome...
2036       #
2037       if test "$have_gtk" = yes -a "$with_gnome" = yes; then
2038         old_pkgs="$pkgs"
2039         ok=yes
2040         pkg_check_version capplet    1.0
2041         pkg_check_version gnomeui    1.0
2042         pkg_check_version gdk_pixbuf 0.1
2043         have_gnome="$ok"
2044
2045         if test "$have_gnome" = no; then
2046           pkgs="$old_pkgs"
2047         else
2048           AC_DEFINE(HAVE_CRAPPLET)
2049         fi
2050       fi
2051     fi
2052
2053     if test "$have_gtk" = yes; then
2054       parse_gtk_version_string
2055       jurassic_gtk=no
2056     else
2057       have_gnome=no
2058     fi
2059
2060     if test "$have_gtk" = yes; then
2061       AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
2062                      [ac_cv_gtk_config_cflags=`$pkg_config --cflags $pkgs`])
2063       AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
2064                      [ac_cv_gtk_config_libs=`$pkg_config --libs $pkgs`])
2065     fi
2066     ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
2067     ac_gtk_config_libs=$ac_cv_gtk_config_libs
2068
2069     ac_gnome_config_cflags=$ac_gtk_config_cflags
2070     ac_gnome_config_libs=$ac_gtk_config_libs
2071
2072   else
2073     #
2074     # the old way...
2075     # run {gnome,gtk}-config based tests.
2076     #
2077
2078     AC_PATH_PROGS(glib_config,  glib12-config glib-config,,  $gtk_path)
2079     AC_PATH_PROGS(gtk_config,   gtk12-config  gtk-config,,   $gtk_path)
2080
2081     if test "$with_gnome" = yes; then
2082       AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path)
2083     fi
2084
2085     if test -n "$glib_config" -a  -n "$gtk_config" ; then
2086       have_gtk=yes
2087       if test "$with_gnome" = yes -a -n "$gnome_config" ; then
2088         have_gnome=yes
2089       fi
2090     fi
2091
2092     if test "$have_gtk" = yes; then
2093       AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
2094                      [ac_cv_gtk_version_string=`$gtk_config --version`])
2095       ac_gtk_version_string=$ac_cv_gtk_version_string
2096       parse_gtk_version_string
2097     fi
2098
2099     if test "$have_gtk" = yes; then
2100       if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
2101       then
2102         have_gtk=no
2103         have_gnome=no
2104         jurassic_gtk=yes
2105       fi
2106     fi
2107
2108     if test "$have_gtk" = yes; then
2109       AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
2110                      [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
2111       AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
2112                      [ac_cv_gtk_config_libs=`$gtk_config --libs`])
2113     fi
2114     ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
2115     ac_gtk_config_libs=$ac_cv_gtk_config_libs
2116
2117     # Check for Gnome Capplet support.
2118     # Note that this is only needed with Gnome 1.x, not Gnome 2.x.
2119     # In a Gnome 2.x world, libcapplet will not exist.
2120     # (In fact, this likely won't even be checked, since in a Gnome 2.x
2121     # world, we will probably be up in the "$pkg_config" branch instead
2122     # of here in the "$gnome_config" branch.)
2123     #
2124     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2125       gnome_config_libs="gtk capplet gnomeui gdk_pixbuf"
2126       AC_MSG_CHECKING(for Gnome capplet includes)
2127       AC_CACHE_VAL(ac_cv_gnome_config_cflags,
2128         [if ( $gnome_config --cflags $gnome_config_libs 2>&1 | \
2129               grep Unknown >/dev/null ) ; then
2130            ac_cv_gnome_config_cflags=''
2131          else
2132           ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs`
2133          fi])
2134       ac_gnome_config_cflags=$ac_cv_gnome_config_cflags
2135       if test "$ac_gnome_config_cflags" = "" ; then
2136         have_gnome=no
2137         AC_MSG_RESULT(no)
2138       else
2139         AC_MSG_RESULT($ac_gnome_config_cflags)
2140       fi
2141     fi
2142
2143     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2144       AC_MSG_CHECKING(for Gnome capplet libs)
2145       AC_CACHE_VAL(ac_cv_gnome_config_libs,
2146         [if ( $gnome_config --libs $gnome_config_libs 2>&1 |
2147               grep Unknown >/dev/null ) ; then
2148            ac_cv_gnome_config_libs=''
2149          else
2150            ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs`
2151          fi])
2152       ac_gnome_config_libs=$ac_cv_gnome_config_libs
2153       if test "$ac_gnome_config_libs" = "" ; then
2154         have_gnome=no
2155         AC_MSG_RESULT(no)
2156       else
2157         AC_MSG_RESULT($ac_gnome_config_libs)
2158       fi
2159     fi
2160
2161     # If we have Gnome, then override the gtk-config values with 
2162     # the gnome-config values.
2163     #
2164     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2165       ac_gtk_config_cflags=$ac_gnome_config_cflags
2166       ac_gtk_config_libs=$ac_gnome_config_libs
2167       AC_DEFINE(HAVE_CRAPPLET)
2168     fi
2169
2170   fi   # end of {gnome,gtk}-config based tests
2171
2172   if test "$have_gtk" = yes -a "$have_gtk2" = no; then
2173     # check for this function that was not in libcapplet 1.2.
2174     # (only needed in Gnome/Gtk 1.x, not Gnome/Gtk 2.x)
2175     AC_CHECK_X_LIB(capplet, capplet_widget_changes_are_immediate,
2176                    [AC_DEFINE(HAVE_CRAPPLET_IMMEDIATE)], [true],
2177                    $ac_gnome_config_libs)
2178   fi
2179
2180
2181   GNOME_DATADIR=""
2182   if test "$have_gtk" = yes; then
2183     if test -n "$pkg_config"; then
2184       if test "$have_gtk2" = yes; then
2185         GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
2186       else
2187         GNOME_DATADIR=`$pkg_config --variable=prefix gtk+`
2188       fi
2189     else
2190       GNOME_DATADIR=`$gtk_config --prefix`
2191     fi
2192     GNOME_DATADIR="$GNOME_DATADIR/share"
2193   fi
2194
2195   # .desktop files go in different places in Gnome 1.x and Gnome 2.x...
2196   if test "$have_gtk2" = yes; then
2197     GNOME_PANELDIR='$(GNOME_PANELDIR2)'
2198   else
2199     GNOME_PANELDIR='$(GNOME_PANELDIR1)'
2200   fi
2201
2202
2203   if test "$have_gtk" = yes; then
2204     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
2205     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
2206     AC_DEFINE(HAVE_GTK)
2207
2208     if test "$have_gtk2" = yes; then
2209       GTK_EXTRA_OBJS=""
2210     else
2211       GTK_EXTRA_OBJS="\$(GTK_EXTRA_OBJS)"
2212     fi
2213   fi
2214
2215 fi
2216
2217
2218 # Check for the Gnome Help Browser.
2219 #
2220 if test "$have_gtk" = yes; then
2221   AC_CHECK_PROGS(have_gnome_help, yelp gnome-help-browser, no)
2222   if test "$have_gnome_help" != no; then
2223     have_gnome_help=yes
2224   fi
2225 fi
2226
2227
2228 ###############################################################################
2229 #
2230 #       Check for -lxml
2231 #
2232 ###############################################################################
2233
2234 have_xml=no
2235 with_xml_req=unspecified
2236 xml_halfassed=no
2237 AC_ARG_WITH(xml,
2238 [  --with-xml              The XML toolkit is needed for some parts of
2239                           the Gtk interface.  Without it, the configuration
2240                           interface will be much less featureful.],
2241 [with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes])
2242
2243 # if --with-xml=/directory/ was specified, remember that directory so that
2244 # we can also look for the `xml-config' program in that directory.
2245 case "$with_xml" in
2246   /*)
2247     xml_dir="$with_xml"
2248     ;;
2249   *)
2250     xml_dir=""
2251     ;;
2252 esac
2253
2254 HANDLE_X_PATH_ARG(with_xml, --with-xml, XML)
2255
2256 if test "$with_xml" != yes -a "$with_xml" != no ; then
2257   echo "error: must be yes or no: --with-xml=$with_xml"
2258   exit 1
2259 fi
2260
2261 if test "$with_xml" = yes; then
2262   have_xml=no
2263   have_old_xml=no
2264
2265   # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
2266   # look in /foo/bin/ for for xml-config.
2267   #
2268   xml_path="$PATH"
2269
2270   if test ! -z "$gtk_dir"; then
2271     # canonicalize slashes.
2272     foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
2273     xml_path="$foo:$xml_path"
2274   fi
2275
2276   if test ! -z "$gnome_dir"; then
2277     # canonicalize slashes.
2278     foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
2279     xml_path="$foo:$xml_path"
2280   fi
2281
2282   if test -n "$pkg_config" ; then
2283     #
2284     # the new way...
2285     # run pkg-config based tests.
2286     #
2287     pkgs=""
2288     ok="yes"
2289
2290     # If we have Gtk 2.x, then *only* XML 2.x will work.
2291     # If we have Gtk 1.x, or don't have Gtk at all, then
2292     # either XML 1.x or 2.x will work.
2293
2294     # First check for XML 2.x.
2295     #
2296     pkg_check_version libxml-2.0 2.4.6
2297
2298     # If that didn't work (we don't have XML 2.x) and we *don't* have
2299     # Gtk 2.x, then check to see if we have XML 1.x
2300     #
2301     if test "$ok" = no -a "$have_gtk2" = no; then
2302       ok=yes
2303       pkg_check_version libxml 1.0
2304     fi
2305
2306     have_xml="$ok"
2307
2308     if test "$have_xml" = yes; then
2309       AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
2310                      [ac_cv_xml_config_cflags=`$pkg_config --cflags $pkgs`])
2311       AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
2312                      [ac_cv_xml_config_libs=`$pkg_config --libs $pkgs`])
2313       ac_xml_config_cflags=$ac_cv_xml_config_cflags
2314       ac_xml_config_libs=$ac_cv_xml_config_libs
2315     fi
2316
2317   else
2318     #
2319     # the old way...
2320     # run {xml2,xml}-config based tests.
2321     #
2322
2323     AC_PATH_PROGS(xml_config, xml2-config xml-config,, $xml_path)
2324
2325     # If we found the xml-config program, run it to get flags.
2326     #
2327     if test -n "$xml_config" ; then
2328       AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
2329                      [ac_cv_xml_config_cflags=`$xml_config --cflags`])
2330       AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
2331                      [ac_cv_xml_config_libs=`$xml_config --libs`])
2332       ac_xml_config_cflags=$ac_cv_xml_config_cflags
2333       ac_xml_config_libs=$ac_cv_xml_config_libs
2334     fi
2335
2336     ac_save_xml_CPPFLAGS="$CPPFLAGS"
2337     CPPFLAGS="$CPPFLAGS $ac_xml_config_cflags"
2338
2339     # first try <libxml/parser.h> which is the new way...
2340     #
2341     AC_CHECK_X_HEADER(libxml/xmlIO.h, [have_xml=yes],,
2342                       [#include <libxml/parser.h>])
2343
2344     # if that didn't work, then try just <parser.h> which is the old way...
2345     #
2346     if test "$have_xml" = no; then
2347       AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes; have_old_xml=yes],,
2348                         [#include <parser.h>])
2349     fi
2350
2351     CPPFLAGS="$ac_save_xml_CPPFLAGS"
2352   fi
2353
2354
2355   have_zlib=no
2356   if test "$have_xml" = yes; then
2357     # we have the XML headers; now make sure zlib is around.
2358     # yes, it's stupid we have to do this too, but there is
2359     # dependency screwage in Gnome.
2360     AC_CHECK_X_LIB(z, zlibVersion, [have_zlib=yes])
2361     if test "$have_zlib" = no; then
2362       xml_halfassed=yes
2363       have_xml=no
2364     fi
2365   fi
2366
2367   if test "$have_xml" = yes; then
2368     # we have the header, now check for the library
2369     have_xml=no
2370     xml_halfassed=yes
2371     AC_CHECK_X_LIB(c, xmlParseChunk,
2372                    [have_xml=yes
2373                     xml_halfassed=no
2374                     XML_LIBS="$ac_xml_config_libs"
2375                     AC_DEFINE(HAVE_XML)],
2376                    [true],
2377                    $ac_xml_config_libs)
2378   fi
2379
2380   if test "$have_xml" = yes; then
2381     INCLUDES="$INCLUDES $ac_xml_config_cflags"
2382     GTK_LIBS="$GTK_LIBS $ac_xml_config_libs"
2383     AC_DEFINE(HAVE_XML)
2384     if test "$have_old_xml" = yes; then
2385       AC_DEFINE(HAVE_OLD_XML_HEADERS)
2386     fi
2387   fi
2388
2389 fi
2390
2391
2392 ###############################################################################
2393 #
2394 #       Checking whether Motif is really Lesstif.
2395 #
2396 ###############################################################################
2397
2398 have_lesstif=no
2399 if test "$have_motif" = yes ; then
2400   AC_CACHE_CHECK([whether Motif is really LessTif], 
2401                  ac_cv_have_lesstif,
2402                  [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
2403                                    [long vers = LesstifVersion;],
2404                                    [ac_cv_have_lesstif=yes],
2405                                    [ac_cv_have_lesstif=no])])
2406   have_lesstif=$ac_cv_have_lesstif
2407 fi
2408
2409
2410 lesstif_version=unknown
2411 lesstif_version_string=unknown
2412
2413 if test "$have_lesstif" = yes ; then
2414   ltv=unknown
2415   echo unknown > conftest-lt
2416   AC_CACHE_CHECK([LessTif version number],
2417                  ac_cv_lesstif_version_string,
2418       [AC_TRY_X_RUN([#include <stdio.h>
2419                      #include <Xm/Xm.h>
2420                      int main() {
2421                        FILE *f = fopen("conftest-lt", "w");
2422                        if (!f) exit(1);
2423                        fprintf(f, "%d %d.%d\n", LesstifVersion,
2424                           LESSTIF_VERSION, LESSTIF_REVISION);
2425                        fclose(f);
2426                        exit(0);
2427                      }],
2428                     [ltv=`cat conftest-lt`
2429                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
2430                      ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
2431                     [ac_cv_lesstif_version=unknown
2432                      ac_cv_lesstif_version_string=unknown],
2433                     [ac_cv_lesstif_version=unknown
2434                      ac_cv_lesstif_version_string=unknown])])
2435   rm -f conftest-lt
2436   lesstif_version=$ac_cv_lesstif_version
2437   lesstif_version_string=$ac_cv_lesstif_version_string
2438
2439 fi
2440
2441
2442 if test "$have_motif" = yes ; then
2443   mtv=unknown
2444   echo unknown > conftest-mt
2445   AC_CACHE_CHECK([Motif version number],
2446                  ac_cv_motif_version_string,
2447       [AC_TRY_X_RUN([#include <stdio.h>
2448                      #include <Xm/Xm.h>
2449                      int main() {
2450                        FILE *f = fopen("conftest-mt", "w");
2451                        if (!f) exit(1);
2452                        fprintf(f, "%d %d.%d\n", XmVersion,
2453                           XmVERSION, XmREVISION);
2454                        fclose(f);
2455                        exit(0);
2456                      }],
2457                     [mtv=`cat conftest-mt`
2458                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
2459                      ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
2460                     [ac_cv_motif_version=unknown
2461                      ac_cv_motif_version_string=unknown],
2462                     [ac_cv_motif_version=unknown
2463                      ac_cv_motif_version_string=unknown])])
2464   rm -f conftest-mt
2465   motif_version=$ac_cv_motif_version
2466   motif_version_string=$ac_cv_motif_version_string
2467
2468 fi
2469
2470
2471 ###############################################################################
2472 #
2473 #       Checking whether Motif requires -lXpm.
2474 #
2475 #       If this is Motif 2.x, and we have XPM, then link against XPM as well.
2476 #       The deal is, Motif 2.x requires XPM -- but it's a compilation option
2477 #       of the library whether to build the XPM code into libXm, or whether
2478 #       to rely on an external libXm.  So the only way to tell whether XPM is
2479 #       a link-time requirement is to examine libXm.a, which is very
2480 #       difficult to do in an autoconf script.  So... if it's Motif 2.x, we
2481 #       always link against XPM if the XPM lib exists (and this will be a
2482 #       no-op if libXm happens to already have the XPM code in it.)
2483 #
2484 ###############################################################################
2485
2486 motif_requires_xpm=no
2487 if test "$have_motif" = yes ; then
2488    AC_MSG_CHECKING(whether Motif requires XPM)
2489    if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000
2490    then
2491      motif_requires_xpm=yes
2492      AC_MSG_RESULT(maybe)
2493    else
2494      AC_MSG_RESULT(no)
2495    fi
2496 fi
2497
2498
2499 ###############################################################################
2500 #
2501 #       Checking whether Motif requires -lXp.
2502 #
2503 #       Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
2504 #       Extension".   Why this extension isn't in -lXext with all the others,
2505 #       I have no idea.
2506 #
2507 ###############################################################################
2508
2509 have_xp_ext=no
2510 if test "$have_motif" = yes ; then
2511    have_xp_ext=no
2512    AC_CHECK_X_LIB(Xp, XpQueryExtension,
2513                   [have_xp_ext=yes; MOTIF_LIBS="$MOTIF_LIBS -lXp"],
2514                   [true], -lX11 -lXext -lm)
2515 fi
2516
2517
2518 ###############################################################################
2519 #
2520 #       Checking whether Motif requires -lXintl (for _Xsetlocale.)
2521 #
2522 ###############################################################################
2523
2524 have_xintl=no
2525 if test "$have_motif" = yes ; then
2526   AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
2527                  -lX11 -lXext -lm)
2528   if test "$have_xintl" = yes; then
2529     MOTIF_LIBS="$MOTIF_LIBS -lXintl"
2530   fi
2531 fi
2532
2533
2534 ###############################################################################
2535 #
2536 #       Check for -lGL or -lMesaGL.
2537 #
2538 ###############################################################################
2539
2540 have_gl=no
2541 ac_have_mesa_gl=no
2542 with_gl_req=unspecified
2543 gl_halfassed=no
2544 AC_ARG_WITH(gl,[
2545 Graphics options:
2546
2547   --with-gl               Build those demos which depend on OpenGL.],
2548   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
2549
2550 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
2551
2552 ac_mesagl_version=unknown
2553 ac_mesagl_version_string=unknown
2554
2555 if test "$with_gl" = yes; then
2556   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
2557   if test "$have_gl" = yes ; then
2558     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no,
2559                       [#include <GL/gl.h>])
2560   fi
2561
2562   # If we have the headers, try and figure out which vendor it's from.
2563   #
2564   if test "$have_gl" = yes ; then
2565
2566     # We need to know whether it's MesaGL so that we know which libraries
2567     # to link against.
2568     #
2569     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
2570       [ac_cv_have_mesa_gl=no
2571        AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
2572       ])
2573     ac_have_mesa_gl=$ac_cv_have_mesa_gl
2574  
2575
2576     gl_lib_1=""
2577     GL_LIBS=""
2578
2579
2580     # Some versions of MesaGL are compiled to require -lpthread.
2581     # So if the Mesa headers exist, and -lpthread exists, then always
2582     # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
2583     #
2584     if test "$ac_have_mesa_gl" = yes; then
2585       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
2586     fi
2587
2588
2589     # If we have Mesa headers, check to see if we can link against -lMesaGL.
2590     # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
2591     # Else, warn that GL is busted.  (We have the headers, but no libs.)
2592     #
2593
2594     if test "$ac_have_mesa_gl" = yes ; then
2595       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
2596                      [gl_lib_1="MesaGL"
2597                       GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
2598                      [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
2599     fi
2600
2601     if test "$gl_lib_1" = "" ; then
2602       AC_CHECK_X_LIB(GL, glXCreateContext, 
2603                      [gl_lib_1="GL"
2604                       GL_LIBS="-lGL -lGLU $GL_LIBS"],
2605                      [], -lGLU $GL_LIBS -lX11 -lXext -lm)
2606     fi
2607
2608     if test "$gl_lib_1" = "" ; then
2609       # we have headers, but no libs -- bail.
2610       have_gl=no
2611       ac_have_mesa_gl=no
2612       gl_halfassed=yes
2613     else
2614       # linking works -- we can build the GL hacks.
2615       AC_DEFINE(HAVE_GL)
2616       if test "$ac_have_mesa_gl" = yes ; then
2617         AC_DEFINE(HAVE_MESA_GL)
2618       fi
2619     fi
2620   fi
2621
2622
2623   # Now that we know we have GL headers and libs, do some more GL testing.
2624   #
2625
2626   if test "$have_gl" = yes ; then
2627     # If it's MesaGL, we'd like to issue a warning if the version number
2628     # is less than or equal to 2.6, because that version had a security bug.
2629     #
2630     if test "$ac_have_mesa_gl" = yes; then
2631
2632       AC_CACHE_CHECK([MesaGL version number], ac_cv_mesagl_version_string,
2633         [cat > conftest.$ac_ext <<EOF
2634 #line __oline__ "configure"
2635 #include "confdefs.h"
2636 #include <GL/gl.h>
2637 #ifndef MESA_MAJOR_VERSION
2638 # include <GL/xmesa.h>
2639 # ifdef XMESA_MAJOR_VERSION
2640    /* Around Mesa 3.2, they took out the Mesa version number, so instead,
2641       we have to check the XMesa version number (the number of the X protocol
2642       support, which seems to be the same as the Mesa version number.)
2643     */
2644 #  define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
2645 #  define MESA_MINOR_VERSION XMESA_MINOR_VERSION
2646 # else
2647    /* Oh great.  Some time after 3.4, they took out the xmesa.h header file,
2648       so we have no way of telling what version of Mesa this is at all.
2649       So, we'll guess that the osmesa version (the "offscreen protocol")
2650       is less than or equal to the real mesa version number.  Except that
2651       if OSmesa is 3.3, assume at least Mesa 3.4, since OSmesa was 3.3 in
2652       Mesa 3.4.  And Mesa 3.3 had xmesa.h.  What a complete load of shit!
2653     */
2654 # include <GL/osmesa.h>
2655 #  define MESA_MAJOR_VERSION OSMESA_MAJOR_VERSION
2656 #  define MESA_MINOR_VERSION OSMESA_MINOR_VERSION or newer, probably?
2657 #  if OSMESA_MAJOR_VERSION == 3 && OSMESA_MINOR_VERSION == 3
2658 #   undef MESA_MINOR_VERSION
2659 #   define MESA_MINOR_VERSION 4 or newer, probably?
2660 #  endif
2661 # endif
2662 #endif
2663 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
2664 EOF
2665
2666          ac_save_CPPFLAGS="$CPPFLAGS"
2667          if test \! -z "$includedir" ; then 
2668            CPPFLAGS="$CPPFLAGS -I$includedir"
2669          fi
2670          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2671
2672          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | grep configure:`
2673
2674          # M4 sucks!!
2675          changequote(X,Y)
2676           mglv=`echo "$mglv" | sed -n \
2677              's/^configure: *\([0-9][0-9]*\)  *\([0-9].*\)$/\1.\2/p'`
2678          changequote([,])
2679
2680          rm -f conftest.$ac_ext
2681
2682          CPPFLAGS="$ac_save_CPPFLAGS"
2683
2684          if test "$mglv" = ""; then
2685            ac_mesagl_version=unknown
2686            ac_mesagl_version_string=unknown
2687          else
2688            ac_mesagl_version_string="$mglv"
2689            # M4 sucks!!
2690            changequote(X,Y)
2691            maj=`echo "$mglv" | sed -n 's/^\([0-9][0-9]*\)\..*$/\1/p'`
2692            min=`echo "$mglv" | sed -n 's/^.*\.\([0-9][0-9]*\).*$/\1/p'`
2693            changequote([,])
2694            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
2695            if test -z "$ac_mesagl_version"; then
2696              ac_mesagl_version=unknown
2697              ac_mesagl_version_string=unknown
2698            fi
2699          fi
2700          ac_cv_mesagl_version=$ac_mesagl_version
2701          ac_cv_mesagl_version_string=$ac_mesagl_version_string
2702       ])
2703       ac_mesagl_version=$ac_cv_mesagl_version
2704       ac_mesagl_version_string=$ac_cv_mesagl_version_string
2705     fi
2706
2707
2708     # Check for OpenGL 1.1 features.
2709     #
2710     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
2711                    [true], $GL_LIBS -lX11 -lXext -lm)
2712   fi
2713
2714 elif test "$with_gl" != no; then
2715   echo "error: must be yes or no: --with-gl=$with_gl"
2716   exit 1
2717 fi
2718
2719
2720 ###############################################################################
2721 #
2722 #       Check for -lgle.
2723 #
2724 ###############################################################################
2725
2726 have_gle=no
2727 with_gle_req=unspecified
2728 gle_halfassed=no
2729 AC_ARG_WITH(gle,
2730 [  --with-gle              Build those demos which depend on GLE
2731                           (the OpenGL "extrusion" library.)],
2732   [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
2733
2734 HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
2735
2736 GLE_LIBS=""
2737
2738 if test "$have_gl" = no ; then
2739  true
2740 elif test "$with_gle" = yes; then
2741
2742   AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no,
2743                     [#include <GL/gl.h>])
2744   if test "$have_gle3" = yes ; then
2745     have_gle=yes;
2746   else
2747     AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no,
2748                     [#include <GL/gl.h>])
2749     if test "$have_gle" = yes ; then
2750       AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no,
2751                         [#include <GL/gl.h>])
2752     fi
2753   fi
2754
2755   if test "$have_gle" = yes ; then
2756     have_gle=no
2757     gle_halfassed=yes
2758     AC_CHECK_X_LIB(gle, gleCreateGC, 
2759                    [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
2760                    [], $GL_LIBS -lX11 -lXext -lm)
2761   fi
2762   if test "$have_gle" = yes ; then
2763     have_gle=no
2764     gle_halfassed=yes
2765
2766     # sometimes the libmatrix stuff is included in libgle.  look there first.
2767 #
2768 # I don't get it.  For some reason, this test passes on SGI, as if
2769 # uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
2770 # Yet the link is succeeding.  Why???
2771 #
2772 #    AC_CHECK_X_LIB(gle, uview_direction_d, 
2773 #                   [have_gle=yes; gle_halfassed=no],
2774 #                   [], $GL_LIBS -lX11 -lXext -lm)
2775
2776     # As of GLE 3 this is in libgle, and has changed name to uview_direction!
2777     # *sigh*
2778     if test "$have_gle3" = yes ; then
2779       AC_CHECK_X_LIB(gle, uview_direction, 
2780                      [have_gle=yes; gle_halfassed=no],
2781                     [], $GL_LIBS -lX11 -lXext -lm)
2782     fi
2783     # if it wasn't in libgle, then look in libmatrix.
2784     if test "$have_gle" = no ; then
2785       AC_CHECK_X_LIB(matrix, uview_direction_d, 
2786                      [have_gle=yes; gle_halfassed=no;
2787                       GLE_LIBS="$GLE_LIBS -lmatrix"],
2788                     [], $GL_LIBS -lX11 -lXext -lm)
2789     fi
2790   fi
2791
2792   if test "$have_gle" = yes ; then
2793     AC_DEFINE(HAVE_GLE)
2794     if test "$have_gle3" = yes ; then
2795       AC_DEFINE(HAVE_GLE3)
2796     fi
2797   fi
2798
2799 elif test "$with_gle" != no; then
2800   echo "error: must be yes or no: --with-gle=$with_gle"
2801   exit 1
2802
2803 fi
2804
2805
2806
2807 ###############################################################################
2808 #
2809 #       Check for -lXpm.
2810 #
2811 ###############################################################################
2812
2813 have_xpm=no
2814 with_xpm_req=unspecified
2815 AC_ARG_WITH(xpm,
2816 [  --with-xpm              Include support for XPM files in some demos.
2817                           (Not needed if Pixbuf is used.)],
2818   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
2819
2820 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
2821
2822 if test "$with_xpm" = yes; then
2823   AC_CHECK_X_HEADER(X11/xpm.h,
2824                    [have_xpm=yes
2825                     AC_DEFINE(HAVE_XPM)
2826                     XPM_LIBS="-lXpm"],,
2827                     [#include <X11/Xlib.h>])
2828 elif test "$with_xpm" != no; then
2829   echo "error: must be yes or no: --with-xpm=$with_xpm"
2830   exit 1
2831 fi
2832
2833 # See comment near $motif_requires_xpm, above.
2834 # Need to do this here, after both Motif and XPM have been checked for.
2835 #
2836 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
2837   if test "$motif_requires_xpm" = yes ; then
2838     MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
2839   fi
2840 fi
2841
2842 ###############################################################################
2843 #
2844 #       Check for -lgdk_pixbuf.
2845 #
2846 ###############################################################################
2847
2848 have_gdk_pixbuf=no
2849 with_gdk_pixbuf_req=unspecified
2850 AC_ARG_WITH(pixbuf,
2851 [  --with-pixbuf           Include support for the GDK-Pixbuf library in some
2852                           demos, which will make it possible for them to read
2853                           GIF, JPEG, and PNG files as well.  (The path here is
2854                           ignored if GTK 2.x is being used.)],
2855   [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
2856   [with_gdk_pixbuf=yes])
2857
2858 # if --with-pixbuf=/directory/ was specified, remember that directory so that
2859 # we can also look for the `gdk-pixbuf-config' program in that directory.
2860 case "$with_gdk_pixbuf" in
2861   /*)
2862     gdk_pixbuf_dir="$with_gdk_pixbuf"
2863     ;;
2864   *)
2865     gdk_pixbuf_dir=""
2866     ;;
2867 esac
2868
2869 HANDLE_X_PATH_ARG(with_gdk_pixbuf, --with-pixbuf, GDK_PIXBUF)
2870
2871 if test "$with_gdk_pixbuf" != yes -a "$with_gdk_pixbuf" != no ; then
2872   echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf"
2873   exit 1
2874 fi
2875
2876 if test "$with_gdk_pixbuf" = yes; then
2877   have_gdk_pixbuf=no
2878   have_gdk_pixbuf2=no
2879
2880   if test -n "$pkg_config" ; then
2881     #
2882     # the new way...
2883     # run pkg-config based tests.
2884     #
2885     pkgs=''
2886     ok="yes"
2887
2888     # If we have Gtk 2.x, then *only* gdk-pixbuf 2.x will work.
2889     # If we have Gtk 1.x, then *only* gdk-pixbuf 1.x will work.
2890     # If we don't have Gtk at all, then either will work.
2891
2892     if test "$have_gtk" = no -o "$have_gtk2" = yes; then
2893       #
2894       # we don't have Gtk; or we have Gtk 2.x.  Check for pixbuf 2.x.
2895       #
2896       pkg_check_version gdk-pixbuf-2.0      2.0.0
2897       pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
2898       have_gdk_pixbuf="$ok"
2899       have_gdk_pixbuf2="$ok"
2900     fi
2901
2902     if test "$have_gtk" = no -o "$have_gtk2" = no; then
2903       #
2904       # we don't have Gtk; or we have Gtk 1.x.
2905       # If we don't have pixbuf 2.x, then check for pixbuf 1.x.
2906       #
2907       if test "$have_gdk_pixbuf2" = no; then
2908         pkgs=''
2909         ok="yes"
2910         pkg_check_version gdk-pixbuf      0.0
2911         pkg_check_version gdk-pixbuf-xlib 0.0
2912         have_gdk_pixbuf="$ok"
2913       fi
2914     fi
2915
2916     if test "$have_gdk_pixbuf" = yes; then
2917       AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
2918                  [ac_cv_gdk_pixbuf_config_cflags=`$pkg_config --cflags $pkgs`])
2919       AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
2920                  [ac_cv_gdk_pixbuf_config_libs=`$pkg_config --libs $pkgs`])
2921     fi
2922     ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
2923     ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
2924   fi
2925
2926
2927   if test "$have_gdk_pixbuf" = no; then
2928     #
2929     # the old way...
2930     # run gdk-pixbuf-config based tests.
2931     # note that we can't assume that the existence of "pkg-config" means
2932     # that we don't have to look for gdk-pixbuf-config -- in Gnome 1.4,
2933     # pkg-config exists, but doesn't know about pixbuf.
2934     #
2935
2936     # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
2937     # look in /foo/bin/ for for gdk-pixbuf-config.
2938     #
2939     gdk_pixbuf_path="$PATH"
2940
2941     if test ! -z "$gtk_dir"; then
2942       # canonicalize slashes.
2943       foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
2944       gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
2945     fi
2946
2947     if test ! -z "$gnome_dir"; then
2948       # canonicalize slashes.
2949       foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
2950       gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
2951     fi
2952
2953     AC_PATH_PROGS(gdk_pixbuf_config, gdk-pixbuf-config,, $gdk_pixbuf_path)
2954
2955     # If we found the gdk-pixbuf-config program, run it to get flags.
2956     #
2957     if test -n "$gdk_pixbuf_config" ; then
2958       AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
2959                 [ac_cv_gdk_pixbuf_config_cflags=`$gdk_pixbuf_config --cflags`])
2960       AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
2961                 [ac_cv_gdk_pixbuf_config_libs=`$gdk_pixbuf_config --libs`])
2962
2963       # note that "gdk-pixbuf-config --libs" produces a link line including
2964       # -lgdk_pixbuf, but there's no way to get it to produce one that also
2965       # includes -lgdk_pixbuf_xlib.  Since we don't know *exactly* what the
2966       # name of the library will be, construct it with sed...
2967       # M4 sucks!!
2968       changequote(X,Y)
2969       ac_cv_gdk_pixbuf_config_libs=`echo $ac_cv_gdk_pixbuf_config_libs | \
2970        sed 's@ \(-lgdk_pixbuf\([-_a-zA-Z0-9.]*\)\) @ \1 -lgdk_pixbuf_xlib\2 @'`
2971       changequote([,])
2972
2973       ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
2974       ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
2975     fi
2976   fi
2977
2978   ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
2979   CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
2980
2981   if test "$have_gdk_pixbuf" = no; then
2982     #
2983     # we appear to have pixbuf; check for headers/libs to be sure.
2984     #
2985
2986     have_gdk_pixbuf=no
2987
2988     # check for header A...
2989     AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
2990
2991     # if that worked, check for header B...
2992     if test "$have_gdk_pixbuf" = yes; then
2993       have_gdk_pixbuf=no
2994       gdk_pixbuf_halfassed=yes
2995       AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h,
2996                         [have_gdk_pixbuf=yes
2997                          gdk_pixbuf_halfassed=no])
2998
2999       # yay, it has a new name in Gtk 2.x...
3000       if test "$have_gdk_pixbuf" = no; then
3001         have_gdk_pixbuf=no
3002         gdk_pixbuf_halfassed=yes
3003         AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h,
3004                           [have_gdk_pixbuf=yes
3005                            gdk_pixbuf_halfassed=no])
3006       fi
3007     fi
3008   fi
3009
3010   CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
3011
3012   if test "$have_gdk_pixbuf" = yes; then
3013     # we have the headers, now check for the libraries
3014     have_gdk_pixbuf=no
3015     gdk_pixbuf_halfassed=yes
3016
3017     # library A...
3018     AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
3019                    $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
3020     # library B...
3021     if test "$have_gdk_pixbuf" = yes; then
3022       have_gdk_pixbuf=no
3023       AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
3024                      [have_gdk_pixbuf=yes
3025                       gdk_pixbuf_halfassed=no],,
3026                      $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
3027     fi
3028   fi
3029
3030   if test "$have_gdk_pixbuf" = yes; then
3031     INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags"
3032     XPM_LIBS="$ac_gdk_pixbuf_config_libs"
3033     AC_DEFINE(HAVE_GDK_PIXBUF)
3034   else
3035     have_gdk_pixbuf2=no
3036   fi
3037 fi
3038
3039
3040 ###############################################################################
3041 #
3042 #       Check for -ljpeg
3043 #
3044 ###############################################################################
3045
3046 have_jpeg=no
3047 with_jpeg_req=unspecified
3048 jpeg_halfassed=no
3049 AC_ARG_WITH(jpeg,
3050 [  --with-jpeg             Include support for the JPEG library.],
3051   [with_jpeg="$withval"; with_jpeg_req="$withval"],
3052   [with_jpeg=yes])
3053
3054 HANDLE_X_PATH_ARG(with_jpeg, --with-jpeg, JPEG)
3055
3056 if test "$with_jpeg" != yes -a "$with_jpeg" != no ; then
3057   echo "error: must be yes or no: --with-jpeg=$with_jpeg"
3058   exit 1
3059 fi
3060
3061 if test "$with_jpeg" = yes; then
3062
3063   have_jpeg=no
3064   AC_CHECK_X_HEADER(jpeglib.h, [have_jpeg=yes])
3065
3066   if test "$have_jpeg" = yes; then
3067     # we have the header, now check for the library
3068     have_jpeg=no
3069     jpeg_halfassed=yes
3070     AC_CHECK_X_LIB(jpeg, jpeg_start_compress,
3071                    [have_jpeg=yes
3072                     jpeg_halfassed=no
3073                     JPEG_LIBS="-ljpeg"
3074                     AC_DEFINE(HAVE_JPEGLIB)])
3075   fi
3076 fi
3077
3078
3079 ###############################################################################
3080 #
3081 #       Check for the XSHM server extension.
3082 #
3083 ###############################################################################
3084
3085 have_xshm=no
3086 with_xshm_req=unspecified
3087 AC_ARG_WITH(xshm-ext,
3088 [  --with-xshm-ext         Include support for the Shared Memory extension.],
3089   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
3090
3091 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
3092
3093 if test "$with_xshm" = yes; then
3094
3095   # first check for Xshm.h.
3096   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes],,
3097                     [#include <X11/Xlib.h>])
3098
3099   # if that succeeded, then check for sys/ipc.h.
3100   if test "$have_xshm" = yes; then
3101     have_xshm=no
3102     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
3103   fi
3104
3105   # if that succeeded, then check for sys/shm.h.
3106   if test "$have_xshm" = yes; then
3107     have_xshm=no
3108     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
3109   fi
3110
3111   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
3112   # to exist, but the library code to not exist.  And even better, the library
3113   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
3114   # lib doesn't exist, give up.  (This lib gets added to X_EXTRA_LIBS, and
3115   # that's not quite right, but close enough.)
3116   #
3117   case "$host" in
3118     *-aix*)
3119       if [ `uname -v` -eq 3 ]; then
3120         have_xshm=no
3121         AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
3122                        [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
3123                        [true], -lX11 -lXext -lm)
3124       fi
3125     ;;
3126   esac
3127
3128   # if that succeeded, then we've really got it.
3129   if test "$have_xshm" = yes; then
3130     AC_DEFINE(HAVE_XSHM_EXTENSION)
3131   fi
3132
3133 elif test "$with_xshm" != no; then
3134   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
3135   exit 1
3136 fi
3137
3138
3139 ###############################################################################
3140 #
3141 #       Check for the DOUBLE-BUFFER server extension.
3142 #
3143 ###############################################################################
3144
3145 have_xdbe=no
3146 with_xdbe_req=unspecified
3147 AC_ARG_WITH(xdbe-ext,
3148 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.],
3149   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
3150
3151 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
3152
3153 if test "$with_xdbe" = yes; then
3154
3155   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes],,
3156                     [#include <X11/Xlib.h>])
3157   if test "$have_xdbe" = yes; then
3158     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
3159   fi
3160
3161 elif test "$with_xdbe" != no; then
3162   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
3163   exit 1
3164 fi
3165
3166
3167 ###############################################################################
3168 #
3169 #       Check for the SGI XReadDisplay server extension.
3170 #
3171 #       Note: this has to be down here, rather than up with the other server
3172 #       extension tests, so that the output of `configure --help' is in the
3173 #       right order.  Arrgh!
3174 #
3175 ###############################################################################
3176
3177 have_readdisplay=no
3178 with_readdisplay_req=unspecified
3179 AC_ARG_WITH(readdisplay,
3180 [  --with-readdisplay      Include support for the XReadDisplay extension.],
3181   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
3182   [with_readdisplay=yes])
3183
3184 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
3185
3186 if test "$with_readdisplay" = yes; then
3187   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
3188                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION),,
3189                     [#include <X11/Xlib.h>])
3190 elif test "$with_readdisplay" != no; then
3191   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
3192   exit 1
3193 fi
3194
3195
3196 ###############################################################################
3197 #
3198 #       Check for a program to generate random text.
3199 #
3200 #       Zippy is funnier than the idiocy generally spat out by `fortune',
3201 #       so first see if "fortune zippy" works.  Else, use plain "fortune".
3202 #
3203 #       We used to dig around in Emacs to look for the "yow" program, but
3204 #       most people who have Emacs also have "fortune zippy", so nevermind.
3205 #
3206 ###############################################################################
3207
3208 with_fortune_req=""
3209 AC_ARG_WITH(fortune,[
3210   --with-fortune=PROGRAM  Some demos are able to run an external program and
3211                           display its text; this names the program to use by
3212                           default (though it can be overridden with X
3213                           resources.)  Default is \"/usr/games/fortune\".],
3214   [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes])
3215
3216 if test "$with_fortune" = no || test "$with_fortune" = yes ; then
3217   with_fortune=""
3218   with_fortune_req=""
3219 fi
3220
3221 if test -n "$with_fortune_req" ; then
3222   ac_cv_fortune_program=""
3223   case "$with_fortune_req" in
3224     /*)
3225
3226       set dummy $with_fortune_req ; fortune_tmp=$2
3227       AC_MSG_CHECKING([for $fortune_tmp])
3228       if test -x "$fortune_tmp" ; then
3229         AC_MSG_RESULT(yes)
3230       else
3231         AC_MSG_RESULT(no)
3232         with_fortune=""
3233       fi
3234     ;;
3235     *)
3236       set dummy $with_fortune_req ; fortune_tmp=$2
3237       # don't cache
3238       unset ac_cv_path_fortune_tmp
3239       AC_PATH_PROG(fortune_tmp, $fortune_tmp, [])
3240       if test -z "$fortune_tmp" ; then
3241         with_fortune=""
3242       fi
3243     ;;
3244   esac
3245   ac_cv_fortune_program="$with_fortune"
3246
3247 elif test -n "$ac_cv_fortune_program"; then
3248   AC_MSG_RESULT([checking for fortune... (cached) $ac_cv_fortune_program])
3249 fi
3250
3251 unset ac_cv_path_fortune_tmp
3252 unset fortune_tmp
3253
3254 if test -z "$ac_cv_fortune_program" ; then
3255
3256   # first look for fortune in /usr/games/ (and use absolute path)
3257   AC_PATH_PROGS(fortune_tmp, fortune,, "/usr/games")
3258
3259   # if it's not there, look on $PATH (and don't use absolute path)
3260   if test -z "$fortune_tmp" ; then
3261      AC_CHECK_PROGS(fortune_tmp, fortune)
3262   fi
3263
3264   # if we didn't find anything, then just assume /usr/games/
3265   if test -z "$fortune_tmp" ; then
3266      fortune_tmp="/usr/games/fortune"
3267   fi
3268
3269   ac_cv_fortune_program="$fortune_tmp"
3270
3271   # now check to see whether "fortune zippy" works.
3272   #
3273   fortune_tmp="$fortune_tmp zippy"
3274   AC_MSG_CHECKING([for zippy quotes])
3275   if ( $fortune_tmp >/dev/null 2>&1 ); then
3276     ac_cv_fortune_program="$fortune_tmp"
3277     AC_MSG_RESULT($fortune_tmp)
3278   else
3279     AC_MSG_RESULT(no)
3280   fi
3281
3282 fi
3283
3284 unset ac_cv_path_fortune_tmp
3285 unset fortune_tmp
3286
3287 AC_DEFINE_UNQUOTED(FORTUNE_PROGRAM, "$ac_cv_fortune_program")
3288
3289
3290 ###############################################################################
3291 #
3292 #       Check whether it's ok to install some hacks as setuid (e.g., "sonar")
3293 #       This should be safe, but let's give people the option.
3294 #
3295 ###############################################################################
3296
3297 setuid_hacks_default=no
3298 setuid_hacks="$setuid_hacks_default"
3299 AC_ARG_WITH(setuid-hacks,
3300 [  --with-setuid-hacks     Allow some demos to be installed \`setuid root'
3301                           (which is needed in order to ping other hosts.)
3302 ],
3303   [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"])
3304
3305 HANDLE_X_PATH_ARG(setuid_hacks, --with-setuid-hacks, setuid hacks)
3306
3307 if test "$setuid_hacks" = yes; then
3308   true
3309 elif test "$setuid_hacks" != no; then
3310   echo "error: must be yes or no: --with-setuid-hacks=$setuid_hacks"
3311   exit 1
3312 fi
3313
3314
3315 ###############################################################################
3316 #
3317 #       Done testing.  Now, set up the various -I and -L variables,
3318 #       and decide which GUI program to build by default.
3319 #
3320 ###############################################################################
3321
3322 DEPEND=makedepend
3323 DEPEND_FLAGS=
3324 DEPEND_DEFINES=
3325
3326
3327 if test \! -z "$includedir" ; then 
3328   INCLUDES="$INCLUDES -I$includedir"
3329 fi
3330
3331 if test \! -z "$libdir" ; then
3332   LDFLAGS="$LDFLAGS -L$libdir"
3333 fi
3334
3335
3336 PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
3337 ALL_DEMO_PROGRAMS=
3338 if test "$have_motif" = yes; then
3339   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
3340   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3341 fi
3342 if test "$have_gtk" = yes; then
3343   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
3344   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3345 fi
3346
3347
3348 if test "$have_kerberos" = yes; then
3349   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
3350   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
3351 fi
3352 if test "$have_pam" = yes; then
3353   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
3354   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
3355   INSTALL_PAM="install-pam"
3356 fi
3357   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
3358   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
3359
3360
3361 if test "$enable_locking" = yes; then
3362   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
3363   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
3364 else
3365   LOCK_SRCS='$(NOLOCK_SRCS_1)'
3366   LOCK_OBJS='$(NOLOCK_OBJS_1)'
3367 fi
3368
3369 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
3370
3371 if test "$need_setuid" = yes; then
3372   NEED_SETUID=yes
3373 else
3374   NEED_SETUID=no
3375 fi
3376
3377 if test "$setuid_hacks" = yes; then
3378   SETUID_HACKS=yes
3379 else
3380   SETUID_HACKS=no
3381 fi
3382
3383 tab='   '
3384 if test "$have_gl" = yes; then
3385   GL_EXES='$(GL_EXES)'
3386   GL_UTIL_EXES='$(GL_UTIL_EXES)'
3387   GL_MEN='$(GL_MEN)'
3388   GL_KLUDGE="${tab}  "
3389 else
3390   GL_KLUDGE="-${tab}  "
3391 fi
3392
3393 if test "$have_gle" = yes; then
3394   GLE_EXES='$(GLE_EXES)'
3395   GLE_KLUDGE="${tab}   "
3396 else
3397   GLE_KLUDGE="-${tab}   "
3398 fi
3399
3400 if test "$have_jpeg" = yes -a "$have_gdk_pixbuf" = yes; then
3401  JPEG_EXES='$(JPEG_EXES)'
3402 fi
3403
3404
3405 # Another substitution in the XScreenSaver.ad.in file:
3406 #
3407 if test "$have_gnome_help" = yes; then
3408   GNOMEHELP_Y=''
3409   GNOMEHELP_N='!    '
3410 else
3411   GNOMEHELP_Y='!    '
3412   GNOMEHELP_N=''
3413 fi
3414
3415
3416 # Now that we know whether we have Gnome, we can decide where the XML
3417 # config files get installed.
3418 #
3419 if test -z "$HACK_CONF_DIR" ; then
3420   if test -n "$GNOME_DATADIR" ; then
3421     HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers'
3422   else
3423     HACK_CONF_DIR='${prefix}/lib/xscreensaver/config'
3424   fi
3425 fi
3426
3427
3428
3429 # After computing $HACK_CONF_DIR, make sure $GLADE_DATADIR has a value
3430 # so that we know where to install the Gtk pixmaps.
3431 #
3432 # It should usually be "/usr/share/pixmaps/", but we can't just use
3433 # "$(prefix)/share/pixmaps" because that would usually result in
3434 # "/usr/X11R6/share/pixmaps/", which is wrong.  It needs to be the
3435 # Gnome/Gtk prefix, not the overall prefix.
3436 #
3437 if test -n "$GNOME_DATADIR" ; then
3438   GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver'
3439 elif test "$have_gtk" = yes; then
3440   if test -n "$pkg_config"; then
3441     if test "$have_gtk2" = yes; then
3442       GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
3443     else
3444       GLADE_DATADIR=`$pkg_config --variable=prefix gtk+`
3445     fi
3446   else
3447     GLADE_DATADIR=`$gtk_config --prefix`
3448   fi
3449   GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver"
3450 else
3451   GLADE_DATADIR=''
3452 fi
3453
3454
3455 # Set PO_DATADIR to something sensible.
3456 #
3457 AC_MSG_CHECKING([for locale directory])
3458 if test -n "$GNOME_DATADIR" ; then
3459   PO_DATADIR="$GNOME_DATADIR"
3460 elif test "$have_gtk" = yes; then
3461   if test -n "$pkg_config"; then
3462     if test "$have_gtk2" = yes; then
3463       PO_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
3464     else
3465       PO_DATADIR=`$pkg_config --variable=prefix gtk+`
3466     fi
3467   else
3468     PO_DATADIR=`$gtk_config --prefix`
3469   fi
3470   PO_DATADIR="$PO_DATADIR/share"
3471 fi
3472
3473 if test -z "$PO_DATADIR" ; then
3474   #
3475   # #### Total fucking kludge --
3476   # Map /build/prefix/usr/X11R6/share/ to /build/prefix/usr/share/
3477   # but of course we need to expand all the nested variables to do that...
3478   #
3479   dd=$datadir
3480   eval dd=${dd}
3481   eval dd=${dd}
3482   eval dd=${dd}
3483   eval dd=${dd}
3484   eval dd=${dd}
3485   PO_DATADIR=`echo $dd | sed 's@/X11R6/@/@'`
3486 fi
3487
3488 AC_MSG_RESULT($PO_DATADIR/locale)
3489
3490
3491 # canonicalize slashes.
3492 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
3493
3494 # gcc 3.0 likes to issue this warning for every file:
3495 #
3496 # cc1: warning: changing search order for system directory "/usr/local/include"
3497 # cc1: warning:   as it has already been specified as a non-system directory
3498 #
3499 # Yay.  We can only avoid that by deleting "-I${prefix}/include" from the list.
3500 # Which *should* be totally redundant, and thus an ok thing to delete?
3501 #
3502 INCLUDES=`echo "$INCLUDES" | sed 's@ -I${prefix}/include@@g;'`
3503
3504
3505 ###############################################################################
3506 #
3507 #       Perform substitutions and write Makefiles.
3508 #
3509 ###############################################################################
3510
3511 AC_SUBST(INCLUDES)
3512
3513 AC_SUBST(PREFERRED_DEMO_PROGRAM)
3514 AC_SUBST(ALL_DEMO_PROGRAMS)
3515 AC_SUBST(SAVER_LIBS)
3516 AC_SUBST(MOTIF_LIBS)
3517 AC_SUBST(GTK_LIBS)
3518 AC_SUBST(XML_LIBS)
3519 AC_SUBST(JPEG_LIBS)
3520 AC_SUBST(HACK_LIBS)
3521 AC_SUBST(XPM_LIBS)
3522 AC_SUBST(GL_LIBS)
3523 AC_SUBST(GLE_LIBS)
3524 AC_SUBST(XDPMS_LIBS)
3525 AC_SUBST(PASSWD_LIBS)
3526 AC_SUBST(INSTALL_SETUID)
3527 AC_SUBST(SETUID_HACKS)
3528 AC_SUBST(INSTALL_DIRS)
3529 AC_SUBST(NEED_SETUID)
3530 AC_SUBST(INSTALL_PAM)
3531
3532 AC_SUBST(PASSWD_SRCS)
3533 AC_SUBST(PASSWD_OBJS)
3534 AC_SUBST(XMU_SRCS)
3535 AC_SUBST(XMU_OBJS)
3536 AC_SUBST(XMU_LIBS)
3537 AC_SUBST(SAVER_GL_SRCS)
3538 AC_SUBST(SAVER_GL_OBJS)
3539 AC_SUBST(SAVER_GL_LIBS)
3540 AC_SUBST(LOCK_SRCS)
3541 AC_SUBST(LOCK_OBJS)
3542 AC_SUBST(JPEG_EXES)
3543 AC_SUBST(GL_EXES)
3544 AC_SUBST(GL_UTIL_EXES)
3545 AC_SUBST(GL_MEN)
3546 AC_SUBST(GL_KLUDGE)
3547 AC_SUBST(GLE_EXES)
3548 AC_SUBST(GLE_KLUDGE)
3549 AC_SUBST(GNOMEHELP_Y)
3550 AC_SUBST(GNOMEHELP_N)
3551 AC_SUBST(HACKDIR)
3552 AC_SUBST(GNOME_DATADIR)
3553 AC_SUBST(GLADE_DATADIR)
3554 AC_SUBST(PO_DATADIR)
3555 AC_SUBST(GNOME_PANELDIR)
3556 AC_SUBST(HACK_CONF_DIR)
3557 AC_SUBST(GTK_EXTRA_OBJS)
3558
3559 APPDEFAULTS=$ac_x_app_defaults
3560 AC_SUBST(APPDEFAULTS)
3561
3562 AC_SUBST(DEPEND)
3563 AC_SUBST(DEPEND_FLAGS)
3564 AC_SUBST(DEPEND_DEFINES)
3565 AC_SUBST(PERL)
3566
3567 AC_OUTPUT(Makefile
3568           utils/Makefile
3569           driver/Makefile
3570           hacks/Makefile
3571           hacks/glx/Makefile
3572           po/Makefile.in
3573           driver/XScreenSaver.ad
3574           driver/xscreensaver.kss)
3575
3576 ###############################################################################
3577 #
3578 #       Print some warnings at the end.
3579 #
3580 ###############################################################################
3581
3582 warn_prefix_1="    Warning:"
3583 warn_prefix_2="       Note:"
3584 warn_prefix="$warn_prefix_1"
3585
3586 warning=no
3587 warnsep='    #################################################################'
3588
3589 warnpre() {
3590   if test "$warning" = no ; then
3591     echo '' ; echo "$warnsep" ; echo ''
3592     warning=yes
3593   fi
3594 }
3595
3596 warn() {
3597   warnpre
3598   if test "$warning" = long ; then echo '' ; fi
3599   warning=yes
3600   rest="$@"
3601   echo "$warn_prefix $rest"
3602 }
3603
3604 warnL() {
3605   was=$warning
3606   warnpre
3607   warning=yes
3608   if test "$was" != no ; then echo '' ; fi
3609   rest="$@"
3610   echo "$warn_prefix $rest"
3611 }
3612
3613 warn2() {
3614   rest="$@"
3615   echo "             $rest"
3616   warning=long
3617 }
3618
3619 note() {
3620   warn_prefix="$warn_prefix_2"
3621   warn $@
3622   warn_prefix="$warn_prefix_1"
3623 }
3624
3625 noteL() {
3626   warn_prefix="$warn_prefix_2"
3627   warnL $@
3628   warn_prefix="$warn_prefix_1"
3629 }
3630
3631
3632 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
3633   warn 'The SGI saver extension was requested, but was not found.'
3634 fi
3635
3636 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
3637   warn 'The MIT saver extension was requested, but was not found.'
3638 fi
3639
3640 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
3641   warn 'The XIdle extension was requested, but was not found.'
3642 fi
3643
3644 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
3645   warn 'The XSHM extension was requested, but was not found.'
3646 fi
3647
3648 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
3649   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
3650 fi
3651
3652 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
3653   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
3654 fi
3655
3656 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
3657   warn 'The DPMS extension was requested, but was not found.'
3658 fi
3659
3660 if test "$with_xinerama_req" = yes -a "$have_xinerama" = no ; then
3661   warn 'The Xinerama extension was requested, but was not found.'
3662 fi
3663
3664 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
3665   warn 'The XF86VMODE extension was requested, but was not found.'
3666 fi
3667
3668 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
3669   warn "Checking of /proc/interrupts was requested, but it's bogus."
3670 fi
3671
3672
3673 if test "$have_motif" = no -a "$have_gtk" = no; then
3674   warnL "Neither Motif nor Gtk seem to be available;"
3675   warn2 "the \`xscreensaver-demo' program requires one of these."
3676
3677 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
3678   warnL "Use of Motif was requested, but it wasn't found;"
3679   warn2 "Gtk will be used instead."
3680
3681 elif test "$jurassic_gtk" = yes ; then
3682
3683   pref_gtk=1.2
3684
3685   v="$ac_gtk_version_string"
3686   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
3687     warnL "Use of Gtk was requested, but its version number is unknown;"
3688   elif test "$with_gtk_req" = yes ; then
3689     warnL "Use of Gtk was requested, but it is version $v;"
3690   else
3691     warnL "Gtk was found on this system, but it is version $v;"
3692   fi
3693
3694   warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
3695
3696 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
3697   warnL "Use of Gtk was requested, but it wasn't found."
3698   if test "$have_motif" = yes; then
3699     warn2 "Motif will be used instead."
3700   fi
3701 fi
3702
3703 if test "$gtk2_halfassed" != no ; then
3704   warnL "GTK version $gtk2_halfassed was found, but at least one supporting"
3705   warn2 "library ($gtk2_halfassed_lib) was not, so GTK 2.x can't be used."
3706   v="$ac_gtk_version_string"
3707   warn2 "GTK $v is also installed, so it will be used instead."
3708   warn2 "Please read the above output and the \`config.log' file"
3709   warn2 "for more details."
3710 fi
3711
3712
3713 if test "$with_gnome_req" = yes -a "$have_gnome" = no \
3714         -a "$have_gtk2" = no; then
3715   # don't issue this warning if we have GTK2 -- in that case, the
3716   # Gnome-specific code isn't needed.
3717   warn  'Use of the Gnome Control Panel was requested, but the necessary'
3718   warn2 'headers and/or libraries were not found.'
3719 fi
3720
3721 if test "$have_gtk" = yes ; then
3722   if test "$have_xml" = no ; then
3723     if test "$with_xml_req" = yes ; then
3724       warn  'Use of the XML library was requested, but the necessary'
3725       warn2 'headers and/or libraries were not found.'
3726     else
3727       warn  'GTK is being used, but the XML library was not found.'
3728     fi
3729
3730     if test "$xml_halfassed" = yes ; then
3731
3732       if test "$have_zlib" = yes ; then
3733         which="XML libraries"
3734       else
3735         which="\`zlib' library"
3736       fi
3737
3738       echo ''
3739       warn2 'More specifically, we found the headers, but not the'
3740       warn2 "$which; so either XML is half-installed on this"
3741       warn2 "system, or something else went wrong.  The \`config.log'"
3742       warn2 'file might contain some clues.'
3743     fi
3744
3745     echo ''
3746     warn2 "Without XML, the per-display-mode \`Settings' dialogs"
3747     warn2 'will not be available.  Specify the location of the XML'
3748     warn2 'library through the --with-xml option to configure.'
3749   fi
3750 fi
3751
3752 if test "$have_gtk" = yes -a "$have_gdk_pixbuf" = no ; then
3753   warn  "GTK is being used, but the GDK-Pixbuf library and/or"
3754   warn2 "headers were not found.  That can't be good.  Please"
3755   warn2 "install the GDK-Pixbuf development kit and re-configure."
3756 fi
3757
3758 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
3759
3760   preferred_lesstif=0.92
3761
3762   if test "$lesstif_version" = unknown; then
3763     warnL "Unable to determine the LessTif version number!"
3764     warn2 "Make sure you are using version $preferred_lesstif or newer."
3765     warn2 "See <http://www.lesstif.org/>."
3766
3767   elif test \! $lesstif_version -gt 82; then
3768     warnL "LessTif version $lesstif_version_string is being used."
3769     warn2 "LessTif versions 0.82 and earlier are too buggy to"
3770     warn2 "use with XScreenSaver; it is strongly recommended"
3771     warn2 "that you upgrade to at least version $preferred_lesstif!"
3772     warn2 "See <http://www.lesstif.org/>."
3773   fi
3774 fi
3775
3776
3777 if test "$have_motif" = yes -a "$have_gtk" = no ; then
3778   warn  'Motif is being used, and GTK is not.'
3779   echo  ''
3780   warn2 'Though the Motif front-end to xscreensaver is still'
3781   warn2 'maintained, it is no longer being updated with new'
3782   warn2 'features: all new development on the xscreensaver-demo'
3783   warn2 'program is happening in the GTK version, and not in the'
3784   warn2 'Motif version.  It is recommended that you build against'
3785   warn2 'GTK instead of Motif.  See <http://www.gtk.org/>.'
3786 fi
3787
3788
3789 if test "$with_xpm_req" = yes -a "$have_xpm" = no; then
3790   warnL 'Use of XPM was requested, but it was not found.'
3791 fi
3792
3793 if test "$with_gdk_pixbuf_req" = yes  -a "$have_gdk_pixbuf" = no; then
3794   warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
3795 fi
3796
3797 if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no || \
3798    test "$gdk_pixbuf_halfassed" = yes; then
3799
3800   if test "$with_xpm_req" = yes -o "$have_xpm" = yes ; then
3801     true
3802   elif test "$with_xpm_req" = no ; then
3803     warnL 'The XPM library is not being used.'
3804   else
3805     warnL 'The XPM library was not found.'
3806   fi
3807
3808   if test "$with_gdk_pixbuf_req" = yes ; then
3809     true
3810   elif test "$with_gdk_pixbuf_req" = no ; then
3811     warnL 'The GDK-Pixbuf library is not being used.'
3812   else
3813     warnL 'The GDK-Pixbuf library was not found.'
3814   fi
3815
3816   if test "$gdk_pixbuf_halfassed" = yes ; then
3817     echo ''
3818     warn2 'More specifically, we found the headers, but not the'
3819     warn2 'libraries; so either GDK-Pixbuf is half-installed on this'
3820     warn2 "system, or something else went wrong.  The \`config.log'"
3821     warn2 'file might contain some clues.'
3822   fi
3823
3824   echo ''
3825   warn2 'Some of the demos will not be as colorful as they'
3826   warn2 'could be.  You should consider installing Pixbuf or'
3827   warn2 'XPM and re-running configure.  The Pixbuf library is'
3828   warn2 'a part of GNOME.  The XPM library comes with most'
3829   warn2 'X11 installations; you can also find it at the X11'
3830   warn2 'archive sites, such as <http://sunsite.unc.edu/>.'
3831   echo  ''
3832   warn2 'GDK-Pixbuf is recommended over XPM, as it provides'
3833   warn2 'support for more image formats.'
3834 fi
3835
3836
3837 if test "$have_jpeg" = no ; then
3838   if test "$with_jpeg_req" = yes ; then
3839     warnL 'Use of libjpeg was requested, but it was not found.'
3840   elif test "$with_jpeg_req" = no ; then
3841     noteL 'The JPEG library is not being used.'
3842   else
3843     noteL 'The JPEG library was not found.'
3844   fi
3845
3846   if test "$jpeg_halfassed" = yes ; then
3847     echo ''
3848     warn2 'More specifically, we found the headers, but not the'
3849     warn2 'library; so either JPEG is half-installed on this'
3850     warn2 "system, or something else went wrong.  The \`config.log'"
3851     warn2 'file might contain some clues.'
3852     echo ''
3853   fi
3854
3855   if test "$have_gdk_pixbuf" = no ; then
3856     warn2 "This means that it won't be possible for the image-manipulating"
3857     warn2 "display modes to load files from disk; and it also means that"
3858     warn2 "the \`webcollage' program will be much slower."
3859   else
3860     warn2 "This means the \`webcollage' program will be much slower."
3861   fi
3862 fi
3863
3864
3865 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
3866   preferred_mesagl=3.4
3867   mgv="$ac_mesagl_version_string"
3868   pgl="$preferred_mesagl"
3869
3870   if test "$ac_mesagl_version" = unknown; then
3871     warnL "Unable to determine the MesaGL version number!"
3872     warn2 "Make sure you are using version $preferred_mesagl or newer."
3873
3874   elif test \! "$ac_mesagl_version" -gt 2006; then
3875     warnL "MesaGL version number is $mgv --"
3876     warn2 "MesaGL 2.6 and earlier have a security bug.  It is strongly"
3877     warn2 "recommended that you upgrade to at least version $preferred_mesagl."
3878
3879   elif test \! "$ac_mesagl_version" -gt 3003; then
3880     warnL "MesaGL version number is $mgv --"
3881     warn2 "MesaGL 3.3 and earlier have some bugs; it is recommended"
3882     warn2 "that you upgrade to $pgl or newer."
3883   fi
3884 fi
3885
3886 if test "$have_gl" = no ; then
3887   if test "$with_gl_req" = yes ; then
3888     warnL 'Use of GL was requested, but it was not found.'
3889   elif test "$with_gl_req" = no ; then
3890     noteL 'The OpenGL 3D library is not being used.'
3891   else
3892     noteL 'The OpenGL 3D library was not found.'
3893   fi
3894
3895   if test "$gl_halfassed" = yes ; then
3896     echo ''
3897     warn2 'More specifically, we found the headers, but not the'
3898     warn2 'libraries; so either GL is half-installed on this'
3899     warn2 "system, or something else went wrong.  The \`config.log'"
3900     warn2 'file might contain some clues.'
3901   fi
3902
3903   echo ''
3904   warn2 'Those demos which use 3D will not be built or installed.'
3905   warn2 'You might want to consider installing OpenGL and'
3906   warn2 "re-running configure.  If your vendor doesn't ship"
3907   warn2 'their own implementation of OpenGL, you can get a free'
3908   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
3909   warn2 'info, see <http://www.opengl.org/>.'
3910
3911 fi
3912
3913
3914 if test "$have_gl" = yes -a "$have_gle" = no ; then
3915
3916  # nobody cares about this; don't print the warning unless it was
3917  # requested and not found, or halfway-found.
3918  if test "$with_gle_req" = yes -o "$gle_halfassed" = yes ; then
3919
3920   if test "$with_gle_req" = yes ; then
3921     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
3922     warn2 'it was not found (though the OpenGL library was found, and'
3923     warn2 'is being used.)'
3924   elif test "$with_gle_req" = no ; then
3925     noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
3926     warn2 'library is not.'
3927   else
3928     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
3929     warn2 'was not.'
3930   fi
3931
3932   if test "$gle_halfassed" = yes ; then
3933     echo ''
3934     warn2 'More specifically, we found the headers, but not the'
3935     warn2 'libraries; so either GLE is half-installed on this'
3936     warn2 "system, or something else went wrong.  The \`config.log'"
3937     warn2 'file might contain some clues.'
3938   fi
3939
3940   echo ''
3941   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
3942   warn2 'will not be built or installed.  You might want to consider'
3943   warn2 'installing GLE and re-running configure.  You can find the'
3944   warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
3945   warn2 'OpenGL info, see <http://www.opengl.org/>.'
3946
3947  fi
3948 fi
3949
3950
3951 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
3952   warn 'Use of XReadDisplay was requested, but it was not found.'
3953 fi
3954
3955 if test -n "$with_fortune_req"; then
3956   if test "$with_fortune_req" != "$ac_cv_fortune_program" ; then
3957     warnL "$with_fortune_req was requested as the Fortune program,"
3958     warn2 "but was not found.  The default will be used instead."
3959   fi
3960 fi
3961
3962 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
3963   warn 'Use of Kerberos was requested, but it was not found.'
3964 fi
3965
3966 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
3967   warn 'Use of PAM was requested, but it was not found.'
3968 fi
3969
3970 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
3971   warn 'Use of shadow passwords was requested, but they were not found.'
3972 fi
3973
3974
3975 # You are in a twisty maze of namespaces and syntaxes, all alike.
3976 # Fuck the skull of Unix.
3977 #
3978 eval bindir=${bindir}
3979 eval bindir=${bindir}
3980 eval bindir=${bindir}
3981 eval bindir=${bindir}
3982 eval bindir=${bindir}
3983 eval bindir=${bindir}
3984 eval HACKDIR=${HACKDIR}
3985 eval HACKDIR=${HACKDIR}
3986 eval HACKDIR=${HACKDIR}
3987 eval HACKDIR=${HACKDIR}
3988 eval HACKDIR=${HACKDIR}
3989 eval HACKDIR=${HACKDIR}
3990 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3991 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3992 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3993 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3994 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3995 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3996
3997 # canonicalize slashes.
3998 bindir=`echo  "${bindir}"              | sed 's@/$@@;s@//*@/@g'`
3999 HACKDIR=`echo "${HACKDIR}"             | sed 's@/$@@;s@//*@/@g'`
4000 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
4001
4002
4003 # Sanity check the hackdir
4004 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
4005   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
4006     echo ""
4007     AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
4008                    There will be an executable installed with that name, so
4009                    that can't be the name of a directory as well.  Please
4010                    re-configure with a different directory name.])
4011   fi
4012 done
4013
4014
4015 do_dir_warning=no
4016
4017 # Now let's see if there's a previous RPM version already installed.  Blargh!
4018
4019 # M4 sucks!!
4020 changequote(X,Y)
4021 rpmv=`(rpm -qv xscreensaver) 2>/dev/null | \
4022       sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'`
4023 changequote([,])
4024
4025 if test \! -z "$rpmv" ; then
4026   rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
4027   rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
4028
4029   warning=no
4030   warnL "There is already an installed RPM of xscreensaver $rpmv"
4031   warn2 "on this system.  You might want to remove it (with"
4032   warn2 '"rpm -ve xscreensaver") before running "make install"'
4033   warn2 "from this directory."
4034   echo ""
4035   warn2 "Alternately, you could build this version of xscreensaver"
4036   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
4037   warn2 "file is included.  See the RPM documentation for more info."
4038   echo ""
4039
4040   if test "$rpmbdir" = "$rpmhdir" ; then
4041     warn2 "The RPM version was installed in $rpmbdir/."
4042   else
4043     warn2 "The RPM version was installed in $rpmbdir/,"
4044     warn2 "with demos in $rpmhdir/."
4045   fi
4046
4047   do_dir_warning=yes
4048 fi
4049
4050
4051 if test "${bindir}" = "${HACKDIR}" ; then
4052   do_dir_warning=yes
4053 fi
4054
4055 if test "$do_dir_warning" = yes; then
4056   echo ""
4057   echo "$warnsep"
4058   echo ""
4059   echo '      When you run "make install", the "xscreensaver",'
4060   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
4061   echo "      will be installed in ${bindir}/."
4062   echo ""
4063   echo "      The various graphics demos (150+ different executables) will"
4064   echo "      be installed in ${HACKDIR}/."
4065   echo ""
4066   echo "      If you would prefer the demos to be installed elsewhere,"
4067   echo "      you should re-run configure with the --with-hackdir=DIR"
4068   echo "      option.  For more information, run \`./configure --help'."
4069   warning=yes
4070 fi
4071
4072 if test "$warning" != no; then
4073   echo '' ; echo "$warnsep" ; echo ''
4074 fi
4075
4076 if test "$do_dir_warning" = no; then
4077   if test "$warning" = no; then
4078     echo ''
4079   fi
4080   echo "User programs will be installed in ${bindir}/"
4081   echo "Screen savers will be installed in ${HACKDIR}/"
4082   echo "Configuration will be installed in ${HACK_CONF_DIR}/"
4083   echo ''
4084 fi