changed version name
[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 PERL=/usr/bin/perl
1158
1159 AC_PATH_XTRA
1160
1161 if test "$have_x" != yes; then
1162   AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try `$0 --help'.)
1163 fi
1164
1165 AC_PATH_X_APP_DEFAULTS
1166 AC_X_RANDOM_PATHS
1167 AC_XPOINTER
1168
1169 AC_MSG_CHECKING(whether this is MacOS X)
1170   ac_macosx=no
1171   case "$host" in
1172     *-apple-darwin* )
1173       ac_macosx=yes
1174     ;;
1175   esac
1176 AC_MSG_RESULT($ac_macosx)
1177
1178
1179 ###############################################################################
1180 #
1181 #       Gettext support
1182 #
1183 ###############################################################################
1184
1185 AC_PROG_INTLTOOL
1186 GETTEXT_PACKAGE=xscreensaver
1187 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
1188                    [This is the name of the gettext package to use.])
1189 AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE",
1190                    [This is the same as GETTEXT_PACKAGE, but for the glade
1191                    generated code.])
1192 AC_SUBST(GETTEXT_PACKAGE)
1193
1194 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"
1195 AM_GLIB_GNU_GETTEXT
1196 MKINSTALLDIRS="$INSTALL_DIRS"
1197
1198
1199 ###############################################################################
1200 #
1201 #       Check for -lXmu (some fucked up vendors don't ship it...)
1202 #
1203 ###############################################################################
1204
1205 have_xmu=no
1206 AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes],,
1207                   [#include <stdlib.h>
1208                    #include <stdio.h>
1209                    #include <X11/Intrinsic.h>])
1210 if test "$have_xmu" = no ; then
1211   XMU_SRCS='$(UTILS_SRC)/xmu.c'
1212   XMU_OBJS='$(UTILS_BIN)/xmu.o'
1213   XMU_LIBS=''
1214 else
1215   XMU_SRCS=''
1216   XMU_OBJS=''
1217   XMU_LIBS='-lXmu'
1218   AC_DEFINE(HAVE_XMU)
1219 fi
1220
1221
1222 ###############################################################################
1223 #
1224 #       Check for the SunOS 4.1.x _get_wmShellWidgetClass bug.
1225 #       See comp.windows.x FAQ question 124.  The right fix is to
1226 #       get OpenWindows 3.0 patches 100512-02 and 100573-03.
1227 #
1228 ###############################################################################
1229
1230 if test "$have_xmu" = yes ; then
1231   case "$host" in
1232     *-sunos4*)
1233     AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
1234                    ac_cv_sunos_xmu_bug,
1235                    [ac_save_LDFLAGS="$LDFLAGS"
1236                     if test \! -z "$x_libraries" ; then
1237                       LDFLAGS="$LDFLAGS -L$x_libraries"
1238                     fi
1239                     # Note: this trick never works!  (Generally.)
1240                     # We're only getting away with using AC_TRY_LINK
1241                     # with X libraries because we know it's SunOS.
1242                     LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
1243                     AC_TRY_LINK(,,
1244                                 [ac_cv_sunos_xmu_bug=no],
1245                                 [ac_cv_sunos_xmu_bug=yes])
1246                     LDFLAGS="$ac_save_LDFLAGS"])
1247     if test "$ac_cv_sunos_xmu_bug" = yes ; then
1248       AC_CACHE_CHECK([whether the compiler understands -static], 
1249                      ac_cv_ld_static,
1250                      [ac_save_LDFLAGS="$LDFLAGS"
1251                       LDFLAGS="$LDFLAGS -static"
1252                       AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
1253                     LDFLAGS="$ac_save_LDFLAGS"])
1254       if test "$ac_cv_ld_static" = yes ; then
1255         LDFLAGS="$LDFLAGS -static"
1256       else
1257         LDFLAGS="$LDFLAGS -Bstatic"
1258       fi
1259     fi
1260     ;;
1261   esac
1262 fi
1263
1264
1265 ###############################################################################
1266 #
1267 #       Handle the --with-hackdir option
1268 #
1269 ###############################################################################
1270
1271 have_hackdir=yes
1272 with_hackdir_req=unspecified
1273 AC_ARG_WITH(hackdir,[
1274
1275 Installation options:
1276   --with-hackdir=DIR      Where to install the hundreds of demo executables.
1277                           Default: `PREFIX/libexec/xscreensaver/'],
1278   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
1279
1280 if test x"$with_hackdir" = xyes; then
1281   HACKDIR='${libexecdir}/xscreensaver'
1282 elif test x"$with_hackdir" = xno; then
1283   HACKDIR='${bindir}'
1284 else
1285   HACKDIR=$with_hackdir
1286 fi
1287
1288 # canonicalize slashes.
1289 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
1290
1291 # Expand HACKDIR as HACKDIR_FULL
1292 HACKDIR_FULL=`eval eval eval eval eval eval eval eval eval echo $HACKDIR`
1293
1294 # This option used to be called --enable-subdir; make sure that is no longer
1295 # used, since configure brain-damagedly ignores unknown --enable options.
1296
1297 obsolete_enable=
1298 AC_ARG_ENABLE(subdir,,[obsolete_enable=yes])
1299 if test -n "$obsolete_enable"; then
1300   echo "error: the --enable-subdir option has been replaced with"
1301   echo "       the new --with-hackdir option; see \`configure --help'"
1302   echo "       for more information."
1303   exit 1
1304 fi
1305
1306
1307 ###############################################################################
1308 #
1309 #       Handle the --with-configdir option
1310 #       Help for --with-x-app-defaults option added..
1311 #
1312 ###############################################################################
1313
1314 have_configdir=yes
1315 with_configdir_req=unspecified
1316 AC_ARG_WITH(configdir,
1317 [  --with-configdir=DIR    Where to install the data files that describe each
1318                           of the display modes to the GUI.
1319                           Default: `PREFIX/share/xscreensaver/config/'
1320   --with-x-app-defaults=DIR
1321                            Where to install xscreensaver configuration file.
1322 ],
1323   [with_configdir="$withval"; with_configdir_req="$withval"],
1324   [with_configdir=yes])
1325
1326 if test x"$with_configdir" = xyes; then
1327   HACK_CONF_DIR='${datadir}/xscreensaver/config'
1328 elif test x"$with_configdir" = xno; then
1329   echo "error: must be yes, or a pathname: --with-configdir=$with_configdir"
1330   exit 1
1331 else
1332   # there must be a better way than this...
1333   if test -z "`echo $with_configdir | sed 's@^/.*@@'`" ; then
1334     # absolute path
1335     HACK_CONF_DIR=$with_configdir
1336   else
1337     # relative path
1338     HACK_CONF_DIR="\${exec_prefix}$with_configdir"
1339   fi
1340 fi
1341
1342
1343
1344
1345 ###############################################################################
1346 #
1347 #       Check for the SGI SCREEN_SAVER server extension.
1348 #
1349 ###############################################################################
1350
1351 have_sgi=no
1352 with_sgi_req=unspecified
1353 AC_ARG_WITH(sgi-ext,
1354 [Except where noted, all of the --with options below can also take a
1355 directory argument: for example, `--with-motif=/opt/Motif'.  That would
1356 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
1357 to be added to the -L list, assuming those directories exist.  
1358
1359 By default, support for each of these options will be built in, if the
1360 relevant library routines exist.  At run time, they will then be used
1361 only if the X server being used supports them.  Each --with option has
1362 a corresponding --without option, to override building support for them
1363 at all.
1364
1365 Screen blanking and idle-detection options:
1366
1367   --with-sgi-ext          Include support for the SGI SCREEN_SAVER extension.],
1368   [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
1369
1370 HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
1371
1372 if test "$with_sgi" = yes; then
1373   AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
1374                     [have_sgi=yes
1375                      AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)],,
1376                     [#include <X11/Xlib.h>])
1377
1378 elif test "$with_sgi" != no; then
1379   echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
1380   exit 1
1381 fi
1382
1383
1384 ###############################################################################
1385 #
1386 #       Check for the XIDLE server extension.
1387 #
1388 ###############################################################################
1389
1390 have_xidle=no
1391 with_xidle_req=unspecified
1392 AC_ARG_WITH(xidle-ext,
1393 [  --with-xidle-ext        Include support for the XIDLE extension.],
1394   [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
1395
1396 HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
1397
1398 if test "$with_xidle" = yes; then
1399   AC_CHECK_X_HEADER(X11/extensions/xidle.h,
1400                     [have_xidle=yes
1401                      AC_DEFINE(HAVE_XIDLE_EXTENSION)],,
1402                     [#include <X11/Xlib.h>])
1403 elif test "$with_xidle" != no; then
1404   echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
1405   exit 1
1406 fi
1407
1408
1409 ###############################################################################
1410 #
1411 #       Check for the SGI-VIDEO-CONTROL server extension.
1412 #
1413 ###############################################################################
1414
1415 have_sgivc=no
1416 with_sgivc_req=unspecified
1417 AC_ARG_WITH(sgivc-ext,
1418 [  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL extension.],
1419   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
1420
1421 HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
1422
1423 if test "$with_sgivc" = yes; then
1424
1425   # first check for XSGIvc.h
1426   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes],,
1427                     [#include <X11/Xlib.h>])
1428
1429   # if that succeeded, then check for the -lXsgivc
1430   if test "$have_sgivc" = yes; then
1431     have_sgivc=no
1432     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
1433                   [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true],
1434                   -lXext -lX11)
1435   fi
1436
1437   # if that succeeded, then we've really got it.
1438   if test "$have_sgivc" = yes; then
1439     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
1440   fi
1441
1442 elif test "$with_sgivc" != no; then
1443   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
1444   exit 1
1445 fi
1446
1447
1448 ###############################################################################
1449 #
1450 #       Check for the DPMS server extension.
1451 #
1452 ###############################################################################
1453
1454 have_dpms=no
1455 with_dpms_req=unspecified
1456 AC_ARG_WITH(dpms-ext,
1457 [  --with-dpms-ext         Include support for the DPMS extension.],
1458   [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
1459
1460 HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
1461
1462 if test "$with_dpms" = yes; then
1463
1464   # first check for dpms.h
1465   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes],,
1466                     [#include <X11/Xlib.h>
1467                      #include <X11/Xmd.h>])
1468
1469   # if that succeeded, then check for the DPMS code in the libraries
1470   if test "$have_dpms" = yes; then
1471
1472     # first look in -lXext (this is where it is with XFree86 4.0)
1473     have_dpms=no
1474     AC_CHECK_X_LIB(Xext, DPMSInfo, [have_dpms=yes], [true], -lXext -lX11)
1475
1476     # if that failed, look in -lXdpms (this is where it was in XFree86 3.x)
1477     if test "$have_dpms" = no; then
1478       AC_CHECK_X_LIB(Xdpms, DPMSInfo,
1479                     [have_dpms=yes; XDPMS_LIBS="-lXdpms"], [true],
1480                     -lXext -lX11)
1481     fi
1482   fi
1483
1484
1485   # if that succeeded, then we've really got it.
1486   if test "$have_dpms" = yes; then
1487     AC_DEFINE(HAVE_DPMS_EXTENSION)
1488   fi
1489
1490 elif test "$with_dpms" != no; then
1491   echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
1492   exit 1
1493 fi
1494
1495
1496 ###############################################################################
1497 #
1498 #       Check for the XINERAMA server extension.
1499 #
1500 ###############################################################################
1501
1502 have_xinerama=no
1503 with_xinerama_req=unspecified
1504 AC_ARG_WITH(xinerama-ext,
1505 [  --with-xinerama-ext     Include support for the XINERAMA extension.],
1506   [with_xinerama="$withval"; with_xinerama_req="$withval"],[with_xinerama=yes])
1507
1508 HANDLE_X_PATH_ARG(with_xinerama, --with-xinerama-ext, XINERAMA)
1509
1510 if test "$with_xinerama" = yes; then
1511
1512   # first check for Xinerama.h
1513   AC_CHECK_X_HEADER(X11/extensions/Xinerama.h, [have_xinerama=yes],,
1514                     [#include <X11/Xlib.h>])
1515
1516   # if that succeeded, then check for the XINERAMA code in the libraries
1517   if test "$have_xinerama" = yes; then
1518
1519     # first look in -lXext
1520     have_xinerama=no
1521     AC_CHECK_X_LIB(Xext, XineramaQueryScreens, [have_xinerama=yes], [true],
1522                   -lXext -lX11)
1523
1524     # if that failed, look in -lXinerama (this is where it is in XFree86 4.1.)
1525     if test "$have_xinerama" = no; then
1526       AC_CHECK_X_LIB(Xinerama, XineramaQueryScreens,
1527                      [have_xinerama=yes; XINERAMA_LIBS="-lXinerama"],
1528                      [true], -lXext -lX11)
1529     fi
1530   fi
1531
1532   # if that succeeded, then we've really got it.
1533   if test "$have_xinerama" = yes; then
1534     AC_DEFINE(HAVE_XINERAMA)
1535   fi
1536
1537 elif test "$with_xinerama" != no; then
1538   echo "error: must be yes or no: --with-xinerama-ext=$with_xinerama"
1539   exit 1
1540 fi
1541
1542
1543 ###############################################################################
1544 #
1545 #       Check for the XF86VMODE server extension (for virtual screens.)
1546 #
1547 ###############################################################################
1548
1549 have_xf86vmode=no
1550 with_xf86vmode_req=unspecified
1551 AC_ARG_WITH(xf86vmode-ext,
1552 [  --with-xf86vmode-ext    Include support for XFree86 virtual screens.],
1553   [with_xf86vmode="$withval"; with_xf86vmode_req="$withval"],
1554   [with_xf86vmode=yes])
1555
1556 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
1557
1558 VIDMODE_LIBS=""
1559
1560 if test "$with_xf86vmode" = yes; then
1561
1562   # first check for xf86vmode.h
1563   AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes],,
1564                     [#include <X11/Xlib.h>])
1565
1566   # if that succeeded, then check for the -lXxf86vm
1567   if test "$have_xf86vmode" = yes; then
1568     have_xf86vmode=no
1569     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
1570                   [have_xf86vmode=yes;
1571                    VIDMODE_LIBS="-lXxf86vm";
1572                    SAVER_LIBS="$SAVER_LIBS $VIDMODE_LIBS"],
1573                    [true], -lXext -lX11)
1574   fi
1575
1576   # if that succeeded, then we've really got it.
1577   if test "$have_xf86vmode" = yes; then
1578     AC_DEFINE(HAVE_XF86VMODE)
1579   fi
1580
1581 elif test "$with_xf86vmode" != no; then
1582   echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
1583   exit 1
1584 fi
1585
1586
1587 ###############################################################################
1588 #
1589 #       Check for the XF86VMODE server extension (for gamma fading.)
1590 #
1591 ###############################################################################
1592
1593 have_xf86gamma=no
1594 have_xf86gamma_ramp=no
1595 with_xf86gamma_req=unspecified
1596 AC_ARG_WITH(xf86gamma-ext,
1597 [  --with-xf86gamma-ext    Include support for XFree86 gamma fading.],
1598   [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"],
1599   [with_xf86gamma=yes])
1600
1601 HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma)
1602
1603 if test "$with_xf86gamma" = yes; then
1604
1605   # first check for xf86vmode.h, if we haven't already
1606   if test "$have_xf86vmode" = yes; then
1607     have_xf86gamma=yes
1608   else
1609     AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes],,
1610                       [#include <X11/Xlib.h>])
1611   fi
1612
1613   # if that succeeded, then check for the -lXxf86vm
1614   if test "$have_xf86gamma" = yes; then
1615     have_xf86gamma=no
1616     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma,
1617                   [have_xf86gamma=yes],
1618                    [true], -lXext -lX11)
1619   fi
1620
1621   # check for the Ramp versions of the functions too.
1622   if test "$have_xf86gamma" = yes; then
1623     have_xf86gamma_ramp=no
1624     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGammaRamp,
1625                   [have_xf86gamma_ramp=yes],
1626                    [true], -lXext -lX11)
1627   fi
1628
1629   # if those tests succeeded, then we've really got the functions.
1630   if test "$have_xf86gamma" = yes; then
1631     AC_DEFINE(HAVE_XF86VMODE_GAMMA)
1632   fi
1633
1634   if test "$have_xf86gamma_ramp" = yes; then
1635     AC_DEFINE(HAVE_XF86VMODE_GAMMA_RAMP)
1636   fi
1637
1638   # pull in the lib, if we haven't already
1639   if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then
1640     SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
1641   fi
1642
1643 elif test "$with_xf86gamma" != no; then
1644   echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode"
1645   exit 1
1646 fi
1647
1648
1649 ###############################################################################
1650 #
1651 #       Check for the RANDR (Resize and Rotate) server extension.
1652 #
1653 #       We need this to detect when the resolution of the desktop
1654 #       has changed out from under us (this is a newer, different
1655 #       mechanism than the XF86VMODE virtual viewports.)
1656 #
1657 ###############################################################################
1658
1659 have_randr=no
1660 with_randr_req=unspecified
1661 AC_ARG_WITH(randr-ext,
1662 [  --with-randr-ext        Include support for the X Resize+Rotate extension.],
1663   [with_randr="$withval"; with_randr_req="$withval"],[with_randr=yes])
1664
1665 HANDLE_X_PATH_ARG(with_randr, --with-randr-ext, RANDR)
1666
1667 if test "$with_randr" = yes; then
1668
1669   # first check for Xrandr.h
1670   AC_CHECK_X_HEADER(X11/extensions/Xrandr.h, [have_randr=yes],,
1671                     [#include <X11/Xlib.h>])
1672
1673   # if that succeeded, then check for the XRR code in the libraries
1674   if test "$have_randr" = yes; then
1675
1676     # RANDR probably needs -lXrender
1677     xrender_libs=
1678     AC_CHECK_X_LIB(Xrender, XRenderSetSubpixelOrder,
1679                    [xrender_libs="-lXrender"], [true], -lXext -lX11)
1680
1681     # first look for RANDR in -lXext
1682     have_randr=no
1683     AC_CHECK_X_LIB(Xext, XRRGetScreenInfo,
1684                    [have_randr=yes; SAVER_LIBS="$SAVER_LIBS $xrender_libs"],
1685                    [true], $xrender_libs -lXext -lX11)
1686
1687     # if that failed, look in -lXrandr
1688     if test "$have_randr" = no; then
1689       AC_CHECK_X_LIB(Xrandr, XRRGetScreenInfo,
1690              [have_randr=yes; SAVER_LIBS="$SAVER_LIBS -lXrandr $xrender_libs"],
1691                      [true], $xrender_libs -lXext -lX11)
1692     fi
1693   fi
1694
1695   # if that succeeded, then we've really got it.
1696   if test "$have_randr" = yes; then
1697     AC_DEFINE(HAVE_RANDR)
1698
1699     # Now check for version 1.2 in the same libs.
1700     # Try to compile, since on MacOS 10.5.7, headers are older than libs!
1701     AC_CACHE_CHECK([for XRRGetScreenResources], ac_cv_randr_12,
1702       [ac_cv_randr_12=no
1703        AC_TRY_X_COMPILE([#include <stdlib.h>
1704                          #include <X11/Xlib.h>
1705                          #include <X11/extensions/Xrandr.h>],
1706                         [XRRScreenResources *res = 
1707                            XRRGetScreenResources (0, 0);],
1708                         [ac_cv_randr_12=yes],
1709                         [ac_cv_randr_12=no])])
1710     if test "$ac_cv_randr_12" = yes ; then
1711       AC_DEFINE(HAVE_RANDR_12)
1712     fi
1713 #   AC_CHECK_X_LIB(c, XRRGetOutputInfo, [AC_DEFINE(HAVE_RANDR_12)],
1714 #                  [true], $SAVER_LIBS)
1715   fi
1716
1717
1718 elif test "$with_randr" != no; then
1719   echo "error: must be yes or no: --with-randr-ext=$with_randr"
1720   exit 1
1721 fi
1722
1723
1724 ###############################################################################
1725 #
1726 #       Check for XF86MiscSetGrabKeysState (but only bother if we are already
1727 #       using other XF86 stuff.)
1728 #
1729 ###############################################################################
1730
1731 have_xf86miscsetgrabkeysstate=no
1732 if test "$have_xf86gamma" = yes -o "$have_xf86vmode" = yes; then
1733   AC_CHECK_X_LIB(Xxf86misc, XF86MiscSetGrabKeysState,
1734                 [have_xf86miscsetgrabkeysstate=yes],
1735                 [true], -lXext -lX11)
1736   if test "$have_xf86miscsetgrabkeysstate" = yes ; then
1737     SAVER_LIBS="$SAVER_LIBS -lXxf86misc"
1738     AC_DEFINE(HAVE_XF86MISCSETGRABKEYSSTATE)
1739   fi
1740 fi
1741
1742
1743 ###############################################################################
1744 #
1745 #       Check for HP XHPDisableReset and XHPEnableReset.
1746 #
1747 ###############################################################################
1748
1749 AC_MSG_CHECKING([for XHPDisableReset in X11/XHPlib.h])
1750 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
1751                   [AC_DEFINE(HAVE_XHPDISABLERESET)
1752                    SAVER_LIBS="-lXhp11 $SAVER_LIBS"
1753                    AC_MSG_RESULT(yes)],
1754                   [AC_MSG_RESULT(no)])
1755
1756
1757 ###############################################################################
1758 #
1759 #       Check for /proc/interrupts.
1760 #
1761 ###############################################################################
1762
1763 have_proc_interrupts=no
1764 with_proc_interrupts_req=unspecified
1765 AC_ARG_WITH(proc-interrupts,
1766 [  --with-proc-interrupts  Include support for consulting the /proc/interrupts
1767                           file to notice keyboard activity.],
1768   [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
1769   [with_proc_interrupts=yes])
1770
1771 if test "$with_proc_interrupts" = yes; then
1772
1773   # Note that we may be building in an environment (e.g. Debian buildd chroot)
1774   # without a proper /proc filesystem. If /proc/interrupts exists, then we'll
1775   # check that it has the bits we need, but otherwise we'll just go on faith.
1776   #
1777   have_proc_interrupts=yes
1778
1779   if test -f /proc/interrupts; then
1780    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
1781     ac_cv_have_proc_interrupts,
1782     [ac_cv_have_proc_interrupts=no
1783      if grep 'keyboard\|i8042' /proc/interrupts >/dev/null 2>&1 ; then
1784        ac_cv_have_proc_interrupts=yes
1785      fi
1786     ])
1787    have_proc_interrupts=$ac_cv_have_proc_interrupts
1788   fi
1789
1790   if test "$have_proc_interrupts" = yes; then
1791     AC_DEFINE(HAVE_PROC_INTERRUPTS)
1792   fi
1793
1794 elif test "$with_proc_interrupts" != no; then
1795   echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
1796   exit 1
1797 fi
1798
1799
1800 ###############################################################################
1801 #
1802 #       The --enable-locking option
1803 #
1804 ###############################################################################
1805
1806 AC_ARG_ENABLE(locking,[Screen locking options:
1807   --enable-locking        Compile in support for locking the display.
1808   --disable-locking       Do not allow locking at all.],
1809   [enable_locking="$enableval"],
1810   [if test "$ac_macosx" = yes; then
1811     # We can't lock on MacOS X, so default to not compiling in support for it.
1812     # But allow --enable-locking to override that, so I can debug Linux locking
1813     # under MacOS X11.
1814     enable_locking=no
1815    else
1816     enable_locking=yes
1817    fi])
1818 if test "$enable_locking" = yes; then
1819   true
1820 elif test "$enable_locking" = no; then
1821   AC_DEFINE(NO_LOCKING)
1822 else
1823   echo "error: must be yes or no: --enable-locking=$enable_locking"
1824   exit 1
1825 fi
1826
1827
1828 ###############################################################################
1829 #
1830 #       Whether to allow root password to unblank.
1831 #
1832 ###############################################################################
1833 AC_ARG_ENABLE(root-passwd, [
1834   --enable-root-passwd        Allow root passwd to unlock screen.
1835   --disable-root-passwd       Do not allow that.],
1836   [enable_root_passwd="$enableval"],[enable_root_passwd=yes])
1837 if test "$enable_root_passwd" = yes; then
1838   AC_DEFINE(ALLOW_ROOT_PASSWD)
1839   true
1840 elif test "$enable_root_passwd" != no; then
1841   echo "error: must be yes or no: --enable-root-passwd=$enable_root_passwd"
1842   exit 1
1843 fi
1844
1845 ###############################################################################
1846 #
1847 #       Check for PAM.
1848 #
1849 ###############################################################################
1850
1851 case "$host" in
1852   *-solaris*)
1853    # Solaris systems tend to come with PAM misconfigured.
1854    #  Don't build it by default, even if the headers exist.
1855    with_pam_default=no
1856    ;;
1857   *)
1858    # Default to building PAM support on all other systems, if it exists.
1859    with_pam_default=yes
1860   ;;
1861 esac
1862
1863 have_pam=no
1864 with_pam_req=unspecified
1865
1866 AC_ARG_WITH(pam,
1867 [  --with-pam              Include support for PAM (Pluggable Auth Modules.)],
1868   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
1869
1870 AC_ARG_WITH([pam_service_name],
1871             AC_HELP_STRING([--with-pam-service-name=NAME],
1872                            [NAME is the name of the PAM service that
1873                            xscreensaver will authenticate as.]),
1874             [pam_service_name="$withval"],[pam_service_name="xscreensaver"])
1875
1876 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1877
1878 if test "$enable_locking" = yes -a "$with_pam" = yes; then
1879   AC_CACHE_CHECK([for PAM], ac_cv_pam,
1880                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1881                                    [ac_cv_pam=yes],
1882                                    [ac_cv_pam=no])])
1883   if test "$ac_cv_pam" = yes ; then
1884     have_pam=yes
1885     AC_DEFINE(HAVE_PAM)
1886     AC_DEFINE_UNQUOTED(PAM_SERVICE_NAME,"$pam_service_name")
1887     
1888     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
1889
1890     # libpam typically requires dlopen and dlsym.  On FreeBSD,
1891     # those are in libc.  On Linux and Solaris, they're in libdl.
1892     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
1893
1894     # On Linux, sigtimedwait() is in libc; on Solaris, it's in librt.
1895     have_timedwait=no
1896     AC_CHECK_LIB(c, sigtimedwait,
1897                  [have_timedwait=yes
1898                   AC_DEFINE(HAVE_SIGTIMEDWAIT)])
1899     if test "$have_timedwait" = no ; then
1900       AC_CHECK_LIB(rt, sigtimedwait, [have_timedwait=yes
1901                                       AC_DEFINE(HAVE_SIGTIMEDWAIT)
1902                                       PASSWD_LIBS="${PASSWD_LIBS} -lrt"])
1903     fi
1904
1905     AC_MSG_CHECKING(how to call pam_strerror)
1906     AC_CACHE_VAL(ac_cv_pam_strerror_args,
1907      [AC_TRY_X_COMPILE([#include <stdio.h>
1908                         #include <stdlib.h>
1909                         #include <security/pam_appl.h>],
1910                        [pam_handle_t *pamh = 0;
1911                         char *s = pam_strerror(pamh, PAM_SUCCESS);],
1912                        [ac_pam_strerror_args=2],
1913                        [AC_TRY_X_COMPILE([#include <stdio.h>
1914                                           #include <stdlib.h>
1915                                           #include <security/pam_appl.h>],
1916                                          [char *s =
1917                                            pam_strerror(PAM_SUCCESS);],
1918                                          [ac_pam_strerror_args=1],
1919                                          [ac_pam_strerror_args=0])])
1920       ac_cv_pam_strerror_args=$ac_pam_strerror_args])
1921     ac_pam_strerror_args=$ac_cv_pam_strerror_args
1922     if test "$ac_pam_strerror_args" = 1 ; then
1923       AC_MSG_RESULT(one argument)
1924     elif test "$ac_pam_strerror_args" = 2 ; then
1925       AC_DEFINE(PAM_STRERROR_TWO_ARGS)
1926       AC_MSG_RESULT(two arguments)
1927     else
1928       AC_MSG_RESULT(unknown)
1929     fi
1930
1931 # Check pam_fail_delay
1932     AC_MSG_CHECKING(pam_fail_delay in -lpam)
1933     AC_CACHE_VAL(ac_cv_pam_fail_delay,
1934      [ac_save_LDFLAGS="$LDFLAGS"
1935       LDFLAGS="-lpam"
1936       AC_TRY_LINK([#include <security/pam_appl.h>],
1937                   [pam_handle_t *pamh = 0;
1938                    unsigned int usec = 1;
1939                    int status = pam_fail_delay (pamh, usec);],
1940                   [ac_pam_fail_delay=yes],
1941                   [ac_pam_fail_delay=no])
1942       ac_cv_pam_fail_delay=$ac_pam_fail_delay,
1943       LDFLAGS=$ac_save_LDFLAGS])
1944
1945       if test "$ac_pam_fail_delay" = yes ; then
1946         AC_MSG_RESULT(yes)
1947         AC_DEFINE(HAVE_PAM_FAIL_DELAY)
1948       else
1949         AC_MSG_RESULT(no)
1950       fi
1951
1952   fi
1953 fi
1954
1955
1956 ###############################################################################
1957 #
1958 #       Check for Kerberos.
1959 #
1960 ###############################################################################
1961
1962 have_kerberos=no
1963 have_kerberos5=no
1964 with_kerberos_req=unspecified
1965
1966 AC_ARG_WITH(kerberos, 
1967 [  --with-kerberos         Include support for Kerberos authentication.],
1968   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
1969
1970 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
1971
1972 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
1973   AC_CACHE_CHECK([for Kerberos 4], ac_cv_kerberos,
1974                  [AC_TRY_X_COMPILE([#include <krb.h>],,
1975                                    [ac_cv_kerberos=yes],
1976                                    [ac_cv_kerberos=no])])
1977   AC_CACHE_CHECK([for Kerberos 5], ac_cv_kerberos5,
1978                  [AC_TRY_X_COMPILE([#include <kerberosIV/krb.h>],,
1979                                    [ac_cv_kerberos5=yes],
1980                                    [ac_cv_kerberos5=no])])
1981
1982   if test "$ac_cv_kerberos" = yes ; then
1983     have_kerberos=yes
1984     AC_DEFINE(HAVE_KERBEROS)
1985   fi
1986
1987   if test "$ac_cv_kerberos5" = yes ; then
1988
1989     # Andrew Snare <ajs@pigpond.com> wrote:
1990     #
1991     # You were assuming that if kerberosV (krb5) was found, then kerberosIV
1992     # (krb4) was also available.  This turns out not to be the case with
1993     # mit-krb-1.2.7; apparently backwards-compatibility with KerberosIV
1994     # is optional.
1995     #
1996     # So, disable kerberosV support if libkrb4 can't be found.
1997     # This is not the best solution, but it makes the compile not fail.
1998     #
1999     AC_CHECK_X_LIB(krb4, krb_get_tf_realm,
2000                    [have_kerberos=yes],
2001                    [have_kerberos=no])
2002     if test "$have_kerberos" = yes ; then
2003       have_kerberos5=yes
2004       AC_DEFINE(HAVE_KERBEROS)
2005       AC_DEFINE(HAVE_KERBEROS5)
2006     else
2007       have_kerberos5=no
2008       AC_MSG_WARN([Cannot find compat lib (libkrb4) needed to use Kerberos 5])
2009     fi
2010
2011   fi
2012
2013   if test "$have_kerberos5" = yes ; then
2014     # from Matt Knopp <mhat@infocalypse.netlag.com>
2015     # (who got it from amu@mit.edu)
2016
2017     PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"
2018
2019     # jwz: MacOS X uses -lkrb5, but not -lcrypt
2020     AC_CHECK_X_LIB(crypt, crypt, [PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
2021
2022   elif test "$have_kerberos" = yes ; then
2023     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
2024     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
2025   fi
2026
2027   if test "$have_kerberos" = yes ; then
2028     AC_CHECK_FUNC(res_search,,
2029       AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
2030         AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
2031       ))
2032   fi
2033 fi
2034
2035
2036 ###############################################################################
2037 #
2038 #       Check for the nine billion variants of shadow passwords...
2039 #
2040 ###############################################################################
2041
2042 need_setuid=no
2043
2044 have_shadow=no
2045 with_shadow_req=unspecified
2046
2047 AC_ARG_WITH(shadow,
2048 [  --with-shadow           Include support for shadow password authentication.],
2049   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
2050
2051 HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
2052
2053 if test "$enable_locking" = no ; then
2054   with_shadow_req=no
2055   with_shadow=no
2056 fi
2057
2058
2059 ###############################################################################
2060 #
2061 #       Check for Sun "adjunct" passwords.
2062 #
2063 ###############################################################################
2064
2065 if test "$with_shadow" = yes ; then
2066   AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
2067                  [AC_TRY_X_COMPILE([#include <stdlib.h>
2068                                     #include <unistd.h>
2069                                     #include <sys/types.h>
2070                                     #include <sys/label.h>
2071                                     #include <sys/audit.h>
2072                                     #include <pwdadj.h>],
2073                       [struct passwd_adjunct *p = getpwanam("nobody");
2074                        const char *pw = p->pwa_passwd;],
2075                       [ac_cv_sun_adjunct=yes],
2076                       [ac_cv_sun_adjunct=no])])
2077   if test "$ac_cv_sun_adjunct" = yes; then
2078     have_shadow_adjunct=yes
2079     have_shadow=yes
2080     need_setuid=yes
2081   fi
2082 fi
2083
2084
2085 ###############################################################################
2086 #
2087 #       Check for DEC and SCO so-called "enhanced" security.
2088 #
2089 ###############################################################################
2090
2091 if test "$with_shadow" = yes ; then
2092   AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
2093                  [AC_TRY_X_COMPILE([#include <stdlib.h>
2094                                     #include <unistd.h>
2095                                     #include <sys/types.h>
2096                                     #include <pwd.h>
2097                                     #include <sys/security.h>
2098                                     #include <prot.h>],
2099                       [struct pr_passwd *p;
2100                        const char *pw;
2101                        set_auth_parameters(0, 0);
2102                        check_auth_parameters();
2103                        p = getprpwnam("nobody");
2104                        pw = p->ufld.fd_encrypt;],
2105                       [ac_cv_enhanced_passwd=yes],
2106                       [ac_cv_enhanced_passwd=no])])
2107   if test $ac_cv_enhanced_passwd = yes; then
2108     have_shadow_enhanced=yes
2109     have_shadow=yes
2110     need_setuid=yes
2111
2112     # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
2113     # (I'm told it needs -lcurses too, but I don't understand why.)
2114     # But on DEC, it's in -lsecurity.
2115     #
2116     AC_CHECK_LIB(prot, getprpwnam, 
2117                  [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
2118                  [AC_CHECK_LIB(security, getprpwnam, 
2119                                [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
2120                  [-lx])
2121   fi
2122 fi
2123
2124 ###############################################################################
2125 #
2126 #       Check for HP's entry in the "Not Invented Here" Sweepstakes.
2127 #
2128 ###############################################################################
2129
2130 if test "$with_shadow" = yes ; then
2131   AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
2132                  [AC_TRY_X_COMPILE([#include <stdlib.h>
2133                                     #include <unistd.h>
2134                                     #include <sys/types.h>
2135                                     #include <pwd.h>
2136                                     #include <hpsecurity.h>
2137                                     #include <prot.h>],
2138                       [struct s_passwd *p = getspwnam("nobody");
2139                        const char *pw = p->pw_passwd;],
2140                       [ac_cv_hpux_passwd=yes],
2141                       [ac_cv_hpux_passwd=no])])
2142   if test "$ac_cv_hpux_passwd" = yes; then
2143     have_shadow_hpux=yes
2144     have_shadow=yes
2145     need_setuid=yes
2146
2147     # on HPUX, bigcrypt is in -lsec
2148     AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
2149   fi
2150 fi
2151
2152
2153 ###############################################################################
2154 #
2155 #       Check for FreeBSD-style shadow passwords.
2156 #
2157 #       On FreeBSD, getpwnam() and friends work just like on non-shadow-
2158 #       password systems -- except you only get stuff in the pw_passwd field
2159 #       if the running program is setuid.  So, guess that we've got this
2160 #       lossage to contend with if /etc/master.passwd exists, and default to
2161 #       a setuid installation.
2162 #
2163 ###############################################################################
2164
2165 if test "$with_shadow" = yes ; then
2166   AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
2167                  [if test -f /etc/master.passwd ; then
2168                     ac_cv_master_passwd=yes
2169                   else
2170                     ac_cv_master_passwd=no
2171                   fi])
2172   if test "$ac_cv_master_passwd" = yes; then
2173     need_setuid=yes
2174   fi
2175 fi
2176
2177
2178 ###############################################################################
2179 #
2180 #       Check for traditional (ha!) shadow passwords.
2181 #
2182 ###############################################################################
2183
2184 if test "$with_shadow" = yes ; then
2185   AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
2186                  [AC_TRY_X_COMPILE([#include <stdlib.h>
2187                                     #include <unistd.h>
2188                                     #include <sys/types.h>
2189                                     #include <pwd.h>
2190                                     #include <shadow.h>],
2191                       [struct spwd *p = getspnam("nobody");
2192                        const char *pw = p->sp_pwdp;],
2193                       [ac_cv_shadow=yes],
2194                       [ac_cv_shadow=no])])
2195   if test "$ac_cv_shadow" = yes; then
2196     have_shadow=yes
2197     need_setuid=yes
2198
2199     # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
2200     have_getspnam=no
2201     AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
2202     if test "$have_getspnam" = no ; then
2203       AC_CHECK_LIB(gen, getspnam,
2204                    [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
2205     fi
2206   fi
2207 fi
2208
2209
2210 ###############################################################################
2211 #
2212 #       Check for other libraries needed for non-shadow passwords.
2213 #
2214 ###############################################################################
2215
2216 if test "$enable_locking" = yes ; then
2217
2218   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
2219   have_crypt=no
2220   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
2221   if test "$have_crypt" = no ; then
2222     AC_CHECK_LIB(crypt, crypt,
2223                  [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
2224   fi
2225 fi
2226
2227
2228 # Most of the above shadow mechanisms will have set need_setuid to yes,
2229 # if they were found.  But, on some systems, we need setuid even when
2230 # using plain old vanilla passwords.
2231 #
2232 if test "$enable_locking" = yes ; then
2233   case "$host" in
2234     *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
2235       need_setuid=yes
2236     ;;
2237   esac
2238 fi
2239
2240
2241 if test "$have_shadow_adjunct" = yes ; then
2242   AC_DEFINE(HAVE_ADJUNCT_PASSWD)
2243 elif test "$have_shadow_enhanced" = yes ; then
2244   AC_DEFINE(HAVE_ENHANCED_PASSWD)
2245 elif test "$have_shadow_hpux" = yes ; then
2246   AC_DEFINE(HAVE_HPUX_PASSWD)
2247 elif test "$have_shadow" = yes ; then
2248   AC_DEFINE(HAVE_SHADOW_PASSWD)
2249 fi
2250
2251
2252 ###############################################################################
2253 #
2254 #       Check for external password helper
2255 #       On SuSE, instead of having xscreensaver be a setuid program, they
2256 #       fork an external program that takes the password on stdin, and
2257 #       returns true if that password is a valid one.  Then only that
2258 #       smaller program needs to be setuid.
2259 #
2260 #       (Note that this external program is not a GUI: the GUI is still
2261 #       all in xscreensaver itself; the external program just does auth.)
2262 #
2263 ###############################################################################
2264
2265 have_passwd_helper=no
2266 with_passwd_helper_req=unspecified
2267
2268 AC_ARG_WITH(passwd-helper,
2269 [  --with-passwd-helper    Include support for an external password
2270                           verification helper program.],
2271   [with_passwd_helper="$withval"; with_passwd_helper_req="$withval"],[with_passwd_helper=no])
2272 # no HANDLE_X_PATH_ARG for this one
2273
2274 if test "$enable_locking" = no ; then
2275   with_passwd_helper_req=no
2276   with_passwd_helper=no
2277 fi
2278
2279 case "$with_passwd_helper" in
2280   ""|no) : ;;
2281   /*)
2282     AC_DEFINE_UNQUOTED(PASSWD_HELPER_PROGRAM, "$with_passwd_helper")
2283     have_passwd_helper=yes;;
2284   *)
2285     echo "error: --with-passwd-helper needs full pathname of helper (not '$with_passwd_helper')." >&2
2286     exit 1
2287 esac
2288
2289
2290 ###############################################################################
2291 #
2292 #       Check for a login manager for a "New Login" button on the lock dialog.
2293 #       Usually this will be "/usr/bin/gdmflexiserver".
2294 #
2295 ###############################################################################
2296
2297 have_login_manager=no
2298 with_login_manager_req=unspecified
2299 default_login_manager='gdmflexiserver -ls'
2300
2301 AC_ARG_WITH(login-manager,
2302 [  --with-login-manager    Put a "New Login" button on the unlock dialog that
2303                           runs a login manager such as gdmflexiserver.],
2304   [with_login_manager="$withval"; with_login_manager_req="$withval"],
2305   [with_login_manager=no])
2306 # no HANDLE_X_PATH_ARG for this one
2307
2308 if test "$enable_locking" = no ; then
2309   with_login_manager_req=no
2310   with_login_manager=no
2311 fi
2312
2313 if test -n "$with_login_manager_req" ; then
2314   ac_cv_login_manager_program=""
2315
2316  if test "$with_login_manager_req" = "yes" ; then
2317    with_login_manager_req=$default_login_manager
2318  fi
2319
2320   case "$with_login_manager_req" in
2321     no)
2322       with_login_manager=""
2323     ;;
2324     /*)
2325       # absolute path
2326       set dummy $with_login_manager_req ; login_manager_tmp=$2
2327       AC_MSG_CHECKING([for $login_manager_tmp])
2328       if test -x "$login_manager_tmp" ; then
2329         AC_MSG_RESULT(yes)
2330       else
2331         AC_MSG_RESULT(no)
2332         with_login_manager=""
2333       fi
2334     ;;
2335     *)
2336       # relative path
2337       set dummy $with_login_manager_req ; login_manager_tmp=$2
2338       # don't cache
2339       unset ac_cv_path_login_manager_tmp
2340       AC_PATH_PROG(login_manager_tmp, $login_manager_tmp, [])
2341       if test -z "$login_manager_tmp" ; then
2342         with_login_manager=""
2343       else
2344         with_login_manager="$login_manager_tmp"
2345       fi
2346     ;;
2347   esac
2348   ac_cv_login_manager_program="$with_login_manager"
2349
2350 elif test -n "$ac_cv_login_manager_program"; then
2351   AC_MSG_RESULT([checking for login_manager... (cached) $ac_cv_login_manager_program])
2352 fi
2353
2354 NEW_LOGIN_COMMAND_P=''
2355 NEW_LOGIN_COMMAND="$ac_cv_login_manager_program"
2356
2357 if test -z "$NEW_LOGIN_COMMAND" ; then
2358   NEW_LOGIN_COMMAND="$default_login_manager"
2359   NEW_LOGIN_COMMAND_P='! '
2360 fi
2361
2362
2363
2364 ###############################################################################
2365 #
2366 #       Check for -lgtk (and Gnome stuff)
2367 #
2368 ###############################################################################
2369
2370 have_gtk=no
2371 with_gtk_req=unspecified
2372 AC_ARG_WITH(gtk,[
2373 User interface options:
2374
2375   --with-gtk              Use the Gtk toolkit for the user interface.],
2376   [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
2377
2378 # if --with-gtk=/directory/ was specified, remember that directory so that
2379 # we can also look for the `gtk-config' program in that directory.
2380 case "$with_gtk" in
2381   /*)
2382     gtk_dir="$with_gtk"
2383     ;;
2384   *)
2385     gtk_dir=""
2386     ;;
2387 esac
2388
2389 HANDLE_X_PATH_ARG(with_gtk, --with-gtk, Gtk)
2390
2391 if test "$with_gtk" != yes -a "$with_gtk" != no ; then
2392   echo "error: must be yes or no: --with-gtk=$with_gtk"
2393   exit 1
2394 fi
2395
2396
2397 parse_gtk_version_string() {
2398   # M4 sucks!!
2399   changequote(X,Y)
2400   maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
2401   min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
2402   changequote([,])
2403   ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
2404   if test -z "$ac_gtk_version"; then
2405     ac_gtk_version=unknown
2406     ac_gtk_version_string=unknown
2407   fi
2408 }
2409
2410 # Find pkg-config... (need this for both gtk and gdk_pixbuf.)
2411 # if the user specified --with-gtk=/foo/ then look there.
2412 #
2413 gtk_path="$PATH"
2414 if test ! -z "$gtk_dir"; then
2415   # canonicalize slashes.
2416   foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
2417   gtk_path="$foo:$gtk_path"
2418 fi
2419
2420 AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path)
2421
2422 if test -z "$pkg_config" ; then
2423   AC_MSG_WARN([pkg-config not found!])
2424   pkg_config="false"
2425 fi
2426
2427
2428 # Utility function for running pkg-config-based tests...
2429 #
2430 pkgs=''
2431 pkg_check_version() {
2432   if test "$ok" = yes ; then
2433     req="$1"
2434     min="$2"
2435     AC_MSG_CHECKING(for $req)
2436     if $pkg_config --exists "$req" ; then
2437       vers=`$pkg_config --modversion "$req"`
2438       if $pkg_config --exists "$req >= $min" ; then
2439         AC_MSG_RESULT($vers)
2440         pkgs="$pkgs $req"
2441         return 1
2442       else
2443         AC_MSG_RESULT($vers (wanted >= $min))
2444         ok=no
2445         return 0
2446       fi
2447     else
2448       AC_MSG_RESULT(no)
2449       ok=no
2450       return 0
2451     fi
2452   fi
2453 }
2454
2455
2456 jurassic_gtk=no
2457 gtk_halfassed=no
2458
2459 #if test "$with_gtk" = yes; then
2460   have_gtk=no
2461   
2462   ok="yes"
2463   pkg_check_version            gtk+-2.0  2.0.1  ; ac_gtk_version_string="$vers"
2464   pkg_check_version         gmodule-2.0  2.0.0
2465   pkg_check_version          libxml-2.0  2.4.6
2466   pkg_check_version        libglade-2.0  1.99.0
2467   pkg_check_version      gdk-pixbuf-2.0  2.0.0
2468   pkg_check_version gdk-pixbuf-xlib-2.0  2.0.0
2469   have_gtk="$ok"
2470
2471   if test "$have_gtk" = no; then
2472     if test -n "$ac_gtk_version_string" ; then
2473       gtk_halfassed="$ac_gtk_version_string"
2474       gtk_halfassed_lib="$req"
2475     fi
2476   fi
2477
2478   if test "$have_gtk" = yes; then
2479     parse_gtk_version_string
2480     jurassic_gtk=no
2481   fi
2482
2483   if test "$have_gtk" = yes; then
2484     AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
2485                    [ac_cv_gtk_config_cflags=`$pkg_config --cflags $pkgs`])
2486     AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
2487                    [ac_cv_gtk_config_libs=`$pkg_config --libs $pkgs`])
2488   fi
2489
2490   ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
2491   ac_gtk_config_libs=$ac_cv_gtk_config_libs
2492
2493   GTK_EXTRA_OBJS=""
2494   GTK_DATADIR=""
2495   if test "$have_gtk" = yes; then
2496     GTK_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
2497     GTK_DATADIR="$GTK_DATADIR/share"
2498   fi
2499
2500   if test "$have_gtk" = yes; then
2501     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
2502     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
2503     AC_DEFINE(HAVE_GTK)
2504     AC_DEFINE(HAVE_GTK2)
2505     AC_DEFINE(HAVE_XML)
2506   fi
2507
2508 #fi
2509
2510 AC_CACHE_CHECK([for DBUS includes], ac_cv_dbus_config_cflags,
2511                    [ac_cv_dbus_config_cflags=`$pkg_config --cflags dbus-1`])
2512 AC_CACHE_CHECK([for DBUS includes], ac_cv_dbus_config_libs,
2513                    [ac_cv_dbus_config_libs=`$pkg_config --libs dbus-1`])
2514
2515 ac_dbus_config_cflags=$ac_cv_dbus_config_cflags
2516 ac_dbus_config_libs=$ac_cv_dbus_config_libs
2517
2518 INCLUDES="$INCLUDES $ac_dbus_config_cflags"
2519 DBUS_LIBS="$GTK_LIBS $ac_dbus_config_libs"
2520
2521
2522
2523 # Check for the various Gnome help and URL loading programs.
2524 #
2525 WITH_BROWSER=gnome-open
2526 if test "$have_gtk" = yes; then
2527   AC_CHECK_PROGS(gnome_open_program,     gnome-open)
2528   AC_CHECK_PROGS(gnome_url_show_program, gnome-url-show)
2529 fi
2530
2531
2532 ###############################################################################
2533 #
2534 #       Check for -lXm.
2535 #
2536 ###############################################################################
2537
2538 have_motif=no
2539 with_motif_req=unspecified
2540 AC_ARG_WITH(motif,[  --with-motif            Use the Motif toolkit for the user interface
2541                           (not recommended.)],
2542   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
2543
2544 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
2545
2546 if test "$with_motif" != yes -a "$with_motif" != no ; then
2547   echo "error: must be yes or no: --with-motif=$with_motif"
2548   exit 1
2549 fi
2550
2551 if test "$with_motif" = yes; then
2552   have_motif=no
2553   AC_CHECK_X_HEADER(Xm/Xm.h,
2554                     [have_motif=yes
2555                      AC_DEFINE(HAVE_MOTIF)
2556                      MOTIF_LIBS="$MOTIF_LIBS -lXm"],,
2557                     [#include <stdlib.h>
2558                      #include <stdio.h>
2559                      #include <X11/Intrinsic.h>])
2560 fi
2561
2562
2563 if test "$have_motif" = yes; then
2564   AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)],,
2565                     [#include <stdlib.h>
2566                      #include <stdio.h>
2567                      #include <X11/Intrinsic.h>])
2568 fi
2569
2570
2571 ###############################################################################
2572 #
2573 #       Checking whether Motif is really Lesstif.
2574 #
2575 ###############################################################################
2576
2577 have_lesstif=no
2578 if test "$have_motif" = yes ; then
2579   AC_CACHE_CHECK([whether Motif is really LessTif], 
2580                  ac_cv_have_lesstif,
2581                  [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
2582                                    [long vers = LesstifVersion;],
2583                                    [ac_cv_have_lesstif=yes],
2584                                    [ac_cv_have_lesstif=no])])
2585   have_lesstif=$ac_cv_have_lesstif
2586 fi
2587
2588
2589 lesstif_version=unknown
2590 lesstif_version_string=unknown
2591
2592 if test "$have_lesstif" = yes ; then
2593   ltv=unknown
2594   echo unknown > conftest-lt
2595   AC_CACHE_CHECK([LessTif version number],
2596                  ac_cv_lesstif_version_string,
2597       [AC_TRY_X_RUN([#include <stdio.h>
2598                      #include <Xm/Xm.h>
2599                      int main() {
2600                        FILE *f = fopen("conftest-lt", "w");
2601                        if (!f) exit(1);
2602                        fprintf(f, "%d %d.%d\n", LesstifVersion,
2603                           LESSTIF_VERSION, LESSTIF_REVISION);
2604                        fclose(f);
2605                        exit(0);
2606                      }],
2607                     [ltv=`cat conftest-lt`
2608                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
2609                      ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
2610                     [ac_cv_lesstif_version=unknown
2611                      ac_cv_lesstif_version_string=unknown],
2612                     [ac_cv_lesstif_version=unknown
2613                      ac_cv_lesstif_version_string=unknown])])
2614   rm -f conftest-lt
2615   lesstif_version=$ac_cv_lesstif_version
2616   lesstif_version_string=$ac_cv_lesstif_version_string
2617
2618 fi
2619
2620
2621 if test "$have_motif" = yes ; then
2622   mtv=unknown
2623   echo unknown > conftest-mt
2624   AC_CACHE_CHECK([Motif version number],
2625                  ac_cv_motif_version_string,
2626       [AC_TRY_X_RUN([#include <stdio.h>
2627                      #include <Xm/Xm.h>
2628                      int main() {
2629                        FILE *f = fopen("conftest-mt", "w");
2630                        if (!f) exit(1);
2631                        fprintf(f, "%d %d.%d\n", XmVersion,
2632                           XmVERSION, XmREVISION);
2633                        fclose(f);
2634                        exit(0);
2635                      }],
2636                     [mtv=`cat conftest-mt`
2637                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
2638                      ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
2639                     [ac_cv_motif_version=unknown
2640                      ac_cv_motif_version_string=unknown],
2641                     [ac_cv_motif_version=unknown
2642                      ac_cv_motif_version_string=unknown])])
2643   rm -f conftest-mt
2644   motif_version=$ac_cv_motif_version
2645   motif_version_string=$ac_cv_motif_version_string
2646
2647 fi
2648
2649
2650 ###############################################################################
2651 #
2652 #       Checking whether Motif requires -lXpm.
2653 #
2654 #       If this is Motif 2.x, and we have XPM, then link against XPM as well.
2655 #       The deal is, Motif 2.x requires XPM -- but it's a compilation option
2656 #       of the library whether to build the XPM code into libXm, or whether
2657 #       to rely on an external libXm.  So the only way to tell whether XPM is
2658 #       a link-time requirement is to examine libXm.a, which is very
2659 #       difficult to do in an autoconf script.  So... if it's Motif 2.x, we
2660 #       always link against XPM if the XPM lib exists (and this will be a
2661 #       no-op if libXm happens to already have the XPM code in it.)
2662 #
2663 ###############################################################################
2664
2665 motif_requires_xpm=no
2666 if test "$have_motif" = yes ; then
2667    AC_MSG_CHECKING(whether Motif requires XPM)
2668    if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000
2669    then
2670      motif_requires_xpm=yes
2671      AC_MSG_RESULT(maybe)
2672    else
2673      AC_MSG_RESULT(no)
2674    fi
2675 fi
2676
2677
2678 ###############################################################################
2679 #
2680 #       Checking whether Motif requires -lXp.
2681 #
2682 #       Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
2683 #       Extension".   Why this extension isn't in -lXext with all the others,
2684 #       I have no idea.
2685 #
2686 ###############################################################################
2687
2688 have_xp_ext=no
2689 if test "$have_motif" = yes ; then
2690    have_xp_ext=no
2691    AC_CHECK_X_LIB(Xp, XpQueryExtension,
2692                   [have_xp_ext=yes; MOTIF_LIBS="$MOTIF_LIBS -lXp"],
2693                   [true], -lX11 -lXext -lm)
2694 fi
2695
2696
2697 ###############################################################################
2698 #
2699 #       Checking whether Motif requires -lXintl (for _Xsetlocale.)
2700 #
2701 ###############################################################################
2702
2703 have_xintl=no
2704 if test "$have_motif" = yes ; then
2705   AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
2706                  -lX11 -lXext -lm)
2707   if test "$have_xintl" = yes; then
2708     MOTIF_LIBS="$MOTIF_LIBS -lXintl"
2709   fi
2710 fi
2711
2712
2713 ###############################################################################
2714 #
2715 #       Check for -lGL or -lMesaGL.
2716 #
2717 ###############################################################################
2718
2719 have_gl=no
2720 ac_have_mesa_gl=no
2721 with_gl_req=unspecified
2722 gl_halfassed=no
2723 AC_ARG_WITH(gl,[
2724 Graphics options:
2725
2726   --with-gl               Build those demos which depend on OpenGL.],
2727   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
2728
2729 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
2730
2731 ac_mesagl_version=unknown
2732 ac_mesagl_version_string=unknown
2733
2734 if test "$with_gl" = yes; then
2735   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
2736   if test "$have_gl" = yes ; then
2737     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no,
2738                       [#include <GL/gl.h>])
2739   fi
2740
2741   # If we have the headers, try and figure out which vendor it's from.
2742   #
2743   if test "$have_gl" = yes ; then
2744
2745     # We need to know whether it's MesaGL so that we know which libraries
2746     # to link against.
2747     #
2748     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
2749       [ac_cv_have_mesa_gl=no
2750        if test "$ac_macosx" = no; then
2751          # WTF! MacOS 10.5.0 ships the Mesa GL headers!
2752          # It's not really Mesa, is it?
2753          AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
2754        fi])
2755     ac_have_mesa_gl=$ac_cv_have_mesa_gl
2756
2757     gl_lib_1=""
2758     GL_LIBS=""
2759
2760     if test "$ac_macosx" = yes; then
2761
2762       # Without these, every link against libGL gets a bunch of useless
2763       # warnings.
2764       #
2765       osx_crud="-bind_at_load -multiply_defined suppress"
2766       AC_MSG_RESULT(adding "$osx_crud" to GL_LIBS)
2767       GL_LIBS="$GL_LIBS $osx_crud"
2768       unset osx_crud
2769
2770       # New lossage in 10.5.0: without this, we get:
2771       #   ld: cycle in dylib re-exports with /usr/X11/lib/libGL.dylib
2772       #
2773       osx_crud="/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib"
2774       osx_crud="-Wl,-dylib_file,${osx_crud}:${osx_crud}"
2775
2776       AC_MSG_RESULT(adding "$osx_crud" to GL_LIBS)
2777       GL_LIBS="$GL_LIBS $osx_crud"
2778       unset osx_crud
2779     fi
2780
2781
2782     # Some versions of MesaGL are compiled to require -lpthread.
2783     # So if the Mesa headers exist, and -lpthread exists, then always
2784     # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
2785     #
2786     if test "$ac_have_mesa_gl" = yes; then
2787       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
2788     fi
2789
2790
2791     # If we have Mesa headers, check to see if we can link against -lMesaGL.
2792     # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
2793     # Else, warn that GL is busted.  (We have the headers, but no libs.)
2794     #
2795
2796     if test "$ac_have_mesa_gl" = yes ; then
2797       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
2798                      [gl_lib_1="MesaGL"
2799                       GL_LIBS="-lMesaGL -lMesaGLU $VIDMODE_LIBS $GL_LIBS"],
2800                      [], -lMesaGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm)
2801     fi
2802
2803     if test "$gl_lib_1" = "" ; then
2804       AC_CHECK_X_LIB(GL, glXCreateContext, 
2805                      [gl_lib_1="GL"
2806                       GL_LIBS="-lGL -lGLU $VIDMODE_LIBS $GL_LIBS"],
2807                      [], -lGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm)
2808     fi
2809
2810     if test "$gl_lib_1" = "" ; then
2811       # we have headers, but no libs -- bail.
2812       have_gl=no
2813       ac_have_mesa_gl=no
2814       gl_halfassed=yes
2815     else
2816       # linking works -- we can build the GL hacks.
2817       AC_DEFINE(HAVE_GL)
2818       if test "$ac_have_mesa_gl" = yes ; then
2819         AC_DEFINE(HAVE_MESA_GL)
2820       fi
2821     fi
2822   fi
2823
2824
2825   # Now that we know we have GL headers and libs, do some more GL testing.
2826   #
2827
2828   if test "$have_gl" = yes ; then
2829     # If it's MesaGL, we'd like to issue a warning if the version number
2830     # is less than or equal to 2.6, because that version had a security bug.
2831     #
2832     if test "$ac_have_mesa_gl" = yes; then
2833
2834       AC_CACHE_CHECK([MesaGL version number], ac_cv_mesagl_version_string,
2835         [cat > conftest.$ac_ext <<EOF
2836 #line __oline__ "configure"
2837 #include "confdefs.h"
2838 #include <GL/gl.h>
2839 #ifndef MESA_MAJOR_VERSION
2840 # include <GL/xmesa.h>
2841 # ifdef XMESA_MAJOR_VERSION
2842    /* Around Mesa 3.2, they took out the Mesa version number, so instead,
2843       we have to check the XMesa version number (the number of the X protocol
2844       support, which seems to be the same as the Mesa version number.)
2845     */
2846 #  define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
2847 #  define MESA_MINOR_VERSION XMESA_MINOR_VERSION
2848 # else
2849    /* Oh great.  Some time after 3.4, they took out the xmesa.h header file,
2850       so we have no way of telling what version of Mesa this is at all.
2851       So, we'll guess that the osmesa version (the "offscreen protocol")
2852       is less than or equal to the real mesa version number.  Except that
2853       if OSmesa is 3.3, assume at least Mesa 3.4, since OSmesa was 3.3 in
2854       Mesa 3.4.  And Mesa 3.3 had xmesa.h.  What a complete load of shit!
2855     */
2856 # include <GL/osmesa.h>
2857 #  define MESA_MAJOR_VERSION OSMESA_MAJOR_VERSION
2858 #  define MESA_MINOR_VERSION OSMESA_MINOR_VERSION or newer, probably?
2859 #  if OSMESA_MAJOR_VERSION == 3 && OSMESA_MINOR_VERSION == 3
2860 #   undef MESA_MINOR_VERSION
2861 #   define MESA_MINOR_VERSION 4 or newer, probably?
2862 #  endif
2863 # endif
2864 #endif
2865 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
2866 EOF
2867
2868          ac_save_CPPFLAGS="$CPPFLAGS"
2869          if test \! -z "$includedir" ; then 
2870            CPPFLAGS="$CPPFLAGS -I$includedir"
2871          fi
2872          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2873
2874          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | grep configure:`
2875
2876          # M4 sucks!!
2877          changequote(X,Y)
2878           mglv=`echo "$mglv" | sed -n \
2879              's/^configure: *\([0-9][0-9]*\)  *\([0-9].*\)$/\1.\2/p'`
2880          changequote([,])
2881
2882          rm -f conftest.$ac_ext
2883
2884          CPPFLAGS="$ac_save_CPPFLAGS"
2885
2886          if test "$mglv" = ""; then
2887            ac_mesagl_version=unknown
2888            ac_mesagl_version_string=unknown
2889          else
2890            ac_mesagl_version_string="$mglv"
2891            # M4 sucks!!
2892            changequote(X,Y)
2893            maj=`echo "$mglv" | sed -n 's/^\([0-9][0-9]*\)\..*$/\1/p'`
2894            min=`echo "$mglv" | sed -n 's/^.*\.\([0-9][0-9]*\).*$/\1/p'`
2895            changequote([,])
2896            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
2897            if test -z "$ac_mesagl_version"; then
2898              ac_mesagl_version=unknown
2899              ac_mesagl_version_string=unknown
2900            fi
2901          fi
2902          ac_cv_mesagl_version=$ac_mesagl_version
2903          ac_cv_mesagl_version_string=$ac_mesagl_version_string
2904       ])
2905       ac_mesagl_version=$ac_cv_mesagl_version
2906       ac_mesagl_version_string=$ac_cv_mesagl_version_string
2907     fi
2908
2909
2910     # Check for OpenGL 1.1 features.
2911     #
2912     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
2913                    [true], $GL_LIBS -lX11 -lXext -lm)
2914   fi
2915
2916 elif test "$with_gl" != no; then
2917   echo "error: must be yes or no: --with-gl=$with_gl"
2918   exit 1
2919 fi
2920
2921
2922 ###############################################################################
2923 #
2924 #       Check for -lgle.
2925 #
2926 ###############################################################################
2927
2928 have_gle=no
2929 with_gle_req=unspecified
2930 gle_halfassed=no
2931 AC_ARG_WITH(gle,
2932 [  --with-gle              Build those demos which depend on GLE
2933                           (the OpenGL "extrusion" library.)],
2934   [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
2935
2936 HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
2937
2938 GLE_LIBS=""
2939
2940 if test "$have_gl" = no ; then
2941  true
2942 elif test "$with_gle" = yes; then
2943
2944   AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no,
2945                     [#include <GL/gl.h>])
2946   if test "$have_gle3" = yes ; then
2947     have_gle=yes;
2948   else
2949     AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no,
2950                     [#include <GL/gl.h>])
2951     if test "$have_gle" = yes ; then
2952       AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no,
2953                         [#include <GL/gl.h>])
2954     fi
2955   fi
2956
2957   if test "$have_gle" = yes ; then
2958     have_gle=no
2959     gle_halfassed=yes
2960     AC_CHECK_X_LIB(gle, gleCreateGC, 
2961                    [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
2962                    [], $GL_LIBS -lX11 -lXext -lm)
2963   fi
2964   if test "$have_gle" = yes ; then
2965     have_gle=no
2966     gle_halfassed=yes
2967
2968     # sometimes the libmatrix stuff is included in libgle.  look there first.
2969 #
2970 # I don't get it.  For some reason, this test passes on SGI, as if
2971 # uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
2972 # Yet the link is succeeding.  Why???
2973 #
2974 #    AC_CHECK_X_LIB(gle, uview_direction_d, 
2975 #                   [have_gle=yes; gle_halfassed=no],
2976 #                   [], $GL_LIBS -lX11 -lXext -lm)
2977
2978     # As of GLE 3 this is in libgle, and has changed name to uview_direction!
2979     # *sigh*
2980     if test "$have_gle3" = yes ; then
2981       AC_CHECK_X_LIB(gle, uview_direction, 
2982                      [have_gle=yes; gle_halfassed=no],
2983                     [], $GL_LIBS -lX11 -lXext -lm)
2984     fi
2985     # if it wasn't in libgle, then look in libmatrix.
2986     if test "$have_gle" = no ; then
2987       AC_CHECK_X_LIB(matrix, uview_direction_d, 
2988                      [have_gle=yes; gle_halfassed=no;
2989                       GLE_LIBS="$GLE_LIBS -lmatrix"],
2990                     [], $GL_LIBS -lX11 -lXext -lm)
2991     fi
2992   fi
2993
2994   if test "$have_gle" = yes ; then
2995     AC_DEFINE(HAVE_GLE)
2996     if test "$have_gle3" = yes ; then
2997       AC_DEFINE(HAVE_GLE3)
2998     fi
2999   fi
3000
3001 elif test "$with_gle" != no; then
3002   echo "error: must be yes or no: --with-gle=$with_gle"
3003   exit 1
3004
3005 fi
3006
3007
3008 ###############################################################################
3009 #
3010 #       Check for -lgdk_pixbuf.
3011 #       These tests are for gdk_pixbuf usage of the hacks, 
3012 #       not xscreensaver-demo (thus we have to test again to get
3013 #       the libraries right: don't want to pull in all of GTK
3014 #       for the hacks.)
3015 #
3016 ###############################################################################
3017
3018 have_gdk_pixbuf=no
3019 with_gdk_pixbuf_req=unspecified
3020 AC_ARG_WITH(pixbuf,
3021 [  --with-pixbuf           Include support for the GDK-Pixbuf library in some
3022                           demos, which will make it possible for them to read
3023                           GIF, JPEG, and PNG files as well.],
3024   [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
3025   [with_gdk_pixbuf=yes])
3026
3027 # if --with-pixbuf=/directory/ was specified, remember that directory so that
3028 # we can also look for the `gdk-pixbuf-config' program in that directory.
3029 case "$with_gdk_pixbuf" in
3030   /*)
3031     gdk_pixbuf_dir="$with_gdk_pixbuf"
3032     ;;
3033   *)
3034     gdk_pixbuf_dir=""
3035     ;;
3036 esac
3037
3038 HANDLE_X_PATH_ARG(with_gdk_pixbuf, --with-pixbuf, GDK_PIXBUF)
3039
3040 if test "$with_gdk_pixbuf" != yes -a "$with_gdk_pixbuf" != no ; then
3041   echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf"
3042   exit 1
3043 fi
3044
3045 if test "$with_gdk_pixbuf" = yes; then
3046   have_gdk_pixbuf=no
3047
3048   pkgs=''
3049   ok="yes"
3050
3051   pkg_check_version gdk-pixbuf-2.0      2.0.0
3052   pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
3053   have_gdk_pixbuf="$ok"
3054
3055   if test "$have_gdk_pixbuf" = yes; then
3056     AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
3057                [ac_cv_gdk_pixbuf_config_cflags=`$pkg_config --cflags $pkgs`])
3058     AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
3059                [ac_cv_gdk_pixbuf_config_libs=`$pkg_config --libs $pkgs`])
3060   fi
3061
3062   ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
3063   ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
3064
3065
3066   if test "$have_gdk_pixbuf" = yes; then
3067     #
3068     # we appear to have pixbuf; check for headers/libs to be sure.
3069     #
3070     ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
3071     CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
3072
3073     have_gdk_pixbuf=no
3074
3075     # check for header A...
3076     AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
3077
3078     # if that worked, check for header B...
3079     if test "$have_gdk_pixbuf" = yes; then
3080       have_gdk_pixbuf=no
3081       gdk_pixbuf_halfassed=yes
3082       AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h,
3083                         [have_gdk_pixbuf=yes
3084                          gdk_pixbuf_halfassed=no])
3085
3086       # yay, it has a new name in Gtk 2.x...
3087       if test "$have_gdk_pixbuf" = no; then
3088         have_gdk_pixbuf=no
3089         gdk_pixbuf_halfassed=yes
3090         AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h,
3091                           [have_gdk_pixbuf=yes
3092                            gdk_pixbuf_halfassed=no])
3093       fi
3094     fi
3095     CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
3096   fi
3097
3098   if test "$have_gdk_pixbuf" = yes; then
3099     # we have the headers, now check for the libraries
3100     have_gdk_pixbuf=no
3101     gdk_pixbuf_halfassed=yes
3102
3103     AC_MSG_RESULT(checking for gdk_pixbuf usability...)
3104
3105     # library A...
3106     AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
3107                    $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
3108     # library B...
3109     if test "$have_gdk_pixbuf" = yes; then
3110       have_gdk_pixbuf=no
3111       AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
3112                      [have_gdk_pixbuf=yes
3113                       gdk_pixbuf_halfassed=no],,
3114                      $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
3115     fi
3116   fi
3117
3118   if test "$have_gdk_pixbuf" = yes; then
3119     INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags"
3120     XPM_LIBS="$ac_gdk_pixbuf_config_libs"
3121     AC_DEFINE(HAVE_GDK_PIXBUF)
3122   else
3123     AC_MSG_RESULT(checking for gdk_pixbuf usability... no)
3124   fi
3125
3126   if test "$have_gdk_pixbuf" = yes; then
3127     AC_CHECK_X_LIB(c, gdk_pixbuf_apply_embedded_orientation,
3128                      [AC_DEFINE(HAVE_GDK_PIXBUF_APPLY_EMBEDDED_ORIENTATION)],,
3129                      $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
3130   fi
3131 fi
3132
3133
3134 ###############################################################################
3135 #
3136 #       Check for -lXpm.
3137 #
3138 ###############################################################################
3139
3140 have_xpm=no
3141 with_xpm_req=unspecified
3142 AC_ARG_WITH(xpm,
3143 [  --with-xpm              Include support for XPM files in some demos.
3144                           (Not needed if Pixbuf is used.)],
3145   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
3146
3147 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
3148
3149 if test "$with_xpm" = yes; then
3150   AC_CHECK_X_HEADER(X11/xpm.h,
3151                    [have_xpm=yes
3152                     AC_DEFINE(HAVE_XPM)
3153                     XPM_LIBS="-lXpm $XPM_LIBS"],,
3154                     [#include <X11/Xlib.h>])
3155 elif test "$with_xpm" != no; then
3156   echo "error: must be yes or no: --with-xpm=$with_xpm"
3157   exit 1
3158 fi
3159
3160 # See comment near $motif_requires_xpm, above.
3161 # Need to do this here, after both Motif and XPM have been checked for.
3162 #
3163 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
3164   if test "$motif_requires_xpm" = yes ; then
3165     MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
3166   fi
3167 fi
3168
3169 if test "$XPM_LIBS" = "" ; then
3170   XPM_LIBS=$(MINIXPM)
3171 fi
3172
3173
3174 ###############################################################################
3175 #
3176 #       Check for -ljpeg
3177 #
3178 ###############################################################################
3179
3180 have_jpeg=no
3181 with_jpeg_req=unspecified
3182 jpeg_halfassed=no
3183 AC_ARG_WITH(jpeg,
3184 [  --with-jpeg             Include support for the JPEG library.],
3185   [with_jpeg="$withval"; with_jpeg_req="$withval"],
3186   [with_jpeg=yes])
3187
3188 HANDLE_X_PATH_ARG(with_jpeg, --with-jpeg, JPEG)
3189
3190 if test "$with_jpeg" != yes -a "$with_jpeg" != no ; then
3191   echo "error: must be yes or no: --with-jpeg=$with_jpeg"
3192   exit 1
3193 fi
3194
3195 if test "$with_jpeg" = yes; then
3196
3197   have_jpeg=no
3198   AC_CHECK_X_HEADER(jpeglib.h, [have_jpeg=yes])
3199
3200   if test "$have_jpeg" = yes; then
3201     # we have the header, now check for the library
3202     have_jpeg=no
3203     jpeg_halfassed=yes
3204     AC_CHECK_X_LIB(jpeg, jpeg_start_compress,
3205                    [have_jpeg=yes
3206                     jpeg_halfassed=no
3207                     JPEG_LIBS="-ljpeg"
3208                     AC_DEFINE(HAVE_JPEGLIB)])
3209   fi
3210 fi
3211
3212
3213 ###############################################################################
3214 #
3215 #       Check for pty support: this allows 'phosphor' and 'apple2'
3216 #       to run curses-based programs, or be used as terminal windows.
3217 #
3218 ###############################################################################
3219
3220 PTY_LIBS=
3221 AC_CHECK_HEADERS(pty.h util.h)
3222 AC_CHECK_X_LIB(util, forkpty,
3223                [PTY_LIBS="-lutil"
3224                 ac_have_forkpty=yes
3225                 AC_DEFINE(HAVE_FORKPTY)])
3226
3227 if test "$ac_have_forkpty" != yes ; then
3228   # we don't need (or have) -lutil on MacOS 10.4.2...
3229   AC_CHECK_X_LIB(c, forkpty,
3230                  [PTY_LIBS=""
3231                   AC_DEFINE(HAVE_FORKPTY)])
3232 fi
3233
3234 ###############################################################################
3235 #
3236 #       Check for the XSHM server extension.
3237 #
3238 ###############################################################################
3239
3240 have_xshm=no
3241 with_xshm_req=unspecified
3242 AC_ARG_WITH(xshm-ext,
3243 [  --with-xshm-ext         Include support for the Shared Memory extension.],
3244   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
3245
3246 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
3247
3248 if test "$with_xshm" = yes; then
3249
3250   # first check for Xshm.h.
3251   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes],,
3252                     [#include <X11/Xlib.h>])
3253
3254   # if that succeeded, then check for sys/ipc.h.
3255   if test "$have_xshm" = yes; then
3256     have_xshm=no
3257     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
3258   fi
3259
3260   # if that succeeded, then check for sys/shm.h.
3261   if test "$have_xshm" = yes; then
3262     have_xshm=no
3263     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
3264   fi
3265
3266   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
3267   # to exist, but the library code to not exist.  And even better, the library
3268   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
3269   # lib doesn't exist, give up.  (This lib gets added to X_EXTRA_LIBS, and
3270   # that's not quite right, but close enough.)
3271   #
3272   case "$host" in
3273     *-aix*)
3274       if [ `uname -v` -eq 3 ]; then
3275         have_xshm=no
3276         AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
3277                        [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
3278                        [true], -lX11 -lXext -lm)
3279       fi
3280     ;;
3281   esac
3282
3283   # if that succeeded, then we've really got it.
3284   if test "$have_xshm" = yes; then
3285     AC_DEFINE(HAVE_XSHM_EXTENSION)
3286   fi
3287
3288 elif test "$with_xshm" != no; then
3289   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
3290   exit 1
3291 fi
3292
3293
3294 ###############################################################################
3295 #
3296 #       Check for the DOUBLE-BUFFER server extension.
3297 #
3298 ###############################################################################
3299
3300 have_xdbe=no
3301 with_xdbe_req=unspecified
3302 AC_ARG_WITH(xdbe-ext,
3303 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.],
3304   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
3305
3306 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
3307
3308 if test "$with_xdbe" = yes; then
3309
3310   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes],,
3311                     [#include <X11/Xlib.h>])
3312   if test "$have_xdbe" = yes; then
3313     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
3314   fi
3315
3316 elif test "$with_xdbe" != no; then
3317   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
3318   exit 1
3319 fi
3320
3321
3322 ###############################################################################
3323 #
3324 #       Check for the SGI XReadDisplay server extension.
3325 #
3326 #       Note: this has to be down here, rather than up with the other server
3327 #       extension tests, so that the output of `configure --help' is in the
3328 #       right order.  Arrgh!
3329 #
3330 ###############################################################################
3331
3332 have_readdisplay=no
3333 with_readdisplay_req=unspecified
3334 AC_ARG_WITH(readdisplay,
3335 [  --with-readdisplay      Include support for the XReadDisplay extension.],
3336   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
3337   [with_readdisplay=yes])
3338
3339 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
3340
3341 if test "$with_readdisplay" = yes; then
3342   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
3343                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION),,
3344                     [#include <X11/Xlib.h>])
3345 elif test "$with_readdisplay" != no; then
3346   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
3347   exit 1
3348 fi
3349
3350
3351 ###############################################################################
3352 #
3353 #       Check for a directory full of images to use as the default value
3354 #       of the "imageDirectory" preference.
3355 #
3356 ###############################################################################
3357
3358 have_imagedir=no
3359 with_imagedir_req=unspecified
3360
3361 AC_ARG_WITH(image-directory,
3362 [  --with-image-directory=DIR  By default, some demos may display random images
3363                           from this directory.],
3364   [with_imagedir="$withval"; with_imagedir_req="$withval"],
3365   [with_imagedir=yes])
3366 # no HANDLE_X_PATH_ARG for this one
3367
3368 case "$with_imagedir" in
3369   /*)
3370     # absolute path
3371     AC_MSG_CHECKING([for image directory $with_imagedir])
3372     if test -d "$with_imagedir" ; then
3373       AC_MSG_RESULT(yes)
3374     else
3375       AC_MSG_RESULT(no)
3376       with_imagedir=""
3377     fi
3378   ;;
3379   yes)
3380     with_imagedir=""
3381
3382     #### Could use some more defaults here...
3383     for dd in \
3384       "/usr/share/backgrounds/images/"          \
3385       "/usr/share/wallpapers/"                  \
3386       "/Library/Desktop Pictures/"              \
3387     ; do
3388       if test -z "$with_imagedir"; then
3389         AC_MSG_CHECKING([for image directory $dd])
3390         if test -d "$dd" ; then
3391           AC_MSG_RESULT(yes)
3392           with_imagedir="$dd"
3393         else
3394           AC_MSG_RESULT(no)
3395         fi
3396       fi
3397     done
3398
3399   ;;
3400   no)
3401     with_imagedir=""
3402   ;;
3403
3404   *)
3405     echo "error: must be an absolute path: --with-image-directory=$with_imagedir_req"
3406     exit 1
3407   ;;
3408 esac
3409 ac_cv_imagedir="$with_imagedir"
3410
3411 DEFAULT_IMAGES_P='True'
3412 DEFAULT_IMAGE_DIRECTORY="$ac_cv_imagedir"
3413
3414 if test -z "$DEFAULT_IMAGE_DIRECTORY" ; then
3415   DEFAULT_IMAGES_P='False'
3416 fi
3417
3418
3419 ###############################################################################
3420 #
3421 #       Pick a text file to use as the default of the "textFile" preference.
3422 #       Any old file will do, but preferably one that will make interesting
3423 #       shapes when displayed by "starwars" and "fontglide".
3424 #
3425 ###############################################################################
3426
3427 have_textfile=no
3428 with_textfile_req=unspecified
3429
3430 AC_ARG_WITH(text-file,
3431 [  --with-text-file=FILE   By default, some demos may display this file.],
3432   [with_textfile="$withval"; with_textfile_req="$withval"],
3433   [with_textfile=yes])
3434 # no HANDLE_X_PATH_ARG for this one
3435
3436 case "$with_textfile" in
3437   /*)
3438     # absolute path
3439     AC_MSG_CHECKING([for text file $with_textfile])
3440     if test -f "$with_textfile" ; then
3441       AC_MSG_RESULT(yes)
3442     else
3443       AC_MSG_RESULT(no)
3444       with_textfile=""
3445     fi
3446   ;;
3447   yes)
3448     with_textfile=""
3449
3450     #### Could use some more defaults here...
3451     for f in \
3452       "/usr/X11R6/lib/X11/doc/README"              \
3453       "/usr/share/doc/xserver-common/copyright"    \
3454       "/usr/share/doc/xserver-xorg-core/copyright" \
3455       "/usr/X11R6/README"                          \
3456       "/usr/share/doc/debian/debian-manifesto"     \
3457     ; do
3458       if test -z "$with_textfile"; then
3459         AC_MSG_CHECKING([for text file $f])
3460         if test -f "$f" ; then
3461           AC_MSG_RESULT(yes)
3462           with_textfile="$f"
3463         else
3464           AC_MSG_RESULT(no)
3465         fi
3466       fi
3467     done
3468
3469   ;;
3470   no)
3471     with_textfile=""
3472   ;;
3473
3474   *)
3475     echo "error: must be an absolute path: --with-text-file=$with_textfile_req"
3476     exit 1
3477   ;;
3478 esac
3479 ac_cv_textfile="$with_textfile"
3480
3481 DEFAULT_TEXT_FILE="$ac_cv_textfile"
3482
3483
3484 ###############################################################################
3485 #
3486 #       Check the browser to see help URL
3487 #
3488 ###############################################################################
3489
3490 have_browser=no
3491 with_browser_req=unspecified
3492
3493 AC_ARG_WITH(browser,
3494 [  --with-browser=BROWSER   Specify the browser to show help URL.],
3495   [with_browser="$withval"; with_browser_req="$withval"],
3496   [with_browser=no ])
3497 # no HANDLE_X_PATH_ARG for this one
3498
3499 case "$with_browser" in
3500   no )
3501   ;;
3502   * )
3503     WITH_BROWSER=$with_browser
3504     gnome_open_program=$with_browser
3505     AC_MSG_CHECKING([for browser $with_browser])
3506     with_browser_fullpath=`which $with_browser 2>/dev/null`
3507     case $with_browser_fullpath in
3508          /* )
3509                 AC_MSG_RESULT(yes)
3510                  have_browser=yes
3511                  ;;
3512         * )
3513                AC_MSG_RESULT(no)
3514 # Only warning: we don't want to install all packages for the 
3515 # dependency of the browser in building stage...
3516                echo "WARNING: browser not found: --with-browser=$with_browser"
3517                ;;
3518     esac
3519   ;;
3520 esac
3521 ac_cv_browser="$with_browser"
3522
3523 ###############################################################################
3524 #
3525 #       Check whether it's ok to install some hacks as setuid (e.g., "sonar")
3526 #       This should be safe, but let's give people the option.
3527 #
3528 ###############################################################################
3529
3530 setuid_hacks_default=no
3531 setuid_hacks="$setuid_hacks_default"
3532 AC_ARG_WITH(setuid-hacks,
3533 [  --with-setuid-hacks     Allow some demos to be installed `setuid root'
3534                           (which is needed in order to ping other hosts.)
3535 ],
3536   [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"])
3537
3538 HANDLE_X_PATH_ARG(setuid_hacks, --with-setuid-hacks, setuid hacks)
3539
3540 if test "$setuid_hacks" = yes; then
3541   true
3542 elif test "$setuid_hacks" != no; then
3543   echo "error: must be yes or no: --with-setuid-hacks=$setuid_hacks"
3544   exit 1
3545 fi
3546
3547
3548 ###############################################################################
3549 #
3550 #       Done testing.  Now, set up the various -I and -L variables,
3551 #       and decide which GUI program to build by default.
3552 #
3553 ###############################################################################
3554
3555 DEPEND=makedepend
3556 DEPEND_FLAGS=
3557 DEPEND_DEFINES=
3558
3559
3560 if test \! -z "$includedir" ; then 
3561   INCLUDES="$INCLUDES -I$includedir"
3562 fi
3563
3564 if test \! -z "$libdir" ; then
3565   LDFLAGS="$LDFLAGS -L$libdir"
3566 fi
3567
3568
3569 PREFERRED_DEMO_PROGRAM=''
3570 ALL_DEMO_PROGRAMS=
3571 if test "$have_motif" = yes; then
3572   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
3573   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3574 fi
3575 if test "$have_gtk" = yes; then
3576   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
3577   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3578 fi
3579
3580
3581 if test "$have_kerberos" = yes; then
3582   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
3583   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
3584 fi
3585 if test "$have_pam" = yes; then
3586   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
3587   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
3588   INSTALL_PAM="install-pam"
3589 fi
3590 if test "$have_passwd_helper" = yes; then
3591   PASSWD_SRCS="$PASSWD_SRCS \$(PWHELPER_SRCS)"
3592   PASSWD_OBJS="$PASSWD_OBJS \$(PWHELPER_OBJS)"
3593 fi
3594   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
3595   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
3596
3597
3598 if test "$enable_locking" = yes; then
3599   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
3600   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
3601 else
3602   LOCK_SRCS='$(NOLOCK_SRCS_1)'
3603   LOCK_OBJS='$(NOLOCK_OBJS_1)'
3604 fi
3605
3606 if test "$ac_macosx" = yes; then
3607   EXES_OSX='$(EXES_OSX)'
3608   SCRIPTS_OSX='$(SCRIPTS_OSX)'
3609   MEN_OSX='$(MEN_OSX)'
3610 else
3611   EXES_OSX=
3612   SCRIPTS_OSX=
3613   MEN_OSX=
3614 fi
3615
3616
3617 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
3618
3619 if test "$need_setuid" = yes; then
3620   NEED_SETUID=yes
3621 else
3622   NEED_SETUID=no
3623 fi
3624
3625 if test "$setuid_hacks" = yes; then
3626   SETUID_HACKS=yes
3627 else
3628   SETUID_HACKS=no
3629 fi
3630
3631 tab='   '
3632 if test "$have_gl" = yes; then
3633   GL_EXES='$(GL_EXES)'
3634   SUID_EXES='$(SUID_EXES)'
3635   RETIRED_GL_EXES='$(RETIRED_GL_EXES)'
3636   GL_UTIL_EXES='$(GL_UTIL_EXES)'
3637   GL_MEN='$(GL_MEN)'
3638   GL_KLUDGE=" "
3639 else
3640   GL_KLUDGE="-"
3641 fi
3642
3643 if test "$have_gle" = yes; then
3644   GLE_EXES='$(GLE_EXES)'
3645   GLE_KLUDGE=" "
3646 else
3647   GLE_KLUDGE="-"
3648 fi
3649
3650 if test "$have_jpeg" = yes -a "$have_gdk_pixbuf" = yes; then
3651  JPEG_EXES='$(JPEG_EXES)'
3652 fi
3653
3654
3655 # Another substitution in the XScreenSaver.ad.in file:
3656 #
3657 if test "$gnome_open_program" != ''; then
3658   GNOME24=''
3659   GNOME22='!    '
3660   NOGNOME='!    '
3661 elif test "$gnome_url_show_program" != ''; then
3662   GNOME24='!    '
3663   GNOME22=''
3664   NOGNOME='!    '
3665 else
3666   GNOME24='!    '
3667   GNOME22='!    '
3668   NOGNOME=''
3669 fi
3670
3671
3672 # Set PO_DATADIR to something sensible.
3673 #
3674 AC_MSG_CHECKING([for locale directory])
3675 if test -n "$GTK_DATADIR" ; then
3676   PO_DATADIR="$GTK_DATADIR"
3677 elif test "$have_gtk" = yes; then
3678   PO_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
3679   PO_DATADIR="$PO_DATADIR/share"
3680 fi
3681
3682 if test -z "$PO_DATADIR" ; then
3683   #
3684   # #### Total fucking kludge --
3685   # Map /build/prefix/usr/X11R6/share/ to /build/prefix/usr/share/
3686   # but of course we need to expand all the nested variables to do that...
3687   #
3688   dd=`eval eval eval eval eval eval eval eval eval eval eval echo $datadir`
3689   PO_DATADIR=`echo $dd | sed 's@/X11R6/@/@'`
3690 fi
3691
3692 AC_MSG_RESULT($PO_DATADIR/locale)
3693
3694
3695 # canonicalize slashes.
3696 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
3697
3698 # gcc 3.0 likes to issue this warning for every file:
3699 #
3700 # cc1: warning: changing search order for system directory "/usr/local/include"
3701 # cc1: warning:   as it has already been specified as a non-system directory
3702 #
3703 # Yay.  We can only avoid that by deleting "-I${prefix}/include" from the list.
3704 # Which *should* be totally redundant, and thus an ok thing to delete?
3705 #
3706 INCLUDES=`echo "$INCLUDES" | sed 's@ -I${prefix}/include@@g;'`
3707
3708
3709 ###############################################################################
3710 #
3711 #       Perform substitutions and write Makefiles.
3712 #
3713 ###############################################################################
3714
3715 AC_SUBST(INCLUDES)
3716
3717 AC_SUBST(PREFERRED_DEMO_PROGRAM)
3718 AC_SUBST(ALL_DEMO_PROGRAMS)
3719 AC_SUBST(SAVER_LIBS)
3720 AC_SUBST(MOTIF_LIBS)
3721 AC_SUBST(GTK_LIBS)
3722 AC_SUBST(XML_LIBS)
3723 AC_SUBST(JPEG_LIBS)
3724 AC_SUBST(HACK_LIBS)
3725 AC_SUBST(XPM_LIBS)
3726 AC_SUBST(PTY_LIBS)
3727 AC_SUBST(GL_LIBS)
3728 AC_SUBST(DBUS_LIBS)
3729 AC_SUBST(GLE_LIBS)
3730 AC_SUBST(XDPMS_LIBS)
3731 AC_SUBST(XINERAMA_LIBS)
3732 AC_SUBST(PASSWD_LIBS)
3733 AC_SUBST(INSTALL_SETUID)
3734 AC_SUBST(SETUID_HACKS)
3735 AC_SUBST(INSTALL_DIRS)
3736 AC_SUBST(NEED_SETUID)
3737 AC_SUBST(INSTALL_PAM)
3738 AC_SUBST(HAVE_PAM_FAIL_DELAY)
3739 AC_SUBST(NEW_LOGIN_COMMAND)
3740 AC_SUBST(NEW_LOGIN_COMMAND_P)
3741 AC_SUBST(DEFAULT_IMAGES_P)
3742 AC_SUBST(DEFAULT_IMAGE_DIRECTORY)
3743 AC_SUBST(DEFAULT_TEXT_FILE)
3744 AC_SUBST(WITH_BROWSER)
3745
3746 AC_SUBST(OBJCC)
3747 AC_SUBST(EXES_OSX)
3748 AC_SUBST(SCRIPTS_OSX)
3749 AC_SUBST(MEN_OSX)
3750
3751 AC_SUBST(PASSWD_SRCS)
3752 AC_SUBST(PASSWD_OBJS)
3753 AC_SUBST(XMU_SRCS)
3754 AC_SUBST(XMU_OBJS)
3755 AC_SUBST(XMU_LIBS)
3756 AC_SUBST(SAVER_GL_SRCS)
3757 AC_SUBST(SAVER_GL_OBJS)
3758 AC_SUBST(SAVER_GL_LIBS)
3759 AC_SUBST(LOCK_SRCS)
3760 AC_SUBST(LOCK_OBJS)
3761 AC_SUBST(JPEG_EXES)
3762 AC_SUBST(GL_EXES)
3763 AC_SUBST(RETIRED_GL_EXES)
3764 AC_SUBST(SUID_EXES)
3765 AC_SUBST(GL_UTIL_EXES)
3766 AC_SUBST(GL_MEN)
3767 AC_SUBST(GL_KLUDGE)
3768 AC_SUBST(GLE_EXES)
3769 AC_SUBST(GLE_KLUDGE)
3770 AC_SUBST(GNOME24)
3771 AC_SUBST(GNOME22)
3772 AC_SUBST(NOGNOME)
3773 AC_SUBST(HACKDIR)
3774 AC_SUBST(HACKDIR_FULL)
3775 AC_SUBST(GTK_DATADIR)
3776 AC_SUBST(PO_DATADIR)
3777 AC_SUBST(HACK_CONF_DIR)
3778 AC_SUBST(GTK_EXTRA_OBJS)
3779
3780 APPDEFAULTS=$ac_x_app_defaults
3781 AC_SUBST(APPDEFAULTS)
3782
3783 AC_SUBST(DEPEND)
3784 AC_SUBST(DEPEND_FLAGS)
3785 AC_SUBST(DEPEND_DEFINES)
3786 AC_SUBST(PERL)
3787
3788 AC_OUTPUT(Makefile
3789           utils/Makefile
3790           driver/Makefile
3791           hacks/Makefile
3792           hacks/glx/Makefile
3793           po/Makefile.in
3794           driver/XScreenSaver.ad)
3795
3796 ###############################################################################
3797 #
3798 #       Print some warnings at the end.
3799 #
3800 ###############################################################################
3801
3802 warn_prefix_1="    Warning:"
3803 warn_prefix_2="       Note:"
3804 warn_prefix="$warn_prefix_1"
3805
3806 warning=no
3807 warnsep='    #################################################################'
3808
3809 warnpre() {
3810   if test "$warning" = no ; then
3811     echo '' ; echo "$warnsep" ; echo ''
3812     warning=yes
3813   fi
3814 }
3815
3816 warn() {
3817   warnpre
3818   if test "$warning" = long ; then echo '' ; fi
3819   warning=yes
3820   rest="$@"
3821   echo "$warn_prefix $rest"
3822 }
3823
3824 warnL() {
3825   was=$warning
3826   warnpre
3827   warning=yes
3828   if test "$was" != no ; then echo '' ; fi
3829   rest="$@"
3830   echo "$warn_prefix $rest"
3831 }
3832
3833 warn2() {
3834   rest="$@"
3835   echo "             $rest"
3836   warning=long
3837 }
3838
3839 note() {
3840   warn_prefix="$warn_prefix_2"
3841   warn $@
3842   warn_prefix="$warn_prefix_1"
3843 }
3844
3845 noteL() {
3846   warn_prefix="$warn_prefix_2"
3847   warnL $@
3848   warn_prefix="$warn_prefix_1"
3849 }
3850
3851
3852 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
3853   warn 'The SGI saver extension was requested, but was not found.'
3854 fi
3855
3856 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
3857   warn 'The XIdle extension was requested, but was not found.'
3858 fi
3859
3860 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
3861   warn 'The XSHM extension was requested, but was not found.'
3862 fi
3863
3864 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
3865   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
3866 fi
3867
3868 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
3869   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
3870 fi
3871
3872 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
3873   warn 'The DPMS extension was requested, but was not found.'
3874 fi
3875
3876 if test "$with_xinerama_req" = yes -a "$have_xinerama" = no ; then
3877   warn 'The Xinerama extension was requested, but was not found.'
3878 fi
3879
3880 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
3881   warn 'The XF86VMODE extension was requested, but was not found.'
3882 fi
3883
3884 if test "$with_randr_req" = yes -a "$have_randr" = no ; then
3885   warn 'The RANDR extension was requested, but was not found.'
3886 fi
3887
3888 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
3889   warn "Checking of /proc/interrupts was requested, but it's bogus."
3890 fi
3891
3892 if test "$pkg_config" = false ; then
3893   warnL 'The "pkg-config" program was not found.  Without that,'
3894   warn2 "detection of the various GTK libraries won't work."
3895 else
3896   pkgerr=`$pkg_config --list-all 2>&1 >/dev/null`
3897   if test "x$pkgerr" != "x" ; then
3898     warnL 'The "pkg-config" program produces errors.  This often causes'
3899     warn2 "detection of the various GTK libraries to malfunction."
3900     warn2 "The errors are:"
3901     echo ''
3902     echo "$pkgerr" | sed 's/^/             > /g'
3903   fi
3904 fi
3905
3906 if test "$gtk_halfassed" != no ; then
3907   warnL "GTK version $gtk_halfassed was found, but at least one supporting"
3908   warn2 "library ($gtk_halfassed_lib) was not, so GTK can't be used."
3909   warn2 "Perhaps some of the development packages are not installed?"
3910   if test "$have_gtk" = yes ; then
3911     v="$ac_gtk_version_string"
3912     warn2 "GTK $v is also installed, so it will be used instead."
3913     warn2 "Please read the above output and the \`config.log' file"
3914     warn2 "for more details."
3915   fi
3916 fi
3917
3918 motif_warn2() {
3919   warn2 'Though the Motif front-end to xscreensaver is still'
3920   warn2 'maintained, it is no longer being updated with new'
3921   warn2 'features: all new development on the xscreensaver-demo'
3922   warn2 'program is happening in the GTK version, and not in the'
3923   warn2 'Motif version.  It is recommended that you build against'
3924   warn2 'GTK instead of Motif.  See <http://www.gtk.org/>.'
3925 }
3926
3927 if test "$have_motif" = no -a "$have_gtk" = no; then
3928
3929   if test "$with_motif" = yes; then
3930     warnL "Neither the GTK nor Motif libraries were found; the"
3931     warn2 "\`xscreensaver-demo' program requires one of these."
3932     echo ''
3933     motif_warn2
3934   else
3935     warnL "The GTK libraries do not seem to be available; the"
3936     warn2 "\`xscreensaver-demo' program requires them."
3937 #   echo ''
3938 #   warn2 'You can use Motif or Lesstif instead of GTK (use the'
3939 #   warn2 "\`--with-motif' option) but that is NOT recommended."
3940 #   motif_warn2
3941   fi
3942
3943 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
3944   warnL "Use of Motif was requested, but it wasn't found;"
3945   warn2 "Gtk will be used instead."
3946
3947 elif test "$jurassic_gtk" = yes ; then
3948
3949   pref_gtk=2.0
3950
3951   v="$ac_gtk_version_string"
3952   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
3953     warnL "Use of Gtk was requested, but its version number is unknown;"
3954   elif test "$with_gtk_req" = yes ; then
3955     warnL "Use of Gtk was requested, but it is version $v;"
3956   else
3957     warnL "Gtk was found on this system, but it is version $v;"
3958   fi
3959
3960   warn2 "Gtk $pref_gtk or newer is required."
3961
3962 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
3963   warnL "Use of Gtk was requested, but it wasn't found."
3964 fi
3965
3966
3967 if test "$have_gtk" = yes -a "$have_gdk_pixbuf" = no ; then
3968   warn  "GTK is being used, but the GDK-Pixbuf library and/or"
3969   warn2 "headers were not found.  That can't be good.  Please"
3970   warn2 "install the GDK-Pixbuf development kit and re-configure."
3971 fi
3972
3973 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
3974
3975   preferred_lesstif=0.92
3976
3977   if test "$lesstif_version" = unknown; then
3978     warnL "Unable to determine the LessTif version number!"
3979     warn2 "Make sure you are using version $preferred_lesstif or newer."
3980     warn2 "See <http://www.lesstif.org/>."
3981
3982   elif test \! $lesstif_version -gt 82; then
3983     warnL "LessTif version $lesstif_version_string is being used."
3984     warn2 "LessTif versions 0.82 and earlier are too buggy to"
3985     warn2 "use with XScreenSaver; it is strongly recommended"
3986     warn2 "that you upgrade to at least version $preferred_lesstif!"
3987     warn2 "See <http://www.lesstif.org/>."
3988   fi
3989 fi
3990
3991
3992 if test "$have_motif" = yes -a "$have_gtk" = no ; then
3993   warn  'Motif is being used, and GTK is not.'
3994   echo  ''
3995   motif_warn2
3996 fi
3997
3998
3999 if test "$with_xpm_req" = yes -a "$have_xpm" = no; then
4000   warnL 'Use of XPM was requested, but it was not found.'
4001 fi
4002
4003 if test "$with_gdk_pixbuf_req" = yes  -a "$have_gdk_pixbuf" = no; then
4004   warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
4005 fi
4006
4007 if test "$have_gdk_pixbuf" = no -o "$gdk_pixbuf_halfassed" = yes || \
4008    test "$have_gdk_pixbuf" = no -a "$have_xpm" = no ; then
4009
4010   if test "$with_gdk_pixbuf_req" = yes ; then
4011     true
4012   elif test "$with_gdk_pixbuf_req" = no ; then
4013     warnL 'The GDK-Pixbuf library is not being used.'
4014   else
4015     warnL 'The GDK-Pixbuf library was not found.'
4016   fi
4017
4018   if test "$with_xpm_req" = yes -o "$have_xpm" = yes ; then
4019     true
4020   elif test "$with_xpm_req" = no ; then
4021     warnL 'The XPM library is not being used.'
4022   else
4023     warnL 'The XPM library was not found.'
4024   fi
4025
4026   if test "$have_gdk_pixbuf" = no -a "$have_xpm" = yes ; then
4027     warn2 'The XPM library is being used instead.'
4028   fi
4029
4030   if test "$gdk_pixbuf_halfassed" = yes ; then
4031     echo ''
4032     warn2 'More specifically, we found the headers, but not the'
4033     warn2 'libraries; so either GDK-Pixbuf is half-installed on this'
4034     warn2 "system, or something else went wrong.  The \`config.log'"
4035     warn2 'file might contain some clues.'
4036   fi
4037
4038   echo ''
4039   warn2 'Some of the demos will not use images as much as they could.'
4040   warn2 'You should consider installing GDK-Pixbuf and re-running'
4041   warn2 'configure.  (GDK-Pixbuf is recommended over XPM, as it'
4042   warn2 'provides support for more image formats.)'
4043 fi
4044
4045
4046 if test "$have_jpeg" = no ; then
4047   if test "$with_jpeg_req" = yes ; then
4048     warnL 'Use of libjpeg was requested, but it was not found.'
4049   elif test "$with_jpeg_req" = no ; then
4050     noteL 'The JPEG library is not being used.'
4051   else
4052     noteL 'The JPEG library was not found.'
4053   fi
4054
4055   if test "$jpeg_halfassed" = yes ; then
4056     echo ''
4057     warn2 'More specifically, we found the headers, but not the'
4058     warn2 'library; so either JPEG is half-installed on this'
4059     warn2 "system, or something else went wrong.  The \`config.log'"
4060     warn2 'file might contain some clues.'
4061     echo ''
4062   fi
4063
4064   if test "$have_gdk_pixbuf" = no ; then
4065     warn2 "This means that it won't be possible for the image-manipulating"
4066     warn2 "display modes to load files from disk; and it also means that"
4067     warn2 "the \`webcollage' program will be much slower."
4068   else
4069     warn2 "This means the \`webcollage' program will be much slower."
4070   fi
4071 fi
4072
4073
4074 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
4075   preferred_mesagl=3.4
4076   mgv="$ac_mesagl_version_string"
4077   pgl="$preferred_mesagl"
4078
4079   if test "$ac_mesagl_version" = unknown; then
4080     true
4081     # warnL "Unable to determine the MesaGL version number!"
4082     # warn2 "Make sure you are using version $preferred_mesagl or newer."
4083
4084   elif test \! "$ac_mesagl_version" -gt 2006; then
4085     warnL "MesaGL version number is $mgv --"
4086     warn2 "MesaGL 2.6 and earlier have a security bug.  It is strongly"
4087     warn2 "recommended that you upgrade to at least version $preferred_mesagl."
4088
4089   elif test \! "$ac_mesagl_version" -gt 3003; then
4090     warnL "MesaGL version number is $mgv --"
4091     warn2 "MesaGL 3.3 and earlier have some bugs; it is recommended"
4092     warn2 "that you upgrade to $pgl or newer."
4093   fi
4094 fi
4095
4096 if test "$have_gl" = no ; then
4097   if test "$with_gl_req" = yes ; then
4098     warnL 'Use of GL was requested, but it was not found.'
4099   elif test "$with_gl_req" = no ; then
4100     noteL 'The OpenGL 3D library is not being used.'
4101   else
4102     noteL 'The OpenGL 3D library was not found.'
4103   fi
4104
4105   if test "$gl_halfassed" = yes ; then
4106     echo ''
4107     warn2 'More specifically, we found the headers, but not the'
4108     warn2 'libraries; so either GL is half-installed on this'
4109     warn2 "system, or something else went wrong.  The \`config.log'"
4110     warn2 'file might contain some clues.'
4111   fi
4112
4113   echo ''
4114   warn2 'Those demos which use 3D will not be built or installed.'
4115   warn2 'You might want to consider installing OpenGL and'
4116   warn2 "re-running configure.  If your vendor doesn't ship"
4117   warn2 'their own implementation of OpenGL, you can get a free'
4118   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
4119   warn2 'info, see <http://www.opengl.org/>.'
4120
4121 fi
4122
4123
4124 if test "$have_gl" = yes -a "$have_gle" = no ; then
4125
4126  # nobody cares about this; don't print the warning unless it was
4127  # requested and not found, or halfway-found.
4128  if test "$with_gle_req" = yes -o "$gle_halfassed" = yes ; then
4129
4130   if test "$with_gle_req" = yes ; then
4131     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
4132     warn2 'it was not found (though the OpenGL library was found, and'
4133     warn2 'is being used.)'
4134   elif test "$with_gle_req" = no ; then
4135     noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
4136     warn2 'library is not.'
4137   else
4138     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
4139     warn2 'was not.'
4140   fi
4141
4142   if test "$gle_halfassed" = yes ; then
4143     echo ''
4144     warn2 'More specifically, we found the headers, but not the'
4145     warn2 'libraries; so either GLE is half-installed on this'
4146     warn2 "system, or something else went wrong.  The \`config.log'"
4147     warn2 'file might contain some clues.'
4148   fi
4149
4150   echo ''
4151   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
4152   warn2 'will not be built or installed.  You might want to consider'
4153   warn2 'installing GLE and re-running configure.  You can find the'
4154   warn2 'GLE library at <http://www.linas.org/gle/>.  For general'
4155   warn2 'OpenGL info, see <http://www.opengl.org/>.'
4156
4157  fi
4158 fi
4159
4160
4161 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
4162   warn 'Use of XReadDisplay was requested, but it was not found.'
4163 fi
4164
4165 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
4166   warn 'Use of Kerberos was requested, but it was not found.'
4167 fi
4168
4169 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
4170   warn 'Use of PAM was requested, but it was not found.'
4171 fi
4172
4173 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
4174   warn 'Use of shadow passwords was requested, but they were not found.'
4175 fi
4176
4177 if test "$ac_macosx" = yes ; then
4178   if test "$enable_locking" = yes ; then
4179     warn  "You have specified --enable-locking on MacOS X."
4180     warn2 "THIS DOES NOT WORK!  Don't do this!"
4181   fi
4182 fi
4183
4184
4185 # You are in a twisty maze of namespaces and syntaxes, all alike.
4186 # Fuck the skull of Unix.
4187 #
4188 bindir=`eval eval eval eval eval eval eval echo $bindir`
4189 HACKDIR=`eval eval eval eval eval eval eval echo $HACKDIR`
4190 HACK_CONF_DIR=`eval eval eval eval eval eval eval echo $HACK_CONF_DIR`
4191
4192 # canonicalize slashes.
4193 bindir=`echo  "${bindir}"              | sed 's@/$@@;s@//*@/@g'`
4194 HACKDIR=`echo "${HACKDIR}"             | sed 's@/$@@;s@//*@/@g'`
4195 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
4196
4197
4198 # Sanity check the hackdir
4199 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
4200   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
4201     echo ""
4202     AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
4203                    There will be an executable installed with that name, so
4204                    that can't be the name of a directory as well.  Please
4205                    re-configure with a different directory name.])
4206   fi
4207 done
4208
4209
4210 do_dir_warning=no
4211
4212 # Now let's warn if there's a previous RPM version already installed.
4213 # But don't bother with this test if we are currently *building* an RPM.
4214
4215 if test -z "$RPM_PACKAGE_VERSION" ; then
4216
4217   rpmnames="xscreensaver xscreensaver-base xscreensaver-extras"
4218
4219   # M4 sucks!!
4220   changequote(X,Y)
4221   rpmv=`(rpm -qv $rpmnames) 2>/dev/null | \
4222         sed -n 's/^[-a-z]*-\([0-9][0-9]*[.][0-9][0-9a-z]*\)-.*$/\1/p' | \
4223         head -1`
4224   changequote([,])
4225
4226   if test \! -z "$rpmv" ; then
4227     rpmbdir=`rpm -ql $rpmnames | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
4228     rpmhdir=`rpm -ql $rpmnames | sed -n 's@^\(.*\)/popsquares$@\1@p'`
4229
4230     warning=no
4231     warnL "There is already an installed RPM of xscreensaver $rpmv"
4232     warn2 'on this system.  You might want to remove it ("rpm -ve")'
4233     warn2 'before running "make install" in this directory.'
4234     echo ""
4235     warn2 "Alternately, you could build this version of xscreensaver"
4236     warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
4237     warn2 'file is included.  Try "rpmbuild -v -ba xscreensaver.spec".'
4238     warn2 "See the RPM documentation for more info."
4239     echo ""
4240
4241     if test "$rpmbdir" = "$rpmhdir" ; then
4242       warn2 "The RPM version was installed in $rpmbdir/."
4243       do_dir_warning=yes
4244     else
4245       warn2 "The RPM version was installed in $rpmbdir/,"
4246       warn2 "with demos in $rpmhdir/."
4247     fi
4248   fi
4249 fi
4250
4251 # Also warn if there's a Debian package installed.
4252 #
4253 debnames="xscreensaver xscreensaver-data xscreensaver-data-extra"
4254 debv=''
4255 for dpkg in $debnames ; do
4256   if test -z "$debv"; then
4257     debv=`dpkg -s $dpkg 2>/dev/null | sed -n 's/^Version: \(.*\)$/\1/p'`
4258   fi
4259 done
4260
4261 if test \! -z "$debv" ; then
4262   debbdir=`dpkg -L $debnames 2>/dev/null | \
4263             sed -n 's@^\(.*/bin/\)xscreensaver$@\1@p'`
4264   debhdir=`dpkg -L $debnames 2>/dev/null | \
4265             sed -n 's@^\(.*/\)popsquares$@\1@p'`
4266   if test -z "$debbdir" ; then debbdir='???'; fi
4267   if test -z "$debhdir" ; then debhdir='???'; fi
4268
4269   warning=no
4270   warnL "There is already an installed dpkg of xscreensaver"
4271   warn2 "version \"$debv\" on this system."
4272   echo ""
4273   warn2 "The dpkg was installed in $debbdir,"
4274   warn2 "with demos in $debhdir."
4275 fi
4276
4277
4278 if test "${bindir}" = "${HACKDIR}" ; then
4279   do_dir_warning=yes
4280 fi
4281
4282 if test "$do_dir_warning" = yes; then
4283   echo ""
4284   echo "$warnsep"
4285   echo ""
4286   echo '      When you run "make install", the "xscreensaver",'
4287   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
4288   echo "      will be installed in ${bindir}/."
4289   echo ""
4290   echo "      The various graphics demos (190+ different executables) will"
4291   echo "      be installed in ${HACKDIR}/."
4292   echo ""
4293   echo "      If you would prefer the demos to be installed elsewhere,"
4294   echo "      you should re-run configure with the --with-hackdir=DIR"
4295   echo "      option.  For more information, run \`./configure --help'."
4296   warning=yes
4297 fi
4298
4299 if test "$warning" != no; then
4300   echo '' ; echo "$warnsep" ; echo ''
4301 fi
4302
4303 if test "$do_dir_warning" = no; then
4304   if test "$warning" = no; then
4305     echo ''
4306   fi
4307   echo "User programs will be installed in ${bindir}/"
4308   echo "Screen savers will be installed in ${HACKDIR}/"
4309   echo "Configuration dialogs will be installed in ${HACK_CONF_DIR}/"
4310   echo "System-wide default settings will be installed in ${APPDEFAULTS}/"
4311   echo ''
4312 fi