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