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