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