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