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