source: trunk/third/xscreensaver/configure.in @ 20158

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