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