Snapshot 25
[MacVim.git] / src / configure.in
blob295b72535d8b6f4ab0470bd52848590a97c4e14b
1 dnl configure.in: autoconf script for Vim
3 dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4 dnl Should also work with autoconf 2.54 and later.
6 AC_INIT(vim.h)
7 AC_CONFIG_HEADER(auto/config.h:config.h.in)
9 dnl Being able to run configure means the system is Unix (compatible).
10 AC_DEFINE(UNIX)
11 AC_PROG_MAKE_SET
13 dnl Checks for programs.
14 AC_PROG_CC      dnl required by almost everything
15 AC_PROG_CPP     dnl required by header file checks
16 AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17 AC_ISC_POSIX    dnl required by AC_C_CROSS
18 AC_PROG_AWK     dnl required for "make html" in ../doc
20 dnl Don't strip if we don't have it
21 AC_CHECK_PROG(STRIP, strip, strip, :)
23 dnl Check for extension of executables
24 AC_EXEEXT
26 dnl Set default value for CFLAGS if none is defined or it's empty
27 if test -z "$CFLAGS"; then
28   CFLAGS="-O"
29   test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
31 if test "$GCC" = yes; then
32   dnl method that should work for nearly all versions
33   gccversion=`"$CC" -dumpversion`
34   if test "x$gccversion" = "x"; then
35     dnl old method; fall-back for when -dumpversion doesn't work
36     gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
37   fi
38   dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
39   if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
40     echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
41     CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
42   else
43     if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
44       echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
45       CFLAGS="$CFLAGS -fno-strength-reduce"
46     fi
47   fi
50 dnl If configure thinks we are cross compiling, there is probably something
51 dnl wrong with the CC or CFLAGS settings, give an understandable error message
52 if test "$cross_compiling" = yes; then
53   AC_MSG_ERROR([cannot compile a simple program, check CC and CFLAGS
54   (cross compiling doesn't work)])
57 dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
58 dnl But gcc 3.1 changed the meaning!  See near the end.
59 test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
61 if test -f ./toolcheck; then
62   AC_CHECKING(for buggy tools)
63   sh ./toolcheck 1>&AC_FD_MSG
66 OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
68 dnl Check for BeOS, which needs an extra source file
69 AC_MSG_CHECKING(for BeOS)
70 case `uname` in
71     BeOS)       OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
72                 BEOS=yes; AC_MSG_RESULT(yes);;
73     *)          BEOS=no; AC_MSG_RESULT(no);;
74 esac
76 dnl If QNX is found, assume we don't want to use Xphoton
77 dnl unless it was specifically asked for (--with-x)
78 AC_MSG_CHECKING(for QNX)
79 case `uname` in
80     QNX)        OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
81                 test -z "$with_x" && with_x=no
82                 QNX=yes; AC_MSG_RESULT(yes);;
83     *)          QNX=no; AC_MSG_RESULT(no);;
84 esac
86 dnl Check for Darwin and MacOS X
87 dnl We do a check for MacOS X in the very beginning because there
88 dnl are a lot of other things we need to change besides GUI stuff
89 AC_MSG_CHECKING([for Darwin (Mac OS X)])
90 if test "`(uname) 2>/dev/null`" = Darwin; then
91   AC_MSG_RESULT(yes)
93   AC_MSG_CHECKING(--disable-darwin argument)
94   AC_ARG_ENABLE(darwin,
95           [  --disable-darwin        Disable Darwin (Mac OS X) support.],
96           , [enable_darwin="yes"])
97   if test "$enable_darwin" = "yes"; then
98     AC_MSG_RESULT(no)
99     AC_MSG_CHECKING(if Darwin files are there)
100     if test -f os_macosx.c; then
101       AC_MSG_RESULT(yes)
102     else
103       AC_MSG_RESULT([no, Darwin support disabled])
104       enable_darwin=no
105     fi
106   else
107     AC_MSG_RESULT([yes, Darwin support excluded])
108   fi
110   AC_MSG_CHECKING(--with-mac-arch argument)
111   AC_ARG_WITH(mac-arch, [  --with-mac-arch=ARCH    current, intel, ppc or both],
112         MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
113         MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
115   if test "x$MACARCH" = "xboth"; then
116     AC_MSG_CHECKING(for 10.4 universal SDK)
117     dnl There is a terrible inconsistency (but we appear to get away with it):
118     dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
119     dnl doesn't, because "gcc -E" doesn't grok it.  That means the configure
120     dnl tests using the preprocessor are actually done with the wrong header
121     dnl files. $LDFLAGS is set at the end, because configure uses it together
122     dnl with $CFLAGS and we can only have one -sysroot argument.
123     save_cppflags="$CPPFLAGS"
124     save_cflags="$CFLAGS"
125     save_ldflags="$LDFLAGS"
126     CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
127     AC_TRY_LINK([ ], [ ],
128         AC_MSG_RESULT(found, will make universal binary),
130         AC_MSG_RESULT(not found)
131         CFLAGS="$save_cflags"
132         AC_MSG_CHECKING(if Intel architecture is supported)
133         CPPFLAGS="$CPPFLAGS -arch i386"
134         LDFLAGS="$save_ldflags -arch i386"
135         AC_TRY_LINK([ ], [ ],
136             AC_MSG_RESULT(yes); MACARCH="intel",
137             AC_MSG_RESULT(no, using PowerPC)
138                 MACARCH="ppc"
139                 CPPFLAGS="$save_cppflags -arch ppc"
140                 LDFLAGS="$save_ldflags -arch ppc"))
141   elif test "x$MACARCH" = "xintel"; then
142     CPPFLAGS="$CPPFLAGS -arch intel"
143     LDFLAGS="$LDFLAGS -arch intel"
144   elif test "x$MACARCH" = "xppc"; then
145     CPPFLAGS="$CPPFLAGS -arch ppc"
146     LDFLAGS="$LDFLAGS -arch ppc"
147   fi
149   if test "$enable_darwin" = "yes"; then
150     MACOSX=yes
151     OS_EXTRA_SCR="os_macosx.c os_mac_conv.c";
152     OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
153     dnl TODO: use -arch i386 on Intel machines
154     CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
155     if test "x$MACARCH" = "xboth"; then
156       CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
157     else
158       CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
159     fi
161     dnl If Carbon or Cocoa is found, assume we don't want
162     dnl X11 unless it was specifically asked for (--with-x)
163     dnl or Motif, Athena or GTK GUI is used.
164     AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
166     SAVE_CPPFLAGS=$CPPFLAGS
167     SAVE_CFLAGS=$CFLAGS
168     CPPFLAGS="$CPPFLAGS -ObjC"
169     CFLAGS="$CFLAGS -ObjC"
170     AC_CHECK_HEADER(Cocoa/Cocoa.h, COCOA=yes)
171     CPPFLAGS=$SAVE_CPPFLAGS
172     CFLAGS=$SAVE_CFLAGS
174     if test "x$CARBON" = "xyes" -o "x$COCOA" = "xyes"; then
175       if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk -a "X$enable_gui" != Xgtk2; then
176         with_x=no
177       fi
178     fi
179   fi
181   dnl Avoid a bug with -O2 with gcc 4.0.1.  Symptom: malloc() reports double
182   dnl free.  This happens in expand_filename(), because the optimizer swaps
183   dnl two blocks of code, both using "repl", that can't be swapped.
184   if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
185     CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
186   fi
188 else
189   AC_MSG_RESULT(no)
192 AC_SUBST(OS_EXTRA_SRC)
193 AC_SUBST(OS_EXTRA_OBJ)
195 dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
196 dnl Only when the directory exists and it wasn't there yet.
197 dnl For gcc don't do this when it is already in the default search path.
198 have_local_include=''
199 have_local_lib=''
200 if test "$GCC" = yes; then
201   echo 'void f(){}' > conftest.c
202   dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
203   have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep '/usr/local/include'`
204   have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep '/usr/local/lib'`
205   rm -f conftest.c conftest.o
207 if test -z "$have_local_lib" -a -d /usr/local/lib; then
208   tt=`echo "$LDFLAGS" | sed -e 's+-L/usr/local/lib ++g' -e 's+-L/usr/local/lib$++g'`
209   if test "$tt" = "$LDFLAGS"; then
210     LDFLAGS="$LDFLAGS -L/usr/local/lib"
211   fi
213 if test -z "$have_local_include" -a -d /usr/local/include; then
214   tt=`echo "$CPPFLAGS" | sed -e 's+-I/usr/local/include ++g' -e 's+-I/usr/local/include$++g'`
215   if test "$tt" = "$CPPFLAGS"; then
216     CPPFLAGS="$CPPFLAGS -I/usr/local/include"
217   fi
220 AC_MSG_CHECKING(--with-vim-name argument)
221 AC_ARG_WITH(vim-name, [  --with-vim-name=NAME    what to call the Vim executable],
222         VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
223         VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
224 AC_SUBST(VIMNAME)
225 AC_MSG_CHECKING(--with-ex-name argument)
226 AC_ARG_WITH(ex-name, [  --with-ex-name=NAME     what to call the Ex executable],
227         EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
228         EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
229 AC_SUBST(EXNAME)
230 AC_MSG_CHECKING(--with-view-name argument)
231 AC_ARG_WITH(view-name, [  --with-view-name=NAME   what to call the View executable],
232         VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
233         VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
234 AC_SUBST(VIEWNAME)
236 AC_MSG_CHECKING(--with-global-runtime argument)
237 AC_ARG_WITH(global-runtime, [  --with-global-runtime=DIR    global runtime directory in 'runtimepath'],
238         AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
239         AC_MSG_RESULT(no))
241 AC_MSG_CHECKING(--with-modified-by argument)
242 AC_ARG_WITH(modified-by, [  --with-modified-by=NAME       name of who modified a release version],
243         AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
244         AC_MSG_RESULT(no))
246 dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
247 AC_MSG_CHECKING(if character set is EBCDIC)
248 AC_TRY_COMPILE([ ],
249 [ /* TryCompile function for CharSet.
250    Treat any failure as ASCII for compatibility with existing art.
251    Use compile-time rather than run-time tests for cross-compiler
252    tolerance.  */
253 #if '0'!=240
254 make an error "Character set is not EBCDIC"
255 #endif ],
256 [ # TryCompile action if true
257 cf_cv_ebcdic=yes ],
258 [ # TryCompile action if false
259 cf_cv_ebcdic=no])
260 # end of TryCompile ])
261 # end of CacheVal CvEbcdic
262 AC_MSG_RESULT($cf_cv_ebcdic)
263 case "$cf_cv_ebcdic" in  #(vi
264     yes)        AC_DEFINE(EBCDIC)
265                 line_break='"\\n"'
266                 ;;
267     *)          line_break='"\\012"';;
268 esac
269 AC_SUBST(line_break)
271 if test "$cf_cv_ebcdic" = "yes"; then
272 dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
273 AC_MSG_CHECKING(for OS/390 Unix)
274 case `uname` in
275     OS/390)     OS390Unix="yes";
276                 dnl If using cc the environment variable _CC_CCMODE must be
277                 dnl set to "1", so that some compiler extensions are enabled.
278                 dnl If using c89 the environment variable is named _CC_C89MODE.
279                 dnl Note: compile with c89 never tested.
280                 if test "$CC" = "cc"; then
281                   ccm="$_CC_CCMODE"
282                   ccn="CC"
283                 else
284                   if test "$CC" = "c89"; then
285                     ccm="$_CC_C89MODE"
286                     ccn="C89"
287                   else
288                     ccm=1
289                   fi
290                 fi
291                 if test "$ccm" != "1"; then
292                   echo ""
293                   echo "------------------------------------------"
294                   echo " On OS/390 Unix, the environment variable"
295                   echo " __CC_${ccn}MODE must be set to \"1\"!"
296                   echo " Do:"
297                   echo "    export _CC_${ccn}MODE=1"
298                   echo " and then call configure again."
299                   echo "------------------------------------------"
300                   exit 1
301                 fi
302                 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
303                 AC_MSG_RESULT(yes)
304                 ;;
305     *)          OS390Unix="no";
306                 AC_MSG_RESULT(no)
307                 ;;
308 esac
312 dnl Check user requested features.
314 AC_MSG_CHECKING(--with-features argument)
315 AC_ARG_WITH(features, [  --with-features=TYPE    tiny, small, normal, big or huge (default: normal)],
316         features="$withval"; AC_MSG_RESULT($features),
317         features="normal"; AC_MSG_RESULT(Defaulting to normal))
319 dovimdiff=""
320 dogvimdiff=""
321 case "$features" in
322   tiny)         AC_DEFINE(FEAT_TINY) ;;
323   small)        AC_DEFINE(FEAT_SMALL) ;;
324   normal)       AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
325                         dogvimdiff="installgvimdiff" ;;
326   big)          AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
327                         dogvimdiff="installgvimdiff" ;;
328   huge)         AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
329                         dogvimdiff="installgvimdiff" ;;
330   *)            AC_MSG_RESULT([Sorry, $features is not supported]) ;;
331 esac
333 AC_SUBST(dovimdiff)
334 AC_SUBST(dogvimdiff)
336 AC_MSG_CHECKING(--with-compiledby argument)
337 AC_ARG_WITH(compiledby, [  --with-compiledby=NAME  name to show in :version message],
338         compiledby="$withval"; AC_MSG_RESULT($withval),
339         compiledby=""; AC_MSG_RESULT(no))
340 AC_SUBST(compiledby)
342 AC_MSG_CHECKING(--disable-xsmp argument)
343 AC_ARG_ENABLE(xsmp,
344         [  --disable-xsmp          Disable XSMP session management],
345         , enable_xsmp="yes")
347 if test "$enable_xsmp" = "yes"; then
348   AC_MSG_RESULT(no)
349   AC_MSG_CHECKING(--disable-xsmp-interact argument)
350   AC_ARG_ENABLE(xsmp-interact,
351           [  --disable-xsmp-interact Disable XSMP interaction],
352           , enable_xsmp_interact="yes")
353   if test "$enable_xsmp_interact" = "yes"; then
354     AC_MSG_RESULT(no)
355     AC_DEFINE(USE_XSMP_INTERACT)
356   else
357     AC_MSG_RESULT(yes)
358   fi
359 else
360   AC_MSG_RESULT(yes)
363 dnl Check for MzScheme feature.
364 AC_MSG_CHECKING(--enable-mzschemeinterp argument)
365 AC_ARG_ENABLE(mzschemeinterp,
366         [  --enable-mzschemeinterp   Include MzScheme interpreter.], ,
367         [enable_mzschemeinterp="no"])
368 AC_MSG_RESULT($enable_mzschemeinterp)
370 if test "$enable_mzschemeinterp" = "yes"; then
371   dnl -- find the mzscheme executable
372   AC_SUBST(vi_cv_path_mzscheme)
374   AC_MSG_CHECKING(--with-plthome argument)
375   AC_ARG_WITH(plthome,
376         [  --with-plthome=PLTHOME   Use PLTHOME.],
377         with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
378         with_plthome="";AC_MSG_RESULT("no"))
380   if test "X$with_plthome" != "X"; then
381        vi_cv_path_mzscheme_pfx="$with_plthome"
382   else
383     AC_MSG_CHECKING(PLTHOME environment var)
384     if test "X$PLTHOME" != "X"; then
385         AC_MSG_RESULT("$PLTHOME")
386         vi_cv_path_mzscheme_pfx="$PLTHOME"
387     else
388         AC_MSG_RESULT("not set")
389         dnl -- try to find MzScheme executable
390         AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
392         dnl resolve symbolic link, the executable is often elsewhere and there
393         dnl are no links for the include files.
394         if test "X$vi_cv_path_mzscheme" != "X"; then
395           lsout=`ls -l $vi_cv_path_mzscheme`
396           if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
397             vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
398           fi
399         fi
401         if test "X$vi_cv_path_mzscheme" != "X"; then
402             dnl -- find where MzScheme thinks it was installed
403             AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
404             [ vi_cv_path_mzscheme_pfx=`
405             ${vi_cv_path_mzscheme} -evm \
406             "(display (simplify-path            \
407                (build-path (call-with-values    \
408                 (lambda () (split-path (find-system-path (quote exec-file)))) \
409                 (lambda (base name must-be-dir?) base)) (quote up))))"` ])
410             dnl Remove a trailing slash.
411             vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
412         fi
413     fi
414   fi
416   SCHEME_INC=
417   if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
418     AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
419     if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
420       AC_MSG_RESULT("yes")
421     else
422       AC_MSG_RESULT("no")
423       AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/plt/include)
424       if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
425         AC_MSG_RESULT("yes")
426         SCHEME_INC=/plt
427       else
428         AC_MSG_RESULT("no")
429         vi_cv_path_mzscheme_pfx=
430       fi
431     fi
432   fi
434   if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
435     if test "x$MACOSX" = "xyes"; then
436       MZSCHEME_LIBS="-framework PLT_MzScheme"
437     elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
438       MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
439     else
440       MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
441       if test "$GCC" = yes; then
442         dnl Make Vim remember the path to the library.  For when it's not in
443         dnl $LD_LIBRARY_PATH.
444         MZSCHEME_LIBS="$MZSCHEME_LIBS -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
445       elif test "`(uname) 2>/dev/null`" = SunOS &&
446                                uname -r | grep '^5' >/dev/null; then
447         MZSCHEME_LIBS="$MZSCHEME_LIBS -R ${vi_cv_path_mzscheme_pfx}/lib"
448       fi
449     fi
450     if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
451       SCHEME_COLLECTS=lib/plt/
452     fi
453     MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include${SCHEME_INC}   \
454       -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
455     MZSCHEME_SRC="if_mzsch.c"
456     MZSCHEME_OBJ="objects/if_mzsch.o"
457     MZSCHEME_PRO="if_mzsch.pro"
458     AC_DEFINE(FEAT_MZSCHEME)
459   fi
460   AC_SUBST(MZSCHEME_SRC)
461   AC_SUBST(MZSCHEME_OBJ)
462   AC_SUBST(MZSCHEME_PRO)
463   AC_SUBST(MZSCHEME_LIBS)
464   AC_SUBST(MZSCHEME_CFLAGS)
468 AC_MSG_CHECKING(--enable-perlinterp argument)
469 AC_ARG_ENABLE(perlinterp,
470         [  --enable-perlinterp     Include Perl interpreter.], ,
471         [enable_perlinterp="no"])
472 AC_MSG_RESULT($enable_perlinterp)
473 if test "$enable_perlinterp" = "yes"; then
474   AC_SUBST(vi_cv_path_perl)
475   AC_PATH_PROG(vi_cv_path_perl, perl)
476   if test "X$vi_cv_path_perl" != "X"; then
477     AC_MSG_CHECKING(Perl version)
478     if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
479      eval `$vi_cv_path_perl -V:usethreads`
480      if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
481        badthreads=no
482      else
483        if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
484          eval `$vi_cv_path_perl -V:use5005threads`
485          if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
486            badthreads=no
487          else
488            badthreads=yes
489            AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
490          fi
491        else
492          badthreads=yes
493          AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
494        fi
495      fi
496      if test $badthreads = no; then
497       AC_MSG_RESULT(OK)
498       eval `$vi_cv_path_perl -V:shrpenv`
499       if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
500         shrpenv=""
501       fi
502       vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
503       AC_SUBST(vi_cv_perllib)
504       dnl Remove "-fno-something", it breaks using cproto.
505       perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
506               -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
507       dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
508       perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
509                 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
510                         -e 's/-bE:perl.exp//' -e 's/-lc //'`
511       dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
512       dnl a test in configure may fail because of that.
513       perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
514                 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
516       dnl check that compiling a simple program still works with the flags
517       dnl added for Perl.
518       AC_MSG_CHECKING([if compile and link flags for Perl are sane])
519       cflags_save=$CFLAGS
520       libs_save=$LIBS
521       ldflags_save=$LDFLAGS
522       CFLAGS="$CFLAGS $perlcppflags"
523       LIBS="$LIBS $perllibs"
524       LDFLAGS="$perlldflags $LDFLAGS"
525       AC_TRY_LINK(,[ ],
526              AC_MSG_RESULT(yes); perl_ok=yes,
527              AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
528       CFLAGS=$cflags_save
529       LIBS=$libs_save
530       LDFLAGS=$ldflags_save
531       if test $perl_ok = yes; then
532         if test "X$perlcppflags" != "X"; then
533           dnl remove -pipe and -Wxxx, it confuses cproto
534           PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
535         fi
536         if test "X$perlldflags" != "X"; then
537           LDFLAGS="$perlldflags $LDFLAGS"
538         fi
539         PERL_LIBS=$perllibs
540         PERL_SRC="auto/if_perl.c if_perlsfio.c"
541         PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
542         PERL_PRO="if_perl.pro if_perlsfio.pro"
543         AC_DEFINE(FEAT_PERL)
544       fi
545      fi
546     else
547       AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
548     fi
549   fi
551   if test "x$MACOSX" = "xyes"; then
552     dnl Mac OS X 10.2 or later
553     dir=/System/Library/Perl
554     darwindir=$dir/darwin
555     if test -d $darwindir; then
556       PERL=/usr/bin/perl
557     else
558       dnl Mac OS X 10.3
559       dir=/System/Library/Perl/5.8.1
560       darwindir=$dir/darwin-thread-multi-2level
561       if test -d $darwindir; then
562         PERL=/usr/bin/perl
563       fi
564     fi
565     if test -n "$PERL"; then
566       PERL_DIR="$dir"
567       PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
568       PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
569       PERL_LIBS="-L$darwindir/CORE -lperl"
570     fi
571   fi
573 AC_SUBST(shrpenv)
574 AC_SUBST(PERL_SRC)
575 AC_SUBST(PERL_OBJ)
576 AC_SUBST(PERL_PRO)
577 AC_SUBST(PERL_CFLAGS)
578 AC_SUBST(PERL_LIBS)
580 AC_MSG_CHECKING(--enable-pythoninterp argument)
581 AC_ARG_ENABLE(pythoninterp,
582         [  --enable-pythoninterp   Include Python interpreter.], ,
583         [enable_pythoninterp="no"])
584 AC_MSG_RESULT($enable_pythoninterp)
585 if test "$enable_pythoninterp" = "yes"; then
586   dnl -- find the python executable
587   AC_PATH_PROG(vi_cv_path_python, python)
588   if test "X$vi_cv_path_python" != "X"; then
590     dnl -- get its version number
591     AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
592     [[vi_cv_var_python_version=`
593             ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
594     ]])
596     dnl -- it must be at least version 1.4
597     AC_MSG_CHECKING(Python is 1.4 or better)
598     if ${vi_cv_path_python} -c \
599         "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
600     then
601       AC_MSG_RESULT(yep)
603       dnl -- find where python thinks it was installed
604       AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
605       [ vi_cv_path_python_pfx=`
606             ${vi_cv_path_python} -c \
607                 "import sys; print sys.prefix"` ])
609       dnl -- and where it thinks it runs
610       AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
611       [ vi_cv_path_python_epfx=`
612             ${vi_cv_path_python} -c \
613                 "import sys; print sys.exec_prefix"` ])
615       dnl -- python's internal library path
617       AC_CACHE_VAL(vi_cv_path_pythonpath,
618       [ vi_cv_path_pythonpath=`
619             unset PYTHONPATH;
620             ${vi_cv_path_python} -c \
621                 "import sys, string; print string.join(sys.path,':')"` ])
623       dnl -- where the Python implementation library archives are
625       AC_ARG_WITH(python-config-dir,
626         [  --with-python-config-dir=PATH  Python's config directory],
627         [ vi_cv_path_python_conf="${withval}" ] )
629       AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
630       [
631         vi_cv_path_python_conf=
632         for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
633           for subdir in lib share; do
634             d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
635             if test -d "$d" && test -f "$d/config.c"; then
636               vi_cv_path_python_conf="$d"
637             fi
638           done
639         done
640       ])
642       PYTHON_CONFDIR="${vi_cv_path_python_conf}"
644       if test "X$PYTHON_CONFDIR" = "X"; then
645         AC_MSG_RESULT([can't find it!])
646       else
648         dnl -- we need to examine Python's config/Makefile too
649         dnl    see what the interpreter is built from
650         AC_CACHE_VAL(vi_cv_path_python_plibs,
651         [
652             tmp_mkf="/tmp/Makefile-conf$$"
653             cat ${PYTHON_CONFDIR}/Makefile - <<'eof' >${tmp_mkf}
655         @echo "python_MODLIBS='$(MODLIBS)'"
656         @echo "python_LIBS='$(LIBS)'"
657         @echo "python_SYSLIBS='$(SYSLIBS)'"
658         @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
660             dnl -- delete the lines from make about Entering/Leaving directory
661             eval "`cd ${PYTHON_CONFDIR} && make -f ${tmp_mkf} __ | sed '/ directory /d'`"
662             rm -f ${tmp_mkf}
663             if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
664                 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
665               vi_cv_path_python_plibs="-framework Python"
666             else
667               if test "${vi_cv_var_python_version}" = "1.4"; then
668                   vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
669               else
670                   vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
671               fi
672               vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
673               dnl remove -ltermcap, it can conflict with an earlier -lncurses
674               vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
675             fi
676         ])
678         PYTHON_LIBS="${vi_cv_path_python_plibs}"
679         if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
680           PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
681         else
682           PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version}"
683         fi
684         PYTHON_SRC="if_python.c"
685         dnl For Mac OSX 10.2 config.o is included in the Python library.
686         if test "x$MACOSX" = "xyes"; then
687           PYTHON_OBJ="objects/if_python.o"
688         else
689           PYTHON_OBJ="objects/if_python.o objects/py_config.o"
690         fi
691         if test "${vi_cv_var_python_version}" = "1.4"; then
692            PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
693         fi
694         PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
696         dnl On FreeBSD linking with "-pthread" is required to use threads.
697         dnl _THREAD_SAFE must be used for compiling then.
698         dnl The "-pthread" is added to $LIBS, so that the following check for
699         dnl sigaltstack() will look in libc_r (it's there in libc!).
700         dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS.  GCC
701         dnl will then define target-specific defines, e.g., -D_REENTRANT.
702         dnl Don't do this for Mac OSX, -pthread will generate a warning.
703         AC_MSG_CHECKING([if -pthread should be used])
704         threadsafe_flag=
705         thread_lib=
706         dnl if test "x$MACOSX" != "xyes"; then
707         if test "`(uname) 2>/dev/null`" != Darwin; then
708           test "$GCC" = yes && threadsafe_flag="-pthread"
709           if test "`(uname) 2>/dev/null`" = FreeBSD; then
710             threadsafe_flag="-D_THREAD_SAFE"
711             thread_lib="-pthread"
712           fi
713         fi
714         libs_save_old=$LIBS
715         if test -n "$threadsafe_flag"; then
716           cflags_save=$CFLAGS
717           CFLAGS="$CFLAGS $threadsafe_flag"
718           LIBS="$LIBS $thread_lib"
719           AC_TRY_LINK(,[ ],
720              AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
721              AC_MSG_RESULT(no); LIBS=$libs_save_old
722              )
723           CFLAGS=$cflags_save
724         else
725           AC_MSG_RESULT(no)
726         fi
728         dnl check that compiling a simple program still works with the flags
729         dnl added for Python.
730         AC_MSG_CHECKING([if compile and link flags for Python are sane])
731         cflags_save=$CFLAGS
732         libs_save=$LIBS
733         CFLAGS="$CFLAGS $PYTHON_CFLAGS"
734         LIBS="$LIBS $PYTHON_LIBS"
735         AC_TRY_LINK(,[ ],
736                AC_MSG_RESULT(yes); python_ok=yes,
737                AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
738         CFLAGS=$cflags_save
739         LIBS=$libs_save
740         if test $python_ok = yes; then
741           AC_DEFINE(FEAT_PYTHON)
742         else
743           LIBS=$libs_save_old
744           PYTHON_SRC=
745           PYTHON_OBJ=
746           PYTHON_LIBS=
747           PYTHON_CFLAGS=
748         fi
750       fi
751     else
752       AC_MSG_RESULT(too old)
753     fi
754   fi
756 AC_SUBST(PYTHON_CONFDIR)
757 AC_SUBST(PYTHON_LIBS)
758 AC_SUBST(PYTHON_GETPATH_CFLAGS)
759 AC_SUBST(PYTHON_CFLAGS)
760 AC_SUBST(PYTHON_SRC)
761 AC_SUBST(PYTHON_OBJ)
763 AC_MSG_CHECKING(--enable-tclinterp argument)
764 AC_ARG_ENABLE(tclinterp,
765         [  --enable-tclinterp      Include Tcl interpreter.], ,
766         [enable_tclinterp="no"])
767 AC_MSG_RESULT($enable_tclinterp)
769 if test "$enable_tclinterp" = "yes"; then
771   dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
772   AC_MSG_CHECKING(--with-tclsh argument)
773   AC_ARG_WITH(tclsh, [  --with-tclsh=PATH       which tclsh to use (default: tclsh8.0)],
774         tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
775         tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
776   AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
777   AC_SUBST(vi_cv_path_tcl)
779   dnl when no specific version specified, also try 8.4, 8.2 and 8.0
780   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
781     tclsh_name="tclsh8.4"
782     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
783   fi
784   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
785     tclsh_name="tclsh8.2"
786     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
787   fi
788   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
789     tclsh_name="tclsh8.0"
790     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
791   fi
792   dnl still didn't find it, try without version number
793   if test "X$vi_cv_path_tcl" = "X"; then
794     tclsh_name="tclsh"
795     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
796   fi
797   if test "X$vi_cv_path_tcl" != "X"; then
798     AC_MSG_CHECKING(Tcl version)
799     if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
800       tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
801       AC_MSG_RESULT($tclver - OK);
802       tclloc=`echo 'set l [[info library]];set i [[string last lib $l]];incr i -2;puts [[string range $l 0 $i]]' | $vi_cv_path_tcl -`
804       AC_MSG_CHECKING(for location of Tcl include)
805       if test "x$MACOSX" != "xyes"; then
806         tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
807       else
808         dnl For Mac OS X 10.3, use the OS-provided framework location
809         tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
810       fi
811       TCL_INC=
812       for try in $tclinc; do
813         if test -f "$try/tcl.h"; then
814           AC_MSG_RESULT($try/tcl.h)
815           TCL_INC=$try
816           break
817         fi
818       done
819       if test -z "$TCL_INC"; then
820         AC_MSG_RESULT(<not found>)
821         SKIP_TCL=YES
822       fi
823       if test -z "$SKIP_TCL"; then
824         AC_MSG_CHECKING(for location of tclConfig.sh script)
825         if test "x$MACOSX" != "xyes"; then
826           tclcnf=`echo $tclinc | sed s/include/lib/g`
827           tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
828         else
829           dnl For Mac OS X 10.3, use the OS-provided framework location
830           tclcnf="/System/Library/Frameworks/Tcl.framework"
831         fi
832         for try in $tclcnf; do
833           if test -f $try/tclConfig.sh; then
834             AC_MSG_RESULT($try/tclConfig.sh)
835             . $try/tclConfig.sh
836             dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
837             TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
838             dnl Use $TCL_DEFS for -D_THREAD_SAFE et al.  But only use the
839             dnl "-D_ABC" items.  Watch out for -DFOO=long\ long.
840             TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'`
841             break
842           fi
843         done
844         if test -z "$TCL_LIBS"; then
845           AC_MSG_RESULT(<not found>)
846           AC_MSG_CHECKING(for Tcl library by myself)
847           tcllib=`echo $tclinc | sed s/include/lib/g`
848           tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
849           for ext in .so .a ; do
850             for ver in "" $tclver ; do
851               for try in $tcllib ; do
852                 trylib=tcl$ver$ext
853                 if test -f $try/lib$trylib ; then
854                   AC_MSG_RESULT($try/lib$trylib)
855                   TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
856                   if test "`(uname) 2>/dev/null`" = SunOS &&
857                                          uname -r | grep '^5' >/dev/null; then
858                     TCL_LIBS="$TCL_LIBS -R $try"
859                   fi
860                   break 3
861                 fi
862               done
863             done
864           done
865           if test -z "$TCL_LIBS"; then
866             AC_MSG_RESULT(<not found>)
867             SKIP_TCL=YES
868           fi
869         fi
870         if test -z "$SKIP_TCL"; then
871           AC_DEFINE(FEAT_TCL)
872           TCL_SRC=if_tcl.c
873           TCL_OBJ=objects/if_tcl.o
874           TCL_PRO=if_tcl.pro
875           TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
876         fi
877       fi
878     else
879       AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
880     fi
881   fi
883 AC_SUBST(TCL_SRC)
884 AC_SUBST(TCL_OBJ)
885 AC_SUBST(TCL_PRO)
886 AC_SUBST(TCL_CFLAGS)
887 AC_SUBST(TCL_LIBS)
889 AC_MSG_CHECKING(--enable-rubyinterp argument)
890 AC_ARG_ENABLE(rubyinterp,
891         [  --enable-rubyinterp     Include Ruby interpreter.], ,
892         [enable_rubyinterp="no"])
893 AC_MSG_RESULT($enable_rubyinterp)
894 if test "$enable_rubyinterp" = "yes"; then
895   AC_SUBST(vi_cv_path_ruby)
896   AC_PATH_PROG(vi_cv_path_ruby, ruby)
897   if test "X$vi_cv_path_ruby" != "X"; then
898     AC_MSG_CHECKING(Ruby version)
899     if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
900       AC_MSG_RESULT(OK)
901       AC_MSG_CHECKING(Ruby header files)
902       rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
903       if test "X$rubyhdrdir" != "X"; then
904         AC_MSG_RESULT($rubyhdrdir)
905         RUBY_CFLAGS="-I$rubyhdrdir"
906         rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
907         if test "X$rubylibs" != "X"; then
908           RUBY_LIBS="$rubylibs"
909         fi
910         librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
911         if test -f "$rubyhdrdir/$librubyarg"; then
912           librubyarg="$rubyhdrdir/$librubyarg"
913         else
914           rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
915           if test -f "$rubylibdir/$librubyarg"; then
916             librubyarg="$rubylibdir/$librubyarg"
917           elif test "$librubyarg" = "libruby.a"; then
918             dnl required on Mac OS 10.3 where libruby.a doesn't exist
919             librubyarg="-lruby"
920           else
921             librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
922           fi
923         fi
925         if test "X$librubyarg" != "X"; then
926           RUBY_LIBS="$librubyarg $RUBY_LIBS"
927         fi
928         rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
929         if test "X$rubyldflags" != "X"; then
930           LDFLAGS="$rubyldflags $LDFLAGS"
931         fi
932         RUBY_SRC="if_ruby.c"
933         RUBY_OBJ="objects/if_ruby.o"
934         RUBY_PRO="if_ruby.pro"
935         AC_DEFINE(FEAT_RUBY)
936       else
937         AC_MSG_RESULT(not found, disabling Ruby)
938       fi
939     else
940       AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
941     fi
942   fi
944 AC_SUBST(RUBY_SRC)
945 AC_SUBST(RUBY_OBJ)
946 AC_SUBST(RUBY_PRO)
947 AC_SUBST(RUBY_CFLAGS)
948 AC_SUBST(RUBY_LIBS)
950 AC_MSG_CHECKING(--enable-cscope argument)
951 AC_ARG_ENABLE(cscope,
952         [  --enable-cscope         Include cscope interface.], ,
953         [enable_cscope="no"])
954 AC_MSG_RESULT($enable_cscope)
955 if test "$enable_cscope" = "yes"; then
956   AC_DEFINE(FEAT_CSCOPE)
959 AC_MSG_CHECKING(--enable-workshop argument)
960 AC_ARG_ENABLE(workshop,
961         [  --enable-workshop       Include Sun Visual Workshop support.], ,
962         [enable_workshop="no"])
963 AC_MSG_RESULT($enable_workshop)
964 if test "$enable_workshop" = "yes"; then
965   AC_DEFINE(FEAT_SUN_WORKSHOP)
966   WORKSHOP_SRC="workshop.c integration.c"
967   AC_SUBST(WORKSHOP_SRC)
968   WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
969   AC_SUBST(WORKSHOP_OBJ)
970   if test "${enable_gui-xxx}" = xxx; then
971     enable_gui=motif
972   fi
975 AC_MSG_CHECKING(--disable-netbeans argument)
976 AC_ARG_ENABLE(netbeans,
977         [  --disable-netbeans      Disable NetBeans integration support.],
978         , [enable_netbeans="yes"])
979 if test "$enable_netbeans" = "yes"; then
980   AC_MSG_RESULT(no)
981   dnl On Solaris we need the socket and nsl library.
982   AC_CHECK_LIB(socket, socket)
983   AC_CHECK_LIB(nsl, gethostbyname)
984   AC_MSG_CHECKING(whether compiling netbeans integration is possible)
985   AC_TRY_LINK([
986 #include <stdio.h>
987 #include <stdlib.h>
988 #include <stdarg.h>
989 #include <fcntl.h>
990 #include <netdb.h>
991 #include <netinet/in.h>
992 #include <errno.h>
993 #include <sys/types.h>
994 #include <sys/socket.h>
995         /* Check bitfields */
996         struct nbbuf {
997         unsigned int  initDone:1;
998         ushort signmaplen;
999         };
1000             ], [
1001                 /* Check creating a socket. */
1002                 struct sockaddr_in server;
1003                 (void)socket(AF_INET, SOCK_STREAM, 0);
1004                 (void)htons(100);
1005                 (void)gethostbyname("microsoft.com");
1006                 if (errno == ECONNREFUSED)
1007                   (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1008             ],
1009         AC_MSG_RESULT(yes),
1010         AC_MSG_RESULT(no); enable_netbeans="no")
1011 else
1012   AC_MSG_RESULT(yes)
1014 if test "$enable_netbeans" = "yes"; then
1015   AC_DEFINE(FEAT_NETBEANS_INTG)
1016   NETBEANS_SRC="netbeans.c"
1017   AC_SUBST(NETBEANS_SRC)
1018   NETBEANS_OBJ="objects/netbeans.o"
1019   AC_SUBST(NETBEANS_OBJ)
1022 AC_MSG_CHECKING(--enable-sniff argument)
1023 AC_ARG_ENABLE(sniff,
1024         [  --enable-sniff          Include Sniff interface.], ,
1025         [enable_sniff="no"])
1026 AC_MSG_RESULT($enable_sniff)
1027 if test "$enable_sniff" = "yes"; then
1028   AC_DEFINE(FEAT_SNIFF)
1029   SNIFF_SRC="if_sniff.c"
1030   AC_SUBST(SNIFF_SRC)
1031   SNIFF_OBJ="objects/if_sniff.o"
1032   AC_SUBST(SNIFF_OBJ)
1035 AC_MSG_CHECKING(--enable-multibyte argument)
1036 AC_ARG_ENABLE(multibyte,
1037         [  --enable-multibyte      Include multibyte editing support.], ,
1038         [enable_multibyte="no"])
1039 AC_MSG_RESULT($enable_multibyte)
1040 if test "$enable_multibyte" = "yes"; then
1041   AC_DEFINE(FEAT_MBYTE)
1044 AC_MSG_CHECKING(--enable-hangulinput argument)
1045 AC_ARG_ENABLE(hangulinput,
1046         [  --enable-hangulinput    Include Hangul input support.], ,
1047         [enable_hangulinput="no"])
1048 AC_MSG_RESULT($enable_hangulinput)
1050 AC_MSG_CHECKING(--enable-xim argument)
1051 AC_ARG_ENABLE(xim,
1052         [  --enable-xim            Include XIM input support.],
1053         AC_MSG_RESULT($enable_xim),
1054         [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1055 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1057 AC_MSG_CHECKING(--enable-fontset argument)
1058 AC_ARG_ENABLE(fontset,
1059         [  --enable-fontset        Include X fontset output support.], ,
1060         [enable_fontset="no"])
1061 AC_MSG_RESULT($enable_fontset)
1062 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1064 test -z "$with_x" && with_x=yes
1065 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1066 if test "$with_x" = no; then
1067   AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1068 else
1069   dnl Do this check early, so that its failure can override user requests.
1071   AC_PATH_PROG(xmkmfpath, xmkmf)
1073   AC_PATH_XTRA
1075   dnl On OS390Unix the X libraries are DLLs. To use them the code must
1076   dnl be compiled with a special option.
1077   dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1078   if test "$OS390Unix" = "yes"; then
1079     CFLAGS="$CFLAGS -W c,dll"
1080     LDFLAGS="$LDFLAGS -W l,dll"
1081     X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1082   fi
1084   dnl On my HPUX system the X include dir is found, but the lib dir not.
1085   dnl This is a desparate try to fix this.
1087   if test -d "$x_includes" && test ! -d "$x_libraries"; then
1088     x_libraries=`echo "$x_includes" | sed s/include/lib/`
1089     AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1090     X_LIBS="$X_LIBS -L$x_libraries"
1091     if test "`(uname) 2>/dev/null`" = SunOS &&
1092                                          uname -r | grep '^5' >/dev/null; then
1093       X_LIBS="$X_LIBS -R $x_libraries"
1094     fi
1095   fi
1097   if test -d "$x_libraries" && test ! -d "$x_includes"; then
1098     x_includes=`echo "$x_libraries" | sed s/lib/include/`
1099     AC_MSG_RESULT(Corrected X includes to $x_includes)
1100     X_CFLAGS="$X_CFLAGS -I$x_includes"
1101   fi
1103   dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1104   X_CFLAGS="`echo $X_CFLAGS\  | sed 's%-I/usr/include %%'`"
1105   dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1106   X_LIBS="`echo $X_LIBS\  | sed 's%-L/usr/lib %%'`"
1107   dnl Same for "-R/usr/lib ".
1108   X_LIBS="`echo $X_LIBS\  | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1111   dnl Check if the X11 header files are correctly installed. On some systems
1112   dnl Xlib.h includes files that don't exist
1113   AC_MSG_CHECKING(if X11 header files can be found)
1114   cflags_save=$CFLAGS
1115   CFLAGS="$CFLAGS $X_CFLAGS"
1116   AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1117         AC_MSG_RESULT(yes),
1118         AC_MSG_RESULT(no); no_x=yes)
1119   CFLAGS=$cflags_save
1121   if test "${no_x-no}" = yes; then
1122     with_x=no
1123   else
1124     AC_DEFINE(HAVE_X11)
1125     X_LIB="-lXt -lX11";
1126     AC_SUBST(X_LIB)
1128     ac_save_LDFLAGS="$LDFLAGS"
1129     LDFLAGS="-L$x_libraries $LDFLAGS"
1131     dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1132     dnl For HP-UX 10.20 it must be before -lSM -lICE
1133     AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1134                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1136     dnl Some systems need -lnsl -lsocket when testing for ICE.
1137     dnl The check above doesn't do this, try here (again).  Also needed to get
1138     dnl them after Xdmcp.  link.sh will remove them when not needed.
1139     dnl Check for other function than above to avoid the cached value
1140     AC_CHECK_LIB(ICE, IceOpenConnection,
1141                   [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1143     dnl Check for -lXpm (needed for some versions of Motif)
1144     LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1145     AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1146                 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1148     dnl Check that the X11 header files don't use implicit declarations
1149     AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1150     cflags_save=$CFLAGS
1151     CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1152     AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1153         AC_MSG_RESULT(no),
1154         CFLAGS="$CFLAGS -Wno-implicit-int"
1155         AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1156             AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1157             AC_MSG_RESULT(test failed)
1158         )
1159     )
1160     CFLAGS=$cflags_save
1162     LDFLAGS="$ac_save_LDFLAGS"
1164   fi
1167 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1169 AC_MSG_CHECKING(--enable-gui argument)
1170 AC_ARG_ENABLE(gui,
1171  [  --enable-gui[=OPTS]       X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon/macvim]], , enable_gui="auto")
1173 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1174 dnl Do not use character classes for portability with old tools.
1175 enable_gui_canon=`echo "_$enable_gui" | \
1176         sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1178 dnl Skip everything by default.
1179 SKIP_GTK=YES
1180 SKIP_GTK2=YES
1181 SKIP_GNOME=YES
1182 SKIP_MOTIF=YES
1183 SKIP_ATHENA=YES
1184 SKIP_NEXTAW=YES
1185 SKIP_PHOTON=YES
1186 SKIP_CARBON=YES
1187 SKIP_MACVIM=YES
1188 GUITYPE=NONE
1190 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1191   SKIP_PHOTON=
1192   case "$enable_gui_canon" in
1193     no)         AC_MSG_RESULT(no GUI support)
1194                 SKIP_PHOTON=YES ;;
1195     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1196     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1197     photon)     AC_MSG_RESULT(Photon GUI support) ;;
1198     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1199                 SKIP_PHOTON=YES ;;
1200   esac
1202 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1203   SKIP_CARBON=
1204   SKIP_MACVIM=
1205   case "$enable_gui_canon" in
1206     no)         AC_MSG_RESULT(no GUI support)
1207                 SKIP_CARBON=YES 
1208                 SKIP_MACVIM=YES ;;
1209     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1210     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1211     carbon)     AC_MSG_RESULT(Carbon GUI support) 
1212                 SKIP_MACVIM=YES ;;
1213     macvim)     AC_MSG_RESULT(MacVim GUI support) 
1214                 SKIP_CARBON=YES ;;
1215     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1216                 SKIP_CARBON=YES 
1217                 SKIP_MACVIM=YES ;;
1218   esac
1220 else
1222   case "$enable_gui_canon" in
1223     no|none)    AC_MSG_RESULT(no GUI support) ;;
1224     yes|""|auto)        AC_MSG_RESULT(yes/auto - automatic GUI support)
1225                 SKIP_GTK=
1226                 SKIP_GTK2=
1227                 SKIP_GNOME=
1228                 SKIP_MOTIF=
1229                 SKIP_ATHENA=
1230                 SKIP_NEXTAW=
1231                 SKIP_MACVIM=
1232                 SKIP_CARBON=;;
1233     gtk)        AC_MSG_RESULT(GTK+ 1.x GUI support)
1234                 SKIP_GTK=;;
1235     gtk2)       AC_MSG_RESULT(GTK+ 2.x GUI support)
1236                 SKIP_GTK=
1237                 SKIP_GTK2=;;
1238     gnome)      AC_MSG_RESULT(GNOME 1.x GUI support)
1239                 SKIP_GNOME=
1240                 SKIP_GTK=;;
1241     gnome2)     AC_MSG_RESULT(GNOME 2.x GUI support)
1242                 SKIP_GNOME=
1243                 SKIP_GTK=
1244                 SKIP_GTK2=;;
1245     motif)      AC_MSG_RESULT(Motif GUI support)
1246                 SKIP_MOTIF=;;
1247     athena)     AC_MSG_RESULT(Athena GUI support)
1248                 SKIP_ATHENA=;;
1249     nextaw)     AC_MSG_RESULT(neXtaw GUI support)
1250                 SKIP_NEXTAW=;;
1251     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1252   esac
1256 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1257   AC_MSG_CHECKING(whether or not to look for GTK)
1258   AC_ARG_ENABLE(gtk-check,
1259         [  --enable-gtk-check      If auto-select GUI, check for GTK [default=yes]],
1260         , enable_gtk_check="yes")
1261   AC_MSG_RESULT($enable_gtk_check)
1262   if test "x$enable_gtk_check" = "xno"; then
1263     SKIP_GTK=YES
1264     SKIP_GNOME=YES
1265   fi
1268 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1269                                 -a "$enable_gui_canon" != "gnome2"; then
1270   AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1271   AC_ARG_ENABLE(gtk2-check,
1272         [  --enable-gtk2-check     If GTK GUI, check for GTK+ 2 [default=yes]],
1273         , enable_gtk2_check="yes")
1274   AC_MSG_RESULT($enable_gtk2_check)
1275   if test "x$enable_gtk2_check" = "xno"; then
1276     SKIP_GTK2=YES
1277   fi
1280 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1281                                  -a "$enable_gui_canon" != "gnome2"; then
1282   AC_MSG_CHECKING(whether or not to look for GNOME)
1283   AC_ARG_ENABLE(gnome-check,
1284         [  --enable-gnome-check    If GTK GUI, check for GNOME [default=no]],
1285         , enable_gnome_check="no")
1286   AC_MSG_RESULT($enable_gnome_check)
1287   if test "x$enable_gnome_check" = "xno"; then
1288     SKIP_GNOME=YES
1289   fi
1292 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1293   AC_MSG_CHECKING(whether or not to look for Motif)
1294   AC_ARG_ENABLE(motif-check,
1295         [  --enable-motif-check    If auto-select GUI, check for Motif [default=yes]],
1296         , enable_motif_check="yes")
1297   AC_MSG_RESULT($enable_motif_check)
1298   if test "x$enable_motif_check" = "xno"; then
1299     SKIP_MOTIF=YES
1300   fi
1303 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1304   AC_MSG_CHECKING(whether or not to look for Athena)
1305   AC_ARG_ENABLE(athena-check,
1306         [  --enable-athena-check   If auto-select GUI, check for Athena [default=yes]],
1307         , enable_athena_check="yes")
1308   AC_MSG_RESULT($enable_athena_check)
1309   if test "x$enable_athena_check" = "xno"; then
1310     SKIP_ATHENA=YES
1311   fi
1314 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1315   AC_MSG_CHECKING(whether or not to look for neXtaw)
1316   AC_ARG_ENABLE(nextaw-check,
1317         [  --enable-nextaw-check   If auto-select GUI, check for neXtaw [default=yes]],
1318         , enable_nextaw_check="yes")
1319   AC_MSG_RESULT($enable_nextaw_check);
1320   if test "x$enable_nextaw_check" = "xno"; then
1321     SKIP_NEXTAW=YES
1322   fi
1325 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1326   AC_MSG_CHECKING(whether or not to look for Carbon)
1327   AC_ARG_ENABLE(carbon-check,
1328         [  --enable-carbon-check   If auto-select GUI, check for Carbon [default=yes]],
1329         , enable_carbon_check="yes")
1330   AC_MSG_RESULT($enable_carbon_check);
1331   if test "x$enable_carbon_check" = "xno"; then
1332     SKIP_CARBON=YES
1333   fi
1336 if test "x$SKIP_MACVIM" != "xYES" -a "$enable_gui_canon" != "macvim"; then
1337   AC_MSG_CHECKING(whether or not to look for MacVim)
1338   AC_ARG_ENABLE(macvim-check,
1339         [  --enable-macvim-check    If auto-select GUI, check for MacVim [default=yes]],
1340         , enable_macvim_check="yes")
1341   AC_MSG_RESULT($enable_macvim_check);
1342   if test "x$enable_macvim_check" = "xno"; then
1343     SKIP_MACVIM=YES
1344   fi
1347 if test "x$MACOSX" = "xyes"; then
1348   if test -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1349     AC_MSG_CHECKING(for Carbon GUI)
1350     dnl already did the check, just give the message
1351     AC_MSG_RESULT(yes);
1352     GUITYPE=CARBONGUI
1353   elif test -z "$SKIP_MACVIM" -a "x$COCOA" = "xyes"; then
1354     AC_MSG_CHECKING(for MacVim GUI)
1355     dnl already did the check, just give the message
1356     AC_MSG_RESULT(yes);
1357     GUITYPE=MACVIMGUI
1358   fi
1360   if test "$VIMNAME" = "vim"; then
1361     VIMNAME=Vim
1362   fi
1364   dnl Default install directory is not /usr/local
1365   if test x$prefix = xNONE; then
1366     prefix=/Applications
1367   fi
1369   dnl Sorry for the hard coded default
1370   datadir='${prefix}/Vim.app/Contents/Resources'
1372   dnl skip everything else
1373   SKIP_GTK=YES;
1374   SKIP_GTK2=YES;
1375   SKIP_GNOME=YES;
1376   SKIP_MOTIF=YES;
1377   SKIP_ATHENA=YES;
1378   SKIP_NEXTAW=YES;
1379   SKIP_PHOTON=YES;
1380   SKIP_MACVIM=YES;
1381   SKIP_CARBON=YES
1385 dnl Get the cflags and libraries from the gtk-config script
1388 dnl define an autoconf function to check for a specified version of GTK, and
1389 dnl try to compile/link a GTK program.  this gets used once for GTK 1.1.16.
1391 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1392 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1394 AC_DEFUN(AM_PATH_GTK,
1396   if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1397   {
1398     min_gtk_version=ifelse([$1], ,0.99.7,$1)
1399     AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1400     no_gtk=""
1401     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1402           && $PKG_CONFIG --exists gtk+-2.0; then
1403     {
1404       dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1405       dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1406       dnl something like that.
1407       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1408       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1409       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1410       gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1411              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1412       gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1413              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1414       gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1415              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1416     }
1417     elif test "X$GTK_CONFIG" != "Xno"; then
1418     {
1419       GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1420       GTK_LIBDIR=
1421       GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1422       gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1423              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1424       gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1425              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1426       gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1427              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1428     }
1429     else
1430       no_gtk=yes
1431     fi
1433     if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1434     {
1435       ac_save_CFLAGS="$CFLAGS"
1436       ac_save_LIBS="$LIBS"
1437       CFLAGS="$CFLAGS $GTK_CFLAGS"
1438       LIBS="$LIBS $GTK_LIBS"
1440       dnl
1441       dnl Now check if the installed GTK is sufficiently new. (Also sanity
1442       dnl checks the results of gtk-config to some extent
1443       dnl
1444       rm -f conf.gtktest
1445       AC_TRY_RUN([
1446 #include <gtk/gtk.h>
1447 #include <stdio.h>
1450 main ()
1452 int major, minor, micro;
1453 char *tmp_version;
1455 system ("touch conf.gtktest");
1457 /* HP/UX 9 (%@#!) writes to sscanf strings */
1458 tmp_version = g_strdup("$min_gtk_version");
1459 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1460    printf("%s, bad version string\n", "$min_gtk_version");
1461    exit(1);
1464 if ((gtk_major_version > major) ||
1465     ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1466     ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1467                                      (gtk_micro_version >= micro)))
1469     return 0;
1471 return 1;
1473 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1474       CFLAGS="$ac_save_CFLAGS"
1475       LIBS="$ac_save_LIBS"
1476     }
1477     fi
1478     if test "x$no_gtk" = x ; then
1479       if test "x$enable_gtktest" = "xyes"; then
1480         AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1481       else
1482         AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1483       fi
1484       ifelse([$2], , :, [$2])
1485     else
1486     {
1487       AC_MSG_RESULT(no)
1488       GTK_CFLAGS=""
1489       GTK_LIBS=""
1490       ifelse([$3], , :, [$3])
1491     }
1492     fi
1493   }
1494   else
1495     GTK_CFLAGS=""
1496     GTK_LIBS=""
1497     ifelse([$3], , :, [$3])
1498   fi
1499   AC_SUBST(GTK_CFLAGS)
1500   AC_SUBST(GTK_LIBS)
1501   rm -f conf.gtktest
1504 dnl ---------------------------------------------------------------------------
1505 dnl gnome
1506 dnl ---------------------------------------------------------------------------
1507 AC_DEFUN([GNOME_INIT_HOOK],
1509   AC_SUBST(GNOME_LIBS)
1510   AC_SUBST(GNOME_LIBDIR)
1511   AC_SUBST(GNOME_INCLUDEDIR)
1513   AC_ARG_WITH(gnome-includes,
1514     [  --with-gnome-includes=DIR Specify location of GNOME headers],
1515     [CFLAGS="$CFLAGS -I$withval"]
1516   )
1518   AC_ARG_WITH(gnome-libs,
1519     [  --with-gnome-libs=DIR   Specify location of GNOME libs],
1520     [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1521   )
1523   AC_ARG_WITH(gnome,
1524     [  --with-gnome            Specify prefix for GNOME files],
1525     if test x$withval = xyes; then
1526       want_gnome=yes
1527       ifelse([$1], [], :, [$1])
1528     else
1529       if test "x$withval" = xno; then
1530         want_gnome=no
1531       else
1532         want_gnome=yes
1533         LDFLAGS="$LDFLAGS -L$withval/lib"
1534         CFLAGS="$CFLAGS -I$withval/include"
1535         gnome_prefix=$withval/lib
1536       fi
1537     fi,
1538     want_gnome=yes)
1540   if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1541   {
1542     AC_MSG_CHECKING(for libgnomeui-2.0)
1543     if $PKG_CONFIG --exists libgnomeui-2.0; then
1544       AC_MSG_RESULT(yes)
1545       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1546       GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1547       GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1549       dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1550       dnl This might not be the right way but it works for me...
1551       AC_MSG_CHECKING(for FreeBSD)
1552       if test "`(uname) 2>/dev/null`" = FreeBSD; then
1553         AC_MSG_RESULT(yes, adding -pthread)
1554         GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1555         GNOME_LIBS="$GNOME_LIBS -pthread"
1556       else
1557         AC_MSG_RESULT(no)
1558       fi
1559       $1
1560     else
1561       AC_MSG_RESULT(not found)
1562       if test "x$2" = xfail; then
1563         AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1564       fi
1565     fi
1566   }
1567   elif test "x$want_gnome" = xyes; then
1568   {
1569     AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1570     if test "$GNOME_CONFIG" = "no"; then
1571       no_gnome_config="yes"
1572     else
1573       AC_MSG_CHECKING(if $GNOME_CONFIG works)
1574       if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1575         AC_MSG_RESULT(yes)
1576         GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1577         GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1578         GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1579         $1
1580       else
1581         AC_MSG_RESULT(no)
1582         no_gnome_config="yes"
1583       fi
1584     fi
1586     if test x$exec_prefix = xNONE; then
1587       if test x$prefix = xNONE; then
1588         gnome_prefix=$ac_default_prefix/lib
1589       else
1590         gnome_prefix=$prefix/lib
1591       fi
1592     else
1593       gnome_prefix=`eval echo \`echo $libdir\``
1594     fi
1596     if test "$no_gnome_config" = "yes"; then
1597       AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1598       if test -f $gnome_prefix/gnomeConf.sh; then
1599         AC_MSG_RESULT(found)
1600         echo "loading gnome configuration from" \
1601           "$gnome_prefix/gnomeConf.sh"
1602         . $gnome_prefix/gnomeConf.sh
1603         $1
1604       else
1605         AC_MSG_RESULT(not found)
1606         if test x$2 = xfail; then
1607           AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1608         fi
1609       fi
1610     fi
1611   }
1612   fi
1615 AC_DEFUN([GNOME_INIT],[
1616         GNOME_INIT_HOOK([],fail)
1620 dnl ---------------------------------------------------------------------------
1621 dnl Check for GTK.  First checks for gtk-config, cause it needs that to get the
1622 dnl correct compiler flags.  Then checks for GTK 1.1.16.  If that fails, then
1623 dnl it checks for 1.0.6.  If both fail, then continue on for Motif as before...
1624 dnl ---------------------------------------------------------------------------
1625 if test -z "$SKIP_GTK"; then
1627   AC_MSG_CHECKING(--with-gtk-prefix argument)
1628   AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
1629         gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1630         gtk_config_prefix=""; AC_MSG_RESULT(no))
1632   AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1633   AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1634         gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1635         gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1637   AC_MSG_CHECKING(--disable-gtktest argument)
1638   AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
1639         , enable_gtktest=yes)
1640   if test "x$enable_gtktest" = "xyes" ; then
1641     AC_MSG_RESULT(gtk test enabled)
1642   else
1643     AC_MSG_RESULT(gtk test disabled)
1644   fi
1646   if test "x$gtk_config_prefix" != "x" ; then
1647     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1648     GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1649   fi
1650   if test "x$gtk_config_exec_prefix" != "x" ; then
1651     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1652     GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1653   fi
1654   if test "X$GTK_CONFIG" = "X"; then
1655     AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1656     if test "X$GTK_CONFIG" = "Xno"; then
1657       dnl Some distributions call it gtk12-config, annoying!
1658       AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1659       GTK_CONFIG="$GTK12_CONFIG"
1660     fi
1661   else
1662     AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1663   fi
1664   if test "X$PKG_CONFIG" = "X"; then
1665     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1666   fi
1668   if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1669     dnl First try finding version 2.2.0 or later.  The 2.0.x series has
1670     dnl problems (bold fonts, --remote doesn't work).
1671     if test "X$SKIP_GTK2" != "XYES"; then
1672       AM_PATH_GTK(2.2.0,
1673                   [GUI_LIB_LOC="$GTK_LIBDIR"
1674                    GTK_LIBNAME="$GTK_LIBS"
1675                   GUI_INC_LOC="$GTK_CFLAGS"], )
1676       if test "x$GTK_CFLAGS" != "x"; then
1677         SKIP_ATHENA=YES
1678         SKIP_NEXTAW=YES
1679         SKIP_MOTIF=YES
1680         GUITYPE=GTK
1681         AC_SUBST(GTK_LIBNAME)
1682       fi
1683     fi
1685     dnl If there is no 2.2.0 or later try the 1.x.x series.  We require at
1686     dnl least GTK 1.1.16.  1.0.6 doesn't work.  1.1.1 to 1.1.15
1687     dnl were test versions.
1688     if test "x$GUITYPE" != "xGTK"; then
1689       SKIP_GTK2=YES
1690       AM_PATH_GTK(1.1.16,
1691                   [GTK_LIBNAME="$GTK_LIBS"
1692                   GUI_INC_LOC="$GTK_CFLAGS"], )
1693       if test "x$GTK_CFLAGS" != "x"; then
1694         SKIP_ATHENA=YES
1695         SKIP_NEXTAW=YES
1696         SKIP_MOTIF=YES
1697         GUITYPE=GTK
1698         AC_SUBST(GTK_LIBNAME)
1699       fi
1700     fi
1701   fi
1702   dnl Give a warning if GTK is older than 1.2.3
1703   if test "x$GUITYPE" = "xGTK"; then
1704     if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1705          -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1706       AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1707     else
1708     {
1709       if test "0$gtk_major_version" -ge 2; then
1710         AC_DEFINE(HAVE_GTK2)
1711         if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1712                 || test "0$gtk_minor_version" -ge 2 \
1713                 || test "0$gtk_major_version" -gt 2; then
1714           AC_DEFINE(HAVE_GTK_MULTIHEAD)
1715         fi
1716       fi
1717       dnl
1718       dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1719       dnl
1720       if test -z "$SKIP_GNOME"; then
1721       {
1722         GNOME_INIT_HOOK([have_gnome=yes])
1723         if test x$have_gnome = xyes ; then
1724           AC_DEFINE(FEAT_GUI_GNOME)
1725           GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1726           GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1727         fi
1728       }
1729       fi
1730     }
1731     fi
1732   fi
1735 dnl Check for Motif include files location.
1736 dnl The LAST one found is used, this makes the highest version to be used,
1737 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1739 if test -z "$SKIP_MOTIF"; then
1740   gui_XXX="/usr/XXX/Motif* /usr/Motif*/XXX /usr/XXX /usr/shlib /usr/X11*/XXX /usr/XXX/X11* /usr/dt/XXX /local/Motif*/XXX /local/XXX/Motif* /usr/local/Motif*/XXX /usr/local/XXX/Motif* /usr/local/XXX /usr/local/X11*/XXX /usr/local/LessTif/Motif*/XXX $MOTIFHOME/XXX"
1741   dnl Remove "-I" from before $GUI_INC_LOC if it's there
1742   GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1744   AC_MSG_CHECKING(for location of Motif GUI includes)
1745   gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1746   GUI_INC_LOC=
1747   for try in $gui_includes; do
1748     if test -f "$try/Xm/Xm.h"; then
1749       GUI_INC_LOC=$try
1750     fi
1751   done
1752   if test -n "$GUI_INC_LOC"; then
1753     if test "$GUI_INC_LOC" = /usr/include; then
1754       GUI_INC_LOC=
1755       AC_MSG_RESULT(in default path)
1756     else
1757       AC_MSG_RESULT($GUI_INC_LOC)
1758     fi
1759   else
1760     AC_MSG_RESULT(<not found>)
1761     SKIP_MOTIF=YES
1762   fi
1765 dnl Check for Motif library files location.  In the same order as the include
1766 dnl files, to avoid a mixup if several versions are present
1768 if test -z "$SKIP_MOTIF"; then
1769   AC_MSG_CHECKING(--with-motif-lib argument)
1770   AC_ARG_WITH(motif-lib,
1771   [  --with-motif-lib=STRING   Library for Motif ],
1772   [ MOTIF_LIBNAME="${withval}" ] )
1774   if test -n "$MOTIF_LIBNAME"; then
1775     AC_MSG_RESULT($MOTIF_LIBNAME)
1776     GUI_LIB_LOC=
1777   else
1778     AC_MSG_RESULT(no)
1780     dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1781     GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1783     AC_MSG_CHECKING(for location of Motif GUI libs)
1784     gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
1785     GUI_LIB_LOC=
1786     for try in $gui_libs; do
1787       for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1788         if test -f "$libtry"; then
1789           GUI_LIB_LOC=$try
1790         fi
1791       done
1792     done
1793     if test -n "$GUI_LIB_LOC"; then
1794       dnl Remove /usr/lib, it causes trouble on some systems
1795       if test "$GUI_LIB_LOC" = /usr/lib; then
1796         GUI_LIB_LOC=
1797         AC_MSG_RESULT(in default path)
1798       else
1799         if test -n "$GUI_LIB_LOC"; then
1800           AC_MSG_RESULT($GUI_LIB_LOC)
1801           if test "`(uname) 2>/dev/null`" = SunOS &&
1802                                          uname -r | grep '^5' >/dev/null; then
1803             GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1804           fi
1805         fi
1806       fi
1807       MOTIF_LIBNAME=-lXm
1808     else
1809       AC_MSG_RESULT(<not found>)
1810       SKIP_MOTIF=YES
1811     fi
1812   fi
1815 if test -z "$SKIP_MOTIF"; then
1816   SKIP_ATHENA=YES
1817   SKIP_NEXTAW=YES
1818   GUITYPE=MOTIF
1819   AC_SUBST(MOTIF_LIBNAME)
1822 dnl Check if the Athena files can be found
1824 GUI_X_LIBS=
1826 if test -z "$SKIP_ATHENA"; then
1827   AC_MSG_CHECKING(if Athena header files can be found)
1828   cflags_save=$CFLAGS
1829   CFLAGS="$CFLAGS $X_CFLAGS"
1830   AC_TRY_COMPILE([
1831 #include <X11/Intrinsic.h>
1832 #include <X11/Xaw/Paned.h>], ,
1833         AC_MSG_RESULT(yes),
1834         AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1835   CFLAGS=$cflags_save
1838 if test -z "$SKIP_ATHENA"; then
1839   GUITYPE=ATHENA
1842 if test -z "$SKIP_NEXTAW"; then
1843   AC_MSG_CHECKING(if neXtaw header files can be found)
1844   cflags_save=$CFLAGS
1845   CFLAGS="$CFLAGS $X_CFLAGS"
1846   AC_TRY_COMPILE([
1847 #include <X11/Intrinsic.h>
1848 #include <X11/neXtaw/Paned.h>], ,
1849         AC_MSG_RESULT(yes),
1850         AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1851   CFLAGS=$cflags_save
1854 if test -z "$SKIP_NEXTAW"; then
1855   GUITYPE=NEXTAW
1858 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1859   dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1860   dnl Avoid adding it when it twice
1861   if test -n "$GUI_INC_LOC"; then
1862     GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1863   fi
1864   if test -n "$GUI_LIB_LOC"; then
1865     GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1866   fi
1868   dnl Check for -lXext and then for -lXmu
1869   ldflags_save=$LDFLAGS
1870   LDFLAGS="$X_LIBS $LDFLAGS"
1871   AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1872                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1873   dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1874   AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1875                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1876   AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1877                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1878   AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1879                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1880   if test -z "$SKIP_MOTIF"; then
1881     AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1882                 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1883   fi
1884   LDFLAGS=$ldflags_save
1886   dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1887   AC_MSG_CHECKING(for extra X11 defines)
1888   NARROW_PROTO=
1889   rm -fr conftestdir
1890   if mkdir conftestdir; then
1891     cd conftestdir
1892     cat > Imakefile <<'EOF'
1893 acfindx:
1894         @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1896     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1897       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1898     fi
1899     cd ..
1900     rm -fr conftestdir
1901   fi
1902   if test -z "$NARROW_PROTO"; then
1903     AC_MSG_RESULT(no)
1904   else
1905     AC_MSG_RESULT($NARROW_PROTO)
1906   fi
1907   AC_SUBST(NARROW_PROTO)
1910 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1911 dnl use the X11 include path
1912 if test "$enable_xsmp" = "yes"; then
1913   cppflags_save=$CPPFLAGS
1914   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1915   AC_CHECK_HEADERS(X11/SM/SMlib.h)
1916   CPPFLAGS=$cppflags_save
1920 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1921   dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1922   cppflags_save=$CPPFLAGS
1923   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1924   AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1926   dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1927   if test ! "$enable_xim" = "no"; then
1928     AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1929     AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1930                   AC_MSG_RESULT(yes),
1931                   AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1932   fi
1933   CPPFLAGS=$cppflags_save
1935   dnl automatically enable XIM when hangul input isn't enabled
1936   if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1937                 -a "x$GUITYPE" != "xNONE" ; then
1938     AC_MSG_RESULT(X GUI selected; xim has been enabled)
1939     enable_xim="yes"
1940   fi
1943 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1944   cppflags_save=$CPPFLAGS
1945   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1946 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1947   AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1948   AC_TRY_COMPILE([
1949 #include <X11/Intrinsic.h>
1950 #include <X11/Xmu/Editres.h>],
1951                       [int i; i = 0;],
1952               AC_MSG_RESULT(yes)
1953                       AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1954               AC_MSG_RESULT(no))
1955   CPPFLAGS=$cppflags_save
1958 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1959 if test -z "$SKIP_MOTIF"; then
1960   cppflags_save=$CPPFLAGS
1961   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1962   AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
1963                    Xm/UnhighlightT.h Xm/Notebook.h)
1965   if test $ac_cv_header_Xm_XpmP_h = yes; then
1966     dnl Solaris uses XpmAttributes_21, very annoying.
1967     AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1968     AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
1969         AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
1970         AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1971         )
1972   else
1973     AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1974   fi
1975   CPPFLAGS=$cppflags_save
1978 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
1979   AC_MSG_RESULT(no GUI selected; xim has been disabled)
1980   enable_xim="no"
1982 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
1983   AC_MSG_RESULT(no GUI selected; fontset has been disabled)
1984   enable_fontset="no"
1986 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
1987   AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
1988   enable_fontset="no"
1991 if test -z "$SKIP_PHOTON"; then
1992   GUITYPE=PHOTONGUI
1995 AC_SUBST(GUI_INC_LOC)
1996 AC_SUBST(GUI_LIB_LOC)
1997 AC_SUBST(GUITYPE)
1998 AC_SUBST(GUI_X_LIBS)
2000 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2001   AC_MSG_ERROR([cannot use workshop without Motif])
2004 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2005 if test "$enable_xim" = "yes"; then
2006   AC_DEFINE(FEAT_XIM)
2008 if test "$enable_fontset" = "yes"; then
2009   AC_DEFINE(FEAT_XFONTSET)
2013 dnl ---------------------------------------------------------------------------
2014 dnl end of GUI-checking
2015 dnl ---------------------------------------------------------------------------
2018 dnl Only really enable hangul input when GUI and XFONTSET are available
2019 if test "$enable_hangulinput" = "yes"; then
2020   if test "x$GUITYPE" = "xNONE"; then
2021     AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2022     enable_hangulinput=no
2023   else
2024     AC_DEFINE(FEAT_HANGULIN)
2025     HANGULIN_SRC=hangulin.c
2026     AC_SUBST(HANGULIN_SRC)
2027     HANGULIN_OBJ=objects/hangulin.o
2028     AC_SUBST(HANGULIN_OBJ)
2029   fi
2032 dnl Checks for libraries and include files.
2034 AC_MSG_CHECKING(quality of toupper)
2035 AC_TRY_RUN([#include <ctype.h>
2036 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }],
2037         AC_DEFINE(BROKEN_TOUPPER) AC_MSG_RESULT(bad),
2038         AC_MSG_RESULT(good), AC_MSG_ERROR(failed to compile test program))
2040 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2041 AC_TRY_COMPILE(, [printf("(" __DATE__ " " __TIME__ ")");],
2042         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2043         AC_MSG_RESULT(no))
2045 dnl Checks for header files.
2046 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2047 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2048 if test "$HAS_ELF" = 1; then
2049   AC_CHECK_LIB(elf, main)
2052 AC_HEADER_DIRENT
2054 dnl check for standard headers, we don't use this in Vim but other stuff
2055 dnl in autoconf needs it
2056 AC_HEADER_STDC
2057 AC_HEADER_SYS_WAIT
2059 dnl If sys/wait.h is not found it might still exist but not be POSIX
2060 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2061 if test $ac_cv_header_sys_wait_h = no; then
2062   AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2063   AC_TRY_COMPILE([#include <sys/wait.h>],
2064                         [union wait xx, yy; xx = yy],
2065                 AC_MSG_RESULT(yes)
2066                         AC_DEFINE(HAVE_SYS_WAIT_H)
2067                         AC_DEFINE(HAVE_UNION_WAIT),
2068                 AC_MSG_RESULT(no))
2071 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2072         termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2073         iconv.h langinfo.h unistd.h stropts.h errno.h \
2074         sys/resource.h sys/systeminfo.h locale.h \
2075         sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
2076         poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2077         libgen.h util/debug.h util/msg18n.h frame.h \
2078         sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
2080 dnl pthread_np.h may exist but can only be used after including pthread.h
2081 AC_MSG_CHECKING([for pthread_np.h])
2082 AC_TRY_COMPILE([
2083 #include <pthread.h>
2084 #include <pthread_np.h>],
2085                       [int i; i = 0;],
2086               AC_MSG_RESULT(yes)
2087                       AC_DEFINE(HAVE_PTHREAD_NP_H),
2088               AC_MSG_RESULT(no))
2090 AC_CHECK_HEADERS(strings.h)
2091 if test "x$MACOSX" = "xyes"; then
2092   dnl The strings.h file on OS/X contains a warning and nothing useful.
2093   AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2094 else
2096 dnl Check if strings.h and string.h can both be included when defined.
2097 AC_MSG_CHECKING([if strings.h can be included after string.h])
2098 cppflags_save=$CPPFLAGS
2099 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2100 AC_TRY_COMPILE([
2101 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2102 # define _NO_PROTO      /* like in os_unix.h, causes conflict for AIX (Winn) */
2103                         /* but don't do it on AIX 5.1 (Uribarri) */
2104 #endif
2105 #ifdef HAVE_XM_XM_H
2106 # include <Xm/Xm.h>     /* This breaks it for HP-UX 11 (Squassabia) */
2107 #endif
2108 #ifdef HAVE_STRING_H
2109 # include <string.h>
2110 #endif
2111 #if defined(HAVE_STRINGS_H)
2112 # include <strings.h>
2113 #endif
2114                 ], [int i; i = 0;],
2115                 AC_MSG_RESULT(yes),
2116                 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2117                 AC_MSG_RESULT(no))
2118 CPPFLAGS=$cppflags_save
2121 dnl Checks for typedefs, structures, and compiler characteristics.
2122 AC_PROG_GCC_TRADITIONAL
2123 AC_C_CONST
2124 AC_TYPE_MODE_T
2125 AC_TYPE_OFF_T
2126 AC_TYPE_PID_T
2127 AC_TYPE_SIZE_T
2128 AC_TYPE_UID_T
2129 AC_HEADER_TIME
2130 AC_CHECK_TYPE(ino_t, long)
2131 AC_CHECK_TYPE(dev_t, unsigned)
2133 AC_MSG_CHECKING(for rlim_t)
2134 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2135   AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2136 else
2137   AC_EGREP_CPP(dnl
2138 changequote(<<,>>)dnl
2139 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2140 changequote([,]),
2141   [
2142 #include <sys/types.h>
2143 #if STDC_HEADERS
2144 #include <stdlib.h>
2145 #include <stddef.h>
2146 #endif
2147 #ifdef HAVE_SYS_RESOURCE_H
2148 #include <sys/resource.h>
2149 #endif
2150           ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2151           AC_MSG_RESULT($ac_cv_type_rlim_t)
2153 if test $ac_cv_type_rlim_t = no; then
2154   cat >> confdefs.h <<\EOF
2155 #define rlim_t unsigned long
2159 AC_MSG_CHECKING(for stack_t)
2160 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2161   AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2162 else
2163   AC_EGREP_CPP(stack_t,
2164   [
2165 #include <sys/types.h>
2166 #if STDC_HEADERS
2167 #include <stdlib.h>
2168 #include <stddef.h>
2169 #endif
2170 #include <signal.h>
2171           ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2172           AC_MSG_RESULT($ac_cv_type_stack_t)
2174 if test $ac_cv_type_stack_t = no; then
2175   cat >> confdefs.h <<\EOF
2176 #define stack_t struct sigaltstack
2180 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2181 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2182 AC_TRY_COMPILE([
2183 #include <sys/types.h>
2184 #if STDC_HEADERS
2185 #include <stdlib.h>
2186 #include <stddef.h>
2187 #endif
2188 #include <signal.h>
2189 #include "confdefs.h"
2190                         ], [stack_t sigstk; sigstk.ss_base = 0; ],
2191         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2192         AC_MSG_RESULT(no))
2194 olibs="$LIBS"
2195 AC_MSG_CHECKING(--with-tlib argument)
2196 AC_ARG_WITH(tlib, [  --with-tlib=library     terminal library to be used ],)
2197 if test -n "$with_tlib"; then
2198   AC_MSG_RESULT($with_tlib)
2199   LIBS="$LIBS -l$with_tlib"
2200   AC_MSG_CHECKING(for linking with $with_tlib library)
2201   AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2202   dnl Need to check for tgetent() below.
2203   olibs="$LIBS"
2204 else
2205   AC_MSG_RESULT([empty: automatic terminal library selection])
2206   dnl  On HP-UX 10.10 termcap or termlib should be used instead of
2207   dnl  curses, because curses is much slower.
2208   dnl  Newer versions of ncurses are preferred over anything.
2209   dnl  Older versions of ncurses have bugs, get a new one!
2210   dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
2211   dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
2212   case "`uname -s 2>/dev/null`" in
2213         OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
2214         *)      tlibs="ncurses termlib termcap curses";;
2215   esac
2216   for libname in $tlibs; do
2217     AC_CHECK_LIB(${libname}, tgetent,,)
2218     if test "x$olibs" != "x$LIBS"; then
2219       dnl It's possible that a library is found but it doesn't work
2220       dnl e.g., shared library that cannot be found
2221       dnl compile and run a test program to be sure
2222       AC_TRY_RUN([
2223 #ifdef HAVE_TERMCAP_H
2224 # include <termcap.h>
2225 #endif
2226 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2227                           res="OK", res="FAIL", res="FAIL")
2228       if test "$res" = "OK"; then
2229         break
2230       fi
2231       AC_MSG_RESULT($libname library is not usable)
2232       LIBS="$olibs"
2233     fi
2234   done
2235   if test "x$olibs" = "x$LIBS"; then
2236     AC_MSG_RESULT(no terminal library found)
2237   fi
2240 if test "x$olibs" = "x$LIBS"; then
2241   AC_MSG_CHECKING([for tgetent()])
2242   AC_TRY_LINK([],
2243       [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2244         AC_MSG_RESULT(yes),
2245         AC_MSG_ERROR([NOT FOUND!
2246       You need to install a terminal library; for example ncurses.
2247       Or specify the name of the library with --with-tlib.]))
2250 AC_MSG_CHECKING(whether we talk terminfo)
2251 AC_TRY_RUN([
2252 #ifdef HAVE_TERMCAP_H
2253 # include <termcap.h>
2254 #endif
2255 main()
2256 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }],
2257           AC_MSG_RESULT([no -- we are in termcap land]),
2258           AC_MSG_RESULT([yes -- terminfo spoken here]); AC_DEFINE(TERMINFO),
2259           AC_MSG_ERROR(failed to compile test program.))
2261 if test "x$olibs" != "x$LIBS"; then
2262   AC_MSG_CHECKING(what tgetent() returns for an unknown terminal)
2263   AC_TRY_RUN([
2264 #ifdef HAVE_TERMCAP_H
2265 # include <termcap.h>
2266 #endif
2267 main()
2268 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }],
2269           AC_MSG_RESULT(zero); AC_DEFINE(TGETENT_ZERO_ERR, 0),
2270           AC_MSG_RESULT(non-zero),
2271           AC_MSG_ERROR(failed to compile test program.))
2274 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2275 AC_TRY_LINK([
2276 #ifdef HAVE_TERMCAP_H
2277 # include <termcap.h>
2278 #endif
2279                         ], [ospeed = 20000],
2280         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2281         [AC_MSG_RESULT(no)
2282         AC_MSG_CHECKING(whether ospeed can be extern)
2283         AC_TRY_LINK([
2284 #ifdef HAVE_TERMCAP_H
2285 # include <termcap.h>
2286 #endif
2287 extern short ospeed;
2288                         ], [ospeed = 20000],
2289                 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2290                 AC_MSG_RESULT(no))]
2291         )
2293 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2294 AC_TRY_LINK([
2295 #ifdef HAVE_TERMCAP_H
2296 # include <termcap.h>
2297 #endif
2298                         ], [if (UP == 0 && BC == 0) PC = 1],
2299         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2300         [AC_MSG_RESULT(no)
2301         AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2302         AC_TRY_LINK([
2303 #ifdef HAVE_TERMCAP_H
2304 # include <termcap.h>
2305 #endif
2306 extern char *UP, *BC, PC;
2307                         ], [if (UP == 0 && BC == 0) PC = 1],
2308                 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2309                 AC_MSG_RESULT(no))]
2310         )
2312 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2313 AC_TRY_COMPILE([
2314 #ifdef HAVE_TERMCAP_H
2315 # include <termcap.h>
2316 #endif
2317                         ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2318         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2319         AC_MSG_RESULT(no))
2321 dnl On some SCO machines sys/select redefines struct timeval
2322 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2323 AC_TRY_COMPILE([
2324 #include <sys/types.h>
2325 #include <sys/time.h>
2326 #include <sys/select.h>], ,
2327           AC_MSG_RESULT(yes)
2328                         AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2329           AC_MSG_RESULT(no))
2331 dnl AC_DECL_SYS_SIGLIST
2333 dnl Checks for pty.c (copied from screen) ==========================
2334 AC_MSG_CHECKING(for /dev/ptc)
2335 if test -r /dev/ptc; then
2336   AC_DEFINE(HAVE_DEV_PTC)
2337   AC_MSG_RESULT(yes)
2338 else
2339   AC_MSG_RESULT(no)
2342 AC_MSG_CHECKING(for SVR4 ptys)
2343 if test -c /dev/ptmx ; then
2344   AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2345         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2346         AC_MSG_RESULT(no))
2347 else
2348   AC_MSG_RESULT(no)
2351 AC_MSG_CHECKING(for ptyranges)
2352 if test -d /dev/ptym ; then
2353   pdir='/dev/ptym'
2354 else
2355   pdir='/dev'
2357 dnl SCO uses ptyp%d
2358 AC_EGREP_CPP(yes,
2359 [#ifdef M_UNIX
2360    yes;
2361 #endif
2362         ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2363 dnl if test -c /dev/ptyp19; then
2364 dnl ptys=`echo /dev/ptyp??`
2365 dnl else
2366 dnl ptys=`echo $pdir/pty??`
2367 dnl fi
2368 if test "$ptys" != "$pdir/pty??" ; then
2369   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2370   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
2371   AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2372   AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2373   AC_MSG_RESULT([$p0 / $p1])
2374 else
2375   AC_MSG_RESULT([don't know])
2378 dnl    ****  pty mode/group handling ****
2380 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2381 AC_MSG_CHECKING(default tty permissions/group)
2382 rm -f conftest_grp
2383 AC_TRY_RUN([
2384 #include <sys/types.h>
2385 #include <sys/stat.h>
2386 #include <stdio.h>
2387 main()
2389   struct stat sb;
2390   char *x,*ttyname();
2391   int om, m;
2392   FILE *fp;
2394   if (!(x = ttyname(0))) exit(1);
2395   if (stat(x, &sb)) exit(1);
2396   om = sb.st_mode;
2397   if (om & 002) exit(0);
2398   m = system("mesg y");
2399   if (m == -1 || m == 127) exit(1);
2400   if (stat(x, &sb)) exit(1);
2401   m = sb.st_mode;
2402   if (chmod(x, om)) exit(1);
2403   if (m & 002) exit(0);
2404   if (sb.st_gid == getgid()) exit(1);
2405   if (!(fp=fopen("conftest_grp", "w")))
2406     exit(1);
2407   fprintf(fp, "%d\n", sb.st_gid);
2408   fclose(fp);
2409   exit(0);
2412     if test -f conftest_grp; then
2413         ptygrp=`cat conftest_grp`
2414         AC_MSG_RESULT([pty mode: 0620, group: $ptygrp])
2415         AC_DEFINE(PTYMODE, 0620)
2416         AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
2417     else
2418         AC_MSG_RESULT([ptys are world accessable])
2419     fi
2421     AC_MSG_RESULT([can't determine - assume ptys are world accessable]),
2422     AC_MSG_ERROR(failed to compile test program))
2423 rm -f conftest_grp
2425 dnl Checks for library functions. ===================================
2427 AC_TYPE_SIGNAL
2429 dnl find out what to use at the end of a signal function
2430 if test $ac_cv_type_signal = void; then
2431   AC_DEFINE(SIGRETURN, [return])
2432 else
2433   AC_DEFINE(SIGRETURN, [return 0])
2436 dnl check if struct sigcontext is defined (used for SGI only)
2437 AC_MSG_CHECKING(for struct sigcontext)
2438 AC_TRY_COMPILE([
2439 #include <signal.h>
2440 test_sig()
2442     struct sigcontext *scont;
2443     scont = (struct sigcontext *)0;
2444     return 1;
2445 } ], ,
2446           AC_MSG_RESULT(yes)
2447                 AC_DEFINE(HAVE_SIGCONTEXT),
2448           AC_MSG_RESULT(no))
2450 dnl tricky stuff: try to find out if getcwd() is implemented with
2451 dnl system("sh -c pwd")
2452 AC_MSG_CHECKING(getcwd implementation)
2453 AC_TRY_RUN([
2454 char *dagger[] = { "IFS=pwd", 0 };
2455 main()
2457   char buffer[500];
2458   extern char **environ;
2459   environ = dagger;
2460   return getcwd(buffer, 500) ? 0 : 1;
2462         AC_MSG_RESULT(it is usable),
2463         AC_MSG_RESULT(it stinks)
2464                 AC_DEFINE(BAD_GETCWD),
2465         AC_MSG_ERROR(failed to compile test program))
2467 dnl Check for functions in one big call, to reduce the size of configure
2468 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2469         getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2470         memset nanosleep opendir putenv qsort readlink select setenv \
2471         setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2472         sigvec strcasecmp strerror strftime stricmp strncasecmp \
2473         strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2474         usleep utime utimes)
2476 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2477 AC_MSG_CHECKING(for st_blksize)
2478 AC_TRY_COMPILE(
2479 [#include <sys/types.h>
2480 #include <sys/stat.h>],
2481 [       struct stat st;
2482         int n;
2484         stat("/", &st);
2485         n = (int)st.st_blksize;],
2486         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2487         AC_MSG_RESULT(no))
2489 AC_MSG_CHECKING(whether stat() ignores a trailing slash)
2490 AC_TRY_RUN(
2491 [#include <sys/types.h>
2492 #include <sys/stat.h>
2493 main() {struct stat st;  exit(stat("configure/", &st) != 0); }],
2494         AC_MSG_RESULT(yes); AC_DEFINE(STAT_IGNORES_SLASH),
2495         AC_MSG_RESULT(no), AC_MSG_ERROR(failed to compile test program))
2497 dnl Link with iconv for charset translation, if not found without library.
2498 dnl check for iconv() requires including iconv.h
2499 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2500 dnl has been installed.
2501 AC_MSG_CHECKING(for iconv_open())
2502 save_LIBS="$LIBS"
2503 LIBS="$LIBS -liconv"
2504 AC_TRY_LINK([
2505 #ifdef HAVE_ICONV_H
2506 # include <iconv.h>
2507 #endif
2508     ], [iconv_open("fr", "to");],
2509     AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2510     LIBS="$save_LIBS"
2511     AC_TRY_LINK([
2512 #ifdef HAVE_ICONV_H
2513 # include <iconv.h>
2514 #endif
2515         ], [iconv_open("fr", "to");],
2516         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2517         AC_MSG_RESULT(no)))
2520 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2521 AC_TRY_LINK([
2522 #ifdef HAVE_LANGINFO_H
2523 # include <langinfo.h>
2524 #endif
2525 ], [char *cs = nl_langinfo(CODESET);],
2526         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2527         AC_MSG_RESULT(no))
2529 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2530 dnl when -lacl works, also try to use -lattr (required for Debian).
2531 AC_MSG_CHECKING(--disable-acl argument)
2532 AC_ARG_ENABLE(acl,
2533         [  --disable-acl           Don't check for ACL support.],
2534         , [enable_acl="yes"])
2535 if test "$enable_acl" = "yes"; then
2536 AC_MSG_RESULT(no)
2537 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2538         AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2539                   AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2541 AC_MSG_CHECKING(for POSIX ACL support)
2542 AC_TRY_LINK([
2543 #include <sys/types.h>
2544 #ifdef HAVE_SYS_ACL_H
2545 # include <sys/acl.h>
2546 #endif
2547 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2548         acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2549         acl_free(acl);],
2550         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2551         AC_MSG_RESULT(no))
2553 AC_MSG_CHECKING(for Solaris ACL support)
2554 AC_TRY_LINK([
2555 #ifdef HAVE_SYS_ACL_H
2556 # include <sys/acl.h>
2557 #endif], [acl("foo", GETACLCNT, 0, NULL);
2558         ],
2559         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2560         AC_MSG_RESULT(no))
2562 AC_MSG_CHECKING(for AIX ACL support)
2563 AC_TRY_LINK([
2564 #ifdef HAVE_SYS_ACL_H
2565 # include <sys/acl.h>
2566 #endif
2567 #ifdef HAVE_SYS_ACCESS_H
2568 # include <sys/access.h>
2569 #endif
2570 #define _ALL_SOURCE
2572 #include <sys/stat.h>
2574 int aclsize;
2575 struct acl *aclent;], [aclsize = sizeof(struct acl);
2576         aclent = (void *)malloc(aclsize);
2577         statacl("foo", STX_NORMAL, aclent, aclsize);
2578         ],
2579         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2580         AC_MSG_RESULT(no))
2581 else
2582   AC_MSG_RESULT(yes)
2585 AC_MSG_CHECKING(--disable-gpm argument)
2586 AC_ARG_ENABLE(gpm,
2587         [  --disable-gpm           Don't use gpm (Linux mouse daemon).], ,
2588         [enable_gpm="yes"])
2590 if test "$enable_gpm" = "yes"; then
2591   AC_MSG_RESULT(no)
2592   dnl Checking if gpm support can be compiled
2593   AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2594         [olibs="$LIBS" ; LIBS="-lgpm"]
2595         AC_TRY_LINK(
2596             [#include <gpm.h>
2597             #include <linux/keyboard.h>],
2598             [Gpm_GetLibVersion(NULL);],
2599             dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2600             dnl FEAT_MOUSE_GPM if mouse support is included
2601             [vi_cv_have_gpm=yes],
2602             [vi_cv_have_gpm=no])
2603         [LIBS="$olibs"]
2604     )
2605   if test $vi_cv_have_gpm = yes; then
2606     LIBS="$LIBS -lgpm"
2607     AC_DEFINE(HAVE_GPM)
2608   fi
2609 else
2610   AC_MSG_RESULT(yes)
2613 dnl rename needs to be checked separately to work on Nextstep with cc
2614 AC_MSG_CHECKING(for rename)
2615 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2616         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2617         AC_MSG_RESULT(no))
2619 dnl sysctl() may exist but not the arguments we use
2620 AC_MSG_CHECKING(for sysctl)
2621 AC_TRY_COMPILE(
2622 [#include <sys/types.h>
2623 #include <sys/sysctl.h>],
2624 [       int mib[2], r;
2625         size_t len;
2627         mib[0] = CTL_HW;
2628         mib[1] = HW_USERMEM;
2629         len = sizeof(r);
2630         (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2631         ],
2632         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2633         AC_MSG_RESULT(not usable))
2635 dnl sysinfo() may exist but not be Linux compatible
2636 AC_MSG_CHECKING(for sysinfo)
2637 AC_TRY_COMPILE(
2638 [#include <sys/types.h>
2639 #include <sys/sysinfo.h>],
2640 [       struct sysinfo sinfo;
2641         int t;
2643         (void)sysinfo(&sinfo);
2644         t = sinfo.totalram;
2645         ],
2646         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2647         AC_MSG_RESULT(not usable))
2649 dnl struct sysinfo may have the mem_unit field or not
2650 AC_MSG_CHECKING(for sysinfo.mem_unit)
2651 AC_TRY_COMPILE(
2652 [#include <sys/types.h>
2653 #include <sys/sysinfo.h>],
2654 [       struct sysinfo sinfo;
2655         sinfo.mem_unit = 1;
2656         ],
2657         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2658         AC_MSG_RESULT(no))
2660 dnl sysconf() may exist but not support what we want to use
2661 AC_MSG_CHECKING(for sysconf)
2662 AC_TRY_COMPILE(
2663 [#include <unistd.h>],
2664 [       (void)sysconf(_SC_PAGESIZE);
2665         (void)sysconf(_SC_PHYS_PAGES);
2666         ],
2667         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2668         AC_MSG_RESULT(not usable))
2670 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2671 dnl be printed with "%d", and avoids a warning for cross-compiling.
2673 AC_MSG_CHECKING(size of int)
2674 AC_CACHE_VAL(ac_cv_sizeof_int,
2675         [AC_TRY_RUN([#include <stdio.h>
2676                 main()
2677                 {
2678                   FILE *f=fopen("conftestval", "w");
2679                   if (!f) exit(1);
2680                   fprintf(f, "%d\n", (int)sizeof(int));
2681                   exit(0);
2682                 }],
2683             ac_cv_sizeof_int=`cat conftestval`,
2684             ac_cv_sizeof_int=0,
2685             AC_MSG_ERROR(failed to compile test program))])
2686 AC_MSG_RESULT($ac_cv_sizeof_int)
2687 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2689 AC_MSG_CHECKING(whether memmove/bcopy/memcpy handle overlaps)
2690 [bcopy_test_prog='
2691 main() {
2692   char buf[10];
2693   strcpy(buf, "abcdefghi");
2694   mch_memmove(buf, buf + 2, 3);
2695   if (strncmp(buf, "ababcf", 6))
2696     exit(1);
2697   strcpy(buf, "abcdefghi");
2698   mch_memmove(buf + 2, buf, 3);
2699   if (strncmp(buf, "cdedef", 6))
2700     exit(1);
2701   exit(0); /* libc version works properly.  */
2704 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2705 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2707 AC_TRY_RUN([#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog],
2708     AC_DEFINE(USEMEMMOVE) AC_MSG_RESULT(memmove does),
2709     AC_TRY_RUN([#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog],
2710         AC_DEFINE(USEBCOPY) AC_MSG_RESULT(bcopy does),
2711         AC_TRY_RUN([#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog],
2712             AC_DEFINE(USEMEMCPY) AC_MSG_RESULT(memcpy does), AC_MSG_RESULT(no),
2713             AC_MSG_ERROR(failed to compile test program)),
2714         AC_MSG_ERROR(failed to compile test program)),
2715     AC_MSG_ERROR(failed to compile test program))
2717 dnl Check for multibyte locale functions
2718 dnl Find out if _Xsetlocale() is supported by libX11.
2719 dnl Check if X_LOCALE should be defined.
2721 if test "$enable_multibyte" = "yes"; then
2722   cflags_save=$CFLAGS
2723   ldflags_save=$LDFLAGS
2724   if test -n "$x_includes" ; then
2725     CFLAGS="$CFLAGS -I$x_includes"
2726     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2727     AC_MSG_CHECKING(whether X_LOCALE needed)
2728     AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2729         AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2730                 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2731         AC_MSG_RESULT(no))
2732   fi
2733   CFLAGS=$cflags_save
2734   LDFLAGS=$ldflags_save
2737 dnl Link with xpg4, it is said to make Korean locale working
2738 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2740 dnl Check how we can run ctags
2741 dnl --version for Exuberant ctags (preferred)
2742 dnl       Add --fields=+S to get function signatures for omni completion.
2743 dnl -t for typedefs (many ctags have this)
2744 dnl -s for static functions (Elvis ctags only?)
2745 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2746 dnl -i+m to test for older Exuberant ctags
2747 AC_MSG_CHECKING(how to create tags)
2748 test -f tags && mv tags tags.save
2749 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
2750   TAGPRG="ctags -I INIT+ --fields=+S"
2751 else
2752   (eval etags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2753   (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2754   (eval ctags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2755   (eval ctags -t   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2756   (eval ctags -ts  /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2757   (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2758   (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2760 test -f tags.save && mv tags.save tags
2761 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2763 dnl Check how we can run man with a section number
2764 AC_MSG_CHECKING(how to run man with a section nr)
2765 MANDEF="man"
2766 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
2767 AC_MSG_RESULT($MANDEF)
2768 if test "$MANDEF" = "man -s"; then
2769   AC_DEFINE(USEMAN_S)
2772 dnl Check if gettext() is working and if it needs -lintl
2773 AC_MSG_CHECKING(--disable-nls argument)
2774 AC_ARG_ENABLE(nls,
2775         [  --disable-nls           Don't support NLS (gettext()).], ,
2776         [enable_nls="yes"])
2778 if test "$enable_nls" = "yes"; then
2779   AC_MSG_RESULT(no)
2781   INSTALL_LANGS=install-languages
2782   AC_SUBST(INSTALL_LANGS)
2783   INSTALL_TOOL_LANGS=install-tool-languages
2784   AC_SUBST(INSTALL_TOOL_LANGS)
2786   AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
2787   AC_MSG_CHECKING([for NLS])
2788   if test -f po/Makefile; then
2789     have_gettext="no"
2790     if test -n "$MSGFMT"; then
2791       AC_TRY_LINK(
2792         [#include <libintl.h>],
2793         [gettext("Test");],
2794         AC_MSG_RESULT([gettext() works]); have_gettext="yes",
2795           olibs=$LIBS
2796           LIBS="$LIBS -lintl"
2797           AC_TRY_LINK(
2798               [#include <libintl.h>],
2799               [gettext("Test");],
2800               AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
2801               AC_MSG_RESULT([gettext() doesn't work]);
2802               LIBS=$olibs))
2803     else
2804       AC_MSG_RESULT([msgfmt not found - disabled]);
2805     fi
2806     if test $have_gettext = "yes"; then
2807       AC_DEFINE(HAVE_GETTEXT)
2808       MAKEMO=yes
2809       AC_SUBST(MAKEMO)
2810       dnl this was added in GNU gettext 0.10.36
2811       AC_CHECK_FUNCS(bind_textdomain_codeset)
2812       dnl _nl_msg_cat_cntr is required for GNU gettext
2813       AC_MSG_CHECKING([for _nl_msg_cat_cntr])
2814       AC_TRY_LINK(
2815                 [#include <libintl.h>
2816                 extern int _nl_msg_cat_cntr;],
2817                 [++_nl_msg_cat_cntr;],
2818                 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
2819                 AC_MSG_RESULT([no]))
2820     fi
2821   else
2822     AC_MSG_RESULT([no "po/Makefile" - disabled]);
2823   fi
2824 else
2825   AC_MSG_RESULT(yes)
2828 dnl Check for dynamic linking loader
2829 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
2830 if test x${DLL} = xdlfcn.h; then
2831   AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
2832   AC_MSG_CHECKING([for dlopen()])
2833   AC_TRY_LINK(,[
2834                 extern void* dlopen();
2835                 dlopen();
2836       ],
2837       AC_MSG_RESULT(yes);
2838               AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2839       AC_MSG_RESULT(no);
2840               AC_MSG_CHECKING([for dlopen() in -ldl])
2841               olibs=$LIBS
2842               LIBS="$LIBS -ldl"
2843               AC_TRY_LINK(,[
2844                                 extern void* dlopen();
2845                                 dlopen();
2846                  ],
2847                  AC_MSG_RESULT(yes);
2848                           AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2849                  AC_MSG_RESULT(no);
2850                           LIBS=$olibs))
2851   dnl ReliantUNIX has dlopen() in libc but everything else in libdl
2852   dnl ick :-)
2853   AC_MSG_CHECKING([for dlsym()])
2854   AC_TRY_LINK(,[
2855                 extern void* dlsym();
2856                 dlsym();
2857       ],
2858       AC_MSG_RESULT(yes);
2859               AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2860       AC_MSG_RESULT(no);
2861               AC_MSG_CHECKING([for dlsym() in -ldl])
2862               olibs=$LIBS
2863               LIBS="$LIBS -ldl"
2864               AC_TRY_LINK(,[
2865                                 extern void* dlsym();
2866                                 dlsym();
2867                  ],
2868                  AC_MSG_RESULT(yes);
2869                           AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2870                  AC_MSG_RESULT(no);
2871                           LIBS=$olibs))
2872 elif test x${DLL} = xdl.h; then
2873   AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
2874   AC_MSG_CHECKING([for shl_load()])
2875   AC_TRY_LINK(,[
2876                 extern void* shl_load();
2877                 shl_load();
2878      ],
2879      AC_MSG_RESULT(yes);
2880           AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2881      AC_MSG_RESULT(no);
2882           AC_MSG_CHECKING([for shl_load() in -ldld])
2883           olibs=$LIBS
2884           LIBS="$LIBS -ldld"
2885           AC_TRY_LINK(,[
2886                         extern void* shl_load();
2887                         shl_load();
2888              ],
2889              AC_MSG_RESULT(yes);
2890                   AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2891              AC_MSG_RESULT(no);
2892                   LIBS=$olibs))
2894 AC_CHECK_HEADERS(setjmp.h)
2896 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
2897   dnl -ldl must come after DynaLoader.a
2898   if echo $LIBS | grep -e '-ldl' >/dev/null; then
2899     LIBS=`echo $LIBS | sed s/-ldl//`
2900     PERL_LIBS="$PERL_LIBS -ldl"
2901   fi
2904 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
2905         && test "x$GUITYPE" != "xCARBONGUI" && test "x$GUITYPE" != "xMACVIMGUI"; then
2906   AC_MSG_CHECKING(whether we need -framework Carbon)
2907   dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
2908   if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
2909         || test "x$features" = "xhuge"; then
2910     LIBS="$LIBS -framework Carbon"
2911     AC_MSG_RESULT(yes)
2912   else
2913     AC_MSG_RESULT(no)
2914   fi
2916 if test "x$MACARCH" = "xboth"; then
2917   LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
2920 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
2921 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
2922 dnl But only when making dependencies, cproto and lint don't take "-isystem".
2923 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
2924 dnl the number before the version number.
2925 AC_MSG_CHECKING(for GCC 3 or later)
2926 DEPEND_CFLAGS_FILTER=
2927 if test "$GCC" = yes; then
2928   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
2929   if test "$gccmajor" -gt "2"; then
2930     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
2931   fi
2933 if test "$DEPEND_CFLAGS_FILTER" = ""; then
2934   AC_MSG_RESULT(no)
2935 else
2936   AC_MSG_RESULT(yes)
2938 AC_SUBST(DEPEND_CFLAGS_FILTER)
2940 dnl write output files
2941 AC_OUTPUT(auto/config.mk:config.mk.in)
2943 dnl vim: set sw=2 tw=78 fo+=l: