http://packetstormsecurity.org/UNIX/admin/xscreensaver-4.05.tar.gz
[xscreensaver] / configure.in
1 # configure.in --- xscreensaver, Copyright (c) 1997-2002 Jamie Zawinski.
2 #
3
4 AC_PREREQ(2.52)
5 AC_INIT(driver/subprocs.c)
6 AC_CONFIG_HEADER(config.h)
7
8 echo "current directory: `pwd`"
9 echo "command line was: $0 $@"
10
11
12 # After checking to see that --srcdir is correct (which AC_INIT does)
13 # check for some random other files that come later in the tar file,
14 # to make sure everything is here.
15 #
16 for d in driver utils hacks hacks/glx ; do
17   f=$srcdir/$d/Makefile.in
18   if test \! -r $f ; then
19     echo ""
20     echo "ERROR: The package is incomplete: $f does not exist."
21     echo "       This probably means that your download was truncated."
22     echo ""
23     exit 1
24   fi
25 done
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 >/dev/null ) 2>&1 | \
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 2>/dev/null
156        ${INSTALL} -d `pwd`/dir1/dir2 >/dev/null 2>&1
157        if test -d dir1/dir2/. ; then
158          ac_cv_install_d_creates_dirs=yes
159        fi
160        cd .. 2>/dev/null
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 2>/dev/null
172          mkdir -p dir1/dir2 >/dev/null 2>&1
173          if test -d dir1/dir2/. ; then
174            ac_cv_mkdir_p_creates_dirs=yes
175          fi
176          cd .. 2>/dev/null
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 2>/dev/null
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>&1 && 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 .. 2>/dev/null
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],[$3],[$4])
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_EXEEXT
750 AC_DEMAND_BC
751
752 # stuff for Makefiles
753 AC_PROG_INSTALL
754 AC_PROG_INSTALL_DIRS
755 AC_PROG_MAKE_SET
756
757 # By default, autoconf sets INSTALL_SCRIPT to '${INSTALL_PROGRAM}'.
758 # That's wrong: it should be set to '${INSTALL}', so that one can
759 # implement the "install-strip" target properly (strip executables,
760 # but do not try to strip scripts.)
761 #
762 INSTALL_SCRIPT='${INSTALL}'
763
764 # random libc stuff
765 AC_HEADER_STDC
766 AC_CHECK_HEADERS(unistd.h)
767 AC_TYPE_MODE_T
768 AC_TYPE_PID_T
769 AC_TYPE_SIZE_T
770 AC_TYPE_SIGNAL
771 AC_HEADER_TIME
772 AC_HEADER_SYS_WAIT
773 AC_HEADER_DIRENT
774 AC_GETTIMEOFDAY_ARGS
775 AC_CHECK_FUNCS(select fcntl uname nice setpriority getcwd getwd putenv sbrk)
776
777 AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
778 AC_CHECK_ICMP
779 AC_CHECK_ICMPHDR
780 AC_CHECK_HEADERS(crypt.h sys/select.h)
781 AC_PROG_PERL
782
783 if test -z "$PERL" ; then
784   # don't let it be blank...
785   PERL=/usr/bin/perl
786 fi
787
788 AC_PATH_XTRA
789
790 if test "$have_x" != yes; then
791   AC_MSG_ERROR(Couldn't find X11 headers/libs.  Try \`$0 --help'.)
792 fi
793
794 AC_PATH_X_APP_DEFAULTS
795 AC_X_RANDOM_PATHS
796 AC_XPOINTER
797
798
799 ###############################################################################
800 #
801 #       Gettext support
802 #
803 ###############################################################################
804
805 AC_PROG_INTLTOOL
806 GETTEXT_PACKAGE=xscreensaver
807 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE")
808 AC_DEFINE_UNQUOTED(PACKAGE, "$GETTEXT_PACKAGE")
809 AC_SUBST(GETTEXT_PACKAGE)
810
811 # #### no sign of  en_GB
812 #ALL_LINGUAS="ca de en_GB et fr it ko pl sv da es fi hu ja no pt pt_BR ru wa"
813 ALL_LINGUAS="ca de et fr it ko pl sv da es fi hu ja no pt pt_BR ru wa"
814 AM_GLIB_GNU_GETTEXT
815
816
817 ###############################################################################
818 #
819 #       Check for -lXmu (some fucked up vendors don't ship it...)
820 #
821 ###############################################################################
822
823 have_xmu=no
824 AC_CHECK_X_HEADER(X11/Xmu/Error.h, [have_xmu=yes],,
825                   [#include <stdlib.h>
826                    #include <stdio.h>
827                    #include <X11/Intrinsic.h>])
828 if test "$have_xmu" = no ; then
829   XMU_SRCS='$(UTILS_SRC)/xmu.c'
830   XMU_OBJS='$(UTILS_BIN)/xmu.o'
831   XMU_LIBS=''
832 else
833   XMU_SRCS=''
834   XMU_OBJS=''
835   XMU_LIBS='-lXmu'
836   AC_DEFINE(HAVE_XMU)
837 fi
838
839
840 ###############################################################################
841 #
842 #       Check for the SunOS 4.1.x _get_wmShellWidgetClass bug.
843 #       See comp.windows.x FAQ question 124.  The right fix is to
844 #       get OpenWindows 3.0 patches 100512-02 and 100573-03.
845 #
846 ###############################################################################
847
848 if test "$have_xmu" = yes ; then
849   case "$host" in
850     *-sunos4*)
851     AC_CACHE_CHECK([for the SunOS 4.1.x _get_wmShellWidgetClass bug],
852                    ac_cv_sunos_xmu_bug,
853                    [ac_save_LDFLAGS="$LDFLAGS"
854                     if test \! -z "$x_libraries" ; then
855                       LDFLAGS="$LDFLAGS -L$x_libraries"
856                     fi
857                     # Note: this trick never works!  (Generally.)
858                     # We're only getting away with using AC_TRY_LINK
859                     # with X libraries because we know it's SunOS.
860                     LDFLAGS="$LDFLAGS -lXmu -lXt -lX11 -lXext -lm"
861                     AC_TRY_LINK(,,
862                                 [ac_cv_sunos_xmu_bug=no],
863                                 [ac_cv_sunos_xmu_bug=yes])
864                     LDFLAGS="$ac_save_LDFLAGS"])
865     if test "$ac_cv_sunos_xmu_bug" = yes ; then
866       AC_CACHE_CHECK([whether the compiler understands -static], 
867                      ac_cv_ld_static,
868                      [ac_save_LDFLAGS="$LDFLAGS"
869                       LDFLAGS="$LDFLAGS -static"
870                       AC_TRY_LINK(,,[ac_cv_ld_static=yes],[ac_cv_ld_static=no])
871                     LDFLAGS="$ac_save_LDFLAGS"])
872       if test "$ac_cv_ld_static" = yes ; then
873         LDFLAGS="$LDFLAGS -static"
874       else
875         LDFLAGS="$LDFLAGS -Bstatic"
876       fi
877     fi
878     ;;
879   esac
880 fi
881
882
883 ###############################################################################
884 #
885 #       Handle the --with-hackdir option
886 #
887 ###############################################################################
888
889 have_hackdir=yes
890 with_hackdir_req=unspecified
891 AC_ARG_WITH(hackdir,[
892 Installation options:
893
894   --with-hackdir=DIR      Where to install the hundreds of demo executables.
895                           Default: \`PREFIX/lib/xscreensaver/'],
896   [with_hackdir="$withval"; with_hackdir_req="$withval"],[with_hackdir=yes])
897
898 if test x"$with_hackdir" = xyes; then
899   HACKDIR='${exec_prefix}/lib/xscreensaver'
900 elif test x"$with_hackdir" = xno; then
901   HACKDIR='${bindir}'
902 else
903   # there must be a better way than this...
904   if test -z "`echo $with_hackdir | sed 's@^/.*@@'`" ; then
905     # absolute path
906     HACKDIR=$with_hackdir
907   else
908     # relative path
909     HACKDIR="\${exec_prefix}$with_hackdir"
910   fi
911 fi
912
913 # canonicalize slashes.
914 HACKDIR=`echo "${HACKDIR}" | sed 's@/$@@;s@//*@/@g'`
915
916 # This option used to be called --enable-subdir; make sure that is no longer
917 # used, since configure brain-damagedly ignores unknown --enable options.
918
919 obsolete_enable=
920 AC_ARG_ENABLE(subdir,,[obsolete_enable=yes])
921 if test -n "$obsolete_enable"; then
922   echo "error: the --enable-subdir option has been replaced with"
923   echo "       the new --with-hackdir option; see \`configure --help'"
924   echo "       for more information."
925   exit 1
926 fi
927
928
929 ###############################################################################
930 #
931 #       Handle the --with-configdir option
932 #
933 ###############################################################################
934
935 have_configdir=yes
936 with_configdir_req=unspecified
937 AC_ARG_WITH(configdir,
938 [  --with-configdir=DIR    Where to install the data files that describe each
939                           of the display modes to the GUI.
940                           Default: \`GNOMEPREFIX/control-center/screensavers/'
941                           or \`PREFIX/lib/xscreensaver/config/', depending on
942                           whether GNOME is available.
943 ],
944   [with_configdir="$withval"; with_configdir_req="$withval"],
945   [with_configdir=yes])
946
947 if test x"$with_configdir" = xyes; then
948   # filled in later...
949   HACK_CONF_DIR=''
950 elif test x"$with_configdir" = xno; then
951   echo "error: must be yes, or a pathname: --with-configdir=$with_configdir"
952   exit 1
953 else
954   # there must be a better way than this...
955   if test -z "`echo $with_configdir | sed 's@^/.*@@'`" ; then
956     # absolute path
957     HACK_CONF_DIR=$with_configdir
958   else
959     # relative path
960     HACK_CONF_DIR="\${exec_prefix}$with_configdir"
961   fi
962 fi
963
964
965
966
967 ###############################################################################
968 #
969 #       Check for the SGI SCREEN_SAVER server extension.
970 #
971 ###############################################################################
972
973 have_sgi=no
974 with_sgi_req=unspecified
975 AC_ARG_WITH(sgi-ext,
976 [Except where noted, all of the --with options below can also take a
977 directory argument: for example, \`--with-motif=/opt/Motif'.  That would
978 cause /opt/Motif/include/ to be added to the -I list, and /opt/Motif/lib/
979 to be added to the -L list, assuming those directories exist.  
980
981 By default, support for each of these options will be built in, if the
982 relevant library routines exist.  At run time, they will then be used
983 only if the X server being used supports them.  Each --with option has
984 a corresponding --without option, to override building support for them
985 at all.
986
987 Screen blanking and idle-detection options:
988
989   --with-sgi-ext          Include support for the SGI SCREEN_SAVER extension.],
990   [with_sgi="$withval"; with_sgi_req="$withval"],[with_sgi=yes])
991
992 HANDLE_X_PATH_ARG(with_sgi, --with-sgi-ext, SGI SCREEN_SAVER)
993
994 if test "$with_sgi" = yes; then
995   AC_CHECK_X_HEADER(X11/extensions/XScreenSaver.h,
996                     [have_sgi=yes
997                      AC_DEFINE(HAVE_SGI_SAVER_EXTENSION)],,
998                     [#include <X11/Xlib.h>])
999
1000 elif test "$with_sgi" != no; then
1001   echo "error: must be yes or no: --with-sgi-ext=$with_sgi"
1002   exit 1
1003 fi
1004
1005
1006 ###############################################################################
1007 #
1008 #       Check for the MIT-SCREEN-SAVER server extension.
1009 #
1010 ###############################################################################
1011
1012 have_mit=no
1013 with_mit_req=unspecified
1014 AC_ARG_WITH(mit-ext,
1015 [  --with-mit-ext          Include support for the MIT-SCREEN-SAVER extension.],
1016   [with_mit="$withval"; with_mit_req="$withval"],[with_mit=yes])
1017
1018 HANDLE_X_PATH_ARG(with_mit, --with-mit-ext, MIT-SCREEN-SAVER)
1019
1020 if test "$with_mit" = yes; then
1021   AC_CHECK_X_HEADER(X11/extensions/scrnsaver.h, [have_mit=yes],,
1022                     [#include <X11/Xlib.h>])
1023
1024   # Now check to see if it's really in the library; XF86Free-3.3 ships
1025   # scrnsaver.h, but doesn't include the code in libXext.a, the idiots!
1026   #
1027   if test "$have_mit" = yes; then
1028     AC_CHECK_X_LIB(Xext, XScreenSaverRegister, [true], [have_mit=no], -lm)
1029
1030     if test "$have_mit" = no; then
1031       # Fuck!  Looks like XF86Free-3.3 actually puts it in XExExt instead
1032       # of in Xext.  Thank you master, may I have another.
1033       AC_CHECK_X_LIB(XExExt, XScreenSaverRegister,
1034                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXExExt"],
1035                      [true], -lX11 -lXext -lm)
1036     fi
1037
1038     if test "$have_mit" = no; then
1039       # Double fuck!  Looks like some versions of XFree86 (whichever version
1040       # it is that comes with RedHat Linux 2.0 -- I can't find a version 
1041       # number) put this garbage in Xss instead of Xext.  Thank you master,
1042       #  may I have another.
1043       AC_CHECK_X_LIB(Xss, XScreenSaverRegister,
1044                      [have_mit=yes; SAVER_LIBS="$SAVER_LIBS -lXss"],
1045                      [true], -lX11 -lXext -lm)
1046     fi
1047
1048   if test "$have_mit" = yes; then
1049     AC_DEFINE(HAVE_MIT_SAVER_EXTENSION)
1050   fi
1051
1052   fi
1053
1054 elif test "$with_mit" != no; then
1055   echo "error: must be yes or no: --with-mit-ext=$with_mit"
1056   exit 1
1057 fi
1058
1059
1060 ###############################################################################
1061 #
1062 #       Check for the XIDLE server extension.
1063 #
1064 ###############################################################################
1065
1066 have_xidle=no
1067 with_xidle_req=unspecified
1068 AC_ARG_WITH(xidle-ext,
1069 [  --with-xidle-ext        Include support for the XIDLE extension.],
1070   [with_xidle="$withval"; with_xidle_req="$withval"],[with_xidle=yes])
1071
1072 HANDLE_X_PATH_ARG(with_xidle, --with-xidle-ext, XIDLE)
1073
1074 if test "$with_xidle" = yes; then
1075   AC_CHECK_X_HEADER(X11/extensions/xidle.h,
1076                     [have_xidle=yes
1077                      AC_DEFINE(HAVE_XIDLE_EXTENSION)],,
1078                     [#include <X11/Xlib.h>])
1079 elif test "$with_xidle" != no; then
1080   echo "error: must be yes or no: --with-xidle-ext=$with_xidle"
1081   exit 1
1082 fi
1083
1084
1085 ###############################################################################
1086 #
1087 #       Check for the SGI-VIDEO-CONTROL server extension.
1088 #
1089 ###############################################################################
1090
1091 have_sgivc=no
1092 with_sgivc_req=unspecified
1093 AC_ARG_WITH(sgivc-ext,
1094 [  --with-sgivc-ext        Include support for the SGI-VIDEO-CONTROL extension.],
1095   [with_sgivc="$withval"; with_sgivc_req="$withval"],[with_sgivc=yes])
1096
1097 HANDLE_X_PATH_ARG(with_sgivc, --with-sgivc-ext, SGI-VIDEO-CONTROL)
1098
1099 if test "$with_sgivc" = yes; then
1100
1101   # first check for XSGIvc.h
1102   AC_CHECK_X_HEADER(X11/extensions/XSGIvc.h, [have_sgivc=yes],,
1103                     [#include <X11/Xlib.h>])
1104
1105   # if that succeeded, then check for the -lXsgivc
1106   if test "$have_sgivc" = yes; then
1107     have_sgivc=no
1108     AC_CHECK_X_LIB(Xsgivc, XSGIvcQueryGammaMap,
1109                   [have_sgivc=yes; SAVER_LIBS="$SAVER_LIBS -lXsgivc"], [true],
1110                   -lXext -lX11)
1111   fi
1112
1113   # if that succeeded, then we've really got it.
1114   if test "$have_sgivc" = yes; then
1115     AC_DEFINE(HAVE_SGI_VC_EXTENSION)
1116   fi
1117
1118 elif test "$with_sgivc" != no; then
1119   echo "error: must be yes or no: --with-sgivc-ext=$with_sgivc"
1120   exit 1
1121 fi
1122
1123
1124 ###############################################################################
1125 #
1126 #       Check for the DPMS server extension.
1127 #
1128 ###############################################################################
1129
1130 have_dpms=no
1131 with_dpms_req=unspecified
1132 AC_ARG_WITH(dpms-ext,
1133 [  --with-dpms-ext         Include support for the DPMS extension.],
1134   [with_dpms="$withval"; with_dpms_req="$withval"],[with_dpms=yes])
1135
1136 HANDLE_X_PATH_ARG(with_dpms, --with-dpms-ext, DPMS)
1137
1138 if test "$with_dpms" = yes; then
1139
1140   # first check for dpms.h
1141   AC_CHECK_X_HEADER(X11/extensions/dpms.h, [have_dpms=yes],,
1142                     [#include <X11/Xlib.h>])
1143
1144   # if that succeeded, then check for the DPMS code in the libraries
1145   if test "$have_dpms" = yes; then
1146
1147     # first look in -lXext (this is where it is with XFree86 4.0)
1148     have_dpms=no
1149     AC_CHECK_X_LIB(Xext, DPMSInfo, [have_dpms=yes], [true], -lXext -lX11)
1150
1151     # if that failed, look in -lXdpms (this is where it was in XFree86 3.x)
1152     if test "$have_dpms" = no; then
1153       AC_CHECK_X_LIB(Xdpms, DPMSInfo,
1154                     [have_dpms=yes; XDPMS_LIBS="-lXdpms"], [true],
1155                     -lXext -lX11)
1156     fi
1157   fi
1158
1159
1160   # if that succeeded, then we've really got it.
1161   if test "$have_dpms" = yes; then
1162     AC_DEFINE(HAVE_DPMS_EXTENSION)
1163   fi
1164
1165 elif test "$with_dpms" != no; then
1166   echo "error: must be yes or no: --with-dpms-ext=$with_dpms"
1167   exit 1
1168 fi
1169
1170
1171 ###############################################################################
1172 #
1173 #       Check for the XINERAMA server extension.
1174 #
1175 ###############################################################################
1176
1177 have_xinerama=no
1178 with_xinerama_req=unspecified
1179 AC_ARG_WITH(xinerama-ext,
1180 [  --with-xinerama-ext     Include support for the XINERAMA extension.],
1181   [with_xinerama="$withval"; with_xinerama_req="$withval"],[with_xinerama=yes])
1182
1183 HANDLE_X_PATH_ARG(with_xinerama, --with-xinerama-ext, XINERAMA)
1184
1185 if test "$with_xinerama" = yes; then
1186
1187   # first check for Xinerama.h
1188   AC_CHECK_X_HEADER(X11/extensions/Xinerama.h, [have_xinerama=yes],,
1189                     [#include <X11/Xlib.h>])
1190
1191   # if that succeeded, then check for the XINERAMA code in the libraries
1192   if test "$have_xinerama" = yes; then
1193
1194     # first look in -lXext
1195     have_xinerama=no
1196     AC_CHECK_X_LIB(Xext, XineramaQueryExtension, [have_xinerama=yes], [true],
1197                   -lXext -lX11)
1198
1199     # if that failed, look in -lXinerama (this is where it is in XFree86 4.1.)
1200     if test "$have_xinerama" = no; then
1201       AC_CHECK_X_LIB(Xinerama, XineramaQueryExtension,
1202                      [have_xinerama=yes; SAVER_LIBS="$SAVER_LIBS -lXinerama"],
1203                      [true], -lXext -lX11)
1204     fi
1205   fi
1206
1207   # if that succeeded, then we've really got it.
1208   if test "$have_xinerama" = yes; then
1209     AC_DEFINE(HAVE_XINERAMA)
1210   fi
1211
1212 elif test "$with_xinerama" != no; then
1213   echo "error: must be yes or no: --with-xinerama-ext=$with_xinerama"
1214   exit 1
1215 fi
1216
1217
1218 ###############################################################################
1219 #
1220 #       Check for the XF86VMODE server extension (for virtual screens.)
1221 #
1222 ###############################################################################
1223
1224 have_xf86vmode=no
1225 with_xf86vmode_req=unspecified
1226 AC_ARG_WITH(xf86vmode-ext,
1227 [  --with-xf86vmode-ext    Include support for XFree86 virtual screens.],
1228   [with_xf86vmode="$withval"; with_xf86vmode_req="$withval"],
1229   [with_xf86vmode=yes])
1230
1231 HANDLE_X_PATH_ARG(with_xf86vmode, --with-xf86vmode-ext, xf86vmode)
1232
1233 if test "$with_xf86vmode" = yes; then
1234
1235   # first check for xf86vmode.h
1236   AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86vmode=yes],,
1237                     [#include <X11/Xlib.h>])
1238
1239   # if that succeeded, then check for the -lXxf86vm
1240   if test "$have_xf86vmode" = yes; then
1241     have_xf86vmode=no
1242     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeGetViewPort,
1243                   [have_xf86vmode=yes; SAVER_LIBS="$SAVER_LIBS -lXxf86vm"],
1244                    [true], -lXext -lX11)
1245   fi
1246
1247   # if that succeeded, then we've really got it.
1248   if test "$have_xf86vmode" = yes; then
1249     AC_DEFINE(HAVE_XF86VMODE)
1250   fi
1251
1252 elif test "$with_xf86vmode" != no; then
1253   echo "error: must be yes or no: --with-xf86vmode-ext=$with_xf86vmode"
1254   exit 1
1255 fi
1256
1257
1258 ###############################################################################
1259 #
1260 #       Check for the XF86VMODE server extension (for gamma fading.)
1261 #
1262 ###############################################################################
1263
1264 have_xf86gamma=no
1265 have_xf86gamma_ramp=no
1266 with_xf86gamma_req=unspecified
1267 AC_ARG_WITH(xf86gamma-ext,
1268 [  --with-xf86gamma-ext    Include support for XFree86 gamma fading.],
1269   [with_xf86gamma="$withval"; with_xf86gamma_req="$withval"],
1270   [with_xf86gamma=yes])
1271
1272 HANDLE_X_PATH_ARG(with_xf86gamma, --with-xf86gamma-ext, xf86gamma)
1273
1274 if test "$with_xf86gamma" = yes; then
1275
1276   # first check for xf86vmode.h, if we haven't already
1277   if test "$have_xf86vmode" = yes; then
1278     have_xf86gamma=yes
1279   else
1280     AC_CHECK_X_HEADER(X11/extensions/xf86vmode.h, [have_xf86gamma=yes],,
1281                       [#include <X11/Xlib.h>])
1282   fi
1283
1284   # if that succeeded, then check for the -lXxf86vm
1285   if test "$have_xf86gamma" = yes; then
1286     have_xf86gamma=no
1287     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGamma,
1288                   [have_xf86gamma=yes],
1289                    [true], -lXext -lX11)
1290   fi
1291
1292   # check for the Ramp versions of the functions too.
1293   if test "$have_xf86gamma" = yes; then
1294     have_xf86gamma_ramp=no
1295     AC_CHECK_X_LIB(Xxf86vm, XF86VidModeSetGammaRamp,
1296                   [have_xf86gamma_ramp=yes],
1297                    [true], -lXext -lX11)
1298   fi
1299
1300   # if those tests succeeded, then we've really got the functions.
1301   if test "$have_xf86gamma" = yes; then
1302     AC_DEFINE(HAVE_XF86VMODE_GAMMA)
1303   fi
1304
1305   if test "$have_xf86gamma_ramp" = yes; then
1306     AC_DEFINE(HAVE_XF86VMODE_GAMMA_RAMP)
1307   fi
1308
1309   # pull in the lib, if we haven't already
1310   if test "$have_xf86gamma" = yes -a "$have_xf86vmode" = no; then
1311     SAVER_LIBS="$SAVER_LIBS -lXxf86vm"
1312   fi
1313
1314 elif test "$with_xf86gamma" != no; then
1315   echo "error: must be yes or no: --with-xf86gamma-ext=$with_xf86vmode"
1316   exit 1
1317 fi
1318
1319
1320 ###############################################################################
1321 #
1322 #       Check for HP XHPDisableReset and XHPEnableReset.
1323 #
1324 ###############################################################################
1325
1326 AC_EGREP_X_HEADER(XHPDisableReset, X11/XHPlib.h,
1327                   [AC_DEFINE(HAVE_XHPDISABLERESET)
1328                    SAVER_LIBS="-lXhp11 $SAVER_LIBS"])
1329
1330
1331 ###############################################################################
1332 #
1333 #       Check for /proc/interrupts.
1334 #
1335 ###############################################################################
1336
1337 have_proc_interrupts=no
1338 with_proc_interrupts_req=unspecified
1339 AC_ARG_WITH(proc-interrupts,
1340 [  --with-proc-interrupts  Include support for consulting the /proc/interrupts
1341                           file to notice keyboard activity.],
1342   [with_proc_interrupts="$withval"; with_proc_interrupts_req="$withval"],
1343   [with_proc_interrupts=yes])
1344
1345 if test "$with_proc_interrupts" = yes; then
1346
1347    AC_CACHE_CHECK([whether /proc/interrupts contains keyboard data],
1348     ac_cv_have_proc_interrupts,
1349     [ac_cv_have_proc_interrupts=no
1350      if grep keyboard /proc/interrupts >/dev/null 2>&1 ; then
1351        ac_cv_have_proc_interrupts=yes
1352      fi
1353     ])
1354    have_proc_interrupts=$ac_cv_have_proc_interrupts
1355
1356   if test "$have_proc_interrupts" = yes; then
1357     AC_DEFINE(HAVE_PROC_INTERRUPTS)
1358   fi
1359
1360 elif test "$with_proc_interrupts" != no; then
1361   echo "error: must be yes or no: --with-proc-interrupts=$with_proc_interrupts"
1362   exit 1
1363 fi
1364
1365
1366 ###############################################################################
1367 #
1368 #       The --enable-locking option
1369 #
1370 ###############################################################################
1371
1372 AC_ARG_ENABLE(locking,[
1373 Screen locking options:
1374
1375   --enable-locking        Compile in support for locking the display.
1376   --disable-locking       Do not allow locking at all.],
1377   [enable_locking="$enableval"],[enable_locking=yes])
1378 if test "$enable_locking" = yes; then
1379   true
1380 elif test "$enable_locking" = no; then
1381   AC_DEFINE(NO_LOCKING)
1382 else
1383   echo "error: must be yes or no: --enable-locking=$enable_locking"
1384   exit 1
1385 fi
1386
1387
1388
1389 ###############################################################################
1390 #
1391 #       The --enable-vt-locking option
1392 #
1393 ###############################################################################
1394
1395 #ac_vt_lockswitch=no
1396 #AC_ARG_ENABLE(vt-locking,[
1397 #  --enable-vt-locking     Compile in support for locking Virtual Terminals.
1398 #                          This is the default if the system supports it, and
1399 #                          if locking support is included (--enable-locking.)
1400 #  --disable-vt-locking    Do not allow locking of VTs, even if locking is
1401 #                          enabled.],
1402 #  [enable_vt_locking="$enableval"],[enable_vt_locking=yes])
1403 #if test "$enable_vt_locking" = yes; then
1404 #
1405 #  AC_CACHE_CHECK([for the VT_LOCKSWITCH ioctl], ac_cv_vt_lockswitch,
1406 #   [AC_TRY_COMPILE([#include <fcntl.h>
1407 #                   #include <sys/ioctl.h>
1408 #                   #include <sys/vt.h>],
1409 #                  [int x = VT_LOCKSWITCH; int y = VT_UNLOCKSWITCH;],
1410 #                  [ac_cv_vt_lockswitch=yes],
1411 #                  [ac_cv_vt_lockswitch=no])])
1412 #  ac_vt_lockswitch=$ac_cv_vt_lockswitch
1413 #
1414 #elif test "$enable_vt_locking" = no; then
1415 #  true
1416 #else
1417 #  echo "error: must be yes or no: --enable-vt-locking=$enable_vt_locking"
1418 #  exit 1
1419 #fi
1420 #
1421 #if test "$ac_vt_lockswitch" = yes; then
1422 #  AC_DEFINE(HAVE_VT_LOCKSWITCH)
1423 #  # the VT_LOCKSWITCH ioctl can only be used when running as root.
1424 #  # #### but it doesn't work yet, so don't worry about that for now.
1425 ##  need_setuid=yes
1426 #fi
1427
1428
1429 ###############################################################################
1430 #
1431 #       Check for PAM.
1432 #
1433 ###############################################################################
1434
1435 case "$host" in
1436   *-solaris*)
1437    # Solaris systems tend to come with PAM misconfigured.
1438    #  Don't build it by default, even if the headers exist.
1439    with_pam_default=no
1440    ;;
1441   *)
1442    # Default to building PAM support on all other systems, if it exists.
1443    with_pam_default=yes
1444   ;;
1445 esac
1446
1447 have_pam=no
1448 with_pam_req=unspecified
1449
1450 AC_ARG_WITH(pam,
1451 [  --with-pam              Include support for PAM (Pluggable Auth Modules.)],
1452   [with_pam="$withval"; with_pam_req="$withval"],[with_pam=$with_pam_default])
1453
1454 HANDLE_X_PATH_ARG(with_pam, --with-pam, PAM)
1455
1456 if test "$enable_locking" = yes -a "$with_pam" = yes; then
1457   AC_CACHE_CHECK([for PAM], ac_cv_pam,
1458                  [AC_TRY_X_COMPILE([#include <security/pam_appl.h>],,
1459                                    [ac_cv_pam=yes],
1460                                    [ac_cv_pam=no])])
1461   if test "$ac_cv_pam" = yes ; then
1462     have_pam=yes
1463     AC_DEFINE(HAVE_PAM)
1464     PASSWD_LIBS="${PASSWD_LIBS} -lpam"
1465
1466     # libpam typically requires dlopen and dlsym.  On FreeBSD,
1467     # those are in libc.  On Linux and Solaris, they're in libdl.
1468     AC_CHECK_LIB(dl, dlopen, [PASSWD_LIBS="${PASSWD_LIBS} -ldl"])
1469
1470     AC_MSG_CHECKING(how to call pam_strerror)
1471     AC_CACHE_VAL(ac_cv_pam_strerror_args,
1472      [AC_TRY_COMPILE([#include <stdio.h>
1473                       #include <stdlib.h>
1474                       #include <security/pam_appl.h>],
1475                      [pam_handle_t *pamh = 0;
1476                       char *s = pam_strerror(pamh, PAM_SUCCESS);],
1477                      [ac_pam_strerror_args=2],
1478                      [AC_TRY_COMPILE([#include <stdio.h>
1479                                       #include <stdlib.h>
1480                                       #include <security/pam_appl.h>],
1481                                      [char *s =
1482                                        pam_strerror(PAM_SUCCESS);],
1483                                      [ac_pam_strerror_args=1],
1484                                      [ac_pam_strerror_args=0])])
1485       ac_cv_pam_strerror_args=$ac_pam_strerror_args])
1486     ac_pam_strerror_args=$ac_cv_pam_strerror_args
1487     if test "$ac_pam_strerror_args" = 1 ; then
1488       AC_MSG_RESULT(one argument)
1489     elif test "$ac_pam_strerror_args" = 2 ; then
1490       AC_DEFINE(PAM_STRERROR_TWO_ARGS)
1491       AC_MSG_RESULT(two arguments)
1492     else
1493       AC_MSG_RESULT(unknown)
1494     fi
1495   fi
1496 fi
1497
1498
1499 ###############################################################################
1500 #
1501 #       Check for Kerberos.
1502 #
1503 ###############################################################################
1504
1505 have_kerberos=no
1506 have_kerberos5=no
1507 with_kerberos_req=unspecified
1508
1509 AC_ARG_WITH(kerberos, 
1510 [  --with-kerberos         Include support for Kerberos authentication.],
1511   [with_kerberos="$withval"; with_kerberos_req="$withval"],[with_kerberos=yes])
1512
1513 HANDLE_X_PATH_ARG(with_kerberos, --with-kerberos, Kerberos)
1514
1515 if test "$enable_locking" = yes -a "$with_kerberos" = yes; then
1516   AC_CACHE_CHECK([for Kerberos 4], ac_cv_kerberos,
1517                  [AC_TRY_X_COMPILE([#include <krb.h>],,
1518                                    [ac_cv_kerberos=yes],
1519                                    [ac_cv_kerberos=no])])
1520   AC_CACHE_CHECK([for Kerberos 5], ac_cv_kerberos5,
1521                  [AC_TRY_X_COMPILE([#include <kerberosIV/krb.h>],,
1522                                    [ac_cv_kerberos5=yes],
1523                                    [ac_cv_kerberos5=no])])
1524
1525   if test "$ac_cv_kerberos" = yes ; then
1526     have_kerberos=yes
1527     AC_DEFINE(HAVE_KERBEROS)
1528   fi
1529
1530   if test "$ac_cv_kerberos5" = yes ; then
1531     have_kerberos=yes
1532     have_kerberos5=yes
1533     AC_DEFINE(HAVE_KERBEROS)
1534     AC_DEFINE(HAVE_KERBEROS5)
1535   fi
1536
1537   if test "$have_kerberos5" = yes ; then
1538     # from Matt Knopp <mhat@infocalypse.netlag.com>
1539     # (who got it from amu@mit.edu)
1540     PASSWD_LIBS="$PASSWD_LIBS -lkrb4 -ldes425 -lkrb5 -lk5crypto -lcrypt -lcom_err"
1541   elif test "$have_kerberos" = yes ; then
1542     # from Tim Showalter <tjs@psaux.com> for FreeBSD 4.2
1543     PASSWD_LIBS="$PASSWD_LIBS -lkrb -ldes -lcom_err"
1544   fi
1545
1546   if test "$have_kerberos" = yes ; then
1547     AC_CHECK_FUNC(res_search,,
1548       AC_CHECK_LIB(resolv,res_search,PASSWD_LIBS="${PASSWD_LIBS} -lresolv",
1549         AC_MSG_WARN([Can't find DNS resolver libraries needed for Kerberos])
1550       ))
1551   fi
1552 fi
1553
1554
1555 ###############################################################################
1556 #
1557 #       Check for the nine billion variants of shadow passwords...
1558 #
1559 ###############################################################################
1560
1561 need_setuid=no
1562
1563 have_shadow=no
1564 with_shadow_req=unspecified
1565
1566 AC_ARG_WITH(shadow,
1567 [  --with-shadow           Include support for shadow password authentication.],
1568   [with_shadow="$withval"; with_shadow_req="$withval"],[with_shadow=yes])
1569
1570 HANDLE_X_PATH_ARG(with_shadow, --with-shadow, shadow password)
1571
1572 if test "$enable_locking" = no ; then
1573   with_shadow_req=no
1574   with_shadow=no
1575 fi
1576
1577
1578 ###############################################################################
1579 #
1580 #       Check for Sun "adjunct" passwords.
1581 #
1582 ###############################################################################
1583
1584 if test "$with_shadow" = yes ; then
1585   AC_CACHE_CHECK([for Sun-style shadow passwords], ac_cv_sun_adjunct,
1586                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1587                                     #include <unistd.h>
1588                                     #include <sys/types.h>
1589                                     #include <sys/label.h>
1590                                     #include <sys/audit.h>
1591                                     #include <pwdadj.h>],
1592                       [struct passwd_adjunct *p = getpwanam("nobody");
1593                        const char *pw = p->pwa_passwd;],
1594                       [ac_cv_sun_adjunct=yes],
1595                       [ac_cv_sun_adjunct=no])])
1596   if test "$ac_cv_sun_adjunct" = yes; then
1597     have_shadow_adjunct=yes
1598     have_shadow=yes
1599     need_setuid=yes
1600   fi
1601 fi
1602
1603
1604 ###############################################################################
1605 #
1606 #       Check for DEC and SCO so-called "enhanced" security.
1607 #
1608 ###############################################################################
1609
1610 if test "$with_shadow" = yes ; then
1611   AC_CACHE_CHECK([for DEC-style shadow passwords], ac_cv_enhanced_passwd,
1612                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1613                                     #include <unistd.h>
1614                                     #include <sys/types.h>
1615                                     #include <pwd.h>
1616                                     #include <sys/security.h>
1617                                     #include <prot.h>],
1618                       [struct pr_passwd *p;
1619                        const char *pw;
1620                        set_auth_parameters(0, 0);
1621                        check_auth_parameters();
1622                        p = getprpwnam("nobody");
1623                        pw = p->ufld.fd_encrypt;],
1624                       [ac_cv_enhanced_passwd=yes],
1625                       [ac_cv_enhanced_passwd=no])])
1626   if test $ac_cv_enhanced_passwd = yes; then
1627     have_shadow_enhanced=yes
1628     have_shadow=yes
1629     need_setuid=yes
1630
1631     # On SCO, getprpwnam() is in -lprot (which uses nap() from -lx)
1632     # (I'm told it needs -lcurses too, but I don't understand why.)
1633     # But on DEC, it's in -lsecurity.
1634     #
1635     AC_CHECK_LIB(prot, getprpwnam, 
1636                  [PASSWD_LIBS="$PASSWD_LIBS -lprot -lcurses -lx"],
1637                  [AC_CHECK_LIB(security, getprpwnam, 
1638                                [PASSWD_LIBS="$PASSWD_LIBS -lsecurity"])],
1639                  [-lx])
1640   fi
1641 fi
1642
1643 ###############################################################################
1644 #
1645 #       Check for HP's entry in the "Not Invented Here" Sweepstakes.
1646 #
1647 ###############################################################################
1648
1649 if test "$with_shadow" = yes ; then
1650   AC_CACHE_CHECK([for HP-style shadow passwords], ac_cv_hpux_passwd,
1651                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1652                                     #include <unistd.h>
1653                                     #include <sys/types.h>
1654                                     #include <pwd.h>
1655                                     #include <hpsecurity.h>
1656                                     #include <prot.h>],
1657                       [struct s_passwd *p = getspwnam("nobody");
1658                        const char *pw = p->pw_passwd;],
1659                       [ac_cv_hpux_passwd=yes],
1660                       [ac_cv_hpux_passwd=no])])
1661   if test "$ac_cv_hpux_passwd" = yes; then
1662     have_shadow_hpux=yes
1663     have_shadow=yes
1664     need_setuid=yes
1665
1666     # on HPUX, bigcrypt is in -lsec
1667     AC_CHECK_LIB(sec, bigcrypt, [PASSWD_LIBS="$PASSWD_LIBS -lsec"])
1668   fi
1669 fi
1670
1671
1672 ###############################################################################
1673 #
1674 #       Check for FreeBSD-style shadow passwords.
1675 #
1676 #       On FreeBSD, getpwnam() and friends work just like on non-shadow-
1677 #       password systems -- except you only get stuff in the pw_passwd field
1678 #       if the running program is setuid.  So, guess that we've got this
1679 #       lossage to contend with if /etc/master.passwd exists, and default to
1680 #       a setuid installation.
1681 #
1682 ###############################################################################
1683
1684 if test "$with_shadow" = yes ; then
1685   AC_CACHE_CHECK([for FreeBSD-style shadow passwords], ac_cv_master_passwd,
1686                  [if test -f /etc/master.passwd ; then
1687                     ac_cv_master_passwd=yes
1688                   else
1689                     ac_cv_master_passwd=no
1690                   fi])
1691   if test "$ac_cv_master_passwd" = yes; then
1692     need_setuid=yes
1693   fi
1694 fi
1695
1696
1697 ###############################################################################
1698 #
1699 #       Check for traditional (ha!) shadow passwords.
1700 #
1701 ###############################################################################
1702
1703 if test "$with_shadow" = yes ; then
1704   AC_CACHE_CHECK([for generic shadow passwords], ac_cv_shadow,
1705                  [AC_TRY_X_COMPILE([#include <stdlib.h>
1706                                     #include <unistd.h>
1707                                     #include <sys/types.h>
1708                                     #include <pwd.h>
1709                                     #include <shadow.h>],
1710                       [struct spwd *p = getspnam("nobody");
1711                        const char *pw = p->sp_pwdp;],
1712                       [ac_cv_shadow=yes],
1713                       [ac_cv_shadow=no])])
1714   if test "$ac_cv_shadow" = yes; then
1715     have_shadow=yes
1716     need_setuid=yes
1717
1718     # On some systems (UnixWare 2.1), getspnam() is in -lgen instead of -lc.
1719     have_getspnam=no
1720     AC_CHECK_LIB(c, getspnam, [have_getspnam=yes])
1721     if test "$have_getspnam" = no ; then
1722       AC_CHECK_LIB(gen, getspnam,
1723                    [have_getspnam=yes; PASSWD_LIBS="$PASSWD_LIBS -lgen"])
1724     fi
1725   fi
1726 fi
1727
1728
1729 ###############################################################################
1730 #
1731 #       Check for other libraries needed for non-shadow passwords.
1732 #
1733 ###############################################################################
1734
1735 if test "$enable_locking" = yes ; then
1736
1737   # On some systems (UnixWare 2.1), crypt() is in -lcrypt instead of -lc.
1738   have_crypt=no
1739   AC_CHECK_LIB(c, crypt, [have_crypt=yes])
1740   if test "$have_crypt" = no ; then
1741     AC_CHECK_LIB(crypt, crypt,
1742                  [have_crypt=yes; PASSWD_LIBS="$PASSWD_LIBS -lcrypt"])
1743   fi
1744 fi
1745
1746
1747 # Most of the above shadow mechanisms will have set need_setuid to yes,
1748 # if they were found.  But, on some systems, we need setuid even when
1749 # using plain old vanilla passwords.
1750 #
1751 if test "$enable_locking" = yes ; then
1752   case "$host" in
1753     *-hpux* | *-aix* | *-netbsd* | *-freebsd* | *-openbsd* )
1754       need_setuid=yes
1755     ;;
1756   esac
1757 fi
1758
1759
1760 if test "$have_shadow_adjunct" = yes ; then
1761   AC_DEFINE(HAVE_ADJUNCT_PASSWD)
1762 elif test "$have_shadow_enhanced" = yes ; then
1763   AC_DEFINE(HAVE_ENHANCED_PASSWD)
1764 elif test "$have_shadow_hpux" = yes ; then
1765   AC_DEFINE(HAVE_HPUX_PASSWD)
1766 elif test "$have_shadow" = yes ; then
1767   AC_DEFINE(HAVE_SHADOW_PASSWD)
1768 fi
1769
1770
1771 ###############################################################################
1772 #
1773 #       Check for -lXm.
1774 #
1775 ###############################################################################
1776
1777 have_motif=no
1778 with_motif_req=unspecified
1779 AC_ARG_WITH(motif,[
1780 User interface options:
1781
1782   --with-motif            Use the Motif toolkit for the user interface
1783                           (not recommended.)],
1784   [with_motif="$withval"; with_motif_req="$withval"],[with_motif=yes])
1785
1786 HANDLE_X_PATH_ARG(with_motif, --with-motif, Motif)
1787
1788 if test "$with_motif" != yes -a "$with_motif" != no ; then
1789   echo "error: must be yes or no: --with-motif=$with_motif"
1790   exit 1
1791 fi
1792
1793 if test "$with_motif" = yes; then
1794   have_motif=no
1795   AC_CHECK_X_HEADER(Xm/Xm.h,
1796                     [have_motif=yes
1797                      AC_DEFINE(HAVE_MOTIF)
1798                      MOTIF_LIBS="$MOTIF_LIBS -lXm"],,
1799                     [#include <stdlib.h>
1800                      #include <stdio.h>
1801                      #include <X11/Intrinsic.h>])
1802 fi
1803
1804
1805 if test "$have_motif" = yes; then
1806   AC_CHECK_X_HEADER(Xm/ComboBox.h, [AC_DEFINE(HAVE_XMCOMBOBOX)],,
1807                     [#include <stdlib.h>
1808                      #include <stdio.h>
1809                      #include <X11/Intrinsic.h>])
1810 fi
1811
1812
1813 ###############################################################################
1814 #
1815 #       Check for -lgtk (and Gnome stuff)
1816 #
1817 ###############################################################################
1818
1819 have_gtk=no
1820 have_gtk2=no
1821 with_gtk_req=unspecified
1822 AC_ARG_WITH(gtk,
1823 [  --with-gtk              Use the Gtk toolkit for the user interface.],
1824   [with_gtk="$withval"; with_gtk_req="$withval"],[with_gtk=yes])
1825
1826 # if --with-gtk=/directory/ was specified, remember that directory so that
1827 # we can also look for the `gtk-config' program in that directory.
1828 case "$with_gtk" in
1829   /*)
1830     gtk_dir="$with_gtk"
1831     ;;
1832   *)
1833     gtk_dir=""
1834     ;;
1835 esac
1836
1837 HANDLE_X_PATH_ARG(with_gtk, --with-gtk, Gtk)
1838
1839 if test "$with_gtk" != yes -a "$with_gtk" != no ; then
1840   echo "error: must be yes or no: --with-gtk=$with_gtk"
1841   exit 1
1842 fi
1843
1844 have_gnome=no
1845 with_gnome_req=unspecified
1846 AC_ARG_WITH(gnome,
1847 [  --with-gnome            Include support for the Gnome 1.x Control Center.
1848                           (This option is not needed with GTK 2.x / Gnome 2.x.)
1849 ],
1850   [with_gnome="$withval"; with_gnome_req="$withval"],[with_gnome=yes])
1851
1852 # if --with-gnome=/directory/ was specified, remember that directory so that
1853 # we can also look for the `gnome-config' program in that directory.
1854 case "$with_gnome" in
1855   /*)
1856     gnome_dir="$with_gnome"
1857     ;;
1858   *)
1859     gnome_dir=""
1860     ;;
1861 esac
1862
1863 HANDLE_X_PATH_ARG(with_gnome, --with-gnome, Gnome)
1864
1865 if test "$with_gnome" != yes -a "$with_gnome" != no ; then
1866   echo "error: must be yes or no: --with-gnome=$with_gnome"
1867   exit 1
1868 fi
1869
1870 parse_gtk_version_string() {
1871   # M4 sucks!!
1872   changequote(X,Y)
1873   maj=`echo $ac_gtk_version_string | sed -n 's/\..*//p'`
1874   min=`echo $ac_gtk_version_string | sed -n 's/[^.]*\.\([^.]*\).*/\1/p'`
1875   changequote([,])
1876   ac_gtk_version=`echo "$maj * 1000 + $min" | bc`
1877   if test -z "$ac_gtk_version"; then
1878     ac_gtk_version=unknown
1879     ac_gtk_version_string=unknown
1880   fi
1881 }
1882
1883
1884 jurassic_gtk=no
1885 gtk2_halfassed=no
1886
1887 if test "$with_gtk" = yes; then
1888   have_gtk=no
1889   
1890   # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
1891   # look in /foo/bin/ for glib-config, gtk-config, and gnome-config.
1892   #
1893   gtk_path="$PATH"
1894
1895   if test ! -z "$gtk_dir"; then
1896     # canonicalize slashes.
1897     foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
1898     gtk_path="$foo:$gtk_path"
1899   fi
1900
1901   if test ! -z "$gnome_dir"; then
1902     # canonicalize slashes.
1903     foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
1904     gtk_path="$foo:$gtk_path"
1905   fi
1906
1907   AC_PATH_PROGS(pkg_config, pkg-config,, $gtk_path)
1908
1909   if test -n "$pkg_config" ; then
1910     #
1911     # the new way...
1912     # run pkg-config based tests.
1913     #
1914
1915     pkgs=''
1916     pkg_check_version() {
1917       if test "$ok" = yes ; then
1918         req="$1"
1919         min="$2"
1920         AC_MSG_CHECKING(for $req)
1921         if $pkg_config --exists "$req" ; then
1922           vers=`$pkg_config --modversion "$req"`
1923           if $pkg_config --exists "$req >= $min" ; then
1924             AC_MSG_RESULT($vers)
1925             pkgs="$pkgs $req"
1926             return 1
1927           else
1928             AC_MSG_RESULT($vers (wanted >= $min))
1929             ok=no
1930             return 0
1931           fi
1932         else
1933           AC_MSG_RESULT(no)
1934           ok=no
1935           return 0
1936         fi
1937       fi
1938     }
1939
1940     ok="yes"
1941     pkg_check_version     gtk+-2.0  2.0.1  ; ac_gtk_version_string="$vers"
1942     pkg_check_version  gmodule-2.0  2.0.0
1943     pkg_check_version   libxml-2.0  2.4.6
1944     pkg_check_version libglade-2.0  1.99.0
1945     have_gtk="$ok"
1946
1947     if test "$have_gtk" = yes; then
1948       have_gtk2=yes
1949       AC_DEFINE(HAVE_GTK2)
1950     else
1951       if test -n "$ac_gtk_version_string" ; then
1952         gtk2_halfassed="$ac_gtk_version_string"
1953       fi
1954     fi
1955
1956     if test "$have_gtk" = no; then
1957       #
1958       # we don't have GTK 2.  Let's look for GTK 1.
1959       #
1960       pkgs=''
1961       ok="yes"
1962       pkg_check_version gtk+ 1.2           ; ac_gtk_version_string="$vers"
1963       pkg_check_version glib 1.0
1964       have_gtk="$ok"
1965
1966       # Now check for Gnome...
1967       #
1968       if test "$have_gtk" = yes -a "$with_gnome" = yes; then
1969         old_pkgs="$pkgs"
1970         ok=yes
1971         pkg_check_version capplet    1.0
1972         pkg_check_version gnomeui    1.0
1973         pkg_check_version gdk_pixbuf 0.1
1974         have_gnome="$ok"
1975
1976         if test "$have_gnome" = no; then
1977           pkgs="$old_pkgs"
1978         else
1979           AC_DEFINE(HAVE_CRAPPLET)
1980         fi
1981       fi
1982     fi
1983
1984     if test "$have_gtk" = yes; then
1985       parse_gtk_version_string
1986       jurassic_gtk=no
1987     else
1988       have_gnome=no
1989     fi
1990
1991     if test "$have_gtk" = yes; then
1992       AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
1993                      [ac_cv_gtk_config_cflags=`$pkg_config --cflags $pkgs`])
1994       AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
1995                      [ac_cv_gtk_config_libs=`$pkg_config --libs $pkgs`])
1996     fi
1997     ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
1998     ac_gtk_config_libs=$ac_cv_gtk_config_libs
1999
2000     ac_gnome_config_cflags=$ac_gtk_config_cflags
2001     ac_gnome_config_libs=$ac_gtk_config_libs
2002
2003   else
2004     #
2005     # the old way...
2006     # run {gnome,gtk}-config based tests.
2007     #
2008
2009     AC_PATH_PROGS(glib_config,  glib12-config glib-config,,  $gtk_path)
2010     AC_PATH_PROGS(gtk_config,   gtk12-config  gtk-config,,   $gtk_path)
2011
2012     if test "$with_gnome" = yes; then
2013       AC_PATH_PROGS(gnome_config, gnome-config,, $gtk_path)
2014     fi
2015
2016     if test -n "$glib_config" -a  -n "$gtk_config" ; then
2017       have_gtk=yes
2018       if test "$with_gnome" = yes -a -n "$gnome_config" ; then
2019         have_gnome=yes
2020       fi
2021     fi
2022
2023     if test "$have_gtk" = yes; then
2024       AC_CACHE_CHECK([Gtk version number], ac_cv_gtk_version_string,
2025                      [ac_cv_gtk_version_string=`$gtk_config --version`])
2026       ac_gtk_version_string=$ac_cv_gtk_version_string
2027     fi
2028
2029     parse_gtk_version_string
2030
2031     if test "$ac_gtk_version" = "unknown" || test "$ac_gtk_version" -lt 1002
2032     then
2033       have_gtk=no
2034       have_gnome=no
2035       jurassic_gtk=yes
2036     fi
2037
2038     if test "$have_gtk" = yes; then
2039       AC_CACHE_CHECK([for Gtk includes], ac_cv_gtk_config_cflags,
2040                      [ac_cv_gtk_config_cflags=`$gtk_config --cflags`])
2041       AC_CACHE_CHECK([for Gtk libs], ac_cv_gtk_config_libs,
2042                      [ac_cv_gtk_config_libs=`$gtk_config --libs`])
2043     fi
2044     ac_gtk_config_cflags=$ac_cv_gtk_config_cflags
2045     ac_gtk_config_libs=$ac_cv_gtk_config_libs
2046
2047     # Check for Gnome Capplet support.
2048     # Note that this is only needed with Gnome 1.x, not Gnome 2.x.
2049     # In a Gnome 2.x world, libcapplet will not exist.
2050     # (In fact, this likely won't even be checked, since in a Gnome 2.x
2051     # world, we will probably be up in the "$pkg_config" branch instead
2052     # of here in the "$gnome_config" branch.)
2053     #
2054     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2055       gnome_config_libs="gtk capplet gnomeui gdk_pixbuf"
2056       AC_MSG_CHECKING(for Gnome capplet includes)
2057       AC_CACHE_VAL(ac_cv_gnome_config_cflags,
2058         [if ( $gnome_config --cflags $gnome_config_libs >/dev/null 2>&1 | \
2059               grep Unknown >/dev/null ) ; then
2060            ac_cv_gnome_config_cflags=''
2061          else
2062           ac_cv_gnome_config_cflags=`$gnome_config --cflags $gnome_config_libs`
2063          fi])
2064       ac_gnome_config_cflags=$ac_cv_gnome_config_cflags
2065       if test "$ac_gnome_config_cflags" = "" ; then
2066         have_gnome=no
2067         AC_MSG_RESULT(no)
2068       else
2069         AC_MSG_RESULT($ac_gnome_config_cflags)
2070       fi
2071     fi
2072
2073     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2074       AC_MSG_CHECKING(for Gnome capplet libs)
2075       AC_CACHE_VAL(ac_cv_gnome_config_libs,
2076         [if ( $gnome_config --libs $gnome_config_libs >/dev/null 2>&1 |
2077               grep Unknown >/dev/null ) ; then
2078            ac_cv_gnome_config_libs=''
2079          else
2080            ac_cv_gnome_config_libs=`$gnome_config --libs $gnome_config_libs`
2081          fi])
2082       ac_gnome_config_libs=$ac_cv_gnome_config_libs
2083       if test "$ac_gnome_config_libs" = "" ; then
2084         have_gnome=no
2085         AC_MSG_RESULT(no)
2086       else
2087         AC_MSG_RESULT($ac_gnome_config_libs)
2088       fi
2089     fi
2090
2091     # If we have Gnome, then override the gtk-config values with 
2092     # the gnome-config values.
2093     #
2094     if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2095       ac_gtk_config_cflags=$ac_gnome_config_cflags
2096       ac_gtk_config_libs=$ac_gnome_config_libs
2097       AC_DEFINE(HAVE_CRAPPLET)
2098     fi
2099
2100   fi   # end of {gnome,gtk}-config based tests
2101
2102   if test "$have_gtk" = yes -a "$have_gtk2" = no; then
2103     # check for this function that was not in libcapplet 1.2.
2104     # (only needed in Gnome/Gtk 1.x, not Gnome/Gtk 2.x)
2105     AC_CHECK_X_LIB(capplet, capplet_widget_changes_are_immediate,
2106                    [AC_DEFINE(HAVE_CRAPPLET_IMMEDIATE)], [true],
2107                    $ac_gnome_config_libs)
2108   fi
2109
2110
2111   GNOME_DATADIR=""
2112   if test "$have_gnome" = yes -a "$have_gtk" = yes; then
2113     if test -n "$pkg_config"; then
2114       if test "$have_gtk2" = yes; then
2115         GNOME_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
2116       else
2117         GNOME_DATADIR=`$pkg_config --variable=prefix gtk+`
2118       fi
2119     else
2120       GNOME_DATADIR=`$gtk_config --prefix`
2121     fi
2122     GNOME_DATADIR="$GNOME_DATADIR/share"
2123   fi
2124
2125   # .desktop files go in different places in Gnome 1.x and Gnome 2.x...
2126   if test "$have_gtk2" = yes; then
2127     GNOME_PANELDIR='$(GNOME_PANELDIR2)'
2128   else
2129     GNOME_PANELDIR='$(GNOME_PANELDIR1)'
2130   fi
2131
2132
2133   if test "$have_gtk" = yes; then
2134     INCLUDES="$INCLUDES $ac_gtk_config_cflags"
2135     GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
2136     AC_DEFINE(HAVE_GTK)
2137
2138     if test "$have_gtk2" = yes; then
2139       GTK_EXTRA_OBJS=""
2140     else
2141       GTK_EXTRA_OBJS="\$(GTK_EXTRA_OBJS)"
2142     fi
2143   fi
2144
2145 fi
2146
2147
2148 # Check for the Gnome Help Browser.
2149 #
2150 if test "$have_gnome" = yes; then
2151   AC_CHECK_PROG(have_gnome_help, gnome-help-browser, yes, no)
2152 else
2153   have_gnome_help=no
2154 fi
2155
2156
2157 ###############################################################################
2158 #
2159 #       Check for -lxml
2160 #
2161 ###############################################################################
2162
2163 have_xml=no
2164 with_xml_req=unspecified
2165 xml_halfassed=no
2166 AC_ARG_WITH(xml,
2167 [  --with-xml              The XML toolkit is needed for some parts of
2168                           the Gtk interface.  Without it, the configuration
2169                           interface will be much less featureful.],
2170 [with_xml="$withval"; with_xml_req="$withval"],[with_xml=yes])
2171
2172 # if --with-xml=/directory/ was specified, remember that directory so that
2173 # we can also look for the `xml-config' program in that directory.
2174 case "$with_xml" in
2175   /*)
2176     xml_dir="$with_xml"
2177     ;;
2178   *)
2179     xml_dir=""
2180     ;;
2181 esac
2182
2183 HANDLE_X_PATH_ARG(with_xml, --with-xml, XML)
2184
2185 if test "$with_xml" != yes -a "$with_xml" != no ; then
2186   echo "error: must be yes or no: --with-xml=$with_xml"
2187   exit 1
2188 fi
2189
2190 if test "$with_xml" = yes; then
2191   have_xml=no
2192   have_old_xml=no
2193
2194   # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
2195   # look in /foo/bin/ for for xml-config.
2196   #
2197   xml_path="$PATH"
2198
2199   if test ! -z "$gtk_dir"; then
2200     # canonicalize slashes.
2201     foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
2202     xml_path="$foo:$xml_path"
2203   fi
2204
2205   if test ! -z "$gnome_dir"; then
2206     # canonicalize slashes.
2207     foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
2208     xml_path="$foo:$xml_path"
2209   fi
2210
2211   if test -n "$pkg_config" ; then
2212     #
2213     # the new way...
2214     # run pkg-config based tests.
2215     #
2216     pkgs=""
2217     ok="yes"
2218
2219     # If we have Gtk 2.x, then *only* XML 2.x will work.
2220     # If we have Gtk 1.x, or don't have Gtk at all, then
2221     # either XML 1.x or 2.x will work.
2222
2223     # First check for XML 2.x.
2224     #
2225     pkg_check_version libxml-2.0 2.4.6
2226
2227     # If that didn't work (we don't have XML 2.x) and we *don't* have
2228     # Gtk 2.x, then check to see if we have XML 1.x
2229     #
2230     if test "$ok" = no -a "$have_gtk2" = no; then
2231       ok=yes
2232       pkg_check_version libxml 1.0
2233     fi
2234
2235     have_xml="$ok"
2236
2237     if test "$have_xml" = yes; then
2238       AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
2239                      [ac_cv_xml_config_cflags=`$pkg_config --cflags $pkgs`])
2240       AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
2241                      [ac_cv_xml_config_libs=`$pkg_config --libs $pkgs`])
2242       ac_xml_config_cflags=$ac_cv_xml_config_cflags
2243       ac_xml_config_libs=$ac_cv_xml_config_libs
2244     fi
2245
2246   else
2247     #
2248     # the old way...
2249     # run {xml2,xml}-config based tests.
2250     #
2251
2252     AC_PATH_PROGS(xml_config, xml2-config xml-config,, $xml_path)
2253
2254     # If we found the xml-config program, run it to get flags.
2255     #
2256     if test -n "$xml_config" ; then
2257       AC_CACHE_CHECK([for XML includes], ac_cv_xml_config_cflags,
2258                      [ac_cv_xml_config_cflags=`$xml_config --cflags`])
2259       AC_CACHE_CHECK([for XML libs], ac_cv_xml_config_libs,
2260                      [ac_cv_xml_config_libs=`$xml_config --libs`])
2261       ac_xml_config_cflags=$ac_cv_xml_config_cflags
2262       ac_xml_config_libs=$ac_cv_xml_config_libs
2263     fi
2264
2265     ac_save_xml_CPPFLAGS="$CPPFLAGS"
2266     CPPFLAGS="$CPPFLAGS $ac_xml_config_cflags"
2267
2268     # first try <libxml/parser.h> which is the new way...
2269     #
2270     AC_CHECK_X_HEADER(libxml/xmlIO.h, [have_xml=yes],,
2271                       [#include <libxml/parser.h>])
2272
2273     # if that didn't work, then try just <parser.h> which is the old way...
2274     #
2275     if test "$have_xml" = no; then
2276       AC_CHECK_X_HEADER(xmlIO.h, [have_xml=yes; have_old_xml=yes],,
2277                         [#include <parser.h>])
2278     fi
2279
2280     CPPFLAGS="$ac_save_xml_CPPFLAGS"
2281   fi
2282
2283
2284   have_zlib=no
2285   if test "$have_xml" = yes; then
2286     # we have the XML headers; now make sure zlib is around.
2287     # yes, it's stupid we have to do this too, but there is
2288     # dependency screwage in Gnome.
2289     AC_CHECK_X_LIB(z, zlibVersion, [have_zlib=yes])
2290     if test "$have_zlib" = no; then
2291       xml_halfassed=yes
2292       have_xml=no
2293     fi
2294   fi
2295
2296   if test "$have_xml" = yes; then
2297     # we have the header, now check for the library
2298     have_xml=no
2299     xml_halfassed=yes
2300     AC_CHECK_X_LIB(c, xmlParseChunk,
2301                    [have_xml=yes
2302                     xml_halfassed=no
2303                     XML_LIBS="$ac_xml_config_libs"
2304                     AC_DEFINE(HAVE_XML)],
2305                    [true],
2306                    $ac_xml_config_libs)
2307   fi
2308
2309   if test "$have_xml" = yes; then
2310     INCLUDES="$INCLUDES $ac_xml_config_cflags"
2311     GTK_LIBS="$GTK_LIBS $ac_xml_config_libs"
2312     AC_DEFINE(HAVE_XML)
2313     if test "$have_old_xml" = yes; then
2314       AC_DEFINE(HAVE_OLD_XML_HEADERS)
2315     fi
2316   fi
2317
2318 fi
2319
2320
2321 ###############################################################################
2322 #
2323 #       Checking whether Motif is really Lesstif.
2324 #
2325 ###############################################################################
2326
2327 have_lesstif=no
2328 if test "$have_motif" = yes ; then
2329   AC_CACHE_CHECK([whether Motif is really LessTif], 
2330                  ac_cv_have_lesstif,
2331                  [AC_TRY_X_COMPILE([#include <Xm/Xm.h>],
2332                                    [long vers = LesstifVersion;],
2333                                    [ac_cv_have_lesstif=yes],
2334                                    [ac_cv_have_lesstif=no])])
2335   have_lesstif=$ac_cv_have_lesstif
2336 fi
2337
2338
2339 lesstif_version=unknown
2340 lesstif_version_string=unknown
2341
2342 if test "$have_lesstif" = yes ; then
2343   ltv=unknown
2344   echo unknown > conftest-lt
2345   AC_CACHE_CHECK([LessTif version number],
2346                  ac_cv_lesstif_version_string,
2347       [AC_TRY_X_RUN([#include <stdio.h>
2348                      #include <Xm/Xm.h>
2349                      int main() {
2350                        FILE *f = fopen("conftest-lt", "w");
2351                        if (!f) exit(1);
2352                        fprintf(f, "%d %d.%d\n", LesstifVersion,
2353                           LESSTIF_VERSION, LESSTIF_REVISION);
2354                        fclose(f);
2355                        exit(0);
2356                      }],
2357                     [ltv=`cat conftest-lt`
2358                      ac_cv_lesstif_version=`echo $ltv | sed 's/ .*//'`
2359                      ac_cv_lesstif_version_string=`echo $ltv | sed 's/.* //'`],
2360                     [ac_cv_lesstif_version=unknown
2361                      ac_cv_lesstif_version_string=unknown],
2362                     [ac_cv_lesstif_version=unknown
2363                      ac_cv_lesstif_version_string=unknown])])
2364   rm -f conftest-lt
2365   lesstif_version=$ac_cv_lesstif_version
2366   lesstif_version_string=$ac_cv_lesstif_version_string
2367
2368 fi
2369
2370
2371 if test "$have_motif" = yes ; then
2372   mtv=unknown
2373   echo unknown > conftest-mt
2374   AC_CACHE_CHECK([Motif version number],
2375                  ac_cv_motif_version_string,
2376       [AC_TRY_X_RUN([#include <stdio.h>
2377                      #include <Xm/Xm.h>
2378                      int main() {
2379                        FILE *f = fopen("conftest-mt", "w");
2380                        if (!f) exit(1);
2381                        fprintf(f, "%d %d.%d\n", XmVersion,
2382                           XmVERSION, XmREVISION);
2383                        fclose(f);
2384                        exit(0);
2385                      }],
2386                     [mtv=`cat conftest-mt`
2387                      ac_cv_motif_version=`echo $mtv | sed 's/ .*//'`
2388                      ac_cv_motif_version_string=`echo $mtv | sed 's/.* //'`],
2389                     [ac_cv_motif_version=unknown
2390                      ac_cv_motif_version_string=unknown],
2391                     [ac_cv_motif_version=unknown
2392                      ac_cv_motif_version_string=unknown])])
2393   rm -f conftest-mt
2394   motif_version=$ac_cv_motif_version
2395   motif_version_string=$ac_cv_motif_version_string
2396
2397 fi
2398
2399
2400 ###############################################################################
2401 #
2402 #       Checking whether Motif requires -lXpm.
2403 #
2404 #       If this is Motif 2.x, and we have XPM, then link against XPM as well.
2405 #       The deal is, Motif 2.x requires XPM -- but it's a compilation option
2406 #       of the library whether to build the XPM code into libXm, or whether
2407 #       to rely on an external libXm.  So the only way to tell whether XPM is
2408 #       a link-time requirement is to examine libXm.a, which is very
2409 #       difficult to do in an autoconf script.  So... if it's Motif 2.x, we
2410 #       always link against XPM if the XPM lib exists (and this will be a
2411 #       no-op if libXm happens to already have the XPM code in it.)
2412 #
2413 ###############################################################################
2414
2415 motif_requires_xpm=no
2416 if test "$have_motif" = yes ; then
2417    AC_MSG_CHECKING(whether Motif requires XPM)
2418    if test "$motif_version" = "unknown" || test "$motif_version" -ge 2000
2419    then
2420      motif_requires_xpm=yes
2421      AC_MSG_RESULT(maybe)
2422    else
2423      AC_MSG_RESULT(no)
2424    fi
2425 fi
2426
2427
2428 ###############################################################################
2429 #
2430 #       Checking whether Motif requires -lXp.
2431 #
2432 #       Some versions of Motif (2.1.0, at least) require -lXp, the "X Printing
2433 #       Extension".   Why this extension isn't in -lXext with all the others,
2434 #       I have no idea.
2435 #
2436 ###############################################################################
2437
2438 have_xp_ext=no
2439 if test "$have_motif" = yes ; then
2440    have_xp_ext=no
2441    AC_CHECK_X_LIB(Xp, XpQueryExtension,
2442                   [have_xp_ext=yes; MOTIF_LIBS="$MOTIF_LIBS -lXp"],
2443                   [true], -lX11 -lXext -lm)
2444 fi
2445
2446
2447 ###############################################################################
2448 #
2449 #       Checking whether Motif requires -lXintl (for _Xsetlocale.)
2450 #
2451 ###############################################################################
2452
2453 have_xintl=no
2454 if test "$have_motif" = yes ; then
2455   AC_CHECK_X_LIB(Xintl, _Xsetlocale, [have_xintl=yes], [have_xintl=no],
2456                  -lX11 -lXext -lm)
2457   if test "$have_xintl" = yes; then
2458     MOTIF_LIBS="$MOTIF_LIBS -lXintl"
2459   fi
2460 fi
2461
2462
2463 ###############################################################################
2464 #
2465 #       Check for -lGL or -lMesaGL.
2466 #
2467 ###############################################################################
2468
2469 have_gl=no
2470 ac_have_mesa_gl=no
2471 with_gl_req=unspecified
2472 gl_halfassed=no
2473 AC_ARG_WITH(gl,[
2474 Graphics options:
2475
2476   --with-gl               Build those demos which depend on OpenGL.],
2477   [with_gl="$withval"; with_gl_req="$withval"],[with_gl=yes])
2478
2479 HANDLE_X_PATH_ARG(with_gl, --with-gl, GL)
2480
2481 ac_mesagl_version=unknown
2482 ac_mesagl_version_string=unknown
2483
2484 if test "$with_gl" = yes; then
2485   AC_CHECK_X_HEADER(GL/gl.h, have_gl=yes, have_gl=no)
2486   if test "$have_gl" = yes ; then
2487     AC_CHECK_X_HEADER(GL/glx.h, have_gl=yes, have_gl=no,
2488                       [#include <GL/gl.h>])
2489   fi
2490
2491   # If we have the headers, try and figure out which vendor it's from.
2492   #
2493   if test "$have_gl" = yes ; then
2494
2495     # We need to know whether it's MesaGL so that we know which libraries
2496     # to link against.
2497     #
2498     AC_CACHE_CHECK([whether GL is really MesaGL], ac_cv_have_mesa_gl,
2499       [ac_cv_have_mesa_gl=no
2500        AC_EGREP_X_HEADER(Mesa|MESA, GL/glx.h, [ac_cv_have_mesa_gl=yes])
2501       ])
2502     ac_have_mesa_gl=$ac_cv_have_mesa_gl
2503  
2504
2505     gl_lib_1=""
2506     GL_LIBS=""
2507
2508
2509     # Some versions of MesaGL are compiled to require -lpthread.
2510     # So if the Mesa headers exist, and -lpthread exists, then always
2511     # link -lpthread after the Mesa libs (be they named -lGL or -lMesaGL.)
2512     #
2513     if test "$ac_have_mesa_gl" = yes; then
2514       AC_CHECK_LIB(pthread, pthread_create, [GL_LIBS="-lpthread"], [],)
2515     fi
2516
2517
2518     # If we have Mesa headers, check to see if we can link against -lMesaGL.
2519     # If we don't have Mesa headers, or we don't have -lMesaGL, try -lGL.
2520     # Else, warn that GL is busted.  (We have the headers, but no libs.)
2521     #
2522
2523     if test "$ac_have_mesa_gl" = yes ; then
2524       AC_CHECK_X_LIB(MesaGL, glXCreateContext, 
2525                      [gl_lib_1="MesaGL"
2526                       GL_LIBS="-lMesaGL -lMesaGLU $GL_LIBS"],
2527                      [], -lMesaGLU $GL_LIBS -lX11 -lXext -lm)
2528     fi
2529
2530     if test "$gl_lib_1" = "" ; then
2531       AC_CHECK_X_LIB(GL, glXCreateContext, 
2532                      [gl_lib_1="GL"
2533                       GL_LIBS="-lGL -lGLU $GL_LIBS"],
2534                      [], -lGLU $GL_LIBS -lX11 -lXext -lm)
2535     fi
2536
2537     if test "$gl_lib_1" = "" ; then
2538       # we have headers, but no libs -- bail.
2539       have_gl=no
2540       ac_have_mesa_gl=no
2541       gl_halfassed=yes
2542     else
2543       # linking works -- we can build the GL hacks.
2544       AC_DEFINE(HAVE_GL)
2545       if test "$ac_have_mesa_gl" = yes ; then
2546         AC_DEFINE(HAVE_MESA_GL)
2547       fi
2548     fi
2549   fi
2550
2551
2552   # Now that we know we have GL headers and libs, do some more GL testing.
2553   #
2554
2555   if test "$have_gl" = yes ; then
2556     # If it's MesaGL, we'd like to issue a warning if the version number
2557     # is less than or equal to 2.6, because that version had a security bug.
2558     #
2559     if test "$ac_have_mesa_gl" = yes; then
2560
2561       AC_CACHE_CHECK([MesaGL version number], ac_cv_mesagl_version_string,
2562         [cat > conftest.$ac_ext <<EOF
2563 #line __oline__ "configure"
2564 #include "confdefs.h"
2565 #include <GL/gl.h>
2566 #ifndef MESA_MAJOR_VERSION
2567 # include <GL/xmesa.h>
2568 # define MESA_MAJOR_VERSION XMESA_MAJOR_VERSION
2569 # define MESA_MINOR_VERSION XMESA_MINOR_VERSION
2570 #endif
2571 configure: MESA_MAJOR_VERSION MESA_MINOR_VERSION
2572 EOF
2573
2574          ac_save_CPPFLAGS="$CPPFLAGS"
2575          if test \! -z "$includedir" ; then 
2576            CPPFLAGS="$CPPFLAGS -I$includedir"
2577          fi
2578          CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2579
2580          mglv=`(eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | grep configure:`
2581
2582          # M4 sucks!!
2583          changequote(X,Y)
2584           mglv=`echo "$mglv" | sed -n \
2585              's/^configure:.*\([0-9][0-9]*\).*\([0-9][0-9]*\).*$/\1.\2/p'`
2586          changequote([,])
2587
2588          rm -f conftest.$ac_ext
2589
2590          CPPFLAGS="$ac_save_CPPFLAGS"
2591
2592          if test "$mglv" = ""; then
2593            ac_mesagl_version=unknown
2594            ac_mesagl_version_string=unknown
2595          else
2596            ac_mesagl_version_string=$mglv
2597            maj=`echo $mglv | sed -n 's/\..*//p'`
2598            min=`echo $mglv | sed -n 's/.*\.//p'`
2599            ac_mesagl_version=`echo "$maj * 1000 + $min" | bc`
2600            if test -z "$ac_mesagl_version"; then
2601              ac_mesagl_version=unknown
2602              ac_mesagl_version_string=unknown
2603            fi
2604          fi
2605          ac_cv_mesagl_version=$ac_mesagl_version
2606          ac_cv_mesagl_version_string=$ac_mesagl_version_string
2607       ])
2608       ac_mesagl_version=$ac_cv_mesagl_version
2609       ac_mesagl_version_string=$ac_cv_mesagl_version_string
2610     fi
2611
2612
2613     # Check for OpenGL 1.1 features.
2614     #
2615     AC_CHECK_X_LIB($gl_lib_1, glBindTexture, [AC_DEFINE(HAVE_GLBINDTEXTURE)],
2616                    [true], $GL_LIBS -lX11 -lXext -lm)
2617   fi
2618
2619 elif test "$with_gl" != no; then
2620   echo "error: must be yes or no: --with-gl=$with_gl"
2621   exit 1
2622 fi
2623
2624
2625 ###############################################################################
2626 #
2627 #       Check for -lgle.
2628 #
2629 ###############################################################################
2630
2631 have_gle=no
2632 with_gle_req=unspecified
2633 gle_halfassed=no
2634 AC_ARG_WITH(gle,
2635 [  --with-gle              Build those demos which depend on GLE
2636                           (the OpenGL "extrusion" library.)],
2637   [with_gle="$withval"; with_gle_req="$withval"],[with_gle=yes])
2638
2639 HANDLE_X_PATH_ARG(with_gle, --with-gle, GLE)
2640
2641 GLE_LIBS=""
2642
2643 if test "$with_gle" = yes; then
2644
2645   AC_CHECK_X_HEADER(GL/gle.h, have_gle3=yes, have_gle3=no,
2646                     [#include <GL/gl.h>])
2647   if test "$have_gle3" = yes ; then
2648     have_gle=yes;
2649   else
2650     AC_CHECK_X_HEADER(GL/gutil.h, have_gle=yes, have_gle=no,
2651                     [#include <GL/gl.h>])
2652     if test "$have_gle" = yes ; then
2653       AC_CHECK_X_HEADER(GL/tube.h, have_gle=yes, have_gle=no,
2654                         [#include <GL/gl.h>])
2655     fi
2656   fi
2657
2658   if test "$have_gle" = yes ; then
2659     have_gle=no
2660     gle_halfassed=yes
2661     AC_CHECK_X_LIB(gle, gleCreateGC, 
2662                    [have_gle=yes; gle_halfassed=no; GLE_LIBS="-lgle"],
2663                    [], $GL_LIBS -lX11 -lXext -lm)
2664   fi
2665   if test "$have_gle" = yes ; then
2666     have_gle=no
2667     gle_halfassed=yes
2668
2669     # sometimes the libmatrix stuff is included in libgle.  look there first.
2670 #
2671 # I don't get it.  For some reason, this test passes on SGI, as if
2672 # uview_direction_d() was in libgle -- but it's not, it's in libmatrix.
2673 # Yet the link is succeeding.  Why???
2674 #
2675 #    AC_CHECK_X_LIB(gle, uview_direction_d, 
2676 #                   [have_gle=yes; gle_halfassed=no],
2677 #                   [], $GL_LIBS -lX11 -lXext -lm)
2678
2679     # As of GLE 3 this is in libgle, and has changed name to uview_direction!
2680     # *sigh*
2681     if test "$have_gle3" = yes ; then
2682       AC_CHECK_X_LIB(gle, uview_direction, 
2683                      [have_gle=yes; gle_halfassed=no],
2684                     [], $GL_LIBS -lX11 -lXext -lm)
2685     fi
2686     # if it wasn't in libgle, then look in libmatrix.
2687     if test "$have_gle" = no ; then
2688       AC_CHECK_X_LIB(matrix, uview_direction_d, 
2689                      [have_gle=yes; gle_halfassed=no;
2690                       GLE_LIBS="$GLE_LIBS -lmatrix"],
2691                     [], $GL_LIBS -lX11 -lXext -lm)
2692     fi
2693   fi
2694
2695   if test "$have_gle" = yes ; then
2696     AC_DEFINE(HAVE_GLE)
2697     if test "$have_gle3" = yes ; then
2698       AC_DEFINE(HAVE_GLE3)
2699     fi
2700   fi
2701
2702 elif test "$with_gle" != no; then
2703   echo "error: must be yes or no: --with-gle=$with_gle"
2704   exit 1
2705
2706 fi
2707
2708
2709
2710 ###############################################################################
2711 #
2712 #       Check for -lXpm.
2713 #
2714 ###############################################################################
2715
2716 have_xpm=no
2717 with_xpm_req=unspecified
2718 AC_ARG_WITH(xpm,
2719 [  --with-xpm              Include support for XPM files in some demos.
2720                           (Not needed if Pixbuf is used.)],
2721   [with_xpm="$withval"; with_xpm_req="$withval"],[with_xpm=yes])
2722
2723 HANDLE_X_PATH_ARG(with_xpm, --with-xpm, XPM)
2724
2725 if test "$with_xpm" = yes; then
2726   AC_CHECK_X_HEADER(X11/xpm.h,
2727                    [have_xpm=yes
2728                     AC_DEFINE(HAVE_XPM)
2729                     XPM_LIBS="-lXpm"],,
2730                     [#include <X11/Xlib.h>])
2731 elif test "$with_xpm" != no; then
2732   echo "error: must be yes or no: --with-xpm=$with_xpm"
2733   exit 1
2734 fi
2735
2736 # See comment near $motif_requires_xpm, above.
2737 # Need to do this here, after both Motif and XPM have been checked for.
2738 #
2739 if test "$have_motif" = yes -a "$have_xpm" = yes ; then
2740   if test "$motif_requires_xpm" = yes ; then
2741     MOTIF_LIBS="$MOTIF_LIBS $XPM_LIBS"
2742   fi
2743 fi
2744
2745
2746 ###############################################################################
2747 #
2748 #       Check for -lgdk_pixbuf.
2749 #
2750 ###############################################################################
2751
2752 have_gdk_pixbuf=no
2753 with_gdk_pixbuf_req=unspecified
2754 AC_ARG_WITH(pixbuf,
2755 [  --with-pixbuf           Include support for the GDK-Pixbuf library in some
2756                           demos, which will make it possible for them to read
2757                           GIF, JPEG, and PNG files as well.  (The path here is
2758                           ignored if GTK 2.x is being used.)],
2759   [with_gdk_pixbuf="$withval"; with_gdk_pixbuf_req="$withval"],
2760   [with_gdk_pixbuf=yes])
2761
2762 # if --with-pixbuf=/directory/ was specified, remember that directory so that
2763 # we can also look for the `gdk-pixbuf-config' program in that directory.
2764 case "$with_gdk_pixbuf" in
2765   /*)
2766     gdk_pixbuf_dir="$with_gdk_pixbuf"
2767     ;;
2768   *)
2769     gdk_pixbuf_dir=""
2770     ;;
2771 esac
2772
2773 HANDLE_X_PATH_ARG(with_gdk_pixbuf, --with-pixbuf, GDK_PIXBUF)
2774
2775 if test "$with_gdk_pixbuf" != yes -a "$with_gdk_pixbuf" != no ; then
2776   echo "error: must be yes or no: --with-pixbuf=$with_gdk_pixbuf"
2777   exit 1
2778 fi
2779
2780 if test "$with_gdk_pixbuf" = yes; then
2781   have_gdk_pixbuf=no
2782   have_gdk_pixbuf2=no
2783
2784   if test -n "$pkg_config" ; then
2785     #
2786     # the new way...
2787     # run pkg-config based tests.
2788     #
2789     pkgs=''
2790     ok="yes"
2791
2792     # If we have Gtk 2.x, then *only* gdk-pixbuf 2.x will work.
2793     # If we have Gtk 1.x, then *only* gdk-pixbuf 1.x will work.
2794     # If we don't have Gtk at all, then either will work.
2795
2796     if test "$have_gtk" = no -o "$have_gtk2" = yes; then
2797       #
2798       # we don't have Gtk; or we have Gtk 2.x.  Check for pixbuf 2.x.
2799       #
2800       pkg_check_version gdk-pixbuf-2.0      2.0.0
2801       pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
2802       have_gdk_pixbuf="$ok"
2803       have_gdk_pixbuf2="$ok"
2804     fi
2805
2806     if test "$have_gtk" = no -o "$have_gtk2" = no; then
2807       #
2808       # we don't have Gtk; or we have Gtk 1.x.
2809       # If we don't have pixbuf 2.x, then check for pixbuf 1.x.
2810       #
2811       if test "$have_gdk_pixbuf2" = no; then
2812         pkgs=''
2813         ok="yes"
2814         pkg_check_version gdk-pixbuf      0.0
2815         pkg_check_version gdk-pixbuf-xlib 0.0
2816         have_gdk_pixbuf="$ok"
2817       fi
2818     fi
2819
2820     if test "$have_gdk_pixbuf" = yes; then
2821       AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
2822                  [ac_cv_gdk_pixbuf_config_cflags=`$pkg_config --cflags $pkgs`])
2823       AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
2824                  [ac_cv_gdk_pixbuf_config_libs=`$pkg_config --libs $pkgs`])
2825     fi
2826     ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
2827     ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
2828   fi
2829
2830
2831   if test "$have_gdk_pixbuf" = no; then
2832     #
2833     # the old way...
2834     # run gdk-pixbuf-config based tests.
2835     # note that we can't assume that the existence of "pkg-config" means
2836     # that we don't have to look for gdk-pixbuf-config -- in Gnome 1.4,
2837     # pkg-config exists, but doesn't know about pixbuf.
2838     #
2839
2840     # if the user specified --with-gtk=/foo/ or --with-gnome=/foo/ then
2841     # look in /foo/bin/ for for gdk-pixbuf-config.
2842     #
2843     gdk_pixbuf_path="$PATH"
2844
2845     if test ! -z "$gtk_dir"; then
2846       # canonicalize slashes.
2847       foo=`echo "${gtk_dir}/bin" | sed 's@//*@/@g'`
2848       gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
2849     fi
2850
2851     if test ! -z "$gnome_dir"; then
2852       # canonicalize slashes.
2853       foo=`echo "${gnome_dir}/bin" | sed 's@//*@/@g'`
2854       gdk_pixbuf_path="$foo:$gdk_pixbuf_path"
2855     fi
2856
2857     AC_PATH_PROGS(gdk_pixbuf_config, gdk-pixbuf-config,, $gdk_pixbuf_path)
2858
2859     # If we found the gdk-pixbuf-config program, run it to get flags.
2860     #
2861     if test -n "$gdk_pixbuf_config" ; then
2862       AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
2863                 [ac_cv_gdk_pixbuf_config_cflags=`$gdk_pixbuf_config --cflags`])
2864       AC_CACHE_CHECK([for gdk-pixbuf libs], ac_cv_gdk_pixbuf_config_libs,
2865                 [ac_cv_gdk_pixbuf_config_libs=`$gdk_pixbuf_config --libs`])
2866
2867       # note that "gdk-pixbuf-config --libs" produces a link line including
2868       # -lgdk_pixbuf, but there's no way to get it to produce one that also
2869       # includes -lgdk_pixbuf_xlib.  Since we don't know *exactly* what the
2870       # name of the library will be, construct it with sed...
2871       # M4 sucks!!
2872       changequote(X,Y)
2873       ac_cv_gdk_pixbuf_config_libs=`echo $ac_cv_gdk_pixbuf_config_libs | \
2874        sed 's@ \(-lgdk_pixbuf\([-_a-zA-Z0-9.]*\)\) @ \1 -lgdk_pixbuf_xlib\2 @'`
2875       changequote([,])
2876
2877       ac_gdk_pixbuf_config_cflags=$ac_cv_gdk_pixbuf_config_cflags
2878       ac_gdk_pixbuf_config_libs=$ac_cv_gdk_pixbuf_config_libs
2879     fi
2880   fi
2881
2882   ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
2883   CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
2884
2885   if test "$have_gdk_pixbuf" = no; then
2886     #
2887     # we appear to have pixbuf; check for headers/libs to be sure.
2888     #
2889
2890     have_gdk_pixbuf=no
2891
2892     # check for header A...
2893     AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
2894
2895     # if that worked, check for header B...
2896     if test "$have_gdk_pixbuf" = yes; then
2897       have_gdk_pixbuf=no
2898       gdk_pixbuf_halfassed=yes
2899       AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h,
2900                         [have_gdk_pixbuf=yes
2901                          gdk_pixbuf_halfassed=no])
2902
2903       # yay, it has a new name in Gtk 2.x...
2904       if test "$have_gdk_pixbuf" = no; then
2905         have_gdk_pixbuf=no
2906         gdk_pixbuf_halfassed=yes
2907         AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h,
2908                           [have_gdk_pixbuf=yes
2909                            gdk_pixbuf_halfassed=no])
2910       fi
2911     fi
2912   fi
2913
2914   CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
2915
2916   if test "$have_gdk_pixbuf" = yes; then
2917     # we have the headers, now check for the libraries
2918     have_gdk_pixbuf=no
2919     gdk_pixbuf_halfassed=yes
2920
2921     # library A...
2922     AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
2923                    $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
2924     # library B...
2925     if test "$have_gdk_pixbuf" = yes; then
2926       have_gdk_pixbuf=no
2927       AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
2928                      [have_gdk_pixbuf=yes
2929                       gdk_pixbuf_halfassed=no],,
2930                      $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
2931     fi
2932   fi
2933
2934   if test "$have_gdk_pixbuf" = yes; then
2935     INCLUDES="$INCLUDES $ac_gdk_pixbuf_config_cflags"
2936     XPM_LIBS="$ac_gdk_pixbuf_config_libs"
2937     AC_DEFINE(HAVE_GDK_PIXBUF)
2938   else
2939     have_gdk_pixbuf2=no
2940   fi
2941 fi
2942
2943
2944 ###############################################################################
2945 #
2946 #       Check for -ljpeg
2947 #
2948 ###############################################################################
2949
2950 have_jpeg=no
2951 with_jpeg_req=unspecified
2952 jpeg_halfassed=no
2953 AC_ARG_WITH(jpeg,
2954 [  --with-jpeg             Include support for the JPEG library in some demos.
2955                           (If this library is available, webcollage will be a
2956                         . lot faster.)],
2957   [with_jpeg="$withval"; with_jpeg_req="$withval"],
2958   [with_jpeg=yes])
2959
2960 HANDLE_X_PATH_ARG(with_jpeg, --with-jpeg, JPEG)
2961
2962 if test "$with_jpeg" != yes -a "$with_jpeg" != no ; then
2963   echo "error: must be yes or no: --with-jpeg=$with_jpeg"
2964   exit 1
2965 fi
2966
2967 if test "$with_jpeg" = yes; then
2968
2969   have_jpeg=no
2970   AC_CHECK_X_HEADER(jpeglib.h, [have_jpeg=yes])
2971
2972   if test "$have_jpeg" = yes; then
2973     # we have the header, now check for the library
2974     have_jpeg=no
2975     jpeg_halfassed=yes
2976     AC_CHECK_X_LIB(jpeg, jpeg_start_compress,
2977                    [have_jpeg=yes
2978                     jpeg_halfassed=no
2979                     JPEG_LIBS="-ljpeg"
2980                     AC_DEFINE(HAVE_JPEGLIB)])
2981   fi
2982 fi
2983
2984
2985 ###############################################################################
2986 #
2987 #       Check for the XSHM server extension.
2988 #
2989 ###############################################################################
2990
2991 have_xshm=no
2992 with_xshm_req=unspecified
2993 AC_ARG_WITH(xshm-ext,
2994 [  --with-xshm-ext         Include support for the Shared Memory extension.],
2995   [with_xshm="$withval"; with_xshm_req="$withval"],[with_xshm=yes])
2996
2997 HANDLE_X_PATH_ARG(with_xshm, --with-xshm-ext, XSHM)
2998
2999 if test "$with_xshm" = yes; then
3000
3001   # first check for Xshm.h.
3002   AC_CHECK_X_HEADER(X11/extensions/XShm.h, [have_xshm=yes],,
3003                     [#include <X11/Xlib.h>])
3004
3005   # if that succeeded, then check for sys/ipc.h.
3006   if test "$have_xshm" = yes; then
3007     have_xshm=no
3008     AC_CHECK_X_HEADER(sys/ipc.h, [have_xshm=yes])
3009   fi
3010
3011   # if that succeeded, then check for sys/shm.h.
3012   if test "$have_xshm" = yes; then
3013     have_xshm=no
3014     AC_CHECK_X_HEADER(sys/shm.h, [have_xshm=yes])
3015   fi
3016
3017   # AIX is pathological, as usual: apparently it's normal for the Xshm headers
3018   # to exist, but the library code to not exist.  And even better, the library
3019   # code is in its own library: libXextSam.a.  So, if we're on AIX, and that
3020   # lib doesn't exist, give up.  (This lib gets added to X_EXTRA_LIBS, and
3021   # that's not quite right, but close enough.)
3022   #
3023   case "$host" in
3024     *-aix*)
3025       if [ `uname -v` -eq 3 ]; then
3026         have_xshm=no
3027         AC_CHECK_X_LIB(XextSam, XShmQueryExtension,
3028                        [have_xshm=yes; X_EXTRA_LIBS="$X_EXTRA_LIBS -lXextSam"],
3029                        [true], -lX11 -lXext -lm)
3030       fi
3031     ;;
3032   esac
3033
3034   # if that succeeded, then we've really got it.
3035   if test "$have_xshm" = yes; then
3036     AC_DEFINE(HAVE_XSHM_EXTENSION)
3037   fi
3038
3039 elif test "$with_xshm" != no; then
3040   echo "error: must be yes or no: --with-xshm-ext=$with_xshm"
3041   exit 1
3042 fi
3043
3044
3045 ###############################################################################
3046 #
3047 #       Check for the DOUBLE-BUFFER server extension.
3048 #
3049 ###############################################################################
3050
3051 have_xdbe=no
3052 with_xdbe_req=unspecified
3053 AC_ARG_WITH(xdbe-ext,
3054 [  --with-xdbe-ext         Include support for the DOUBLE-BUFFER extension.],
3055   [with_xdbe="$withval"; with_xdbe_req="$withval"],[with_xdbe=yes])
3056
3057 HANDLE_X_PATH_ARG(with_xdbe, --with-xdbe-ext, DOUBLE-BUFFER)
3058
3059 if test "$with_xdbe" = yes; then
3060
3061   AC_CHECK_X_HEADER(X11/extensions/Xdbe.h, [have_xdbe=yes],,
3062                     [#include <X11/Xlib.h>])
3063   if test "$have_xdbe" = yes; then
3064     AC_DEFINE(HAVE_DOUBLE_BUFFER_EXTENSION)    
3065   fi
3066
3067 elif test "$with_xdbe" != no; then
3068   echo "error: must be yes or no: --with-xdbe-ext=$with_xshm"
3069   exit 1
3070 fi
3071
3072
3073 ###############################################################################
3074 #
3075 #       Check for the SGI XReadDisplay server extension.
3076 #
3077 #       Note: this has to be down here, rather than up with the other server
3078 #       extension tests, so that the output of `configure --help' is in the
3079 #       right order.  Arrgh!
3080 #
3081 ###############################################################################
3082
3083 have_readdisplay=no
3084 with_readdisplay_req=unspecified
3085 AC_ARG_WITH(readdisplay,
3086 [  --with-readdisplay      Include support for the XReadDisplay extension.],
3087   [with_readdisplay="$withval"; with_readdisplay_req="$withval"],
3088   [with_readdisplay=yes])
3089
3090 HANDLE_X_PATH_ARG(with_readdisplay, --with-readdisplay, XReadDisplay)
3091
3092 if test "$with_readdisplay" = yes; then
3093   AC_CHECK_X_HEADER(X11/extensions/readdisplay.h,
3094                     AC_DEFINE(HAVE_READ_DISPLAY_EXTENSION),,
3095                     [#include <X11/Xlib.h>])
3096 elif test "$with_readdisplay" != no; then
3097   echo "error: must be yes or no: --with-readdisplay=$with_readdisplay"
3098   exit 1
3099 fi
3100
3101
3102 ###############################################################################
3103 #
3104 #       Check for a program to generate random text.
3105 #
3106 #       Zippy is funnier than the idiocy generally spat out by `fortune',
3107 #       so first see if "fortune zippy" works.  Else, use plain "fortune".
3108 #
3109 #       We used to dig around in Emacs to look for the "yow" program, but
3110 #       most people who have Emacs also have "fortune zippy", so nevermind.
3111 #
3112 ###############################################################################
3113
3114 with_fortune_req=""
3115 AC_ARG_WITH(fortune,[
3116   --with-fortune=PROGRAM  Some demos are able to run an external program and
3117                           display its text; this names the program to use by
3118                           default (though it can be overridden with X
3119                           resources.)  Default is \"/usr/games/fortune\".],
3120   [with_fortune_req="$withval"; with_fortune="$withval"],[with_fortune=yes])
3121
3122 if test "$with_fortune" = no || test "$with_fortune" = yes ; then
3123   with_fortune=""
3124   with_fortune_req=""
3125 fi
3126
3127 if test -n "$with_fortune_req" ; then
3128   ac_cv_fortune_program=""
3129   case "$with_fortune_req" in
3130     /*)
3131
3132       set dummy $with_fortune_req ; fortune_tmp=$2
3133       AC_MSG_CHECKING([for $fortune_tmp])
3134       if test -x "$fortune_tmp" ; then
3135         AC_MSG_RESULT(yes)
3136       else
3137         AC_MSG_RESULT(no)
3138         with_fortune=""
3139       fi
3140     ;;
3141     *)
3142       set dummy $with_fortune_req ; fortune_tmp=$2
3143       # don't cache
3144       unset ac_cv_path_fortune_tmp
3145       AC_PATH_PROG(fortune_tmp, $fortune_tmp, [])
3146       if test -z "$fortune_tmp" ; then
3147         with_fortune=""
3148       fi
3149     ;;
3150   esac
3151   ac_cv_fortune_program="$with_fortune"
3152
3153 elif test -n "$ac_cv_fortune_program"; then
3154   AC_MSG_RESULT([checking for fortune... (cached) $ac_cv_fortune_program])
3155 fi
3156
3157 unset ac_cv_path_fortune_tmp
3158 unset fortune_tmp
3159
3160 if test -z "$ac_cv_fortune_program" ; then
3161
3162   # first look for fortune in /usr/games/ (and use absolute path)
3163   AC_PATH_PROGS(fortune_tmp, fortune,, "/usr/games")
3164
3165   # if it's not there, look on $PATH (and don't use absolute path)
3166   if test -z "$fortune_tmp" ; then
3167      AC_CHECK_PROGS(fortune_tmp, fortune)
3168   fi
3169
3170   # if we didn't find anything, then just assume /usr/games/
3171   if test -z "$fortune_tmp" ; then
3172      fortune_tmp="/usr/games/fortune"
3173   fi
3174
3175   ac_cv_fortune_program="$fortune_tmp"
3176
3177   # now check to see whether "fortune zippy" works.
3178   #
3179   fortune_tmp="$fortune_tmp zippy"
3180   AC_MSG_CHECKING([for zippy quotes])
3181   if ( $fortune_tmp >/dev/null 2>&1 ); then
3182     ac_cv_fortune_program="$fortune_tmp"
3183     AC_MSG_RESULT($fortune_tmp)
3184   else
3185     AC_MSG_RESULT(no)
3186   fi
3187
3188 fi
3189
3190 unset ac_cv_path_fortune_tmp
3191 unset fortune_tmp
3192
3193 AC_DEFINE_UNQUOTED(FORTUNE_PROGRAM, "$ac_cv_fortune_program")
3194
3195
3196 ###############################################################################
3197 #
3198 #       Check whether it's ok to install some hacks as setuid (e.g., "sonar")
3199 #       This should be safe, but let's give people the option.
3200 #
3201 ###############################################################################
3202
3203 setuid_hacks_default=no
3204 setuid_hacks="$setuid_hacks_default"
3205 AC_ARG_WITH(setuid-hacks,
3206 [  --with-setuid-hacks     Allow some demos to be installed \`setuid root'
3207                           (which is needed in order to ping other hosts.)
3208 ],
3209   [setuid_hacks="$withval"], [setuid_hacks="$setuid_hacks_default"])
3210
3211 HANDLE_X_PATH_ARG(setuid_hacks, --with-setuid-hacks, setuid hacks)
3212
3213 if test "$setuid_hacks" = yes; then
3214   true
3215 elif test "$setuid_hacks" != no; then
3216   echo "error: must be yes or no: --with-setuid-hacks=$setuid_hacks"
3217   exit 1
3218 fi
3219
3220
3221 ###############################################################################
3222 #
3223 #       Done testing.  Now, set up the various -I and -L variables,
3224 #       and decide which GUI program to build by default.
3225 #
3226 ###############################################################################
3227
3228 DEPEND=makedepend
3229 DEPEND_FLAGS=
3230 DEPEND_DEFINES=
3231
3232
3233 if test \! -z "$includedir" ; then 
3234   INCLUDES="$INCLUDES -I$includedir"
3235 fi
3236
3237 if test \! -z "$libdir" ; then
3238   LDFLAGS="$LDFLAGS -L$libdir"
3239 fi
3240
3241
3242 PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
3243 ALL_DEMO_PROGRAMS=
3244 if test "$have_motif" = yes; then
3245   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Xm
3246   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3247 fi
3248 if test "$have_gtk" = yes; then
3249   PREFERRED_DEMO_PROGRAM=xscreensaver-demo-Gtk
3250   ALL_DEMO_PROGRAMS="$PREFERRED_DEMO_PROGRAM $ALL_DEMO_PROGRAMS"
3251 fi
3252
3253
3254 if test "$have_kerberos" = yes; then
3255   PASSWD_SRCS="$PASSWD_SRCS \$(KERBEROS_SRCS)"
3256   PASSWD_OBJS="$PASSWD_OBJS \$(KERBEROS_OBJS)"
3257 fi
3258 if test "$have_pam" = yes; then
3259   PASSWD_SRCS="$PASSWD_SRCS \$(PAM_SRCS)"
3260   PASSWD_OBJS="$PASSWD_OBJS \$(PAM_OBJS)"
3261   INSTALL_PAM="install-pam"
3262 fi
3263   PASSWD_SRCS="$PASSWD_SRCS \$(PWENT_SRCS)"
3264   PASSWD_OBJS="$PASSWD_OBJS \$(PWENT_OBJS)"
3265
3266
3267 if test "$enable_locking" = yes; then
3268   LOCK_SRCS='$(LOCK_SRCS_1) $(PASSWD_SRCS)'
3269   LOCK_OBJS='$(LOCK_OBJS_1) $(PASSWD_OBJS)'
3270 else
3271   LOCK_SRCS='$(NOLOCK_SRCS_1)'
3272   LOCK_OBJS='$(NOLOCK_OBJS_1)'
3273 fi
3274
3275 INSTALL_SETUID='$(INSTALL_PROGRAM) $(SUID_FLAGS)'
3276
3277 if test "$need_setuid" = yes; then
3278   NEED_SETUID=yes
3279 else
3280   NEED_SETUID=no
3281 fi
3282
3283 if test "$setuid_hacks" = yes; then
3284   SETUID_HACKS=yes
3285 else
3286   SETUID_HACKS=no
3287 fi
3288
3289 tab='   '
3290 if test "$have_gl" = yes; then
3291   GL_EXES='$(GL_EXES)'
3292   GL_UTIL_EXES='$(GL_UTIL_EXES)'
3293   GL_MEN='$(GL_MEN)'
3294   GL_KLUDGE="${tab}  "
3295 else
3296   GL_KLUDGE="-${tab}  "
3297 fi
3298
3299 if test "$have_gle" = yes; then
3300   GLE_EXES='$(GLE_EXES)'
3301   GLE_MEN='$(GLE_MEN)'
3302   GLE_KLUDGE="${tab}   "
3303 else
3304   GLE_KLUDGE="-${tab}   "
3305 fi
3306
3307 if test "$have_jpeg" = yes -a "$have_gdk_pixbuf" = yes; then
3308  JPEG_EXES='$(JPEG_EXES)'
3309 fi
3310
3311
3312 # Another substitution in the XScreenSaver.ad.in file:
3313 #
3314 if test "$have_gnome_help" = yes; then
3315   GNOMEHELP_Y=''
3316   GNOMEHELP_N='!    '
3317 else
3318   GNOMEHELP_Y='!    '
3319   GNOMEHELP_N=''
3320 fi
3321
3322
3323 # Now that we know whether we have Gnome, we can decide where the XML
3324 # config files get installed.
3325 #
3326 if test -z "$HACK_CONF_DIR" ; then
3327   if test -n "$GNOME_DATADIR" ; then
3328     HACK_CONF_DIR='${GNOME_DATADIR}/control-center/screensavers'
3329   else
3330     HACK_CONF_DIR='${prefix}/lib/xscreensaver/config'
3331   fi
3332 fi
3333
3334
3335
3336 # After computing $HACK_CONF_DIR, make sure $GLADE_DATADIR has a value
3337 # so that we know where to install the Gtk pixmaps.
3338 #
3339 # It should usually be "/usr/share/pixmaps/", but we can't just use
3340 # "$(prefix)/share/pixmaps" because that would usually result in
3341 # "/usr/X11R6/share/pixmaps/", which is wrong.  It needs to be the
3342 # Gnome/Gtk prefix, not the overall prefix.
3343 #
3344 if test -n "$GNOME_DATADIR" ; then
3345   GLADE_DATADIR='$(GNOME_DATADIR)/xscreensaver'
3346 elif test "$have_gtk" = yes; then
3347   if test -n "$pkg_config"; then
3348     if test "$have_gtk2" = yes; then
3349       GLADE_DATADIR=`$pkg_config --variable=prefix gtk+-2.0`
3350     else
3351       GLADE_DATADIR=`$pkg_config --variable=prefix gtk+`
3352     fi
3353   else
3354     GLADE_DATADIR=`$gtk_config --prefix`
3355   fi
3356   GLADE_DATADIR="$GLADE_DATADIR/share/xscreensaver"
3357 else
3358   GLADE_DATADIR=''
3359 fi
3360
3361
3362 # canonicalize slashes.
3363 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
3364
3365
3366
3367 ###############################################################################
3368 #
3369 #       Perform substitutions and write Makefiles.
3370 #
3371 ###############################################################################
3372
3373 AC_SUBST(INCLUDES)
3374
3375 AC_SUBST(PREFERRED_DEMO_PROGRAM)
3376 AC_SUBST(ALL_DEMO_PROGRAMS)
3377 AC_SUBST(SAVER_LIBS)
3378 AC_SUBST(MOTIF_LIBS)
3379 AC_SUBST(GTK_LIBS)
3380 AC_SUBST(XML_LIBS)
3381 AC_SUBST(JPEG_LIBS)
3382 AC_SUBST(HACK_LIBS)
3383 AC_SUBST(XPM_LIBS)
3384 AC_SUBST(GL_LIBS)
3385 AC_SUBST(GLE_LIBS)
3386 AC_SUBST(XDPMS_LIBS)
3387 AC_SUBST(PASSWD_LIBS)
3388 AC_SUBST(INSTALL_SETUID)
3389 AC_SUBST(SETUID_HACKS)
3390 AC_SUBST(INSTALL_DIRS)
3391 AC_SUBST(NEED_SETUID)
3392 AC_SUBST(INSTALL_PAM)
3393
3394 AC_SUBST(PASSWD_SRCS)
3395 AC_SUBST(PASSWD_OBJS)
3396 AC_SUBST(XMU_SRCS)
3397 AC_SUBST(XMU_OBJS)
3398 AC_SUBST(XMU_LIBS)
3399 AC_SUBST(SAVER_GL_SRCS)
3400 AC_SUBST(SAVER_GL_OBJS)
3401 AC_SUBST(SAVER_GL_LIBS)
3402 AC_SUBST(LOCK_SRCS)
3403 AC_SUBST(LOCK_OBJS)
3404 AC_SUBST(JPEG_EXES)
3405 AC_SUBST(GL_EXES)
3406 AC_SUBST(GL_UTIL_EXES)
3407 AC_SUBST(GL_MEN)
3408 AC_SUBST(GL_KLUDGE)
3409 AC_SUBST(GLE_EXES)
3410 AC_SUBST(GLE_MEN)
3411 AC_SUBST(GLE_KLUDGE)
3412 AC_SUBST(GNOMEHELP_Y)
3413 AC_SUBST(GNOMEHELP_N)
3414 AC_SUBST(HACKDIR)
3415 AC_SUBST(GNOME_DATADIR)
3416 AC_SUBST(GLADE_DATADIR)
3417 AC_SUBST(GNOME_PANELDIR)
3418 AC_SUBST(HACK_CONF_DIR)
3419 AC_SUBST(GTK_EXTRA_OBJS)
3420
3421 APPDEFAULTS=$ac_x_app_defaults
3422 AC_SUBST(APPDEFAULTS)
3423
3424 AC_SUBST(DEPEND)
3425 AC_SUBST(DEPEND_FLAGS)
3426 AC_SUBST(DEPEND_DEFINES)
3427 AC_SUBST(PERL)
3428
3429 AC_OUTPUT(Makefile
3430           utils/Makefile
3431           driver/Makefile
3432           hacks/Makefile
3433           hacks/glx/Makefile
3434           po/Makefile.in
3435           driver/XScreenSaver.ad
3436           driver/xscreensaver.kss)
3437
3438 ###############################################################################
3439 #
3440 #       Print some warnings at the end.
3441 #
3442 ###############################################################################
3443
3444 warn_prefix_1="    Warning:"
3445 warn_prefix_2="       Note:"
3446 warn_prefix="$warn_prefix_1"
3447
3448 warning=no
3449 warnsep='    #################################################################'
3450
3451 warnpre() {
3452   if test "$warning" = no ; then
3453     echo '' ; echo "$warnsep" ; echo ''
3454     warning=yes
3455   fi
3456 }
3457
3458 warn() {
3459   warnpre
3460   if test "$warning" = long ; then echo '' ; fi
3461   warning=yes
3462   rest="$@"
3463   echo "$warn_prefix $rest"
3464 }
3465
3466 warnL() {
3467   was=$warning
3468   warnpre
3469   warning=yes
3470   if test "$was" != no ; then echo '' ; fi
3471   rest="$@"
3472   echo "$warn_prefix $rest"
3473 }
3474
3475 warn2() {
3476   rest="$@"
3477   echo "             $rest"
3478   warning=long
3479 }
3480
3481 note() {
3482   warn_prefix="$warn_prefix_2"
3483   warn $@
3484   warn_prefix="$warn_prefix_1"
3485 }
3486
3487 noteL() {
3488   warn_prefix="$warn_prefix_2"
3489   warnL $@
3490   warn_prefix="$warn_prefix_1"
3491 }
3492
3493
3494 if test "$with_sgi_req" = yes -a "$have_sgi" = no ; then
3495   warn 'The SGI saver extension was requested, but was not found.'
3496 fi
3497
3498 if test "$with_mit_req" = yes -a "$have_mit" = no ; then
3499   warn 'The MIT saver extension was requested, but was not found.'
3500 fi
3501
3502 if test "$with_xidle_req" = yes -a "$have_xidle" = no ; then
3503   warn 'The XIdle extension was requested, but was not found.'
3504 fi
3505
3506 if test "$with_xshm_req" = yes -a "$have_xshm" = no ; then
3507   warn 'The XSHM extension was requested, but was not found.'
3508 fi
3509
3510 if test "$with_xdbe_req" = yes -a "$have_xdbe" = no ; then
3511   warn 'The DOUBLE-BUFFER extension was requested, but was not found.'
3512 fi
3513
3514 if test "$with_sgivc_req" = yes -a "$have_sgivc" = no ; then
3515   warn 'The SGI-VIDEO-CONTROL extension was requested, but was not found.'
3516 fi
3517
3518 if test "$with_dpms_req" = yes -a "$have_dpms" = no ; then
3519   warn 'The DPMS extension was requested, but was not found.'
3520 fi
3521
3522 if test "$with_xinerama_req" = yes -a "$have_xinerama" = no ; then
3523   warn 'The Xinerama extension was requested, but was not found.'
3524 fi
3525
3526 if test "$with_xf86vmode_req" = yes -a "$have_xf86vmode" = no ; then
3527   warn 'The XF86VMODE extension was requested, but was not found.'
3528 fi
3529
3530 if test "$with_proc_interrupts_req" = yes -a "$have_proc_interrupts" = no; then
3531   warn "Checking of /proc/interrupts was requested, but it's bogus."
3532 fi
3533
3534
3535 if test "$have_motif" = no -a "$have_gtk" = no; then
3536   warnL "Neither Motif nor Gtk seem to be available;"
3537   warn2 "the \`xscreensaver-demo' program requires one of these."
3538
3539 elif test "$with_motif_req" = yes -a "$have_motif" = no ; then
3540   warnL "Use of Motif was requested, but it wasn't found;"
3541   warn2 "Gtk will be used instead."
3542
3543 elif test "$jurassic_gtk" = yes ; then
3544
3545   pref_gtk=1.2
3546
3547   v="$ac_gtk_version_string"
3548   if test "$with_gtk_req" = yes -a "$ac_gtk_version" = "unknown" ; then
3549     warnL "Use of Gtk was requested, but its version number is unknown;"
3550   elif test "$with_gtk_req" = yes ; then
3551     warnL "Use of Gtk was requested, but it is version $v;"
3552   else
3553     warnL "Gtk was found on this system, but it is version $v;"
3554   fi
3555
3556   warn2 "Gtk $pref_gtk or newer is required.  Motif will be used instead."
3557
3558 elif test "$with_gtk_req" = yes -a "$have_gtk" = no ; then
3559   warnL "Use of Gtk was requested, but it wasn't found."
3560   if test "$have_motif" = yes; then
3561     warn2 "Motif will be used instead."
3562   fi
3563 fi
3564
3565 if test "$gtk2_halfassed" != no ; then
3566   warnL "GTK version $gtk2_halfassed was found, but some other supporting"
3567   warn2 "libraries were not, so GTK 2.x can't be used.  Please"
3568   warn2 "read the above output and the \`config.log' file to see"
3569   warn2 "which libraries are missing."
3570 fi
3571
3572
3573 if test "$with_gnome_req" = yes -a "$have_gnome" = no ; then
3574   warn  'Use of the Gnome Control Panel was requested, but the necessary'
3575   warn2 'headers and/or libraries were not found.'
3576 fi
3577
3578 if test "$have_gtk" = yes ; then
3579   if test "$have_xml" = no ; then
3580     if test "$with_xml_req" = yes ; then
3581       warn  'Use of the XML library was requested, but the necessary'
3582       warn2 'headers and/or libraries were not found.'
3583     else
3584       warn  'GTK is being used, but the XML library was not found.'
3585     fi
3586
3587     if test "$xml_halfassed" = yes ; then
3588
3589       if test "$have_zlib" = yes ; then
3590         which="XML libraries"
3591       else
3592         which="\`zlib' library"
3593       fi
3594
3595       echo ''
3596       warn2 'More specifically, we found the headers, but not the'
3597       warn2 "$which; so either XML is half-installed on this"
3598       warn2 "system, or something else went wrong.  The \`config.log'"
3599       warn2 'file might contain some clues.'
3600     fi
3601
3602     echo ''
3603     warn2 "Without XML, the per-display-mode \`Settings' dialogs"
3604     warn2 'will not be available.  Specify the location of the XML'
3605     warn2 'library through the --with-xml option to configure.'
3606   fi
3607 fi
3608
3609 if test "$have_motif" = yes -a "$have_lesstif" = yes ; then
3610
3611   preferred_lesstif=0.92
3612
3613   if test "$lesstif_version" = unknown; then
3614     warnL "Unable to determine the LessTif version number!"
3615     warn2 "Make sure you are using version $preferred_lesstif or newer."
3616     warn2 "See <http://www.lesstif.org/>."
3617
3618   elif test \! $lesstif_version -gt 82; then
3619     warnL "LessTif version $lesstif_version_string is being used."
3620     warn2 "LessTif versions 0.82 and earlier are too buggy to"
3621     warn2 "use with XScreenSaver; it is strongly recommended"
3622     warn2 "that you upgrade to at least version $preferred_lesstif!"
3623     warn2 "See <http://www.lesstif.org/>."
3624   fi
3625 fi
3626
3627
3628 if test "$have_motif" = yes -a "$have_gtk" = no ; then
3629   warn  'Motif is being used, and GTK is not.'
3630   echo  ''
3631   warn2 'Though the Motif front-end to xscreensaver is still'
3632   warn2 'maintained, it is no longer being updated with new'
3633   warn2 'features: all new development on the xscreensaver-demo'
3634   warn2 'program is happening in the GTK version, and not in the'
3635   warn2 'Motif version.  It is recommended that you build against'
3636   warn2 'GTK instead of Motif.  See <http://www.gtk.org/>.'
3637 fi
3638
3639
3640 if test "$with_xpm_req" = yes -a "$have_xpm" = no; then
3641   warnL 'Use of XPM was requested, but it was not found.'
3642 fi
3643
3644 if test "$with_gdk_pixbuf_req" = yes  -a "$have_gdk_pixbuf" = no; then
3645   warnL 'Use of GDK-Pixbuf was requested, but it was not found.'
3646 fi
3647
3648 if test "$have_xpm" = no -a "$have_gdk_pixbuf" = no || \
3649    test "$gdk_pixbuf_halfassed" = yes; then
3650
3651   if test "$with_xpm_req" = yes -o "$have_xpm" = yes ; then
3652     true
3653   elif test "$with_xpm_req" = no ; then
3654     warnL 'The XPM library is not being used.'
3655   else
3656     warnL 'The XPM library was not found.'
3657   fi
3658
3659   if test "$with_gdk_pixbuf_req" = yes ; then
3660     true
3661   elif test "$with_gdk_pixbuf_req" = no ; then
3662     warnL 'The GDK-Pixbuf library is not being used.'
3663   else
3664     warnL 'The GDK-Pixbuf library was not found.'
3665   fi
3666
3667   if test "$gdk_pixbuf_halfassed" = yes ; then
3668     echo ''
3669     warn2 'More specifically, we found the headers, but not the'
3670     warn2 'libraries; so either GDK-Pixbuf is half-installed on this'
3671     warn2 "system, or something else went wrong.  The \`config.log'"
3672     warn2 'file might contain some clues.'
3673   fi
3674
3675   echo ''
3676   warn2 'Some of the demos will not be as colorful as they'
3677   warn2 'could be.  You should consider installing Pixbuf or'
3678   warn2 'XPM and re-running configure.  (Remember to delete'
3679   warn2 'the config.cache file first.)  The Pixbuf library is'
3680   warn2 'a part of GNOME.  The XPM library comes with most'
3681   warn2 'X11 installations; you can also find it at the X11'
3682   warn2 'archive sites, such as <http://sunsite.unc.edu/>.'
3683   echo  ''
3684   warn2 'GDK-Pixbuf is recommended over XPM, as it provides'
3685   warn2 'support for more image formats.'
3686 fi
3687
3688
3689 if test "$have_jpeg" = no ; then
3690   if test "$with_jpeg_req" = yes ; then
3691     warnL 'Use of libjpeg was requested, but it was not found.'
3692   elif test "$with_jpeg_req" = no ; then
3693     noteL 'The JPEG library is not being used.'
3694   else
3695     noteL 'The JPEG library was not found.'
3696   fi
3697
3698   if test "$jpeg_halfassed" = yes ; then
3699     echo ''
3700     warn2 'More specifically, we found the headers, but not the'
3701     warn2 'library; so either JPEG is half-installed on this'
3702     warn2 "system, or something else went wrong.  The \`config.log'"
3703     warn2 'file might contain some clues.'
3704     echo ''
3705   fi
3706
3707   warn2 "This means the \`webcollage' program will be much slower."
3708 fi
3709
3710
3711 if test "$have_gl" = yes -a "$ac_have_mesa_gl" = yes ; then
3712   preferred_mesagl=3.4
3713   mgv="$ac_mesagl_version_string"
3714   pgl="$preferred_mesagl"
3715
3716   if test "$ac_mesagl_version" = unknown; then
3717     warnL "Unable to determine the MesaGL version number!"
3718     warn2 "Make sure you are using version $preferred_mesagl or newer."
3719
3720   elif test \! "$ac_mesagl_version" -gt 2006; then
3721     warnL "MesaGL version $mgv is being used.  MesaGL 2.6 and earlier"
3722     warn2 "have a security bug.  It is strongly recommended that you"
3723     warn2 "upgrade to at least version $preferred_mesagl."
3724
3725   elif test \! "$ac_mesagl_version" -gt 3003; then
3726     warnL "MesaGL version $mgv is being used.  That version has some"
3727     warn2 "bugs; it is recommended that you upgrade to $pgl or newer."
3728   fi
3729 fi
3730
3731 if test "$have_gl" = no ; then
3732   if test "$with_gl_req" = yes ; then
3733     warnL 'Use of GL was requested, but it was not found.'
3734   elif test "$with_gl_req" = no ; then
3735     noteL 'The OpenGL 3D library is not being used.'
3736   else
3737     noteL 'The OpenGL 3D library was not found.'
3738   fi
3739
3740   if test "$gl_halfassed" = yes ; then
3741     echo ''
3742     warn2 'More specifically, we found the headers, but not the'
3743     warn2 'libraries; so either GL is half-installed on this'
3744     warn2 "system, or something else went wrong.  The \`config.log'"
3745     warn2 'file might contain some clues.'
3746   fi
3747
3748   echo ''
3749   warn2 'Those demos which use 3D will not be built or installed.'
3750   warn2 'You might want to consider installing OpenGL and'
3751   warn2 're-running configure.  (Remember to delete the'
3752   warn2 "config.cache file first.)  If your vendor doesn't ship"
3753   warn2 'their own implementation of OpenGL, you can get a free'
3754   warn2 'version at <http://www.mesa3d.org/>.  For general OpenGL'
3755   warn2 'info, see <http://www.opengl.org/>.'
3756
3757 fi
3758
3759
3760 if test "$have_gl" = yes -a "$have_gle" = no ; then
3761   if test "$with_gle_req" = yes ; then
3762     noteL 'Use of the GLE (GL Extrusion) library was requested, but'
3763     warn2 'it was not found (though the OpenGL library was found, and'
3764     warn2 'is being used.)'
3765   elif test "$with_gle_req" = no ; then
3766     noteL 'The OpenGL Library is being used, but the GLE (GL Extrusion)'
3767     warn2 'library is not.'
3768   else
3769     noteL 'The OpenGL Library was found, but the GLE (GL Extrusion)'
3770     warn2 'was not.'
3771   fi
3772
3773   if test "$gle_halfassed" = yes ; then
3774     echo ''
3775     warn2 'More specifically, we found the headers, but not the'
3776     warn2 'libraries; so either GLE is half-installed on this'
3777     warn2 "system, or something else went wrong.  The \`config.log'"
3778     warn2 'file might contain some clues.'
3779   fi
3780
3781   echo ''
3782   warn2 'Some of the OpenGL (3D) demos (those that depend on GLE)'
3783   warn2 'will not be built or installed.  You might want to consider'
3784   warn2 'installing GLE and re-running configure.  (Remember to delete'
3785   warn2 'the config.cache file first.)  You can find the GLE library'
3786   warn2 'at <http://www.linas.org/gle/>.  For general OpenGL info,'
3787   warn2 'see <http://www.opengl.org/>.'
3788
3789 fi
3790
3791
3792 if test "$with_readdisplay_req" = yes -a "$have_readdisplay" = no ; then
3793   warn 'Use of XReadDisplay was requested, but it was not found.'
3794 fi
3795
3796 if test -n "$with_fortune_req"; then
3797   if test "$with_fortune_req" != "$ac_cv_fortune_program" ; then
3798     warnL "$with_fortune_req was requested as the Fortune program,"
3799     warn2 "but was not found.  The default will be used instead."
3800   fi
3801 fi
3802
3803 if test "$with_kerberos_req" = yes -a "$have_kerberos" = no ; then
3804   warn 'Use of Kerberos was requested, but it was not found.'
3805 fi
3806
3807 if test "$with_pam_req" = yes -a "$have_pam" = no ; then
3808   warn 'Use of PAM was requested, but it was not found.'
3809 fi
3810
3811 if test "$with_shadow_req" = yes -a "$have_shadow" = no ; then
3812   warn 'Use of shadow passwords was requested, but they were not found.'
3813 fi
3814
3815
3816 # You are in a twisty maze of namespaces and syntaxes, all alike.
3817 # Fuck the skull of Unix.
3818 #
3819 eval bindir=${bindir}
3820 eval bindir=${bindir}
3821 eval bindir=${bindir}
3822 eval bindir=${bindir}
3823 eval bindir=${bindir}
3824 eval bindir=${bindir}
3825 eval HACKDIR=${HACKDIR}
3826 eval HACKDIR=${HACKDIR}
3827 eval HACKDIR=${HACKDIR}
3828 eval HACKDIR=${HACKDIR}
3829 eval HACKDIR=${HACKDIR}
3830 eval HACKDIR=${HACKDIR}
3831 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3832 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3833 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3834 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3835 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3836 eval HACK_CONF_DIR=${HACK_CONF_DIR}
3837
3838 # canonicalize slashes.
3839 bindir=`echo  "${bindir}"              | sed 's@/$@@;s@//*@/@g'`
3840 HACKDIR=`echo "${HACKDIR}"             | sed 's@/$@@;s@//*@/@g'`
3841 HACK_CONF_DIR=`echo "${HACK_CONF_DIR}" | sed 's@/$@@;s@//*@/@g'`
3842
3843
3844 # Sanity check the hackdir
3845 for bad_choice in xscreensaver xscreensaver-demo xscreensaver-command ; do
3846   if test "${HACKDIR}" = "${bindir}/${bad_choice}" ; then
3847     echo ""
3848     AC_MSG_ERROR([\"--with-hackdir=${bindir}/${bad_choice}\" won't work.
3849                    There will be an executable installed with that name, so
3850                    that can't be the name of a directory as well.  Please
3851                    re-configure with a different directory name.])
3852   fi
3853 done
3854
3855
3856 do_dir_warning=no
3857
3858 # Now let's see if there's a previous RPM version already installed.  Blargh!
3859
3860 # M4 sucks!!
3861 changequote(X,Y)
3862 rpmv=`(rpm -qv xscreensaver) 2>/dev/null | \
3863       sed -n 's/^xscreensaver-\([0-9][0-9]*[.][0-9][0-9]*\)-.*$/\1/p'`
3864 changequote([,])
3865
3866 if test \! -z "$rpmv" ; then
3867   rpmbdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/xscreensaver-demo$@\1@p'`
3868   rpmhdir=`rpm -ql xscreensaver | sed -n 's@^\(.*\)/attraction$@\1@p'`
3869
3870   warning=no
3871   warnL "There is already an installed RPM of xscreensaver $rpmv"
3872   warn2 "on this system.  You might want to remove it (with"
3873   warn2 '"rpm -ve xscreensaver") before running "make install"'
3874   warn2 "from this directory."
3875   echo ""
3876   warn2 "Alternately, you could build this version of xscreensaver"
3877   warn2 'as an RPM, and then install that.  An "xscreensaver.spec"'
3878   warn2 "file is included.  See the RPM documentation for more info."
3879   echo ""
3880
3881   if test "$rpmbdir" = "$rpmhdir" ; then
3882     warn2 "The RPM version was installed in $rpmbdir/."
3883   else
3884     warn2 "The RPM version was installed in $rpmbdir/,"
3885     warn2 "with demos in $rpmhdir/."
3886   fi
3887
3888   do_dir_warning=yes
3889 fi
3890
3891
3892 if test "${bindir}" = "${HACKDIR}" ; then
3893   do_dir_warning=yes
3894 fi
3895
3896 if test "$do_dir_warning" = yes; then
3897   echo ""
3898   echo "$warnsep"
3899   echo ""
3900   echo '      When you run "make install", the "xscreensaver",'
3901   echo '      "xscreensaver-demo", and "xscreensaver-command" executables'
3902   echo "      will be installed in ${bindir}/."
3903   echo ""
3904   echo "      The various graphics demos (140+ different executables) will"
3905   echo "      be installed in ${HACKDIR}/."
3906   echo ""
3907   echo "      If you would prefer the demos to be installed elsewhere,"
3908   echo "      you should re-run configure with the --with-hackdir=DIR"
3909   echo "      option.  For more information, run \`./configure --help'."
3910   warning=yes
3911 fi
3912
3913 if test "$warning" != no; then
3914   echo '' ; echo "$warnsep" ; echo ''
3915 fi
3916
3917 if test "$do_dir_warning" = no; then
3918   if test "$warning" = no; then
3919     echo ''
3920   fi
3921   echo "User programs will be installed in ${bindir}/"
3922   echo "Screen savers will be installed in ${HACKDIR}/"
3923   echo "Configuration will be installed in ${HACK_CONF_DIR}/"
3924   echo ''
3925 fi