Merge branch 'vim' into feat/emb-common-lisp
[vim_extended.git] / src / configure.in
blob7a1b046426c66b684e2badbef64ab1f7f5d7a92c
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 Check for standard headers.  We don't use this in Vim but other stuff
27 dnl in autoconf needs it, where it uses STDC_HEADERS.
28 AC_HEADER_STDC
29 AC_HEADER_SYS_WAIT
31 dnl Set default value for CFLAGS if none is defined or it's empty
32 if test -z "$CFLAGS"; then
33   CFLAGS="-O"
34   test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
36 if test "$GCC" = yes; then
37   dnl method that should work for nearly all versions
38   gccversion=`"$CC" -dumpversion`
39   if test "x$gccversion" = "x"; then
40     dnl old method; fall-back for when -dumpversion doesn't work
41     gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
42   fi
43   dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
44   if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
45     echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
46     CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
47   else
48     if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
49       echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
50       CFLAGS="$CFLAGS -fno-strength-reduce"
51     fi
52   fi
55 dnl If configure thinks we are cross compiling, there might be something
56 dnl wrong with the CC or CFLAGS settings, give a useful warning message
57 if test "$cross_compiling" = yes; then
58   AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
61 dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
62 dnl But gcc 3.1 changed the meaning!  See near the end.
63 test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
65 if test -f ./toolcheck; then
66   AC_CHECKING(for buggy tools)
67   sh ./toolcheck 1>&AC_FD_MSG
70 OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
72 dnl Check for BeOS, which needs an extra source file
73 AC_MSG_CHECKING(for BeOS)
74 case `uname` in
75     BeOS)       OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
76                 BEOS=yes; AC_MSG_RESULT(yes);;
77     *)          BEOS=no; AC_MSG_RESULT(no);;
78 esac
80 dnl If QNX is found, assume we don't want to use Xphoton
81 dnl unless it was specifically asked for (--with-x)
82 AC_MSG_CHECKING(for QNX)
83 case `uname` in
84     QNX)        OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
85                 test -z "$with_x" && with_x=no
86                 QNX=yes; AC_MSG_RESULT(yes);;
87     *)          QNX=no; AC_MSG_RESULT(no);;
88 esac
90 dnl Check for Darwin and MacOS X
91 dnl We do a check for MacOS X in the very beginning because there
92 dnl are a lot of other things we need to change besides GUI stuff
93 AC_MSG_CHECKING([for Darwin (Mac OS X)])
94 if test "`(uname) 2>/dev/null`" = Darwin; then
95   AC_MSG_RESULT(yes)
97   AC_MSG_CHECKING(--disable-darwin argument)
98   AC_ARG_ENABLE(darwin,
99           [  --disable-darwin        Disable Darwin (Mac OS X) support.],
100           , [enable_darwin="yes"])
101   if test "$enable_darwin" = "yes"; then
102     AC_MSG_RESULT(no)
103     AC_MSG_CHECKING(if Darwin files are there)
104     if test -f os_macosx.c; then
105       AC_MSG_RESULT(yes)
106     else
107       AC_MSG_RESULT([no, Darwin support disabled])
108       enable_darwin=no
109     fi
110   else
111     AC_MSG_RESULT([yes, Darwin support excluded])
112   fi
114   AC_MSG_CHECKING(--with-mac-arch argument)
115   AC_ARG_WITH(mac-arch, [  --with-mac-arch=ARCH    current, intel, ppc or both],
116         MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
117         MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
119   if test "x$MACARCH" = "xboth"; then
120     AC_MSG_CHECKING(for 10.4 universal SDK)
121     dnl There is a terrible inconsistency (but we appear to get away with it):
122     dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
123     dnl doesn't, because "gcc -E" doesn't grok it.  That means the configure
124     dnl tests using the preprocessor are actually done with the wrong header
125     dnl files. $LDFLAGS is set at the end, because configure uses it together
126     dnl with $CFLAGS and we can only have one -sysroot argument.
127     save_cppflags="$CPPFLAGS"
128     save_cflags="$CFLAGS"
129     save_ldflags="$LDFLAGS"
130     CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
131     AC_TRY_LINK([ ], [ ],
132         AC_MSG_RESULT(found, will make universal binary),
134         AC_MSG_RESULT(not found)
135         CFLAGS="$save_cflags"
136         AC_MSG_CHECKING(if Intel architecture is supported)
137         CPPFLAGS="$CPPFLAGS -arch i386"
138         LDFLAGS="$save_ldflags -arch i386"
139         AC_TRY_LINK([ ], [ ],
140             AC_MSG_RESULT(yes); MACARCH="intel",
141             AC_MSG_RESULT(no, using PowerPC)
142                 MACARCH="ppc"
143                 CPPFLAGS="$save_cppflags -arch ppc"
144                 LDFLAGS="$save_ldflags -arch ppc"))
145   elif test "x$MACARCH" = "xintel"; then
146     CPPFLAGS="$CPPFLAGS -arch intel"
147     LDFLAGS="$LDFLAGS -arch intel"
148   elif test "x$MACARCH" = "xppc"; then
149     CPPFLAGS="$CPPFLAGS -arch ppc"
150     LDFLAGS="$LDFLAGS -arch ppc"
151   fi
153   if test "$enable_darwin" = "yes"; then
154     MACOSX=yes
155     OS_EXTRA_SRC="os_macosx.c os_mac_conv.c";
156     OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
157     dnl TODO: use -arch i386 on Intel machines
158     CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
159     if test "x$MACARCH" = "xboth"; then
160       CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
161     else
162       CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
163     fi
165     dnl If Carbon is found, assume we don't want X11
166     dnl unless it was specifically asked for (--with-x)
167     dnl or Motif, Athena or GTK GUI is used.
168     AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
169     if test "x$CARBON" = "xyes"; then
170       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
171         with_x=no
172       fi
173     fi
174   fi
176   dnl Avoid a bug with -O2 with gcc 4.0.1.  Symptom: malloc() reports double
177   dnl free.  This happens in expand_filename(), because the optimizer swaps
178   dnl two blocks of code, both using "repl", that can't be swapped.
179   if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
180     CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
181   fi
183 else
184   AC_MSG_RESULT(no)
187 AC_SUBST(OS_EXTRA_SRC)
188 AC_SUBST(OS_EXTRA_OBJ)
190 dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
191 dnl Only when the directory exists and it wasn't there yet.
192 dnl For gcc don't do this when it is already in the default search path.
193 dnl Skip all of this when cross-compiling.
194 if test "$cross_compiling" = no; then
195   AC_MSG_CHECKING(--with-local-dir argument)
196   have_local_include=''
197   have_local_lib=''
198   AC_ARG_WITH([local-dir], [  --with-local-dir=PATH   search PATH instead of /usr/local for local libraries.
199   --without-local-dir     do not search /usr/local for local libraries.], [
200     local_dir="$withval"
201     case "$withval" in
202     */*) ;;
203     no)
204       # avoid adding local dir to LDFLAGS and CPPFLAGS
205       have_local_dir=yes
206       have_local_lib=yes
207       ;;
208     *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
209     esac
210         AC_MSG_RESULT($local_dir)
211   ], [
212     local_dir=/usr/local
213     AC_MSG_RESULT(Defaulting to $local_dir)
214   ])
215   if test "$GCC" = yes -a "$local_dir" != no; then
216     echo 'void f(){}' > conftest.c
217     dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
218     have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
219     have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
220     rm -f conftest.c conftest.o
221   fi
222   if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
223     tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
224     if test "$tt" = "$LDFLAGS"; then
225       LDFLAGS="$LDFLAGS -L${local_dir}/lib"
226     fi
227   fi
228   if test -z "$have_local_include" -a -d "${local_dir}/include"; then
229     tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
230     if test "$tt" = "$CPPFLAGS"; then
231       CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
232     fi
233   fi
236 AC_MSG_CHECKING(--with-vim-name argument)
237 AC_ARG_WITH(vim-name, [  --with-vim-name=NAME    what to call the Vim executable],
238         VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
239         VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
240 AC_SUBST(VIMNAME)
241 AC_MSG_CHECKING(--with-ex-name argument)
242 AC_ARG_WITH(ex-name, [  --with-ex-name=NAME     what to call the Ex executable],
243         EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
244         EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
245 AC_SUBST(EXNAME)
246 AC_MSG_CHECKING(--with-view-name argument)
247 AC_ARG_WITH(view-name, [  --with-view-name=NAME   what to call the View executable],
248         VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
249         VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
250 AC_SUBST(VIEWNAME)
252 AC_MSG_CHECKING(--with-global-runtime argument)
253 AC_ARG_WITH(global-runtime, [  --with-global-runtime=DIR    global runtime directory in 'runtimepath'],
254         AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
255         AC_MSG_RESULT(no))
257 AC_MSG_CHECKING(--with-modified-by argument)
258 AC_ARG_WITH(modified-by, [  --with-modified-by=NAME       name of who modified a release version],
259         AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
260         AC_MSG_RESULT(no))
262 dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
263 AC_MSG_CHECKING(if character set is EBCDIC)
264 AC_TRY_COMPILE([ ],
265 [ /* TryCompile function for CharSet.
266    Treat any failure as ASCII for compatibility with existing art.
267    Use compile-time rather than run-time tests for cross-compiler
268    tolerance.  */
269 #if '0'!=240
270 make an error "Character set is not EBCDIC"
271 #endif ],
272 [ # TryCompile action if true
273 cf_cv_ebcdic=yes ],
274 [ # TryCompile action if false
275 cf_cv_ebcdic=no])
276 # end of TryCompile ])
277 # end of CacheVal CvEbcdic
278 AC_MSG_RESULT($cf_cv_ebcdic)
279 case "$cf_cv_ebcdic" in  #(vi
280     yes)        AC_DEFINE(EBCDIC)
281                 line_break='"\\n"'
282                 ;;
283     *)          line_break='"\\012"';;
284 esac
285 AC_SUBST(line_break)
287 if test "$cf_cv_ebcdic" = "yes"; then
288 dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
289 AC_MSG_CHECKING(for OS/390 Unix)
290 case `uname` in
291     OS/390)     OS390Unix="yes";
292                 dnl If using cc the environment variable _CC_CCMODE must be
293                 dnl set to "1", so that some compiler extensions are enabled.
294                 dnl If using c89 the environment variable is named _CC_C89MODE.
295                 dnl Note: compile with c89 never tested.
296                 if test "$CC" = "cc"; then
297                   ccm="$_CC_CCMODE"
298                   ccn="CC"
299                 else
300                   if test "$CC" = "c89"; then
301                     ccm="$_CC_C89MODE"
302                     ccn="C89"
303                   else
304                     ccm=1
305                   fi
306                 fi
307                 if test "$ccm" != "1"; then
308                   echo ""
309                   echo "------------------------------------------"
310                   echo " On OS/390 Unix, the environment variable"
311                   echo " __CC_${ccn}MODE must be set to \"1\"!"
312                   echo " Do:"
313                   echo "    export _CC_${ccn}MODE=1"
314                   echo " and then call configure again."
315                   echo "------------------------------------------"
316                   exit 1
317                 fi
318                 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
319                 AC_MSG_RESULT(yes)
320                 ;;
321     *)          OS390Unix="no";
322                 AC_MSG_RESULT(no)
323                 ;;
324 esac
327 dnl Link with -lselinux for SELinux stuff; if not found
328 AC_MSG_CHECKING(--disable-selinux argument)
329 AC_ARG_ENABLE(selinux,
330         [  --disable-selinux      Don't check for SELinux support.],
331         , enable_selinux="yes")
332 if test "$enable_selinux" = "yes"; then
333   AC_MSG_RESULT(no)
334   AC_CHECK_LIB(selinux, is_selinux_enabled,
335           [LIBS="$LIBS -lselinux"
336            AC_DEFINE(HAVE_SELINUX)])
337 else
338    AC_MSG_RESULT(yes)
341 dnl Check user requested features.
343 AC_MSG_CHECKING(--with-features argument)
344 AC_ARG_WITH(features, [  --with-features=TYPE    tiny, small, normal, big or huge (default: normal)],
345         features="$withval"; AC_MSG_RESULT($features),
346         features="normal"; AC_MSG_RESULT(Defaulting to normal))
348 dovimdiff=""
349 dogvimdiff=""
350 case "$features" in
351   tiny)         AC_DEFINE(FEAT_TINY) ;;
352   small)        AC_DEFINE(FEAT_SMALL) ;;
353   normal)       AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
354                         dogvimdiff="installgvimdiff" ;;
355   big)          AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
356                         dogvimdiff="installgvimdiff" ;;
357   huge)         AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
358                         dogvimdiff="installgvimdiff" ;;
359   *)            AC_MSG_RESULT([Sorry, $features is not supported]) ;;
360 esac
362 AC_SUBST(dovimdiff)
363 AC_SUBST(dogvimdiff)
365 AC_MSG_CHECKING(--with-compiledby argument)
366 AC_ARG_WITH(compiledby, [  --with-compiledby=NAME  name to show in :version message],
367         compiledby="$withval"; AC_MSG_RESULT($withval),
368         compiledby=""; AC_MSG_RESULT(no))
369 AC_SUBST(compiledby)
371 AC_MSG_CHECKING(--disable-xsmp argument)
372 AC_ARG_ENABLE(xsmp,
373         [  --disable-xsmp          Disable XSMP session management],
374         , enable_xsmp="yes")
376 if test "$enable_xsmp" = "yes"; then
377   AC_MSG_RESULT(no)
378   AC_MSG_CHECKING(--disable-xsmp-interact argument)
379   AC_ARG_ENABLE(xsmp-interact,
380           [  --disable-xsmp-interact Disable XSMP interaction],
381           , enable_xsmp_interact="yes")
382   if test "$enable_xsmp_interact" = "yes"; then
383     AC_MSG_RESULT(no)
384     AC_DEFINE(USE_XSMP_INTERACT)
385   else
386     AC_MSG_RESULT(yes)
387   fi
388 else
389   AC_MSG_RESULT(yes)
392 dnl Check for MzScheme feature.
393 AC_MSG_CHECKING(--enable-mzschemeinterp argument)
394 AC_ARG_ENABLE(mzschemeinterp,
395         [  --enable-mzschemeinterp   Include MzScheme interpreter.], ,
396         [enable_mzschemeinterp="no"])
397 AC_MSG_RESULT($enable_mzschemeinterp)
399 if test "$enable_mzschemeinterp" = "yes"; then
400   dnl -- find the mzscheme executable
401   AC_SUBST(vi_cv_path_mzscheme)
403   AC_MSG_CHECKING(--with-plthome argument)
404   AC_ARG_WITH(plthome,
405         [  --with-plthome=PLTHOME   Use PLTHOME.],
406         with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
407         with_plthome="";AC_MSG_RESULT("no"))
409   if test "X$with_plthome" != "X"; then
410        vi_cv_path_mzscheme_pfx="$with_plthome"
411   else
412     AC_MSG_CHECKING(PLTHOME environment var)
413     if test "X$PLTHOME" != "X"; then
414         AC_MSG_RESULT("$PLTHOME")
415         vi_cv_path_mzscheme_pfx="$PLTHOME"
416     else
417         AC_MSG_RESULT(not set)
418         dnl -- try to find MzScheme executable
419         AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
421         dnl resolve symbolic link, the executable is often elsewhere and there
422         dnl are no links for the include files.
423         if test "X$vi_cv_path_mzscheme" != "X"; then
424           lsout=`ls -l $vi_cv_path_mzscheme`
425           if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
426             vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
427           fi
428         fi
430         if test "X$vi_cv_path_mzscheme" != "X"; then
431             dnl -- find where MzScheme thinks it was installed
432             AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
433             dnl different versions of MzScheme differ in command line processing
434             dnl use universal approach
435             echo "(display (simplify-path               \
436                (build-path (call-with-values    \
437                 (lambda () (split-path (find-system-path (quote exec-file)))) \
438                 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
439             dnl Remove a trailing slash
440             [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
441                 sed -e 's+/$++'` ])
442             rm -f mzdirs.scm
443         fi
444     fi
445   fi
447   SCHEME_INC=
448   if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
449     AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
450     if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
451       SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
452       AC_MSG_RESULT(yes)
453     else
454       AC_MSG_RESULT(no)
455       AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
456       if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
457         AC_MSG_RESULT(yes)
458         SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
459       else
460         AC_MSG_RESULT(no)
461         AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
462         if test -f /usr/include/plt/scheme.h; then
463           AC_MSG_RESULT(yes)
464           SCHEME_INC=/usr/include/plt
465         else
466           AC_MSG_RESULT(no)
467           vi_cv_path_mzscheme_pfx=
468         fi
469       fi
470     fi
471   fi
473   if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
474     if test "x$MACOSX" = "xyes"; then
475       MZSCHEME_LIBS="-framework PLT_MzScheme"
476     elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
477       MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
478       MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
479     elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
480       MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
481     else
482       dnl Using shared objects
483       if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
484         MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
485         MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
486       else
487         MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
488       fi
489       if test "$GCC" = yes; then
490         dnl Make Vim remember the path to the library.  For when it's not in
491         dnl $LD_LIBRARY_PATH.
492         MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
493       elif test "`(uname) 2>/dev/null`" = SunOS &&
494                                uname -r | grep '^5' >/dev/null; then
495         MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
496       fi
497     fi
498     if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
499       SCHEME_COLLECTS=lib/plt/
500     fi
501     if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
502       dnl need to generate bytecode for MzScheme base
503       MZSCHEME_EXTRA="mzscheme_base.c"
504       MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
505       MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
506     fi
507     MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
508       -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
509     MZSCHEME_SRC="if_mzsch.c"
510     MZSCHEME_OBJ="objects/if_mzsch.o"
511     MZSCHEME_PRO="if_mzsch.pro"
512     AC_DEFINE(FEAT_MZSCHEME)
513   fi
514   AC_SUBST(MZSCHEME_SRC)
515   AC_SUBST(MZSCHEME_OBJ)
516   AC_SUBST(MZSCHEME_PRO)
517   AC_SUBST(MZSCHEME_LIBS)
518   AC_SUBST(MZSCHEME_CFLAGS)
519   AC_SUBST(MZSCHEME_EXTRA)
520   AC_SUBST(MZSCHEME_MZC)
524 AC_MSG_CHECKING(--enable-perlinterp argument)
525 AC_ARG_ENABLE(perlinterp,
526         [  --enable-perlinterp     Include Perl interpreter.], ,
527         [enable_perlinterp="no"])
528 AC_MSG_RESULT($enable_perlinterp)
529 if test "$enable_perlinterp" = "yes"; then
530   AC_SUBST(vi_cv_path_perl)
531   AC_PATH_PROG(vi_cv_path_perl, perl)
532   if test "X$vi_cv_path_perl" != "X"; then
533     AC_MSG_CHECKING(Perl version)
534     if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
535      eval `$vi_cv_path_perl -V:usethreads`
536      if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
537        badthreads=no
538      else
539        if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
540          eval `$vi_cv_path_perl -V:use5005threads`
541          if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
542            badthreads=no
543          else
544            badthreads=yes
545            AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
546          fi
547        else
548          badthreads=yes
549          AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
550        fi
551      fi
552      if test $badthreads = no; then
553       AC_MSG_RESULT(OK)
554       eval `$vi_cv_path_perl -V:shrpenv`
555       if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
556         shrpenv=""
557       fi
558       vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
559       AC_SUBST(vi_cv_perllib)
560       dnl Remove "-fno-something", it breaks using cproto.
561       perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
562               -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
563       dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
564       perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
565                 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
566                         -e 's/-bE:perl.exp//' -e 's/-lc //'`
567       dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
568       dnl a test in configure may fail because of that.
569       perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
570                 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
572       dnl check that compiling a simple program still works with the flags
573       dnl added for Perl.
574       AC_MSG_CHECKING([if compile and link flags for Perl are sane])
575       cflags_save=$CFLAGS
576       libs_save=$LIBS
577       ldflags_save=$LDFLAGS
578       CFLAGS="$CFLAGS $perlcppflags"
579       LIBS="$LIBS $perllibs"
580       LDFLAGS="$perlldflags $LDFLAGS"
581       AC_TRY_LINK(,[ ],
582              AC_MSG_RESULT(yes); perl_ok=yes,
583              AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
584       CFLAGS=$cflags_save
585       LIBS=$libs_save
586       LDFLAGS=$ldflags_save
587       if test $perl_ok = yes; then
588         if test "X$perlcppflags" != "X"; then
589           dnl remove -pipe and -Wxxx, it confuses cproto
590           PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
591         fi
592         if test "X$perlldflags" != "X"; then
593           LDFLAGS="$perlldflags $LDFLAGS"
594         fi
595         PERL_LIBS=$perllibs
596         PERL_SRC="auto/if_perl.c if_perlsfio.c"
597         PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
598         PERL_PRO="if_perl.pro if_perlsfio.pro"
599         AC_DEFINE(FEAT_PERL)
600       fi
601      fi
602     else
603       AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
604     fi
605   fi
607   if test "x$MACOSX" = "xyes"; then
608     dnl Mac OS X 10.2 or later
609     dir=/System/Library/Perl
610     darwindir=$dir/darwin
611     if test -d $darwindir; then
612       PERL=/usr/bin/perl
613     else
614       dnl Mac OS X 10.3
615       dir=/System/Library/Perl/5.8.1
616       darwindir=$dir/darwin-thread-multi-2level
617       if test -d $darwindir; then
618         PERL=/usr/bin/perl
619       fi
620     fi
621     if test -n "$PERL"; then
622       PERL_DIR="$dir"
623       PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
624       PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
625       PERL_LIBS="-L$darwindir/CORE -lperl"
626     fi
627   fi
629 AC_SUBST(shrpenv)
630 AC_SUBST(PERL_SRC)
631 AC_SUBST(PERL_OBJ)
632 AC_SUBST(PERL_PRO)
633 AC_SUBST(PERL_CFLAGS)
634 AC_SUBST(PERL_LIBS)
636 AC_MSG_CHECKING(--enable-eclinterp argument)
637 AC_ARG_ENABLE(eclinterp,
638         [  --enable-eclinterp      Include ECL compiler.], ,
639         [enable_eclinterp="no"])
640 AC_MSG_RESULT($enable_eclinterp)
641 if test "$enable_eclinterp" = "yes"; then
642   dnl -- find the ecl-config executable
643   AC_PATH_PROG(vi_cv_path_ecl_config, ecl-config)
644   if test "X$vi_cv_path_ecl_config" != "X"; then
646     dnl -- Ask ecl-config where to find ecl's libraries
647     AC_CACHE_VAL(vi_cv_path_ecl_plibs,
648     [
649         vi_cv_path_ecl_plibs=`ecl-config --libs`
650     ])
652     ECL_LIBS="${vi_cv_path_ecl_plibs}"
653     AC_CACHE_VAL(vi_cv_path_ecl_cflags,
654     [
655         vi_cv_path_ecl_cflags=`ecl-config --cflags`
656     ])
657     ECL_CFLAGS="${vi_cv_path_ecl_cflags}"
659     ECL_SRC="if_ecl.c"
660     ECL_OBJ="objects/if_ecl.o"
662     dnl check that compiling a simple program still works with the flags
663     dnl added for ECL.
664     AC_MSG_CHECKING([if compile and link flags for ECL are sane])
665     cflags_save=$CFLAGS
666     libs_save=$LIBS
667     CFLAGS="$CFLAGS $ECL_CFLAGS"
668     LIBS="$LIBS $ECL_LIBS"
669     AC_TRY_LINK(,[ ],
670            AC_MSG_RESULT(yes); ecl_ok=yes,
671            AC_MSG_RESULT(no: ECL DISABLED); ecl_ok=no)
672     CFLAGS=$cflags_save
673     LIBS=$libs_save
674     if test $ecl_ok = yes; then
675       AC_DEFINE(FEAT_ECL)
676     else
677       ECL_SRC=
678       ECL_OBJ=
679       ECL_LIBS=
680       ECL_CFLAGS=
681     fi
682   fi
684 AC_SUBST(ECL_LIBS)
685 AC_SUBST(ECL_CFLAGS)
686 AC_SUBST(ECL_SRC)
687 AC_SUBST(ECL_OBJ)
689 AC_MSG_CHECKING(--enable-pythoninterp argument)
690 AC_ARG_ENABLE(pythoninterp,
691         [  --enable-pythoninterp   Include Python interpreter.], ,
692         [enable_pythoninterp="no"])
693 AC_MSG_RESULT($enable_pythoninterp)
694 if test "$enable_pythoninterp" = "yes"; then
695   dnl -- find the python executable
696   AC_PATH_PROG(vi_cv_path_python, python)
697   if test "X$vi_cv_path_python" != "X"; then
699     dnl -- get its version number
700     AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
701     [[vi_cv_var_python_version=`
702             ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
703     ]])
705     dnl -- it must be at least version 1.4
706     AC_MSG_CHECKING(Python is 1.4 or better)
707     if ${vi_cv_path_python} -c \
708         "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
709     then
710       AC_MSG_RESULT(yep)
712       dnl -- find where python thinks it was installed
713       AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
714       [ vi_cv_path_python_pfx=`
715             ${vi_cv_path_python} -c \
716                 "import sys; print sys.prefix"` ])
718       dnl -- and where it thinks it runs
719       AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
720       [ vi_cv_path_python_epfx=`
721             ${vi_cv_path_python} -c \
722                 "import sys; print sys.exec_prefix"` ])
724       dnl -- python's internal library path
726       AC_CACHE_VAL(vi_cv_path_pythonpath,
727       [ vi_cv_path_pythonpath=`
728             unset PYTHONPATH;
729             ${vi_cv_path_python} -c \
730                 "import sys, string; print string.join(sys.path,':')"` ])
732       dnl -- where the Python implementation library archives are
734       AC_ARG_WITH(python-config-dir,
735         [  --with-python-config-dir=PATH  Python's config directory],
736         [ vi_cv_path_python_conf="${withval}" ] )
738       AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
739       [
740         vi_cv_path_python_conf=
741         for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
742           for subdir in lib share; do
743             d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
744             if test -d "$d" && test -f "$d/config.c"; then
745               vi_cv_path_python_conf="$d"
746             fi
747           done
748         done
749       ])
751       PYTHON_CONFDIR="${vi_cv_path_python_conf}"
753       if test "X$PYTHON_CONFDIR" = "X"; then
754         AC_MSG_RESULT([can't find it!])
755       else
757         dnl -- we need to examine Python's config/Makefile too
758         dnl    see what the interpreter is built from
759         AC_CACHE_VAL(vi_cv_path_python_plibs,
760         [
761             pwd=`pwd`
762             tmp_mkf="$pwd/config-PyMake$$"
763             cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
765         @echo "python_MODLIBS='$(MODLIBS)'"
766         @echo "python_LIBS='$(LIBS)'"
767         @echo "python_SYSLIBS='$(SYSLIBS)'"
768         @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
770             dnl -- delete the lines from make about Entering/Leaving directory
771             eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
772             rm -f -- "${tmp_mkf}"
773             if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
774                 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
775               vi_cv_path_python_plibs="-framework Python"
776             else
777               if test "${vi_cv_var_python_version}" = "1.4"; then
778                   vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
779               else
780                   vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
781               fi
782               vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
783               dnl remove -ltermcap, it can conflict with an earlier -lncurses
784               vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
785             fi
786         ])
788         PYTHON_LIBS="${vi_cv_path_python_plibs}"
789         if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
790           PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
791         else
792           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}"
793         fi
794         PYTHON_SRC="if_python.c"
795         dnl For Mac OSX 10.2 config.o is included in the Python library.
796         if test "x$MACOSX" = "xyes"; then
797           PYTHON_OBJ="objects/if_python.o"
798         else
799           PYTHON_OBJ="objects/if_python.o objects/py_config.o"
800         fi
801         if test "${vi_cv_var_python_version}" = "1.4"; then
802            PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
803         fi
804         PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
806         dnl On FreeBSD linking with "-pthread" is required to use threads.
807         dnl _THREAD_SAFE must be used for compiling then.
808         dnl The "-pthread" is added to $LIBS, so that the following check for
809         dnl sigaltstack() will look in libc_r (it's there in libc!).
810         dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS.  GCC
811         dnl will then define target-specific defines, e.g., -D_REENTRANT.
812         dnl Don't do this for Mac OSX, -pthread will generate a warning.
813         AC_MSG_CHECKING([if -pthread should be used])
814         threadsafe_flag=
815         thread_lib=
816         dnl if test "x$MACOSX" != "xyes"; then
817         if test "`(uname) 2>/dev/null`" != Darwin; then
818           test "$GCC" = yes && threadsafe_flag="-pthread"
819           if test "`(uname) 2>/dev/null`" = FreeBSD; then
820             threadsafe_flag="-D_THREAD_SAFE"
821             thread_lib="-pthread"
822           fi
823         fi
824         libs_save_old=$LIBS
825         if test -n "$threadsafe_flag"; then
826           cflags_save=$CFLAGS
827           CFLAGS="$CFLAGS $threadsafe_flag"
828           LIBS="$LIBS $thread_lib"
829           AC_TRY_LINK(,[ ],
830              AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
831              AC_MSG_RESULT(no); LIBS=$libs_save_old
832              )
833           CFLAGS=$cflags_save
834         else
835           AC_MSG_RESULT(no)
836         fi
838         dnl check that compiling a simple program still works with the flags
839         dnl added for Python.
840         AC_MSG_CHECKING([if compile and link flags for Python are sane])
841         cflags_save=$CFLAGS
842         libs_save=$LIBS
843         CFLAGS="$CFLAGS $PYTHON_CFLAGS"
844         LIBS="$LIBS $PYTHON_LIBS"
845         AC_TRY_LINK(,[ ],
846                AC_MSG_RESULT(yes); python_ok=yes,
847                AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
848         CFLAGS=$cflags_save
849         LIBS=$libs_save
850         if test $python_ok = yes; then
851           AC_DEFINE(FEAT_PYTHON)
852         else
853           LIBS=$libs_save_old
854           PYTHON_SRC=
855           PYTHON_OBJ=
856           PYTHON_LIBS=
857           PYTHON_CFLAGS=
858         fi
860       fi
861     else
862       AC_MSG_RESULT(too old)
863     fi
864   fi
866 AC_SUBST(PYTHON_CONFDIR)
867 AC_SUBST(PYTHON_LIBS)
868 AC_SUBST(PYTHON_GETPATH_CFLAGS)
869 AC_SUBST(PYTHON_CFLAGS)
870 AC_SUBST(PYTHON_SRC)
871 AC_SUBST(PYTHON_OBJ)
873 AC_MSG_CHECKING(--enable-tclinterp argument)
874 AC_ARG_ENABLE(tclinterp,
875         [  --enable-tclinterp      Include Tcl interpreter.], ,
876         [enable_tclinterp="no"])
877 AC_MSG_RESULT($enable_tclinterp)
879 if test "$enable_tclinterp" = "yes"; then
881   dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
882   AC_MSG_CHECKING(--with-tclsh argument)
883   AC_ARG_WITH(tclsh, [  --with-tclsh=PATH       which tclsh to use (default: tclsh8.0)],
884         tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
885         tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
886   AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
887   AC_SUBST(vi_cv_path_tcl)
889   dnl when no specific version specified, also try 8.4, 8.2 and 8.0
890   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
891     tclsh_name="tclsh8.4"
892     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
893   fi
894   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
895     tclsh_name="tclsh8.2"
896     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
897   fi
898   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
899     tclsh_name="tclsh8.0"
900     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
901   fi
902   dnl still didn't find it, try without version number
903   if test "X$vi_cv_path_tcl" = "X"; then
904     tclsh_name="tclsh"
905     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
906   fi
907   if test "X$vi_cv_path_tcl" != "X"; then
908     AC_MSG_CHECKING(Tcl version)
909     if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
910       tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
911       AC_MSG_RESULT($tclver - OK);
912       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 -`
914       AC_MSG_CHECKING(for location of Tcl include)
915       if test "x$MACOSX" != "xyes"; then
916         tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
917       else
918         dnl For Mac OS X 10.3, use the OS-provided framework location
919         tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
920       fi
921       TCL_INC=
922       for try in $tclinc; do
923         if test -f "$try/tcl.h"; then
924           AC_MSG_RESULT($try/tcl.h)
925           TCL_INC=$try
926           break
927         fi
928       done
929       if test -z "$TCL_INC"; then
930         AC_MSG_RESULT(<not found>)
931         SKIP_TCL=YES
932       fi
933       if test -z "$SKIP_TCL"; then
934         AC_MSG_CHECKING(for location of tclConfig.sh script)
935         if test "x$MACOSX" != "xyes"; then
936           tclcnf=`echo $tclinc | sed s/include/lib/g`
937           tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
938         else
939           dnl For Mac OS X 10.3, use the OS-provided framework location
940           tclcnf="/System/Library/Frameworks/Tcl.framework"
941         fi
942         for try in $tclcnf; do
943           if test -f $try/tclConfig.sh; then
944             AC_MSG_RESULT($try/tclConfig.sh)
945             . $try/tclConfig.sh
946             dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
947             TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
948             dnl Use $TCL_DEFS for -D_THREAD_SAFE et al.  But only use the
949             dnl "-D_ABC" items.  Watch out for -DFOO=long\ long.
950             TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^[[^-]]/d' -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'`
951             break
952           fi
953         done
954         if test -z "$TCL_LIBS"; then
955           AC_MSG_RESULT(<not found>)
956           AC_MSG_CHECKING(for Tcl library by myself)
957           tcllib=`echo $tclinc | sed s/include/lib/g`
958           tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
959           for ext in .so .a ; do
960             for ver in "" $tclver ; do
961               for try in $tcllib ; do
962                 trylib=tcl$ver$ext
963                 if test -f $try/lib$trylib ; then
964                   AC_MSG_RESULT($try/lib$trylib)
965                   TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
966                   if test "`(uname) 2>/dev/null`" = SunOS &&
967                                          uname -r | grep '^5' >/dev/null; then
968                     TCL_LIBS="$TCL_LIBS -R $try"
969                   fi
970                   break 3
971                 fi
972               done
973             done
974           done
975           if test -z "$TCL_LIBS"; then
976             AC_MSG_RESULT(<not found>)
977             SKIP_TCL=YES
978           fi
979         fi
980         if test -z "$SKIP_TCL"; then
981           AC_DEFINE(FEAT_TCL)
982           TCL_SRC=if_tcl.c
983           TCL_OBJ=objects/if_tcl.o
984           TCL_PRO=if_tcl.pro
985           TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
986         fi
987       fi
988     else
989       AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
990     fi
991   fi
993 AC_SUBST(TCL_SRC)
994 AC_SUBST(TCL_OBJ)
995 AC_SUBST(TCL_PRO)
996 AC_SUBST(TCL_CFLAGS)
997 AC_SUBST(TCL_LIBS)
999 AC_MSG_CHECKING(--enable-rubyinterp argument)
1000 AC_ARG_ENABLE(rubyinterp,
1001         [  --enable-rubyinterp     Include Ruby interpreter.], ,
1002         [enable_rubyinterp="no"])
1003 AC_MSG_RESULT($enable_rubyinterp)
1004 if test "$enable_rubyinterp" = "yes"; then
1005   AC_SUBST(vi_cv_path_ruby)
1006   AC_PATH_PROG(vi_cv_path_ruby, ruby)
1007   if test "X$vi_cv_path_ruby" != "X"; then
1008     AC_MSG_CHECKING(Ruby version)
1009     if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
1010       AC_MSG_RESULT(OK)
1011       AC_MSG_CHECKING(Ruby header files)
1012       rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
1013       if test "X$rubyhdrdir" != "X"; then
1014         AC_MSG_RESULT($rubyhdrdir)
1015         RUBY_CFLAGS="-I$rubyhdrdir"
1016         rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1017         if test "X$rubylibs" != "X"; then
1018           RUBY_LIBS="$rubylibs"
1019         fi
1020         librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
1021         if test -f "$rubyhdrdir/$librubyarg"; then
1022           librubyarg="$rubyhdrdir/$librubyarg"
1023         else
1024           rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1025           if test -f "$rubylibdir/$librubyarg"; then
1026             librubyarg="$rubylibdir/$librubyarg"
1027           elif test "$librubyarg" = "libruby.a"; then
1028             dnl required on Mac OS 10.3 where libruby.a doesn't exist
1029             librubyarg="-lruby"
1030           else
1031             librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
1032           fi
1033         fi
1035         if test "X$librubyarg" != "X"; then
1036           RUBY_LIBS="$librubyarg $RUBY_LIBS"
1037         fi
1038         rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1039         if test "X$rubyldflags" != "X"; then
1040           LDFLAGS="$rubyldflags $LDFLAGS"
1041         fi
1042         RUBY_SRC="if_ruby.c"
1043         RUBY_OBJ="objects/if_ruby.o"
1044         RUBY_PRO="if_ruby.pro"
1045         AC_DEFINE(FEAT_RUBY)
1046       else
1047         AC_MSG_RESULT(not found, disabling Ruby)
1048       fi
1049     else
1050       AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1051     fi
1052   fi
1054 AC_SUBST(RUBY_SRC)
1055 AC_SUBST(RUBY_OBJ)
1056 AC_SUBST(RUBY_PRO)
1057 AC_SUBST(RUBY_CFLAGS)
1058 AC_SUBST(RUBY_LIBS)
1060 AC_MSG_CHECKING(--enable-cscope argument)
1061 AC_ARG_ENABLE(cscope,
1062         [  --enable-cscope         Include cscope interface.], ,
1063         [enable_cscope="no"])
1064 AC_MSG_RESULT($enable_cscope)
1065 if test "$enable_cscope" = "yes"; then
1066   AC_DEFINE(FEAT_CSCOPE)
1069 AC_MSG_CHECKING(--enable-workshop argument)
1070 AC_ARG_ENABLE(workshop,
1071         [  --enable-workshop       Include Sun Visual Workshop support.], ,
1072         [enable_workshop="no"])
1073 AC_MSG_RESULT($enable_workshop)
1074 if test "$enable_workshop" = "yes"; then
1075   AC_DEFINE(FEAT_SUN_WORKSHOP)
1076   WORKSHOP_SRC="workshop.c integration.c"
1077   AC_SUBST(WORKSHOP_SRC)
1078   WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1079   AC_SUBST(WORKSHOP_OBJ)
1080   if test "${enable_gui-xxx}" = xxx; then
1081     enable_gui=motif
1082   fi
1085 AC_MSG_CHECKING(--disable-netbeans argument)
1086 AC_ARG_ENABLE(netbeans,
1087         [  --disable-netbeans      Disable NetBeans integration support.],
1088         , [enable_netbeans="yes"])
1089 if test "$enable_netbeans" = "yes"; then
1090   AC_MSG_RESULT(no)
1091   dnl On Solaris we need the socket and nsl library.
1092   AC_CHECK_LIB(socket, socket)
1093   AC_CHECK_LIB(nsl, gethostbyname)
1094   AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1095   AC_TRY_LINK([
1096 #include <stdio.h>
1097 #include <stdlib.h>
1098 #include <stdarg.h>
1099 #include <fcntl.h>
1100 #include <netdb.h>
1101 #include <netinet/in.h>
1102 #include <errno.h>
1103 #include <sys/types.h>
1104 #include <sys/socket.h>
1105         /* Check bitfields */
1106         struct nbbuf {
1107         unsigned int  initDone:1;
1108         ushort signmaplen;
1109         };
1110             ], [
1111                 /* Check creating a socket. */
1112                 struct sockaddr_in server;
1113                 (void)socket(AF_INET, SOCK_STREAM, 0);
1114                 (void)htons(100);
1115                 (void)gethostbyname("microsoft.com");
1116                 if (errno == ECONNREFUSED)
1117                   (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1118             ],
1119         AC_MSG_RESULT(yes),
1120         AC_MSG_RESULT(no); enable_netbeans="no")
1121 else
1122   AC_MSG_RESULT(yes)
1124 if test "$enable_netbeans" = "yes"; then
1125   AC_DEFINE(FEAT_NETBEANS_INTG)
1126   NETBEANS_SRC="netbeans.c"
1127   AC_SUBST(NETBEANS_SRC)
1128   NETBEANS_OBJ="objects/netbeans.o"
1129   AC_SUBST(NETBEANS_OBJ)
1132 AC_MSG_CHECKING(--enable-sniff argument)
1133 AC_ARG_ENABLE(sniff,
1134         [  --enable-sniff          Include Sniff interface.], ,
1135         [enable_sniff="no"])
1136 AC_MSG_RESULT($enable_sniff)
1137 if test "$enable_sniff" = "yes"; then
1138   AC_DEFINE(FEAT_SNIFF)
1139   SNIFF_SRC="if_sniff.c"
1140   AC_SUBST(SNIFF_SRC)
1141   SNIFF_OBJ="objects/if_sniff.o"
1142   AC_SUBST(SNIFF_OBJ)
1145 AC_MSG_CHECKING(--enable-multibyte argument)
1146 AC_ARG_ENABLE(multibyte,
1147         [  --enable-multibyte      Include multibyte editing support.], ,
1148         [enable_multibyte="no"])
1149 AC_MSG_RESULT($enable_multibyte)
1150 if test "$enable_multibyte" = "yes"; then
1151   AC_DEFINE(FEAT_MBYTE)
1154 AC_MSG_CHECKING(--enable-hangulinput argument)
1155 AC_ARG_ENABLE(hangulinput,
1156         [  --enable-hangulinput    Include Hangul input support.], ,
1157         [enable_hangulinput="no"])
1158 AC_MSG_RESULT($enable_hangulinput)
1160 AC_MSG_CHECKING(--enable-xim argument)
1161 AC_ARG_ENABLE(xim,
1162         [  --enable-xim            Include XIM input support.],
1163         AC_MSG_RESULT($enable_xim),
1164         [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1165 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1167 AC_MSG_CHECKING(--enable-fontset argument)
1168 AC_ARG_ENABLE(fontset,
1169         [  --enable-fontset        Include X fontset output support.], ,
1170         [enable_fontset="no"])
1171 AC_MSG_RESULT($enable_fontset)
1172 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1174 test -z "$with_x" && with_x=yes
1175 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1176 if test "$with_x" = no; then
1177   AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1178 else
1179   dnl Do this check early, so that its failure can override user requests.
1181   AC_PATH_PROG(xmkmfpath, xmkmf)
1183   AC_PATH_XTRA
1185   dnl On OS390Unix the X libraries are DLLs. To use them the code must
1186   dnl be compiled with a special option.
1187   dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1188   if test "$OS390Unix" = "yes"; then
1189     CFLAGS="$CFLAGS -W c,dll"
1190     LDFLAGS="$LDFLAGS -W l,dll"
1191     X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1192   fi
1194   dnl On my HPUX system the X include dir is found, but the lib dir not.
1195   dnl This is a desparate try to fix this.
1197   if test -d "$x_includes" && test ! -d "$x_libraries"; then
1198     x_libraries=`echo "$x_includes" | sed s/include/lib/`
1199     AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1200     X_LIBS="$X_LIBS -L$x_libraries"
1201     if test "`(uname) 2>/dev/null`" = SunOS &&
1202                                          uname -r | grep '^5' >/dev/null; then
1203       X_LIBS="$X_LIBS -R $x_libraries"
1204     fi
1205   fi
1207   if test -d "$x_libraries" && test ! -d "$x_includes"; then
1208     x_includes=`echo "$x_libraries" | sed s/lib/include/`
1209     AC_MSG_RESULT(Corrected X includes to $x_includes)
1210     X_CFLAGS="$X_CFLAGS -I$x_includes"
1211   fi
1213   dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1214   X_CFLAGS="`echo $X_CFLAGS\  | sed 's%-I/usr/include %%'`"
1215   dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1216   X_LIBS="`echo $X_LIBS\  | sed 's%-L/usr/lib %%'`"
1217   dnl Same for "-R/usr/lib ".
1218   X_LIBS="`echo $X_LIBS\  | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1221   dnl Check if the X11 header files are correctly installed. On some systems
1222   dnl Xlib.h includes files that don't exist.  On some systems X11/Intrinsic.h
1223   dnl is missing.
1224   AC_MSG_CHECKING(if X11 header files can be found)
1225   cflags_save=$CFLAGS
1226   CFLAGS="$CFLAGS $X_CFLAGS"
1227   AC_TRY_COMPILE([#include <X11/Xlib.h>
1228 #include <X11/Intrinsic.h>], ,
1229         AC_MSG_RESULT(yes),
1230         AC_MSG_RESULT(no); no_x=yes)
1231   CFLAGS=$cflags_save
1233   if test "${no_x-no}" = yes; then
1234     with_x=no
1235   else
1236     AC_DEFINE(HAVE_X11)
1237     X_LIB="-lXt -lX11";
1238     AC_SUBST(X_LIB)
1240     ac_save_LDFLAGS="$LDFLAGS"
1241     LDFLAGS="-L$x_libraries $LDFLAGS"
1243     dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1244     dnl For HP-UX 10.20 it must be before -lSM -lICE
1245     AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1246                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1248     dnl Some systems need -lnsl -lsocket when testing for ICE.
1249     dnl The check above doesn't do this, try here (again).  Also needed to get
1250     dnl them after Xdmcp.  link.sh will remove them when not needed.
1251     dnl Check for other function than above to avoid the cached value
1252     AC_CHECK_LIB(ICE, IceOpenConnection,
1253                   [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1255     dnl Check for -lXpm (needed for some versions of Motif)
1256     LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1257     AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1258                 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1260     dnl Check that the X11 header files don't use implicit declarations
1261     AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1262     cflags_save=$CFLAGS
1263     CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1264     AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1265         AC_MSG_RESULT(no),
1266         CFLAGS="$CFLAGS -Wno-implicit-int"
1267         AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1268             AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1269             AC_MSG_RESULT(test failed)
1270         )
1271     )
1272     CFLAGS=$cflags_save
1274     LDFLAGS="$ac_save_LDFLAGS"
1276     AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1277     AC_CACHE_VAL(ac_cv_small_wchar_t,
1278         [AC_TRY_RUN([
1279 #include <X11/Xlib.h>
1280 #if STDC_HEADERS
1281 # include <stdlib.h>
1282 # include <stddef.h>
1283 #endif
1284                 main()
1285                 {
1286                   if (sizeof(wchar_t) <= 2)
1287                     exit(1);
1288                   exit(0);
1289                 }],
1290                 ac_cv_small_wchar_t="no",
1291                 ac_cv_small_wchar_t="yes",
1292                 AC_MSG_ERROR(failed to compile test program))])
1293     AC_MSG_RESULT($ac_cv_small_wchar_t)
1294     if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1295       AC_DEFINE(SMALL_WCHAR_T)
1296     fi
1298   fi
1301 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1303 AC_MSG_CHECKING(--enable-gui argument)
1304 AC_ARG_ENABLE(gui,
1305  [  --enable-gui[=OPTS]     X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
1307 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1308 dnl Do not use character classes for portability with old tools.
1309 enable_gui_canon=`echo "_$enable_gui" | \
1310         sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1312 dnl Skip everything by default.
1313 SKIP_GTK=YES
1314 SKIP_GTK2=YES
1315 SKIP_GNOME=YES
1316 SKIP_MOTIF=YES
1317 SKIP_ATHENA=YES
1318 SKIP_NEXTAW=YES
1319 SKIP_PHOTON=YES
1320 SKIP_CARBON=YES
1321 GUITYPE=NONE
1323 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1324   SKIP_PHOTON=
1325   case "$enable_gui_canon" in
1326     no)         AC_MSG_RESULT(no GUI support)
1327                 SKIP_PHOTON=YES ;;
1328     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1329     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1330     photon)     AC_MSG_RESULT(Photon GUI support) ;;
1331     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1332                 SKIP_PHOTON=YES ;;
1333   esac
1335 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1336   SKIP_CARBON=
1337   case "$enable_gui_canon" in
1338     no)         AC_MSG_RESULT(no GUI support)
1339                 SKIP_CARBON=YES ;;
1340     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1341     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1342     carbon)     AC_MSG_RESULT(Carbon GUI support) ;;
1343     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1344                 SKIP_CARBON=YES ;;
1345   esac
1347 else
1349   case "$enable_gui_canon" in
1350     no|none)    AC_MSG_RESULT(no GUI support) ;;
1351     yes|""|auto)        AC_MSG_RESULT(yes/auto - automatic GUI support)
1352                 SKIP_GTK=
1353                 SKIP_GTK2=
1354                 SKIP_GNOME=
1355                 SKIP_MOTIF=
1356                 SKIP_ATHENA=
1357                 SKIP_NEXTAW=
1358                 SKIP_CARBON=;;
1359     gtk)        AC_MSG_RESULT(GTK+ 1.x GUI support)
1360                 SKIP_GTK=;;
1361     gtk2)       AC_MSG_RESULT(GTK+ 2.x GUI support)
1362                 SKIP_GTK=
1363                 SKIP_GTK2=;;
1364     gnome)      AC_MSG_RESULT(GNOME 1.x GUI support)
1365                 SKIP_GNOME=
1366                 SKIP_GTK=;;
1367     gnome2)     AC_MSG_RESULT(GNOME 2.x GUI support)
1368                 SKIP_GNOME=
1369                 SKIP_GTK=
1370                 SKIP_GTK2=;;
1371     motif)      AC_MSG_RESULT(Motif GUI support)
1372                 SKIP_MOTIF=;;
1373     athena)     AC_MSG_RESULT(Athena GUI support)
1374                 SKIP_ATHENA=;;
1375     nextaw)     AC_MSG_RESULT(neXtaw GUI support)
1376                 SKIP_NEXTAW=;;
1377     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1378   esac
1382 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1383   AC_MSG_CHECKING(whether or not to look for GTK)
1384   AC_ARG_ENABLE(gtk-check,
1385         [  --enable-gtk-check      If auto-select GUI, check for GTK [default=yes]],
1386         , enable_gtk_check="yes")
1387   AC_MSG_RESULT($enable_gtk_check)
1388   if test "x$enable_gtk_check" = "xno"; then
1389     SKIP_GTK=YES
1390     SKIP_GNOME=YES
1391   fi
1394 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1395                                 -a "$enable_gui_canon" != "gnome2"; then
1396   AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1397   AC_ARG_ENABLE(gtk2-check,
1398         [  --enable-gtk2-check     If GTK GUI, check for GTK+ 2 [default=yes]],
1399         , enable_gtk2_check="yes")
1400   AC_MSG_RESULT($enable_gtk2_check)
1401   if test "x$enable_gtk2_check" = "xno"; then
1402     SKIP_GTK2=YES
1403   fi
1406 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1407                                  -a "$enable_gui_canon" != "gnome2"; then
1408   AC_MSG_CHECKING(whether or not to look for GNOME)
1409   AC_ARG_ENABLE(gnome-check,
1410         [  --enable-gnome-check    If GTK GUI, check for GNOME [default=no]],
1411         , enable_gnome_check="no")
1412   AC_MSG_RESULT($enable_gnome_check)
1413   if test "x$enable_gnome_check" = "xno"; then
1414     SKIP_GNOME=YES
1415   fi
1418 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1419   AC_MSG_CHECKING(whether or not to look for Motif)
1420   AC_ARG_ENABLE(motif-check,
1421         [  --enable-motif-check    If auto-select GUI, check for Motif [default=yes]],
1422         , enable_motif_check="yes")
1423   AC_MSG_RESULT($enable_motif_check)
1424   if test "x$enable_motif_check" = "xno"; then
1425     SKIP_MOTIF=YES
1426   fi
1429 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1430   AC_MSG_CHECKING(whether or not to look for Athena)
1431   AC_ARG_ENABLE(athena-check,
1432         [  --enable-athena-check   If auto-select GUI, check for Athena [default=yes]],
1433         , enable_athena_check="yes")
1434   AC_MSG_RESULT($enable_athena_check)
1435   if test "x$enable_athena_check" = "xno"; then
1436     SKIP_ATHENA=YES
1437   fi
1440 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1441   AC_MSG_CHECKING(whether or not to look for neXtaw)
1442   AC_ARG_ENABLE(nextaw-check,
1443         [  --enable-nextaw-check   If auto-select GUI, check for neXtaw [default=yes]],
1444         , enable_nextaw_check="yes")
1445   AC_MSG_RESULT($enable_nextaw_check);
1446   if test "x$enable_nextaw_check" = "xno"; then
1447     SKIP_NEXTAW=YES
1448   fi
1451 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1452   AC_MSG_CHECKING(whether or not to look for Carbon)
1453   AC_ARG_ENABLE(carbon-check,
1454         [  --enable-carbon-check   If auto-select GUI, check for Carbon [default=yes]],
1455         , enable_carbon_check="yes")
1456   AC_MSG_RESULT($enable_carbon_check);
1457   if test "x$enable_carbon_check" = "xno"; then
1458     SKIP_CARBON=YES
1459   fi
1463 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1464   AC_MSG_CHECKING(for Carbon GUI)
1465   dnl already did the check, just give the message
1466   AC_MSG_RESULT(yes);
1467   GUITYPE=CARBONGUI
1468   if test "$VIMNAME" = "vim"; then
1469     VIMNAME=Vim
1470   fi
1472   dnl Default install directory is not /usr/local
1473   if test x$prefix = xNONE; then
1474     prefix=/Applications
1475   fi
1477   dnl Sorry for the hard coded default
1478   datadir='${prefix}/Vim.app/Contents/Resources'
1480   dnl skip everything else
1481   SKIP_GTK=YES;
1482   SKIP_GTK2=YES;
1483   SKIP_GNOME=YES;
1484   SKIP_MOTIF=YES;
1485   SKIP_ATHENA=YES;
1486   SKIP_NEXTAW=YES;
1487   SKIP_PHOTON=YES;
1488   SKIP_CARBON=YES
1492 dnl Get the cflags and libraries from the gtk-config script
1495 dnl define an autoconf function to check for a specified version of GTK, and
1496 dnl try to compile/link a GTK program.  this gets used once for GTK 1.1.16.
1498 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1499 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1501 AC_DEFUN(AM_PATH_GTK,
1503   if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1504   {
1505     min_gtk_version=ifelse([$1], ,0.99.7,$1)
1506     AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1507     no_gtk=""
1508     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1509           && $PKG_CONFIG --exists gtk+-2.0; then
1510     {
1511       dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1512       dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1513       dnl something like that.
1514       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1515       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1516       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1517       gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1518              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1519       gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1520              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1521       gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1522              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1523     }
1524     elif test "X$GTK_CONFIG" != "Xno"; then
1525     {
1526       GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1527       GTK_LIBDIR=
1528       GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1529       gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1530              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1531       gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1532              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1533       gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1534              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1535     }
1536     else
1537       no_gtk=yes
1538     fi
1540     if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1541     {
1542       ac_save_CFLAGS="$CFLAGS"
1543       ac_save_LIBS="$LIBS"
1544       CFLAGS="$CFLAGS $GTK_CFLAGS"
1545       LIBS="$LIBS $GTK_LIBS"
1547       dnl
1548       dnl Now check if the installed GTK is sufficiently new. (Also sanity
1549       dnl checks the results of gtk-config to some extent
1550       dnl
1551       rm -f conf.gtktest
1552       AC_TRY_RUN([
1553 #include <gtk/gtk.h>
1554 #include <stdio.h>
1555 #if STDC_HEADERS
1556 # include <stdlib.h>
1557 # include <stddef.h>
1558 #endif
1561 main ()
1563 int major, minor, micro;
1564 char *tmp_version;
1566 system ("touch conf.gtktest");
1568 /* HP/UX 9 (%@#!) writes to sscanf strings */
1569 tmp_version = g_strdup("$min_gtk_version");
1570 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1571    printf("%s, bad version string\n", "$min_gtk_version");
1572    exit(1);
1575 if ((gtk_major_version > major) ||
1576     ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1577     ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1578                                      (gtk_micro_version >= micro)))
1580     return 0;
1582 return 1;
1584 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1585       CFLAGS="$ac_save_CFLAGS"
1586       LIBS="$ac_save_LIBS"
1587     }
1588     fi
1589     if test "x$no_gtk" = x ; then
1590       if test "x$enable_gtktest" = "xyes"; then
1591         AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1592       else
1593         AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1594       fi
1595       ifelse([$2], , :, [$2])
1596     else
1597     {
1598       AC_MSG_RESULT(no)
1599       GTK_CFLAGS=""
1600       GTK_LIBS=""
1601       ifelse([$3], , :, [$3])
1602     }
1603     fi
1604   }
1605   else
1606     GTK_CFLAGS=""
1607     GTK_LIBS=""
1608     ifelse([$3], , :, [$3])
1609   fi
1610   AC_SUBST(GTK_CFLAGS)
1611   AC_SUBST(GTK_LIBS)
1612   rm -f conf.gtktest
1615 dnl ---------------------------------------------------------------------------
1616 dnl gnome
1617 dnl ---------------------------------------------------------------------------
1618 AC_DEFUN([GNOME_INIT_HOOK],
1620   AC_SUBST(GNOME_LIBS)
1621   AC_SUBST(GNOME_LIBDIR)
1622   AC_SUBST(GNOME_INCLUDEDIR)
1624   AC_ARG_WITH(gnome-includes,
1625     [  --with-gnome-includes=DIR Specify location of GNOME headers],
1626     [CFLAGS="$CFLAGS -I$withval"]
1627   )
1629   AC_ARG_WITH(gnome-libs,
1630     [  --with-gnome-libs=DIR   Specify location of GNOME libs],
1631     [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1632   )
1634   AC_ARG_WITH(gnome,
1635     [  --with-gnome            Specify prefix for GNOME files],
1636     if test x$withval = xyes; then
1637       want_gnome=yes
1638       ifelse([$1], [], :, [$1])
1639     else
1640       if test "x$withval" = xno; then
1641         want_gnome=no
1642       else
1643         want_gnome=yes
1644         LDFLAGS="$LDFLAGS -L$withval/lib"
1645         CFLAGS="$CFLAGS -I$withval/include"
1646         gnome_prefix=$withval/lib
1647       fi
1648     fi,
1649     want_gnome=yes)
1651   if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1652   {
1653     AC_MSG_CHECKING(for libgnomeui-2.0)
1654     if $PKG_CONFIG --exists libgnomeui-2.0; then
1655       AC_MSG_RESULT(yes)
1656       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1657       GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1658       GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1660       dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1661       dnl This might not be the right way but it works for me...
1662       AC_MSG_CHECKING(for FreeBSD)
1663       if test "`(uname) 2>/dev/null`" = FreeBSD; then
1664         AC_MSG_RESULT(yes, adding -pthread)
1665         GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1666         GNOME_LIBS="$GNOME_LIBS -pthread"
1667       else
1668         AC_MSG_RESULT(no)
1669       fi
1670       $1
1671     else
1672       AC_MSG_RESULT(not found)
1673       if test "x$2" = xfail; then
1674         AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1675       fi
1676     fi
1677   }
1678   elif test "x$want_gnome" = xyes; then
1679   {
1680     AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1681     if test "$GNOME_CONFIG" = "no"; then
1682       no_gnome_config="yes"
1683     else
1684       AC_MSG_CHECKING(if $GNOME_CONFIG works)
1685       if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1686         AC_MSG_RESULT(yes)
1687         GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1688         GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1689         GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1690         $1
1691       else
1692         AC_MSG_RESULT(no)
1693         no_gnome_config="yes"
1694       fi
1695     fi
1697     if test x$exec_prefix = xNONE; then
1698       if test x$prefix = xNONE; then
1699         gnome_prefix=$ac_default_prefix/lib
1700       else
1701         gnome_prefix=$prefix/lib
1702       fi
1703     else
1704       gnome_prefix=`eval echo \`echo $libdir\``
1705     fi
1707     if test "$no_gnome_config" = "yes"; then
1708       AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1709       if test -f $gnome_prefix/gnomeConf.sh; then
1710         AC_MSG_RESULT(found)
1711         echo "loading gnome configuration from" \
1712           "$gnome_prefix/gnomeConf.sh"
1713         . $gnome_prefix/gnomeConf.sh
1714         $1
1715       else
1716         AC_MSG_RESULT(not found)
1717         if test x$2 = xfail; then
1718           AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1719         fi
1720       fi
1721     fi
1722   }
1723   fi
1726 AC_DEFUN([GNOME_INIT],[
1727         GNOME_INIT_HOOK([],fail)
1731 dnl ---------------------------------------------------------------------------
1732 dnl Check for GTK.  First checks for gtk-config, cause it needs that to get the
1733 dnl correct compiler flags.  Then checks for GTK 1.1.16.  If that fails, then
1734 dnl it checks for 1.0.6.  If both fail, then continue on for Motif as before...
1735 dnl ---------------------------------------------------------------------------
1736 if test -z "$SKIP_GTK"; then
1738   AC_MSG_CHECKING(--with-gtk-prefix argument)
1739   AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
1740         gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1741         gtk_config_prefix=""; AC_MSG_RESULT(no))
1743   AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1744   AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1745         gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1746         gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1748   AC_MSG_CHECKING(--disable-gtktest argument)
1749   AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
1750         , enable_gtktest=yes)
1751   if test "x$enable_gtktest" = "xyes" ; then
1752     AC_MSG_RESULT(gtk test enabled)
1753   else
1754     AC_MSG_RESULT(gtk test disabled)
1755   fi
1757   if test "x$gtk_config_prefix" != "x" ; then
1758     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1759     GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1760   fi
1761   if test "x$gtk_config_exec_prefix" != "x" ; then
1762     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1763     GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1764   fi
1765   if test "X$GTK_CONFIG" = "X"; then
1766     AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1767     if test "X$GTK_CONFIG" = "Xno"; then
1768       dnl Some distributions call it gtk12-config, annoying!
1769       AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1770       GTK_CONFIG="$GTK12_CONFIG"
1771     fi
1772   else
1773     AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1774   fi
1775   if test "X$PKG_CONFIG" = "X"; then
1776     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1777   fi
1779   if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1780     dnl First try finding version 2.2.0 or later.  The 2.0.x series has
1781     dnl problems (bold fonts, --remote doesn't work).
1782     if test "X$SKIP_GTK2" != "XYES"; then
1783       AM_PATH_GTK(2.2.0,
1784                   [GUI_LIB_LOC="$GTK_LIBDIR"
1785                    GTK_LIBNAME="$GTK_LIBS"
1786                   GUI_INC_LOC="$GTK_CFLAGS"], )
1787       if test "x$GTK_CFLAGS" != "x"; then
1788         SKIP_ATHENA=YES
1789         SKIP_NEXTAW=YES
1790         SKIP_MOTIF=YES
1791         GUITYPE=GTK
1792         AC_SUBST(GTK_LIBNAME)
1793       fi
1794     fi
1796     dnl If there is no 2.2.0 or later try the 1.x.x series.  We require at
1797     dnl least GTK 1.1.16.  1.0.6 doesn't work.  1.1.1 to 1.1.15
1798     dnl were test versions.
1799     if test "x$GUITYPE" != "xGTK"; then
1800       SKIP_GTK2=YES
1801       AM_PATH_GTK(1.1.16,
1802                   [GTK_LIBNAME="$GTK_LIBS"
1803                   GUI_INC_LOC="$GTK_CFLAGS"], )
1804       if test "x$GTK_CFLAGS" != "x"; then
1805         SKIP_ATHENA=YES
1806         SKIP_NEXTAW=YES
1807         SKIP_MOTIF=YES
1808         GUITYPE=GTK
1809         AC_SUBST(GTK_LIBNAME)
1810       fi
1811     fi
1812   fi
1813   dnl Give a warning if GTK is older than 1.2.3
1814   if test "x$GUITYPE" = "xGTK"; then
1815     if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1816          -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1817       AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1818     else
1819     {
1820       if test "0$gtk_major_version" -ge 2; then
1821         AC_DEFINE(HAVE_GTK2)
1822         if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1823                 || test "0$gtk_minor_version" -ge 2 \
1824                 || test "0$gtk_major_version" -gt 2; then
1825           AC_DEFINE(HAVE_GTK_MULTIHEAD)
1826         fi
1827       fi
1828       dnl
1829       dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1830       dnl
1831       if test -z "$SKIP_GNOME"; then
1832       {
1833         GNOME_INIT_HOOK([have_gnome=yes])
1834         if test x$have_gnome = xyes ; then
1835           AC_DEFINE(FEAT_GUI_GNOME)
1836           GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1837           GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1838         fi
1839       }
1840       fi
1841     }
1842     fi
1843   fi
1846 dnl Check for Motif include files location.
1847 dnl The LAST one found is used, this makes the highest version to be used,
1848 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1850 if test -z "$SKIP_MOTIF"; then
1851   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"
1852   dnl Remove "-I" from before $GUI_INC_LOC if it's there
1853   GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1855   AC_MSG_CHECKING(for location of Motif GUI includes)
1856   gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1857   GUI_INC_LOC=
1858   for try in $gui_includes; do
1859     if test -f "$try/Xm/Xm.h"; then
1860       GUI_INC_LOC=$try
1861     fi
1862   done
1863   if test -n "$GUI_INC_LOC"; then
1864     if test "$GUI_INC_LOC" = /usr/include; then
1865       GUI_INC_LOC=
1866       AC_MSG_RESULT(in default path)
1867     else
1868       AC_MSG_RESULT($GUI_INC_LOC)
1869     fi
1870   else
1871     AC_MSG_RESULT(<not found>)
1872     SKIP_MOTIF=YES
1873   fi
1876 dnl Check for Motif library files location.  In the same order as the include
1877 dnl files, to avoid a mixup if several versions are present
1879 if test -z "$SKIP_MOTIF"; then
1880   AC_MSG_CHECKING(--with-motif-lib argument)
1881   AC_ARG_WITH(motif-lib,
1882   [  --with-motif-lib=STRING   Library for Motif ],
1883   [ MOTIF_LIBNAME="${withval}" ] )
1885   if test -n "$MOTIF_LIBNAME"; then
1886     AC_MSG_RESULT($MOTIF_LIBNAME)
1887     GUI_LIB_LOC=
1888   else
1889     AC_MSG_RESULT(no)
1891     dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1892     GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1894     AC_MSG_CHECKING(for location of Motif GUI libs)
1895     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"
1896     GUI_LIB_LOC=
1897     for try in $gui_libs; do
1898       for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1899         if test -f "$libtry"; then
1900           GUI_LIB_LOC=$try
1901         fi
1902       done
1903     done
1904     if test -n "$GUI_LIB_LOC"; then
1905       dnl Remove /usr/lib, it causes trouble on some systems
1906       if test "$GUI_LIB_LOC" = /usr/lib; then
1907         GUI_LIB_LOC=
1908         AC_MSG_RESULT(in default path)
1909       else
1910         if test -n "$GUI_LIB_LOC"; then
1911           AC_MSG_RESULT($GUI_LIB_LOC)
1912           if test "`(uname) 2>/dev/null`" = SunOS &&
1913                                          uname -r | grep '^5' >/dev/null; then
1914             GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1915           fi
1916         fi
1917       fi
1918       MOTIF_LIBNAME=-lXm
1919     else
1920       AC_MSG_RESULT(<not found>)
1921       SKIP_MOTIF=YES
1922     fi
1923   fi
1926 if test -z "$SKIP_MOTIF"; then
1927   SKIP_ATHENA=YES
1928   SKIP_NEXTAW=YES
1929   GUITYPE=MOTIF
1930   AC_SUBST(MOTIF_LIBNAME)
1933 dnl Check if the Athena files can be found
1935 GUI_X_LIBS=
1937 if test -z "$SKIP_ATHENA"; then
1938   AC_MSG_CHECKING(if Athena header files can be found)
1939   cflags_save=$CFLAGS
1940   CFLAGS="$CFLAGS $X_CFLAGS"
1941   AC_TRY_COMPILE([
1942 #include <X11/Intrinsic.h>
1943 #include <X11/Xaw/Paned.h>], ,
1944         AC_MSG_RESULT(yes),
1945         AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1946   CFLAGS=$cflags_save
1949 if test -z "$SKIP_ATHENA"; then
1950   GUITYPE=ATHENA
1953 if test -z "$SKIP_NEXTAW"; then
1954   AC_MSG_CHECKING(if neXtaw header files can be found)
1955   cflags_save=$CFLAGS
1956   CFLAGS="$CFLAGS $X_CFLAGS"
1957   AC_TRY_COMPILE([
1958 #include <X11/Intrinsic.h>
1959 #include <X11/neXtaw/Paned.h>], ,
1960         AC_MSG_RESULT(yes),
1961         AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1962   CFLAGS=$cflags_save
1965 if test -z "$SKIP_NEXTAW"; then
1966   GUITYPE=NEXTAW
1969 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1970   dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1971   dnl Avoid adding it when it twice
1972   if test -n "$GUI_INC_LOC"; then
1973     GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1974   fi
1975   if test -n "$GUI_LIB_LOC"; then
1976     GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1977   fi
1979   dnl Check for -lXext and then for -lXmu
1980   ldflags_save=$LDFLAGS
1981   LDFLAGS="$X_LIBS $LDFLAGS"
1982   AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1983                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1984   dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1985   AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1986                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1987   AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1988                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1989   AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1990                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1991   if test -z "$SKIP_MOTIF"; then
1992     AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1993                 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1994   fi
1995   LDFLAGS=$ldflags_save
1997   dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1998   AC_MSG_CHECKING(for extra X11 defines)
1999   NARROW_PROTO=
2000   rm -fr conftestdir
2001   if mkdir conftestdir; then
2002     cd conftestdir
2003     cat > Imakefile <<'EOF'
2004 acfindx:
2005         @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2007     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2008       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2009     fi
2010     cd ..
2011     rm -fr conftestdir
2012   fi
2013   if test -z "$NARROW_PROTO"; then
2014     AC_MSG_RESULT(no)
2015   else
2016     AC_MSG_RESULT($NARROW_PROTO)
2017   fi
2018   AC_SUBST(NARROW_PROTO)
2021 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2022 dnl use the X11 include path
2023 if test "$enable_xsmp" = "yes"; then
2024   cppflags_save=$CPPFLAGS
2025   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2026   AC_CHECK_HEADERS(X11/SM/SMlib.h)
2027   CPPFLAGS=$cppflags_save
2031 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
2032   dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2033   cppflags_save=$CPPFLAGS
2034   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2035   AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2037   dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2038   if test ! "$enable_xim" = "no"; then
2039     AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2040     AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2041                   AC_MSG_RESULT(yes),
2042                   AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2043   fi
2044   CPPFLAGS=$cppflags_save
2046   dnl automatically enable XIM when hangul input isn't enabled
2047   if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2048                 -a "x$GUITYPE" != "xNONE" ; then
2049     AC_MSG_RESULT(X GUI selected; xim has been enabled)
2050     enable_xim="yes"
2051   fi
2054 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2055   cppflags_save=$CPPFLAGS
2056   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2057 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2058   AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2059   AC_TRY_COMPILE([
2060 #include <X11/Intrinsic.h>
2061 #include <X11/Xmu/Editres.h>],
2062                       [int i; i = 0;],
2063               AC_MSG_RESULT(yes)
2064                       AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2065               AC_MSG_RESULT(no))
2066   CPPFLAGS=$cppflags_save
2069 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2070 if test -z "$SKIP_MOTIF"; then
2071   cppflags_save=$CPPFLAGS
2072   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2073   AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
2074                    Xm/UnhighlightT.h Xm/Notebook.h)
2076   if test $ac_cv_header_Xm_XpmP_h = yes; then
2077     dnl Solaris uses XpmAttributes_21, very annoying.
2078     AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2079     AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2080         AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2081         AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2082         )
2083   else
2084     AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2085   fi
2086   CPPFLAGS=$cppflags_save
2089 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2090   AC_MSG_RESULT(no GUI selected; xim has been disabled)
2091   enable_xim="no"
2093 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2094   AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2095   enable_fontset="no"
2097 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2098   AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2099   enable_fontset="no"
2102 if test -z "$SKIP_PHOTON"; then
2103   GUITYPE=PHOTONGUI
2106 AC_SUBST(GUI_INC_LOC)
2107 AC_SUBST(GUI_LIB_LOC)
2108 AC_SUBST(GUITYPE)
2109 AC_SUBST(GUI_X_LIBS)
2111 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2112   AC_MSG_ERROR([cannot use workshop without Motif])
2115 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2116 if test "$enable_xim" = "yes"; then
2117   AC_DEFINE(FEAT_XIM)
2119 if test "$enable_fontset" = "yes"; then
2120   AC_DEFINE(FEAT_XFONTSET)
2124 dnl ---------------------------------------------------------------------------
2125 dnl end of GUI-checking
2126 dnl ---------------------------------------------------------------------------
2129 dnl Only really enable hangul input when GUI and XFONTSET are available
2130 if test "$enable_hangulinput" = "yes"; then
2131   if test "x$GUITYPE" = "xNONE"; then
2132     AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2133     enable_hangulinput=no
2134   else
2135     AC_DEFINE(FEAT_HANGULIN)
2136     HANGULIN_SRC=hangulin.c
2137     AC_SUBST(HANGULIN_SRC)
2138     HANGULIN_OBJ=objects/hangulin.o
2139     AC_SUBST(HANGULIN_OBJ)
2140   fi
2143 dnl Checks for libraries and include files.
2145 AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2146   [
2147     AC_RUN_IFELSE([[
2148 #include "confdefs.h"
2149 #include <ctype.h>
2150 #if STDC_HEADERS
2151 # include <stdlib.h>
2152 # include <stddef.h>
2153 #endif
2154 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2155   ]],[
2156     vim_cv_toupper_broken=yes
2157   ],[
2158     vim_cv_toupper_broken=no
2159   ],[
2160     AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2161   ])])
2163 if test "x$vim_cv_toupper_broken" = "xyes" ; then
2164   AC_DEFINE(BROKEN_TOUPPER)
2167 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2168 AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
2169         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2170         AC_MSG_RESULT(no))
2172 AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2173 AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2174         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2175         AC_MSG_RESULT(no))
2177 dnl Checks for header files.
2178 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2179 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2180 if test "$HAS_ELF" = 1; then
2181   AC_CHECK_LIB(elf, main)
2184 AC_HEADER_DIRENT
2186 dnl If sys/wait.h is not found it might still exist but not be POSIX
2187 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2188 if test $ac_cv_header_sys_wait_h = no; then
2189   AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2190   AC_TRY_COMPILE([#include <sys/wait.h>],
2191                         [union wait xx, yy; xx = yy],
2192                 AC_MSG_RESULT(yes)
2193                         AC_DEFINE(HAVE_SYS_WAIT_H)
2194                         AC_DEFINE(HAVE_UNION_WAIT),
2195                 AC_MSG_RESULT(no))
2198 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2199         termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2200         iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
2201         sys/resource.h sys/systeminfo.h locale.h \
2202         sys/stream.h termios.h libc.h sys/statfs.h \
2203         poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2204         libgen.h util/debug.h util/msg18n.h frame.h \
2205         sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
2207 dnl sys/ptem.h depends on sys/stream.h on Solaris
2208 AC_CHECK_HEADERS(sys/ptem.h, [], [],
2209 [#if defined HAVE_SYS_STREAM_H
2210 #  include <sys/stream.h>
2211 #endif])
2213 dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2214 AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2215 [#if defined HAVE_SYS_PARAM_H
2216 #  include <sys/param.h>
2217 #endif])
2220 dnl pthread_np.h may exist but can only be used after including pthread.h
2221 AC_MSG_CHECKING([for pthread_np.h])
2222 AC_TRY_COMPILE([
2223 #include <pthread.h>
2224 #include <pthread_np.h>],
2225                       [int i; i = 0;],
2226               AC_MSG_RESULT(yes)
2227                       AC_DEFINE(HAVE_PTHREAD_NP_H),
2228               AC_MSG_RESULT(no))
2230 AC_CHECK_HEADERS(strings.h)
2231 if test "x$MACOSX" = "xyes"; then
2232   dnl The strings.h file on OS/X contains a warning and nothing useful.
2233   AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2234 else
2236 dnl Check if strings.h and string.h can both be included when defined.
2237 AC_MSG_CHECKING([if strings.h can be included after string.h])
2238 cppflags_save=$CPPFLAGS
2239 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2240 AC_TRY_COMPILE([
2241 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2242 # define _NO_PROTO      /* like in os_unix.h, causes conflict for AIX (Winn) */
2243                         /* but don't do it on AIX 5.1 (Uribarri) */
2244 #endif
2245 #ifdef HAVE_XM_XM_H
2246 # include <Xm/Xm.h>     /* This breaks it for HP-UX 11 (Squassabia) */
2247 #endif
2248 #ifdef HAVE_STRING_H
2249 # include <string.h>
2250 #endif
2251 #if defined(HAVE_STRINGS_H)
2252 # include <strings.h>
2253 #endif
2254                 ], [int i; i = 0;],
2255                 AC_MSG_RESULT(yes),
2256                 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2257                 AC_MSG_RESULT(no))
2258 CPPFLAGS=$cppflags_save
2261 dnl Checks for typedefs, structures, and compiler characteristics.
2262 AC_PROG_GCC_TRADITIONAL
2263 AC_C_CONST
2264 AC_C_VOLATILE
2265 AC_TYPE_MODE_T
2266 AC_TYPE_OFF_T
2267 AC_TYPE_PID_T
2268 AC_TYPE_SIZE_T
2269 AC_TYPE_UID_T
2270 AC_HEADER_TIME
2271 AC_CHECK_TYPE(ino_t, long)
2272 AC_CHECK_TYPE(dev_t, unsigned)
2274 AC_MSG_CHECKING(for rlim_t)
2275 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2276   AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2277 else
2278   AC_EGREP_CPP(dnl
2279 changequote(<<,>>)dnl
2280 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2281 changequote([,]),
2282   [
2283 #include <sys/types.h>
2284 #if STDC_HEADERS
2285 # include <stdlib.h>
2286 # include <stddef.h>
2287 #endif
2288 #ifdef HAVE_SYS_RESOURCE_H
2289 # include <sys/resource.h>
2290 #endif
2291           ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2292           AC_MSG_RESULT($ac_cv_type_rlim_t)
2294 if test $ac_cv_type_rlim_t = no; then
2295   cat >> confdefs.h <<\EOF
2296 #define rlim_t unsigned long
2300 AC_MSG_CHECKING(for stack_t)
2301 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2302   AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2303 else
2304   AC_EGREP_CPP(stack_t,
2305   [
2306 #include <sys/types.h>
2307 #if STDC_HEADERS
2308 # include <stdlib.h>
2309 # include <stddef.h>
2310 #endif
2311 #include <signal.h>
2312           ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2313           AC_MSG_RESULT($ac_cv_type_stack_t)
2315 if test $ac_cv_type_stack_t = no; then
2316   cat >> confdefs.h <<\EOF
2317 #define stack_t struct sigaltstack
2321 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2322 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2323 AC_TRY_COMPILE([
2324 #include <sys/types.h>
2325 #if STDC_HEADERS
2326 # include <stdlib.h>
2327 # include <stddef.h>
2328 #endif
2329 #include <signal.h>
2330 #include "confdefs.h"
2331                         ], [stack_t sigstk; sigstk.ss_base = 0; ],
2332         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2333         AC_MSG_RESULT(no))
2335 olibs="$LIBS"
2336 AC_MSG_CHECKING(--with-tlib argument)
2337 AC_ARG_WITH(tlib, [  --with-tlib=library     terminal library to be used ],)
2338 if test -n "$with_tlib"; then
2339   AC_MSG_RESULT($with_tlib)
2340   LIBS="$LIBS -l$with_tlib"
2341   AC_MSG_CHECKING(for linking with $with_tlib library)
2342   AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2343   dnl Need to check for tgetent() below.
2344   olibs="$LIBS"
2345 else
2346   AC_MSG_RESULT([empty: automatic terminal library selection])
2347   dnl  On HP-UX 10.10 termcap or termlib should be used instead of
2348   dnl  curses, because curses is much slower.
2349   dnl  Newer versions of ncurses are preferred over anything.
2350   dnl  Older versions of ncurses have bugs, get a new one!
2351   dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
2352   dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
2353   case "`uname -s 2>/dev/null`" in
2354         OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
2355         *)      tlibs="ncurses termlib termcap curses";;
2356   esac
2357   for libname in $tlibs; do
2358     AC_CHECK_LIB(${libname}, tgetent,,)
2359     if test "x$olibs" != "x$LIBS"; then
2360       dnl It's possible that a library is found but it doesn't work
2361       dnl e.g., shared library that cannot be found
2362       dnl compile and run a test program to be sure
2363       AC_TRY_RUN([
2364 #ifdef HAVE_TERMCAP_H
2365 # include <termcap.h>
2366 #endif
2367 #if STDC_HEADERS
2368 # include <stdlib.h>
2369 # include <stddef.h>
2370 #endif
2371 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2372                           res="OK", res="FAIL", res="FAIL")
2373       if test "$res" = "OK"; then
2374         break
2375       fi
2376       AC_MSG_RESULT($libname library is not usable)
2377       LIBS="$olibs"
2378     fi
2379   done
2380   if test "x$olibs" = "x$LIBS"; then
2381     AC_MSG_RESULT(no terminal library found)
2382   fi
2385 if test "x$olibs" = "x$LIBS"; then
2386   AC_MSG_CHECKING([for tgetent()])
2387   AC_TRY_LINK([],
2388       [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2389         AC_MSG_RESULT(yes),
2390         AC_MSG_ERROR([NOT FOUND!
2391       You need to install a terminal library; for example ncurses.
2392       Or specify the name of the library with --with-tlib.]))
2395 AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2396   [
2397     AC_RUN_IFELSE([[
2398 #include "confdefs.h"
2399 #ifdef HAVE_TERMCAP_H
2400 # include <termcap.h>
2401 #endif
2402 #ifdef HAVE_STRING_H
2403 # include <string.h>
2404 #endif
2405 #if STDC_HEADERS
2406 # include <stdlib.h>
2407 # include <stddef.h>
2408 #endif
2409 main()
2410 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2411     ]],[
2412       vim_cv_terminfo=no
2413     ],[
2414       vim_cv_terminfo=yes
2415     ],[
2416       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2417     ])
2418   ])
2420 if test "x$vim_cv_terminfo" = "xyes" ; then
2421   AC_DEFINE(TERMINFO)
2424 if test "x$olibs" != "x$LIBS"; then
2425   AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2426     [
2427       AC_RUN_IFELSE([[
2428 #include "confdefs.h"
2429 #ifdef HAVE_TERMCAP_H
2430 # include <termcap.h>
2431 #endif
2432 #if STDC_HEADERS
2433 # include <stdlib.h>
2434 # include <stddef.h>
2435 #endif
2436 main()
2437 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2438       ]],[
2439         vim_cv_tgent=zero
2440       ],[
2441         vim_cv_tgent=non-zero
2442       ],[
2443         AC_MSG_ERROR(failed to compile test program.)
2444       ])
2445     ])
2446   
2447   if test "x$vim_cv_tgent" = "xzero" ; then
2448     AC_DEFINE(TGETENT_ZERO_ERR, 0)
2449   fi
2452 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2453 AC_TRY_LINK([
2454 #ifdef HAVE_TERMCAP_H
2455 # include <termcap.h>
2456 #endif
2457                         ], [ospeed = 20000],
2458         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2459         [AC_MSG_RESULT(no)
2460         AC_MSG_CHECKING(whether ospeed can be extern)
2461         AC_TRY_LINK([
2462 #ifdef HAVE_TERMCAP_H
2463 # include <termcap.h>
2464 #endif
2465 extern short ospeed;
2466                         ], [ospeed = 20000],
2467                 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2468                 AC_MSG_RESULT(no))]
2469         )
2471 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2472 AC_TRY_LINK([
2473 #ifdef HAVE_TERMCAP_H
2474 # include <termcap.h>
2475 #endif
2476                         ], [if (UP == 0 && BC == 0) PC = 1],
2477         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2478         [AC_MSG_RESULT(no)
2479         AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2480         AC_TRY_LINK([
2481 #ifdef HAVE_TERMCAP_H
2482 # include <termcap.h>
2483 #endif
2484 extern char *UP, *BC, PC;
2485                         ], [if (UP == 0 && BC == 0) PC = 1],
2486                 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2487                 AC_MSG_RESULT(no))]
2488         )
2490 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2491 AC_TRY_COMPILE([
2492 #ifdef HAVE_TERMCAP_H
2493 # include <termcap.h>
2494 #endif
2495                         ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2496         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2497         AC_MSG_RESULT(no))
2499 dnl On some SCO machines sys/select redefines struct timeval
2500 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2501 AC_TRY_COMPILE([
2502 #include <sys/types.h>
2503 #include <sys/time.h>
2504 #include <sys/select.h>], ,
2505           AC_MSG_RESULT(yes)
2506                         AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2507           AC_MSG_RESULT(no))
2509 dnl AC_DECL_SYS_SIGLIST
2511 dnl Checks for pty.c (copied from screen) ==========================
2512 AC_MSG_CHECKING(for /dev/ptc)
2513 if test -r /dev/ptc; then
2514   AC_DEFINE(HAVE_DEV_PTC)
2515   AC_MSG_RESULT(yes)
2516 else
2517   AC_MSG_RESULT(no)
2520 AC_MSG_CHECKING(for SVR4 ptys)
2521 if test -c /dev/ptmx ; then
2522   AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2523         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2524         AC_MSG_RESULT(no))
2525 else
2526   AC_MSG_RESULT(no)
2529 AC_MSG_CHECKING(for ptyranges)
2530 if test -d /dev/ptym ; then
2531   pdir='/dev/ptym'
2532 else
2533   pdir='/dev'
2535 dnl SCO uses ptyp%d
2536 AC_EGREP_CPP(yes,
2537 [#ifdef M_UNIX
2538    yes;
2539 #endif
2540         ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2541 dnl if test -c /dev/ptyp19; then
2542 dnl ptys=`echo /dev/ptyp??`
2543 dnl else
2544 dnl ptys=`echo $pdir/pty??`
2545 dnl fi
2546 if test "$ptys" != "$pdir/pty??" ; then
2547   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2548   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
2549   AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2550   AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2551   AC_MSG_RESULT([$p0 / $p1])
2552 else
2553   AC_MSG_RESULT([don't know])
2556 dnl    ****  pty mode/group handling ****
2558 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2559 rm -f conftest_grp
2560 AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2561   [
2562     AC_RUN_IFELSE([[
2563 #include "confdefs.h"
2564 #include <sys/types.h>
2565 #if STDC_HEADERS
2566 # include <stdlib.h>
2567 # include <stddef.h>
2568 #endif
2569 #ifdef HAVE_UNISTD_H
2570 #include <unistd.h>
2571 #endif
2572 #include <sys/stat.h>
2573 #include <stdio.h>
2574 main()
2576   struct stat sb;
2577   char *x,*ttyname();
2578   int om, m;
2579   FILE *fp;
2581   if (!(x = ttyname(0))) exit(1);
2582   if (stat(x, &sb)) exit(1);
2583   om = sb.st_mode;
2584   if (om & 002) exit(0);
2585   m = system("mesg y");
2586   if (m == -1 || m == 127) exit(1);
2587   if (stat(x, &sb)) exit(1);
2588   m = sb.st_mode;
2589   if (chmod(x, om)) exit(1);
2590   if (m & 002) exit(0);
2591   if (sb.st_gid == getgid()) exit(1);
2592   if (!(fp=fopen("conftest_grp", "w")))
2593     exit(1);
2594   fprintf(fp, "%d\n", sb.st_gid);
2595   fclose(fp);
2596   exit(0);
2598     ]],[
2599       if test -f conftest_grp; then
2600         vim_cv_tty_group=`cat conftest_grp`
2601         if test "x$vim_cv_tty_mode" = "x" ; then
2602           vim_cv_tty_mode=0620
2603         fi
2604         AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2605       else
2606         vim_cv_tty_group=world
2607         AC_MSG_RESULT([ptys are world accessable])
2608       fi
2609     ],[
2610       vim_cv_tty_group=world
2611       AC_MSG_RESULT([can't determine - assume ptys are world accessable])
2612     ],[
2613       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2614     ])
2615   ])
2616 rm -f conftest_grp
2618 if test "x$vim_cv_tty_group" != "xworld" ; then
2619   AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2620   if test "x$vim_cv_tty_mode" = "x" ; then
2621     AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)])
2622   else
2623     AC_DEFINE(PTYMODE, 0620)
2624   fi
2627 dnl Checks for library functions. ===================================
2629 AC_TYPE_SIGNAL
2631 dnl find out what to use at the end of a signal function
2632 if test $ac_cv_type_signal = void; then
2633   AC_DEFINE(SIGRETURN, [return])
2634 else
2635   AC_DEFINE(SIGRETURN, [return 0])
2638 dnl check if struct sigcontext is defined (used for SGI only)
2639 AC_MSG_CHECKING(for struct sigcontext)
2640 AC_TRY_COMPILE([
2641 #include <signal.h>
2642 test_sig()
2644     struct sigcontext *scont;
2645     scont = (struct sigcontext *)0;
2646     return 1;
2647 } ], ,
2648           AC_MSG_RESULT(yes)
2649                 AC_DEFINE(HAVE_SIGCONTEXT),
2650           AC_MSG_RESULT(no))
2652 dnl tricky stuff: try to find out if getcwd() is implemented with
2653 dnl system("sh -c pwd")
2654 AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2655   [
2656     AC_RUN_IFELSE([[
2657 #include "confdefs.h"
2658 #ifdef HAVE_UNISTD_H
2659 #include <unistd.h>
2660 #endif
2661 char *dagger[] = { "IFS=pwd", 0 };
2662 main()
2664   char buffer[500];
2665   extern char **environ;
2666   environ = dagger;
2667   return getcwd(buffer, 500) ? 0 : 1;
2669     ]],[
2670       vim_cv_getcwd_broken=no
2671     ],[
2672       vim_cv_getcwd_broken=yes
2673     ],[
2674       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2675     ])
2676   ])
2678 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2679   AC_DEFINE(BAD_GETCWD)
2682 dnl Check for functions in one big call, to reduce the size of configure
2683 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2684         getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2685         memset nanosleep opendir putenv qsort readlink select setenv \
2686         setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2687         sigvec strcasecmp strerror strftime stricmp strncasecmp \
2688         strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2689         usleep utime utimes)
2691 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2692 AC_MSG_CHECKING(for st_blksize)
2693 AC_TRY_COMPILE(
2694 [#include <sys/types.h>
2695 #include <sys/stat.h>],
2696 [       struct stat st;
2697         int n;
2699         stat("/", &st);
2700         n = (int)st.st_blksize;],
2701         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2702         AC_MSG_RESULT(no))
2704 AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2705   [
2706     AC_RUN_IFELSE([[
2707 #include "confdefs.h"
2708 #if STDC_HEADERS
2709 # include <stdlib.h>
2710 # include <stddef.h>
2711 #endif
2712 #include <sys/types.h>
2713 #include <sys/stat.h>
2714 main() {struct stat st;  exit(stat("configure/", &st) != 0); }
2715     ]],[
2716       vim_cv_stat_ignores_slash=yes
2717     ],[
2718       vim_cv_stat_ignores_slash=no
2719     ],[
2720       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2721     ])
2722   ])
2724 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2725   AC_DEFINE(STAT_IGNORES_SLASH)
2727   
2728 dnl Link with iconv for charset translation, if not found without library.
2729 dnl check for iconv() requires including iconv.h
2730 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2731 dnl has been installed.
2732 AC_MSG_CHECKING(for iconv_open())
2733 save_LIBS="$LIBS"
2734 LIBS="$LIBS -liconv"
2735 AC_TRY_LINK([
2736 #ifdef HAVE_ICONV_H
2737 # include <iconv.h>
2738 #endif
2739     ], [iconv_open("fr", "to");],
2740     AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2741     LIBS="$save_LIBS"
2742     AC_TRY_LINK([
2743 #ifdef HAVE_ICONV_H
2744 # include <iconv.h>
2745 #endif
2746         ], [iconv_open("fr", "to");],
2747         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2748         AC_MSG_RESULT(no)))
2751 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2752 AC_TRY_LINK([
2753 #ifdef HAVE_LANGINFO_H
2754 # include <langinfo.h>
2755 #endif
2756 ], [char *cs = nl_langinfo(CODESET);],
2757         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2758         AC_MSG_RESULT(no))
2760 dnl Need various functions for floating point support.  Only enable
2761 dnl floating point when they are all present.
2762 AC_CHECK_LIB(m, strtod)
2763 AC_MSG_CHECKING([for strtod() and other floating point functions])
2764 AC_TRY_LINK([
2765 #ifdef HAVE_MATH_H
2766 # include <math.h>
2767 #endif
2768 #if STDC_HEADERS
2769 # include <stdlib.h>
2770 # include <stddef.h>
2771 #endif
2772 ], [char *s; double d;
2773     d = strtod("1.1", &s);
2774     d = fabs(1.11);
2775     d = ceil(1.11);
2776     d = floor(1.11);
2777     d = log10(1.11);
2778     d = pow(1.11, 2.22);
2779     d = sqrt(1.11);
2780     d = sin(1.11);
2781     d = cos(1.11);
2782     d = atan(1.11);
2783     ],
2784         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2785         AC_MSG_RESULT(no))
2787 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2788 dnl when -lacl works, also try to use -lattr (required for Debian).
2789 AC_MSG_CHECKING(--disable-acl argument)
2790 AC_ARG_ENABLE(acl,
2791         [  --disable-acl           Don't check for ACL support.],
2792         , [enable_acl="yes"])
2793 if test "$enable_acl" = "yes"; then
2794 AC_MSG_RESULT(no)
2795 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2796         AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2797                   AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2799 AC_MSG_CHECKING(for POSIX ACL support)
2800 AC_TRY_LINK([
2801 #include <sys/types.h>
2802 #ifdef HAVE_SYS_ACL_H
2803 # include <sys/acl.h>
2804 #endif
2805 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2806         acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2807         acl_free(acl);],
2808         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2809         AC_MSG_RESULT(no))
2811 AC_MSG_CHECKING(for Solaris ACL support)
2812 AC_TRY_LINK([
2813 #ifdef HAVE_SYS_ACL_H
2814 # include <sys/acl.h>
2815 #endif], [acl("foo", GETACLCNT, 0, NULL);
2816         ],
2817         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2818         AC_MSG_RESULT(no))
2820 AC_MSG_CHECKING(for AIX ACL support)
2821 AC_TRY_LINK([
2822 #if STDC_HEADERS
2823 # include <stdlib.h>
2824 # include <stddef.h>
2825 #endif
2826 #ifdef HAVE_SYS_ACL_H
2827 # include <sys/acl.h>
2828 #endif
2829 #ifdef HAVE_SYS_ACCESS_H
2830 # include <sys/access.h>
2831 #endif
2832 #define _ALL_SOURCE
2834 #include <sys/stat.h>
2836 int aclsize;
2837 struct acl *aclent;], [aclsize = sizeof(struct acl);
2838         aclent = (void *)malloc(aclsize);
2839         statacl("foo", STX_NORMAL, aclent, aclsize);
2840         ],
2841         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2842         AC_MSG_RESULT(no))
2843 else
2844   AC_MSG_RESULT(yes)
2847 AC_MSG_CHECKING(--disable-gpm argument)
2848 AC_ARG_ENABLE(gpm,
2849         [  --disable-gpm           Don't use gpm (Linux mouse daemon).], ,
2850         [enable_gpm="yes"])
2852 if test "$enable_gpm" = "yes"; then
2853   AC_MSG_RESULT(no)
2854   dnl Checking if gpm support can be compiled
2855   AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2856         [olibs="$LIBS" ; LIBS="-lgpm"]
2857         AC_TRY_LINK(
2858             [#include <gpm.h>
2859             #include <linux/keyboard.h>],
2860             [Gpm_GetLibVersion(NULL);],
2861             dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2862             dnl FEAT_MOUSE_GPM if mouse support is included
2863             [vi_cv_have_gpm=yes],
2864             [vi_cv_have_gpm=no])
2865         [LIBS="$olibs"]
2866     )
2867   if test $vi_cv_have_gpm = yes; then
2868     LIBS="$LIBS -lgpm"
2869     AC_DEFINE(HAVE_GPM)
2870   fi
2871 else
2872   AC_MSG_RESULT(yes)
2875 AC_MSG_CHECKING(--disable-sysmouse argument)
2876 AC_ARG_ENABLE(sysmouse,
2877         [  --disable-sysmouse    Don't use sysmouse (mouse in *BSD console).], ,
2878         [enable_sysmouse="yes"])
2880 if test "$enable_sysmouse" = "yes"; then
2881   AC_MSG_RESULT(no)
2882   dnl Checking if sysmouse support can be compiled
2883   dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2884   dnl defines FEAT_SYSMOUSE if mouse support is included
2885   AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2886         AC_TRY_LINK(
2887             [#include <sys/consio.h>
2888              #include <signal.h>
2889              #include <sys/fbio.h>],
2890             [struct mouse_info   mouse;
2891              mouse.operation = MOUSE_MODE;
2892              mouse.operation = MOUSE_SHOW;
2893              mouse.u.mode.mode = 0;
2894              mouse.u.mode.signal = SIGUSR2;],
2895             [vi_cv_have_sysmouse=yes],
2896             [vi_cv_have_sysmouse=no])
2897     )
2898   if test $vi_cv_have_sysmouse = yes; then
2899     AC_DEFINE(HAVE_SYSMOUSE)
2900   fi
2901 else
2902   AC_MSG_RESULT(yes)
2905 dnl rename needs to be checked separately to work on Nextstep with cc
2906 AC_MSG_CHECKING(for rename)
2907 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2908         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2909         AC_MSG_RESULT(no))
2911 dnl sysctl() may exist but not the arguments we use
2912 AC_MSG_CHECKING(for sysctl)
2913 AC_TRY_COMPILE(
2914 [#include <sys/types.h>
2915 #include <sys/sysctl.h>],
2916 [       int mib[2], r;
2917         size_t len;
2919         mib[0] = CTL_HW;
2920         mib[1] = HW_USERMEM;
2921         len = sizeof(r);
2922         (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2923         ],
2924         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2925         AC_MSG_RESULT(not usable))
2927 dnl sysinfo() may exist but not be Linux compatible
2928 AC_MSG_CHECKING(for sysinfo)
2929 AC_TRY_COMPILE(
2930 [#include <sys/types.h>
2931 #include <sys/sysinfo.h>],
2932 [       struct sysinfo sinfo;
2933         int t;
2935         (void)sysinfo(&sinfo);
2936         t = sinfo.totalram;
2937         ],
2938         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2939         AC_MSG_RESULT(not usable))
2941 dnl struct sysinfo may have the mem_unit field or not
2942 AC_MSG_CHECKING(for sysinfo.mem_unit)
2943 AC_TRY_COMPILE(
2944 [#include <sys/types.h>
2945 #include <sys/sysinfo.h>],
2946 [       struct sysinfo sinfo;
2947         sinfo.mem_unit = 1;
2948         ],
2949         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2950         AC_MSG_RESULT(no))
2952 dnl sysconf() may exist but not support what we want to use
2953 AC_MSG_CHECKING(for sysconf)
2954 AC_TRY_COMPILE(
2955 [#include <unistd.h>],
2956 [       (void)sysconf(_SC_PAGESIZE);
2957         (void)sysconf(_SC_PHYS_PAGES);
2958         ],
2959         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2960         AC_MSG_RESULT(not usable))
2962 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2963 dnl be printed with "%d", and avoids a warning for cross-compiling.
2965 AC_MSG_CHECKING(size of int)
2966 AC_CACHE_VAL(ac_cv_sizeof_int,
2967         [AC_TRY_RUN([
2968 #include <stdio.h>
2969 #if STDC_HEADERS
2970 # include <stdlib.h>
2971 # include <stddef.h>
2972 #endif
2973 main()
2975   FILE *f=fopen("conftestval", "w");
2976   if (!f) exit(1);
2977   fprintf(f, "%d\n", (int)sizeof(int));
2978   exit(0);
2980             ac_cv_sizeof_int=`cat conftestval`,
2981             ac_cv_sizeof_int=0,
2982             AC_MSG_ERROR(failed to compile test program))])
2983 AC_MSG_RESULT($ac_cv_sizeof_int)
2984 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2986 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2987 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2989 [bcopy_test_prog='
2990 #include "confdefs.h"
2991 #ifdef HAVE_STRING_H
2992 # include <string.h>
2993 #endif
2994 #if STDC_HEADERS
2995 # include <stdlib.h>
2996 # include <stddef.h>
2997 #endif
2998 main() {
2999   char buf[10];
3000   strcpy(buf, "abcdefghi");
3001   mch_memmove(buf, buf + 2, 3);
3002   if (strncmp(buf, "ababcf", 6))
3003     exit(1);
3004   strcpy(buf, "abcdefghi");
3005   mch_memmove(buf + 2, buf, 3);
3006   if (strncmp(buf, "cdedef", 6))
3007     exit(1);
3008   exit(0); /* libc version works properly.  */
3011 AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3012   [
3013     AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3014       [
3015         vim_cv_memmove_handles_overlap=yes
3016       ],[
3017         vim_cv_memmove_handles_overlap=no
3018       ],[
3019         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3020       ])
3021   ])
3023 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3024   AC_DEFINE(USEMEMMOVE)
3025 else
3026   AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3027     [
3028       AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3029       [
3030         vim_cv_bcopy_handles_overlap=yes
3031       ],[
3032         vim_cv_bcopy_handles_overlap=no
3033       ],[
3034         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3035       ])
3036     ])
3038   if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3039     AC_DEFINE(USEBCOPY)
3040   else
3041     AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3042       [
3043         AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3044           [
3045             vim_cv_memcpy_handles_overlap=yes
3046           ],[
3047             vim_cv_memcpy_handles_overlap=no
3048           ],[
3049             AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3050           ])
3051       ])
3053     if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3054       AC_DEFINE(USEMEMCPY)
3055     fi
3056   fi
3060 dnl Check for multibyte locale functions
3061 dnl Find out if _Xsetlocale() is supported by libX11.
3062 dnl Check if X_LOCALE should be defined.
3064 if test "$enable_multibyte" = "yes"; then
3065   cflags_save=$CFLAGS
3066   ldflags_save=$LDFLAGS
3067   if test "x$x_includes" != "xNONE" ; then
3068     CFLAGS="$CFLAGS -I$x_includes"
3069     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3070     AC_MSG_CHECKING(whether X_LOCALE needed)
3071     AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3072         AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3073                 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3074         AC_MSG_RESULT(no))
3075   fi
3076   CFLAGS=$cflags_save
3077   LDFLAGS=$ldflags_save
3080 dnl Link with xpg4, it is said to make Korean locale working
3081 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3083 dnl Check how we can run ctags.  Default to "ctags" when nothing works.
3084 dnl --version for Exuberant ctags (preferred)
3085 dnl       Add --fields=+S to get function signatures for omni completion.
3086 dnl -t for typedefs (many ctags have this)
3087 dnl -s for static functions (Elvis ctags only?)
3088 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3089 dnl -i+m to test for older Exuberant ctags
3090 AC_MSG_CHECKING(how to create tags)
3091 test -f tags && mv tags tags.save
3092 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3093   TAGPRG="ctags -I INIT+ --fields=+S"
3094 else
3095   TAGPRG="ctags"
3096   (eval etags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3097   (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3098   (eval ctags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3099   (eval ctags -t   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3100   (eval ctags -ts  /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3101   (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3102   (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3104 test -f tags.save && mv tags.save tags
3105 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3107 dnl Check how we can run man with a section number
3108 AC_MSG_CHECKING(how to run man with a section nr)
3109 MANDEF="man"
3110 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
3111 AC_MSG_RESULT($MANDEF)
3112 if test "$MANDEF" = "man -s"; then
3113   AC_DEFINE(USEMAN_S)
3116 dnl Check if gettext() is working and if it needs -lintl
3117 AC_MSG_CHECKING(--disable-nls argument)
3118 AC_ARG_ENABLE(nls,
3119         [  --disable-nls           Don't support NLS (gettext()).], ,
3120         [enable_nls="yes"])
3122 if test "$enable_nls" = "yes"; then
3123   AC_MSG_RESULT(no)
3125   INSTALL_LANGS=install-languages
3126   AC_SUBST(INSTALL_LANGS)
3127   INSTALL_TOOL_LANGS=install-tool-languages
3128   AC_SUBST(INSTALL_TOOL_LANGS)
3130   AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3131   AC_MSG_CHECKING([for NLS])
3132   if test -f po/Makefile; then
3133     have_gettext="no"
3134     if test -n "$MSGFMT"; then
3135       AC_TRY_LINK(
3136         [#include <libintl.h>],
3137         [gettext("Test");],
3138         AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3139           olibs=$LIBS
3140           LIBS="$LIBS -lintl"
3141           AC_TRY_LINK(
3142               [#include <libintl.h>],
3143               [gettext("Test");],
3144               AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3145               AC_MSG_RESULT([gettext() doesn't work]);
3146               LIBS=$olibs))
3147     else
3148       AC_MSG_RESULT([msgfmt not found - disabled]);
3149     fi
3150     if test $have_gettext = "yes"; then
3151       AC_DEFINE(HAVE_GETTEXT)
3152       MAKEMO=yes
3153       AC_SUBST(MAKEMO)
3154       dnl this was added in GNU gettext 0.10.36
3155       AC_CHECK_FUNCS(bind_textdomain_codeset)
3156       dnl _nl_msg_cat_cntr is required for GNU gettext
3157       AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3158       AC_TRY_LINK(
3159                 [#include <libintl.h>
3160                 extern int _nl_msg_cat_cntr;],
3161                 [++_nl_msg_cat_cntr;],
3162                 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3163                 AC_MSG_RESULT([no]))
3164     fi
3165   else
3166     AC_MSG_RESULT([no "po/Makefile" - disabled]);
3167   fi
3168 else
3169   AC_MSG_RESULT(yes)
3172 dnl Check for dynamic linking loader
3173 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3174 if test x${DLL} = xdlfcn.h; then
3175   AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3176   AC_MSG_CHECKING([for dlopen()])
3177   AC_TRY_LINK(,[
3178                 extern void* dlopen();
3179                 dlopen();
3180       ],
3181       AC_MSG_RESULT(yes);
3182               AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3183       AC_MSG_RESULT(no);
3184               AC_MSG_CHECKING([for dlopen() in -ldl])
3185               olibs=$LIBS
3186               LIBS="$LIBS -ldl"
3187               AC_TRY_LINK(,[
3188                                 extern void* dlopen();
3189                                 dlopen();
3190                  ],
3191                  AC_MSG_RESULT(yes);
3192                           AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3193                  AC_MSG_RESULT(no);
3194                           LIBS=$olibs))
3195   dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3196   dnl ick :-)
3197   AC_MSG_CHECKING([for dlsym()])
3198   AC_TRY_LINK(,[
3199                 extern void* dlsym();
3200                 dlsym();
3201       ],
3202       AC_MSG_RESULT(yes);
3203               AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3204       AC_MSG_RESULT(no);
3205               AC_MSG_CHECKING([for dlsym() in -ldl])
3206               olibs=$LIBS
3207               LIBS="$LIBS -ldl"
3208               AC_TRY_LINK(,[
3209                                 extern void* dlsym();
3210                                 dlsym();
3211                  ],
3212                  AC_MSG_RESULT(yes);
3213                           AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3214                  AC_MSG_RESULT(no);
3215                           LIBS=$olibs))
3216 elif test x${DLL} = xdl.h; then
3217   AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3218   AC_MSG_CHECKING([for shl_load()])
3219   AC_TRY_LINK(,[
3220                 extern void* shl_load();
3221                 shl_load();
3222      ],
3223      AC_MSG_RESULT(yes);
3224           AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3225      AC_MSG_RESULT(no);
3226           AC_MSG_CHECKING([for shl_load() in -ldld])
3227           olibs=$LIBS
3228           LIBS="$LIBS -ldld"
3229           AC_TRY_LINK(,[
3230                         extern void* shl_load();
3231                         shl_load();
3232              ],
3233              AC_MSG_RESULT(yes);
3234                   AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3235              AC_MSG_RESULT(no);
3236                   LIBS=$olibs))
3238 AC_CHECK_HEADERS(setjmp.h)
3240 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3241   dnl -ldl must come after DynaLoader.a
3242   if echo $LIBS | grep -e '-ldl' >/dev/null; then
3243     LIBS=`echo $LIBS | sed s/-ldl//`
3244     PERL_LIBS="$PERL_LIBS -ldl"
3245   fi
3248 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3249         && test "x$GUITYPE" != "xCARBONGUI"; then
3250   AC_MSG_CHECKING(whether we need -framework Carbon)
3251   dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3252   if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
3253         || test "x$features" = "xhuge"; then
3254     LIBS="$LIBS -framework Carbon"
3255     AC_MSG_RESULT(yes)
3256   else
3257     AC_MSG_RESULT(no)
3258   fi
3260 if test "x$MACARCH" = "xboth"; then
3261   LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3264 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
3265 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3266 dnl But only when making dependencies, cproto and lint don't take "-isystem".
3267 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3268 dnl the number before the version number.
3269 DEPEND_CFLAGS_FILTER=
3270 if test "$GCC" = yes; then
3271   AC_MSG_CHECKING(for GCC 3 or later)
3272   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
3273   if test "$gccmajor" -gt "2"; then
3274     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3275     AC_MSG_RESULT(yes)
3276   else
3277     AC_MSG_RESULT(no)
3278   fi
3279   dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3280   dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
3281   AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3282   if test "$gccmajor" -gt "3"; then
3283     CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
3284     AC_MSG_RESULT(yes)
3285   else
3286     AC_MSG_RESULT(no)
3287   fi
3289 AC_SUBST(DEPEND_CFLAGS_FILTER)
3291 dnl write output files
3292 AC_OUTPUT(auto/config.mk:config.mk.in)
3294 dnl vim: set sw=2 tw=78 fo+=l: