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