1 # configure.in --- xscreensaver, Copyright (c) 1997-2005 Jamie Zawinski.
5 AC_INIT(driver/subprocs.c)
6 AC_CONFIG_HEADER(config.h)
8 echo "current directory: `pwd`"
9 echo "command line was: $0 $@"
11 ###############################################################################
15 ###############################################################################
18 /* config.h.in --- xscreensaver, Copyright (c) 1998-2000 Jamie Zawinski.
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
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.
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.])
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.)])
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.])
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
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.])
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.])
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
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.)])
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
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
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.)])
97 AH_TEMPLATE([HAVE_XINPUT],
98 [Define this if you have the Xinput extension. This is
99 standard since X11R5, and is thus almost everywhere.
100 (It's available if the file /usr/include/X11/extensions/XInput.h
103 AH_TEMPLATE([HAVE_XF86MISCSETGRABKEYSSTATE],
104 [Define this if you have the XF86MiscSetGrabKeysState function
105 (which allows the Ctrl-Alt-KP_star and Ctrl-Alt-KP_slash key
106 sequences to be temporarily disabled. Sadly, it doesn't affect
107 Ctrl-Alt-BS or Ctrl-Alt-F1.)])
109 AH_TEMPLATE([HAVE_RANDR],
110 [Define this if you have the Resize and Rotate extension.
111 This is standard on sufficiently-recent XFree86 systems, and
112 possibly elsewhere. (It's available if the file
113 /usr/include/X11/extensions/Xrandr.h exists.)])
115 AH_TEMPLATE([HAVE_RANDR_12],
116 [Define this if the RANDR library is version 1.2 or newer.])
118 AH_TEMPLATE([HAVE_PROC_INTERRUPTS],
119 [Define this if you have a Linux-like /proc/interrupts file which
120 can be examined to determine when keyboard activity has
123 AH_TEMPLATE([HAVE_MOTIF],[Define this if you have Motif.])
125 AH_TEMPLATE([HAVE_XMCOMBOBOX],
126 [Define this if you have the XmComboBox Motif widget (Motif 2.0.)])
128 AH_TEMPLATE([HAVE_GTK],[Define this if you have Gtk (any version.)])
129 AH_TEMPLATE([HAVE_GTK2],[Define this if you have Gtk 2.x.])
131 AH_TEMPLATE([HAVE_CRAPPLET],
132 [Define this if you have Gnome and want to build support for the
133 xscreensaver control panel in the Gnome Control Center
134 (gnomecc). (This is needed only with Gtk 1.x.)])
136 AH_TEMPLATE([HAVE_CRAPPLET_IMMEDIATE],
137 [Define this if HAVE_CRAPPLET is defined, and the function
138 capplet_widget_changes_are_immediate() is available.])
140 AH_TEMPLATE([HAVE_XML],[Define this if you have the XML library.])
142 AH_TEMPLATE([HAVE_OLD_XML_HEADERS],
143 [Define this if you have the XML library headers in their old,
144 non-namespaced location (you lack the gnome-xml/libxml symlink)])
146 AH_TEMPLATE([HAVE_XPM],
147 [Define this if you have the XPM library installed. Some of the
148 demos can make use of this if it is available.])
150 AH_TEMPLATE([HAVE_GDK_PIXBUF],
151 [Define this if you have the GDK_Pixbuf library installed. Some
152 of the demos can make use of this if it is available.])
154 AH_TEMPLATE([HAVE_GDK_PIXBUF_APPLY_EMBEDDED_ORIENTATION],
155 [Define this if you have the gdk_pixbuf_apply_embedded_orientation
156 function (gdk-pixbuf 2.12).])
158 AH_TEMPLATE([HAVE_JPEGLIB],
159 [Define this if you have the Independent JPEG Group's JPEG
160 library installed. Some of the demos can make use of this if it
163 AH_TEMPLATE([HAVE_XMU],
164 [Define this if you have the Xmu library. This is standard part
165 of X, and if your vendor doesn't ship it, you should report that
168 AH_TEMPLATE([HAVE_GL],
169 [Define this if you have OpenGL. Some of the demos require it,
170 so if you don't have it, then those particular demos won't be
171 built. (This won't affect the screen saver as a whole.)])
173 AH_TEMPLATE([HAVE_MESA_GL],
174 [Define this if you have OpenGL, but it's the MesaGL variant.
175 (The libraries have different names.) (HAVE_GL should be defined
178 AH_TEMPLATE([HAVE_GLBINDTEXTURE],
179 [Define this if your version of OpenGL has the glBindTexture()
180 routine. This is the case for OpenGL 1.1, but not for OpenGL
183 AH_TEMPLATE([HAVE_GLE],
184 [Define this if you have the -lgle and -lmatrix libraries (GL
187 AH_TEMPLATE([HAVE_GLE3],[Define this if you have the -lgle from GLE version 3])
189 AH_TEMPLATE([HAVE_XSHM_EXTENSION],
190 [Define this if you have the X Shared Memory Extension.])
192 AH_TEMPLATE([HAVE_DOUBLE_BUFFER_EXTENSION],
193 [Define this if you have the X Double Buffer Extension.])
195 AH_TEMPLATE([FORTUNE_PROGRAM],
196 [Some screenhacks like to run an external program to generate
197 random pieces of text; set this to the one you like. Note that
198 this is just the default; X resources can be used to override
201 AH_TEMPLATE([PASSWD_HELPER_PROGRAM],
202 [Set the name of the password helper program, if any])
204 AH_TEMPLATE([NO_LOCKING],
205 [Define this to remove the option of locking the screen at all.])
207 AH_TEMPLATE([ALLOW_ROOT_PASSWD],
208 [Define this to allow the root password to unlock the screen.])
210 AH_TEMPLATE([HAVE_KERBEROS],
211 [Define this if you want to use Kerberos authentication to
212 lock/unlock the screen instead of your local password. This
213 currently uses Kerberos V4, but a V5 server with V4
214 compatibility will work. WARNING: DO NOT USE AFS string-to-key
215 passwords with this option. This option currently *only* works
216 with standard Kerberos des_string_to_key. If your password is
217 an AFS password and not a kerberos password, it will not
218 authenticate properly. See the comments in driver/kpasswd.c for
219 more information if you need it.])
221 AH_TEMPLATE([HAVE_KERBEROS5],
222 [Define this if you have Kerberos 5, meaning we need to use the
223 Kerberos 4 compatibility layer.])
225 AH_TEMPLATE([HAVE_PAM],
226 [Define this if you want to use PAM (Pluggable Authentication
227 Modules) to lock/unlock the screen, instead of standard
228 /etc/passwd authentication.])
230 AH_TEMPLATE([PAM_SERVICE_NAME],
231 [If PAM is being used, this is the name of the PAM service that
232 xscreensaver will authenticate as. The default is
233 "xscreensaver", which means that the PAM library will look for
234 an "xscreensaver" line in /etc/pam.conf, or (on recent Linux
235 systems) will look for a file called /etc/pam.d/xscreensaver.
236 Some systems might already have a PAM installation that is
237 configured for xlock, so setting this to "xlock" would also work
240 AH_TEMPLATE([HAVE_PAM_FAIL_DELAY],
241 [Define this if you have pam_fail_delay function.
242 see driver/passwd-pam.c.])
244 AH_TEMPLATE([PAM_STRERROR_TWO_ARGS],
245 [Define if you have PAM and pam_strerror() requires two
248 AH_TEMPLATE([HAVE_SIGTIMEDWAIT],
249 [Define to 1 if you have the `sigtimedwait' function.])
251 AH_TEMPLATE([HAVE_SHADOW_PASSWD],
252 [Define this if your system uses 'shadow' passwords, that is, the
253 passwords live in /etc/shadow instead of /etc/passwd, and one
254 reads them with getspnam() instead of getpwnam(). (Note that
255 SCO systems do some random other thing; others might as well.
256 See the ifdefs in driver/passwd-pwent.c if you're having trouble
257 related to reading passwords.)])
259 AH_TEMPLATE([HAVE_ENHANCED_PASSWD],
260 [Define this if your system is Digital or SCO Unix with so-called
261 ``Enhanced Security'', that is, the passwords live in
262 /tcb/files/auth/<x>/<xyz> instead of in /etc/passwd, and one
263 reads them with getprpwnam() instead of getpwnam().])
265 AH_TEMPLATE([HAVE_ADJUNCT_PASSWD],
266 [Define this if your system is Solaris with ``adjunct'' passwords
267 (this is the version where one gets at the passwords with
268 getpwanam() instead of getpwnam().) I haven't tested this one,
269 let me know if it works.])
271 AH_TEMPLATE([HAVE_HPUX_PASSWD],
272 [Define this if you are running HPUX with so-called ``Secure
273 Passwords'' (if you have /usr/include/hpsecurity.h, you probably
274 have this.) I haven't tested this one, let me know if it works.])
276 AH_TEMPLATE([HAVE_SYSLOG],
277 [Define this if you the openlog(), syslog(), and closelog()
278 functions. This is used for logging failed login attempts.])
280 AH_TEMPLATE([HAVE_ICMP],
281 [Define this if you do pings with a `struct icmp' and an
284 AH_TEMPLATE([HAVE_ICMPHDR],
285 [Define this if you do pings with a `struct icmphdr' and an
288 AH_TEMPLATE([HAVE_FORKPTY],
289 [Define this if you have the 'forkpty' function:
290 This allows 'phosphor' and 'apple2' to run curses-based
291 programs, or be used as terminal windows.])
293 AH_TEMPLATE([HAVE_GETTIMEOFDAY],
294 [Define this if you have the gettimeofday function.])
296 AH_TEMPLATE([GETTIMEOFDAY_TWO_ARGS],
297 [Define this if gettimeofday() takes two arguments.])
299 AH_TEMPLATE([XPointer],
300 [Define this to void* if you're using X11R4 or earlier.])
302 # After checking to see that --srcdir is correct (which AC_INIT does)
303 # check for some random other files that come later in the tar file,
304 # to make sure everything is here.
306 for d in driver utils hacks hacks/glx ; do
307 f=$srcdir/$d/Makefile.in
308 if test \! -r $f ; then
310 echo "ERROR: The package is incomplete: $f does not exist."
311 echo " This probably means that your download was truncated."
317 ###############################################################################
319 # Function to figure out how to run the compiler.
321 ###############################################################################
323 AC_DEFUN(AC_PROG_CC_ANSI,
326 if test -z "$GCC"; then
328 AC_MSG_CHECKING(how to request ANSI compilation)
331 AC_MSG_RESULT(HPUX: adding -Ae)
335 AC_MSG_RESULT(AIX: adding -qlanglvl=ansi -qhalt=e)
336 CC="$CC -qlanglvl=ansi -qhalt=e"
339 AC_MSG_RESULT(DEC: adding -std1 -ieee)
343 AC_MSG_RESULT(no idea)
350 AC_MSG_RESULT(Solaris: adding -D__EXTENSIONS__)
351 CC="$CC -D__EXTENSIONS__"
358 AC_MSG_CHECKING([whether the compiler works on ANSI C])
359 AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
362 AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.),
363 AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.))
365 if test -n "$GCC"; then
366 AC_MSG_RESULT(Turning on gcc compiler warnings.)
367 CC="$CC -pedantic -Wall -Wstrict-prototypes -Wnested-externs -Wmissing-prototypes"
369 # As of gcc 3.4, we have "-Wdeclaration-after-statement"
370 # and so perhaps now we can do without -pedantic?
373 *-irix5* |*-irix6.[0-3]* )
374 AC_MSG_RESULT(Turning on SGI compiler warnings.)
375 CC="$CC -fullwarn -use_readonly_const -rdata_shared -g3"
378 # if test -z "$GCC"; then
379 # AC_MSG_RESULT(Turning on DEC C compiler warnings.)
380 # CC="$CC -migrate -w0 -verbose -warnprotos"
388 ###############################################################################
390 # Check for availability of various gcc command-line options.
392 ###############################################################################
394 AC_DEFUN(AC_CHECK_GCC_ARG,
395 [if test -n "$GCC"; then
396 AC_CACHE_CHECK([whether gcc accepts [$2]],
397 ac_cv_gcc_accepts_[$1],
398 [rm -rf conftest.$ac_ext
399 touch conftest.$ac_ext
400 if ( ( gcc -c [$2] conftest.$ac_ext -o/dev/null >/dev/null ) 2>&1 | \
401 grep unrecognized >/dev/null ); then
402 ac_cv_gcc_accepts_[$1]=no
404 ac_cv_gcc_accepts_[$1]=yes
407 ac_gcc_accepts_[$1]="$ac_cv_gcc_accepts_[$1]"
411 AC_DEFUN(AC_NO_LONG_STRING_WARNINGS,
412 [AC_CHECK_GCC_ARG(no_overlength, -Wno-overlength-strings)])
414 AC_DEFUN(AC_NO_MISPLACED_DECLARATIONS,
415 [AC_CHECK_GCC_ARG(no_decl_after, -Wdeclaration-after-statement)])
417 # Need to disable Objective C extensions in ANSI C on MacOS X to work
418 # around an Apple-specific gcc bug.
420 AC_DEFUN(AC_NO_OBJECTIVE_C,
421 [AC_CHECK_GCC_ARG(no_cpp_precomp, -no-cpp-precomp)])
423 ###############################################################################
425 # Function to figure out how to disable // comments in ANSI C code.
427 # (With recent gcc, this is done with "-std=c89". With older gcc, this
428 # is done by passing "-lang-c89" to cpp, by passing "-Wp,-lang-c89" to
429 # gcc. Old gcc doesn't support -std, and new gcc doesn't support -lang.
430 # so much for compatibility!)
432 # UPDATE: apparently there is NO WAY to tell gcc 3.2.2 to require that
433 # declarations preceed statements, without resorting to "-pedantic".
434 # This means that there is no way to get gcc3 to issue warnings that
435 # ensure that your code complies with the ANSI/ISO C89 standard, without
436 # also drowning in totally useless warnings. Thank you master may I
439 # So, I give up, let's just use -pedantic.
441 ###############################################################################
443 AC_DEFUN(AC_GCC_ACCEPTS_STD, [
446 # Fucking Apple let // comments sneak into OpenGL headers, so
447 # we *must* allow // comments when compiling on Mac OS 10.6! FUCK!
450 AC_CHECK_GCC_ARG(std, -std=c89)
455 AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
456 [if test -n "$GCC"; then
458 AC_MSG_RESULT(Disabling C++ comments in ANSI C code.)
460 # The reason that // comments are banned from xscreensaver is that gcc is
461 # basically the only compiler in the world that supports them in C code.
462 # All other vendors support them only in their C++ compilers, not in their
463 # ANSI C compilers. This means that it's a portability problem: every time
464 # these comments have snuck into the xscreensaver source code, I've gotten
465 # complaints about it the next day. So we turn off support for them in gcc
466 # as well to prevent them from accidentially slipping in.
468 if test "$ac_gcc_accepts_std" = yes ; then
470 # -std=c89 defines __STRICT_ANSI__, which we don't want.
471 # (That appears to be the only additional preprocessor symbol
472 # it defines, in addition to the syntax changes it makes.)
474 # -std=gnu89 is no good, because // comments were a GNU extension
475 # before they were in the ANSI C 99 spec... (gcc 2.96 permits //
476 # with -std=gnu89 but not with -std=c89.)
478 # $CC already contains "-std=c89" via AC_GCC_ACCEPTS_STD
479 CC="$CC -U__STRICT_ANSI__"
482 # CC="$CC -Wp,-lang-c89"
488 ###############################################################################
490 # Function to figure out how to create directory trees.
492 ###############################################################################
494 AC_DEFUN(AC_PROG_INSTALL_DIRS,
495 [AC_CACHE_CHECK([whether "\${INSTALL} -d" creates intermediate directories],
496 ac_cv_install_d_creates_dirs,
497 [ac_cv_install_d_creates_dirs=no
499 if mkdir conftestdir; then
500 cd conftestdir 2>/dev/null
501 ${INSTALL} -d `pwd`/dir1/dir2 >/dev/null 2>&1
502 if test -d dir1/dir2/. ; then
503 ac_cv_install_d_creates_dirs=yes
510 if test "$ac_cv_install_d_creates_dirs" = no ; then
511 AC_CACHE_CHECK([whether "mkdir -p" creates intermediate directories],
512 ac_cv_mkdir_p_creates_dirs,
513 [ac_cv_mkdir_p_creates_dirs=no
515 if mkdir conftestdir; then
516 cd conftestdir 2>/dev/null
517 mkdir -p dir1/dir2 >/dev/null 2>&1
518 if test -d dir1/dir2/. ; then
519 ac_cv_mkdir_p_creates_dirs=yes
527 if test "$ac_cv_install_d_creates_dirs" = yes ; then
528 INSTALL_DIRS='${INSTALL} -d'
529 elif test "$ac_cv_mkdir_p_creates_dirs" = yes ; then
530 INSTALL_DIRS='mkdir -p'
533 INSTALL_DIRS='${INSTALL} -d'
538 ###############################################################################
540 # Function to check whether gettimeofday() exists, and how to call it.
541 # This may define HAVE_GETTIMEOFDAY and GETTIMEOFDAY_TWO_ARGS.
543 ###############################################################################
545 AC_DEFUN(AC_GETTIMEOFDAY_ARGS,
546 [AC_MSG_CHECKING(how to call gettimeofday)
547 AC_CACHE_VAL(ac_cv_gettimeofday_args,
548 [AC_TRY_COMPILE([#include <stdlib.h>
549 #include <sys/time.h>],
550 [struct timeval tv; struct timezone tzp;
551 gettimeofday(&tv, &tzp);],
552 [ac_gettimeofday_args=2],
553 [AC_TRY_COMPILE([#include <stdlib.h>
554 #include <sys/time.h>],
555 [struct timeval tv; gettimeofday(&tv);],
556 [ac_gettimeofday_args=1],
557 [ac_gettimeofday_args=0])])
558 ac_cv_gettimeofday_args=$ac_gettimeofday_args])
559 ac_gettimeofday_args=$ac_cv_gettimeofday_args
560 if test "$ac_gettimeofday_args" = 1 ; then
561 AC_DEFINE(HAVE_GETTIMEOFDAY)
562 AC_MSG_RESULT(one argument)
563 elif test "$ac_gettimeofday_args" = 2 ; then
564 AC_DEFINE(HAVE_GETTIMEOFDAY)
565 AC_DEFINE(GETTIMEOFDAY_TWO_ARGS)
566 AC_MSG_RESULT(two arguments)
568 AC_MSG_RESULT(unknown)
573 ###############################################################################
575 # Function to find perl5 (defines PERL and PERL_VERSION.)
577 ###############################################################################
579 # M4 sucks!! perl sucks too!!
581 perl_version_cmd='print $]'
584 AC_DEFUN(AC_PROG_PERL,
585 [AC_PATH_PROGS(PERL, [perl5 perl],,)
586 if test -z "$PERL" ; then
589 AC_CACHE_CHECK([perl version], ac_cv_perl_version,
590 [ac_cv_perl_version=`$PERL -e "$perl_version_cmd"`])
591 PERL_VERSION=$ac_cv_perl_version
596 ###############################################################################
598 # Function to demand "bc". Losers.
600 ###############################################################################
602 AC_DEFUN(AC_DEMAND_BC,
603 [ac_bc_result=`echo 6+9 | bc 2>/dev/null`
604 AC_MSG_CHECKING([for bc])
605 if test "$ac_bc_result" = "15" ; then
610 AC_MSG_ERROR([Your system doesn't have \"bc\", which has been a standard
611 part of Unix since the 1970s. Come back when your vendor
616 ###############################################################################
618 # Functions to check how to do ICMP PING requests.
620 ###############################################################################
622 AC_DEFUN(AC_CHECK_ICMP,
623 [AC_CACHE_CHECK([for struct icmp], ac_cv_have_icmp,
624 [AC_TRY_COMPILE([#include <stdlib.h>
631 #include <sys/types.h>
632 #include <sys/time.h>
635 #include <sys/socket.h>
636 #include <netinet/in_systm.h>
637 #include <netinet/in.h>
638 #include <netinet/ip.h>
639 #include <netinet/ip_icmp.h>
640 #include <netinet/udp.h>
641 #include <arpa/inet.h>
645 struct sockaddr_in si;
647 i.icmp_type = ICMP_ECHO;
652 si.sin_family = AF_INET;
653 #if defined(__DECC) || defined(_IP_VHL)
659 [ac_cv_have_icmp=yes],
660 [ac_cv_have_icmp=no])])
661 if test "$ac_cv_have_icmp" = yes ; then
665 AC_DEFUN(AC_CHECK_ICMPHDR,
666 [AC_CACHE_CHECK([for struct icmphdr], ac_cv_have_icmphdr,
667 [AC_TRY_COMPILE([#include <stdlib.h>
674 #include <sys/types.h>
675 #include <sys/time.h>
678 #include <sys/socket.h>
679 #include <netinet/in_systm.h>
680 #include <netinet/in.h>
681 #include <netinet/ip.h>
682 #include <netinet/ip_icmp.h>
683 #include <netinet/udp.h>
684 #include <arpa/inet.h>
688 struct sockaddr_in si;
694 i.un.echo.sequence = 0;
695 si.sin_family = AF_INET;
697 [ac_cv_have_icmphdr=yes],
698 [ac_cv_have_icmphdr=no])])
699 if test "$ac_cv_have_icmphdr" = yes ; then
700 AC_DEFINE(HAVE_ICMPHDR)
704 ###############################################################################
706 # Functions to check for various X11 crap.
708 ###############################################################################
710 # Try and find the app-defaults directory.
711 # It sucks that autoconf doesn't do this already...
713 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,[
715 if mkdir conftestdir; then
716 cd conftestdir 2>/dev/null
717 # Make sure to not put "make" in the Imakefile rules, since we grep it out.
718 cat > Imakefile <<'EOF'
720 @echo 'ac_x_app_defaults="${XAPPLOADDIR}"'
722 if (xmkmf) >/dev/null 2>&1 && test -f Makefile; then
723 # GNU make sometimes prints "make[1]: Entering...", which'd confuse us.
724 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
730 ###############################################################################
732 # Handle the --with-x-app-defaults option HERE
734 ###############################################################################
736 AC_ARG_WITH(x-app-defaults,[],
737 [ac_cv_x_app_defaults="$withval"],
738 [eval ac_x_app_defaults="$withval"])
741 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
742 # Look for the directory under a standard set of common directories.
743 # Check X11 before X11Rn because it's often a symlink to the current release.
745 /usr/X11/lib/app-defaults \
746 /usr/X11R6/lib/app-defaults \
747 /usr/X11R6/lib/X11/app-defaults \
748 /usr/X11R5/lib/app-defaults \
749 /usr/X11R5/lib/X11/app-defaults \
750 /usr/X11R4/lib/app-defaults \
751 /usr/X11R4/lib/X11/app-defaults \
753 /usr/lib/X11/app-defaults \
754 /usr/lib/X11R6/app-defaults \
755 /usr/lib/X11R5/app-defaults \
756 /usr/lib/X11R4/app-defaults \
758 /usr/local/X11/lib/app-defaults \
759 /usr/local/X11R6/lib/app-defaults \
760 /usr/local/X11R5/lib/app-defaults \
761 /usr/local/X11R4/lib/app-defaults \
763 /usr/local/lib/X11/app-defaults \
764 /usr/local/lib/X11R6/app-defaults \
765 /usr/local/lib/X11R6/X11/app-defaults \
766 /usr/local/lib/X11R5/app-defaults \
767 /usr/local/lib/X11R5/X11/app-defaults \
768 /usr/local/lib/X11R4/app-defaults \
769 /usr/local/lib/X11R4/X11/app-defaults \
771 /usr/X386/lib/X11/app-defaults \
772 /usr/x386/lib/X11/app-defaults \
773 /usr/XFree86/lib/X11/app-defaults \
775 /usr/lib/X11/app-defaults \
776 /usr/local/lib/X11/app-defaults \
777 /usr/unsupported/lib/X11/app-defaults \
778 /usr/athena/lib/X11/app-defaults \
779 /usr/local/x11r5/lib/X11/app-defaults \
780 /usr/lpp/Xamples/lib/X11/app-defaults \
781 /lib/usr/lib/X11/app-defaults \
783 /usr/openwin/lib/app-defaults \
784 /usr/openwin/lib/X11/app-defaults \
785 /usr/openwin/share/lib/app-defaults \
786 /usr/openwin/share/lib/X11/app-defaults \
788 /X11R6/lib/app-defaults \
789 /X11R5/lib/app-defaults \
790 /X11R4/lib/app-defaults \
793 if test -d "$ac_dir"; then
794 ac_x_app_defaults=$ac_dir
800 AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
802 AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
803 [AC_PATH_X_APP_DEFAULTS_XMKMF
804 if test x"$ac_x_app_defaults" = x; then
805 AC_PATH_X_APP_DEFAULTS_DIRECT
807 if test x"$ac_x_app_defaults" = x; then
808 ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
810 # Record where we found app-defaults for the cache.
811 ac_cv_x_app_defaults="$ac_x_app_defaults"
813 eval ac_x_app_defaults="$ac_cv_x_app_defaults"])
816 AC_DEFUN(AC_XPOINTER,
817 [AC_CACHE_CHECK([for XPointer], ac_cv_xpointer,
818 [AC_TRY_X_COMPILE([#include <X11/Xlib.h>],
819 [XPointer foo = (XPointer) 0;],
820 [ac_cv_xpointer=yes],
821 [ac_cv_xpointer=no])])
822 if test "$ac_cv_xpointer" != yes; then
823 AC_DEFINE(XPointer,[char*])
827 # Random special-cases for X on certain pathological OSes.
828 # You know who you are.
830 AC_DEFUN(AC_X_RANDOM_PATHS,
834 # The following arcana was gleaned from conversations with
835 # Eric Schwartz <erics@col.hp.com>:
837 # On HPUX 10.x, the parts of X that HP considers "standard" live in
838 # /usr/{include,lib}/X11R6/. The parts that HP doesn't consider
839 # "standard", notably, Xaw and Xmu, live in /usr/contrib/X11R6/.
840 # Yet /usr/contrib/X11R6/ comes preinstalled on all HPUX systems.
841 # Also, there are symlinks from /usr/include/ and /usr/lib/ into
842 # /usr/{include,lib}/X11R6/, so that (if you don't use Xmu at all)
843 # you don't need any -I or -L arguments.
845 # On HPUX 9.x, /usr/{include,lib}/X11R5/ and /usr/contrib/X11R5/
846 # are the same division as 10.x. However, there are no symlinks to
847 # the X stuff from /usr/include/ and /usr/lib/, so -I and -L
848 # arguments are always necessary.
850 # However, X11R6 was available on HPUX 9.x as a patch: if that
851 # patch was installed, then all of X11R6 went in to
852 # /usr/contrib/X11R6/ (there was no /usr/{include,lib}/X11R6/.)
854 # HPUX 8.x was the same as 9.x, but was X11R4 instead (I don't know
855 # whether R5 was available as a patch; R6 undoubtedly was not.)
857 # So. We try and use the highest numbered pair of
858 # /usr/{include,lib}/X11R?/ and /usr/contrib/X11R?/{include,lib}/
859 # that are available. We do not mix and match different versions
862 # Question I still don't know the answer to: (do you?)
864 # * On HPUX 9.x, where /usr/include/X11R5/ was standard, and
865 # /usr/contrib/X11R6/ could be installed as a patch, what was in
866 # that contrib directory? Did it contain so-called "standard"
867 # X11R6, or did it include Xaw and Xmu as well? If the former,
868 # where did one find Xaw and Xmu on 9.x R6 systems? Would this
869 # be a situation where one had to reach into the R5 headers and
870 # libs to find Xmu? That is, must both R6 and R5 directories
871 # be on the -I and -L lists in that case?
873 for version in X11R6 X11R5 X11R4 ; do
874 # if either pair of directories exists...
875 if test -d /usr/include/$version || test -d /usr/contrib/$version/include
877 # if contrib exists, use it...
878 if test -d /usr/contrib/$version/include ; then
879 X_CFLAGS="$X_CFLAGS -I/usr/contrib/$version/include"
880 X_LIBS="$X_LIBS -L/usr/contrib/$version/lib"
882 # if the "standard" one exists, use it.
883 if test -d /usr/include/$version ; then
884 X_CFLAGS="$X_CFLAGS -I/usr/include/$version"
885 X_LIBS="$X_LIBS -L/usr/lib/$version"
887 # since at least one of the pair exists, go no farther.
892 # Now find Motif. Thanks for not making xmkmf find this by
893 # default, you losers.
895 if test -d /usr/include/Motif2.1 ; then
896 X_CFLAGS="$X_CFLAGS -I/usr/include/Motif2.1"
897 X_LIBS="$X_LIBS -L/usr/lib/Motif2.1"
898 elif test -d /usr/include/Motif1.2 ; then
899 X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.2"
900 X_LIBS="$X_LIBS -L/usr/lib/Motif1.2"
901 elif test -d /usr/include/Motif1.1 ; then
902 X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.1"
903 X_LIBS="$X_LIBS -L/usr/lib/Motif1.1"
906 # Now let's check for the pseudo-standard locations for OpenGL and XPM.
908 if test -d /opt/graphics/OpenGL/include ; then
909 # HP-UX 10.20 puts it here
910 X_CFLAGS="-I/opt/graphics/OpenGL/include $X_CFLAGS"
911 X_LIBS="-L/opt/graphics/OpenGL/lib $X_LIBS"
912 elif test -d /opt/Mesa/lib ; then
913 X_CFLAGS="-I/opt/Mesa/include $X_CFLAGS"
914 X_LIBS="-L/opt/Mesa/lib $X_LIBS"
918 if test -d /opt/xpm/lib/X11 ; then
919 X_CFLAGS="-I/opt/xpm/include $X_CFLAGS"
920 X_LIBS="-L/opt/xpm/lib/X11 $X_LIBS"
923 # On HPUX, default to installing in /opt/xscreensaver/ instead of
924 # in /usr/local/, unless there is already an xscreensaver in
925 # /usr/local/bin/. This can be overridden with the --prefix arg
926 # to configure. I'm not sure this is the right thing to do, but
927 # Richard Lloyd says so...
929 if test \! -x /usr/local/bin/xscreensaver ; then
930 ac_default_prefix=/opt/xscreensaver
936 # Thanks for not making xmkmf find this by default, pinheads.
937 # And thanks for moving things around again, too. Is this
938 # really the standard location now? What happened to the
939 # joke that this kind of thing went in /opt?
940 # cthomp says "answer: CDE (Common Disorganized Environment)"
942 if test -f /usr/dt/include/Xm/Xm.h ; then
943 X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
944 MOTIF_LIBS="$MOTIF_LIBS -L/usr/dt/lib -R/usr/dt/lib"
946 # Some versions of Slowlaris Motif require -lgen. But not all. Why?
947 AC_CHECK_LIB(gen, regcmp, [MOTIF_LIBS="$MOTIF_LIBS -lgen"])
953 # On MacOS X (10.x with "fink"), many things are under /sw/.
955 if test -d /sw/include ; then
956 X_CFLAGS="-I/sw/include $X_CFLAGS"
957 X_LIBS="-L/sw/lib $X_LIBS"
964 ###############################################################################
966 # Some utility functions to make checking for X things easier.
968 ###############################################################################
970 # Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
972 AC_DEFUN(AC_CHECK_X_HEADER, [
973 ac_save_CPPFLAGS="$CPPFLAGS"
974 if test \! -z "$includedir" ; then
975 CPPFLAGS="$CPPFLAGS -I$includedir"
977 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
978 CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
979 AC_CHECK_HEADER([$1],[$2],[$3],[$4])
980 CPPFLAGS="$ac_save_CPPFLAGS"])
982 # Like AC_EGREP_HEADER, but it uses the already-computed -I directories.
984 AC_DEFUN(AC_EGREP_X_HEADER, [
985 ac_save_CPPFLAGS="$CPPFLAGS"
986 if test \! -z "$includedir" ; then
987 CPPFLAGS="$CPPFLAGS -I$includedir"
989 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
990 CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
991 AC_EGREP_HEADER([$1], [$2], [$3], [$4])
992 CPPFLAGS="$ac_save_CPPFLAGS"])
994 # Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
996 AC_DEFUN(AC_TRY_X_COMPILE, [
997 ac_save_CPPFLAGS="$CPPFLAGS"
998 if test \! -z "$includedir" ; then
999 CPPFLAGS="$CPPFLAGS -I$includedir"
1001 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1002 CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
1003 AC_TRY_COMPILE([$1], [$2], [$3], [$4])
1004 CPPFLAGS="$ac_save_CPPFLAGS"])
1007 # Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
1008 # Use this sparingly; it probably doesn't work very well on X programs.
1010 AC_DEFUN(AC_CHECK_X_LIB, [
1011 ac_save_CPPFLAGS="$CPPFLAGS"
1012 ac_save_LDFLAGS="$LDFLAGS"
1013 # ac_save_LIBS="$LIBS"
1015 if test \! -z "$includedir" ; then
1016 CPPFLAGS="$CPPFLAGS -I$includedir"
1018 # note: $X_CFLAGS includes $x_includes
1019 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1021 if test \! -z "$libdir" ; then
1022 LDFLAGS="$LDFLAGS -L$libdir"
1024 # note: $X_LIBS includes $x_libraries
1025 LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
1027 CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
1028 LDFLAGS=`eval eval eval eval eval eval eval eval eval echo $LDFLAGS`
1029 AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
1030 CPPFLAGS="$ac_save_CPPFLAGS"
1031 LDFLAGS="$ac_save_LDFLAGS"
1032 # LIBS="$ac_save_LIBS"
1035 # Like AC_TRY_RUN, but it uses the already-computed -I directories.
1036 # (But not the -L directories!)
1038 AC_DEFUN(AC_TRY_X_RUN, [
1039 ac_save_CPPFLAGS="$CPPFLAGS"
1040 if test \! -z "$includedir" ; then
1041 CPPFLAGS="$CPPFLAGS -I$includedir"
1043 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1044 CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
1045 AC_TRY_RUN([$1], [$2], [$3], [$4])
1046 CPPFLAGS="$ac_save_CPPFLAGS"])
1050 # Usage: HANDLE_X_PATH_ARG([variable_name],
1051 # [--command-line-option],
1052 # [descriptive string])
1054 # All of the --with options take three forms:
1056 # --with-foo (or --with-foo=yes)
1057 # --without-foo (or --with-foo=no)
1060 # This function, HANDLE_X_PATH_ARG, deals with the /DIR case. When it sees
1061 # a directory (string beginning with a slash) it checks to see whether
1062 # /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
1065 AC_DEFUN(HANDLE_X_PATH_ARG, [
1071 AC_MSG_CHECKING([for [$3] headers])
1074 X_CFLAGS="-I$d $X_CFLAGS"
1077 AC_MSG_RESULT(not found ($d: no such directory))
1080 AC_MSG_CHECKING([for [$3] libs])
1083 X_LIBS="-L$d $X_LIBS"
1086 AC_MSG_RESULT(not found ($d: no such directory))
1089 # replace the directory string with "yes".
1096 echo "error: argument to [$2] must be \"yes\", \"no\", or a directory."
1097 echo " If it is a directory, then \`DIR/include' will be added to"
1098 echo " the -I list, and \`DIR/lib' will be added to the -L list."
1106 ###############################################################################
1107 ###############################################################################
1109 # End of function definitions. Now start actually executing stuff.
1111 ###############################################################################
1112 ###############################################################################
1114 # WTF! autoconf emits this *way* too late. Do it earlier.
1115 test "x$prefix" = xNONE && prefix=$ac_default_prefix
1116 test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
1119 # random compiler setup
1122 AC_NO_LONG_STRING_WARNINGS
1123 AC_NO_MISPLACED_DECLARATIONS
1125 AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
1132 # stuff for Makefiles
1134 AC_PROG_INSTALL_DIRS
1137 # By default, autoconf sets INSTALL_SCRIPT to '${INSTALL_PROGRAM}'.
1138 # That's wrong: it should be set to '${INSTALL}', so that one can
1139 # implement the "install-strip" target properly (strip executables,
1140 # but do not try to strip scripts.)
1142 INSTALL_SCRIPT='${INSTALL}'
1146 AC_CHECK_HEADERS(unistd.h)
1154 AC_GETTIMEOFDAY_ARGS
1155 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk)
1156 AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
1157 AC_CHECK_FUNCS(setlocale)
1160 AC_CHECK_HEADERS(crypt.h sys/select.h)
1163 if test -z "$PERL" ; then
1164 # don't let it be blank...
1170 if test "$have_x" != yes; then
1171 AC_MSG_ERROR(Couldn't find X11 headers/libs. Try `$0 --help'.)
1174 AC_PATH_X_APP_DEFAULTS
1178 AC_MSG_CHECKING(whether this is MacOS X)
1185 AC_MSG_RESULT($ac_macosx)
1188 ###############################################################################
1192 ###############################################################################
1195 GETTEXT_PACKAGE=xscreensaver
1196 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
1197 [This is the name of the gettext package to use.])
1198 AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE",
1199 [This is the same as GETTEXT_PACKAGE, but for the glade
1201 AC_SUBST(GETTEXT_PACKAGE)
1203 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"
1205 MKINSTALLDIRS="$INSTALL_DIRS"
1208 ###############################################################################
1210 # Check for -lXmu (some fucked up vendors don't ship it...)
1212 ###############################################################################
1215 AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes],,
1216 [#include <stdlib.h>
1218 #include <X11/Intrinsic.h>])
1219 if test "$have_xmu" = no ; then
1220 XMU_SRCS='$(UTILS_SRC)/xmu.c'
1221 XMU_OBJS='$(UTILS_BIN)/xmu.o'
1231 ###############################################################################
1233 # Check for the SunOS 4.1.x _get_wmShellWidgetClass bug.
1234 # See comp.windows.x FAQ question 124. The right fix is to
1235 # get OpenWindows 3.0 patches 100512-02 and 100573-03.
1237 ###############################################################################
1239 if test "$have_xmu" = yes ; then
1242 AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
1243 ac_cv_sunos_xmu_bug,
1244 [ac_save_LDFLAGS="$LDFLAGS"
1245 if test \! -z "$x_libraries" ; then
1246 LDFLAGS="$LDFLAGS -L$x_libraries"
1248 # Note: this trick never works! (Generally.)
1249 # We're only getting away with using AC_TRY_LINK
1250 # with X libraries because we know it's SunOS.
1251 LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
1253 [ac_cv_sunos_xmu_bug=no],
1254 [ac_cv_sunos_xmu_bug=yes])
1255 LDFLAGS="$ac_save_LDFLAGS"])
1256 if test "$ac_cv_sunos_xmu_bug" = yes ; then
1257 AC_CACHE_CHECK([whether the compiler understands -static],
1259 [ac_save_LDFLAGS="$LDFLAGS"
1260 LDFLAGS="$LDFLAGS -static"
1261 AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
1262 LDFLAGS="$ac_save_LDFLAGS"])
1263 if test "$ac_cv_ld_static" = yes ; then
1264 LDFLAGS="$LDFLAGS -static"
1266 LDFLAGS="$LDFLAGS -Bstatic"
1274 ###############################################################################
1276 # Handle the --with-hackdir option
1278 ###############################################################################
1281 with_hackdir_req=unspecified
1282 AC_ARG_WITH(hackdir,[
1284 Installation options:
1285 --with-hackdir=DIR Where to install the hundreds of demo executables.
1286 Default: `PREFIX/libexec/xscreensaver/'],
1287 [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
1289 if test x"$with_hackdir" = xyes; then
1290 HACKDIR='${libexecdir}/xscreensaver'
1291 elif test x"$with_hackdir" = xno; then
1294 HACKDIR=$with_hackdir
1297 # canonicalize slashes.
1298 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
1300 # Expand HACKDIR as HACKDIR_FULL
1301 HACKDIR_FULL=`eval eval eval eval eval eval eval eval eval echo $HACKDIR`
1303 # This option used to be called --enable-subdir; make sure that is no longer
1304 # used, since configure brain-damagedly ignores unknown --enable options.
1307 AC_ARG_ENABLE(subdir,,[obsolete_enable=yes])
1308 if test -n "$obsolete_enable"; then
1309 echo "error: the --enable-subdir option has been replaced with"
1310 echo " the new --with-hackdir option; see \`configure --help'"
1311 echo " for more information."
1316 ###############################################################################
1318 # Handle the --with-configdir option
1319 # Help for --with-x-app-defaults option added..
1321 ###############################################################################
1324 with_configdir_req=unspecified
1325 AC_ARG_WITH(configdir,
1326 [ --with-configdir=DIR Where to install the data files that describe each
1327 of the display modes to the GUI.
1328 Default: `PREFIX/share/xscreensaver/config/'
1329 --with-x-app-defaults=DIR
1330 Where to install xscreensaver configuration file.
1332 [with_configdir="$withval"; with_configdir_req="$withval"],
1333 [with_configdir=yes])
1335 if test x"$with_configdir" = xyes; then
1336 HACK_CONF_DIR='${datadir}/xscreensaver/config'
1337 elif test x"$with_configdir" = xno; then
1338 echo "error: must be yes, or a pathname: --with-configdir=$with_configdir"
1341 # there must be a better way than this...
1342 if test -z "`echo $with_configdir | sed 's@^/.*@@'`" ; then
1344 HACK_CONF_DIR=$with_configdir
1347 HACK_CONF_DIR="\${exec_prefix}$with_configdir"
1354 ###############################################################################
1356 # Check for the SGI SCREEN_SAVER server extension.
1358 ###############################################################################
1361 with_sgi_req=unspecified
1362 AC_ARG_WITH(sgi-ext,
1363 [Except where noted, all of the --with options below can also take a
1364 directory argument: for example, `--with-motif=/opt/Motif'. That would
1365 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
1366 to be added to the -L list, assuming those directories exist.
1368 By default, support for each of these options will be built in, if the
1369 relevant library routines exist. At run time, they will then be used
1370 only if the X server being used supports them. Each --with option has
1371 a corresponding --without option, to override building support for them
1374 Screen blanking and idle-detection options:
1376 --with-sgi-ext Include support for the SGI SCREEN_SAVER extension.],
1377 [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
1379 HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
1381 if test "$with_sgi" = yes; then
1382 AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
1384 AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)],,
1385 [#include <X11/Xlib.h>])
1387 elif test "$with_sgi" != no; then
1388 echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
1393 ###############################################################################
1395 # Check for the XIDLE server extension.
1397 ###############################################################################
1400 with_xidle_req=unspecified
1401 AC_ARG_WITH(xidle-ext,
1402 [ --with-xidle-ext Include support for the XIDLE extension.],
1403 [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
1405 HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
1407 if test "$with_xidle" = yes; then
1408 AC_CHECK_X_HEADER(X11/extensions/xidle.h,
1410 AC_DEFINE(HAVE_XIDLE_EXTENSION)],,
1411 [#include <X11/Xlib.h>])
1412 elif test "$with_xidle" != no; then
1413 echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
1418 ###############################################################################
1420 # Check for the SGI-VIDEO-CONTROL server extension.
1422 ###############################################################################
1425 with_sgivc_req=unspecified
1426 AC_ARG_WITH(sgivc-ext,
1427 [ --with-sgivc-ext Include support for the SGI-VIDEO-CONTROL extension.],
1428 [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
1430 HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
1432 if test "$with_sgivc" = yes; then
1434 # first check for XSGIvc.h
1435 AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes],,
1436 [#include <X11/Xlib.h>])
1438 # if that succeeded, then check for the -lXsgivc
1439 if test "$have_sgivc" = yes; then
1441 AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
1442 [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true],
1446 # if that succeeded, then we've really got it.
1447 if test "$have_sgivc" = yes; then
1448 AC_DEFINE(HAVE_SGI_VC_EXTENSION)
1451 elif test "$with_sgivc" != no; then
1452 echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
1457 ###############################################################################
1459 # Check for the DPMS server extension.
1461 ###############################################################################
1464 with_dpms_req=unspecified
1465 AC_ARG_WITH(dpms-ext,
1466 [ --with-dpms-ext Include support for the DPMS extension.],
1467 [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
1469 HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
1471 if test "$with_dpms" = yes; then
1473 # first check for dpms.h
1474 AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes],,
1475 [#include <X11/Xlib.h>
1476 #include <X11/Xmd.h>])
1478 # if that succeeded, then check for the DPMS code in the libraries
1479 if test "$have_dpms" = yes; then
1481 # first look in -lXext (this is where it is with XFree86 4.0)
1483 AC_CHECK_X_LIB(Xext, DPMSInfo, [have_dpms=yes], [true], -lXext -lX11)
1485 # if that failed, look in -lXdpms (this is where it was in XFree86 3.x)
1486 if test "$have_dpms" = no; then
1487 AC_CHECK_X_LIB(Xdpms, DPMSInfo,
1488 [have_dpms=yes; XDPMS_LIBS="-lXdpms"], [true],
1494 # if that succeeded, then we've really got it.
1495 if test "$have_dpms" = yes; then
1496 AC_DEFINE(HAVE_DPMS_EXTENSION)
1499 elif test "$with_dpms" != no; then
1500 echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
1505 ###############################################################################
1507 # Check for the XINERAMA server extension.
1509 ###############################################################################
1512 with_xinerama_req=unspecified
1513 AC_ARG_WITH(xinerama-ext,
1514 [ --with-xinerama-ext Include support for the XINERAMA extension.],
1515 [with_xinerama="$withval"; with_xinerama_req="$withval"],[with_xinerama=yes])
1517 HANDLE_X_PATH_ARG(with_xinerama, --with-xinerama-ext, XINERAMA)
1519 if test "$with_xinerama" = yes; then
1521 # first check for Xinerama.h
1522 AC_CHECK_X_HEADER(X11/extensions/Xinerama.h, [have_xinerama=yes],,
1523 [#include <X11/Xlib.h>])
1525 # if that succeeded, then check for the XINERAMA code in the libraries
1526 if test "$have_xinerama" = yes; then
1528 # first look in -lXext
1530 AC_CHECK_X_LIB(Xext, XineramaQueryScreens, [have_xinerama=yes], [true],
1533 # if that failed, look in -lXinerama (this is where it is in XFree86 4.1.)
1534 if test "$have_xinerama" = no; then
1535 AC_CHECK_X_LIB(Xinerama, XineramaQueryScreens,
1536 [have_xinerama=yes; XINERAMA_LIBS="-lXinerama"],
1537 [true], -lXext -lX11)
1541 # if that succeeded, then we've really got it.
1542 if test "$have_xinerama" = yes; then
1543 AC_DEFINE(HAVE_XINERAMA)
1546 elif test "$with_xinerama" != no; then
1547 echo "error: must be yes or no: --with-xinerama-ext=$with_xinerama"
1552 ###############################################################################
1554 # Check for the XINPUT server extension.
1556 ###############################################################################
1559 with_xinput_req=unspecified
1560 AC_ARG_WITH(xinput-ext,
1561 [ --with-xinput-ext Include support for the XInput extension.],
1562 [with_xinput="$withval"; with_xinput_req="$withval"], [with_xinput=yes])
1564 HANDLE_X_PATH_ARG(with_xinput, --with-xinput-ext, XINPUT)
1566 if test "$with_xinput" = yes; then
1568 # first check for Xinput.h
1569 AC_CHECK_X_HEADER(X11/extensions/XInput.h, [have_xinput=yes],,
1570 [#include <X11/Xlib.h>])
1572 # if that succeeded, then check for libXi
1573 if test "$have_xinput" = yes; then
1575 AC_CHECK_X_LIB(Xi, XListInputDevices,
1576 [have_xinput=yes; SAVER_LIBS="$SAVER_LIBS -lXi"],
1577 [true], -lXext -lX11)
1580 # if that succeeded, then we've really got it.
1581 if test "$have_xinput" = yes; then
1582 AC_DEFINE(HAVE_XINPUT)
1585 elif test "$with_xinput" != no; then
1586 echo "error: must be yes or no: --with-xinput-ext=$with_xinput"
1591 ###############################################################################
1593 # Check for the XF86VMODE server extension (for virtual screens.)
1595 ###############################################################################
1598 with_xf86vmode_req=unspecified
1599 AC_ARG_WITH(xf86vmode-ext,
1600 [ --with-xf86vmode-ext Include support for XFree86 virtual screens.],
1601 [with_xf86vmode="$withval"; with_xf86vmode_req="$withval"],
1602 [with_xf86vmode=yes])
1604 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
1608 if test "$with_xf86vmode" = yes; then
1610 # first check for xf86vmode.h
1611 AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes],,
1612 [#include <X11/Xlib.h>])
1614 # if that succeeded, then check for the -lXxf86vm
1615 if test "$have_xf86vmode" = yes; then
1617 AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
1618 [have_xf86vmode=yes;
1619 VIDMODE_LIBS="-lXxf86vm";
1620 SAVER_LIBS="$SAVER_LIBS $VIDMODE_LIBS"],
1621 [true], -lXext -lX11)
1624 # if that succeeded, then we've really got it.
1625 if test "$have_xf86vmode" = yes; then
1626 AC_DEFINE(HAVE_XF86VMODE)
1629 elif test "$with_xf86vmode" != no; then
1630 echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
1635 ###############################################################################
1637 # Check for the XF86VMODE server extension (for gamma fading.)
1639 ###############################################################################
1642 have_xf86gamma_ramp=no
1643 with_xf86gamma_req=unspecified
1644 AC_ARG_WITH(xf86gamma-ext,
1645 [ --with-xf86gamma-ext Include support for XFree86 gamma fading.],
1646 [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"],
1647 [with_xf86gamma=yes])
1649 HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma)
1651 if test "$with_xf86gamma" = yes; then
1653 # first check for xf86vmode.h, if we haven't already
1654 if test "$have_xf86vmode" = yes; then
1657 AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes],,
1658 [#include <X11/Xlib.h>])
1661 # if that succeeded, then check for the -lXxf86vm
1662 if test "$have_xf86gamma" = yes; then
1664 AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma,
1665 [have_xf86gamma=yes],
1666 [true], -lXext -lX11)
1669 # check for the Ramp versions of the functions too.
1670 if test "$have_xf86gamma" = yes; then
1671 have_xf86gamma_ramp=no
1672 AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGammaRamp,
1673 [have_xf86gamma_ramp=yes],
1674 [true], -lXext -lX11)
1677 # if those tests succeeded, then we've really got the functions.
1678 if test "$have_xf86gamma" = yes; then
1679 AC_DEFINE(HAVE_XF86VMODE_GAMMA)
1682 if test "$have_xf86gamma_ramp" = yes; then
1683 AC_DEFINE(HAVE_XF86VMODE_GAMMA_RAMP)
1686 # pull in the lib, if we haven't already
1687 if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then
1688 SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
1691 elif test "$with_xf86gamma" != no; then
1692 echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode"
1697 ###############################################################################
1699 # Check for the RANDR (Resize and Rotate) server extension.
1701 # We need this to detect when the resolution of the desktop
1702 # has changed out from under us (this is a newer, different
1703 # mechanism than the XF86VMODE virtual viewports.)
1705 ###############################################################################
1708 with_randr_req=unspecified
1709 AC_ARG_WITH(randr-ext,
1710 [ --with-randr-ext Include support for the X Resize+Rotate extension.],
1711 [with_randr="$withval"; with_randr_req="$withval"],[with_randr=yes])
1713 HANDLE_X_PATH_ARG(with_randr, --with-randr-ext, RANDR)
1715 if test "$with_randr" = yes; then
1717 # first check for Xrandr.h
1718 AC_CHECK_X_HEADER(X11/extensions/Xrandr.h, [have_randr=yes],,
1719 [#include <X11/Xlib.h>])
1721 # if that succeeded, then check for the XRR code in the libraries
1722 if test "$have_randr" = yes; then
1724 # RANDR probably needs -lXrender
1726 AC_CHECK_X_LIB(Xrender, XRenderSetSubpixelOrder,
1727 [xrender_libs="-lXrender"], [true], -lXext -lX11)
1729 # first look for RANDR in -lXext
1731 AC_CHECK_X_LIB(Xext, XRRGetScreenInfo,
1732 [have_randr=yes; SAVER_LIBS="$SAVER_LIBS $xrender_libs"],
1733 [true], $xrender_libs -lXext -lX11)
1735 # if that failed, look in -lXrandr
1736 if test "$have_randr" = no; then
1737 AC_CHECK_X_LIB(Xrandr, XRRGetScreenInfo,
1738 [have_randr=yes; SAVER_LIBS="$SAVER_LIBS -lXrandr $xrender_libs"],
1739 [true], $xrender_libs -lXext -lX11)
1743 # if that succeeded, then we've really got it.
1744 if test "$have_randr" = yes; then
1745 AC_DEFINE(HAVE_RANDR)
1747 # Now check for version 1.2 in the same libs.
1748 # Try to compile, since on MacOS 10.5.7, headers are older than libs!
1749 AC_CACHE_CHECK([for XRRGetScreenResources], ac_cv_randr_12,
1751 AC_TRY_X_COMPILE([#include <stdlib.h>
1752 #include <X11/Xlib.h>
1753 #include <X11/extensions/Xrandr.h>],
1754 [XRRScreenResources *res =
1755 XRRGetScreenResources (0, 0);],
1756 [ac_cv_randr_12=yes],
1757 [ac_cv_randr_12=no])])
1758 if test "$ac_cv_randr_12" = yes ; then
1759 AC_DEFINE(HAVE_RANDR_12)
1761 # AC_CHECK_X_LIB(c, XRRGetOutputInfo, [AC_DEFINE(HAVE_RANDR_12)],
1762 # [true], $SAVER_LIBS)
1766 elif test "$with_randr" != no; then
1767 echo "error: must be yes or no: --with-randr-ext=$with_randr"
1772 ###############################################################################
1774 # Check for XF86MiscSetGrabKeysState (but only bother if we are already
1775 # using other XF86 stuff.)
1777 ###############################################################################
1779 have_xf86miscsetgrabkeysstate=no
1780 if test "$have_xf86gamma" = yes -o "$have_xf86vmode" = yes; then
1781 AC_CHECK_X_LIB(Xxf86misc, XF86MiscSetGrabKeysState,
1782 [have_xf86miscsetgrabkeysstate=yes],
1783 [true], -lXext -lX11)
1784 if test "$have_xf86miscsetgrabkeysstate" = yes ; then
1785 SAVER_LIBS="$SAVER_LIBS -lXxf86misc"
1786 AC_DEFINE(HAVE_XF86MISCSETGRABKEYSSTATE)
1791 ###############################################################################
1793 # Check for HP XHPDisableReset and XHPEnableReset.
1795 ###############################################################################
1797 AC_MSG_CHECKING([for XHPDisableReset in X11/XHPlib.h])
1798 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
1799 [AC_DEFINE(HAVE_XHPDISABLERESET)
1800 SAVER_LIBS="-lXhp11 $SAVER_LIBS"
1801 AC_MSG_RESULT(yes)],
1802 [AC_MSG_RESULT(no)])
1805 ###############################################################################
1807 # Check for /proc/interrupts.
1809 ###############################################################################
1811 have_proc_interrupts=no
1812 with_proc_interrupts_req=unspecified
1813 AC_ARG_WITH(proc-interrupts,
1814 [ --with-proc-interrupts Include support for consulting the /proc/interrupts
1815 file to notice keyboard activity.],
1816 [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
1817 [with_proc_interrupts=yes])
1819 if test "$with_proc_interrupts" = yes; then
1821 # Note that we may be building in an environment (e.g. Debian buildd chroot)
1822 # without a proper /proc filesystem. If /proc/interrupts exists, then we'll
1823 # check that it has the bits we need, but otherwise we'll just go on faith.
1825 have_proc_interrupts=yes
1827 if test -f /proc/interrupts; then
1828 AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
1829 ac_cv_have_proc_interrupts,
1830 [ac_cv_have_proc_interrupts=no
1831 if grep 'keyboard\|i8042' /proc/interrupts >/dev/null 2>&1 ; then
1832 ac_cv_have_proc_interrupts=yes
1835 have_proc_interrupts=$ac_cv_have_proc_interrupts
1838 if test "$have_proc_interrupts" = yes; then
1839 AC_DEFINE(HAVE_PROC_INTERRUPTS)
1842 elif test "$with_proc_interrupts" != no; then
1843 echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
1848 ###############################################################################
1850 # The --enable-locking option
1852 ###############################################################################
1854 AC_ARG_ENABLE(locking,[Screen locking options:
1855 --enable-locking Compile in support for locking the display.
1856 --disable-locking Do not allow locking at all.],
1857 [enable_locking="$enableval"],
1858 [if test "$ac_macosx" = yes; then
1859 # We can't lock on MacOS X, so default to not compiling in support for it.
1860 # But allow --enable-locking to override that, so I can debug Linux locking
1866 if test "$enable_locking" = yes; then
1868 elif test "$enable_locking" = no; then
1869 AC_DEFINE(NO_LOCKING)
1871 echo "error: must be yes or no: --enable-locking=$enable_locking"
1876 ###############################################################################
1878 # Whether to allow root password to unblank.
1880 ###############################################################################
1881 AC_ARG_ENABLE(root-passwd, [
1882 --enable-root-passwd Allow root passwd to unlock screen.
1883 --disable-root-passwd Do not allow that.],
1884 [enable_root_passwd="$enableval"],[enable_root_passwd=yes])
1885 if test "$enable_root_passwd" = yes; then
1886 AC_DEFINE(ALLOW_ROOT_PASSWD)
1888 elif test "$enable_root_passwd" != no; then
1889 echo "error: must be yes or no: --enable-root-passwd=$enable_root_passwd"
1893 ###############################################################################
1897 ###############################################################################
1901 # Solaris systems tend to come with PAM misconfigured.
1902 # Don't build it by default, even if the headers exist.
1906 # Default to building PAM support on all other systems, if it exists.
1907 with_pam_default=yes
1912 with_pam_req=unspecified
1915 [ --with-pam Include support for PAM (Pluggable Auth Modules.)],
1916 [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
1918 AC_ARG_WITH([pam_service_name],
1919 AC_HELP_STRING([--with-pam-service-name=NAME],
1920 [NAME is the name of the PAM service that
1921 xscreensaver will authenticate as.]),
1922 [pam_service_name="$withval"],[pam_service_name="xscreensaver"])
1924 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1926 if test "$enable_locking" = yes -a "$with_pam" = yes; then
1927 AC_CACHE_CHECK([for PAM], ac_cv_pam,
1928 [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1931 if test "$ac_cv_pam" = yes ; then
1934 AC_DEFINE_UNQUOTED(PAM_SERVICE_NAME,"$pam_service_name")
1936 PASSWD_LIBS="${PASSWD_LIBS} -lpam"
1938 # libpam typically requires dlopen and dlsym. On FreeBSD,
1939 # those are in libc. On Linux and Solaris, they're in libdl.
1940 AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
1942 # On Linux, sigtimedwait() is in libc; on Solaris, it's in librt.
1944 AC_CHECK_LIB(c, sigtimedwait,
1946 AC_DEFINE(HAVE_SIGTIMEDWAIT)])
1947 if test "$have_timedwait" = no ; then
1948 AC_CHECK_LIB(rt, sigtimedwait, [have_timedwait=yes
1949 AC_DEFINE(HAVE_SIGTIMEDWAIT)
1950 PASSWD_LIBS="${PASSWD_LIBS} -lrt"])
1953 AC_MSG_CHECKING(how to call pam_strerror)
1954 AC_CACHE_VAL(ac_cv_pam_strerror_args,
1955 [AC_TRY_X_COMPILE([#include <stdio.h>
1957 #include <security/pam_appl.h>],
1958 [pam_handle_t *pamh = 0;
1959 char *s = pam_strerror(pamh, PAM_SUCCESS);],
1960 [ac_pam_strerror_args=2],
1961 [AC_TRY_X_COMPILE([#include <stdio.h>
1963 #include <security/pam_appl.h>],
1965 pam_strerror(PAM_SUCCESS);],
1966 [ac_pam_strerror_args=1],
1967 [ac_pam_strerror_args=0])])
1968 ac_cv_pam_strerror_args=$ac_pam_strerror_args])
1969 ac_pam_strerror_args=$ac_cv_pam_strerror_args
1970 if test "$ac_pam_strerror_args" = 1 ; then
1971 AC_MSG_RESULT(one argument)
1972 elif test "$ac_pam_strerror_args" = 2 ; then
1973 AC_DEFINE(PAM_STRERROR_TWO_ARGS)
1974 AC_MSG_RESULT(two arguments)
1976 AC_MSG_RESULT(unknown)
1979 # Check pam_fail_delay
1980 AC_MSG_CHECKING(pam_fail_delay in -lpam)
1981 AC_CACHE_VAL(ac_cv_pam_fail_delay,
1982 [ac_save_LDFLAGS="$LDFLAGS"
1984 AC_TRY_LINK([#include <security/pam_appl.h>],
1985 [pam_handle_t *pamh = 0;
1986 unsigned int usec = 1;
1987 int status = pam_fail_delay (pamh, usec);],
1988 [ac_pam_fail_delay=yes],
1989 [ac_pam_fail_delay=no])
1990 ac_cv_pam_fail_delay=$ac_pam_fail_delay,
1991 LDFLAGS=$ac_save_LDFLAGS])
1993 if test "$ac_pam_fail_delay" = yes ; then
1995 AC_DEFINE(HAVE_PAM_FAIL_DELAY)
2004 ###############################################################################
2006 # Check for Kerberos.
2008 ###############################################################################
2012 with_kerberos_req=unspecified
2014 AC_ARG_WITH(kerberos,
2015 [ --with-kerberos Include support for Kerberos authentication.],
2016 [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
2018 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
2020 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
2021 AC_CACHE_CHECK([for Kerberos 4], ac_cv_kerberos,
2022 [AC_TRY_X_COMPILE([#include <krb.h>],,
2023 [ac_cv_kerberos=yes],
2024 [ac_cv_kerberos=no])])
2025 AC_CACHE_CHECK([for Kerberos 5], ac_cv_kerberos5,
2026 [AC_TRY_X_COMPILE([#include <kerberosIV/krb.h>],,
2027 [ac_cv_kerberos5=yes],
2028 [ac_cv_kerberos5=no])])
2030 if test "$ac_cv_kerberos" = yes ; then
2032 AC_DEFINE(HAVE_KERBEROS)
2035 if test "$ac_cv_kerberos5" = yes ; then
2037 # Andrew Snare <ajs@pigpond.com> wrote:
2039 # You were assuming that if kerberosV (krb5) was found, then kerberosIV
2040 # (krb4) was also available. This turns out not to be the case with
2041 # mit-krb-1.2.7; apparently backwards-compatibility with KerberosIV
2044 # So, disable kerberosV support if libkrb4 can't be found.
2045 # This is not the best solution, but it makes the compile not fail.
2047 AC_CHECK_X_LIB(krb4, krb_get_tf_realm,
2048 [have_kerberos=yes],
2050 if test "$have_kerberos" = yes ; then
2052 AC_DEFINE(HAVE_KERBEROS)
2053 AC_DEFINE(HAVE_KERBEROS5)
2056 AC_MSG_WARN([Cannot find compat lib (libkrb4) needed to use Kerberos 5])
2061 if test "$have_kerberos5" = yes ; then
2062 # from Matt Knopp <mhat@infocalypse.netlag.com>
2063 # (who got it from amu@mit.edu)
2065 PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"
2067 # jwz: MacOS X uses -lkrb5, but not -lcrypt
2068 AC_CHECK_X_LIB(crypt, crypt, [PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
2070 elif test "$have_kerberos" = yes ; then
2071 # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
2072 PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
2075 if test "$have_kerberos" = yes ; then
2076 AC_CHECK_FUNC(res_search,,
2077 AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
2078 AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
2084 ###############################################################################
2086 # Check for the nine billion variants of shadow passwords...
2088 ###############################################################################
2093 with_shadow_req=unspecified
2096 [ --with-shadow Include support for shadow password authentication.],
2097 [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
2099 HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
2101 if test "$enable_locking" = no ; then
2107 ###############################################################################
2109 # Check for Sun "adjunct" passwords.
2111 ###############################################################################
2113 if test "$with_shadow" = yes ; then
2114 AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
2115 [AC_TRY_X_COMPILE([#include <stdlib.h>
2117 #include <sys/types.h>
2118 #include <sys/label.h>
2119 #include <sys/audit.h>
2120 #include <pwdadj.h>],
2121 [struct passwd_adjunct *p = getpwanam("nobody");
2122 const char *pw = p->pwa_passwd;],
2123 [ac_cv_sun_adjunct=yes],
2124 [ac_cv_sun_adjunct=no])])
2125 if test "$ac_cv_sun_adjunct" = yes; then
2126 have_shadow_adjunct=yes
2133 ###############################################################################
2135 # Check for DEC and SCO so-called "enhanced" security.
2137 ###############################################################################
2139 if test "$with_shadow" = yes ; then
2140 AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
2141 [AC_TRY_X_COMPILE([#include <stdlib.h>
2143 #include <sys/types.h>
2145 #include <sys/security.h>
2147 [struct pr_passwd *p;
2149 set_auth_parameters(0, 0);
2150 check_auth_parameters();
2151 p = getprpwnam("nobody");
2152 pw = p->ufld.fd_encrypt;],
2153 [ac_cv_enhanced_passwd=yes],
2154 [ac_cv_enhanced_passwd=no])])
2155 if test $ac_cv_enhanced_passwd = yes; then
2156 have_shadow_enhanced=yes
2160 # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
2161 # (I'm told it needs -lcurses too, but I don't understand why.)
2162 # But on DEC, it's in -lsecurity.
2164 AC_CHECK_LIB(prot, getprpwnam,
2165 [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
2166 [AC_CHECK_LIB(security, getprpwnam,
2167 [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
2172 ###############################################################################
2174 # Check for HP's entry in the "Not Invented Here" Sweepstakes.
2176 ###############################################################################
2178 if test "$with_shadow" = yes ; then
2179 AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
2180 [AC_TRY_X_COMPILE([#include <stdlib.h>
2182 #include <sys/types.h>
2184 #include <hpsecurity.h>
2186 [struct s_passwd *p = getspwnam("nobody");
2187 const char *pw = p->pw_passwd;],
2188 [ac_cv_hpux_passwd=yes],
2189 [ac_cv_hpux_passwd=no])])
2190 if test "$ac_cv_hpux_passwd" = yes; then
2191 have_shadow_hpux=yes
2195 # on HPUX, bigcrypt is in -lsec
2196 AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
2201 ###############################################################################
2203 # Check for FreeBSD-style shadow passwords.
2205 # On FreeBSD, getpwnam() and friends work just like on non-shadow-
2206 # password systems -- except you only get stuff in the pw_passwd field
2207 # if the running program is setuid. So, guess that we've got this
2208 # lossage to contend with if /etc/master.passwd exists, and default to
2209 # a setuid installation.
2211 ###############################################################################
2213 if test "$with_shadow" = yes ; then
2214 AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
2215 [if test -f /etc/master.passwd ; then
2216 ac_cv_master_passwd=yes
2218 ac_cv_master_passwd=no
2220 if test "$ac_cv_master_passwd" = yes; then
2226 ###############################################################################
2228 # Check for traditional (ha!) shadow passwords.
2230 ###############################################################################
2232 if test "$with_shadow" = yes ; then
2233 AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
2234 [AC_TRY_X_COMPILE([#include <stdlib.h>
2236 #include <sys/types.h>
2238 #include <shadow.h>],
2239 [struct spwd *p = getspnam("nobody");
2240 const char *pw = p->sp_pwdp;],
2242 [ac_cv_shadow=no])])
2243 if test "$ac_cv_shadow" = yes; then
2247 # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
2249 AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
2250 if test "$have_getspnam" = no ; then
2251 AC_CHECK_LIB(gen, getspnam,
2252 [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
2258 ###############################################################################
2260 # Check for other libraries needed for non-shadow passwords.
2262 ###############################################################################
2264 if test "$enable_locking" = yes ; then
2266 # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
2268 AC_CHECK_LIB(c, crypt, [have_crypt=yes])
2269 if test "$have_crypt" = no ; then
2270 AC_CHECK_LIB(crypt, crypt,
2271 [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
2276 # Most of the above shadow mechanisms will have set need_setuid to yes,
2277 # if they were found. But, on some systems, we need setuid even when
2278 # using plain old vanilla passwords.
2280 if test "$enable_locking" = yes ; then
2282 *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
2289 if test "$have_shadow_adjunct" = yes ; then
2290 AC_DEFINE(HAVE_ADJUNCT_PASSWD)
2291 elif test "$have_shadow_enhanced" = yes ; then
2292 AC_DEFINE(HAVE_ENHANCED_PASSWD)
2293 elif test "$have_shadow_hpux" = yes ; then
2294 AC_DEFINE(HAVE_HPUX_PASSWD)
2295 elif test "$have_shadow" = yes ; then
2296 AC_DEFINE(HAVE_SHADOW_PASSWD)
2300 ###############################################################################
2302 # Check for external password helper
2303 # On SuSE, instead of having xscreensaver be a setuid program, they
2304 # fork an external program that takes the password on stdin, and
2305 # returns true if that password is a valid one. Then only that
2306 # smaller program needs to be setuid.
2308 # (Note that this external program is not a GUI: the GUI is still
2309 # all in xscreensaver itself; the external program just does auth.)
2311 ###############################################################################
2313 have_passwd_helper=no
2314 with_passwd_helper_req=unspecified
2316 AC_ARG_WITH(passwd-helper,
2317 [ --with-passwd-helper Include support for an external password
2318 verification helper program.],
2319 [with_passwd_helper="$withval"; with_passwd_helper_req="$withval"],[with_passwd_helper=no])
2320 # no HANDLE_X_PATH_ARG for this one
2322 if test "$enable_locking" = no ; then
2323 with_passwd_helper_req=no
2324 with_passwd_helper=no
2327 case "$with_passwd_helper" in
2330 AC_DEFINE_UNQUOTED(PASSWD_HELPER_PROGRAM, "$with_passwd_helper")
2331 have_passwd_helper=yes;;
2333 echo "error: --with-passwd-helper needs full pathname of helper (not '$with_passwd_helper')." >&2
2338 ###############################################################################
2340 # Check for a login manager for a "New Login" button on the lock dialog.
2341 # Usually this will be "/usr/bin/gdmflexiserver".
2343 ###############################################################################
2345 with_login_manager_req=unspecified
2346 default_login_manager_1='gdmflexiserver -ls'
2347 default_login_manager_2='kdmctl reserve'
2349 AC_ARG_WITH(login-manager,
2350 [ --with-login-manager Put a "New Login" button on the unlock dialog that
2351 runs a login manager like gdmflexiserver or kdmctl.],
2352 [with_login_manager="$withval"; with_login_manager_req="$withval"],
2353 [with_login_manager=yes])
2354 # no HANDLE_X_PATH_ARG for this one
2356 if test "$enable_locking" = no ; then
2357 with_login_manager_req=no
2358 with_login_manager=no
2361 case "$with_login_manager_req" in
2363 with_login_manager=""
2367 # Try both defaults, use the one that exists.
2369 set dummy $default_login_manager_1 ; login_manager_tmp=$2
2370 unset ac_cv_path_login_manager_tmp # don't cache
2371 AC_PATH_PROG(login_manager_tmp, $login_manager_tmp, [])
2372 if test ! -z "$login_manager_tmp" ; then
2373 with_login_manager="$default_login_manager_1"
2375 set dummy $default_login_manager_2 ; login_manager_tmp=$2
2376 unset ac_cv_path_login_manager_tmp # don't cache
2377 AC_PATH_PROG(login_manager_tmp, $login_manager_tmp, [])
2378 if test ! -z "$login_manager_tmp" ; then
2379 with_login_manager="$default_login_manager_2"
2381 with_login_manager=""
2387 # absolute path specified on cmd line
2388 set dummy $with_login_manager_req ; login_manager_tmp=$2
2389 AC_MSG_CHECKING([for $login_manager_tmp])
2390 if test -x "$login_manager_tmp" ; then
2394 with_login_manager=""
2399 # relative path specified on cmd line
2400 set dummy $with_login_manager_req ; login_manager_tmp=$2
2401 unset ac_cv_path_login_manager_tmp # don't cache
2402 AC_PATH_PROG(login_manager_tmp, $login_manager_tmp, [])
2403 if test -z "$login_manager_tmp" ; then
2404 with_login_manager=""
2406 with_login_manager="$login_manager_tmp"
2410 ac_cv_login_manager_program="$with_login_manager"
2412 NEW_LOGIN_COMMAND_P=''
2413 NEW_LOGIN_COMMAND="$ac_cv_login_manager_program"
2415 AC_MSG_CHECKING(for login manager)
2416 if test -z "$NEW_LOGIN_COMMAND" ; then
2417 NEW_LOGIN_COMMAND="$default_login_manager_1"
2418 NEW_LOGIN_COMMAND_P='! '
2419 AC_MSG_RESULT($NEW_LOGIN_COMMAND (disabled))
2421 AC_MSG_RESULT($NEW_LOGIN_COMMAND)
2425 ###############################################################################
2427 # Check for -lgtk (and Gnome stuff)
2429 ###############################################################################
2432 with_gtk_req=unspecified
2434 User interface options:
2436 --with-gtk Use the Gtk toolkit for the user interface.],
2437 [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
2439 # if --with-gtk=/directory/ was specified, remember that directory so that
2440 # we can also look for the `gtk-config' program in that directory.
2450 HANDLE_X_PATH_ARG(with_gtk, --with-gtk, Gtk)
2452 if test "$with_gtk" != yes -a "$with_gtk" != no ; then
2453 echo "error: must be yes or no: --with-gtk=$with_gtk"
2458 parse_gtk_version_string() {
2461 maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
2462 min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
2464 ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
2465 if test -z "$ac_gtk_version"; then
2466 ac_gtk_version=unknown
2467 ac_gtk_version_string=unknown
2471 # Find pkg-config... (need this for both gtk and gdk_pixbuf.)
2472 # if the user specified --with-gtk=/foo/ then look there.
2475 if test ! -z "$gtk_dir"; then
2476 # canonicalize slashes.
2477 foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
2478 gtk_path="$foo:$gtk_path"
2481 AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path)
2483 if test -z "$pkg_config" ; then
2484 AC_MSG_WARN([pkg-config not found!])
2489 # Utility function for running pkg-config-based tests...
2492 pkg_check_version() {
2493 if test "$ok" = yes ; then
2496 AC_MSG_CHECKING(for $req)
2497 if $pkg_config --exists "$req" ; then
2498 vers=`$pkg_config --modversion "$req"`
2499 if $pkg_config --exists "$req >= $min" ; then
2500 AC_MSG_RESULT($vers)
2504 AC_MSG_RESULT($vers (wanted >= $min))
2520 if test "$with_gtk" = yes; then
2524 pkg_check_version gtk+-2.0 2.0.1 ; ac_gtk_version_string="$vers"
2525 pkg_check_version gmodule-2.0 2.0.0
2526 pkg_check_version libxml-2.0 2.4.6
2527 pkg_check_version libglade-2.0 1.99.0
2528 pkg_check_version gdk-pixbuf-2.0 2.0.0
2529 pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
2532 if test "$have_gtk" = no; then
2533 if test -n "$ac_gtk_version_string" ; then
2534 gtk_halfassed="$ac_gtk_version_string"
2535 gtk_halfassed_lib="$req"
2539 if test "$have_gtk" = yes; then
2540 parse_gtk_version_string
2544 if test "$have_gtk" = yes; then
2545 AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
2546 [ac_cv_gtk_config_cflags=`$pkg_config --cflags $pkgs`])
2547 AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
2548 [ac_cv_gtk_config_libs=`$pkg_config --libs $pkgs`])
2551 ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
2552 ac_gtk_config_libs=$ac_cv_gtk_config_libs
2556 if test "$have_gtk" = yes; then
2557 GTK_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
2558 GTK_DATADIR="$GTK_DATADIR/share"
2561 if test "$have_gtk" = yes; then
2562 INCLUDES="$INCLUDES $ac_gtk_config_cflags"
2563 GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
2565 AC_DEFINE(HAVE_GTK2)
2572 # Check for the various Gnome help and URL loading programs.
2574 WITH_BROWSER=gnome-open
2575 if test "$have_gtk" = yes; then
2576 AC_CHECK_PROGS(gnome_open_program, gnome-open)
2577 AC_CHECK_PROGS(gnome_url_show_program, gnome-url-show)
2581 ###############################################################################
2585 ###############################################################################
2588 with_motif_req=unspecified
2589 AC_ARG_WITH(motif,[ --with-motif Use the Motif toolkit for the user interface
2590 (not recommended.)],
2591 [with_motif="$withval"; with_motif_req="$withval"],[with_motif=no])
2593 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
2595 if test "$with_motif" != yes -a "$with_motif" != no ; then
2596 echo "error: must be yes or no: --with-motif=$with_motif"
2600 if test "$with_motif" = yes; then
2602 AC_CHECK_X_HEADER(Xm/Xm.h,
2604 AC_DEFINE(HAVE_MOTIF)
2605 MOTIF_LIBS="$MOTIF_LIBS -lXm"],,
2606 [#include <stdlib.h>
2608 #include <X11/Intrinsic.h>])
2612 if test "$have_motif" = yes; then
2613 AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)],,
2614 [#include <stdlib.h>
2616 #include <X11/Intrinsic.h>])
2620 ###############################################################################
2622 # Checking whether Motif is really Lesstif.
2624 ###############################################################################
2627 if test "$have_motif" = yes ; then
2628 AC_CACHE_CHECK([whether Motif is really LessTif],
2630 [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
2631 [long vers = LesstifVersion;],
2632 [ac_cv_have_lesstif=yes],
2633 [ac_cv_have_lesstif=no])])
2634 have_lesstif=$ac_cv_have_lesstif
2638 lesstif_version=unknown
2639 lesstif_version_string=unknown
2641 if test "$have_lesstif" = yes ; then
2643 echo unknown > conftest-lt
2644 AC_CACHE_CHECK([LessTif version number],
2645 ac_cv_lesstif_version_string,
2646 [AC_TRY_X_RUN([#include <stdio.h>
2649 FILE *f = fopen("conftest-lt", "w");
2651 fprintf(f, "%d %d.%d\n", LesstifVersion,
2652 LESSTIF_VERSION, LESSTIF_REVISION);
2656 [ltv=`cat conftest-lt`
2657 ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
2658 ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
2659 [ac_cv_lesstif_version=unknown
2660 ac_cv_lesstif_version_string=unknown],
2661 [ac_cv_lesstif_version=unknown
2662 ac_cv_lesstif_version_string=unknown])])
2664 lesstif_version=$ac_cv_lesstif_version
2665 lesstif_version_string=$ac_cv_lesstif_version_string
2670 if test "$have_motif" = yes ; then
2672 echo unknown > conftest-mt
2673 AC_CACHE_CHECK([Motif version number],
2674 ac_cv_motif_version_string,
2675 [AC_TRY_X_RUN([#include <stdio.h>
2678 FILE *f = fopen("conftest-mt", "w");
2680 fprintf(f, "%d %d.%d\n", XmVersion,
2681 XmVERSION, XmREVISION);
2685 [mtv=`cat conftest-mt`
2686 ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
2687 ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
2688 [ac_cv_motif_version=unknown
2689 ac_cv_motif_version_string=unknown],
2690 [ac_cv_motif_version=unknown
2691 ac_cv_motif_version_string=unknown])])
2693 motif_version=$ac_cv_motif_version
2694 motif_version_string=$ac_cv_motif_version_string
2699 ###############################################################################
2701 # Checking whether Motif requires -lXpm.
2703 # If this is Motif 2.x, and we have XPM, then link against XPM as well.
2704 # The deal is, Motif 2.x requires XPM -- but it's a compilation option
2705 # of the library whether to build the XPM code into libXm, or whether
2706 # to rely on an external libXm. So the only way to tell whether XPM is
2707 # a link-time requirement is to examine libXm.a, which is very
2708 # difficult to do in an autoconf script. So... if it's Motif 2.x, we
2709 # always link against XPM if the XPM lib exists (and this will be a
2710 # no-op if libXm happens to already have the XPM code in it.)
2712 ###############################################################################
2714 motif_requires_xpm=no
2715 if test "$have_motif" = yes ; then
2716 AC_MSG_CHECKING(whether Motif requires XPM)
2717 if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000
2719 motif_requires_xpm=yes
2720 AC_MSG_RESULT(maybe)
2727 ###############################################################################
2729 # Checking whether Motif requires -lXp.
2731 # Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
2732 # Extension". Why this extension isn't in -lXext with all the others,
2735 ###############################################################################
2738 if test "$have_motif" = yes ; then
2740 AC_CHECK_X_LIB(Xp, XpQueryExtension,
2741 [have_xp_ext=yes; MOTIF_LIBS="$MOTIF_LIBS -lXp"],
2742 [true], -lX11 -lXext -lm)
2746 ###############################################################################
2748 # Checking whether Motif requires -lXintl (for _Xsetlocale.)
2750 ###############################################################################
2753 if test "$have_motif" = yes ; then
2754 AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
2756 if test "$have_xintl" = yes; then
2757 MOTIF_LIBS="$MOTIF_LIBS -lXintl"
2762 ###############################################################################
2764 # Check for -lGL or -lMesaGL.
2766 ###############################################################################
2770 with_gl_req=unspecified
2775 --with-gl Build those demos which depend on OpenGL.],
2776 [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
2778 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
2780 ac_mesagl_version=unknown
2781 ac_mesagl_version_string=unknown
2783 if test "$with_gl" = yes; then
2784 AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
2785 if test "$have_gl" = yes ; then
2786 AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no,
2787 [#include <GL/gl.h>])
2790 # If we have the headers, try and figure out which vendor it's from.
2792 if test "$have_gl" = yes ; then
2794 # We need to know whether it's MesaGL so that we know which libraries
2797 AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
2798 [ac_cv_have_mesa_gl=no
2799 if test "$ac_macosx" = no; then
2800 # WTF! MacOS 10.5.0 ships the Mesa GL headers!
2801 # It's not really Mesa, is it?
2802 AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
2804 ac_have_mesa_gl=$ac_cv_have_mesa_gl
2809 if test "$ac_macosx" = yes; then
2811 # Without these, every link against libGL gets a bunch of useless
2814 osx_crud="-bind_at_load -multiply_defined suppress"
2815 AC_MSG_RESULT(adding "$osx_crud" to GL_LIBS)
2816 GL_LIBS="$GL_LIBS $osx_crud"
2819 # New lossage in 10.5.0: without this, we get:
2820 # ld: cycle in dylib re-exports with /usr/X11/lib/libGL.dylib
2822 osx_crud="/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib"
2823 osx_crud="-Wl,-dylib_file,${osx_crud}:${osx_crud}"
2825 AC_MSG_RESULT(adding "$osx_crud" to GL_LIBS)
2826 GL_LIBS="$GL_LIBS $osx_crud"
2831 # Some versions of MesaGL are compiled to require -lpthread.
2832 # So if the Mesa headers exist, and -lpthread exists, then always
2833 # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
2835 if test "$ac_have_mesa_gl" = yes; then
2836 AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
2840 # If we have Mesa headers, check to see if we can link against -lMesaGL.
2841 # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
2842 # Else, warn that GL is busted. (We have the headers, but no libs.)
2845 if test "$ac_have_mesa_gl" = yes ; then
2846 AC_CHECK_X_LIB(MesaGL, glXCreateContext,
2848 GL_LIBS="-lMesaGL -lMesaGLU $VIDMODE_LIBS $GL_LIBS"],
2849 [], -lMesaGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm)
2852 if test "$gl_lib_1" = "" ; then
2853 AC_CHECK_X_LIB(GL, glXCreateContext,
2855 GL_LIBS="-lGL -lGLU $VIDMODE_LIBS $GL_LIBS"],
2856 [], -lGLU $GL_LIBS -lX11 -lXext $VIDMODE_LIBS -lm)
2859 if test "$gl_lib_1" = "" ; then
2860 # we have headers, but no libs -- bail.
2865 # linking works -- we can build the GL hacks.
2867 if test "$ac_have_mesa_gl" = yes ; then
2868 AC_DEFINE(HAVE_MESA_GL)
2874 # Now that we know we have GL headers and libs, do some more GL testing.
2877 if test "$have_gl" = yes ; then
2878 # If it's MesaGL, we'd like to issue a warning if the version number
2879 # is less than or equal to 2.6, because that version had a security bug.
2881 if test "$ac_have_mesa_gl" = yes; then
2883 AC_CACHE_CHECK([MesaGL version number], ac_cv_mesagl_version_string,
2884 [cat > conftest.$ac_ext <<EOF
2885 #line __oline__ "configure"
2886 #include "confdefs.h"
2888 #ifndef MESA_MAJOR_VERSION
2889 # include <GL/xmesa.h>
2890 # ifdef XMESA_MAJOR_VERSION
2891 /* Around Mesa 3.2, they took out the Mesa version number, so instead,
2892 we have to check the XMesa version number (the number of the X protocol
2893 support, which seems to be the same as the Mesa version number.)
2895 # define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
2896 # define MESA_MINOR_VERSION XMESA_MINOR_VERSION
2898 /* Oh great. Some time after 3.4, they took out the xmesa.h header file,
2899 so we have no way of telling what version of Mesa this is at all.
2900 So, we'll guess that the osmesa version (the "offscreen protocol")
2901 is less than or equal to the real mesa version number. Except that
2902 if OSmesa is 3.3, assume at least Mesa 3.4, since OSmesa was 3.3 in
2903 Mesa 3.4. And Mesa 3.3 had xmesa.h. What a complete load of shit!
2905 # include <GL/osmesa.h>
2906 # define MESA_MAJOR_VERSION OSMESA_MAJOR_VERSION
2907 # define MESA_MINOR_VERSION OSMESA_MINOR_VERSION or newer, probably?
2908 # if OSMESA_MAJOR_VERSION == 3 && OSMESA_MINOR_VERSION == 3
2909 # undef MESA_MINOR_VERSION
2910 # define MESA_MINOR_VERSION 4 or newer, probably?
2914 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
2917 ac_save_CPPFLAGS="$CPPFLAGS"
2918 if test \! -z "$includedir" ; then
2919 CPPFLAGS="$CPPFLAGS -I$includedir"
2921 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2923 mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | grep configure:`
2927 mglv=`echo "$mglv" | sed -n \
2928 's/^configure: *\([0-9][0-9]*\) *\([0-9].*\)$/\1.\2/p'`
2931 rm -f conftest.$ac_ext
2933 CPPFLAGS="$ac_save_CPPFLAGS"
2935 if test "$mglv" = ""; then
2936 ac_mesagl_version=unknown
2937 ac_mesagl_version_string=unknown
2939 ac_mesagl_version_string="$mglv"
2942 maj=`echo "$mglv" | sed -n 's/^\([0-9][0-9]*\)\..*$/\1/p'`
2943 min=`echo "$mglv" | sed -n 's/^.*\.\([0-9][0-9]*\).*$/\1/p'`
2945 ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
2946 if test -z "$ac_mesagl_version"; then
2947 ac_mesagl_version=unknown
2948 ac_mesagl_version_string=unknown
2951 ac_cv_mesagl_version=$ac_mesagl_version
2952 ac_cv_mesagl_version_string=$ac_mesagl_version_string
2954 ac_mesagl_version=$ac_cv_mesagl_version
2955 ac_mesagl_version_string=$ac_cv_mesagl_version_string
2959 # Check for OpenGL 1.1 features.
2961 AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
2962 [true], $GL_LIBS -lX11 -lXext -lm)
2965 elif test "$with_gl" != no; then
2966 echo "error: must be yes or no: --with-gl=$with_gl"
2971 ###############################################################################
2975 ###############################################################################
2978 with_gle_req=unspecified
2981 [ --with-gle Build those demos which depend on GLE
2982 (the OpenGL "extrusion" library.)],
2983 [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
2985 HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
2989 if test "$have_gl" = no ; then
2991 elif test "$with_gle" = yes; then
2993 AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no,
2994 [#include <GL/gl.h>])
2995 if test "$have_gle3" = yes ; then
2998 AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no,
2999 [#include <GL/gl.h>])
3000 if test "$have_gle" = yes ; then
3001 AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no,
3002 [#include <GL/gl.h>])
3006 if test "$have_gle" = yes ; then
3009 AC_CHECK_X_LIB(gle, gleCreateGC,
3010 [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
3011 [], $GL_LIBS -lX11 -lXext -lm)
3013 if test "$have_gle" = yes ; then
3017 # sometimes the libmatrix stuff is included in libgle. look there first.
3019 # I don't get it. For some reason, this test passes on SGI, as if
3020 # uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
3021 # Yet the link is succeeding. Why???
3023 # AC_CHECK_X_LIB(gle, uview_direction_d,
3024 # [have_gle=yes; gle_halfassed=no],
3025 # [], $GL_LIBS -lX11 -lXext -lm)
3027 # As of GLE 3 this is in libgle, and has changed name to uview_direction!
3029 if test "$have_gle3" = yes ; then
3030 AC_CHECK_X_LIB(gle, uview_direction,
3031 [have_gle=yes; gle_halfassed=no],
3032 [], $GL_LIBS -lX11 -lXext -lm)
3034 # if it wasn't in libgle, then look in libmatrix.
3035 if test "$have_gle" = no ; then
3036 AC_CHECK_X_LIB(matrix, uview_direction_d,
3037 [have_gle=yes; gle_halfassed=no;
3038 GLE_LIBS="$GLE_LIBS -lmatrix"],
3039 [], $GL_LIBS -lX11 -lXext -lm)
3043 if test "$have_gle" = yes ; then
3045 if test "$have_gle3" = yes ; then
3046 AC_DEFINE(HAVE_GLE3)
3050 elif test "$with_gle" != no; then
3051 echo "error: must be yes or no: --with-gle=$with_gle"
3057 ###############################################################################
3059 # Check for -lgdk_pixbuf.
3060 # These tests are for gdk_pixbuf usage of the hacks,
3061 # not xscreensaver-demo (thus we have to test again to get
3062 # the libraries right: don't want to pull in all of GTK
3065 ###############################################################################
3068 with_gdk_pixbuf_req=unspecified
3070 [ --with-pixbuf Include support for the GDK-Pixbuf library in some
3071 demos, which will make it possible for them to read
3072 GIF, JPEG, and PNG files as well.],
3073 [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
3074 [with_gdk_pixbuf=yes])
3076 # if --with-pixbuf=/directory/ was specified, remember that directory so that
3077 # we can also look for the `gdk-pixbuf-config' program in that directory.
3078 case "$with_gdk_pixbuf" in
3080 gdk_pixbuf_dir="$with_gdk_pixbuf"
3087 HANDLE_X_PATH_ARG(with_gdk_pixbuf, --with-pixbuf, GDK_PIXBUF)
3089 if test "$with_gdk_pixbuf" != yes -a "$with_gdk_pixbuf" != no ; then
3090 echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf"
3094 if test "$with_gdk_pixbuf" = yes; then
3100 pkg_check_version gdk-pixbuf-2.0 2.0.0
3101 pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
3102 have_gdk_pixbuf="$ok"
3104 if test "$have_gdk_pixbuf" = yes; then
3105 AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
3106 [ac_cv_gdk_pixbuf_config_cflags=`$pkg_config --cflags $pkgs`])
3107 AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
3108 [ac_cv_gdk_pixbuf_config_libs=`$pkg_config --libs $pkgs`])
3111 ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
3112 ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
3115 if test "$have_gdk_pixbuf" = yes; then
3117 # we appear to have pixbuf; check for headers/libs to be sure.
3119 ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
3120 CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
3124 # check for header A...
3125 AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
3127 # if that worked, check for header B...
3128 if test "$have_gdk_pixbuf" = yes; then
3130 gdk_pixbuf_halfassed=yes
3131 AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h,
3132 [have_gdk_pixbuf=yes
3133 gdk_pixbuf_halfassed=no])
3135 # yay, it has a new name in Gtk 2.x...
3136 if test "$have_gdk_pixbuf" = no; then
3138 gdk_pixbuf_halfassed=yes
3139 AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h,
3140 [have_gdk_pixbuf=yes
3141 gdk_pixbuf_halfassed=no])
3144 CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
3147 if test "$have_gdk_pixbuf" = yes; then
3148 # we have the headers, now check for the libraries
3150 gdk_pixbuf_halfassed=yes
3152 AC_MSG_RESULT(checking for gdk_pixbuf usability...)
3155 AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
3156 $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
3158 if test "$have_gdk_pixbuf" = yes; then
3160 AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
3161 [have_gdk_pixbuf=yes
3162 gdk_pixbuf_halfassed=no],,
3163 $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
3167 if test "$have_gdk_pixbuf" = yes; then
3168 INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags"
3169 XPM_LIBS="$ac_gdk_pixbuf_config_libs"
3170 AC_DEFINE(HAVE_GDK_PIXBUF)
3172 AC_MSG_RESULT(checking for gdk_pixbuf usability... no)
3175 if test "$have_gdk_pixbuf" = yes; then
3176 AC_CHECK_X_LIB(c, gdk_pixbuf_apply_embedded_orientation,
3177 [AC_DEFINE(HAVE_GDK_PIXBUF_APPLY_EMBEDDED_ORIENTATION)],,
3178 $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
3183 ###############################################################################
3187 ###############################################################################
3190 with_xpm_req=unspecified
3192 [ --with-xpm Include support for XPM files in some demos.
3193 (Not needed if Pixbuf is used.)],
3194 [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
3196 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
3198 if test "$with_xpm" = yes; then
3199 AC_CHECK_X_HEADER(X11/xpm.h,
3202 XPM_LIBS="-lXpm $XPM_LIBS"],,
3203 [#include <X11/Xlib.h>])
3204 elif test "$with_xpm" != no; then
3205 echo "error: must be yes or no: --with-xpm=$with_xpm"
3209 # See comment near $motif_requires_xpm, above.
3210 # Need to do this here, after both Motif and XPM have been checked for.
3212 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
3213 if test "$motif_requires_xpm" = yes ; then
3214 MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
3218 if test "$XPM_LIBS" = "" ; then
3223 ###############################################################################
3227 ###############################################################################
3230 with_jpeg_req=unspecified
3233 [ --with-jpeg Include support for the JPEG library.],
3234 [with_jpeg="$withval"; with_jpeg_req="$withval"],
3237 HANDLE_X_PATH_ARG(with_jpeg, --with-jpeg, JPEG)
3239 if test "$with_jpeg" != yes -a "$with_jpeg" != no ; then
3240 echo "error: must be yes or no: --with-jpeg=$with_jpeg"
3244 if test "$with_jpeg" = yes; then
3247 AC_CHECK_X_HEADER(jpeglib.h, [have_jpeg=yes])
3249 if test "$have_jpeg" = yes; then
3250 # we have the header, now check for the library
3253 AC_CHECK_X_LIB(jpeg, jpeg_start_compress,
3257 AC_DEFINE(HAVE_JPEGLIB)])
3262 ###############################################################################
3264 # Check for pty support: this allows 'phosphor' and 'apple2'
3265 # to run curses-based programs, or be used as terminal windows.
3267 ###############################################################################
3270 AC_CHECK_HEADERS(pty.h util.h)
3271 AC_CHECK_X_LIB(util, forkpty,
3274 AC_DEFINE(HAVE_FORKPTY)])
3276 if test "$ac_have_forkpty" != yes ; then
3277 # we don't need (or have) -lutil on MacOS 10.4.2...
3278 AC_CHECK_X_LIB(c, forkpty,
3280 AC_DEFINE(HAVE_FORKPTY)])
3283 ###############################################################################
3285 # Check for the XSHM server extension.
3287 ###############################################################################
3290 with_xshm_req=unspecified
3291 AC_ARG_WITH(xshm-ext,
3292 [ --with-xshm-ext Include support for the Shared Memory extension.],
3293 [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
3295 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
3297 if test "$with_xshm" = yes; then
3299 # first check for Xshm.h.
3300 AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes],,
3301 [#include <X11/Xlib.h>])
3303 # if that succeeded, then check for sys/ipc.h.
3304 if test "$have_xshm" = yes; then
3306 AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
3309 # if that succeeded, then check for sys/shm.h.
3310 if test "$have_xshm" = yes; then
3312 AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
3315 # AIX is pathological, as usual: apparently it's normal for the Xshm headers
3316 # to exist, but the library code to not exist. And even better, the library
3317 # code is in its own library: libXextSam.a. So, if we're on AIX, and that
3318 # lib doesn't exist, give up. (This lib gets added to X_EXTRA_LIBS, and
3319 # that's not quite right, but close enough.)
3323 if [ `uname -v` -eq 3 ]; then
3325 AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
3326 [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
3327 [true], -lX11 -lXext -lm)
3332 # if that succeeded, then we've really got it.
3333 if test "$have_xshm" = yes; then
3334 AC_DEFINE(HAVE_XSHM_EXTENSION)
3337 elif test "$with_xshm" != no; then
3338 echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
3343 ###############################################################################
3345 # Check for the DOUBLE-BUFFER server extension.
3347 ###############################################################################
3350 with_xdbe_req=unspecified
3351 AC_ARG_WITH(xdbe-ext,
3352 [ --with-xdbe-ext Include support for the DOUBLE-BUFFER extension.],
3353 [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
3355 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
3357 if test "$with_xdbe" = yes; then
3359 AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes],,
3360 [#include <X11/Xlib.h>])
3361 if test "$have_xdbe" = yes; then
3362 AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)
3365 elif test "$with_xdbe" != no; then
3366 echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
3371 ###############################################################################
3373 # Check for the SGI XReadDisplay server extension.
3375 # Note: this has to be down here, rather than up with the other server
3376 # extension tests, so that the output of `configure --help' is in the
3377 # right order. Arrgh!
3379 ###############################################################################
3382 with_readdisplay_req=unspecified
3383 AC_ARG_WITH(readdisplay,
3384 [ --with-readdisplay Include support for the XReadDisplay extension.],
3385 [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
3386 [with_readdisplay=yes])
3388 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
3390 if test "$with_readdisplay" = yes; then
3391 AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
3392 AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION),,
3393 [#include <X11/Xlib.h>])
3394 elif test "$with_readdisplay" != no; then
3395 echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
3400 ###############################################################################
3402 # Check for a directory full of images to use as the default value
3403 # of the "imageDirectory" preference.
3405 ###############################################################################
3408 with_imagedir_req=unspecified
3410 AC_ARG_WITH(image-directory,
3411 [ --with-image-directory=DIR By default, some demos may display random images
3412 from this directory.],
3413 [with_imagedir="$withval"; with_imagedir_req="$withval"],
3414 [with_imagedir=yes])
3415 # no HANDLE_X_PATH_ARG for this one
3417 case "$with_imagedir" in
3420 AC_MSG_CHECKING([for image directory $with_imagedir])
3421 if test -d "$with_imagedir" ; then
3431 #### Could use some more defaults here...
3433 "/usr/share/backgrounds/images/" \
3434 "/usr/share/wallpapers/" \
3435 "/Library/Desktop Pictures/" \
3437 if test -z "$with_imagedir"; then
3438 AC_MSG_CHECKING([for image directory $dd])
3439 if test -d "$dd" ; then
3454 echo "error: must be an absolute path: --with-image-directory=$with_imagedir_req"
3458 ac_cv_imagedir="$with_imagedir"
3460 DEFAULT_IMAGES_P='True'
3461 DEFAULT_IMAGE_DIRECTORY="$ac_cv_imagedir"
3463 if test -z "$DEFAULT_IMAGE_DIRECTORY" ; then
3464 DEFAULT_IMAGES_P='False'
3468 ###############################################################################
3470 # Pick a text file to use as the default of the "textFile" preference.
3471 # Any old file will do, but preferably one that will make interesting
3472 # shapes when displayed by "starwars" and "fontglide".
3474 ###############################################################################
3477 with_textfile_req=unspecified
3479 AC_ARG_WITH(text-file,
3480 [ --with-text-file=FILE By default, some demos may display this file.],
3481 [with_textfile="$withval"; with_textfile_req="$withval"],
3482 [with_textfile=yes])
3483 # no HANDLE_X_PATH_ARG for this one
3485 case "$with_textfile" in
3488 AC_MSG_CHECKING([for text file $with_textfile])
3489 if test -f "$with_textfile" ; then
3499 #### Could use some more defaults here...
3501 "/usr/X11R6/lib/X11/doc/README" \
3502 "/usr/share/doc/xserver-common/copyright" \
3503 "/usr/share/doc/xserver-xorg-core/copyright" \
3504 "/usr/X11R6/README" \
3505 "/usr/share/doc/debian/debian-manifesto" \
3507 if test -z "$with_textfile"; then
3508 AC_MSG_CHECKING([for text file $f])
3509 if test -f "$f" ; then
3524 echo "error: must be an absolute path: --with-text-file=$with_textfile_req"
3528 ac_cv_textfile="$with_textfile"
3530 DEFAULT_TEXT_FILE="$ac_cv_textfile"
3533 ###############################################################################
3535 # Check the browser to see help URL
3537 ###############################################################################
3540 with_browser_req=unspecified
3542 AC_ARG_WITH(browser,
3543 [ --with-browser=BROWSER Specify the browser to show help URL.],
3544 [with_browser="$withval"; with_browser_req="$withval"],
3546 # no HANDLE_X_PATH_ARG for this one
3548 case "$with_browser" in
3552 WITH_BROWSER=$with_browser
3553 gnome_open_program=$with_browser
3554 AC_MSG_CHECKING([for browser $with_browser])
3555 with_browser_fullpath=`which $with_browser 2>/dev/null`
3556 case $with_browser_fullpath in
3563 # Only warning: we don't want to install all packages for the
3564 # dependency of the browser in building stage...
3565 echo "WARNING: browser not found: --with-browser=$with_browser"
3570 ac_cv_browser="$with_browser"
3572 ###############################################################################
3574 # Check whether it's ok to install some hacks as setuid (e.g., "sonar")
3575 # This should be safe, but let's give people the option.
3577 ###############################################################################
3579 setuid_hacks_default=no
3580 setuid_hacks="$setuid_hacks_default"
3581 AC_ARG_WITH(setuid-hacks,
3582 [ --with-setuid-hacks Allow some demos to be installed `setuid root'
3583 (which is needed in order to ping other hosts.)
3585 [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"])
3587 HANDLE_X_PATH_ARG(setuid_hacks, --with-setuid-hacks, setuid hacks)
3589 if test "$setuid_hacks" = yes; then
3591 elif test "$setuid_hacks" != no; then
3592 echo "error: must be yes or no: --with-setuid-hacks=$setuid_hacks"
3597 ###############################################################################
3599 # Done testing. Now, set up the various -I and -L variables,
3600 # and decide which GUI program to build by default.
3602 ###############################################################################
3609 if test \! -z "$includedir" ; then
3610 INCLUDES="$INCLUDES -I$includedir"
3613 if test \! -z "$libdir" ; then
3614 LDFLAGS="$LDFLAGS -L$libdir"
3618 PREFERRED_DEMO_PROGRAM=''
3620 if test "$have_motif" = yes; then
3621 PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
3622 ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3624 if test "$have_gtk" = yes; then
3625 PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
3626 ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3630 if test "$have_kerberos" = yes; then
3631 PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
3632 PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
3634 if test "$have_pam" = yes; then
3635 PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
3636 PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
3637 INSTALL_PAM="install-pam"
3639 if test "$have_passwd_helper" = yes; then
3640 PASSWD_SRCS="$PASSWD_SRCS \$(PWHELPER_SRCS)"
3641 PASSWD_OBJS="$PASSWD_OBJS \$(PWHELPER_OBJS)"
3643 PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
3644 PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
3647 if test "$enable_locking" = yes; then
3648 LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
3649 LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
3651 LOCK_SRCS='$(NOLOCK_SRCS_1)'
3652 LOCK_OBJS='$(NOLOCK_OBJS_1)'
3655 if test "$ac_macosx" = yes; then
3656 EXES_OSX='$(EXES_OSX)'
3657 SCRIPTS_OSX='$(SCRIPTS_OSX)'
3658 MEN_OSX='$(MEN_OSX)'
3666 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
3668 if test "$need_setuid" = yes; then
3674 if test "$setuid_hacks" = yes; then
3681 if test "$have_gl" = yes; then
3682 GL_EXES='$(GL_EXES)'
3683 SUID_EXES='$(SUID_EXES)'
3684 RETIRED_GL_EXES='$(RETIRED_GL_EXES)'
3685 GL_UTIL_EXES='$(GL_UTIL_EXES)'
3692 if test "$have_gle" = yes; then
3693 GLE_EXES='$(GLE_EXES)'
3699 if test "$have_jpeg" = yes -a "$have_gdk_pixbuf" = yes; then
3700 JPEG_EXES='$(JPEG_EXES)'
3704 # Another substitution in the XScreenSaver.ad.in file:
3706 if test "$gnome_open_program" != ''; then
3710 elif test "$gnome_url_show_program" != ''; then
3721 # Set PO_DATADIR to something sensible.
3723 AC_MSG_CHECKING([for locale directory])
3724 if test -n "$GTK_DATADIR" ; then
3725 PO_DATADIR="$GTK_DATADIR"
3726 elif test "$have_gtk" = yes; then
3727 PO_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
3728 PO_DATADIR="$PO_DATADIR/share"
3731 if test -z "$PO_DATADIR" ; then
3733 # #### Total fucking kludge --
3734 # Map /build/prefix/usr/X11R6/share/ to /build/prefix/usr/share/
3735 # but of course we need to expand all the nested variables to do that...
3737 dd=`eval eval eval eval eval eval eval eval eval eval eval echo $datadir`
3738 PO_DATADIR=`echo $dd | sed 's@/X11R6/@/@'`
3741 AC_MSG_RESULT($PO_DATADIR/locale)
3744 # canonicalize slashes.
3745 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
3747 # gcc 3.0 likes to issue this warning for every file:
3749 # cc1: warning: changing search order for system directory "/usr/local/include"
3750 # cc1: warning: as it has already been specified as a non-system directory
3752 # Yay. We can only avoid that by deleting "-I${prefix}/include" from the list.
3753 # Which *should* be totally redundant, and thus an ok thing to delete?
3755 INCLUDES=`echo "$INCLUDES" | sed 's@ -I${prefix}/include@@g;'`
3758 ###############################################################################
3760 # Perform substitutions and write Makefiles.
3762 ###############################################################################
3766 AC_SUBST(PREFERRED_DEMO_PROGRAM)
3767 AC_SUBST(ALL_DEMO_PROGRAMS)
3768 AC_SUBST(SAVER_LIBS)
3769 AC_SUBST(MOTIF_LIBS)
3778 AC_SUBST(XDPMS_LIBS)
3779 AC_SUBST(XINERAMA_LIBS)
3780 AC_SUBST(PASSWD_LIBS)
3781 AC_SUBST(INSTALL_SETUID)
3782 AC_SUBST(SETUID_HACKS)
3783 AC_SUBST(INSTALL_DIRS)
3784 AC_SUBST(NEED_SETUID)
3785 AC_SUBST(INSTALL_PAM)
3786 AC_SUBST(HAVE_PAM_FAIL_DELAY)
3787 AC_SUBST(NEW_LOGIN_COMMAND)
3788 AC_SUBST(NEW_LOGIN_COMMAND_P)
3789 AC_SUBST(DEFAULT_IMAGES_P)
3790 AC_SUBST(DEFAULT_IMAGE_DIRECTORY)
3791 AC_SUBST(DEFAULT_TEXT_FILE)
3792 AC_SUBST(WITH_BROWSER)
3796 AC_SUBST(SCRIPTS_OSX)
3799 AC_SUBST(PASSWD_SRCS)
3800 AC_SUBST(PASSWD_OBJS)
3804 AC_SUBST(SAVER_GL_SRCS)
3805 AC_SUBST(SAVER_GL_OBJS)
3806 AC_SUBST(SAVER_GL_LIBS)
3811 AC_SUBST(RETIRED_GL_EXES)
3813 AC_SUBST(GL_UTIL_EXES)
3817 AC_SUBST(GLE_KLUDGE)
3822 AC_SUBST(HACKDIR_FULL)
3823 AC_SUBST(GTK_DATADIR)
3824 AC_SUBST(PO_DATADIR)
3825 AC_SUBST(HACK_CONF_DIR)
3826 AC_SUBST(GTK_EXTRA_OBJS)
3828 APPDEFAULTS=$ac_x_app_defaults
3829 AC_SUBST(APPDEFAULTS)
3832 AC_SUBST(DEPEND_FLAGS)
3833 AC_SUBST(DEPEND_DEFINES)
3842 driver/XScreenSaver.ad)
3844 ###############################################################################
3846 # Print some warnings at the end.
3848 ###############################################################################
3850 warn_prefix_1=" Warning:"
3851 warn_prefix_2=" Note:"
3852 warn_prefix="$warn_prefix_1"
3855 warnsep=' #################################################################'
3858 if test "$warning" = no ; then
3859 echo '' ; echo "$warnsep" ; echo ''
3866 if test "$warning" = long ; then echo '' ; fi
3869 echo "$warn_prefix $rest"
3876 if test "$was" != no ; then echo '' ; fi
3878 echo "$warn_prefix $rest"
3888 warn_prefix="$warn_prefix_2"
3890 warn_prefix="$warn_prefix_1"
3894 warn_prefix="$warn_prefix_2"
3896 warn_prefix="$warn_prefix_1"
3900 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
3901 warn 'The SGI saver extension was requested, but was not found.'
3904 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
3905 warn 'The XIdle extension was requested, but was not found.'
3908 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
3909 warn 'The XSHM extension was requested, but was not found.'
3912 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
3913 warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
3916 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
3917 warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
3920 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
3921 warn 'The DPMS extension was requested, but was not found.'
3924 if test "$with_xinerama_req" = yes -a "$have_xinerama" = no ; then
3925 warn 'The Xinerama extension was requested, but was not found.'
3928 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
3929 warn 'The XF86VMODE extension was requested, but was not found.'
3932 if test "$with_randr_req" = yes -a "$have_randr" = no ; then
3933 warn 'The RANDR extension was requested, but was not found.'
3936 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
3937 warn "Checking of /proc/interrupts was requested, but it's bogus."
3940 if test "$pkg_config" = false ; then
3941 warnL 'The "pkg-config" program was not found. Without that,'
3942 warn2 "detection of the various GTK libraries won't work."
3944 pkgerr=`$pkg_config --list-all 2>&1 >/dev/null`
3945 if test "x$pkgerr" != "x" ; then
3946 warnL 'The "pkg-config" program produces errors. This often causes'
3947 warn2 "detection of the various GTK libraries to malfunction."
3948 warn2 "The errors are:"
3950 echo "$pkgerr" | sed 's/^/ > /g'
3954 if test "$gtk_halfassed" != no ; then
3955 warnL "GTK version $gtk_halfassed was found, but at least one supporting"
3956 warn2 "library ($gtk_halfassed_lib) was not, so GTK can't be used."
3957 warn2 "Perhaps some of the development packages are not installed?"
3958 if test "$have_gtk" = yes ; then
3959 v="$ac_gtk_version_string"
3960 warn2 "GTK $v is also installed, so it will be used instead."
3961 warn2 "Please read the above output and the \`config.log' file"
3962 warn2 "for more details."
3967 warn2 'Though the Motif front-end to xscreensaver is still'
3968 warn2 'maintained, it is no longer being updated with new'
3969 warn2 'features: all new development on the xscreensaver-demo'
3970 warn2 'program is happening in the GTK version, and not in the'
3971 warn2 'Motif version. It is recommended that you build against'
3972 warn2 'GTK instead of Motif. See <http://www.gtk.org/>.'
3975 if test "$have_motif" = no -a "$have_gtk" = no; then
3977 if test "$with_motif" = yes; then
3978 warnL "Neither the GTK nor Motif libraries were found; the"
3979 warn2 "\`xscreensaver-demo' program requires one of these."
3983 warnL "The GTK libraries do not seem to be available; the"
3984 warn2 "\`xscreensaver-demo' program requires them."
3986 # warn2 'You can use Motif or Lesstif instead of GTK (use the'
3987 # warn2 "\`--with-motif' option) but that is NOT recommended."
3991 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
3992 warnL "Use of Motif was requested, but it wasn't found;"
3993 warn2 "Gtk will be used instead."
3995 elif test "$jurassic_gtk" = yes ; then
3999 v="$ac_gtk_version_string"
4000 if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
4001 warnL "Use of Gtk was requested, but its version number is unknown;"
4002 elif test "$with_gtk_req" = yes ; then
4003 warnL "Use of Gtk was requested, but it is version $v;"
4005 warnL "Gtk was found on this system, but it is version $v;"
4008 warn2 "Gtk $pref_gtk or newer is required."
4010 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
4011 warnL "Use of Gtk was requested, but it wasn't found."
4015 if test "$have_gtk" = yes -a "$have_gdk_pixbuf" = no ; then
4016 warn "GTK is being used, but the GDK-Pixbuf library and/or"
4017 warn2 "headers were not found. That can't be good. Please"
4018 warn2 "install the GDK-Pixbuf development kit and re-configure."
4021 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
4023 preferred_lesstif=0.92
4025 if test "$lesstif_version" = unknown; then
4026 warnL "Unable to determine the LessTif version number!"
4027 warn2 "Make sure you are using version $preferred_lesstif or newer."
4028 warn2 "See <http://www.lesstif.org/>."
4030 elif test \! $lesstif_version -gt 82; then
4031 warnL "LessTif version $lesstif_version_string is being used."
4032 warn2 "LessTif versions 0.82 and earlier are too buggy to"
4033 warn2 "use with XScreenSaver; it is strongly recommended"
4034 warn2 "that you upgrade to at least version $preferred_lesstif!"
4035 warn2 "See <http://www.lesstif.org/>."
4040 if test "$have_motif" = yes -a "$have_gtk" = no ; then
4041 warn 'Motif is being used, and GTK is not.'
4047 if test "$with_xpm_req" = yes -a "$have_xpm" = no; then
4048 warnL 'Use of XPM was requested, but it was not found.'
4051 if test "$with_gdk_pixbuf_req" = yes -a "$have_gdk_pixbuf" = no; then
4052 warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
4055 if test "$have_gdk_pixbuf" = no -o "$gdk_pixbuf_halfassed" = yes || \
4056 test "$have_gdk_pixbuf" = no -a "$have_xpm" = no ; then
4058 if test "$with_gdk_pixbuf_req" = yes ; then
4060 elif test "$with_gdk_pixbuf_req" = no ; then
4061 warnL 'The GDK-Pixbuf library is not being used.'
4063 warnL 'The GDK-Pixbuf library was not found.'
4066 if test "$with_xpm_req" = yes -o "$have_xpm" = yes ; then
4068 elif test "$with_xpm_req" = no ; then
4069 warnL 'The XPM library is not being used.'
4071 warnL 'The XPM library was not found.'
4074 if test "$have_gdk_pixbuf" = no -a "$have_xpm" = yes ; then
4075 warn2 'The XPM library is being used instead.'
4078 if test "$gdk_pixbuf_halfassed" = yes ; then
4080 warn2 'More specifically, we found the headers, but not the'
4081 warn2 'libraries; so either GDK-Pixbuf is half-installed on this'
4082 warn2 "system, or something else went wrong. The \`config.log'"
4083 warn2 'file might contain some clues.'
4087 warn2 'Some of the demos will not use images as much as they could.'
4088 warn2 'You should consider installing GDK-Pixbuf and re-running'
4089 warn2 'configure. (GDK-Pixbuf is recommended over XPM, as it'
4090 warn2 'provides support for more image formats.)'
4094 if test "$have_jpeg" = no ; then
4095 if test "$with_jpeg_req" = yes ; then
4096 warnL 'Use of libjpeg was requested, but it was not found.'
4097 elif test "$with_jpeg_req" = no ; then
4098 noteL 'The JPEG library is not being used.'
4100 noteL 'The JPEG library was not found.'
4103 if test "$jpeg_halfassed" = yes ; then
4105 warn2 'More specifically, we found the headers, but not the'
4106 warn2 'library; so either JPEG is half-installed on this'
4107 warn2 "system, or something else went wrong. The \`config.log'"
4108 warn2 'file might contain some clues.'
4112 if test "$have_gdk_pixbuf" = no ; then
4113 warn2 "This means that it won't be possible for the image-manipulating"
4114 warn2 "display modes to load files from disk; and it also means that"
4115 warn2 "the \`webcollage' program will be much slower."
4117 warn2 "This means the \`webcollage' program will be much slower."
4122 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
4123 preferred_mesagl=3.4
4124 mgv="$ac_mesagl_version_string"
4125 pgl="$preferred_mesagl"
4127 if test "$ac_mesagl_version" = unknown; then
4129 # warnL "Unable to determine the MesaGL version number!"
4130 # warn2 "Make sure you are using version $preferred_mesagl or newer."
4132 elif test \! "$ac_mesagl_version" -gt 2006; then
4133 warnL "MesaGL version number is $mgv --"
4134 warn2 "MesaGL 2.6 and earlier have a security bug. It is strongly"
4135 warn2 "recommended that you upgrade to at least version $preferred_mesagl."
4137 elif test \! "$ac_mesagl_version" -gt 3003; then
4138 warnL "MesaGL version number is $mgv --"
4139 warn2 "MesaGL 3.3 and earlier have some bugs; it is recommended"
4140 warn2 "that you upgrade to $pgl or newer."
4144 if test "$have_gl" = no ; then
4145 if test "$with_gl_req" = yes ; then
4146 warnL 'Use of GL was requested, but it was not found.'
4147 elif test "$with_gl_req" = no ; then
4148 noteL 'The OpenGL 3D library is not being used.'
4150 noteL 'The OpenGL 3D library was not found.'
4153 if test "$gl_halfassed" = yes ; then
4155 warn2 'More specifically, we found the headers, but not the'
4156 warn2 'libraries; so either GL is half-installed on this'
4157 warn2 "system, or something else went wrong. The \`config.log'"
4158 warn2 'file might contain some clues.'
4162 warn2 'Those demos which use 3D will not be built or installed.'
4163 warn2 'You might want to consider installing OpenGL and'
4164 warn2 "re-running configure. If your vendor doesn't ship"
4165 warn2 'their own implementation of OpenGL, you can get a free'
4166 warn2 'version at <http://www.mesa3d.org/>. For general OpenGL'
4167 warn2 'info, see <http://www.opengl.org/>.'
4172 if test "$have_gl" = yes -a "$have_gle" = no ; then
4174 # nobody cares about this; don't print the warning unless it was
4175 # requested and not found, or halfway-found.
4176 if test "$with_gle_req" = yes -o "$gle_halfassed" = yes ; then
4178 if test "$with_gle_req" = yes ; then
4179 noteL 'Use of the GLE (GL Extrusion) library was requested, but'
4180 warn2 'it was not found (though the OpenGL library was found, and'
4181 warn2 'is being used.)'
4182 elif test "$with_gle_req" = no ; then
4183 noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
4184 warn2 'library is not.'
4186 noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
4190 if test "$gle_halfassed" = yes ; then
4192 warn2 'More specifically, we found the headers, but not the'
4193 warn2 'libraries; so either GLE is half-installed on this'
4194 warn2 "system, or something else went wrong. The \`config.log'"
4195 warn2 'file might contain some clues.'
4199 warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
4200 warn2 'will not be built or installed. You might want to consider'
4201 warn2 'installing GLE and re-running configure. You can find the'
4202 warn2 'GLE library at <http://www.linas.org/gle/>. For general'
4203 warn2 'OpenGL info, see <http://www.opengl.org/>.'
4209 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
4210 warn 'Use of XReadDisplay was requested, but it was not found.'
4213 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
4214 warn 'Use of Kerberos was requested, but it was not found.'
4217 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
4218 warn 'Use of PAM was requested, but it was not found.'
4221 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
4222 warn 'Use of shadow passwords was requested, but they were not found.'
4225 if test "$ac_macosx" = yes ; then
4226 if test "$enable_locking" = yes ; then
4227 warn "You have specified --enable-locking on MacOS X."
4228 warn2 "THIS DOES NOT WORK! Don't do this!"
4233 # You are in a twisty maze of namespaces and syntaxes, all alike.
4234 # Fuck the skull of Unix.
4236 bindir=`eval eval eval eval eval eval eval echo $bindir`
4237 HACKDIR=`eval eval eval eval eval eval eval echo $HACKDIR`
4238 HACK_CONF_DIR=`eval eval eval eval eval eval eval echo $HACK_CONF_DIR`
4240 # canonicalize slashes.
4241 bindir=`echo "${bindir}" | sed 's@/$@@;s@//*@/@g'`
4242 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
4243 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
4246 # Sanity check the hackdir
4247 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
4248 if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
4250 AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
4251 There will be an executable installed with that name, so
4252 that can't be the name of a directory as well. Please
4253 re-configure with a different directory name.])
4260 # Now let's warn if there's a previous RPM version already installed.
4261 # But don't bother with this test if we are currently *building* an RPM.
4263 if test -z "$RPM_PACKAGE_VERSION" ; then
4265 rpmnames="xscreensaver xscreensaver-base xscreensaver-extras"
4269 rpmv=`(rpm -qv $rpmnames) 2>/dev/null | \
4270 sed -n 's/^[-a-z]*-\([0-9][0-9]*[.][0-9][0-9a-z]*\)-.*$/\1/p' | \
4274 if test \! -z "$rpmv" ; then
4275 rpmbdir=`rpm -ql $rpmnames | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
4276 rpmhdir=`rpm -ql $rpmnames | sed -n 's@^\(.*\)/popsquares$@\1@p'`
4279 warnL "There is already an installed RPM of xscreensaver $rpmv"
4280 warn2 'on this system. You might want to remove it ("rpm -ve")'
4281 warn2 'before running "make install" in this directory.'
4283 warn2 "Alternately, you could build this version of xscreensaver"
4284 warn2 'as an RPM, and then install that. An "xscreensaver.spec"'
4285 warn2 'file is included. Try "rpmbuild -v -ba xscreensaver.spec".'
4286 warn2 "See the RPM documentation for more info."
4289 if test "$rpmbdir" = "$rpmhdir" ; then
4290 warn2 "The RPM version was installed in $rpmbdir/."
4293 warn2 "The RPM version was installed in $rpmbdir/,"
4294 warn2 "with demos in $rpmhdir/."
4299 # Also warn if there's a Debian package installed.
4301 debnames="xscreensaver xscreensaver-data xscreensaver-data-extra"
4303 for dpkg in $debnames ; do
4304 if test -z "$debv"; then
4305 debv=`dpkg -s $dpkg 2>/dev/null | sed -n 's/^Version: \(.*\)$/\1/p'`
4309 if test \! -z "$debv" ; then
4310 debbdir=`dpkg -L $debnames 2>/dev/null | \
4311 sed -n 's@^\(.*/bin/\)xscreensaver$@\1@p'`
4312 debhdir=`dpkg -L $debnames 2>/dev/null | \
4313 sed -n 's@^\(.*/\)popsquares$@\1@p'`
4314 if test -z "$debbdir" ; then debbdir='???'; fi
4315 if test -z "$debhdir" ; then debhdir='???'; fi
4318 warnL "There is already an installed dpkg of xscreensaver"
4319 warn2 "version \"$debv\" on this system."
4321 warn2 "The dpkg was installed in $debbdir,"
4322 warn2 "with demos in $debhdir."
4326 if test "${bindir}" = "${HACKDIR}" ; then
4330 if test "$do_dir_warning" = yes; then
4334 echo ' When you run "make install", the "xscreensaver",'
4335 echo ' "xscreensaver-demo", and "xscreensaver-command" executables'
4336 echo " will be installed in ${bindir}/."
4338 echo " The various graphics demos (190+ different executables) will"
4339 echo " be installed in ${HACKDIR}/."
4341 echo " If you would prefer the demos to be installed elsewhere,"
4342 echo " you should re-run configure with the --with-hackdir=DIR"
4343 echo " option. For more information, run \`./configure --help'."
4347 if test "$warning" != no; then
4348 echo '' ; echo "$warnsep" ; echo ''
4351 if test "$do_dir_warning" = no; then
4352 if test "$warning" = no; then
4355 echo "User programs will be installed in ${bindir}/"
4356 echo "Screen savers will be installed in ${HACKDIR}/"
4357 echo "Configuration dialogs will be installed in ${HACK_CONF_DIR}/"
4358 echo "System-wide default settings will be installed in ${APPDEFAULTS}/"