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