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