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