a43ce463f58c6368e451e6afc0b229e6e126b530
[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 if test "$with_xf86vmode" = yes; then
1300
1301   # first check for xf86vmode.h
1302   AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes],,
1303                     [#include <X11/Xlib.h>])
1304
1305   # if that succeeded, then check for the -lXxf86vm
1306   if test "$have_xf86vmode" = yes; then
1307     have_xf86vmode=no
1308     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
1309                   [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"],
1310                    [true], -lXext -lX11)
1311   fi
1312
1313   # if that succeeded, then we've really got it.
1314   if test "$have_xf86vmode" = yes; then
1315     AC_DEFINE(HAVE_XF86VMODE)
1316   fi
1317
1318 elif test "$with_xf86vmode" != no; then
1319   echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
1320   exit 1
1321 fi
1322
1323
1324 ###############################################################################
1325 #
1326 #       Check for the XF86VMODE server extension (for gamma fading.)
1327 #
1328 ###############################################################################
1329
1330 have_xf86gamma=no
1331 have_xf86gamma_ramp=no
1332 with_xf86gamma_req=unspecified
1333 AC_ARG_WITH(xf86gamma-ext,
1334 [  --with-xf86gamma-ext    Include support for XFree86 gamma fading.],
1335   [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"],
1336   [with_xf86gamma=yes])
1337
1338 HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma)
1339
1340 if test "$with_xf86gamma" = yes; then
1341
1342   # first check for xf86vmode.h, if we haven't already
1343   if test "$have_xf86vmode" = yes; then
1344     have_xf86gamma=yes
1345   else
1346     AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes],,
1347                       [#include <X11/Xlib.h>])
1348   fi
1349
1350   # if that succeeded, then check for the -lXxf86vm
1351   if test "$have_xf86gamma" = yes; then
1352     have_xf86gamma=no
1353     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma,
1354                   [have_xf86gamma=yes],
1355                    [true], -lXext -lX11)
1356   fi
1357
1358   # check for the Ramp versions of the functions too.
1359   if test "$have_xf86gamma" = yes; then
1360     have_xf86gamma_ramp=no
1361     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGammaRamp,
1362                   [have_xf86gamma_ramp=yes],
1363                    [true], -lXext -lX11)
1364   fi
1365
1366   # if those tests succeeded, then we've really got the functions.
1367   if test "$have_xf86gamma" = yes; then
1368     AC_DEFINE(HAVE_XF86VMODE_GAMMA)
1369   fi
1370
1371   if test "$have_xf86gamma_ramp" = yes; then
1372     AC_DEFINE(HAVE_XF86VMODE_GAMMA_RAMP)
1373   fi
1374
1375   # pull in the lib, if we haven't already
1376   if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then
1377     SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
1378   fi
1379
1380 elif test "$with_xf86gamma" != no; then
1381   echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode"
1382   exit 1
1383 fi
1384
1385
1386 ###############################################################################
1387 #
1388 #       Check for the RANDR (Resize and Rotate) server extension.
1389 #
1390 #       We need this to detect when the resolution of the desktop
1391 #       has changed out from under us (this is a newer, different
1392 #       mechanism than the XF86VMODE virtual viewports.)
1393 #
1394 ###############################################################################
1395
1396 have_randr=no
1397 with_randr_req=unspecified
1398 AC_ARG_WITH(randr-ext,
1399 [  --with-randr-ext        Include support for the X Resize+Rotate extension.],
1400   [with_randr="$withval"; with_randr_req="$withval"],[with_randr=yes])
1401
1402 HANDLE_X_PATH_ARG(with_randr, --with-randr-ext, RANDR)
1403
1404 if test "$with_randr" = yes; then
1405
1406   # first check for Randr.h
1407   AC_CHECK_X_HEADER(X11/extensions/Xrandr.h, [have_randr=yes],,
1408                     [#include <X11/Xlib.h>])
1409
1410   # if that succeeded, then check for the XRR code in the libraries
1411   if test "$have_randr" = yes; then
1412
1413     # RANDR probably needs -lXrender
1414     xrender_libs=
1415     AC_CHECK_X_LIB(Xrender, XRenderSetSubpixelOrder,
1416                    [xrender_libs="-lXrender"], [true], -lXext -lX11)
1417
1418     # first look for RANDR in -lXext
1419     have_randr=no
1420     AC_CHECK_X_LIB(Xext, XRRGetScreenInfo,
1421                    [have_randr=yes; SAVER_LIBS="$SAVER_LIBS $xrender_libs"],
1422                    [true], $xrender_libs -lXext -lX11)
1423
1424     # if that failed, look in -lXrandr
1425     if test "$have_randr" = no; then
1426       AC_CHECK_X_LIB(Xrandr, XRRGetScreenInfo,
1427              [have_randr=yes; SAVER_LIBS="$SAVER_LIBS -lXrandr $xrender_libs"],
1428                      [true], $xrender_libs -lXext -lX11)
1429     fi
1430   fi
1431
1432   # if that succeeded, then we've really got it.
1433   if test "$have_randr" = yes; then
1434     AC_DEFINE(HAVE_RANDR)
1435   fi
1436
1437 elif test "$with_randr" != no; then
1438   echo "error: must be yes or no: --with-randr-ext=$with_randr"
1439   exit 1
1440 fi
1441
1442
1443 ###############################################################################
1444 #
1445 #       Check for XF86MiscSetGrabKeysState (but only bother if we are already
1446 #       using other XF86 stuff.)
1447 #
1448 ###############################################################################
1449
1450 have_xf86miscsetgrabkeysstate=no
1451 if test "$have_xf86gamma" = yes -o "$have_xf86vmode" = yes; then
1452   AC_CHECK_X_LIB(Xxf86misc, XF86MiscSetGrabKeysState,
1453                 [have_xf86miscsetgrabkeysstate=yes],
1454                 [true], -lXext -lX11)
1455   if test "$have_xf86miscsetgrabkeysstate" = yes ; then
1456     SAVER_LIBS="$SAVER_LIBS -lXxf86misc"
1457     AC_DEFINE(HAVE_XF86MISCSETGRABKEYSSTATE)
1458   fi
1459 fi
1460
1461
1462 ###############################################################################
1463 #
1464 #       Check for HP XHPDisableReset and XHPEnableReset.
1465 #
1466 ###############################################################################
1467
1468 AC_MSG_CHECKING([for XHPDisableReset in X11/XHPlib.h])
1469 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
1470                   [AC_DEFINE(HAVE_XHPDISABLERESET)
1471                    SAVER_LIBS="-lXhp11 $SAVER_LIBS"
1472                    AC_MSG_RESULT(yes)],
1473                   [AC_MSG_RESULT(no)])
1474
1475
1476 ###############################################################################
1477 #
1478 #       Check for /proc/interrupts.
1479 #
1480 ###############################################################################
1481
1482 have_proc_interrupts=no
1483 with_proc_interrupts_req=unspecified
1484 AC_ARG_WITH(proc-interrupts,
1485 [  --with-proc-interrupts  Include support for consulting the /proc/interrupts
1486                           file to notice keyboard activity.],
1487   [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
1488   [with_proc_interrupts=yes])
1489
1490 if test "$with_proc_interrupts" = yes; then
1491
1492    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
1493     ac_cv_have_proc_interrupts,
1494     [ac_cv_have_proc_interrupts=no
1495      if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
1496        ac_cv_have_proc_interrupts=yes
1497      fi
1498     ])
1499    have_proc_interrupts=$ac_cv_have_proc_interrupts
1500
1501   if test "$have_proc_interrupts" = yes; then
1502     AC_DEFINE(HAVE_PROC_INTERRUPTS)
1503   fi
1504
1505 elif test "$with_proc_interrupts" != no; then
1506   echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
1507   exit 1
1508 fi
1509
1510
1511 ###############################################################################
1512 #
1513 #       The --enable-locking option
1514 #
1515 ###############################################################################
1516
1517 AC_ARG_ENABLE(locking,[
1518 Screen locking options:
1519
1520   --enable-locking        Compile in support for locking the display.
1521   --disable-locking       Do not allow locking at all.],
1522   [enable_locking="$enableval"],[enable_locking=yes])
1523 if test "$enable_locking" = yes; then
1524   true
1525 elif test "$enable_locking" = no; then
1526   AC_DEFINE(NO_LOCKING)
1527 else
1528   echo "error: must be yes or no: --enable-locking=$enable_locking"
1529   exit 1
1530 fi
1531
1532 # We can't lock on MacOS X, so don't even bother compiling in support for it.
1533 #
1534 if test "$ac_macosx" = yes; then
1535   if test "$enable_locking" = yes; then
1536     AC_MSG_RESULT(locking disabled: it doesn't work on MacOS X)
1537     enable_locking=no
1538     AC_DEFINE(NO_LOCKING)
1539   fi
1540 fi
1541
1542
1543 ###############################################################################
1544 #
1545 #       The --enable-vt-locking option
1546 #
1547 ###############################################################################
1548
1549 #ac_vt_lockswitch=no
1550 #AC_ARG_ENABLE(vt-locking,[
1551 #  --enable-vt-locking     Compile in support for locking Virtual Terminals.
1552 #                          This is the default if the system supports it, and
1553 #                          if locking support is included (--enable-locking.)
1554 #  --disable-vt-locking    Do not allow locking of VTs, even if locking is
1555 #                          enabled.],
1556 #  [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
1557 #if test "$enable_vt_locking" = yes; then
1558 #
1559 #  AC_CACHE_CHECK([for the VT_LOCKSWITCH ioctl], ac_cv_vt_lockswitch,
1560 #   [AC_TRY_COMPILE([#include <fcntl.h>
1561 #                   #include <sys/ioctl.h>
1562 #                   #include <sys/vt.h>],
1563 #                  [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
1564 #                  [ac_cv_vt_lockswitch=yes],
1565 #                  [ac_cv_vt_lockswitch=no])])
1566 #  ac_vt_lockswitch=$ac_cv_vt_lockswitch
1567 #
1568 #elif test "$enable_vt_locking" = no; then
1569 #  true
1570 #else
1571 #  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
1572 #  exit 1
1573 #fi
1574 #
1575 #if test "$ac_vt_lockswitch" = yes; then
1576 #  AC_DEFINE(HAVE_VT_LOCKSWITCH)
1577 #  # the VT_LOCKSWITCH ioctl can only be used when running as root.
1578 #  # #### but it doesn't work yet, so don't worry about that for now.
1579 ##  need_setuid=yes
1580 #fi
1581
1582
1583 ###############################################################################
1584 #
1585 #       Check for PAM.
1586 #
1587 ###############################################################################
1588
1589 case "$host" in
1590   *-solaris*)
1591    # Solaris systems tend to come with PAM misconfigured.
1592    #  Don't build it by default, even if the headers exist.
1593    with_pam_default=no
1594    ;;
1595   *)
1596    # Default to building PAM support on all other systems, if it exists.
1597    with_pam_default=yes
1598   ;;
1599 esac
1600
1601 have_pam=no
1602 with_pam_req=unspecified
1603
1604 AC_ARG_WITH(pam,
1605 [  --with-pam              Include support for PAM (Pluggable Auth Modules.)],
1606   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
1607
1608 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1609
1610 if test "$enable_locking" = yes -a "$with_pam" = yes; then
1611   AC_CACHE_CHECK([for PAM], ac_cv_pam,
1612                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1613                                    [ac_cv_pam=yes],
1614                                    [ac_cv_pam=no])])
1615   if test "$ac_cv_pam" = yes ; then
1616     have_pam=yes
1617     AC_DEFINE(HAVE_PAM)
1618     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
1619
1620     # libpam typically requires dlopen and dlsym.  On FreeBSD,
1621     # those are in libc.  On Linux and Solaris, they're in libdl.
1622     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
1623
1624     # On Linux, sigtimedwait() is in libc; on Solaris, it's in librt.
1625     have_timedwait=no
1626     AC_CHECK_LIB(c, sigtimedwait, [have_timedwait=yes])
1627     if test "$have_timedwait" = no ; then
1628       AC_CHECK_LIB(rt, sigtimedwait, [PASSWD_LIBS="${PASSWD_LIBS} -lrt"])
1629     fi
1630
1631     AC_MSG_CHECKING(how to call pam_strerror)
1632     AC_CACHE_VAL(ac_cv_pam_strerror_args,
1633      [AC_TRY_COMPILE([#include <stdio.h>
1634                       #include <stdlib.h>
1635                       #include <security/pam_appl.h>],
1636                      [pam_handle_t *pamh = 0;
1637                       char *s = pam_strerror(pamh, PAM_SUCCESS);],
1638                      [ac_pam_strerror_args=2],
1639                      [AC_TRY_COMPILE([#include <stdio.h>
1640                                       #include <stdlib.h>
1641                                       #include <security/pam_appl.h>],
1642                                      [char *s =
1643                                        pam_strerror(PAM_SUCCESS);],
1644                                      [ac_pam_strerror_args=1],
1645                                      [ac_pam_strerror_args=0])])
1646       ac_cv_pam_strerror_args=$ac_pam_strerror_args])
1647     ac_pam_strerror_args=$ac_cv_pam_strerror_args
1648     if test "$ac_pam_strerror_args" = 1 ; then
1649       AC_MSG_RESULT(one argument)
1650     elif test "$ac_pam_strerror_args" = 2 ; then
1651       AC_DEFINE(PAM_STRERROR_TWO_ARGS)
1652       AC_MSG_RESULT(two arguments)
1653     else
1654       AC_MSG_RESULT(unknown)
1655     fi
1656   fi
1657 fi
1658
1659
1660 ###############################################################################
1661 #
1662 #       Check for Kerberos.
1663 #
1664 ###############################################################################
1665
1666 have_kerberos=no
1667 have_kerberos5=no
1668 with_kerberos_req=unspecified
1669
1670 AC_ARG_WITH(kerberos, 
1671 [  --with-kerberos         Include support for Kerberos authentication.],
1672   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
1673
1674 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
1675
1676 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
1677   AC_CACHE_CHECK([for Kerberos 4], ac_cv_kerberos,
1678                  [AC_TRY_X_COMPILE([#include <krb.h>],,
1679                                    [ac_cv_kerberos=yes],
1680                                    [ac_cv_kerberos=no])])
1681   AC_CACHE_CHECK([for Kerberos 5], ac_cv_kerberos5,
1682                  [AC_TRY_X_COMPILE([#include <kerberosIV/krb.h>],,
1683                                    [ac_cv_kerberos5=yes],
1684                                    [ac_cv_kerberos5=no])])
1685
1686   if test "$ac_cv_kerberos" = yes ; then
1687     have_kerberos=yes
1688     AC_DEFINE(HAVE_KERBEROS)
1689   fi
1690
1691   if test "$ac_cv_kerberos5" = yes ; then
1692
1693     # Andrew Snare <ajs@pigpond.com> wrote:
1694     #
1695     # You were assuming that if kerberosV (krb5) was found, then kerberosIV
1696     # (krb4) was also available.  This turns out not to be the case with
1697     # mit-krb-1.2.7; apparently backwards-compatibility with KerberosIV
1698     # is optional.
1699     #
1700     # So, disable kerberosV support if libkrb4 can't be found.
1701     # This is not the best solution, but it makes the compile not fail.
1702     #
1703     AC_CHECK_X_LIB(krb4, krb_get_tf_realm,
1704                    [have_kerberos=yes],
1705                    [have_kerberos=no])
1706     if test "$have_kerberos" = yes ; then
1707       have_kerberos5=yes
1708       AC_DEFINE(HAVE_KERBEROS)
1709       AC_DEFINE(HAVE_KERBEROS5)
1710     else
1711       have_kerberos5=no
1712       AC_MSG_WARN([Cannot find compat lib (libkrb4) needed to use Kerberos 5])
1713     fi
1714
1715   fi
1716
1717   if test "$have_kerberos5" = yes ; then
1718     # from Matt Knopp <mhat@infocalypse.netlag.com>
1719     # (who got it from amu@mit.edu)
1720
1721     PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"
1722
1723     # jwz: MacOS X uses -lkrb5, but not -lcrypt
1724     AC_CHECK_X_LIB(crypt, crypt, [PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1725
1726   elif test "$have_kerberos" = yes ; then
1727     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
1728     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
1729   fi
1730
1731   if test "$have_kerberos" = yes ; then
1732     AC_CHECK_FUNC(res_search,,
1733       AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
1734         AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
1735       ))
1736   fi
1737 fi
1738
1739
1740 ###############################################################################
1741 #
1742 #       Check for the nine billion variants of shadow passwords...
1743 #
1744 ###############################################################################
1745
1746 need_setuid=no
1747
1748 have_shadow=no
1749 with_shadow_req=unspecified
1750
1751 AC_ARG_WITH(shadow,
1752 [  --with-shadow           Include support for shadow password authentication.],
1753   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
1754
1755 HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
1756
1757 if test "$enable_locking" = no ; then
1758   with_shadow_req=no
1759   with_shadow=no
1760 fi
1761
1762
1763 ###############################################################################
1764 #
1765 #       Check for Sun "adjunct" passwords.
1766 #
1767 ###############################################################################
1768
1769 if test "$with_shadow" = yes ; then
1770   AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
1771                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1772                                     #include <unistd.h>
1773                                     #include <sys/types.h>
1774                                     #include <sys/label.h>
1775                                     #include <sys/audit.h>
1776                                     #include <pwdadj.h>],
1777                       [struct passwd_adjunct *p = getpwanam("nobody");
1778                        const char *pw = p->pwa_passwd;],
1779                       [ac_cv_sun_adjunct=yes],
1780                       [ac_cv_sun_adjunct=no])])
1781   if test "$ac_cv_sun_adjunct" = yes; then
1782     have_shadow_adjunct=yes
1783     have_shadow=yes
1784     need_setuid=yes
1785   fi
1786 fi
1787
1788
1789 ###############################################################################
1790 #
1791 #       Check for DEC and SCO so-called "enhanced" security.
1792 #
1793 ###############################################################################
1794
1795 if test "$with_shadow" = yes ; then
1796   AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
1797                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1798                                     #include <unistd.h>
1799                                     #include <sys/types.h>
1800                                     #include <pwd.h>
1801                                     #include <sys/security.h>
1802                                     #include <prot.h>],
1803                       [struct pr_passwd *p;
1804                        const char *pw;
1805                        set_auth_parameters(0, 0);
1806                        check_auth_parameters();
1807                        p = getprpwnam("nobody");
1808                        pw = p->ufld.fd_encrypt;],
1809                       [ac_cv_enhanced_passwd=yes],
1810                       [ac_cv_enhanced_passwd=no])])
1811   if test $ac_cv_enhanced_passwd = yes; then
1812     have_shadow_enhanced=yes
1813     have_shadow=yes
1814     need_setuid=yes
1815
1816     # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
1817     # (I'm told it needs -lcurses too, but I don't understand why.)
1818     # But on DEC, it's in -lsecurity.
1819     #
1820     AC_CHECK_LIB(prot, getprpwnam, 
1821                  [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
1822                  [AC_CHECK_LIB(security, getprpwnam, 
1823                                [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
1824                  [-lx])
1825   fi
1826 fi
1827
1828 ###############################################################################
1829 #
1830 #       Check for HP's entry in the "Not Invented Here" Sweepstakes.
1831 #
1832 ###############################################################################
1833
1834 if test "$with_shadow" = yes ; then
1835   AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
1836                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1837                                     #include <unistd.h>
1838                                     #include <sys/types.h>
1839                                     #include <pwd.h>
1840                                     #include <hpsecurity.h>
1841                                     #include <prot.h>],
1842                       [struct s_passwd *p = getspwnam("nobody");
1843                        const char *pw = p->pw_passwd;],
1844                       [ac_cv_hpux_passwd=yes],
1845                       [ac_cv_hpux_passwd=no])])
1846   if test "$ac_cv_hpux_passwd" = yes; then
1847     have_shadow_hpux=yes
1848     have_shadow=yes
1849     need_setuid=yes
1850
1851     # on HPUX, bigcrypt is in -lsec
1852     AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
1853   fi
1854 fi
1855
1856
1857 ###############################################################################
1858 #
1859 #       Check for FreeBSD-style shadow passwords.
1860 #
1861 #       On FreeBSD, getpwnam() and friends work just like on non-shadow-
1862 #       password systems -- except you only get stuff in the pw_passwd field
1863 #       if the running program is setuid.  So, guess that we've got this
1864 #       lossage to contend with if /etc/master.passwd exists, and default to
1865 #       a setuid installation.
1866 #
1867 ###############################################################################
1868
1869 if test "$with_shadow" = yes ; then
1870   AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
1871                  [if test -f /etc/master.passwd ; then
1872                     ac_cv_master_passwd=yes
1873                   else
1874                     ac_cv_master_passwd=no
1875                   fi])
1876   if test "$ac_cv_master_passwd" = yes; then
1877     need_setuid=yes
1878   fi
1879 fi
1880
1881
1882 ###############################################################################
1883 #
1884 #       Check for traditional (ha!) shadow passwords.
1885 #
1886 ###############################################################################
1887
1888 if test "$with_shadow" = yes ; then
1889   AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
1890                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1891                                     #include <unistd.h>
1892                                     #include <sys/types.h>
1893                                     #include <pwd.h>
1894                                     #include <shadow.h>],
1895                       [struct spwd *p = getspnam("nobody");
1896                        const char *pw = p->sp_pwdp;],
1897                       [ac_cv_shadow=yes],
1898                       [ac_cv_shadow=no])])
1899   if test "$ac_cv_shadow" = yes; then
1900     have_shadow=yes
1901     need_setuid=yes
1902
1903     # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
1904     have_getspnam=no
1905     AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
1906     if test "$have_getspnam" = no ; then
1907       AC_CHECK_LIB(gen, getspnam,
1908                    [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
1909     fi
1910   fi
1911 fi
1912
1913
1914 ###############################################################################
1915 #
1916 #       Check for other libraries needed for non-shadow passwords.
1917 #
1918 ###############################################################################
1919
1920 if test "$enable_locking" = yes ; then
1921
1922   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
1923   have_crypt=no
1924   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
1925   if test "$have_crypt" = no ; then
1926     AC_CHECK_LIB(crypt, crypt,
1927                  [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1928   fi
1929 fi
1930
1931
1932 # Most of the above shadow mechanisms will have set need_setuid to yes,
1933 # if they were found.  But, on some systems, we need setuid even when
1934 # using plain old vanilla passwords.
1935 #
1936 if test "$enable_locking" = yes ; then
1937   case "$host" in
1938     *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
1939       need_setuid=yes
1940     ;;
1941   esac
1942 fi
1943
1944
1945 if test "$have_shadow_adjunct" = yes ; then
1946   AC_DEFINE(HAVE_ADJUNCT_PASSWD)
1947 elif test "$have_shadow_enhanced" = yes ; then
1948   AC_DEFINE(HAVE_ENHANCED_PASSWD)
1949 elif test "$have_shadow_hpux" = yes ; then
1950   AC_DEFINE(HAVE_HPUX_PASSWD)
1951 elif test "$have_shadow" = yes ; then
1952   AC_DEFINE(HAVE_SHADOW_PASSWD)
1953 fi
1954
1955
1956 ###############################################################################
1957 #
1958 #       Check for external password helper
1959 #       On SuSE, instead of having xscreensaver be a setuid program, they
1960 #       fork an external program that takes the password on stdin, and
1961 #       returns true if that password is a valid one.  Then only that
1962 #       smaller program needs to be setuid.
1963 #
1964 #       (Note that this external program is not a GUI: the GUI is still
1965 #       all in xscreensaver itself; the external program just does auth.)
1966 #
1967 ###############################################################################
1968
1969 have_passwd_helper=no
1970 with_passwd_helper_req=unspecified
1971
1972 AC_ARG_WITH(passwd-helper,
1973 [  --with-passwd-helper    Include support for an external password
1974                           verification helper program.],
1975   [with_passwd_helper="$withval"; with_passwd_helper_req="$withval"],[with_passwd_helper=no])
1976 # no HANDLE_X_PATH_ARG for this one
1977
1978 if test "$enable_locking" = no ; then
1979   with_passwd_helper_req=no
1980   with_passwd_helper=no
1981 fi
1982
1983 case "$with_passwd_helper" in
1984   ""|no) : ;;
1985   /*)
1986     AC_DEFINE_UNQUOTED(PASSWD_HELPER_PROGRAM, "$with_passwd_helper")
1987     have_passwd_helper=yes;;
1988   *)
1989     echo "error: --with-passwd-helper needs full pathname of helper (not '$with_passwd_helper')." >&2
1990     exit 1
1991 esac
1992
1993
1994 ###############################################################################
1995 #
1996 #       Check for -lXm.
1997 #
1998 ###############################################################################
1999
2000 have_motif=no
2001 with_motif_req=unspecified
2002 AC_ARG_WITH(motif,[
2003 User interface options:
2004
2005   --with-motif            Use the Motif toolkit for the user interface
2006                           (not recommended.)],
2007   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
2008
2009 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
2010
2011 if test "$with_motif" != yes -a "$with_motif" != no ; then
2012   echo "error: must be yes or no: --with-motif=$with_motif"
2013   exit 1
2014 fi
2015
2016 if test "$with_motif" = yes; then
2017   have_motif=no
2018   AC_CHECK_X_HEADER(Xm/Xm.h,
2019                     [have_motif=yes
2020                      AC_DEFINE(HAVE_MOTIF)
2021                      MOTIF_LIBS="$MOTIF_LIBS -lXm"],,
2022                     [#include <stdlib.h>
2023                      #include <stdio.h>
2024                      #include <X11/Intrinsic.h>])
2025 fi
2026
2027
2028 if test "$have_motif" = yes; then
2029   AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)],,
2030                     [#include <stdlib.h>
2031                      #include <stdio.h>
2032                      #include <X11/Intrinsic.h>])
2033 fi
2034
2035
2036 ###############################################################################
2037 #
2038 #       Check for -lgtk (and Gnome stuff)
2039 #
2040 ###############################################################################
2041
2042 have_gtk=no
2043 have_gtk2=no
2044 with_gtk_req=unspecified
2045 AC_ARG_WITH(gtk,
2046 [  --with-gtk              Use the Gtk toolkit for the user interface.],
2047   [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
2048
2049 # if --with-gtk=/directory/ was specified, remember that directory so that
2050 # we can also look for the `gtk-config' program in that directory.
2051 case "$with_gtk" in
2052   /*)
2053     gtk_dir="$with_gtk"
2054     ;;
2055   *)
2056     gtk_dir=""
2057     ;;
2058 esac
2059
2060 HANDLE_X_PATH_ARG(with_gtk, --with-gtk, Gtk)
2061
2062 if test "$with_gtk" != yes -a "$with_gtk" != no ; then
2063   echo "error: must be yes or no: --with-gtk=$with_gtk"
2064   exit 1
2065 fi
2066
2067 have_gnome=no
2068 with_gnome_req=unspecified
2069 AC_ARG_WITH(gnome,
2070 [  --with-gnome            Include support for the Gnome 1.x Control Center.
2071                           (This option is not needed with GTK 2.x / Gnome 2.x.)
2072 ],
2073   [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes])
2074
2075 # if --with-gnome=/directory/ was specified, remember that directory so that
2076 # we can also look for the `gnome-config' program in that directory.
2077 case "$with_gnome" in
2078   /*)
2079     gnome_dir="$with_gnome"
2080     ;;
2081   *)
2082     gnome_dir=""
2083     ;;
2084 esac
2085
2086 HANDLE_X_PATH_ARG(with_gnome, --with-gnome, Gnome)
2087
2088 if test "$with_gnome" != yes -a "$with_gnome" != no ; then
2089   echo "error: must be yes or no: --with-gnome=$with_gnome"
2090   exit 1
2091 fi
2092
2093 parse_gtk_version_string() {
2094   # M4 sucks!!
2095   changequote(X,Y)
2096   maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
2097   min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
2098   changequote([,])
2099   ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
2100   if test -z "$ac_gtk_version"; then
2101     ac_gtk_version=unknown
2102     ac_gtk_version_string=unknown
2103   fi
2104 }
2105
2106
2107 jurassic_gtk=no
2108 gtk2_halfassed=no
2109
2110 if test "$with_gtk" = yes; then
2111   have_gtk=no
2112   
2113   # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
2114   # look in /foo/bin/ for glib-config, gtk-config, and gnome-config.
2115   #
2116   gtk_path="$PATH"
2117
2118   if test ! -z "$gtk_dir"; then
2119     # canonicalize slashes.
2120     foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
2121     gtk_path="$foo:$gtk_path"
2122   fi
2123
2124   if test ! -z "$gnome_dir"; then
2125     # canonicalize slashes.
2126     foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
2127     gtk_path="$foo:$gtk_path"
2128   fi
2129
2130   AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path)
2131
2132   if test -n "$pkg_config" ; then
2133     #
2134     # the new way...
2135     # run pkg-config based tests.
2136     #
2137     pkgs=''
2138     pkg_check_version() {
2139       if test "$ok" = yes ; then
2140         req="$1"
2141         min="$2"
2142         AC_MSG_CHECKING(for $req)
2143         if $pkg_config --exists "$req" ; then
2144           vers=`$pkg_config --modversion "$req"`
2145           if $pkg_config --exists "$req >= $min" ; then
2146             AC_MSG_RESULT($vers)
2147             pkgs="$pkgs $req"
2148             return 1
2149           else
2150             AC_MSG_RESULT($vers (wanted >= $min))
2151             ok=no
2152             return 0
2153           fi
2154         else
2155           AC_MSG_RESULT(no)
2156           ok=no
2157           return 0
2158         fi
2159       fi
2160     }
2161
2162     AC_MSG_RESULT(checking for GTK 2.x with pkg-config based tests...)
2163
2164     ok="yes"
2165     pkg_check_version       gtk+-2.0  2.0.1  ; ac_gtk_version_string="$vers"
2166     pkg_check_version    gmodule-2.0  2.0.0
2167     pkg_check_version     libxml-2.0  2.4.6
2168     pkg_check_version   libglade-2.0  1.99.0
2169 #   pkg_check_version gdk_pixbuf      0.1
2170     have_gtk="$ok"
2171
2172     if test "$have_gtk" = yes; then
2173       have_gtk2=yes
2174       AC_DEFINE(HAVE_GTK2)
2175     else
2176       if test -n "$ac_gtk_version_string" ; then
2177         gtk2_halfassed="$ac_gtk_version_string"
2178         gtk2_halfassed_lib="$req"
2179       fi
2180     fi
2181
2182     if test "$have_gtk" = no; then
2183       #
2184       # we don't have GTK 2.  Let's look for GTK 1.
2185       #
2186       AC_MSG_RESULT(checking for GTK 1.x with pkg-config based tests...)
2187
2188       pkgs=''
2189       ok="yes"
2190       pkg_check_version gtk+       1.2     ; ac_gtk_version_string="$vers"
2191       pkg_check_version glib       1.0
2192       pkg_check_version gdk_pixbuf 0.1
2193       have_gtk="$ok"
2194
2195       # Now check for Gnome...
2196       #
2197       if test "$have_gtk" = yes -a "$with_gnome" = yes; then
2198         old_pkgs="$pkgs"
2199         ok=yes
2200         pkg_check_version capplet    1.0
2201         pkg_check_version gnomeui    1.0
2202         pkg_check_version gdk_pixbuf 0.1
2203         have_gnome="$ok"
2204
2205         if test "$have_gnome" = no; then
2206           pkgs="$old_pkgs"
2207         else
2208           AC_DEFINE(HAVE_CRAPPLET)
2209         fi
2210       fi
2211     fi
2212
2213     if test "$have_gtk" = yes; then
2214       parse_gtk_version_string
2215       jurassic_gtk=no
2216     else
2217       have_gnome=no
2218     fi
2219
2220     if test "$have_gtk" = yes; then
2221       AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
2222                      [ac_cv_gtk_config_cflags=`$pkg_config --cflags $pkgs`])
2223       AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
2224                      [ac_cv_gtk_config_libs=`$pkg_config --libs $pkgs`])
2225     fi
2226     ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
2227     ac_gtk_config_libs=$ac_cv_gtk_config_libs
2228
2229     ac_gnome_config_cflags=$ac_gtk_config_cflags
2230     ac_gnome_config_libs=$ac_gtk_config_libs
2231
2232   else
2233     #
2234     # the old way...
2235     # run {gnome,gtk}-config based tests.
2236     #
2237     AC_MSG_RESULT(checking for GTK 1.x with gtk-config based tests...)
2238
2239     AC_PATH_PROGS(glib_config,  glib12-config glib-config,,  $gtk_path)
2240     AC_PATH_PROGS(gtk_config,   gtk12-config  gtk-config,,   $gtk_path)
2241
2242     if test "$with_gnome" = yes; then
2243       AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path)
2244     fi
2245
2246     if test -n "$glib_config" -a  -n "$gtk_config" ; then
2247       have_gtk=yes
2248       if test "$with_gnome" = yes -a -n "$gnome_config" ; then
2249         have_gnome=yes
2250       fi
2251     fi
2252
2253     if test "$have_gtk" = yes; then
2254       AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
2255                      [ac_cv_gtk_version_string=`$gtk_config --version`])
2256       ac_gtk_version_string=$ac_cv_gtk_version_string
2257       parse_gtk_version_string
2258     fi
2259
2260     if test "$have_gtk" = yes; then
2261       if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
2262       then
2263         have_gtk=no
2264         have_gnome=no
2265         jurassic_gtk=yes
2266       fi
2267     fi
2268
2269     if test "$have_gtk" = yes; then
2270       AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
2271                      [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
2272       AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
2273                      [ac_cv_gtk_config_libs=`$gtk_config --libs`])
2274     fi
2275     ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
2276     ac_gtk_config_libs=$ac_cv_gtk_config_libs
2277
2278     # Check for Gnome Capplet support.
2279     # Note that this is only needed with Gnome 1.x, not Gnome 2.x.
2280     # In a Gnome 2.x world, libcapplet will not exist.
2281     # (In fact, this likely won't even be checked, since in a Gnome 2.x
2282     # world, we will probably be up in the "$pkg_config" branch instead
2283     # of here in the "$gnome_config" branch.)
2284     #
2285     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2286       gnome_config_libs="gtk capplet gnomeui gdk_pixbuf"
2287       AC_MSG_CHECKING(for Gnome capplet includes)
2288       AC_CACHE_VAL(ac_cv_gnome_config_cflags,
2289         [if ( $gnome_config --cflags $gnome_config_libs 2>&1 | \
2290               grep Unknown >/dev/null ) ; then
2291            ac_cv_gnome_config_cflags=''
2292          else
2293           ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs`
2294          fi])
2295       ac_gnome_config_cflags=$ac_cv_gnome_config_cflags
2296       if test "$ac_gnome_config_cflags" = "" ; then
2297         have_gnome=no
2298         AC_MSG_RESULT(no)
2299       else
2300         AC_MSG_RESULT($ac_gnome_config_cflags)
2301       fi
2302     fi
2303
2304     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2305       AC_MSG_CHECKING(for Gnome capplet libs)
2306       AC_CACHE_VAL(ac_cv_gnome_config_libs,
2307         [if ( $gnome_config --libs $gnome_config_libs 2>&1 |
2308               grep Unknown >/dev/null ) ; then
2309            ac_cv_gnome_config_libs=''
2310          else
2311            ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs`
2312          fi])
2313       ac_gnome_config_libs=$ac_cv_gnome_config_libs
2314       if test "$ac_gnome_config_libs" = "" ; then
2315         have_gnome=no
2316         AC_MSG_RESULT(no)
2317       else
2318         AC_MSG_RESULT($ac_gnome_config_libs)
2319       fi
2320     fi
2321
2322     # If we have Gnome, then override the gtk-config values with 
2323     # the gnome-config values.
2324     #
2325     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2326       ac_gtk_config_cflags=$ac_gnome_config_cflags
2327       ac_gtk_config_libs=$ac_gnome_config_libs
2328       AC_DEFINE(HAVE_CRAPPLET)
2329     fi
2330
2331   fi   # end of {gnome,gtk}-config based tests
2332
2333   if test "$have_gtk" = yes -a "$have_gtk2" = no; then
2334     # check for this function that was not in libcapplet 1.2.
2335     # (only needed in Gnome/Gtk 1.x, not Gnome/Gtk 2.x)
2336     AC_CHECK_X_LIB(capplet, capplet_widget_changes_are_immediate,
2337                    [AC_DEFINE(HAVE_CRAPPLET_IMMEDIATE)], [true],
2338                    $ac_gnome_config_libs)
2339   fi
2340
2341
2342   GNOME_DATADIR=""
2343   if test "$have_gtk" = yes; then
2344     if test -n "$pkg_config"; then
2345       if test "$have_gtk2" = yes; then
2346         GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
2347       else
2348         GNOME_DATADIR=`$pkg_config --variable=prefix gtk+`
2349       fi
2350     else
2351       GNOME_DATADIR=`$gtk_config --prefix`
2352     fi
2353     GNOME_DATADIR="$GNOME_DATADIR/share"
2354   fi
2355
2356   # .desktop files go in different places in Gnome 1.x and Gnome 2.x...
2357   if test "$have_gtk2" = yes; then
2358     GNOME_PANELDIR='$(GNOME_PANELDIR2)'
2359   else
2360     GNOME_PANELDIR='$(GNOME_PANELDIR1)'
2361   fi
2362
2363
2364   if test "$have_gtk" = yes; then
2365     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
2366     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
2367     AC_DEFINE(HAVE_GTK)
2368
2369     if test "$have_gtk2" = yes; then
2370       GTK_EXTRA_OBJS=""
2371     else
2372       GTK_EXTRA_OBJS="\$(GTK_EXTRA_OBJS)"
2373     fi
2374   fi
2375
2376 fi
2377
2378
2379 # Check for the Gnome Help Browser.
2380 #
2381 if test "$have_gtk" = yes; then
2382   AC_CHECK_PROGS(have_gnome_help, yelp gnome-help-browser, no)
2383   if test "$have_gnome_help" != no; then
2384     have_gnome_help=yes
2385   fi
2386 fi
2387
2388
2389 ###############################################################################
2390 #
2391 #       Check for -lxml
2392 #
2393 ###############################################################################
2394
2395 have_xml=no
2396 with_xml_req=unspecified
2397 xml_halfassed=no
2398 AC_ARG_WITH(xml,
2399 [  --with-xml              The XML toolkit is needed for some parts of
2400                           the Gtk interface.  Without it, the configuration
2401                           interface will be much less featureful.],
2402 [with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes])
2403
2404 # if --with-xml=/directory/ was specified, remember that directory so that
2405 # we can also look for the `xml-config' program in that directory.
2406 case "$with_xml" in
2407   /*)
2408     xml_dir="$with_xml"
2409     ;;
2410   *)
2411     xml_dir=""
2412     ;;
2413 esac
2414
2415 HANDLE_X_PATH_ARG(with_xml, --with-xml, XML)
2416
2417 if test "$with_xml" != yes -a "$with_xml" != no ; then
2418   echo "error: must be yes or no: --with-xml=$with_xml"
2419   exit 1
2420 fi
2421
2422 if test "$with_xml" = yes; then
2423   have_xml=no
2424   have_old_xml=no
2425
2426   # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
2427   # look in /foo/bin/ for for xml-config.
2428   #
2429   xml_path="$PATH"
2430
2431   if test ! -z "$gtk_dir"; then
2432     # canonicalize slashes.
2433     foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
2434     xml_path="$foo:$xml_path"
2435   fi
2436
2437   if test ! -z "$gnome_dir"; then
2438     # canonicalize slashes.
2439     foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
2440     xml_path="$foo:$xml_path"
2441   fi
2442
2443   if test -n "$pkg_config" ; then
2444     #
2445     # the new way...
2446     # run pkg-config based tests.
2447     #
2448     pkgs=""
2449     ok="yes"
2450
2451     # If we have Gtk 2.x, then *only* XML 2.x will work.
2452     # If we have Gtk 1.x, or don't have Gtk at all, then
2453     # either XML 1.x or 2.x will work.
2454
2455     # First check for XML 2.x.
2456     #
2457     pkg_check_version libxml-2.0 2.4.6
2458
2459     # If that didn't work (we don't have XML 2.x) and we *don't* have
2460     # Gtk 2.x, then check to see if we have XML 1.x
2461     #
2462     if test "$ok" = no -a "$have_gtk2" = no; then
2463       ok=yes
2464       pkg_check_version libxml 1.0
2465     fi
2466
2467     have_xml="$ok"
2468
2469     if test "$have_xml" = yes; then
2470       AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
2471                      [ac_cv_xml_config_cflags=`$pkg_config --cflags $pkgs`])
2472       AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
2473                      [ac_cv_xml_config_libs=`$pkg_config --libs $pkgs`])
2474       ac_xml_config_cflags=$ac_cv_xml_config_cflags
2475       ac_xml_config_libs=$ac_cv_xml_config_libs
2476     fi
2477
2478   else
2479     #
2480     # the old way...
2481     # run {xml2,xml}-config based tests.
2482     #
2483
2484     AC_PATH_PROGS(xml_config, xml2-config xml-config,, $xml_path)
2485
2486     # If we found the xml-config program, run it to get flags.
2487     #
2488     if test -n "$xml_config" ; then
2489       AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
2490                      [ac_cv_xml_config_cflags=`$xml_config --cflags`])
2491       AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
2492                      [ac_cv_xml_config_libs=`$xml_config --libs`])
2493       ac_xml_config_cflags=$ac_cv_xml_config_cflags
2494       ac_xml_config_libs=$ac_cv_xml_config_libs
2495     fi
2496
2497     ac_save_xml_CPPFLAGS="$CPPFLAGS"
2498     CPPFLAGS="$CPPFLAGS $ac_xml_config_cflags"
2499
2500     # first try <libxml/parser.h> which is the new way...
2501     #
2502     AC_CHECK_X_HEADER(libxml/xmlIO.h, [have_xml=yes],,
2503                       [#include <libxml/parser.h>])
2504
2505     # if that didn't work, then try just <parser.h> which is the old way...
2506     #
2507     if test "$have_xml" = no; then
2508       AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes; have_old_xml=yes],,
2509                         [#include <parser.h>])
2510     fi
2511
2512     CPPFLAGS="$ac_save_xml_CPPFLAGS"
2513   fi
2514
2515
2516   have_zlib=no
2517   if test "$have_xml" = yes; then
2518     # we have the XML headers; now make sure zlib is around.
2519     # yes, it's stupid we have to do this too, but there is
2520     # dependency screwage in Gnome.
2521     AC_CHECK_X_LIB(z, zlibVersion, [have_zlib=yes])
2522     if test "$have_zlib" = no; then
2523       xml_halfassed=yes
2524       have_xml=no
2525     fi
2526   fi
2527
2528   if test "$have_xml" = yes; then
2529     # we have the header, now check for the library
2530     have_xml=no
2531     xml_halfassed=yes
2532     AC_CHECK_X_LIB(c, xmlParseChunk,
2533                    [have_xml=yes
2534                     xml_halfassed=no
2535                     XML_LIBS="$ac_xml_config_libs"
2536                     AC_DEFINE(HAVE_XML)],
2537                    [true],
2538                    $ac_xml_config_libs)
2539   fi
2540
2541   if test "$have_xml" = yes; then
2542     INCLUDES="$INCLUDES $ac_xml_config_cflags"
2543     GTK_LIBS="$GTK_LIBS $ac_xml_config_libs"
2544     AC_DEFINE(HAVE_XML)
2545     if test "$have_old_xml" = yes; then
2546       AC_DEFINE(HAVE_OLD_XML_HEADERS)
2547     fi
2548   fi
2549
2550 fi
2551
2552
2553 ###############################################################################
2554 #
2555 #       Checking whether Motif is really Lesstif.
2556 #
2557 ###############################################################################
2558
2559 have_lesstif=no
2560 if test "$have_motif" = yes ; then
2561   AC_CACHE_CHECK([whether Motif is really LessTif], 
2562                  ac_cv_have_lesstif,
2563                  [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
2564                                    [long vers = LesstifVersion;],
2565                                    [ac_cv_have_lesstif=yes],
2566                                    [ac_cv_have_lesstif=no])])
2567   have_lesstif=$ac_cv_have_lesstif
2568 fi
2569
2570
2571 lesstif_version=unknown
2572 lesstif_version_string=unknown
2573
2574 if test "$have_lesstif" = yes ; then
2575   ltv=unknown
2576   echo unknown > conftest-lt
2577   AC_CACHE_CHECK([LessTif version number],
2578                  ac_cv_lesstif_version_string,
2579       [AC_TRY_X_RUN([#include <stdio.h>
2580                      #include <Xm/Xm.h>
2581                      int main() {
2582                        FILE *f = fopen("conftest-lt", "w");
2583                        if (!f) exit(1);
2584                        fprintf(f, "%d %d.%d\n", LesstifVersion,
2585                           LESSTIF_VERSION, LESSTIF_REVISION);
2586                        fclose(f);
2587                        exit(0);
2588                      }],
2589                     [ltv=`cat conftest-lt`
2590                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
2591                      ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
2592                     [ac_cv_lesstif_version=unknown
2593                      ac_cv_lesstif_version_string=unknown],
2594                     [ac_cv_lesstif_version=unknown
2595                      ac_cv_lesstif_version_string=unknown])])
2596   rm -f conftest-lt
2597   lesstif_version=$ac_cv_lesstif_version
2598   lesstif_version_string=$ac_cv_lesstif_version_string
2599
2600 fi
2601
2602
2603 if test "$have_motif" = yes ; then
2604   mtv=unknown
2605   echo unknown > conftest-mt
2606   AC_CACHE_CHECK([Motif version number],
2607                  ac_cv_motif_version_string,
2608       [AC_TRY_X_RUN([#include <stdio.h>
2609                      #include <Xm/Xm.h>
2610                      int main() {
2611                        FILE *f = fopen("conftest-mt", "w");
2612                        if (!f) exit(1);
2613                        fprintf(f, "%d %d.%d\n", XmVersion,
2614                           XmVERSION, XmREVISION);
2615                        fclose(f);
2616                        exit(0);
2617                      }],
2618                     [mtv=`cat conftest-mt`
2619                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
2620                      ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
2621                     [ac_cv_motif_version=unknown
2622                      ac_cv_motif_version_string=unknown],
2623                     [ac_cv_motif_version=unknown
2624                      ac_cv_motif_version_string=unknown])])
2625   rm -f conftest-mt
2626   motif_version=$ac_cv_motif_version
2627   motif_version_string=$ac_cv_motif_version_string
2628
2629 fi
2630
2631
2632 ###############################################################################
2633 #
2634 #       Checking whether Motif requires -lXpm.
2635 #
2636 #       If this is Motif 2.x, and we have XPM, then link against XPM as well.
2637 #       The deal is, Motif 2.x requires XPM -- but it's a compilation option
2638 #       of the library whether to build the XPM code into libXm, or whether
2639 #       to rely on an external libXm.  So the only way to tell whether XPM is
2640 #       a link-time requirement is to examine libXm.a, which is very
2641 #       difficult to do in an autoconf script.  So... if it's Motif 2.x, we
2642 #       always link against XPM if the XPM lib exists (and this will be a
2643 #       no-op if libXm happens to already have the XPM code in it.)
2644 #
2645 ###############################################################################
2646
2647 motif_requires_xpm=no
2648 if test "$have_motif" = yes ; then
2649    AC_MSG_CHECKING(whether Motif requires XPM)
2650    if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000
2651    then
2652      motif_requires_xpm=yes
2653      AC_MSG_RESULT(maybe)
2654    else
2655      AC_MSG_RESULT(no)
2656    fi
2657 fi
2658
2659
2660 ###############################################################################
2661 #
2662 #       Checking whether Motif requires -lXp.
2663 #
2664 #       Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
2665 #       Extension".   Why this extension isn't in -lXext with all the others,
2666 #       I have no idea.
2667 #
2668 ###############################################################################
2669
2670 have_xp_ext=no
2671 if test "$have_motif" = yes ; then
2672    have_xp_ext=no
2673    AC_CHECK_X_LIB(Xp, XpQueryExtension,
2674                   [have_xp_ext=yes; MOTIF_LIBS="$MOTIF_LIBS -lXp"],
2675                   [true], -lX11 -lXext -lm)
2676 fi
2677
2678
2679 ###############################################################################
2680 #
2681 #       Checking whether Motif requires -lXintl (for _Xsetlocale.)
2682 #
2683 ###############################################################################
2684
2685 have_xintl=no
2686 if test "$have_motif" = yes ; then
2687   AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
2688                  -lX11 -lXext -lm)
2689   if test "$have_xintl" = yes; then
2690     MOTIF_LIBS="$MOTIF_LIBS -lXintl"
2691   fi
2692 fi
2693
2694
2695 ###############################################################################
2696 #
2697 #       Check for -lGL or -lMesaGL.
2698 #
2699 ###############################################################################
2700
2701 have_gl=no
2702 ac_have_mesa_gl=no
2703 with_gl_req=unspecified
2704 gl_halfassed=no
2705 AC_ARG_WITH(gl,[
2706 Graphics options:
2707
2708   --with-gl               Build those demos which depend on OpenGL.],
2709   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
2710
2711 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
2712
2713 ac_mesagl_version=unknown
2714 ac_mesagl_version_string=unknown
2715
2716 if test "$with_gl" = yes; then
2717   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
2718   if test "$have_gl" = yes ; then
2719     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no,
2720                       [#include <GL/gl.h>])
2721   fi
2722
2723   # If we have the headers, try and figure out which vendor it's from.
2724   #
2725   if test "$have_gl" = yes ; then
2726
2727     # We need to know whether it's MesaGL so that we know which libraries
2728     # to link against.
2729     #
2730     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
2731       [ac_cv_have_mesa_gl=no
2732        AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
2733       ])
2734     ac_have_mesa_gl=$ac_cv_have_mesa_gl
2735  
2736
2737     gl_lib_1=""
2738     GL_LIBS=""
2739
2740
2741     # Some versions of MesaGL are compiled to require -lpthread.
2742     # So if the Mesa headers exist, and -lpthread exists, then always
2743     # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
2744     #
2745     if test "$ac_have_mesa_gl" = yes; then
2746       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
2747     fi
2748
2749
2750     # If we have Mesa headers, check to see if we can link against -lMesaGL.
2751     # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
2752     # Else, warn that GL is busted.  (We have the headers, but no libs.)
2753     #
2754
2755     if test "$ac_have_mesa_gl" = yes ; then
2756       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
2757                      [gl_lib_1="MesaGL"
2758                       GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
2759                      [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
2760     fi
2761
2762     if test "$gl_lib_1" = "" ; then
2763       AC_CHECK_X_LIB(GL, glXCreateContext, 
2764                      [gl_lib_1="GL"
2765                       GL_LIBS="-lGL -lGLU $GL_LIBS"],
2766                      [], -lGLU $GL_LIBS -lX11 -lXext -lm)
2767     fi
2768
2769     if test "$gl_lib_1" = "" ; then
2770       # we have headers, but no libs -- bail.
2771       have_gl=no
2772       ac_have_mesa_gl=no
2773       gl_halfassed=yes
2774     else
2775       # linking works -- we can build the GL hacks.
2776       AC_DEFINE(HAVE_GL)
2777       if test "$ac_have_mesa_gl" = yes ; then
2778         AC_DEFINE(HAVE_MESA_GL)
2779       fi
2780     fi
2781   fi
2782
2783
2784   # Now that we know we have GL headers and libs, do some more GL testing.
2785   #
2786
2787   if test "$have_gl" = yes ; then
2788     # If it's MesaGL, we'd like to issue a warning if the version number
2789     # is less than or equal to 2.6, because that version had a security bug.
2790     #
2791     if test "$ac_have_mesa_gl" = yes; then
2792
2793       AC_CACHE_CHECK([MesaGL version number], ac_cv_mesagl_version_string,
2794         [cat > conftest.$ac_ext <<EOF
2795 #line __oline__ "configure"
2796 #include "confdefs.h"
2797 #include <GL/gl.h>
2798 #ifndef MESA_MAJOR_VERSION
2799 # include <GL/xmesa.h>
2800 # ifdef XMESA_MAJOR_VERSION
2801    /* Around Mesa 3.2, they took out the Mesa version number, so instead,
2802       we have to check the XMesa version number (the number of the X protocol
2803       support, which seems to be the same as the Mesa version number.)
2804     */
2805 #  define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
2806 #  define MESA_MINOR_VERSION XMESA_MINOR_VERSION
2807 # else
2808    /* Oh great.  Some time after 3.4, they took out the xmesa.h header file,
2809       so we have no way of telling what version of Mesa this is at all.
2810       So, we'll guess that the osmesa version (the "offscreen protocol")
2811       is less than or equal to the real mesa version number.  Except that
2812       if OSmesa is 3.3, assume at least Mesa 3.4, since OSmesa was 3.3 in
2813       Mesa 3.4.  And Mesa 3.3 had xmesa.h.  What a complete load of shit!
2814     */
2815 # include <GL/osmesa.h>
2816 #  define MESA_MAJOR_VERSION OSMESA_MAJOR_VERSION
2817 #  define MESA_MINOR_VERSION OSMESA_MINOR_VERSION or newer, probably?
2818 #  if OSMESA_MAJOR_VERSION == 3 && OSMESA_MINOR_VERSION == 3
2819 #   undef MESA_MINOR_VERSION
2820 #   define MESA_MINOR_VERSION 4 or newer, probably?
2821 #  endif
2822 # endif
2823 #endif
2824 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
2825 EOF
2826
2827          ac_save_CPPFLAGS="$CPPFLAGS"
2828          if test \! -z "$includedir" ; then 
2829            CPPFLAGS="$CPPFLAGS -I$includedir"
2830          fi
2831          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2832
2833          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | grep configure:`
2834
2835          # M4 sucks!!
2836          changequote(X,Y)
2837           mglv=`echo "$mglv" | sed -n \
2838              's/^configure: *\([0-9][0-9]*\)  *\([0-9].*\)$/\1.\2/p'`
2839          changequote([,])
2840
2841          rm -f conftest.$ac_ext
2842
2843          CPPFLAGS="$ac_save_CPPFLAGS"
2844
2845          if test "$mglv" = ""; then
2846            ac_mesagl_version=unknown
2847            ac_mesagl_version_string=unknown
2848          else
2849            ac_mesagl_version_string="$mglv"
2850            # M4 sucks!!
2851            changequote(X,Y)
2852            maj=`echo "$mglv" | sed -n 's/^\([0-9][0-9]*\)\..*$/\1/p'`
2853            min=`echo "$mglv" | sed -n 's/^.*\.\([0-9][0-9]*\).*$/\1/p'`
2854            changequote([,])
2855            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
2856            if test -z "$ac_mesagl_version"; then
2857              ac_mesagl_version=unknown
2858              ac_mesagl_version_string=unknown
2859            fi
2860          fi
2861          ac_cv_mesagl_version=$ac_mesagl_version
2862          ac_cv_mesagl_version_string=$ac_mesagl_version_string
2863       ])
2864       ac_mesagl_version=$ac_cv_mesagl_version
2865       ac_mesagl_version_string=$ac_cv_mesagl_version_string
2866     fi
2867
2868
2869     # Check for OpenGL 1.1 features.
2870     #
2871     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
2872                    [true], $GL_LIBS -lX11 -lXext -lm)
2873   fi
2874
2875 elif test "$with_gl" != no; then
2876   echo "error: must be yes or no: --with-gl=$with_gl"
2877   exit 1
2878 fi
2879
2880
2881 ###############################################################################
2882 #
2883 #       Check for -lgle.
2884 #
2885 ###############################################################################
2886
2887 have_gle=no
2888 with_gle_req=unspecified
2889 gle_halfassed=no
2890 AC_ARG_WITH(gle,
2891 [  --with-gle              Build those demos which depend on GLE
2892                           (the OpenGL "extrusion" library.)],
2893   [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
2894
2895 HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
2896
2897 GLE_LIBS=""
2898
2899 if test "$have_gl" = no ; then
2900  true
2901 elif test "$with_gle" = yes; then
2902
2903   AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no,
2904                     [#include <GL/gl.h>])
2905   if test "$have_gle3" = yes ; then
2906     have_gle=yes;
2907   else
2908     AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no,
2909                     [#include <GL/gl.h>])
2910     if test "$have_gle" = yes ; then
2911       AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no,
2912                         [#include <GL/gl.h>])
2913     fi
2914   fi
2915
2916   if test "$have_gle" = yes ; then
2917     have_gle=no
2918     gle_halfassed=yes
2919     AC_CHECK_X_LIB(gle, gleCreateGC, 
2920                    [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
2921                    [], $GL_LIBS -lX11 -lXext -lm)
2922   fi
2923   if test "$have_gle" = yes ; then
2924     have_gle=no
2925     gle_halfassed=yes
2926
2927     # sometimes the libmatrix stuff is included in libgle.  look there first.
2928 #
2929 # I don't get it.  For some reason, this test passes on SGI, as if
2930 # uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
2931 # Yet the link is succeeding.  Why???
2932 #
2933 #    AC_CHECK_X_LIB(gle, uview_direction_d, 
2934 #                   [have_gle=yes; gle_halfassed=no],
2935 #                   [], $GL_LIBS -lX11 -lXext -lm)
2936
2937     # As of GLE 3 this is in libgle, and has changed name to uview_direction!
2938     # *sigh*
2939     if test "$have_gle3" = yes ; then
2940       AC_CHECK_X_LIB(gle, uview_direction, 
2941                      [have_gle=yes; gle_halfassed=no],
2942                     [], $GL_LIBS -lX11 -lXext -lm)
2943     fi
2944     # if it wasn't in libgle, then look in libmatrix.
2945     if test "$have_gle" = no ; then
2946       AC_CHECK_X_LIB(matrix, uview_direction_d, 
2947                      [have_gle=yes; gle_halfassed=no;
2948                       GLE_LIBS="$GLE_LIBS -lmatrix"],
2949                     [], $GL_LIBS -lX11 -lXext -lm)
2950     fi
2951   fi
2952
2953   if test "$have_gle" = yes ; then
2954     AC_DEFINE(HAVE_GLE)
2955     if test "$have_gle3" = yes ; then
2956       AC_DEFINE(HAVE_GLE3)
2957     fi
2958   fi
2959
2960 elif test "$with_gle" != no; then
2961   echo "error: must be yes or no: --with-gle=$with_gle"
2962   exit 1
2963
2964 fi
2965
2966
2967
2968 ###############################################################################
2969 #
2970 #       Check for -lXpm.
2971 #
2972 ###############################################################################
2973
2974 have_xpm=no
2975 with_xpm_req=unspecified
2976 AC_ARG_WITH(xpm,
2977 [  --with-xpm              Include support for XPM files in some demos.
2978                           (Not needed if Pixbuf is used.)],
2979   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
2980
2981 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
2982
2983 if test "$with_xpm" = yes; then
2984   AC_CHECK_X_HEADER(X11/xpm.h,
2985                    [have_xpm=yes
2986                     AC_DEFINE(HAVE_XPM)
2987                     XPM_LIBS="-lXpm"],,
2988                     [#include <X11/Xlib.h>])
2989 elif test "$with_xpm" != no; then
2990   echo "error: must be yes or no: --with-xpm=$with_xpm"
2991   exit 1
2992 fi
2993
2994 # See comment near $motif_requires_xpm, above.
2995 # Need to do this here, after both Motif and XPM have been checked for.
2996 #
2997 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
2998   if test "$motif_requires_xpm" = yes ; then
2999     MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
3000   fi
3001 fi
3002
3003 ###############################################################################
3004 #
3005 #       Check for -lgdk_pixbuf.
3006 #
3007 ###############################################################################
3008
3009 have_gdk_pixbuf=no
3010 with_gdk_pixbuf_req=unspecified
3011 AC_ARG_WITH(pixbuf,
3012 [  --with-pixbuf           Include support for the GDK-Pixbuf library in some
3013                           demos, which will make it possible for them to read
3014                           GIF, JPEG, and PNG files as well.  (The path here is
3015                           ignored if GTK 2.x is being used.)],
3016   [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
3017   [with_gdk_pixbuf=yes])
3018
3019 # if --with-pixbuf=/directory/ was specified, remember that directory so that
3020 # we can also look for the `gdk-pixbuf-config' program in that directory.
3021 case "$with_gdk_pixbuf" in
3022   /*)
3023     gdk_pixbuf_dir="$with_gdk_pixbuf"
3024     ;;
3025   *)
3026     gdk_pixbuf_dir=""
3027     ;;
3028 esac
3029
3030 HANDLE_X_PATH_ARG(with_gdk_pixbuf, --with-pixbuf, GDK_PIXBUF)
3031
3032 if test "$with_gdk_pixbuf" != yes -a "$with_gdk_pixbuf" != no ; then
3033   echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf"
3034   exit 1
3035 fi
3036
3037 if test "$with_gdk_pixbuf" = yes; then
3038   have_gdk_pixbuf=no
3039   have_gdk_pixbuf2=no
3040
3041   if test -n "$pkg_config" ; then
3042     #
3043     # the new way...
3044     # run pkg-config based tests.
3045     #
3046     pkgs=''
3047     ok="yes"
3048
3049     # If we have Gtk 2.x, then *only* gdk-pixbuf 2.x will work.
3050     # If we have Gtk 1.x, then *only* gdk-pixbuf 1.x will work.
3051     # If we don't have Gtk at all, then either will work.
3052
3053     if test "$have_gtk" = no -o "$have_gtk2" = yes; then
3054       #
3055       # we don't have Gtk; or we have Gtk 2.x.  Check for pixbuf 2.x.
3056       #
3057       AC_MSG_RESULT(checking for gdk_pixbuf 2.x with gtk-config based tests...)
3058       pkg_check_version gdk-pixbuf-2.0      2.0.0
3059       pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
3060       have_gdk_pixbuf="$ok"
3061       have_gdk_pixbuf2="$ok"
3062     fi
3063
3064     if test "$have_gtk" = no -o "$have_gtk2" = no; then
3065       #
3066       # we don't have Gtk; or we have Gtk 1.x.
3067       # If we don't have pixbuf 2.x, then check for pixbuf 1.x.
3068       #
3069       if test "$have_gdk_pixbuf2" = no; then
3070         pkgs=''
3071         ok="yes"
3072       AC_MSG_RESULT(checking for gdk_pixbuf 1.x with gtk-config based tests...)
3073         pkg_check_version gdk_pixbuf      0.0
3074         pkg_check_version gdk_pixbuf_xlib 0.0
3075         have_gdk_pixbuf="$ok"
3076       fi
3077     fi
3078
3079     if test "$have_gdk_pixbuf" = yes; then
3080       AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
3081                  [ac_cv_gdk_pixbuf_config_cflags=`$pkg_config --cflags $pkgs`])
3082       AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
3083                  [ac_cv_gdk_pixbuf_config_libs=`$pkg_config --libs $pkgs`])
3084     fi
3085     ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
3086     ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
3087   fi
3088
3089
3090   if test "$have_gdk_pixbuf" = no; then
3091     #
3092     # the old way...
3093     # run gdk-pixbuf-config based tests.
3094     # note that we can't assume that the existence of "pkg-config" means
3095     # that we don't have to look for gdk-pixbuf-config -- in Gnome 1.4,
3096     # pkg-config exists, but doesn't know about pixbuf.
3097     #
3098
3099    AC_MSG_RESULT(checking for gdk_pixbuf with gdk-pixbuf-config based tests...)
3100
3101     # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
3102     # look in /foo/bin/ for for gdk-pixbuf-config.
3103     #
3104     gdk_pixbuf_path="$PATH"
3105
3106     if test ! -z "$gtk_dir"; then
3107       # canonicalize slashes.
3108       foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
3109       gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
3110     fi
3111
3112     if test ! -z "$gnome_dir"; then
3113       # canonicalize slashes.
3114       foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
3115       gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
3116     fi
3117
3118     AC_PATH_PROGS(gdk_pixbuf_config, gdk-pixbuf-config,, $gdk_pixbuf_path)
3119
3120     # If we found the gdk-pixbuf-config program, run it to get flags.
3121     #
3122     if test -n "$gdk_pixbuf_config" ; then
3123       AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
3124                 [ac_cv_gdk_pixbuf_config_cflags=`$gdk_pixbuf_config --cflags`])
3125       AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
3126                 [ac_cv_gdk_pixbuf_config_libs=`$gdk_pixbuf_config --libs`])
3127
3128       # note that "gdk-pixbuf-config --libs" produces a link line including
3129       # -lgdk_pixbuf, but there's no way to get it to produce one that also
3130       # includes -lgdk_pixbuf_xlib.  Since we don't know *exactly* what the
3131       # name of the library will be, construct it with sed...
3132       # M4 sucks!!
3133       changequote(X,Y)
3134       ac_cv_gdk_pixbuf_config_libs=`echo $ac_cv_gdk_pixbuf_config_libs | \
3135        sed 's@ \(-lgdk_pixbuf\([-_a-zA-Z0-9.]*\)\) @ \1 -lgdk_pixbuf_xlib\2 @'`
3136       changequote([,])
3137
3138       ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
3139       ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
3140     fi
3141   fi
3142
3143   ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
3144   CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
3145
3146   if test "$have_gdk_pixbuf" = no; then
3147     #
3148     # we appear to have pixbuf; check for headers/libs to be sure.
3149     #
3150
3151     have_gdk_pixbuf=no
3152
3153     # check for header A...
3154     AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
3155
3156     # if that worked, check for header B...
3157     if test "$have_gdk_pixbuf" = yes; then
3158       have_gdk_pixbuf=no
3159       gdk_pixbuf_halfassed=yes
3160       AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h,
3161                         [have_gdk_pixbuf=yes
3162                          gdk_pixbuf_halfassed=no])
3163
3164       # yay, it has a new name in Gtk 2.x...
3165       if test "$have_gdk_pixbuf" = no; then
3166         have_gdk_pixbuf=no
3167         gdk_pixbuf_halfassed=yes
3168         AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h,
3169                           [have_gdk_pixbuf=yes
3170                            gdk_pixbuf_halfassed=no])
3171       fi
3172     fi
3173   fi
3174
3175   CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
3176
3177   if test "$have_gdk_pixbuf" = yes; then
3178     # we have the headers, now check for the libraries
3179     have_gdk_pixbuf=no
3180     gdk_pixbuf_halfassed=yes
3181
3182     # library A...
3183     AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
3184                    $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
3185     # library B...
3186     if test "$have_gdk_pixbuf" = yes; then
3187       have_gdk_pixbuf=no
3188       AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
3189                      [have_gdk_pixbuf=yes
3190                       gdk_pixbuf_halfassed=no],,
3191                      $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
3192     fi
3193   fi
3194
3195   if test "$have_gdk_pixbuf" = yes; then
3196     INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags"
3197     XPM_LIBS="$ac_gdk_pixbuf_config_libs"
3198     AC_DEFINE(HAVE_GDK_PIXBUF)
3199   else
3200     have_gdk_pixbuf2=no
3201   fi
3202 fi
3203
3204
3205 ###############################################################################
3206 #
3207 #       Check for -ljpeg
3208 #
3209 ###############################################################################
3210
3211 have_jpeg=no
3212 with_jpeg_req=unspecified
3213 jpeg_halfassed=no
3214 AC_ARG_WITH(jpeg,
3215 [  --with-jpeg             Include support for the JPEG library.],
3216   [with_jpeg="$withval"; with_jpeg_req="$withval"],
3217   [with_jpeg=yes])
3218
3219 HANDLE_X_PATH_ARG(with_jpeg, --with-jpeg, JPEG)
3220
3221 if test "$with_jpeg" != yes -a "$with_jpeg" != no ; then
3222   echo "error: must be yes or no: --with-jpeg=$with_jpeg"
3223   exit 1
3224 fi
3225
3226 if test "$with_jpeg" = yes; then
3227
3228   have_jpeg=no
3229   AC_CHECK_X_HEADER(jpeglib.h, [have_jpeg=yes])
3230
3231   if test "$have_jpeg" = yes; then
3232     # we have the header, now check for the library
3233     have_jpeg=no
3234     jpeg_halfassed=yes
3235     AC_CHECK_X_LIB(jpeg, jpeg_start_compress,
3236                    [have_jpeg=yes
3237                     jpeg_halfassed=no
3238                     JPEG_LIBS="-ljpeg"
3239                     AC_DEFINE(HAVE_JPEGLIB)])
3240   fi
3241 fi
3242
3243
3244 ###############################################################################
3245 #
3246 #       Check for pty support for 'phosphor'
3247 #
3248 ###############################################################################
3249
3250 PTY_LIBS=
3251 AC_CHECK_HEADERS(pty.h util.h)
3252 AC_CHECK_X_LIB(util, forkpty,
3253                [PTY_LIBS="-lutil"
3254                 AC_DEFINE(HAVE_FORKPTY)])
3255
3256
3257 ###############################################################################
3258 #
3259 #       Check for the XSHM server extension.
3260 #
3261 ###############################################################################
3262
3263 have_xshm=no
3264 with_xshm_req=unspecified
3265 AC_ARG_WITH(xshm-ext,
3266 [  --with-xshm-ext         Include support for the Shared Memory extension.],
3267   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
3268
3269 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
3270
3271 if test "$with_xshm" = yes; then
3272
3273   # first check for Xshm.h.
3274   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes],,
3275                     [#include <X11/Xlib.h>])
3276
3277   # if that succeeded, then check for sys/ipc.h.
3278   if test "$have_xshm" = yes; then
3279     have_xshm=no
3280     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
3281   fi
3282
3283   # if that succeeded, then check for sys/shm.h.
3284   if test "$have_xshm" = yes; then
3285     have_xshm=no
3286     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
3287   fi
3288
3289   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
3290   # to exist, but the library code to not exist.  And even better, the library
3291   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
3292   # lib doesn't exist, give up.  (This lib gets added to X_EXTRA_LIBS, and
3293   # that's not quite right, but close enough.)
3294   #
3295   case "$host" in
3296     *-aix*)
3297       if [ `uname -v` -eq 3 ]; then
3298         have_xshm=no
3299         AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
3300                        [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
3301                        [true], -lX11 -lXext -lm)
3302       fi
3303     ;;
3304   esac
3305
3306   # if that succeeded, then we've really got it.
3307   if test "$have_xshm" = yes; then
3308     AC_DEFINE(HAVE_XSHM_EXTENSION)
3309   fi
3310
3311 elif test "$with_xshm" != no; then
3312   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
3313   exit 1
3314 fi
3315
3316
3317 ###############################################################################
3318 #
3319 #       Check for the DOUBLE-BUFFER server extension.
3320 #
3321 ###############################################################################
3322
3323 have_xdbe=no
3324 with_xdbe_req=unspecified
3325 AC_ARG_WITH(xdbe-ext,
3326 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.],
3327   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
3328
3329 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
3330
3331 if test "$with_xdbe" = yes; then
3332
3333   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes],,
3334                     [#include <X11/Xlib.h>])
3335   if test "$have_xdbe" = yes; then
3336     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
3337   fi
3338
3339 elif test "$with_xdbe" != no; then
3340   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
3341   exit 1
3342 fi
3343
3344
3345 ###############################################################################
3346 #
3347 #       Check for the SGI XReadDisplay server extension.
3348 #
3349 #       Note: this has to be down here, rather than up with the other server
3350 #       extension tests, so that the output of `configure --help' is in the
3351 #       right order.  Arrgh!
3352 #
3353 ###############################################################################
3354
3355 have_readdisplay=no
3356 with_readdisplay_req=unspecified
3357 AC_ARG_WITH(readdisplay,
3358 [  --with-readdisplay      Include support for the XReadDisplay extension.],
3359   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
3360   [with_readdisplay=yes])
3361
3362 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
3363
3364 if test "$with_readdisplay" = yes; then
3365   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
3366                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION),,
3367                     [#include <X11/Xlib.h>])
3368 elif test "$with_readdisplay" != no; then
3369   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
3370   exit 1
3371 fi
3372
3373
3374 ###############################################################################
3375 #
3376 #       Check for a program to generate random text.
3377 #
3378 #       Zippy is funnier than the idiocy generally spat out by `fortune',
3379 #       so first see if "fortune zippy" works.  Else, use plain "fortune".
3380 #
3381 #       We used to dig around in Emacs to look for the "yow" program, but
3382 #       most people who have Emacs also have "fortune zippy", so nevermind.
3383 #
3384 ###############################################################################
3385
3386 with_fortune_req=""
3387 AC_ARG_WITH(fortune,[
3388   --with-fortune=PROGRAM  Some demos are able to run an external program and
3389                           display its text; this names the program to use by
3390                           default (though it can be overridden with X
3391                           resources.)  Default is "/usr/games/fortune".],
3392   [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes])
3393
3394 if test "$with_fortune" = no || test "$with_fortune" = yes ; then
3395   with_fortune=""
3396   with_fortune_req=""
3397 fi
3398
3399 if test -n "$with_fortune_req" ; then
3400   ac_cv_fortune_program=""
3401   case "$with_fortune_req" in
3402     /*)
3403
3404       set dummy $with_fortune_req ; fortune_tmp=$2
3405       AC_MSG_CHECKING([for $fortune_tmp])
3406       if test -x "$fortune_tmp" ; then
3407         AC_MSG_RESULT(yes)
3408       else
3409         AC_MSG_RESULT(no)
3410         with_fortune=""
3411       fi
3412     ;;
3413     *)
3414       set dummy $with_fortune_req ; fortune_tmp=$2
3415       # don't cache
3416       unset ac_cv_path_fortune_tmp
3417       AC_PATH_PROG(fortune_tmp, $fortune_tmp, [])
3418       if test -z "$fortune_tmp" ; then
3419         with_fortune=""
3420       fi
3421     ;;
3422   esac
3423   ac_cv_fortune_program="$with_fortune"
3424
3425 elif test -n "$ac_cv_fortune_program"; then
3426   AC_MSG_RESULT([checking for fortune... (cached) $ac_cv_fortune_program])
3427 fi
3428
3429 unset ac_cv_path_fortune_tmp
3430 unset fortune_tmp
3431
3432 if test -z "$ac_cv_fortune_program" ; then
3433
3434   # first look for fortune in /usr/games/ (and use absolute path)
3435   AC_PATH_PROGS(fortune_tmp, fortune,, "/usr/games")
3436
3437   # if it's not there, look on $PATH (and don't use absolute path)
3438   if test -z "$fortune_tmp" ; then
3439      AC_CHECK_PROGS(fortune_tmp, fortune)
3440   fi
3441
3442   # if we didn't find anything, then just assume /usr/games/
3443   if test -z "$fortune_tmp" ; then
3444      fortune_tmp="/usr/games/fortune"
3445   fi
3446
3447   ac_cv_fortune_program="$fortune_tmp"
3448
3449   # now check to see whether "fortune zippy" works.
3450   #
3451   fortune_tmp="$fortune_tmp zippy"
3452   AC_MSG_CHECKING([for zippy quotes])
3453   if ( $fortune_tmp >/dev/null 2>&1 ); then
3454     ac_cv_fortune_program="$fortune_tmp"
3455     AC_MSG_RESULT($fortune_tmp)
3456   else
3457     AC_MSG_RESULT(no)
3458   fi
3459
3460 fi
3461
3462 unset ac_cv_path_fortune_tmp
3463 unset fortune_tmp
3464
3465 AC_DEFINE_UNQUOTED(FORTUNE_PROGRAM, "$ac_cv_fortune_program")
3466
3467
3468 ###############################################################################
3469 #
3470 #       Check whether it's ok to install some hacks as setuid (e.g., "sonar")
3471 #       This should be safe, but let's give people the option.
3472 #
3473 ###############################################################################
3474
3475 setuid_hacks_default=no
3476 setuid_hacks="$setuid_hacks_default"
3477 AC_ARG_WITH(setuid-hacks,
3478 [  --with-setuid-hacks     Allow some demos to be installed `setuid root'
3479                           (which is needed in order to ping other hosts.)
3480 ],
3481   [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"])
3482
3483 HANDLE_X_PATH_ARG(setuid_hacks, --with-setuid-hacks, setuid hacks)
3484
3485 if test "$setuid_hacks" = yes; then
3486   true
3487 elif test "$setuid_hacks" != no; then
3488   echo "error: must be yes or no: --with-setuid-hacks=$setuid_hacks"
3489   exit 1
3490 fi
3491
3492
3493 ###############################################################################
3494 #
3495 #       Done testing.  Now, set up the various -I and -L variables,
3496 #       and decide which GUI program to build by default.
3497 #
3498 ###############################################################################
3499
3500 DEPEND=makedepend
3501 DEPEND_FLAGS=
3502 DEPEND_DEFINES=
3503
3504
3505 if test \! -z "$includedir" ; then 
3506   INCLUDES="$INCLUDES -I$includedir"
3507 fi
3508
3509 if test \! -z "$libdir" ; then
3510   LDFLAGS="$LDFLAGS -L$libdir"
3511 fi
3512
3513
3514 PREFERRED_DEMO_PROGRAM=''
3515 ALL_DEMO_PROGRAMS=
3516 if test "$have_motif" = yes; then
3517   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
3518   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3519 fi
3520 if test "$have_gtk" = yes; then
3521   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
3522   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3523 fi
3524
3525
3526 if test "$have_kerberos" = yes; then
3527   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
3528   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
3529 fi
3530 if test "$have_pam" = yes; then
3531   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
3532   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
3533   INSTALL_PAM="install-pam"
3534 fi
3535 if test "$have_passwd_helper" = yes; then
3536   PASSWD_SRCS="$PASSWD_SRCS \$(PWHELPER_SRCS)"
3537   PASSWD_OBJS="$PASSWD_OBJS \$(PWHELPER_OBJS)"
3538 fi
3539   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
3540   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
3541
3542
3543 if test "$enable_locking" = yes; then
3544   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
3545   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
3546 else
3547   LOCK_SRCS='$(NOLOCK_SRCS_1)'
3548   LOCK_OBJS='$(NOLOCK_OBJS_1)'
3549 fi
3550
3551 if test "$ac_macosx" = yes; then
3552   EXES_OSX='$(EXES_OSX)'
3553   SCRIPTS_OSX='$(SCRIPTS_OSX)'
3554   MEN_OSX='$(MEN_OSX)'
3555 else
3556   EXES_OSX=
3557   SCRIPTS_OSX=
3558   MEN_OSX=
3559 fi
3560
3561
3562 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
3563
3564 if test "$need_setuid" = yes; then
3565   NEED_SETUID=yes
3566 else
3567   NEED_SETUID=no
3568 fi
3569
3570 if test "$setuid_hacks" = yes; then
3571   SETUID_HACKS=yes
3572 else
3573   SETUID_HACKS=no
3574 fi
3575
3576 tab='   '
3577 if test "$have_gl" = yes; then
3578   GL_EXES='$(GL_EXES)'
3579   GL_UTIL_EXES='$(GL_UTIL_EXES)'
3580   GL_MEN='$(GL_MEN)'
3581   GL_KLUDGE="${tab}  "
3582 else
3583   GL_KLUDGE="-${tab}  "
3584 fi
3585
3586 if test "$have_gle" = yes; then
3587   GLE_EXES='$(GLE_EXES)'
3588   GLE_KLUDGE="${tab}   "
3589 else
3590   GLE_KLUDGE="-${tab}   "
3591 fi
3592
3593 if test "$have_jpeg" = yes -a "$have_gdk_pixbuf" = yes; then
3594  JPEG_EXES='$(JPEG_EXES)'
3595 fi
3596
3597
3598 # Another substitution in the XScreenSaver.ad.in file:
3599 #
3600 if test "$have_gnome_help" = yes; then
3601   GNOMEHELP_Y=''
3602   GNOMEHELP_N='!    '
3603 else
3604   GNOMEHELP_Y='!    '
3605   GNOMEHELP_N=''
3606 fi
3607
3608
3609 # Now that we know whether we have Gnome, we can decide where the XML
3610 # config files get installed.
3611 #
3612 if test -z "$HACK_CONF_DIR" ; then
3613   if test -n "$GNOME_DATADIR" ; then
3614     HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers'
3615   else
3616     HACK_CONF_DIR='${prefix}/lib/xscreensaver/config'
3617   fi
3618 fi
3619
3620
3621
3622 # After computing $HACK_CONF_DIR, make sure $GLADE_DATADIR has a value
3623 # so that we know where to install the Gtk pixmaps.
3624 #
3625 # It should usually be "/usr/share/pixmaps/", but we can't just use
3626 # "$(prefix)/share/pixmaps" because that would usually result in
3627 # "/usr/X11R6/share/pixmaps/", which is wrong.  It needs to be the
3628 # Gnome/Gtk prefix, not the overall prefix.
3629 #
3630 if test -n "$GNOME_DATADIR" ; then
3631   GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver'
3632 elif test "$have_gtk" = yes; then
3633   if test -n "$pkg_config"; then
3634     if test "$have_gtk2" = yes; then
3635       GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
3636     else
3637       GLADE_DATADIR=`$pkg_config --variable=prefix gtk+`
3638     fi
3639   else
3640     GLADE_DATADIR=`$gtk_config --prefix`
3641   fi
3642   GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver"
3643 else
3644   GLADE_DATADIR=''
3645 fi
3646
3647
3648 # Set PO_DATADIR to something sensible.
3649 #
3650 AC_MSG_CHECKING([for locale directory])
3651 if test -n "$GNOME_DATADIR" ; then
3652   PO_DATADIR="$GNOME_DATADIR"
3653 elif test "$have_gtk" = yes; then
3654   if test -n "$pkg_config"; then
3655     if test "$have_gtk2" = yes; then
3656       PO_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
3657     else
3658       PO_DATADIR=`$pkg_config --variable=prefix gtk+`
3659     fi
3660   else
3661     PO_DATADIR=`$gtk_config --prefix`
3662   fi
3663   PO_DATADIR="$PO_DATADIR/share"
3664 fi
3665
3666 if test -z "$PO_DATADIR" ; then
3667   #
3668   # #### Total fucking kludge --
3669   # Map /build/prefix/usr/X11R6/share/ to /build/prefix/usr/share/
3670   # but of course we need to expand all the nested variables to do that...
3671   #
3672   dd=$datadir
3673   eval dd=${dd}
3674   eval dd=${dd}
3675   eval dd=${dd}
3676   eval dd=${dd}
3677   eval dd=${dd}
3678   PO_DATADIR=`echo $dd | sed 's@/X11R6/@/@'`
3679 fi
3680
3681 AC_MSG_RESULT($PO_DATADIR/locale)
3682
3683
3684 # canonicalize slashes.
3685 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
3686
3687 # gcc 3.0 likes to issue this warning for every file:
3688 #
3689 # cc1: warning: changing search order for system directory "/usr/local/include"
3690 # cc1: warning:   as it has already been specified as a non-system directory
3691 #
3692 # Yay.  We can only avoid that by deleting "-I${prefix}/include" from the list.
3693 # Which *should* be totally redundant, and thus an ok thing to delete?
3694 #
3695 INCLUDES=`echo "$INCLUDES" | sed 's@ -I${prefix}/include@@g;'`
3696
3697
3698 ###############################################################################
3699 #
3700 #       Perform substitutions and write Makefiles.
3701 #
3702 ###############################################################################
3703
3704 AC_SUBST(INCLUDES)
3705
3706 AC_SUBST(PREFERRED_DEMO_PROGRAM)
3707 AC_SUBST(ALL_DEMO_PROGRAMS)
3708 AC_SUBST(SAVER_LIBS)
3709 AC_SUBST(MOTIF_LIBS)
3710 AC_SUBST(GTK_LIBS)
3711 AC_SUBST(XML_LIBS)
3712 AC_SUBST(JPEG_LIBS)
3713 AC_SUBST(HACK_LIBS)
3714 AC_SUBST(XPM_LIBS)
3715 AC_SUBST(PTY_LIBS)
3716 AC_SUBST(GL_LIBS)
3717 AC_SUBST(GLE_LIBS)
3718 AC_SUBST(XDPMS_LIBS)
3719 AC_SUBST(PASSWD_LIBS)
3720 AC_SUBST(INSTALL_SETUID)
3721 AC_SUBST(SETUID_HACKS)
3722 AC_SUBST(INSTALL_DIRS)
3723 AC_SUBST(NEED_SETUID)
3724 AC_SUBST(INSTALL_PAM)
3725
3726 AC_SUBST(OBJCC)
3727 AC_SUBST(EXES_OSX)
3728 AC_SUBST(SCRIPTS_OSX)
3729 AC_SUBST(MEN_OSX)
3730
3731 AC_SUBST(PASSWD_SRCS)
3732 AC_SUBST(PASSWD_OBJS)
3733 AC_SUBST(XMU_SRCS)
3734 AC_SUBST(XMU_OBJS)
3735 AC_SUBST(XMU_LIBS)
3736 AC_SUBST(SAVER_GL_SRCS)
3737 AC_SUBST(SAVER_GL_OBJS)
3738 AC_SUBST(SAVER_GL_LIBS)
3739 AC_SUBST(LOCK_SRCS)
3740 AC_SUBST(LOCK_OBJS)
3741 AC_SUBST(JPEG_EXES)
3742 AC_SUBST(GL_EXES)
3743 AC_SUBST(GL_UTIL_EXES)
3744 AC_SUBST(GL_MEN)
3745 AC_SUBST(GL_KLUDGE)
3746 AC_SUBST(GLE_EXES)
3747 AC_SUBST(GLE_KLUDGE)
3748 AC_SUBST(GNOMEHELP_Y)
3749 AC_SUBST(GNOMEHELP_N)
3750 AC_SUBST(HACKDIR)
3751 AC_SUBST(GNOME_DATADIR)
3752 AC_SUBST(GLADE_DATADIR)
3753 AC_SUBST(PO_DATADIR)
3754 AC_SUBST(GNOME_PANELDIR)
3755 AC_SUBST(HACK_CONF_DIR)
3756 AC_SUBST(GTK_EXTRA_OBJS)
3757
3758 APPDEFAULTS=$ac_x_app_defaults
3759 AC_SUBST(APPDEFAULTS)
3760
3761 AC_SUBST(DEPEND)
3762 AC_SUBST(DEPEND_FLAGS)
3763 AC_SUBST(DEPEND_DEFINES)
3764 AC_SUBST(PERL)
3765
3766 AC_OUTPUT(Makefile
3767           utils/Makefile
3768           driver/Makefile
3769           hacks/Makefile
3770           hacks/glx/Makefile
3771           po/Makefile.in
3772           driver/XScreenSaver.ad
3773           driver/xscreensaver.kss)
3774
3775 ###############################################################################
3776 #
3777 #       Print some warnings at the end.
3778 #
3779 ###############################################################################
3780
3781 warn_prefix_1="    Warning:"
3782 warn_prefix_2="       Note:"
3783 warn_prefix="$warn_prefix_1"
3784
3785 warning=no
3786 warnsep='    #################################################################'
3787
3788 warnpre() {
3789   if test "$warning" = no ; then
3790     echo '' ; echo "$warnsep" ; echo ''
3791     warning=yes
3792   fi
3793 }
3794
3795 warn() {
3796   warnpre
3797   if test "$warning" = long ; then echo '' ; fi
3798   warning=yes
3799   rest="$@"
3800   echo "$warn_prefix $rest"
3801 }
3802
3803 warnL() {
3804   was=$warning
3805   warnpre
3806   warning=yes
3807   if test "$was" != no ; then echo '' ; fi
3808   rest="$@"
3809   echo "$warn_prefix $rest"
3810 }
3811
3812 warn2() {
3813   rest="$@"
3814   echo "             $rest"
3815   warning=long
3816 }
3817
3818 note() {
3819   warn_prefix="$warn_prefix_2"
3820   warn $@
3821   warn_prefix="$warn_prefix_1"
3822 }
3823
3824 noteL() {
3825   warn_prefix="$warn_prefix_2"
3826   warnL $@
3827   warn_prefix="$warn_prefix_1"
3828 }
3829
3830
3831 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
3832   warn 'The SGI saver extension was requested, but was not found.'
3833 fi
3834
3835 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
3836   warn 'The MIT saver extension was requested, but was not found.'
3837 fi
3838
3839 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
3840   warn 'The XIdle extension was requested, but was not found.'
3841 fi
3842
3843 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
3844   warn 'The XSHM extension was requested, but was not found.'
3845 fi
3846
3847 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
3848   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
3849 fi
3850
3851 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
3852   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
3853 fi
3854
3855 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
3856   warn 'The DPMS extension was requested, but was not found.'
3857 fi
3858
3859 if test "$with_xinerama_req" = yes -a "$have_xinerama" = no ; then
3860   warn 'The Xinerama extension was requested, but was not found.'
3861 fi
3862
3863 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
3864   warn 'The XF86VMODE extension was requested, but was not found.'
3865 fi
3866
3867 if test "$with_randr_req" = yes -a "$have_randr" = no ; then
3868   warn 'The RANDR extension was requested, but was not found.'
3869 fi
3870
3871 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
3872   warn "Checking of /proc/interrupts was requested, but it's bogus."
3873 fi
3874
3875 motif_warn2() {
3876   warn2 'Though the Motif front-end to xscreensaver is still'
3877   warn2 'maintained, it is no longer being updated with new'
3878   warn2 'features: all new development on the xscreensaver-demo'
3879   warn2 'program is happening in the GTK version, and not in the'
3880   warn2 'Motif version.  It is recommended that you build against'
3881   warn2 'GTK instead of Motif.  See <http://www.gtk.org/>.'
3882 }
3883
3884 if test "$have_motif" = no -a "$have_gtk" = no; then
3885
3886   if test "$with_motif" = yes; then
3887     warnL "Neither the GTK nor Motif libraries were found; the"
3888     warn2 "\`xscreensaver-demo' program requires one of these."
3889     echo ''
3890     motif_warn2
3891   else
3892     warnL "The GTK libraries do not seem to be available; the"
3893     warn2 "\`xscreensaver-demo' program requires them."
3894     echo ''
3895     warn2 'You can use Motif or Lesstif instead of GTK (use the'
3896     warn2 "\`--with-motif' option) but that is NOT recommended."
3897     motif_warn2
3898   fi
3899
3900 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
3901   warnL "Use of Motif was requested, but it wasn't found;"
3902   warn2 "Gtk will be used instead."
3903
3904 elif test "$jurassic_gtk" = yes ; then
3905
3906   pref_gtk=1.2
3907
3908   v="$ac_gtk_version_string"
3909   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
3910     warnL "Use of Gtk was requested, but its version number is unknown;"
3911   elif test "$with_gtk_req" = yes ; then
3912     warnL "Use of Gtk was requested, but it is version $v;"
3913   else
3914     warnL "Gtk was found on this system, but it is version $v;"
3915   fi
3916
3917   warn2 "Gtk $pref_gtk or newer is required."
3918
3919 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
3920   warnL "Use of Gtk was requested, but it wasn't found."
3921 fi
3922
3923 if test "$gtk2_halfassed" != no ; then
3924   warnL "GTK version $gtk2_halfassed was found, but at least one supporting"
3925   warn2 "library ($gtk2_halfassed_lib) was not, so GTK 2.x can't be used."
3926   if test "$have_gtk" = yes ; then
3927     v="$ac_gtk_version_string"
3928     warn2 "GTK $v is also installed, so it will be used instead."
3929     warn2 "Please read the above output and the \`config.log' file"
3930     warn2 "for more details."
3931   fi
3932 fi
3933
3934
3935 if test "$with_gnome_req" = yes -a "$have_gnome" = no \
3936         -a "$have_gtk2" = no; then
3937   # don't issue this warning if we have GTK2 -- in that case, the
3938   # Gnome-specific code isn't needed.
3939   warn  'Use of the Gnome Control Panel was requested, but the necessary'
3940   warn2 'headers and/or libraries were not found.'
3941 fi
3942
3943 if test "$have_gtk" = yes ; then
3944   if test "$have_xml" = no ; then
3945     if test "$with_xml_req" = yes ; then
3946       warn  'Use of the XML library was requested, but the necessary'
3947       warn2 'headers and/or libraries were not found.'
3948     else
3949       warn  'GTK is being used, but the XML library was not found.'
3950     fi
3951
3952     if test "$xml_halfassed" = yes ; then
3953
3954       if test "$have_zlib" = yes ; then
3955         which="XML libraries"
3956       else
3957         which="\`zlib' library"
3958       fi
3959
3960       echo ''
3961       warn2 'More specifically, we found the headers, but not the'
3962       warn2 "$which; so either XML is half-installed on this"
3963       warn2 "system, or something else went wrong.  The \`config.log'"
3964       warn2 'file might contain some clues.'
3965     fi
3966
3967     echo ''
3968     warn2 "Without XML, the per-display-mode \`Settings' dialogs"
3969     warn2 'will not be available.  Specify the location of the XML'
3970     warn2 'library through the --with-xml option to configure.'
3971   fi
3972 fi
3973
3974 if test "$have_gtk" = yes -a "$have_gdk_pixbuf" = no ; then
3975   warn  "GTK is being used, but the GDK-Pixbuf library and/or"
3976   warn2 "headers were not found.  That can't be good.  Please"
3977   warn2 "install the GDK-Pixbuf development kit and re-configure."
3978 fi
3979
3980 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
3981
3982   preferred_lesstif=0.92
3983
3984   if test "$lesstif_version" = unknown; then
3985     warnL "Unable to determine the LessTif version number!"
3986     warn2 "Make sure you are using version $preferred_lesstif or newer."
3987     warn2 "See <http://www.lesstif.org/>."
3988
3989   elif test \! $lesstif_version -gt 82; then
3990     warnL "LessTif version $lesstif_version_string is being used."
3991     warn2 "LessTif versions 0.82 and earlier are too buggy to"
3992     warn2 "use with XScreenSaver; it is strongly recommended"
3993     warn2 "that you upgrade to at least version $preferred_lesstif!"
3994     warn2 "See <http://www.lesstif.org/>."
3995   fi
3996 fi
3997
3998
3999 if test "$have_motif" = yes -a "$have_gtk" = no ; then
4000   warn  'Motif is being used, and GTK is not.'
4001   echo  ''
4002   motif_warn2
4003 fi
4004
4005
4006 if test "$with_xpm_req" = yes -a "$have_xpm" = no; then
4007   warnL 'Use of XPM was requested, but it was not found.'
4008 fi
4009
4010 if test "$with_gdk_pixbuf_req" = yes  -a "$have_gdk_pixbuf" = no; then
4011   warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
4012 fi
4013
4014 if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no || \
4015    test "$gdk_pixbuf_halfassed" = yes; then
4016
4017   if test "$with_xpm_req" = yes -o "$have_xpm" = yes ; then
4018     true
4019   elif test "$with_xpm_req" = no ; then
4020     warnL 'The XPM library is not being used.'
4021   else
4022     warnL 'The XPM library was not found.'
4023   fi
4024
4025   if test "$with_gdk_pixbuf_req" = yes ; then
4026     true
4027   elif test "$with_gdk_pixbuf_req" = no ; then
4028     warnL 'The GDK-Pixbuf library is not being used.'
4029   else
4030     warnL 'The GDK-Pixbuf library was not found.'
4031   fi
4032
4033   if test "$gdk_pixbuf_halfassed" = yes ; then
4034     echo ''
4035     warn2 'More specifically, we found the headers, but not the'
4036     warn2 'libraries; so either GDK-Pixbuf is half-installed on this'
4037     warn2 "system, or something else went wrong.  The \`config.log'"
4038     warn2 'file might contain some clues.'
4039   fi
4040
4041   echo ''
4042   warn2 'Some of the demos will not be as colorful as they'
4043   warn2 'could be.  You should consider installing Pixbuf or'
4044   warn2 'XPM and re-running configure.  The Pixbuf library is'
4045   warn2 'a part of GNOME.  The XPM library comes with most'
4046   warn2 'X11 installations; you can also find it at the X11'
4047   warn2 'archive sites, such as <http://sunsite.unc.edu/>.'
4048   echo  ''
4049   warn2 'GDK-Pixbuf is recommended over XPM, as it provides'
4050   warn2 'support for more image formats.'
4051 fi
4052
4053
4054 if test "$have_jpeg" = no ; then
4055   if test "$with_jpeg_req" = yes ; then
4056     warnL 'Use of libjpeg was requested, but it was not found.'
4057   elif test "$with_jpeg_req" = no ; then
4058     noteL 'The JPEG library is not being used.'
4059   else
4060     noteL 'The JPEG library was not found.'
4061   fi
4062
4063   if test "$jpeg_halfassed" = yes ; then
4064     echo ''
4065     warn2 'More specifically, we found the headers, but not the'
4066     warn2 'library; so either JPEG is half-installed on this'
4067     warn2 "system, or something else went wrong.  The \`config.log'"
4068     warn2 'file might contain some clues.'
4069     echo ''
4070   fi
4071
4072   if test "$have_gdk_pixbuf" = no ; then
4073     warn2 "This means that it won't be possible for the image-manipulating"
4074     warn2 "display modes to load files from disk; and it also means that"
4075     warn2 "the \`webcollage' program will be much slower."
4076   else
4077     warn2 "This means the \`webcollage' program will be much slower."
4078   fi
4079 fi
4080
4081
4082 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
4083   preferred_mesagl=3.4
4084   mgv="$ac_mesagl_version_string"
4085   pgl="$preferred_mesagl"
4086
4087   if test "$ac_mesagl_version" = unknown; then
4088     warnL "Unable to determine the MesaGL version number!"
4089     warn2 "Make sure you are using version $preferred_mesagl or newer."
4090
4091   elif test \! "$ac_mesagl_version" -gt 2006; then
4092     warnL "MesaGL version number is $mgv --"
4093     warn2 "MesaGL 2.6 and earlier have a security bug.  It is strongly"
4094     warn2 "recommended that you upgrade to at least version $preferred_mesagl."
4095
4096   elif test \! "$ac_mesagl_version" -gt 3003; then
4097     warnL "MesaGL version number is $mgv --"
4098     warn2 "MesaGL 3.3 and earlier have some bugs; it is recommended"
4099     warn2 "that you upgrade to $pgl or newer."
4100   fi
4101 fi
4102
4103 if test "$have_gl" = no ; then
4104   if test "$with_gl_req" = yes ; then
4105     warnL 'Use of GL was requested, but it was not found.'
4106   elif test "$with_gl_req" = no ; then
4107     noteL 'The OpenGL 3D library is not being used.'
4108   else
4109     noteL 'The OpenGL 3D library was not found.'
4110   fi
4111
4112   if test "$gl_halfassed" = yes ; then
4113     echo ''
4114     warn2 'More specifically, we found the headers, but not the'
4115     warn2 'libraries; so either GL is half-installed on this'
4116     warn2 "system, or something else went wrong.  The \`config.log'"
4117     warn2 'file might contain some clues.'
4118   fi
4119
4120   echo ''
4121   warn2 'Those demos which use 3D will not be built or installed.'
4122   warn2 'You might want to consider installing OpenGL and'
4123   warn2 "re-running configure.  If your vendor doesn't ship"
4124   warn2 'their own implementation of OpenGL, you can get a free'
4125   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
4126   warn2 'info, see <http://www.opengl.org/>.'
4127
4128 fi
4129
4130
4131 if test "$have_gl" = yes -a "$have_gle" = no ; then
4132
4133  # nobody cares about this; don't print the warning unless it was
4134  # requested and not found, or halfway-found.
4135  if test "$with_gle_req" = yes -o "$gle_halfassed" = yes ; then
4136
4137   if test "$with_gle_req" = yes ; then
4138     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
4139     warn2 'it was not found (though the OpenGL library was found, and'
4140     warn2 'is being used.)'
4141   elif test "$with_gle_req" = no ; then
4142     noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
4143     warn2 'library is not.'
4144   else
4145     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
4146     warn2 'was not.'
4147   fi
4148
4149   if test "$gle_halfassed" = yes ; then
4150     echo ''
4151     warn2 'More specifically, we found the headers, but not the'
4152     warn2 'libraries; so either GLE is half-installed on this'
4153     warn2 "system, or something else went wrong.  The \`config.log'"
4154     warn2 'file might contain some clues.'
4155   fi
4156
4157   echo ''
4158   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
4159   warn2 'will not be built or installed.  You might want to consider'
4160   warn2 'installing GLE and re-running configure.  You can find the'
4161   warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
4162   warn2 'OpenGL info, see <http://www.opengl.org/>.'
4163
4164  fi
4165 fi
4166
4167
4168 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
4169   warn 'Use of XReadDisplay was requested, but it was not found.'
4170 fi
4171
4172 if test -n "$with_fortune_req"; then
4173   if test "$with_fortune_req" != "$ac_cv_fortune_program" ; then
4174     warnL "$with_fortune_req was requested as the Fortune program,"
4175     warn2 "but was not found.  The default will be used instead."
4176   fi
4177 fi
4178
4179 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
4180   warn 'Use of Kerberos was requested, but it was not found.'
4181 fi
4182
4183 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
4184   warn 'Use of PAM was requested, but it was not found.'
4185 fi
4186
4187 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
4188   warn 'Use of shadow passwords was requested, but they were not found.'
4189 fi
4190
4191
4192 # You are in a twisty maze of namespaces and syntaxes, all alike.
4193 # Fuck the skull of Unix.
4194 #
4195 eval bindir=${bindir}
4196 eval bindir=${bindir}
4197 eval bindir=${bindir}
4198 eval bindir=${bindir}
4199 eval bindir=${bindir}
4200 eval bindir=${bindir}
4201 eval HACKDIR=${HACKDIR}
4202 eval HACKDIR=${HACKDIR}
4203 eval HACKDIR=${HACKDIR}
4204 eval HACKDIR=${HACKDIR}
4205 eval HACKDIR=${HACKDIR}
4206 eval HACKDIR=${HACKDIR}
4207 eval HACK_CONF_DIR=${HACK_CONF_DIR}
4208 eval HACK_CONF_DIR=${HACK_CONF_DIR}
4209 eval HACK_CONF_DIR=${HACK_CONF_DIR}
4210 eval HACK_CONF_DIR=${HACK_CONF_DIR}
4211 eval HACK_CONF_DIR=${HACK_CONF_DIR}
4212 eval HACK_CONF_DIR=${HACK_CONF_DIR}
4213
4214 # canonicalize slashes.
4215 bindir=`echo  "${bindir}"              | sed 's@/$@@;s@//*@/@g'`
4216 HACKDIR=`echo "${HACKDIR}"             | sed 's@/$@@;s@//*@/@g'`
4217 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
4218
4219
4220 # Sanity check the hackdir
4221 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
4222   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
4223     echo ""
4224     AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
4225                    There will be an executable installed with that name, so
4226                    that can't be the name of a directory as well.  Please
4227                    re-configure with a different directory name.])
4228   fi
4229 done
4230
4231
4232 do_dir_warning=no
4233
4234 # Now let's see if there's a previous RPM version already installed.  Blargh!
4235
4236 # M4 sucks!!
4237 changequote(X,Y)
4238 rpmv=`(rpm -qv xscreensaver) 2>/dev/null | \
4239       sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'`
4240 changequote([,])
4241
4242 if test \! -z "$rpmv" ; then
4243   rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
4244   rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
4245
4246   warning=no
4247   warnL "There is already an installed RPM of xscreensaver $rpmv"
4248   warn2 "on this system.  You might want to remove it (with"
4249   warn2 '"rpm -ve xscreensaver") before running "make install"'
4250   warn2 "from this directory."
4251   echo ""
4252   warn2 "Alternately, you could build this version of xscreensaver"
4253   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
4254   warn2 "file is included.  See the RPM documentation for more info."
4255   echo ""
4256
4257   if test "$rpmbdir" = "$rpmhdir" ; then
4258     warn2 "The RPM version was installed in $rpmbdir/."
4259   else
4260     warn2 "The RPM version was installed in $rpmbdir/,"
4261     warn2 "with demos in $rpmhdir/."
4262   fi
4263
4264   do_dir_warning=yes
4265 fi
4266
4267
4268 if test "${bindir}" = "${HACKDIR}" ; then
4269   do_dir_warning=yes
4270 fi
4271
4272 if test "$do_dir_warning" = yes; then
4273   echo ""
4274   echo "$warnsep"
4275   echo ""
4276   echo '      When you run "make install", the "xscreensaver",'
4277   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
4278   echo "      will be installed in ${bindir}/."
4279   echo ""
4280   echo "      The various graphics demos (180+ different executables) will"
4281   echo "      be installed in ${HACKDIR}/."
4282   echo ""
4283   echo "      If you would prefer the demos to be installed elsewhere,"
4284   echo "      you should re-run configure with the --with-hackdir=DIR"
4285   echo "      option.  For more information, run \`./configure --help'."
4286   warning=yes
4287 fi
4288
4289 if test "$warning" != no; then
4290   echo '' ; echo "$warnsep" ; echo ''
4291 fi
4292
4293 if test "$do_dir_warning" = no; then
4294   if test "$warning" = no; then
4295     echo ''
4296   fi
4297   echo "User programs will be installed in ${bindir}/"
4298   echo "Screen savers will be installed in ${HACKDIR}/"
4299   echo "Configuration will be installed in ${HACK_CONF_DIR}/"
4300   echo ''
4301 fi