http://packetstormsecurity.org/UNIX/admin/xscreensaver-4.01.tar.gz
[xscreensaver] / configure.in
1 # configure.in --- xscreensaver, Copyright (c) 1997-2000 Jamie Zawinski.
2 #
3
4 AC_INIT(driver/subprocs.c)
5 AC_CONFIG_HEADER(config.h)
6
7 echo "current directory: `pwd`"
8 echo "command line was: $0 $@"
9
10
11 # After checking to see that --srcdir is correct (which AC_INIT does)
12 # check for some random other files that come later in the tar file,
13 # to make sure everything is here.
14 #
15 for d in driver utils hacks hacks/glx ; do
16   f=$srcdir/$d/Makefile.in
17   if test \! -r $f ; then
18     echo ""
19     echo "ERROR: The package is incomplete: $f does not exist."
20     echo "       This probably means that your download was truncated."
21     echo ""
22     exit 1
23   fi
24 done
25
26
27 ###############################################################################
28 #
29 #       Function to figure out how to run the compiler.
30 #
31 ###############################################################################
32
33 AC_DEFUN(AC_PROG_CC_ANSI,
34  [AC_PROG_CC
35
36   if test -z "$GCC"; then
37     AC_MSG_CHECKING(how to request ANSI compilation)
38     case "$host" in
39       *-hpux* )
40         AC_MSG_RESULT(HPUX: adding -Ae)
41         CC="$CC -Ae"
42       ;;
43       *-aix* )
44         AC_MSG_RESULT(AIX: adding -qlanglvl=ansi -qhalt=e)
45         CC="$CC -qlanglvl=ansi -qhalt=e"
46       ;;
47
48       *-dec-* )
49         AC_MSG_RESULT(DEC: adding -std1 -ieee)
50         CC="$CC -std1"
51       ;;
52
53       *)
54         AC_MSG_RESULT(no idea)
55       ;;
56     esac
57   fi
58
59   AC_MSG_CHECKING([whether the compiler works on ANSI C])
60   AC_TRY_RUN([ main(int ac, char **av) { return 0; } ],
61      AC_MSG_RESULT(yes),
62      AC_MSG_RESULT(no)
63      AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.),
64      AC_MSG_ERROR(Couldn't build even a trivial ANSI C program: check CC.))
65
66   if test -n "$GCC"; then
67     AC_MSG_RESULT(Turning on gcc compiler warnings.)
68     CC="$CC -Wall -Wstrict-prototypes -Wnested-externs -Wno-format"
69   else
70     case "$host" in
71       *-irix5* |*-irix6.[0-3]* )
72         AC_MSG_RESULT(Turning on SGI compiler warnings.)
73         CC="$CC -fullwarn -use_readonly_const -rdata_shared -g3"
74       ;;
75 #     *-dec-osf* )
76 #       if test -z "$GCC"; then
77 #         AC_MSG_RESULT(Turning on DEC C compiler warnings.)
78 #         CC="$CC -migrate -w0 -verbose -warnprotos"
79 #       fi
80 #     ;;
81     esac
82   fi
83 ])
84
85
86 ###############################################################################
87 #
88 #       Functions to figure out how to disable // comments in ANSI C code.
89 #
90 #       (With recent gcc, this is done with "-std=c89".  With older gcc, this
91 #       is done by passing "-lang-c89" to cpp, by passing "-Wp,-lang-c89" to
92 #       gcc.  Old gcc doesn't support -std, and new gcc doesn't support -lang.
93 #       so much for compatibility!)
94 #
95 ###############################################################################
96
97 AC_DEFUN(AC_GCC_ACCEPTS_STD,
98  [if test -n "$GCC"; then
99    AC_CACHE_CHECK([whether gcc accepts -std],
100      ac_cv_gcc_accepts_std,
101     [if ( gcc -E -std=c89 - </dev/null 2>&1 >/dev/null | \
102           grep unrecognized >/dev/null ); then
103        ac_cv_gcc_accepts_std=no
104      else
105        ac_cv_gcc_accepts_std=yes
106      fi])
107    ac_gcc_accepts_std="$ac_cv_gcc_accepts_std"
108   fi
109 ])
110
111 AC_DEFUN(AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE,
112  [if test -n "$GCC"; then
113    AC_GCC_ACCEPTS_STD
114    AC_MSG_RESULT(Disabling C++ comments in ANSI C code.)
115    #
116    # The reason that // comments are banned from xscreensaver is that gcc is
117    # basically the only compiler in the world that supports them in C code.
118    # All other vendors support them only in their C++ compilers, not in their
119    # ANSI C compilers.  This means that it's a portability problem: every time
120    # these comments have snuck into the xscreensaver source code, I've gotten
121    # complaints about it the next day.  So we turn off support for them in gcc
122    # as well to prevent them from accidentially slipping in.
123    #
124    if test "$ac_gcc_accepts_std" = yes ; then
125      #
126      # -std=c89 defines __STRICT_ANSI__, which we don't want.
127      # (That appears to be the only additional preprocessor symbol
128      # it defines, in addition to the syntax changes it makes.)
129      #
130      # -std=gnu89 is no good, because // comments were a GNU extension
131      # before they were in the ANSI C 99 spec...  (gcc 2.96 permits //
132      # with -std=gnu89 but not with -std=c89.)
133      #
134      CC="$CC -std=c89 -U__STRICT_ANSI__"
135    else
136      # The old way:
137      CC="$CC -Wp,-lang-c89"
138    fi
139   fi
140 ])
141
142
143 ###############################################################################
144 #
145 #       Function to figure out how to create directory trees.
146 #
147 ###############################################################################
148
149 AC_DEFUN(AC_PROG_INSTALL_DIRS,
150  [AC_CACHE_CHECK([whether \"\${INSTALL} -d\" creates intermediate directories],
151     ac_cv_install_d_creates_dirs,
152     [ac_cv_install_d_creates_dirs=no
153      rm -rf conftestdir
154      if mkdir conftestdir; then
155        cd conftestdir >&-
156        ${INSTALL} -d `pwd`/dir1/dir2 >&- 2>&-
157        if test -d dir1/dir2/. ; then
158          ac_cv_install_d_creates_dirs=yes
159        fi
160        cd .. >&-
161        rm -rf conftestdir
162      fi
163     ])
164
165   if test "$ac_cv_install_d_creates_dirs" = no ; then
166     AC_CACHE_CHECK([whether \"mkdir -p\" creates intermediate directories],
167       ac_cv_mkdir_p_creates_dirs,
168       [ac_cv_mkdir_p_creates_dirs=no
169        rm -rf conftestdir
170        if mkdir conftestdir; then
171          cd conftestdir >&-
172          mkdir -p dir1/dir2 >&- 2>&-
173          if test -d dir1/dir2/. ; then
174            ac_cv_mkdir_p_creates_dirs=yes
175          fi
176          cd .. >&-
177          rm -rf conftestdir
178        fi
179       ])
180   fi
181
182   if test "$ac_cv_install_d_creates_dirs" = yes ; then
183     INSTALL_DIRS='${INSTALL} -d'
184   elif test "$ac_cv_mkdir_p_creates_dirs" = yes ; then
185     INSTALL_DIRS='mkdir -p'
186   else
187     # any other ideas?
188     INSTALL_DIRS='${INSTALL} -d'
189   fi
190 ])
191
192
193 ###############################################################################
194 #
195 #       Function to check whether gettimeofday() exists, and how to call it.
196 #       This may define HAVE_GETTIMEOFDAY and GETTIMEOFDAY_TWO_ARGS.
197 #
198 ###############################################################################
199
200 AC_DEFUN(AC_GETTIMEOFDAY_ARGS,
201  [AC_MSG_CHECKING(how to call gettimeofday)
202   AC_CACHE_VAL(ac_cv_gettimeofday_args,
203    [AC_TRY_COMPILE([#include <stdlib.h>
204                     #include <sys/time.h>],
205                    [struct timeval tv; struct timezone tzp;
206                     gettimeofday(&tv, &tzp);],
207                    [ac_gettimeofday_args=2],
208                    [AC_TRY_COMPILE([#include <stdlib.h>
209                                     #include <sys/time.h>],
210                                    [struct timeval tv; gettimeofday(&tv);],
211                                    [ac_gettimeofday_args=1],
212                                    [ac_gettimeofday_args=0])])
213     ac_cv_gettimeofday_args=$ac_gettimeofday_args])
214   ac_gettimeofday_args=$ac_cv_gettimeofday_args
215   if test "$ac_gettimeofday_args" = 1 ; then
216     AC_DEFINE(HAVE_GETTIMEOFDAY)
217     AC_MSG_RESULT(one argument)
218   elif test "$ac_gettimeofday_args" = 2 ; then
219     AC_DEFINE(HAVE_GETTIMEOFDAY)
220     AC_DEFINE(GETTIMEOFDAY_TWO_ARGS)
221     AC_MSG_RESULT(two arguments)
222   else
223     AC_MSG_RESULT(unknown)
224   fi
225 ])
226
227
228 ###############################################################################
229 #
230 #       Function to find perl5 (defines PERL and PERL_VERSION.)
231 #
232 ###############################################################################
233
234 # M4 sucks!!  perl sucks too!!
235 changequote(X,Y)
236 perl_version_cmd='print $]'
237 changequote([,])
238
239 AC_DEFUN(AC_PROG_PERL,
240  [AC_PATH_PROGS(PERL, [perl5 perl],,)
241   if test -z "$PERL" ; then
242     PERL_VERSION=0
243   else
244     AC_CACHE_CHECK([perl version], ac_cv_perl_version,
245                    [ac_cv_perl_version=`$PERL -e "$perl_version_cmd"`])
246     PERL_VERSION=$ac_cv_perl_version
247   fi
248  ])
249
250
251 ###############################################################################
252 #
253 #       Function to demand "bc".  Losers.
254 #
255 ###############################################################################
256
257 AC_DEFUN(AC_DEMAND_BC,
258  [ac_bc_result=`echo 6+9 | bc 2>/dev/null`
259   AC_MSG_CHECKING([for bc])
260   if test "$ac_bc_result" = "15" ; then
261     AC_MSG_RESULT(yes)
262   else
263     AC_MSG_RESULT(no)
264     echo ''
265     AC_MSG_ERROR([Your system doesn't have \"bc\", which has been a standard
266                   part of Unix since the 1970s.  Come back when your vendor
267                   has grown a clue.])
268   fi
269  ])
270
271 ###############################################################################
272 #
273 #       Functions to check how to do ICMP PING requests.
274 #
275 ###############################################################################
276
277 AC_DEFUN(AC_CHECK_ICMP,
278  [AC_CACHE_CHECK([for struct icmp], ac_cv_have_icmp,
279   [AC_TRY_COMPILE([#include <stdlib.h>
280                    #include <stdio.h>
281                    #include <math.h>
282                    #include <unistd.h>
283                    #include <limits.h>
284                    #include <signal.h>
285                    #include <fcntl.h>
286                    #include <sys/types.h>
287                    #include <sys/time.h>
288                    #include <sys/ipc.h>
289                    #include <sys/shm.h>
290                    #include <sys/socket.h>
291                    #include <netinet/in_systm.h>
292                    #include <netinet/in.h>
293                    #include <netinet/ip.h>
294                    #include <netinet/ip_icmp.h>
295                    #include <netinet/udp.h>
296                    #include <arpa/inet.h>
297                    #include <netdb.h>],
298                   [struct icmp i;
299                    struct sockaddr s;
300                    struct sockaddr_in si;
301                    struct ip ip;
302                    i.icmp_type = ICMP_ECHO;
303                    i.icmp_code = 0;
304                    i.icmp_cksum = 0;
305                    i.icmp_id = 0;
306                    i.icmp_seq = 0;
307                    si.sin_family = AF_INET;
308                    #if defined(__DECC) || defined(_IP_VHL)
309                    ip.ip_vhl = 0;
310                    #else
311                    ip.ip_hl = 0;
312                    #endif
313                    ],
314                   [ac_cv_have_icmp=yes],
315                   [ac_cv_have_icmp=no])])
316  if test "$ac_cv_have_icmp" = yes ; then
317    AC_DEFINE(HAVE_ICMP)
318  fi])
319
320 AC_DEFUN(AC_CHECK_ICMPHDR,
321  [AC_CACHE_CHECK([for struct icmphdr], ac_cv_have_icmphdr,
322   [AC_TRY_COMPILE([#include <stdlib.h>
323                    #include <stdio.h>
324                    #include <math.h>
325                    #include <unistd.h>
326                    #include <limits.h>
327                    #include <signal.h>
328                    #include <fcntl.h>
329                    #include <sys/types.h>
330                    #include <sys/time.h>
331                    #include <sys/ipc.h>
332                    #include <sys/shm.h>
333                    #include <sys/socket.h>
334                    #include <netinet/in_systm.h>
335                    #include <netinet/in.h>
336                    #include <netinet/ip.h>
337                    #include <netinet/ip_icmp.h>
338                    #include <netinet/udp.h>
339                    #include <arpa/inet.h>
340                    #include <netdb.h>],
341                   [struct icmphdr i;
342                    struct sockaddr s;
343                    struct sockaddr_in si;
344                    struct ip ip;
345                    i.type = ICMP_ECHO;
346                    i.code = 0;
347                    i.checksum = 0;
348                    i.un.echo.id = 0;
349                    i.un.echo.sequence = 0;
350                    si.sin_family = AF_INET;
351                    ip.ip_hl = 0;],
352                   [ac_cv_have_icmphdr=yes],
353                   [ac_cv_have_icmphdr=no])])
354  if test "$ac_cv_have_icmphdr" = yes ; then
355    AC_DEFINE(HAVE_ICMPHDR)
356  fi])
357
358
359 ###############################################################################
360 #
361 #       Functions to check for various X11 crap.
362 #
363 ###############################################################################
364
365 # Try and find the app-defaults directory.
366 # It sucks that autoconf doesn't do this already...
367 #
368 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_XMKMF,[
369   rm -fr conftestdir
370   if mkdir conftestdir; then
371     cd conftestdir >&-
372     # Make sure to not put "make" in the Imakefile rules, since we grep it out.
373     cat > Imakefile <<'EOF'
374 acfindx:
375         @echo 'ac_x_app_defaults="${XAPPLOADDIR}"'
376 EOF
377     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
378       # GNU make sometimes prints "make[1]: Entering...", which'd confuse us.
379       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
380     fi
381     cd .. >&-
382     rm -fr conftestdir
383   fi])
384
385 AC_DEFUN(AC_PATH_X_APP_DEFAULTS_DIRECT,[
386   # Look for the directory under a standard set of common directories.
387   # Check X11 before X11Rn because it's often a symlink to the current release.
388   for ac_dir in                                 \
389     /usr/X11/lib/app-defaults                   \
390     /usr/X11R6/lib/app-defaults                 \
391     /usr/X11R6/lib/X11/app-defaults             \
392     /usr/X11R5/lib/app-defaults                 \
393     /usr/X11R5/lib/X11/app-defaults             \
394     /usr/X11R4/lib/app-defaults                 \
395     /usr/X11R4/lib/X11/app-defaults             \
396                                                 \
397     /usr/lib/X11/app-defaults                   \
398     /usr/lib/X11R6/app-defaults                 \
399     /usr/lib/X11R5/app-defaults                 \
400     /usr/lib/X11R4/app-defaults                 \
401                                                 \
402     /usr/local/X11/lib/app-defaults             \
403     /usr/local/X11R6/lib/app-defaults           \
404     /usr/local/X11R5/lib/app-defaults           \
405     /usr/local/X11R4/lib/app-defaults           \
406                                                 \
407     /usr/local/lib/X11/app-defaults             \
408     /usr/local/lib/X11R6/app-defaults           \
409     /usr/local/lib/X11R6/X11/app-defaults       \
410     /usr/local/lib/X11R5/app-defaults           \
411     /usr/local/lib/X11R5/X11/app-defaults       \
412     /usr/local/lib/X11R4/app-defaults           \
413     /usr/local/lib/X11R4/X11/app-defaults       \
414                                                 \
415     /usr/X386/lib/X11/app-defaults              \
416     /usr/x386/lib/X11/app-defaults              \
417     /usr/XFree86/lib/X11/app-defaults           \
418                                                 \
419     /usr/lib/X11/app-defaults                   \
420     /usr/local/lib/X11/app-defaults             \
421     /usr/unsupported/lib/X11/app-defaults       \
422     /usr/athena/lib/X11/app-defaults            \
423     /usr/local/x11r5/lib/X11/app-defaults       \
424     /usr/lpp/Xamples/lib/X11/app-defaults       \
425     /lib/usr/lib/X11/app-defaults               \
426                                                 \
427     /usr/openwin/lib/app-defaults               \
428     /usr/openwin/lib/X11/app-defaults           \
429     /usr/openwin/share/lib/app-defaults         \
430     /usr/openwin/share/lib/X11/app-defaults     \
431                                                 \
432     /X11R6/lib/app-defaults                     \
433     /X11R5/lib/app-defaults                     \
434     /X11R4/lib/app-defaults                     \
435     ; \
436   do
437     if test -d "$ac_dir"; then
438       ac_x_app_defaults=$ac_dir
439       break
440     fi
441   done
442 ])
443
444 AC_DEFUN(AC_PATH_X_APP_DEFAULTS,
445   [AC_REQUIRE_CPP()
446     AC_CACHE_CHECK([for X app-defaults directory], ac_cv_x_app_defaults,
447      [AC_PATH_X_APP_DEFAULTS_XMKMF
448       if test x"$ac_x_app_defaults" = x; then
449         AC_PATH_X_APP_DEFAULTS_DIRECT
450       fi
451       if test x"$ac_x_app_defaults" = x; then
452         ac_cv_x_app_defaults="/usr/lib/X11/app-defaults"
453       else
454         # Record where we found app-defaults for the cache.
455         ac_cv_x_app_defaults="$ac_x_app_defaults"
456       fi])
457     eval ac_x_app_defaults="$ac_cv_x_app_defaults"])
458
459
460 AC_DEFUN(AC_XPOINTER,
461  [AC_CACHE_CHECK([for XPointer], ac_cv_xpointer,
462                  [AC_TRY_X_COMPILE([#include <X11/Xlib.h>],
463                                    [XPointer foo = (XPointer) 0;],
464                                    [ac_cv_xpointer=yes],
465                                    [ac_cv_xpointer=no])])
466   if test "$ac_cv_xpointer" != yes; then
467    AC_DEFINE(XPointer,[char*])
468   fi])
469
470
471 # Random special-cases for X on certain pathological OSes.
472 # You know who you are.
473 #
474 AC_DEFUN(AC_X_RANDOM_PATHS,
475  [case "$host" in
476     *-hpux*)
477
478       # The following arcana was gleaned from conversations with
479       # Eric Schwartz <erics@col.hp.com>:
480       #
481       # On HPUX 10.x, the parts of X that HP considers "standard" live in
482       # /usr/{include,lib}/X11R6/.  The parts that HP doesn't consider
483       # "standard", notably, Xaw and Xmu, live in /usr/contrib/X11R6/.
484       # Yet /usr/contrib/X11R6/ comes preinstalled on all HPUX systems.
485       # Also, there are symlinks from /usr/include/ and /usr/lib/ into
486       # /usr/{include,lib}/X11R6/, so that (if you don't use Xmu at all)
487       # you don't need any -I or -L arguments.
488       #
489       # On HPUX 9.x, /usr/{include,lib}/X11R5/ and /usr/contrib/X11R5/
490       # are the same division as 10.x.  However, there are no symlinks to
491       # the X stuff from /usr/include/ and /usr/lib/, so -I and -L
492       # arguments are always necessary.
493       #
494       # However, X11R6 was available on HPUX 9.x as a patch: if that
495       # patch was installed, then all of X11R6 went in to
496       # /usr/contrib/X11R6/ (there was no /usr/{include,lib}/X11R6/.)
497       #
498       # HPUX 8.x was the same as 9.x, but was X11R4 instead (I don't know
499       # whether R5 was available as a patch; R6 undoubtedly was not.)
500       #
501       # So.  We try and use the highest numbered pair of
502       # /usr/{include,lib}/X11R?/ and /usr/contrib/X11R?/{include,lib}/
503       # that are available.  We do not mix and match different versions
504       # of X.
505       #
506       # Question I still don't know the answer to: (do you?)
507       #
508       #   * On HPUX 9.x, where /usr/include/X11R5/ was standard, and
509       #     /usr/contrib/X11R6/ could be installed as a patch, what was in
510       #     that contrib directory?  Did it contain so-called "standard"
511       #     X11R6, or did it include Xaw and Xmu as well?  If the former,
512       #     where did one find Xaw and Xmu on 9.x R6 systems?  Would this
513       #     be a situation where one had to reach into the R5 headers and
514       #     libs to find Xmu?  That is, must both R6 and R5 directories
515       #     be on the -I and -L lists in that case?
516       #
517       for version in X11R6 X11R5 X11R4 ; do
518         # if either pair of directories exists...
519         if test -d /usr/include/$version || test -d /usr/contrib/$version/include
520         then
521            # if contrib exists, use it...
522            if test -d /usr/contrib/$version/include ; then
523              X_CFLAGS="$X_CFLAGS -I/usr/contrib/$version/include"
524              X_LIBS="$X_LIBS -L/usr/contrib/$version/lib"
525            fi
526            # if the "standard" one exists, use it.
527            if test -d /usr/include/$version ; then
528              X_CFLAGS="$X_CFLAGS -I/usr/include/$version"
529              X_LIBS="$X_LIBS -L/usr/lib/$version"
530            fi
531            # since at least one of the pair exists, go no farther.
532            break
533         fi
534       done
535
536       # Now find Motif.  Thanks for not making xmkmf find this by
537       # default, you losers.
538       #
539       if test -d /usr/include/Motif2.1 ; then
540         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif2.1"
541         X_LIBS="$X_LIBS -L/usr/lib/Motif2.1"
542       elif test -d /usr/include/Motif1.2 ; then
543         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.2"
544         X_LIBS="$X_LIBS -L/usr/lib/Motif1.2"
545       elif test -d /usr/include/Motif1.1 ; then
546         X_CFLAGS="$X_CFLAGS -I/usr/include/Motif1.1"
547         X_LIBS="$X_LIBS -L/usr/lib/Motif1.1"
548       fi
549
550       # Now let's check for the pseudo-standard locations for OpenGL and XPM.
551       #
552       if test -d /opt/graphics/OpenGL/include ; then
553         # HP-UX 10.20 puts it here
554         X_CFLAGS="-I/opt/graphics/OpenGL/include $X_CFLAGS"
555         X_LIBS="-L/opt/graphics/OpenGL/lib $X_LIBS"
556       elif test -d /opt/Mesa/lib ; then
557         X_CFLAGS="-I/opt/Mesa/include $X_CFLAGS"
558         X_LIBS="-L/opt/Mesa/lib $X_LIBS"
559       fi
560
561
562       if test -d /opt/xpm/lib/X11 ; then
563         X_CFLAGS="-I/opt/xpm/include $X_CFLAGS"
564         X_LIBS="-L/opt/xpm/lib/X11 $X_LIBS"
565       fi
566
567       # On HPUX, default to installing in /opt/xscreensaver/ instead of
568       # in /usr/local/, unless there is already an xscreensaver in
569       # /usr/local/bin/.  This can be overridden with the --prefix arg
570       # to configure.  I'm not sure this is the right thing to do, but
571       # Richard Lloyd says so...
572       #
573       if test \! -x /usr/local/bin/xscreensaver ; then
574         ac_default_prefix=/opt/xscreensaver
575       fi
576
577     ;;
578     *-solaris*)
579
580       # Thanks for not making xmkmf find this by default, pinheads.
581       # And thanks for moving things around again, too.  Is this
582       # really the standard location now?  What happened to the
583       # joke that this kind of thing went in /opt?
584       # cthomp says "answer: CDE (Common Disorganized Environment)"
585       #
586       if test -f /usr/dt/include/Xm/Xm.h ; then
587         X_CFLAGS="$X_CFLAGS -I/usr/dt/include"
588         X_LIBS="$X_LIBS -L/usr/dt/lib -R:/usr/dt/lib"
589
590         # Some versions of Slowlaris Motif require -lgen.  But not all.  Why?
591         AC_CHECK_LIB(gen, regcmp, [X_LIBS="$X_LIBS -lgen"])
592       fi
593     ;;
594   esac])
595
596
597
598 ###############################################################################
599 #
600 #       Some utility functions to make checking for X things easier.
601 #
602 ###############################################################################
603
604 # Like AC_CHECK_HEADER, but it uses the already-computed -I directories.
605 #
606 AC_DEFUN(AC_CHECK_X_HEADER, [
607   ac_save_CPPFLAGS="$CPPFLAGS"
608   if test \! -z "$includedir" ; then 
609     CPPFLAGS="$CPPFLAGS -I$includedir"
610   fi
611   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
612   AC_CHECK_HEADER([$1], [$2])
613   CPPFLAGS="$ac_save_CPPFLAGS"])
614
615 # Like AC_EGREP_HEADER, but it uses the already-computed -I directories.
616 #
617 AC_DEFUN(AC_EGREP_X_HEADER, [
618   ac_save_CPPFLAGS="$CPPFLAGS"
619   if test \! -z "$includedir" ; then 
620     CPPFLAGS="$CPPFLAGS -I$includedir"
621   fi
622   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
623   AC_EGREP_HEADER([$1], [$2], [$3], [$4])
624   CPPFLAGS="$ac_save_CPPFLAGS"])
625
626 # Like AC_TRY_COMPILE, but it uses the already-computed -I directories.
627 #
628 AC_DEFUN(AC_TRY_X_COMPILE, [
629   ac_save_CPPFLAGS="$CPPFLAGS"
630   if test \! -z "$includedir" ; then 
631     CPPFLAGS="$CPPFLAGS -I$includedir"
632   fi
633   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
634   AC_TRY_COMPILE([$1], [$2], [$3], [$4])
635   CPPFLAGS="$ac_save_CPPFLAGS"])
636
637
638 # Like AC_CHECK_LIB, but it uses the already-computed -I and -L directories.
639 # Use this sparingly; it probably doesn't work very well on X programs.
640 #
641 AC_DEFUN(AC_CHECK_X_LIB, [
642   ac_save_CPPFLAGS="$CPPFLAGS"
643   ac_save_LDFLAGS="$LDFLAGS"
644 #  ac_save_LIBS="$LIBS"
645
646   if test \! -z "$includedir" ; then 
647     CPPFLAGS="$CPPFLAGS -I$includedir"
648   fi
649   # note: $X_CFLAGS includes $x_includes
650   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
651
652   if test \! -z "$libdir" ; then
653     LDFLAGS="$LDFLAGS -L$libdir"
654   fi
655   # note: $X_LIBS includes $x_libraries
656   LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
657
658   AC_CHECK_LIB([$1], [$2], [$3], [$4], [$5])
659   CPPFLAGS="$ac_save_CPPFLAGS"
660   LDFLAGS="$ac_save_LDFLAGS"
661 #  LIBS="$ac_save_LIBS"
662   ])
663
664 # Like AC_TRY_RUN, but it uses the already-computed -I directories.
665 # (But not the -L directories!)
666 #
667 AC_DEFUN(AC_TRY_X_RUN, [
668   ac_save_CPPFLAGS="$CPPFLAGS"
669   if test \! -z "$includedir" ; then 
670     CPPFLAGS="$CPPFLAGS -I$includedir"
671   fi
672   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
673   AC_TRY_RUN([$1], [$2], [$3], [$4])
674   CPPFLAGS="$ac_save_CPPFLAGS"])
675
676
677
678 # Usage: HANDLE_X_PATH_ARG([variable_name],
679 #                          [--command-line-option],
680 #                          [descriptive string])
681 #
682 # All of the --with options take three forms:
683 #
684 #   --with-foo (or --with-foo=yes)
685 #   --without-foo (or --with-foo=no)
686 #   --with-foo=/DIR
687 #
688 # This function, HANDLE_X_PATH_ARG, deals with the /DIR case.  When it sees
689 # a directory (string beginning with a slash) it checks to see whether
690 # /DIR/include and /DIR/lib exist, and adds them to $X_CFLAGS and $X_LIBS
691 # as appropriate.
692 #
693 AC_DEFUN(HANDLE_X_PATH_ARG, [
694    case "$[$1]" in
695     yes) ;;
696     no)  ;;
697
698     /*)
699      AC_MSG_CHECKING([for [$3] headers])
700      d=$[$1]/include
701      if test -d $d; then
702        X_CFLAGS="-I$d $X_CFLAGS"
703        AC_MSG_RESULT($d)
704      else
705        AC_MSG_RESULT(not found ($d: no such directory))
706      fi
707
708      AC_MSG_CHECKING([for [$3] libs])
709      d=$[$1]/lib
710      if test -d $d; then
711        X_LIBS="-L$d $X_LIBS"
712        AC_MSG_RESULT($d)
713      else
714        AC_MSG_RESULT(not found ($d: no such directory))
715      fi
716
717      # replace the directory string with "yes".
718      [$1]_req="yes"
719      [$1]=$[$1]_req
720      ;;
721
722     *)
723      echo ""
724      echo "error: argument to [$2] must be \"yes\", \"no\", or a directory."
725      echo "       If it is a directory, then \`DIR/include' will be added to"
726      echo "       the -I list, and \`DIR/lib' will be added to the -L list."
727      exit 1
728      ;;
729    esac
730   ])
731
732
733
734 ###############################################################################
735 ###############################################################################
736 #
737 #       End of function definitions.  Now start actually executing stuff.
738 #
739 ###############################################################################
740 ###############################################################################
741
742 # random compiler setup
743 AC_CANONICAL_HOST
744 AC_PROG_CC_ANSI
745 AC_NO_CPLUSPLUS_COMMENTS_IN_C_CODE
746 AC_PROG_CPP
747 AC_C_CONST
748 AC_C_INLINE
749 AC_DEMAND_BC
750
751 # stuff for Makefiles
752 AC_PROG_INSTALL
753 AC_PROG_INSTALL_DIRS
754 AC_PROG_MAKE_SET
755
756 # By default, autoconf sets INSTALL_SCRIPT to '${INSTALL_PROGRAM}'.
757 # That's wrong: it should be set to '${INSTALL}', so that one can
758 # implement the "install-strip" target properly (strip executables,
759 # but do not try to strip scripts.)
760 #
761 INSTALL_SCRIPT='${INSTALL}'
762
763 # random libc stuff
764 AC_HEADER_STDC
765 AC_CHECK_HEADERS(unistd.h)
766 AC_TYPE_MODE_T
767 AC_TYPE_PID_T
768 AC_TYPE_SIZE_T
769 AC_TYPE_SIGNAL
770 AC_HEADER_TIME
771 AC_HEADER_SYS_WAIT
772 AC_HEADER_DIRENT
773 AC_GETTIMEOFDAY_ARGS
774 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv)
775
776 AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
777 AC_CHECK_ICMP
778 AC_CHECK_ICMPHDR
779 AC_CHECK_HEADERS(crypt.h sys/select.h)
780 AC_PROG_PERL
781
782 if test -z "$PERL" ; then
783   # don't let it be blank...
784   PERL=/usr/bin/perl
785 fi
786
787 AC_PATH_XTRA
788
789 if test "$have_x" != yes; then
790   AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try \`$0 --help'.)
791 fi
792
793 AC_PATH_X_APP_DEFAULTS
794 AC_X_RANDOM_PATHS
795 AC_XPOINTER
796
797
798
799 ###############################################################################
800 #
801 #       Check for -lXmu (some fucked up vendors don't ship it...)
802 #
803 ###############################################################################
804
805 have_xmu=no
806 AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes])
807 if test "$have_xmu" = no ; then
808   XMU_SRCS='$(UTILS_SRC)/xmu.c'
809   XMU_OBJS='$(UTILS_BIN)/xmu.o'
810   XMU_LIBS=''
811 else
812   XMU_SRCS=''
813   XMU_OBJS=''
814   XMU_LIBS='-lXmu'
815   AC_DEFINE(HAVE_XMU)
816 fi
817
818
819 ###############################################################################
820 #
821 #       Check for the SunOS 4.1.x _get_wmShellWidgetClass bug.
822 #       See comp.windows.x FAQ question 124.  The right fix is to
823 #       get OpenWindows 3.0 patches 100512-02 and 100573-03.
824 #
825 ###############################################################################
826
827 if test "$have_xmu" = yes ; then
828   case "$host" in
829     *-sunos4*)
830     AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
831                    ac_cv_sunos_xmu_bug,
832                    [ac_save_LDFLAGS="$LDFLAGS"
833                     if test \! -z "$x_libraries" ; then
834                       LDFLAGS="$LDFLAGS -L$x_libraries"
835                     fi
836                     # Note: this trick never works!  (Generally.)
837                     # We're only getting away with using AC_TRY_LINK
838                     # with X libraries because we know it's SunOS.
839                     LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
840                     AC_TRY_LINK(,,
841                                 [ac_cv_sunos_xmu_bug=no],
842                                 [ac_cv_sunos_xmu_bug=yes])
843                     LDFLAGS="$ac_save_LDFLAGS"])
844     if test "$ac_cv_sunos_xmu_bug" = yes ; then
845       AC_CACHE_CHECK([whether the compiler understands -static], 
846                      ac_cv_ld_static,
847                      [ac_save_LDFLAGS="$LDFLAGS"
848                       LDFLAGS="$LDFLAGS -static"
849                       AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
850                     LDFLAGS="$ac_save_LDFLAGS"])
851       if test "$ac_cv_ld_static" = yes ; then
852         LDFLAGS="$LDFLAGS -static"
853       else
854         LDFLAGS="$LDFLAGS -Bstatic"
855       fi
856     fi
857     ;;
858   esac
859 fi
860
861
862 ###############################################################################
863 #
864 #       Handle the --with-hackdir option
865 #
866 ###############################################################################
867
868 have_hackdir=yes
869 with_hackdir_req=unspecified
870 AC_ARG_WITH(hackdir,[
871 Installation options:
872
873   --with-hackdir=DIR      Where to install the hundreds of demo executables.
874                           Default: \`PREFIX/lib/xscreensaver/'
875 ],
876   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
877
878 if test x"$with_hackdir" = xyes; then
879   HACKDIR='${exec_prefix}/lib/xscreensaver'
880 elif test x"$with_hackdir" = xno; then
881   HACKDIR='${bindir}'
882 else
883   # there must be a better way than this...
884   if test -z "`echo $with_hackdir | sed 's@^/.*@@'`" ; then
885     # absolute path
886     HACKDIR=$with_hackdir
887   else
888     # relative path
889     HACKDIR="\${exec_prefix}$with_hackdir"
890   fi
891 fi
892
893 # canonicalize slashes.
894 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
895
896 # This option used to be called --enable-subdir; make sure that is no longer
897 # used, since configure brain-damagedly ignores unknown --enable options.
898
899 obsolete_enable=
900 AC_ARG_ENABLE(subdir,,[obsolete_enable=yes])
901 if test -n "$obsolete_enable"; then
902   echo "error: the --enable-subdir option has been replaced with"
903   echo "       the new --with-hackdir option; see \`configure --help'"
904   echo "       for more information."
905   exit 1
906 fi
907
908
909 ###############################################################################
910 #
911 #       Handle the --with-configdir option
912 #
913 ###############################################################################
914
915 have_configdir=yes
916 with_configdir_req=unspecified
917 AC_ARG_WITH(configdir,
918 [  --with-configdir=DIR    Where to install the data files that describe each
919                           of the display modes to the GUI.
920                           Default: \`GNOMEPREFIX/control-center/screensavers/'
921                           or \`PREFIX/lib/xscreensaver/config/', depending on
922                           whether GNOME is available.
923 ],
924   [with_configdir="$withval"; with_configdir_req="$withval"],
925   [with_configdir=yes])
926
927 if test x"$with_configdir" = xyes; then
928   # filled in later...
929   HACK_CONF_DIR=''
930 elif test x"$with_configdir" = xno; then
931   echo "error: must be yes, or a pathname: --with-configdir=$with_configdir"
932   exit 1
933 else
934   # there must be a better way than this...
935   if test -z "`echo $with_configdir | sed 's@^/.*@@'`" ; then
936     # absolute path
937     HACK_CONF_DIR=$with_configdir
938   else
939     # relative path
940     HACK_CONF_DIR="\${exec_prefix}$with_configdir"
941   fi
942 fi
943
944
945
946
947 ###############################################################################
948 #
949 #       Check for the SGI SCREEN_SAVER server extension.
950 #
951 ###############################################################################
952
953 have_sgi=no
954 with_sgi_req=unspecified
955 AC_ARG_WITH(sgi-ext,
956 [Except where noted, all of the --with options below can also take a
957 directory argument: for example, \`--with-motif=/opt/Motif'.  That would
958 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
959 to be added to the -L list, assuming those directories exist.  
960
961 By default, support for each of these options will be built in, if the
962 relevant library routines exist.  At run time, they will then be used
963 only if the X server being used supports them.  Each --with option has
964 a corresponding --without option, to override building support for them
965 at all.
966
967 Screen blanking and idle-detection options:
968
969   --with-sgi-ext          Include support for the SGI SCREEN_SAVER extension.],
970   [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
971
972 HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
973
974 if test "$with_sgi" = yes; then
975   AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
976                     [have_sgi=yes
977                      AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)])
978
979 elif test "$with_sgi" != no; then
980   echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
981   exit 1
982 fi
983
984
985 ###############################################################################
986 #
987 #       Check for the MIT-SCREEN-SAVER server extension.
988 #
989 ###############################################################################
990
991 have_mit=no
992 with_mit_req=unspecified
993 AC_ARG_WITH(mit-ext,
994 [  --with-mit-ext          Include support for the MIT-SCREEN-SAVER extension.],
995   [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
996
997 HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER)
998
999 if test "$with_mit" = yes; then
1000   AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes])
1001
1002   # Now check to see if it's really in the library; XF86Free-3.3 ships
1003   # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
1004   #
1005   if test "$have_mit" = yes; then
1006     AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [true], [have_mit=no], -lm)
1007
1008     if test "$have_mit" = no; then
1009       # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
1010       # of in Xext.  Thank you master, may I have another.
1011       AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
1012                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"],
1013                      [true], -lX11 -lXext -lm)
1014     fi
1015
1016     if test "$have_mit" = no; then
1017       # Double fuck!  Looks like some versions of XFree86 (whichever version
1018       # it is that comes with RedHat Linux 2.0 -- I can't find a version 
1019       # number) put this garbage in Xss instead of Xext.  Thank you master,
1020       #  may I have another.
1021       AC_CHECK_X_LIB(Xss, XScreenSaverRegister,
1022                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"],
1023                      [true], -lX11 -lXext -lm)
1024     fi
1025
1026   if test "$have_mit" = yes; then
1027     AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
1028   fi
1029
1030   fi
1031
1032 elif test "$with_mit" != no; then
1033   echo "error: must be yes or no: --with-mit-ext=$with_mit"
1034   exit 1
1035 fi
1036
1037
1038 ###############################################################################
1039 #
1040 #       Check for the XIDLE server extension.
1041 #
1042 ###############################################################################
1043
1044 have_xidle=no
1045 with_xidle_req=unspecified
1046 AC_ARG_WITH(xidle-ext,
1047 [  --with-xidle-ext        Include support for the XIDLE extension.],
1048   [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
1049
1050 HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
1051
1052 if test "$with_xidle" = yes; then
1053   AC_CHECK_X_HEADER(X11/extensions/xidle.h,
1054                     [have_xidle=yes
1055                      AC_DEFINE(HAVE_XIDLE_EXTENSION)])
1056 elif test "$with_xidle" != no; then
1057   echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
1058   exit 1
1059 fi
1060
1061
1062 ###############################################################################
1063 #
1064 #       Check for the SGI-VIDEO-CONTROL server extension.
1065 #
1066 ###############################################################################
1067
1068 have_sgivc=no
1069 with_sgivc_req=unspecified
1070 AC_ARG_WITH(sgivc-ext,
1071 [  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL extension.],
1072   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
1073
1074 HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
1075
1076 if test "$with_sgivc" = yes; then
1077
1078   # first check for XSGIvc.h
1079   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes])
1080
1081   # if that succeeded, then check for the -lXsgivc
1082   if test "$have_sgivc" = yes; then
1083     have_sgivc=no
1084     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
1085                   [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true],
1086                   -lXext -lX11)
1087   fi
1088
1089   # if that succeeded, then we've really got it.
1090   if test "$have_sgivc" = yes; then
1091     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
1092   fi
1093
1094 elif test "$with_sgivc" != no; then
1095   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
1096   exit 1
1097 fi
1098
1099
1100 ###############################################################################
1101 #
1102 #       Check for the DPMS server extension.
1103 #
1104 ###############################################################################
1105
1106 have_dpms=no
1107 with_dpms_req=unspecified
1108 AC_ARG_WITH(dpms-ext,
1109 [  --with-dpms-ext         Include support for the DPMS extension.],
1110   [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
1111
1112 HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
1113
1114 if test "$with_dpms" = yes; then
1115
1116   # first check for dpms.h
1117   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes])
1118
1119   # if that succeeded, then check for the DPMS code in the libraries
1120   if test "$have_dpms" = yes; then
1121
1122     # first look in -lXext (this is where it is with XFree86 4.0)
1123     have_dpms=no
1124     AC_CHECK_X_LIB(Xext, DPMSInfo, [have_dpms=yes], [true], -lXext -lX11)
1125
1126     # if that failed, look in -lXdpms (this is where it was in XFree86 3.x)
1127     if test "$have_dpms" = no; then
1128       AC_CHECK_X_LIB(Xdpms, DPMSInfo,
1129                     [have_dpms=yes; XDPMS_LIBS="-lXdpms"], [true],
1130                     -lXext -lX11)
1131     fi
1132   fi
1133
1134
1135   # if that succeeded, then we've really got it.
1136   if test "$have_dpms" = yes; then
1137     AC_DEFINE(HAVE_DPMS_EXTENSION)
1138   fi
1139
1140 elif test "$with_dpms" != no; then
1141   echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
1142   exit 1
1143 fi
1144
1145
1146 ###############################################################################
1147 #
1148 #       Check for the XINERAMA server extension.
1149 #
1150 ###############################################################################
1151
1152 have_xinerama=no
1153 with_xinerama_req=unspecified
1154 AC_ARG_WITH(xinerama-ext,
1155 [  --with-xinerama-ext     Include support for the XINERAMA extension.],
1156   [with_xinerama="$withval"; with_xinerama_req="$withval"],[with_xinerama=yes])
1157
1158 HANDLE_X_PATH_ARG(with_xinerama, --with-xinerama-ext, XINERAMA)
1159
1160 if test "$with_xinerama" = yes; then
1161
1162   # first check for Xinerama.h
1163   AC_CHECK_X_HEADER(X11/extensions/Xinerama.h, [have_xinerama=yes])
1164
1165   # if that succeeded, then check for the XINERAMA code in the libraries
1166   if test "$have_xinerama" = yes; then
1167
1168     # first look in -lXext
1169     have_xinerama=no
1170     AC_CHECK_X_LIB(Xext, XineramaQueryExtension, [have_xinerama=yes], [true],
1171                   -lXext -lX11)
1172
1173     # if that failed, look in -lXinerama (this is where it is in XFree86 4.1.)
1174     if test "$have_xinerama" = no; then
1175       AC_CHECK_X_LIB(Xinerama, XineramaQueryExtension,
1176                      [have_xinerama=yes; SAVER_LIBS="$SAVER_LIBS -lXinerama"],
1177                      [true], -lXext -lX11)
1178     fi
1179   fi
1180
1181   # if that succeeded, then we've really got it.
1182   if test "$have_xinerama" = yes; then
1183     AC_DEFINE(HAVE_XINERAMA)
1184   fi
1185
1186 elif test "$with_xinerama" != no; then
1187   echo "error: must be yes or no: --with-xinerama-ext=$with_xinerama"
1188   exit 1
1189 fi
1190
1191
1192 ###############################################################################
1193 #
1194 #       Check for the XF86VMODE server extension (for virtual screens.)
1195 #
1196 ###############################################################################
1197
1198 have_xf86vmode=no
1199 with_xf86vmode_req=unspecified
1200 AC_ARG_WITH(xf86vmode-ext,
1201 [  --with-xf86vmode-ext    Include support for XFree86 virtual screens.],
1202   [with_xf86vmode="$withval"; with_xf86vmode_req="$withval"],
1203   [with_xf86vmode=yes])
1204
1205 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
1206
1207 if test "$with_xf86vmode" = yes; then
1208
1209   # first check for xf86vmode.h
1210   AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes])
1211
1212   # if that succeeded, then check for the -lXxf86vm
1213   if test "$have_xf86vmode" = yes; then
1214     have_xf86vmode=no
1215     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
1216                   [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"],
1217                    [true], -lXext -lX11)
1218   fi
1219
1220   # if that succeeded, then we've really got it.
1221   if test "$have_xf86vmode" = yes; then
1222     AC_DEFINE(HAVE_XF86VMODE)
1223   fi
1224
1225 elif test "$with_xf86vmode" != no; then
1226   echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
1227   exit 1
1228 fi
1229
1230
1231 ###############################################################################
1232 #
1233 #       Check for the XF86VMODE server extension (for gamma fading.)
1234 #
1235 ###############################################################################
1236
1237 have_xf86gamma=no
1238 have_xf86gamma_ramp=no
1239 with_xf86gamma_req=unspecified
1240 AC_ARG_WITH(xf86gamma-ext,
1241 [  --with-xf86gamma-ext    Include support for XFree86 gamma fading.],
1242   [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"],
1243   [with_xf86gamma=yes])
1244
1245 HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma)
1246
1247 if test "$with_xf86gamma" = yes; then
1248
1249   # first check for xf86vmode.h, if we haven't already
1250   if test "$have_xf86vmode" = yes; then
1251     have_xf86gamma=yes
1252   else
1253     AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes])
1254   fi
1255
1256   # if that succeeded, then check for the -lXxf86vm
1257   if test "$have_xf86gamma" = yes; then
1258     have_xf86gamma=no
1259     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma,
1260                   [have_xf86gamma=yes],
1261                    [true], -lXext -lX11)
1262   fi
1263
1264   # check for the Ramp versions of the functions too.
1265   if test "$have_xf86gamma" = yes; then
1266     have_xf86gamma_ramp=no
1267     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGammaRamp,
1268                   [have_xf86gamma_ramp=yes],
1269                    [true], -lXext -lX11)
1270   fi
1271
1272   # if those tests succeeded, then we've really got the functions.
1273   if test "$have_xf86gamma" = yes; then
1274     AC_DEFINE(HAVE_XF86VMODE_GAMMA)
1275   fi
1276
1277   if test "$have_xf86gamma_ramp" = yes; then
1278     AC_DEFINE(HAVE_XF86VMODE_GAMMA_RAMP)
1279   fi
1280
1281   # pull in the lib, if we haven't already
1282   if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then
1283     SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
1284   fi
1285
1286 elif test "$with_xf86gamma" != no; then
1287   echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode"
1288   exit 1
1289 fi
1290
1291
1292 ###############################################################################
1293 #
1294 #       Check for HP XHPDisableReset and XHPEnableReset.
1295 #
1296 ###############################################################################
1297
1298 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
1299                   [AC_DEFINE(HAVE_XHPDISABLERESET)
1300                    SAVER_LIBS="-lXhp11 $SAVER_LIBS"])
1301
1302
1303 ###############################################################################
1304 #
1305 #       Check for /proc/interrupts.
1306 #
1307 ###############################################################################
1308
1309 have_proc_interrupts=no
1310 with_proc_interrupts_req=unspecified
1311 AC_ARG_WITH(proc-interrupts,
1312 [  --with-proc-interrupts  Include support for consulting the /proc/interrupts
1313                           file to notice keyboard activity.],
1314   [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
1315   [with_proc_interrupts=yes])
1316
1317 if test "$with_proc_interrupts" = yes; then
1318
1319    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
1320     ac_cv_have_proc_interrupts,
1321     [ac_cv_have_proc_interrupts=no
1322      if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
1323        ac_cv_have_proc_interrupts=yes
1324      fi
1325     ])
1326    have_proc_interrupts=$ac_cv_have_proc_interrupts
1327
1328   if test "$have_proc_interrupts" = yes; then
1329     AC_DEFINE(HAVE_PROC_INTERRUPTS)
1330   fi
1331
1332 elif test "$with_proc_interrupts" != no; then
1333   echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
1334   exit 1
1335 fi
1336
1337
1338 ###############################################################################
1339 #
1340 #       The --enable-locking option
1341 #
1342 ###############################################################################
1343
1344 AC_ARG_ENABLE(locking,[
1345 Screen locking options:
1346
1347   --enable-locking        Compile in support for locking the display.
1348   --disable-locking       Do not allow locking at all.
1349 ],
1350   [enable_locking="$enableval"],[enable_locking=yes])
1351 if test "$enable_locking" = yes; then
1352   true
1353 elif test "$enable_locking" = no; then
1354   AC_DEFINE(NO_LOCKING)
1355 else
1356   echo "error: must be yes or no: --enable-locking=$enable_locking"
1357   exit 1
1358 fi
1359
1360
1361
1362 ###############################################################################
1363 #
1364 #       The --enable-vt-locking option
1365 #
1366 ###############################################################################
1367
1368 #ac_vt_lockswitch=no
1369 #AC_ARG_ENABLE(vt-locking,[
1370 #  --enable-vt-locking     Compile in support for locking Virtual Terminals.
1371 #                          This is the default if the system supports it, and
1372 #                          if locking support is included (--enable-locking.)
1373 #  --disable-vt-locking    Do not allow locking of VTs, even if locking is
1374 #                          enabled.],
1375 #  [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
1376 #if test "$enable_vt_locking" = yes; then
1377 #
1378 #  AC_CACHE_CHECK([for the VT_LOCKSWITCH ioctl], ac_cv_vt_lockswitch,
1379 #   [AC_TRY_COMPILE([#include <fcntl.h>
1380 #                   #include <sys/ioctl.h>
1381 #                   #include <sys/vt.h>],
1382 #                  [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
1383 #                  [ac_cv_vt_lockswitch=yes],
1384 #                  [ac_cv_vt_lockswitch=no])])
1385 #  ac_vt_lockswitch=$ac_cv_vt_lockswitch
1386 #
1387 #elif test "$enable_vt_locking" = no; then
1388 #  true
1389 #else
1390 #  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
1391 #  exit 1
1392 #fi
1393 #
1394 #if test "$ac_vt_lockswitch" = yes; then
1395 #  AC_DEFINE(HAVE_VT_LOCKSWITCH)
1396 #  # the VT_LOCKSWITCH ioctl can only be used when running as root.
1397 #  # #### but it doesn't work yet, so don't worry about that for now.
1398 ##  need_setuid=yes
1399 #fi
1400
1401
1402
1403 ###############################################################################
1404 #
1405 #       Check for PAM.
1406 #
1407 ###############################################################################
1408
1409 case "$host" in
1410   *-solaris*)
1411    # Solaris systems tend to come with PAM misconfigured.
1412    #  Don't build it by default, even if the headers exist.
1413    with_pam_default=no
1414    ;;
1415   *)
1416    # Default to building PAM support on all other systems, if it exists.
1417    with_pam_default=yes
1418   ;;
1419 esac
1420
1421 have_pam=no
1422 with_pam_req=unspecified
1423
1424 AC_ARG_WITH(pam,
1425 [  --with-pam              Include support for PAM (Pluggable Auth Modules.)],
1426   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
1427
1428 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1429
1430 if test "$enable_locking" = yes -a "$with_pam" = yes; then
1431   AC_CACHE_CHECK([for PAM], ac_cv_pam,
1432                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1433                                    [ac_cv_pam=yes],
1434                                    [ac_cv_pam=no])])
1435   if test "$ac_cv_pam" = yes ; then
1436     have_pam=yes
1437     AC_DEFINE(HAVE_PAM)
1438     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
1439
1440     # libpam typically requires dlopen and dlsym.  On FreeBSD,
1441     # those are in libc.  On Linux and Solaris, they're in libdl.
1442     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
1443
1444     AC_MSG_CHECKING(how to call pam_strerror)
1445     AC_CACHE_VAL(ac_cv_pam_strerror_args,
1446      [AC_TRY_COMPILE([#include <stdio.h>
1447                       #include <stdlib.h>
1448                       #include <security/pam_appl.h>],
1449                      [pam_handle_t *pamh = 0;
1450                       char *s = pam_strerror(pamh, PAM_SUCCESS);],
1451                      [ac_pam_strerror_args=2],
1452                      [AC_TRY_COMPILE([#include <stdio.h>
1453                                       #include <stdlib.h>
1454                                       #include <security/pam_appl.h>],
1455                                      [char *s =
1456                                        pam_strerror(PAM_SUCCESS);],
1457                                      [ac_pam_strerror_args=1],
1458                                      [ac_pam_strerror_args=0])])
1459       ac_cv_pam_strerror_args=$ac_pam_strerror_args])
1460     ac_pam_strerror_args=$ac_cv_pam_strerror_args
1461     if test "$ac_pam_strerror_args" = 1 ; then
1462       AC_MSG_RESULT(one argument)
1463     elif test "$ac_pam_strerror_args" = 2 ; then
1464       AC_DEFINE(PAM_STRERROR_TWO_ARGS)
1465       AC_MSG_RESULT(two arguments)
1466     else
1467       AC_MSG_RESULT(unknown)
1468     fi
1469   fi
1470 fi
1471
1472
1473 ###############################################################################
1474 #
1475 #       Check for Kerberos.
1476 #
1477 ###############################################################################
1478
1479 have_kerberos=no
1480 have_kerberos5=no
1481 with_kerberos_req=unspecified
1482
1483 AC_ARG_WITH(kerberos, 
1484 [  --with-kerberos         Include support for Kerberos authentication.],
1485   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
1486
1487 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
1488
1489 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
1490   AC_CACHE_CHECK([for Kerberos 4], ac_cv_kerberos,
1491                  [AC_TRY_X_COMPILE([#include <krb.h>],,
1492                                    [ac_cv_kerberos=yes],
1493                                    [ac_cv_kerberos=no])])
1494   AC_CACHE_CHECK([for Kerberos 5], ac_cv_kerberos5,
1495                  [AC_TRY_X_COMPILE([#include <kerberosIV/krb.h>],,
1496                                    [ac_cv_kerberos5=yes],
1497                                    [ac_cv_kerberos5=no])])
1498
1499   if test "$ac_cv_kerberos" = yes ; then
1500     have_kerberos=yes
1501     AC_DEFINE(HAVE_KERBEROS)
1502   fi
1503
1504   if test "$ac_cv_kerberos5" = yes ; then
1505     have_kerberos=yes
1506     have_kerberos5=yes
1507     AC_DEFINE(HAVE_KERBEROS)
1508     AC_DEFINE(HAVE_KERBEROS5)
1509   fi
1510
1511   if test "$have_kerberos5" = yes ; then
1512     # from Matt Knopp <mhat@infocalypse.netlag.com>
1513     # (who got it from amu@mit.edu)
1514     PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcrypt -lcom_err"
1515   elif test "$have_kerberos" = yes ; then
1516     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
1517     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
1518   fi
1519
1520   if test "$have_kerberos" = yes ; then
1521     AC_CHECK_FUNC(res_search,,
1522       AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
1523         AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
1524       ))
1525   fi
1526 fi
1527
1528
1529 ###############################################################################
1530 #
1531 #       Check for the nine billion variants of shadow passwords...
1532 #
1533 ###############################################################################
1534
1535 need_setuid=no
1536
1537 have_shadow=no
1538 with_shadow_req=unspecified
1539
1540 AC_ARG_WITH(shadow,
1541 [  --with-shadow           Include support for shadow password authentication.],
1542   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
1543
1544 HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
1545
1546 if test "$enable_locking" = no ; then
1547   with_shadow_req=no
1548   with_shadow=no
1549 fi
1550
1551
1552 ###############################################################################
1553 #
1554 #       Check for Sun "adjunct" passwords.
1555 #
1556 ###############################################################################
1557
1558 if test "$with_shadow" = yes ; then
1559   AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
1560                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1561                                     #include <unistd.h>
1562                                     #include <sys/types.h>
1563                                     #include <sys/label.h>
1564                                     #include <sys/audit.h>
1565                                     #include <pwdadj.h>],
1566                       [struct passwd_adjunct *p = getpwanam("nobody");
1567                        const char *pw = p->pwa_passwd;],
1568                       [ac_cv_sun_adjunct=yes],
1569                       [ac_cv_sun_adjunct=no])])
1570   if test "$ac_cv_sun_adjunct" = yes; then
1571     have_shadow_adjunct=yes
1572     have_shadow=yes
1573     need_setuid=yes
1574   fi
1575 fi
1576
1577
1578 ###############################################################################
1579 #
1580 #       Check for DEC and SCO so-called "enhanced" security.
1581 #
1582 ###############################################################################
1583
1584 if test "$with_shadow" = yes ; then
1585   AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
1586                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1587                                     #include <unistd.h>
1588                                     #include <sys/types.h>
1589                                     #include <pwd.h>
1590                                     #include <sys/security.h>
1591                                     #include <prot.h>],
1592                       [struct pr_passwd *p;
1593                        const char *pw;
1594                        set_auth_parameters(0, 0);
1595                        check_auth_parameters();
1596                        p = getprpwnam("nobody");
1597                        pw = p->ufld.fd_encrypt;],
1598                       [ac_cv_enhanced_passwd=yes],
1599                       [ac_cv_enhanced_passwd=no])])
1600   if test $ac_cv_enhanced_passwd = yes; then
1601     have_shadow_enhanced=yes
1602     have_shadow=yes
1603     need_setuid=yes
1604
1605     # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
1606     # (I'm told it needs -lcurses too, but I don't understand why.)
1607     # But on DEC, it's in -lsecurity.
1608     #
1609     AC_CHECK_LIB(prot, getprpwnam, 
1610                  [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
1611                  [AC_CHECK_LIB(security, getprpwnam, 
1612                                [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
1613                  [-lx])
1614   fi
1615 fi
1616
1617 ###############################################################################
1618 #
1619 #       Check for HP's entry in the "Not Invented Here" Sweepstakes.
1620 #
1621 ###############################################################################
1622
1623 if test "$with_shadow" = yes ; then
1624   AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
1625                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1626                                     #include <unistd.h>
1627                                     #include <sys/types.h>
1628                                     #include <pwd.h>
1629                                     #include <hpsecurity.h>
1630                                     #include <prot.h>],
1631                       [struct s_passwd *p = getspwnam("nobody");
1632                        const char *pw = p->pw_passwd;],
1633                       [ac_cv_hpux_passwd=yes],
1634                       [ac_cv_hpux_passwd=no])])
1635   if test "$ac_cv_hpux_passwd" = yes; then
1636     have_shadow_hpux=yes
1637     have_shadow=yes
1638     need_setuid=yes
1639
1640     # on HPUX, bigcrypt is in -lsec
1641     AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
1642   fi
1643 fi
1644
1645
1646 ###############################################################################
1647 #
1648 #       Check for FreeBSD-style shadow passwords.
1649 #
1650 #       On FreeBSD, getpwnam() and friends work just like on non-shadow-
1651 #       password systems -- except you only get stuff in the pw_passwd field
1652 #       if the running program is setuid.  So, guess that we've got this
1653 #       lossage to contend with if /etc/master.passwd exists, and default to
1654 #       a setuid installation.
1655 #
1656 ###############################################################################
1657
1658 if test "$with_shadow" = yes ; then
1659   AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
1660                  [if test -f /etc/master.passwd ; then
1661                     ac_cv_master_passwd=yes
1662                   else
1663                     ac_cv_master_passwd=no
1664                   fi])
1665   if test "$ac_cv_master_passwd" = yes; then
1666     need_setuid=yes
1667   fi
1668 fi
1669
1670
1671 ###############################################################################
1672 #
1673 #       Check for traditional (ha!) shadow passwords.
1674 #
1675 ###############################################################################
1676
1677 if test "$with_shadow" = yes ; then
1678   AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
1679                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1680                                     #include <unistd.h>
1681                                     #include <sys/types.h>
1682                                     #include <pwd.h>
1683                                     #include <shadow.h>],
1684                       [struct spwd *p = getspnam("nobody");
1685                        const char *pw = p->sp_pwdp;],
1686                       [ac_cv_shadow=yes],
1687                       [ac_cv_shadow=no])])
1688   if test "$ac_cv_shadow" = yes; then
1689     have_shadow=yes
1690     need_setuid=yes
1691
1692     # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
1693     have_getspnam=no
1694     AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
1695     if test "$have_getspnam" = no ; then
1696       AC_CHECK_LIB(gen, getspnam,
1697                    [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
1698     fi
1699   fi
1700 fi
1701
1702
1703 ###############################################################################
1704 #
1705 #       Check for other libraries needed for non-shadow passwords.
1706 #
1707 ###############################################################################
1708
1709 if test "$enable_locking" = yes ; then
1710
1711   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
1712   have_crypt=no
1713   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
1714   if test "$have_crypt" = no ; then
1715     AC_CHECK_LIB(crypt, crypt,
1716                  [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1717   fi
1718 fi
1719
1720
1721 # Most of the above shadow mechanisms will have set need_setuid to yes,
1722 # if they were found.  But, on some systems, we need setuid even when
1723 # using plain old vanilla passwords.
1724 #
1725 if test "$enable_locking" = yes ; then
1726   case "$host" in
1727     *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
1728       need_setuid=yes
1729     ;;
1730   esac
1731 fi
1732
1733
1734 if test "$have_shadow_adjunct" = yes ; then
1735   AC_DEFINE(HAVE_ADJUNCT_PASSWD)
1736 elif test "$have_shadow_enhanced" = yes ; then
1737   AC_DEFINE(HAVE_ENHANCED_PASSWD)
1738 elif test "$have_shadow_hpux" = yes ; then
1739   AC_DEFINE(HAVE_HPUX_PASSWD)
1740 elif test "$have_shadow" = yes ; then
1741   AC_DEFINE(HAVE_SHADOW_PASSWD)
1742 fi
1743
1744
1745 ###############################################################################
1746 #
1747 #       Check for -lXm.
1748 #
1749 ###############################################################################
1750
1751 have_motif=no
1752 with_motif_req=unspecified
1753 AC_ARG_WITH(motif,[
1754 User interface options:
1755
1756   --with-motif            Use the Motif toolkit for the user interface.],
1757   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes])
1758
1759 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
1760
1761 if test "$with_motif" != yes -a "$with_motif" != no ; then
1762   echo "error: must be yes or no: --with-motif=$with_motif"
1763   exit 1
1764 fi
1765
1766 if test "$with_motif" = yes; then
1767   have_motif=no
1768   AC_CHECK_X_HEADER(Xm/Xm.h,
1769                     [have_motif=yes
1770                      AC_DEFINE(HAVE_MOTIF)
1771                      MOTIF_LIBS="$MOTIF_LIBS -lXm"])
1772 fi
1773
1774
1775 if test "$have_motif" = yes; then
1776   AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)])
1777 fi
1778
1779
1780 ###############################################################################
1781 #
1782 #       Check for -lgtk (and Gnome stuff)
1783 #
1784 ###############################################################################
1785
1786 have_gtk=no
1787 with_gtk_req=unspecified
1788 AC_ARG_WITH(gtk,
1789 [  --with-gtk              Use the Gtk toolkit for the user interface.],
1790   [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
1791
1792 # if --with-gtk=/directory/ was specified, remember that directory so that
1793 # we can also look for the `gtk-config' program in that directory.
1794 case "$with_gtk" in
1795   /*)
1796     gtk_dir="$with_gtk"
1797     ;;
1798   *)
1799     gtk_dir=""
1800     ;;
1801 esac
1802
1803 HANDLE_X_PATH_ARG(with_gtk, --with-gtk, Gtk)
1804
1805 if test "$with_gtk" != yes -a "$with_gtk" != no ; then
1806   echo "error: must be yes or no: --with-gtk=$with_gtk"
1807   exit 1
1808 fi
1809
1810 have_gnome=no
1811 with_gnome_req=unspecified
1812 AC_ARG_WITH(gnome,
1813 [  --with-gnome            Include support for the Gnome Control Center.],
1814   [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes])
1815
1816 # if --with-gnome=/directory/ was specified, remember that directory so that
1817 # we can also look for the `gnome-config' program in that directory.
1818 case "$with_gnome" in
1819   /*)
1820     gnome_dir="$with_gnome"
1821     ;;
1822   *)
1823     gnome_dir=""
1824     ;;
1825 esac
1826
1827 HANDLE_X_PATH_ARG(with_gnome, --with-gnome, Gnome)
1828
1829 if test "$with_gnome" != yes -a "$with_gnome" != no ; then
1830   echo "error: must be yes or no: --with-gnome=$with_gnome"
1831   exit 1
1832 fi
1833
1834
1835 jurassic_gtk=no
1836 if test "$with_gtk" = yes; then
1837   have_gtk=no
1838   
1839   # if the user specified --with-gtk=/foo/ then look in /foo/bin/
1840   # for glib-config and gtk-config.
1841   #
1842   gtk_path="$PATH"
1843
1844   if test ! -z "$gtk_dir"; then
1845     # canonicalize slashes.
1846     gtk_dir=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
1847     gtk_path="$gtk_dir:$gtk_path"
1848   fi
1849
1850   if test ! -z "gnome_dir"; then
1851     # canonicalize slashes.
1852     gnome_dir=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
1853     gtk_path="$gnome_dir:$gtk_path"
1854   fi
1855
1856   AC_PATH_PROGS(glib_config,  glib12-config glib-config,,  $gtk_path)
1857   AC_PATH_PROGS(gtk_config,   gtk12-config  gtk-config,,   $gtk_path)
1858
1859   if test "$with_gnome" = yes; then
1860     AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path)
1861   fi
1862
1863   if test -n "$glib_config" -a  -n "gtk_config" ; then
1864     have_gtk=yes
1865     if test "$with_gnome" = yes -a -n "$gnome_config" ; then
1866       have_gnome=yes
1867     fi
1868   fi
1869
1870   if test "$have_gtk" = yes; then
1871     AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
1872                    [ac_cv_gtk_version_string=`$gtk_config --version`])
1873     ac_gtk_version_string=$ac_cv_gtk_version_string
1874     # M4 sucks!!
1875     changequote(X,Y)
1876     maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
1877     min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
1878     changequote([,])
1879     ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
1880     if test -z "$ac_gtk_version"; then
1881       ac_gtk_version=unknown
1882       ac_gtk_version_string=unknown
1883     fi
1884     if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
1885     then
1886       have_gtk=no
1887       have_gnome=no
1888       jurassic_gtk=yes
1889     fi
1890   fi
1891
1892   if test "$have_gtk" = yes; then
1893     AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
1894                    [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
1895     AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
1896                    [ac_cv_gtk_config_libs=`$gtk_config --libs`])
1897   fi
1898   ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
1899   ac_gtk_config_libs=$ac_cv_gtk_config_libs
1900
1901   # Check for Gnome Capplet support.
1902   #
1903   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
1904     gnome_config_libs="gtk capplet gnomeui xml gdk_pixbuf"
1905     AC_MSG_CHECKING(for Gnome capplet includes)
1906     AC_CACHE_VAL(ac_cv_gnome_config_cflags,
1907       [if ( $gnome_config --cflags $gnome_config_libs 2>&1 >/dev/null | \
1908             grep Unknown >/dev/null ) ; then
1909          ac_cv_gnome_config_cflags=''
1910        else
1911          ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs`
1912        fi])
1913     ac_gnome_config_cflags=$ac_cv_gnome_config_cflags
1914     if test "$ac_gnome_config_cflags" = "" ; then
1915       have_gnome=no
1916       AC_MSG_RESULT(no)
1917     else
1918       AC_MSG_RESULT($ac_gnome_config_cflags)
1919     fi
1920   fi
1921
1922   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
1923     AC_MSG_CHECKING(for Gnome capplet libs)
1924     AC_CACHE_VAL(ac_cv_gnome_config_libs,
1925       [if ( $gnome_config --libs $gnome_config_libs 2>&1 >/dev/null |
1926             grep Unknown >/dev/null ) ; then
1927          ac_cv_gnome_config_libs=''
1928        else
1929          ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs`
1930        fi])
1931     ac_gnome_config_libs=$ac_cv_gnome_config_libs
1932     if test "$ac_gnome_config_libs" = "" ; then
1933       have_gnome=no
1934       AC_MSG_RESULT(no)
1935     else
1936       AC_MSG_RESULT($ac_gnome_config_libs)
1937     fi
1938   fi
1939
1940   GNOME_DATADIR=""
1941   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
1942     GNOME_DATADIR=`$gnome_config --datadir`
1943   fi
1944
1945
1946   # If we have Gnome, then override the gtk-config values with 
1947   # the gnome-config values.
1948   #
1949   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
1950     ac_gtk_config_cflags=$ac_gnome_config_cflags
1951     ac_gtk_config_libs=$ac_gnome_config_libs
1952     AC_DEFINE(HAVE_CRAPPLET)
1953
1954     # check for this function that was not in libcapplet 1.2.
1955     AC_CHECK_X_LIB(capplet, capplet_widget_changes_are_immediate,
1956                    [AC_DEFINE(HAVE_CRAPPLET_IMMEDIATE)], [true],
1957                    $ac_gnome_config_libs)
1958   fi
1959
1960
1961   if test "$have_gtk" = yes; then
1962     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
1963     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
1964     AC_DEFINE(HAVE_GTK)
1965   fi
1966
1967 fi
1968
1969
1970 # Check for the Gnome Help Browser.
1971 #
1972 if test "$have_gnome" = yes; then
1973   AC_CHECK_PROG(have_gnome_help, gnome-help-browser, yes, no)
1974 else
1975   have_gnome_help=no
1976 fi
1977
1978
1979 ###############################################################################
1980 #
1981 #       Check for -lxml (if we have Gtk)
1982 #
1983 ###############################################################################
1984
1985 have_xml=no
1986 with_xml_req=unspecified
1987 xml_halfassed=no
1988 AC_ARG_WITH(xml,
1989 [  --with-xml              The XML toolkit is needed for some parts of
1990                           the Gtk interface.],
1991 [with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes])
1992
1993 HANDLE_X_PATH_ARG(with_xml, --with-xml, XML)
1994
1995 if test "$with_xml" != yes -a "$with_xml" != no ; then
1996   echo "error: must be yes or no: --with-xml=$with_xml"
1997   exit 1
1998 fi
1999
2000 if test "$have_gtk" != yes; then
2001   # don't bother if no GTK
2002   with_xml=no
2003 fi
2004
2005 if test "$with_xml" = yes; then
2006   have_xml=no
2007
2008   # the XML stuff is likely to be in GTK paths.
2009   ac_save_X_CFLAGS="$X_CFLAGS"
2010   ac_save_X_LIBS="$X_LIBS"
2011   X_CFLAGS="$X_CFLAGS $ac_gtk_config_cflags"
2012   X_LIBS="$X_LIBS $ac_gtk_config_libs"
2013
2014   AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes])
2015
2016   if test "$have_xml" = yes; then
2017     # we have the header, now check for the library
2018     have_xml=no
2019     xml_halfassed=yes
2020     AC_CHECK_X_LIB(xml, xmlParseChunk,
2021                    [have_xml=yes
2022                     xml_halfassed=no
2023                     XML_LIBS="-lxml"
2024                     AC_DEFINE(HAVE_XML)])
2025   fi
2026
2027   X_CFLAGS="$ac_save_X_CFLAGS"
2028   X_LIBS="$ac_save_X_LIBS"
2029
2030 fi
2031
2032
2033 ###############################################################################
2034 #
2035 #       Checking whether Motif is really Lesstif.
2036 #
2037 ###############################################################################
2038
2039 have_lesstif=no
2040 if test "$have_motif" = yes ; then
2041   AC_CACHE_CHECK([whether Motif is really LessTif], 
2042                  ac_cv_have_lesstif,
2043                  [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
2044                                    [long vers = LesstifVersion;],
2045                                    [ac_cv_have_lesstif=yes],
2046                                    [ac_cv_have_lesstif=no])])
2047   have_lesstif=$ac_cv_have_lesstif
2048 fi
2049
2050
2051 lesstif_version=unknown
2052 lesstif_version_string=unknown
2053
2054 if test "$have_lesstif" = yes ; then
2055   ltv=unknown
2056   echo unknown > conftest-lt
2057   AC_CACHE_CHECK([LessTif version number],
2058                  ac_cv_lesstif_version_string,
2059       [AC_TRY_X_RUN([#include <stdio.h>
2060                      #include <Xm/Xm.h>
2061                      int main() {
2062                        FILE *f = fopen("conftest-lt", "w");
2063                        if (!f) exit(1);
2064                        fprintf(f, "%d %d.%d\n", LesstifVersion,
2065                           LESSTIF_VERSION, LESSTIF_REVISION);
2066                        fclose(f);
2067                        exit(0);
2068                      }],
2069                     [ltv=`cat conftest-lt`
2070                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
2071                      ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
2072                     [ac_cv_lesstif_version=unknown
2073                      ac_cv_lesstif_version_string=unknown],
2074                     [ac_cv_lesstif_version=unknown
2075                      ac_cv_lesstif_version_string=unknown])])
2076   rm -f conftest-lt
2077   lesstif_version=$ac_cv_lesstif_version
2078   lesstif_version_string=$ac_cv_lesstif_version_string
2079
2080 fi
2081
2082
2083 if test "$have_motif" = yes ; then
2084   mtv=unknown
2085   echo unknown > conftest-mt
2086   AC_CACHE_CHECK([Motif version number],
2087                  ac_cv_motif_version_string,
2088       [AC_TRY_X_RUN([#include <stdio.h>
2089                      #include <Xm/Xm.h>
2090                      int main() {
2091                        FILE *f = fopen("conftest-mt", "w");
2092                        if (!f) exit(1);
2093                        fprintf(f, "%d %d.%d\n", XmVersion,
2094                           XmVERSION, XmREVISION);
2095                        fclose(f);
2096                        exit(0);
2097                      }],
2098                     [mtv=`cat conftest-mt`
2099                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
2100                      ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
2101                     [ac_cv_motif_version=unknown
2102                      ac_cv_motif_version_string=unknown],
2103                     [ac_cv_motif_version=unknown
2104                      ac_cv_motif_version_string=unknown])])
2105   rm -f conftest-mt
2106   motif_version=$ac_cv_motif_version
2107   motif_version_string=$ac_cv_motif_version_string
2108
2109 fi
2110
2111
2112 ###############################################################################
2113 #
2114 #       Checking whether Motif requires -lXpm.
2115 #
2116 #       If this is Motif 2.x, and we have XPM, then link against XPM as well.
2117 #       The deal is, Motif 2.x requires XPM -- but it's a compilation option
2118 #       of the library whether to build the XPM code into libXm, or whether
2119 #       to rely on an external libXm.  So the only way to tell whether XPM is
2120 #       a link-time requirement is to examine libXm.a, which is very
2121 #       difficult to do in an autoconf script.  So... if it's Motif 2.x, we
2122 #       always link against XPM if the XPM lib exists (and this will be a
2123 #       no-op if libXm happens to already have the XPM code in it.)
2124 #
2125 ###############################################################################
2126
2127 motif_requires_xpm=no
2128 if test "$have_motif" = yes ; then
2129    AC_MSG_CHECKING(whether Motif requires XPM)
2130    if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000
2131    then
2132      motif_requires_xpm=yes
2133      AC_MSG_RESULT(maybe)
2134    else
2135      AC_MSG_RESULT(no)
2136    fi
2137 fi
2138
2139
2140 ###############################################################################
2141 #
2142 #       Checking whether Motif requires -lXp.
2143 #
2144 #       Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
2145 #       Extension".   Why this extension isn't in -lXext with all the others,
2146 #       I have no idea.
2147 #
2148 ###############################################################################
2149
2150 have_xp_ext=no
2151 if test "$have_motif" = yes ; then
2152    have_xp_ext=no
2153    AC_CHECK_X_LIB(Xp, XpQueryExtension,
2154                   [have_xp_ext=yes; MOTIF_LIBS="$MOTIF_LIBS -lXp"],
2155                   [true], -lX11 -lXext -lm)
2156 fi
2157
2158
2159 ###############################################################################
2160 #
2161 #       Checking whether Motif requires -lXintl (for _Xsetlocale.)
2162 #
2163 ###############################################################################
2164
2165 have_xintl=no
2166 if test "$have_motif" = yes ; then
2167   AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
2168                  -lX11 -lXext -lm)
2169   if test "$have_xintl" = yes; then
2170     MOTIF_LIBS="$MOTIF_LIBS -lXintl"
2171   fi
2172 fi
2173
2174
2175 ###############################################################################
2176 #
2177 #       Check for -lGL or -lMesaGL.
2178 #
2179 ###############################################################################
2180
2181 have_gl=no
2182 ac_have_mesa_gl=no
2183 with_gl_req=unspecified
2184 gl_halfassed=no
2185 AC_ARG_WITH(gl,[
2186 Graphics options:
2187
2188   --with-gl               Build those demos which depend on OpenGL.],
2189   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
2190
2191 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
2192
2193 ac_mesagl_version=unknown
2194 ac_mesagl_version_string=unknown
2195
2196 if test "$with_gl" = yes; then
2197   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
2198   if test "$have_gl" = yes ; then
2199     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no)
2200   fi
2201
2202   # If we have the headers, try and figure out which vendor it's from.
2203   #
2204   if test "$have_gl" = yes ; then
2205
2206     # We need to know whether it's MesaGL so that we know which libraries
2207     # to link against.
2208     #
2209     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
2210       [ac_cv_have_mesa_gl=no
2211        AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
2212       ])
2213     ac_have_mesa_gl=$ac_cv_have_mesa_gl
2214  
2215
2216     gl_lib_1=""
2217     GL_LIBS=""
2218
2219
2220     # Some versions of MesaGL are compiled to require -lpthread.
2221     # So if the Mesa headers exist, and -lpthread exists, then always
2222     # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
2223     #
2224     if test "$ac_have_mesa_gl" = yes; then
2225       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
2226     fi
2227
2228
2229     # If we have Mesa headers, check to see if we can link against -lMesaGL.
2230     # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
2231     # Else, warn that GL is busted.  (We have the headers, but no libs.)
2232     #
2233
2234     if test "$ac_have_mesa_gl" = yes ; then
2235       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
2236                      [gl_lib_1="MesaGL"
2237                       GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
2238                      [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
2239     fi
2240
2241     if test "$gl_lib_1" = "" ; then
2242       AC_CHECK_X_LIB(GL, glXCreateContext, 
2243                      [gl_lib_1="GL"
2244                       GL_LIBS="-lGL -lGLU $GL_LIBS"],
2245                      [], -lGLU $GL_LIBS -lX11 -lXext -lm)
2246     fi
2247
2248     if test "$gl_lib_1" = "" ; then
2249       # we have headers, but no libs -- bail.
2250       have_gl=no
2251       ac_have_mesa_gl=no
2252       gl_halfassed=yes
2253     else
2254       # linking works -- we can build the GL hacks.
2255       AC_DEFINE(HAVE_GL)
2256       if test "$ac_have_mesa_gl" = yes ; then
2257         AC_DEFINE(HAVE_MESA_GL)
2258       fi
2259     fi
2260   fi
2261
2262
2263   # Now that we know we have GL headers and libs, do some more GL testing.
2264   #
2265
2266   if test "$have_gl" = yes ; then
2267     # If it's MesaGL, we'd like to issue a warning if the version number
2268     # is less than or equal to 2.6, because that version had a security bug.
2269     #
2270     if test "$ac_have_mesa_gl" = yes; then
2271
2272       AC_CACHE_CHECK([MesaGL version number], ac_cv_mesagl_version_string,
2273         [cat > conftest.$ac_ext <<EOF
2274 #line __oline__ "configure"
2275 #include "confdefs.h"
2276 #include <GL/gl.h>
2277 #ifndef MESA_MAJOR_VERSION
2278 # include <GL/xmesa.h>
2279 # define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
2280 # define MESA_MINOR_VERSION XMESA_MINOR_VERSION
2281 #endif
2282 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
2283 EOF
2284
2285          ac_save_CPPFLAGS="$CPPFLAGS"
2286          if test \! -z "$includedir" ; then 
2287            CPPFLAGS="$CPPFLAGS -I$includedir"
2288          fi
2289          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2290
2291           # M4 sucks!!
2292          changequote(X,Y)
2293          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | sed -n \
2294               's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
2295          changequote([,])
2296
2297          rm -f conftest.$ac_ext
2298
2299          CPPFLAGS="$ac_save_CPPFLAGS"
2300
2301          if test "$mglv" = ""; then
2302            ac_mesagl_version=unknown
2303            ac_mesagl_version_string=unknown
2304          else
2305            ac_mesagl_version_string=$mglv
2306            maj=`echo $mglv | sed -n 's/\..*//p'`
2307            min=`echo $mglv | sed -n 's/.*\.//p'`
2308            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
2309            if test -z "$ac_mesagl_version"; then
2310              ac_mesagl_version=unknown
2311              ac_mesagl_version_string=unknown
2312            fi
2313          fi
2314          ac_cv_mesagl_version=$ac_mesagl_version
2315          ac_cv_mesagl_version_string=$ac_mesagl_version_string
2316       ])
2317       ac_mesagl_version=$ac_cv_mesagl_version
2318       ac_mesagl_version_string=$ac_cv_mesagl_version_string
2319     fi
2320
2321
2322     # Check for OpenGL 1.1 features.
2323     #
2324     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
2325                    [true], $GL_LIBS -lX11 -lXext -lm)
2326   fi
2327
2328 elif test "$with_gl" != no; then
2329   echo "error: must be yes or no: --with-gl=$with_gl"
2330   exit 1
2331 fi
2332
2333
2334 ###############################################################################
2335 #
2336 #       Check for -lgle.
2337 #
2338 ###############################################################################
2339
2340 have_gle=no
2341 with_gle_req=unspecified
2342 gle_halfassed=no
2343 AC_ARG_WITH(gle,
2344 [  --with-gle              Build those demos which depend on GLE
2345                           (the OpenGL "extrusion" library.)],
2346   [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
2347
2348 HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
2349
2350 GLE_LIBS=""
2351
2352 if test "$with_gle" = yes; then
2353
2354   AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no)
2355   if test "$have_gle3" = yes ; then
2356     have_gle=yes;
2357   else
2358     AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no)
2359     if test "$have_gle" = yes ; then
2360       AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no)
2361     fi
2362   fi
2363
2364   if test "$have_gle" = yes ; then
2365     have_gle=no
2366     gle_halfassed=yes
2367     AC_CHECK_X_LIB(gle, gleCreateGC, 
2368                    [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
2369                    [], $GL_LIBS -lX11 -lXext -lm)
2370   fi
2371   if test "$have_gle" = yes ; then
2372     have_gle=no
2373     gle_halfassed=yes
2374
2375     # sometimes the libmatrix stuff is included in libgle.  look there first.
2376 #
2377 # I don't get it.  For some reason, this test passes on SGI, as if
2378 # uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
2379 # Yet the link is succeeding.  Why???
2380 #
2381 #    AC_CHECK_X_LIB(gle, uview_direction_d, 
2382 #                   [have_gle=yes; gle_halfassed=no],
2383 #                   [], $GL_LIBS -lX11 -lXext -lm)
2384
2385     # As of GLE 3 this is in libgle, and has changed name to uview_direction!
2386     # *sigh*
2387     if test "$have_gle3" = yes ; then
2388       AC_CHECK_X_LIB(gle, uview_direction, 
2389                      [have_gle=yes; gle_halfassed=no],
2390                     [], $GL_LIBS -lX11 -lXext -lm)
2391     fi
2392     # if it wasn't in libgle, then look in libmatrix.
2393     if test "$have_gle" = no ; then
2394       AC_CHECK_X_LIB(matrix, uview_direction_d, 
2395                      [have_gle=yes; gle_halfassed=no;
2396                       GLE_LIBS="$GLE_LIBS -lmatrix"],
2397                     [], $GL_LIBS -lX11 -lXext -lm)
2398     fi
2399   fi
2400
2401   if test "$have_gle" = yes ; then
2402     AC_DEFINE(HAVE_GLE)
2403     if test "$have_gle3" = yes ; then
2404       AC_DEFINE(HAVE_GLE3)
2405     fi
2406   fi
2407
2408 elif test "$with_gle" != no; then
2409   echo "error: must be yes or no: --with-gle=$with_gle"
2410   exit 1
2411
2412 fi
2413
2414
2415
2416 ###############################################################################
2417 #
2418 #       Check for -lXpm.
2419 #
2420 ###############################################################################
2421
2422 have_xpm=no
2423 with_xpm_req=unspecified
2424 AC_ARG_WITH(xpm,
2425 [  --with-xpm              Include support for XPM files in some demos.],
2426   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
2427
2428 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
2429
2430 if test "$with_xpm" = yes; then
2431   AC_CHECK_X_HEADER(X11/xpm.h,
2432                    [have_xpm=yes
2433                     AC_DEFINE(HAVE_XPM)
2434                     XPM_LIBS="-lXpm"])
2435 elif test "$with_xpm" != no; then
2436   echo "error: must be yes or no: --with-xpm=$with_xpm"
2437   exit 1
2438 fi
2439
2440 # See comment near $motif_requires_xpm, above.
2441 # Need to do this here, after both Motif and XPM have been checked for.
2442 #
2443 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
2444   if test "$motif_requires_xpm" = yes ; then
2445     MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
2446   fi
2447 fi
2448
2449
2450 ###############################################################################
2451 #
2452 #       Check for -lgdk_pixbuf.
2453 #
2454 ###############################################################################
2455
2456 have_gdk_pixbuf=no
2457 with_gdk_pixbuf_req=unspecified
2458 AC_ARG_WITH(pixbuf,
2459 [  --with-pixbuf           Include support for the GDK-Pixbuf library in some
2460                           demos, which will make it possible for them to read
2461                           GIF, JPEG, and PNG files as well.],
2462   [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
2463   [with_gdk_pixbuf=yes])
2464
2465 HANDLE_X_PATH_ARG(with_gdk_pixbuf, --with-pixbuf, GDK_PIXBUF)
2466
2467 if test "$with_gdk_pixbuf" = yes; then
2468
2469   if test "$have_gtk" = yes; then
2470
2471     ac_save_gdk_CPPFLAGS="$CPPFLAGS"
2472     CPPFLAGS="$CPPFLAGS $ac_gtk_config_cflags"
2473
2474     have_gdk_pixbuf=no
2475     AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
2476     if test "$have_gdk_pixbuf" = yes; then
2477       have_gdk_pixbuf=no
2478       AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h, [have_gdk_pixbuf=yes])
2479     fi
2480
2481     CPPFLAGS="$ac_save_gdk_CPPFLAGS"
2482
2483     if test "$have_gdk_pixbuf" = yes; then
2484       AC_DEFINE(HAVE_GDK_PIXBUF)
2485       XPM_LIBS="-lgdk_pixbuf -lgdk_pixbuf_xlib"
2486     fi
2487   fi
2488
2489 elif test "$with_gdk_pixbuf" != no; then
2490   echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf"
2491   exit 1
2492 fi
2493
2494
2495 ###############################################################################
2496 #
2497 #       Check for -ljpeg
2498 #
2499 ###############################################################################
2500
2501 have_jpeg=no
2502 with_jpeg_req=unspecified
2503 jpeg_halfassed=no
2504 AC_ARG_WITH(jpeg,
2505 [  --with-jpeg             Include support for the JPEG library in some demos,
2506                           which will make it possible for them to read JPEG
2507                           files as well.],
2508   [with_jpeg="$withval"; with_jpeg_req="$withval"],
2509   [with_jpeg=yes])
2510
2511 HANDLE_X_PATH_ARG(with_jpeg, --with-jpeg, JPEG)
2512
2513 if test "$with_jpeg" != yes -a "$with_jpeg" != no ; then
2514   echo "error: must be yes or no: --with-jpeg=$with_jpeg"
2515   exit 1
2516 fi
2517
2518 if test "$with_jpeg" = yes; then
2519
2520   have_jpeg=no
2521   AC_CHECK_X_HEADER(jpeglib.h, [have_jpeg=yes])
2522
2523   if test "$have_jpeg" = yes; then
2524     # we have the header, now check for the library
2525     have_jpeg=no
2526     jpeg_halfassed=yes
2527     AC_CHECK_X_LIB(jpeg, jpeg_start_compress,
2528                    [have_jpeg=yes
2529                     jpeg_halfassed=no
2530                     JPEG_LIBS="-ljpeg"
2531                     AC_DEFINE(HAVE_JPEGLIB)])
2532   fi
2533 fi
2534
2535
2536 ###############################################################################
2537 #
2538 #       Check for the XSHM server extension.
2539 #
2540 ###############################################################################
2541
2542 have_xshm=no
2543 with_xshm_req=unspecified
2544 AC_ARG_WITH(xshm-ext,
2545 [  --with-xshm-ext         Include support for the Shared Memory extension.],
2546   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
2547
2548 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
2549
2550 if test "$with_xshm" = yes; then
2551
2552   # first check for Xshm.h.
2553   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes])
2554
2555   # if that succeeded, then check for sys/ipc.h.
2556   if test "$have_xshm" = yes; then
2557     have_xshm=no
2558     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
2559   fi
2560
2561   # if that succeeded, then check for sys/shm.h.
2562   if test "$have_xshm" = yes; then
2563     have_xshm=no
2564     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
2565   fi
2566
2567   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
2568   # to exist, but the library code to not exist.  And even better, the library
2569   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
2570   # lib doesn't exist, give up.  (This lib gets added to X_EXTRA_LIBS, and
2571   # that's not quite right, but close enough.)
2572   #
2573   case "$host" in
2574     *-aix*)
2575       if [ `uname -v` -eq 3 ]; then
2576         have_xshm=no
2577         AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
2578                        [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
2579                        [true], -lX11 -lXext -lm)
2580       fi
2581     ;;
2582   esac
2583
2584   # if that succeeded, then we've really got it.
2585   if test "$have_xshm" = yes; then
2586     AC_DEFINE(HAVE_XSHM_EXTENSION)
2587   fi
2588
2589 elif test "$with_xshm" != no; then
2590   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
2591   exit 1
2592 fi
2593
2594
2595 ###############################################################################
2596 #
2597 #       Check for the DOUBLE-BUFFER server extension.
2598 #
2599 ###############################################################################
2600
2601 have_xdbe=no
2602 with_xdbe_req=unspecified
2603 AC_ARG_WITH(xdbe-ext,
2604 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.],
2605   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
2606
2607 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
2608
2609 if test "$with_xdbe" = yes; then
2610
2611   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes])
2612   if test "$have_xdbe" = yes; then
2613     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
2614   fi
2615
2616 elif test "$with_xdbe" != no; then
2617   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
2618   exit 1
2619 fi
2620
2621
2622 ###############################################################################
2623 #
2624 #       Check for the SGI XReadDisplay server extension.
2625 #
2626 #       Note: this has to be down here, rather than up with the other server
2627 #       extension tests, so that the output of `configure --help' is in the
2628 #       right order.  Arrgh!
2629 #
2630 ###############################################################################
2631
2632 have_readdisplay=no
2633 with_readdisplay_req=unspecified
2634 AC_ARG_WITH(readdisplay,
2635 [  --with-readdisplay      Include support for the XReadDisplay extension.],
2636   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
2637   [with_readdisplay=yes])
2638
2639 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
2640
2641 if test "$with_readdisplay" = yes; then
2642   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
2643                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION))
2644 elif test "$with_readdisplay" != no; then
2645   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
2646   exit 1
2647 fi
2648
2649
2650 ###############################################################################
2651 #
2652 #       Check for a program to generate random text.
2653 #
2654 #       Zippy is funnier than the idiocy generally spat out by `fortune',
2655 #       so first see if "fortune zippy" works.  Else, use plain "fortune".
2656 #
2657 #       We used to dig around in Emacs to look for the "yow" program, but
2658 #       most people who have Emacs also have "fortune zippy", so nevermind.
2659 #
2660 ###############################################################################
2661
2662 with_fortune_req=""
2663 AC_ARG_WITH(fortune,[
2664   --with-fortune=PROGRAM  Some demos are able to run an external program and
2665                           display its text; this names the program to use by
2666                           default (though it can be overridden with X
2667                           resources.)  Default is \"/usr/games/fortune\".],
2668   [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes])
2669
2670 if test "$with_fortune" = no || test "$with_fortune" = yes ; then
2671   with_fortune=""
2672   with_fortune_req=""
2673 fi
2674
2675 if test -n "$with_fortune_req" ; then
2676   ac_cv_fortune_program=""
2677   case "$with_fortune_req" in
2678     /*)
2679
2680       set dummy $with_fortune_req ; fortune_tmp=$2
2681       AC_MSG_CHECKING([for $fortune_tmp])
2682       if test -x "$fortune_tmp" ; then
2683         AC_MSG_RESULT(yes)
2684       else
2685         AC_MSG_RESULT(no)
2686         with_fortune=""
2687       fi
2688     ;;
2689     *)
2690       set dummy $with_fortune_req ; fortune_tmp=$2
2691       # don't cache
2692       unset ac_cv_path_fortune_tmp
2693       AC_PATH_PROG(fortune_tmp, $fortune_tmp, [])
2694       if test -z "$fortune_tmp" ; then
2695         with_fortune=""
2696       fi
2697     ;;
2698   esac
2699   ac_cv_fortune_program="$with_fortune"
2700
2701 elif test -n "$ac_cv_fortune_program"; then
2702   AC_MSG_RESULT([checking for fortune... (cached) $ac_cv_fortune_program])
2703 fi
2704
2705 unset ac_cv_path_fortune_tmp
2706 unset fortune_tmp
2707
2708 if test -z "$ac_cv_fortune_program" ; then
2709
2710   # first look for fortune in /usr/games/ (and use absolute path)
2711   AC_PATH_PROGS(fortune_tmp, fortune,, "/usr/games")
2712
2713   # if it's not there, look on $PATH (and don't use absolute path)
2714   if test -z "$fortune_tmp" ; then
2715      AC_CHECK_PROGS(fortune_tmp, fortune)
2716   fi
2717
2718   # if we didn't find anything, then just assume /usr/games/
2719   if test -z "$fortune_tmp" ; then
2720      fortune_tmp="/usr/games/fortune"
2721   fi
2722
2723   ac_cv_fortune_program="$fortune_tmp"
2724
2725   # now check to see whether "fortune zippy" works.
2726   #
2727   fortune_tmp="$fortune_tmp zippy"
2728   AC_MSG_CHECKING([for zippy quotes])
2729   if ( $fortune_tmp >/dev/null 2>&1 ); then
2730     ac_cv_fortune_program="$fortune_tmp"
2731     AC_MSG_RESULT($fortune_tmp)
2732   else
2733     AC_MSG_RESULT(no)
2734   fi
2735
2736 fi
2737
2738 unset ac_cv_path_fortune_tmp
2739 unset fortune_tmp
2740
2741 AC_DEFINE_UNQUOTED(FORTUNE_PROGRAM, "$ac_cv_fortune_program")
2742
2743
2744 ###############################################################################
2745 #
2746 #       Check whether it's ok to install some hacks as setuid (e.g., "sonar")
2747 #       This should be safe, but let's give people the option.
2748 #
2749 ###############################################################################
2750
2751 setuid_hacks_default=no
2752 setuid_hacks="$setuid_hacks_default"
2753 AC_ARG_WITH(setuid-hacks,
2754 [  --with-setuid-hacks     Allow some demos to be installed \`setuid root'
2755                           (which is needed in order to ping other hosts.)
2756 ],
2757   [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"])
2758
2759 HANDLE_X_PATH_ARG(setuid_hacks, --with-setuid-hacks, setuid hacks)
2760
2761 if test "$setuid_hacks" = yes; then
2762   true
2763 elif test "$setuid_hacks" != no; then
2764   echo "error: must be yes or no: --with-setuid-hacks=$setuid_hacks"
2765   exit 1
2766 fi
2767
2768
2769 ###############################################################################
2770 #
2771 #       Done testing.  Now, set up the various -I and -L variables,
2772 #       and decide which GUI program to build by default.
2773 #
2774 ###############################################################################
2775
2776 DEPEND=makedepend
2777 DEPEND_FLAGS=
2778 DEPEND_DEFINES=
2779
2780
2781 if test \! -z "$includedir" ; then 
2782   INCLUDES="$INCLUDES -I$includedir"
2783 fi
2784
2785 if test \! -z "$libdir" ; then
2786   LDFLAGS="$LDFLAGS -L$libdir"
2787 fi
2788
2789
2790 PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
2791 ALL_DEMO_PROGRAMS=
2792 if test "$have_motif" = yes; then
2793   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
2794   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2795 fi
2796 if test "$have_gtk" = yes; then
2797   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
2798   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
2799 fi
2800
2801
2802 if test "$have_kerberos" = yes; then
2803   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
2804   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
2805 fi
2806 if test "$have_pam" = yes; then
2807   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
2808   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
2809   INSTALL_PAM="install-pam"
2810 fi
2811   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
2812   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
2813
2814
2815 if test "$enable_locking" = yes; then
2816   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
2817   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
2818 else
2819   LOCK_SRCS='$(NOLOCK_SRCS_1)'
2820   LOCK_OBJS='$(NOLOCK_OBJS_1)'
2821 fi
2822
2823 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
2824
2825 if test "$need_setuid" = yes; then
2826   NEED_SETUID=yes
2827 else
2828   NEED_SETUID=no
2829 fi
2830
2831 if test "$setuid_hacks" = yes; then
2832   SETUID_HACKS=yes
2833 else
2834   SETUID_HACKS=no
2835 fi
2836
2837 tab='   '
2838 if test "$have_gl" = yes; then
2839   GL_EXES='$(GL_EXES)'
2840   GL_UTIL_EXES='$(GL_UTIL_EXES)'
2841   GL_MEN='$(GL_MEN)'
2842   GL_KLUDGE="${tab}  "
2843 else
2844   GL_KLUDGE="-${tab}  "
2845 fi
2846
2847 if test "$have_gle" = yes; then
2848   GLE_EXES='$(GLE_EXES)'
2849   GLE_MEN='$(GLE_MEN)'
2850   GLE_KLUDGE="${tab}   "
2851 else
2852   GLE_KLUDGE="-${tab}   "
2853 fi
2854
2855 if test "$have_jpeg" = yes -a "$have_gdk_pixbuf" = yes; then
2856  JPEG_EXES='$(JPEG_EXES)'
2857 fi
2858
2859
2860 # Another substitution in the XScreenSaver.ad.in file:
2861 #
2862 if test "$have_gnome_help" = yes; then
2863   GNOMEHELP_Y=''
2864   GNOMEHELP_N='!    '
2865 else
2866   GNOMEHELP_Y='!    '
2867   GNOMEHELP_N=''
2868 fi
2869
2870
2871 # Now that we know whether we have Gnome, we can decide where the XML
2872 # config files get installed.
2873 if test -z "$HACK_CONF_DIR" ; then
2874   if test -n "$GNOME_DATADIR" ; then
2875     HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers'
2876   else
2877     HACK_CONF_DIR='${prefix}/lib/xscreensaver/config'
2878   fi
2879 fi
2880
2881 # canonicalize slashes.
2882 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
2883
2884
2885
2886 ###############################################################################
2887 #
2888 #       Perform substitutions and write Makefiles.
2889 #
2890 ###############################################################################
2891
2892 AC_SUBST(INCLUDES)
2893
2894 AC_SUBST(PREFERRED_DEMO_PROGRAM)
2895 AC_SUBST(ALL_DEMO_PROGRAMS)
2896 AC_SUBST(SAVER_LIBS)
2897 AC_SUBST(MOTIF_LIBS)
2898 AC_SUBST(GTK_LIBS)
2899 AC_SUBST(XML_LIBS)
2900 AC_SUBST(JPEG_LIBS)
2901 AC_SUBST(HACK_LIBS)
2902 AC_SUBST(XPM_LIBS)
2903 AC_SUBST(GL_LIBS)
2904 AC_SUBST(GLE_LIBS)
2905 AC_SUBST(XDPMS_LIBS)
2906 AC_SUBST(PASSWD_LIBS)
2907 AC_SUBST(INSTALL_SETUID)
2908 AC_SUBST(SETUID_HACKS)
2909 AC_SUBST(INSTALL_DIRS)
2910 AC_SUBST(NEED_SETUID)
2911 AC_SUBST(INSTALL_PAM)
2912
2913 AC_SUBST(PASSWD_SRCS)
2914 AC_SUBST(PASSWD_OBJS)
2915 AC_SUBST(XMU_SRCS)
2916 AC_SUBST(XMU_OBJS)
2917 AC_SUBST(XMU_LIBS)
2918 AC_SUBST(SAVER_GL_SRCS)
2919 AC_SUBST(SAVER_GL_OBJS)
2920 AC_SUBST(SAVER_GL_LIBS)
2921 AC_SUBST(LOCK_SRCS)
2922 AC_SUBST(LOCK_OBJS)
2923 AC_SUBST(JPEG_EXES)
2924 AC_SUBST(GL_EXES)
2925 AC_SUBST(GL_UTIL_EXES)
2926 AC_SUBST(GL_MEN)
2927 AC_SUBST(GL_KLUDGE)
2928 AC_SUBST(GLE_EXES)
2929 AC_SUBST(GLE_MEN)
2930 AC_SUBST(GLE_KLUDGE)
2931 AC_SUBST(GNOMEHELP_Y)
2932 AC_SUBST(GNOMEHELP_N)
2933 AC_SUBST(HACKDIR)
2934 AC_SUBST(GNOME_DATADIR)
2935 AC_SUBST(HACK_CONF_DIR)
2936
2937 APPDEFAULTS=$ac_x_app_defaults
2938 AC_SUBST(APPDEFAULTS)
2939
2940 AC_SUBST(DEPEND)
2941 AC_SUBST(DEPEND_FLAGS)
2942 AC_SUBST(DEPEND_DEFINES)
2943 AC_SUBST(PERL)
2944
2945 AC_OUTPUT(Makefile
2946           utils/Makefile
2947           driver/Makefile
2948           hacks/Makefile
2949           hacks/glx/Makefile
2950           driver/XScreenSaver.ad)
2951
2952 ###############################################################################
2953 #
2954 #       Print some warnings at the end.
2955 #
2956 ###############################################################################
2957
2958 warn_prefix_1="    Warning:"
2959 warn_prefix_2="       Note:"
2960 warn_prefix="$warn_prefix_1"
2961
2962 warning=no
2963 warnsep='    #################################################################'
2964
2965 warnpre() {
2966   if test "$warning" = no ; then
2967     echo '' ; echo "$warnsep" ; echo ''
2968     warning=yes
2969   fi
2970 }
2971
2972 warn() {
2973   warnpre
2974   if test "$warning" = long ; then echo '' ; fi
2975   warning=yes
2976   rest="$@"
2977   echo "$warn_prefix $rest"
2978 }
2979
2980 warnL() {
2981   was=$warning
2982   warnpre
2983   warning=yes
2984   if test "$was" != no ; then echo '' ; fi
2985   rest="$@"
2986   echo "$warn_prefix $rest"
2987 }
2988
2989 warn2() {
2990   rest="$@"
2991   echo "             $rest"
2992   warning=long
2993 }
2994
2995 note() {
2996   warn_prefix="$warn_prefix_2"
2997   warn $@
2998   warn_prefix="$warn_prefix_1"
2999 }
3000
3001 noteL() {
3002   warn_prefix="$warn_prefix_2"
3003   warnL $@
3004   warn_prefix="$warn_prefix_1"
3005 }
3006
3007
3008 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
3009   warn 'The SGI saver extension was requested, but was not found.'
3010 fi
3011
3012 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
3013   warn 'The MIT saver extension was requested, but was not found.'
3014 fi
3015
3016 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
3017   warn 'The XIdle extension was requested, but was not found.'
3018 fi
3019
3020 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
3021   warn 'The XSHM extension was requested, but was not found.'
3022 fi
3023
3024 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
3025   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
3026 fi
3027
3028 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
3029   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
3030 fi
3031
3032 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
3033   warn 'The DPMS extension was requested, but was not found.'
3034 fi
3035
3036 if test "$with_xinerama_req" = yes -a "$have_xinerama" = no ; then
3037   warn 'The Xinerama extension was requested, but was not found.'
3038 fi
3039
3040 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
3041   warn 'The XF86VMODE extension was requested, but was not found.'
3042 fi
3043
3044 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
3045   warn "Checking of /proc/interrupts was requested, but it's bogus."
3046 fi
3047
3048
3049 if test "$have_motif" = no -a "$have_gtk" = no; then
3050   warnL "Neither Motif nor Gtk seem to be available;"
3051   warn2 "the \`xscreensaver-demo' program requires one of these."
3052
3053 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
3054   warnL "Use of Motif was requested, but it wasn't found;"
3055   warn2 "Gtk will be used instead."
3056
3057 elif test "$jurassic_gtk" = yes ; then
3058
3059   pref_gtk=1.2
3060
3061   v="$ac_gtk_version_string"
3062   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
3063     warnL "Use of Gtk was requested, but its version number is unknown;"
3064   elif test "$with_gtk_req" = yes ; then
3065     warnL "Use of Gtk was requested, but it is version $v;"
3066   else
3067     warnL "Gtk was found on this system, but it is version $v;"
3068   fi
3069
3070   warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
3071
3072 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
3073   warnL "Use of Gtk was requested, but it wasn't found;"
3074   warn2 "Motif will be used instead."
3075
3076 fi
3077
3078
3079 if test "$with_gnome_req" = yes -a "$have_gnome" = no ; then
3080   warn  'Use of the Gnome Control Panel was requested, but the necessary'
3081   warn2 'headers and/or libraries were not found.'
3082 fi
3083
3084 if test "$have_gtk" = yes ; then
3085   if test "$have_xml" = no ; then
3086     if test "$with_xml_req" = yes ; then
3087       warn  'Use of the XML library was requested, but the necessary'
3088       warn2 'headers and/or libraries were not found.'
3089     else
3090       warn  'GTK is being used, but the XML library was not found.'
3091     fi
3092
3093     if test "$xml_halfassed" = yes ; then
3094       echo ''
3095       warn2 'More specifically, we found the headers, but not the'
3096       warn2 'libraries; so either XML is half-installed on this'
3097       warn2 "system, or something else went wrong.  The \`config.log'"
3098       warn2 'file might contain some clues.'
3099     fi
3100
3101     echo ''
3102     warn2 "Without XML, the per-display-mode \`Settings' dialogs"
3103     warn2 'will not be available.  Specify the location of the XML'
3104     warn2 'library through the --with-xml option to configure.'
3105   fi
3106 fi
3107
3108 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
3109
3110   preferred_lesstif=0.92
3111
3112   if test "$lesstif_version" = unknown; then
3113     warnL "Unable to determine the LessTif version number!"
3114     warn2 "Make sure you are using version $preferred_lesstif or newer."
3115     warn2 "See <http://www.lesstif.org/>."
3116
3117   elif test \! $lesstif_version -gt 82; then
3118     warnL "LessTif version $lesstif_version_string is being used."
3119     warn2 "LessTif versions 0.82 and earlier are too buggy to"
3120     warn2 "use with XScreenSaver; it is strongly recommended"
3121     warn2 "that you upgrade to at least version $preferred_lesstif!"
3122     warn2 "See <http://www.lesstif.org/>."
3123   fi
3124 fi
3125
3126
3127 if test "$have_motif" = yes -a "$have_gtk" = no ; then
3128   warn  'Motif is being used, and GTK is not.'
3129   echo  ''
3130   warn2 'Though the Motif front-end to xscreensaver is still'
3131   warn2 'maintained, it is no longer being updated with new'
3132   warn2 'features: all new development on the xscreensaver-demo'
3133   warn2 'program is happening in the GTK version, and not in the'
3134   warn2 'Motif version.  It is recommended that you build against'
3135   warn2 'GTK instead of Motif.  See <http://www.gtk.org/>.'
3136 fi
3137
3138
3139 if test "$with_xpm_req" = yes ; then
3140   warnL 'Use of XPM was requested, but it was not found.'
3141 fi
3142
3143 if test "$with_gdk_pixbuf_req" = yes ; then
3144   warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
3145 fi
3146
3147 if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no; then
3148
3149   if test "$with_xpm_req" = yes ; then
3150     true
3151   elif test "$with_xpm_req" = no ; then
3152     warnL 'The XPM library is not being used.'
3153   else
3154     warnL 'The XPM library was not found.'
3155   fi
3156
3157   if test "$with_gdk_pixbuf_req" = yes ; then
3158     true
3159   elif test "$with_gdk_pixbuf_req" = no ; then
3160     warnL 'The GDK-Pixbuf library is not being used.'
3161   else
3162     warnL 'The GDK-Pixbuf library was not found.'
3163   fi
3164
3165   echo ''
3166   warn2 'Some of the demos will not be as colorful as they'
3167   warn2 'could be.  You should consider installing Pixbuf or'
3168   warn2 'XPM and re-running configure.  (Remember to delete'
3169   warn2 'the config.cache file first.)  The Pixbuf library is'
3170   warn2 'a part of GNOME.  The XPM library comes with most'
3171   warn2 'X11 installations; you can also find it at the X11'
3172   warn2 'archive sites, such as <http://sunsite.unc.edu/>.'
3173   echo  ''
3174   warn2 'GDK-Pixbuf is recommended over XPM, as it provides'
3175   warn2 'support for more image formats.'
3176 fi
3177
3178
3179 if test "$have_jpeg" = no ; then
3180   if test "$with_jpeg_req" = yes ; then
3181     warnL 'Use of libjpeg was requested, but it was not found.'
3182   elif test "$with_jpeg_req" = no ; then
3183     noteL 'The JPEG library is not being used.'
3184   else
3185     noteL 'The JPEG library was not found.'
3186   fi
3187
3188   if test "$jpeg_halfassed" = yes ; then
3189     echo ''
3190     warn2 'More specifically, we found the headers, but not the'
3191     warn2 'library; so either JPEG is half-installed on this'
3192     warn2 "system, or something else went wrong.  The \`config.log'"
3193     warn2 'file might contain some clues.'
3194     echo ''
3195   fi
3196
3197   warn2 "This means the \`webcollage' program will be much slower."
3198 fi
3199
3200
3201 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
3202   preferred_mesagl=3.4
3203   mgv="$ac_mesagl_version_string"
3204   pgl="$preferred_mesagl"
3205
3206   if test "$ac_mesagl_version" = unknown; then
3207     warnL "Unable to determine the MesaGL version number!"
3208     warn2 "Make sure you are using version $preferred_mesagl or newer."
3209
3210   elif test \! "$ac_mesagl_version" -gt 2006; then
3211     warnL "MesaGL version $mgv is being used.  MesaGL 2.6 and earlier"
3212     warn2 "have a security bug.  It is strongly recommended that you"
3213     warn2 "upgrade to at least version $preferred_mesagl."
3214
3215   elif test \! "$ac_mesagl_version" -gt 3003; then
3216     warnL "MesaGL version $mgv is being used.  That version has some"
3217     warn2 "bugs; it is recommended that you upgrade to $pgl or newer."
3218   fi
3219 fi
3220
3221 if test "$have_gl" = no ; then
3222   if test "$with_gl_req" = yes ; then
3223     warnL 'Use of GL was requested, but it was not found.'
3224   elif test "$with_gl_req" = no ; then
3225     noteL 'The OpenGL 3D library is not being used.'
3226   else
3227     noteL 'The OpenGL 3D library was not found.'
3228   fi
3229
3230   if test "$gl_halfassed" = yes ; then
3231     echo ''
3232     warn2 'More specifically, we found the headers, but not the'
3233     warn2 'libraries; so either GL is half-installed on this'
3234     warn2 "system, or something else went wrong.  The \`config.log'"
3235     warn2 'file might contain some clues.'
3236   fi
3237
3238   echo ''
3239   warn2 'Those demos which use 3D will not be built or installed.'
3240   warn2 'You might want to consider installing OpenGL and'
3241   warn2 're-running configure.  (Remember to delete the'
3242   warn2 "config.cache file first.)  If your vendor doesn't ship"
3243   warn2 'their own implementation of OpenGL, you can get a free'
3244   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
3245   warn2 'info, see <http://www.opengl.org/>.'
3246
3247 fi
3248
3249
3250 if test "$have_gl" = yes -a "$have_gle" = no ; then
3251   if test "$with_gle_req" = yes ; then
3252     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
3253     warn2 'it was not found (though the OpenGL library was found, and'
3254     warn2 'is being used.)'
3255   elif test "$with_gle_req" = no ; then
3256     noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
3257     warn2 'library is not.'
3258   else
3259     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
3260     warn2 'was not.'
3261   fi
3262
3263   if test "$gle_halfassed" = yes ; then
3264     echo ''
3265     warn2 'More specifically, we found the headers, but not the'
3266     warn2 'libraries; so either GLE is half-installed on this'
3267     warn2 "system, or something else went wrong.  The \`config.log'"
3268     warn2 'file might contain some clues.'
3269   fi
3270
3271   echo ''
3272   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
3273   warn2 'will not be built or installed.  You might want to consider'
3274   warn2 'installing GLE and re-running configure.  (Remember to delete'
3275   warn2 'the config.cache file first.)  You can find the GLE library'
3276   warn2 'at <http://www.linas.org/gle/>.  For general OpenGL info,'
3277   warn2 'see <http://www.opengl.org/>.'
3278
3279 fi
3280
3281
3282 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
3283   warn 'Use of XReadDisplay was requested, but it was not found.'
3284 fi
3285
3286 if test -n "$with_fortune_req"; then
3287   if test "$with_fortune_req" != "$ac_cv_fortune_program" ; then
3288     warnL "$with_fortune_req was requested as the Fortune program,"
3289     warn2 "but was not found.  The default will be used instead."
3290   fi
3291 fi
3292
3293 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
3294   warn 'Use of Kerberos was requested, but it was not found.'
3295 fi
3296
3297 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
3298   warn 'Use of PAM was requested, but it was not found.'
3299 fi
3300
3301 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
3302   warn 'Use of shadow passwords was requested, but they were not found.'
3303 fi
3304
3305
3306 # You are in a twisty maze of namespaces and syntaxes, all alike.
3307 # Fuck the skull of Unix.
3308 #
3309 eval bindir=${bindir}
3310 eval bindir=${bindir}
3311 eval bindir=${bindir}
3312 eval bindir=${bindir}
3313 eval bindir=${bindir}
3314 eval bindir=${bindir}
3315 eval HACKDIR=${HACKDIR}
3316 eval HACKDIR=${HACKDIR}
3317 eval HACKDIR=${HACKDIR}
3318 eval HACKDIR=${HACKDIR}
3319 eval HACKDIR=${HACKDIR}
3320 eval HACKDIR=${HACKDIR}
3321 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3322 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3323 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3324 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3325 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3326 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3327
3328 # canonicalize slashes.
3329 bindir=`echo  "${bindir}"              | sed 's@/$@@;s@//*@/@g'`
3330 HACKDIR=`echo "${HACKDIR}"             | sed 's@/$@@;s@//*@/@g'`
3331 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
3332
3333
3334 # Sanity check the hackdir
3335 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
3336   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
3337     echo ""
3338     AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
3339                    There will be an executable installed with that name, so
3340                    that can't be the name of a directory as well.  Please
3341                    re-configure with a different directory name.])
3342   fi
3343 done
3344
3345
3346 do_dir_warning=no
3347
3348 # Now let's see if there's a previous RPM version already installed.  Blargh!
3349
3350 # M4 sucks!!
3351 changequote(X,Y)
3352 rpmv=`(rpm -qv xscreensaver) 2>&- | \
3353       sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'`
3354 changequote([,])
3355
3356 if test \! -z "$rpmv" ; then
3357   rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
3358   rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
3359
3360   warning=no
3361   warnL "There is already an installed RPM of xscreensaver $rpmv"
3362   warn2 "on this system.  You might want to remove it (with"
3363   warn2 '"rpm -ve xscreensaver") before running "make install"'
3364   warn2 "from this directory."
3365   echo ""
3366   warn2 "Alternately, you could build this version of xscreensaver"
3367   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
3368   warn2 "file is included.  See the RPM documentation for more info."
3369   echo ""
3370
3371   if test "$rpmbdir" = "$rpmhdir" ; then
3372     warn2 "The RPM version was installed in $rpmbdir/."
3373   else
3374     warn2 "The RPM version was installed in $rpmbdir/,"
3375     warn2 "with demos in $rpmhdir/."
3376   fi
3377
3378   do_dir_warning=yes
3379 fi
3380
3381
3382 if test "${bindir}" = "${HACKDIR}" ; then
3383   do_dir_warning=yes
3384 fi
3385
3386 if test "$do_dir_warning" = yes; then
3387   echo ""
3388   echo "$warnsep"
3389   echo ""
3390   echo '      When you run "make install", the "xscreensaver",'
3391   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
3392   echo "      will be installed in ${bindir}/."
3393   echo ""
3394   echo "      The various graphics demos (140+ different executables) will"
3395   echo "      also be installed in ${HACKDIR}/."
3396   echo ""
3397   echo "      If you would prefer the demos to be installed elsewhere"
3398   echo "      (for example, in a dedicated directory) you should re-run"
3399   echo "      configure with the --with-hackdir=DIR option.  For more"
3400   echo "      information, run $0 --help."
3401   warning=yes
3402 fi
3403
3404 if test "$warning" != no; then
3405   echo '' ; echo "$warnsep" ; echo ''
3406 fi
3407
3408 if test "$do_dir_warning" = no; then
3409   if test "$warning" = no; then
3410     echo ''
3411   fi
3412   echo "User programs will be installed in ${bindir}/"
3413   echo "Screen savers will be installed in ${HACKDIR}/"
3414   echo "Configuration will be installed in ${HACK_CONF_DIR}/"
3415   echo ''
3416 fi