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