Merge branch 'vim-with-runtime' into feat/lua
[vim_extended.git] / src / configure.in
blob539f1cbe0f3cc9ae389a47045bf16a7ceabc4456
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-pythoninterp argument)
728 AC_ARG_ENABLE(pythoninterp,
729         [  --enable-pythoninterp   Include Python interpreter.], ,
730         [enable_pythoninterp="no"])
731 AC_MSG_RESULT($enable_pythoninterp)
732 if test "$enable_pythoninterp" = "yes"; then
733   dnl -- find the python executable
734   AC_PATH_PROG(vi_cv_path_python, python)
735   if test "X$vi_cv_path_python" != "X"; then
737     dnl -- get its version number
738     AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
739     [[vi_cv_var_python_version=`
740             ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
741     ]])
743     dnl -- it must be at least version 1.4
744     AC_MSG_CHECKING(Python is 1.4 or better)
745     if ${vi_cv_path_python} -c \
746         "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
747     then
748       AC_MSG_RESULT(yep)
750       dnl -- find where python thinks it was installed
751       AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
752       [ vi_cv_path_python_pfx=`
753             ${vi_cv_path_python} -c \
754                 "import sys; print sys.prefix"` ])
756       dnl -- and where it thinks it runs
757       AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
758       [ vi_cv_path_python_epfx=`
759             ${vi_cv_path_python} -c \
760                 "import sys; print sys.exec_prefix"` ])
762       dnl -- python's internal library path
764       AC_CACHE_VAL(vi_cv_path_pythonpath,
765       [ vi_cv_path_pythonpath=`
766             unset PYTHONPATH;
767             ${vi_cv_path_python} -c \
768                 "import sys, string; print string.join(sys.path,':')"` ])
770       dnl -- where the Python implementation library archives are
772       AC_ARG_WITH(python-config-dir,
773         [  --with-python-config-dir=PATH  Python's config directory],
774         [ vi_cv_path_python_conf="${withval}" ] )
776       AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
777       [
778         vi_cv_path_python_conf=
779         for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
780           for subdir in lib64 lib share; do
781             d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
782             if test -d "$d" && test -f "$d/config.c"; then
783               vi_cv_path_python_conf="$d"
784             fi
785           done
786         done
787       ])
789       PYTHON_CONFDIR="${vi_cv_path_python_conf}"
791       if test "X$PYTHON_CONFDIR" = "X"; then
792         AC_MSG_RESULT([can't find it!])
793       else
795         dnl -- we need to examine Python's config/Makefile too
796         dnl    see what the interpreter is built from
797         AC_CACHE_VAL(vi_cv_path_python_plibs,
798         [
799             pwd=`pwd`
800             tmp_mkf="$pwd/config-PyMake$$"
801             cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
803         @echo "python_MODLIBS='$(MODLIBS)'"
804         @echo "python_LIBS='$(LIBS)'"
805         @echo "python_SYSLIBS='$(SYSLIBS)'"
806         @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
808             dnl -- delete the lines from make about Entering/Leaving directory
809             eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
810             rm -f -- "${tmp_mkf}"
811             if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
812                 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
813               vi_cv_path_python_plibs="-framework Python"
814             else
815               if test "${vi_cv_var_python_version}" = "1.4"; then
816                   vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
817               else
818                   vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
819               fi
820               vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
821               dnl remove -ltermcap, it can conflict with an earlier -lncurses
822               vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
823             fi
824         ])
826         PYTHON_LIBS="${vi_cv_path_python_plibs}"
827         if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
828           PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
829         else
830           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}"
831         fi
832         PYTHON_SRC="if_python.c"
833         dnl For Mac OSX 10.2 config.o is included in the Python library.
834         if test "x$MACOSX" = "xyes"; then
835           PYTHON_OBJ="objects/if_python.o"
836         else
837           PYTHON_OBJ="objects/if_python.o objects/py_config.o"
838         fi
839         if test "${vi_cv_var_python_version}" = "1.4"; then
840            PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
841         fi
842         PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
844         dnl On FreeBSD linking with "-pthread" is required to use threads.
845         dnl _THREAD_SAFE must be used for compiling then.
846         dnl The "-pthread" is added to $LIBS, so that the following check for
847         dnl sigaltstack() will look in libc_r (it's there in libc!).
848         dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS.  GCC
849         dnl will then define target-specific defines, e.g., -D_REENTRANT.
850         dnl Don't do this for Mac OSX, -pthread will generate a warning.
851         AC_MSG_CHECKING([if -pthread should be used])
852         threadsafe_flag=
853         thread_lib=
854         dnl if test "x$MACOSX" != "xyes"; then
855         if test "`(uname) 2>/dev/null`" != Darwin; then
856           test "$GCC" = yes && threadsafe_flag="-pthread"
857           if test "`(uname) 2>/dev/null`" = FreeBSD; then
858             threadsafe_flag="-D_THREAD_SAFE"
859             thread_lib="-pthread"
860           fi
861         fi
862         libs_save_old=$LIBS
863         if test -n "$threadsafe_flag"; then
864           cflags_save=$CFLAGS
865           CFLAGS="$CFLAGS $threadsafe_flag"
866           LIBS="$LIBS $thread_lib"
867           AC_TRY_LINK(,[ ],
868              AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
869              AC_MSG_RESULT(no); LIBS=$libs_save_old
870              )
871           CFLAGS=$cflags_save
872         else
873           AC_MSG_RESULT(no)
874         fi
876         dnl check that compiling a simple program still works with the flags
877         dnl added for Python.
878         AC_MSG_CHECKING([if compile and link flags for Python are sane])
879         cflags_save=$CFLAGS
880         libs_save=$LIBS
881         CFLAGS="$CFLAGS $PYTHON_CFLAGS"
882         LIBS="$LIBS $PYTHON_LIBS"
883         AC_TRY_LINK(,[ ],
884                AC_MSG_RESULT(yes); python_ok=yes,
885                AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
886         CFLAGS=$cflags_save
887         LIBS=$libs_save
888         if test $python_ok = yes; then
889           AC_DEFINE(FEAT_PYTHON)
890         else
891           LIBS=$libs_save_old
892           PYTHON_SRC=
893           PYTHON_OBJ=
894           PYTHON_LIBS=
895           PYTHON_CFLAGS=
896         fi
898       fi
899     else
900       AC_MSG_RESULT(too old)
901     fi
902   fi
904 AC_SUBST(PYTHON_CONFDIR)
905 AC_SUBST(PYTHON_LIBS)
906 AC_SUBST(PYTHON_GETPATH_CFLAGS)
907 AC_SUBST(PYTHON_CFLAGS)
908 AC_SUBST(PYTHON_SRC)
909 AC_SUBST(PYTHON_OBJ)
911 AC_MSG_CHECKING(--enable-tclinterp argument)
912 AC_ARG_ENABLE(tclinterp,
913         [  --enable-tclinterp      Include Tcl interpreter.], ,
914         [enable_tclinterp="no"])
915 AC_MSG_RESULT($enable_tclinterp)
917 if test "$enable_tclinterp" = "yes"; then
919   dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
920   AC_MSG_CHECKING(--with-tclsh argument)
921   AC_ARG_WITH(tclsh, [  --with-tclsh=PATH       which tclsh to use (default: tclsh8.0)],
922         tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
923         tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
924   AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
925   AC_SUBST(vi_cv_path_tcl)
927   dnl when no specific version specified, also try 8.4, 8.2 and 8.0
928   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
929     tclsh_name="tclsh8.4"
930     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
931   fi
932   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
933     tclsh_name="tclsh8.2"
934     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
935   fi
936   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
937     tclsh_name="tclsh8.0"
938     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
939   fi
940   dnl still didn't find it, try without version number
941   if test "X$vi_cv_path_tcl" = "X"; then
942     tclsh_name="tclsh"
943     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
944   fi
945   if test "X$vi_cv_path_tcl" != "X"; then
946     AC_MSG_CHECKING(Tcl version)
947     if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
948       tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
949       AC_MSG_RESULT($tclver - OK);
950       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 -`
952       AC_MSG_CHECKING(for location of Tcl include)
953       if test "x$MACOSX" != "xyes"; then
954         tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
955       else
956         dnl For Mac OS X 10.3, use the OS-provided framework location
957         tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
958       fi
959       TCL_INC=
960       for try in $tclinc; do
961         if test -f "$try/tcl.h"; then
962           AC_MSG_RESULT($try/tcl.h)
963           TCL_INC=$try
964           break
965         fi
966       done
967       if test -z "$TCL_INC"; then
968         AC_MSG_RESULT(<not found>)
969         SKIP_TCL=YES
970       fi
971       if test -z "$SKIP_TCL"; then
972         AC_MSG_CHECKING(for location of tclConfig.sh script)
973         if test "x$MACOSX" != "xyes"; then
974           tclcnf=`echo $tclinc | sed s/include/lib/g`
975           tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
976         else
977           dnl For Mac OS X 10.3, use the OS-provided framework location
978           tclcnf="/System/Library/Frameworks/Tcl.framework"
979         fi
980         for try in $tclcnf; do
981           if test -f $try/tclConfig.sh; then
982             AC_MSG_RESULT($try/tclConfig.sh)
983             . $try/tclConfig.sh
984             dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
985             TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
986             dnl Use $TCL_DEFS for -D_THREAD_SAFE et al.  But only use the
987             dnl "-D_ABC" items.  Watch out for -DFOO=long\ long.
988             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'`
989             break
990           fi
991         done
992         if test -z "$TCL_LIBS"; then
993           AC_MSG_RESULT(<not found>)
994           AC_MSG_CHECKING(for Tcl library by myself)
995           tcllib=`echo $tclinc | sed s/include/lib/g`
996           tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
997           for ext in .so .a ; do
998             for ver in "" $tclver ; do
999               for try in $tcllib ; do
1000                 trylib=tcl$ver$ext
1001                 if test -f $try/lib$trylib ; then
1002                   AC_MSG_RESULT($try/lib$trylib)
1003                   TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1004                   if test "`(uname) 2>/dev/null`" = SunOS &&
1005                                          uname -r | grep '^5' >/dev/null; then
1006                     TCL_LIBS="$TCL_LIBS -R $try"
1007                   fi
1008                   break 3
1009                 fi
1010               done
1011             done
1012           done
1013           if test -z "$TCL_LIBS"; then
1014             AC_MSG_RESULT(<not found>)
1015             SKIP_TCL=YES
1016           fi
1017         fi
1018         if test -z "$SKIP_TCL"; then
1019           AC_DEFINE(FEAT_TCL)
1020           TCL_SRC=if_tcl.c
1021           TCL_OBJ=objects/if_tcl.o
1022           TCL_PRO=if_tcl.pro
1023           TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1024         fi
1025       fi
1026     else
1027       AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1028     fi
1029   fi
1031 AC_SUBST(TCL_SRC)
1032 AC_SUBST(TCL_OBJ)
1033 AC_SUBST(TCL_PRO)
1034 AC_SUBST(TCL_CFLAGS)
1035 AC_SUBST(TCL_LIBS)
1037 AC_MSG_CHECKING(--enable-rubyinterp argument)
1038 AC_ARG_ENABLE(rubyinterp,
1039         [  --enable-rubyinterp     Include Ruby interpreter.], ,
1040         [enable_rubyinterp="no"])
1041 AC_MSG_RESULT($enable_rubyinterp)
1042 if test "$enable_rubyinterp" = "yes"; then
1043   AC_MSG_CHECKING(--with-ruby-command argument)
1044   AC_ARG_WITH(ruby-command, [  --with-ruby-command=RUBY  name of the Ruby command (default: ruby)],
1045         RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
1046         RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
1047   AC_SUBST(vi_cv_path_ruby)
1048   AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
1049   if test "X$vi_cv_path_ruby" != "X"; then
1050     AC_MSG_CHECKING(Ruby version)
1051     if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
1052       AC_MSG_RESULT(OK)
1053       AC_MSG_CHECKING(Ruby header files)
1054       rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
1055       if test "X$rubyhdrdir" != "X"; then
1056         AC_MSG_RESULT($rubyhdrdir)
1057         RUBY_CFLAGS="-I$rubyhdrdir"
1058         rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1059         if test -d "$rubyhdrdir/$rubyarch"; then
1060           RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1061         fi
1062         rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1063         RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
1064         rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1065         if test "X$rubylibs" != "X"; then
1066           RUBY_LIBS="$rubylibs"
1067         fi
1068         librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
1069         if test -f "$rubyhdrdir/$librubyarg"; then
1070           librubyarg="$rubyhdrdir/$librubyarg"
1071         else
1072           rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1073           if test -f "$rubylibdir/$librubyarg"; then
1074             librubyarg="$rubylibdir/$librubyarg"
1075           elif test "$librubyarg" = "libruby.a"; then
1076             dnl required on Mac OS 10.3 where libruby.a doesn't exist
1077             librubyarg="-lruby"
1078           else
1079             librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
1080           fi
1081         fi
1083         if test "X$librubyarg" != "X"; then
1084           RUBY_LIBS="$librubyarg $RUBY_LIBS"
1085         fi
1086         rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1087         if test "X$rubyldflags" != "X"; then
1088           dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1089           dnl be included if requested by passing --with-mac-arch to
1090           dnl configure, so strip these flags first (if present)
1091           rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
1092           if test "X$rubyldflags" != "X"; then
1093             LDFLAGS="$rubyldflags $LDFLAGS"
1094           fi
1095         fi
1096         RUBY_SRC="if_ruby.c"
1097         RUBY_OBJ="objects/if_ruby.o"
1098         RUBY_PRO="if_ruby.pro"
1099         AC_DEFINE(FEAT_RUBY)
1100       else
1101         AC_MSG_RESULT(not found; disabling Ruby)
1102       fi
1103     else
1104       AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1105     fi
1106   fi
1108 AC_SUBST(RUBY_SRC)
1109 AC_SUBST(RUBY_OBJ)
1110 AC_SUBST(RUBY_PRO)
1111 AC_SUBST(RUBY_CFLAGS)
1112 AC_SUBST(RUBY_LIBS)
1114 AC_MSG_CHECKING(--enable-cscope argument)
1115 AC_ARG_ENABLE(cscope,
1116         [  --enable-cscope         Include cscope interface.], ,
1117         [enable_cscope="no"])
1118 AC_MSG_RESULT($enable_cscope)
1119 if test "$enable_cscope" = "yes"; then
1120   AC_DEFINE(FEAT_CSCOPE)
1123 AC_MSG_CHECKING(--enable-workshop argument)
1124 AC_ARG_ENABLE(workshop,
1125         [  --enable-workshop       Include Sun Visual Workshop support.], ,
1126         [enable_workshop="no"])
1127 AC_MSG_RESULT($enable_workshop)
1128 if test "$enable_workshop" = "yes"; then
1129   AC_DEFINE(FEAT_SUN_WORKSHOP)
1130   WORKSHOP_SRC="workshop.c integration.c"
1131   AC_SUBST(WORKSHOP_SRC)
1132   WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1133   AC_SUBST(WORKSHOP_OBJ)
1134   if test "${enable_gui-xxx}" = xxx; then
1135     enable_gui=motif
1136   fi
1139 AC_MSG_CHECKING(--disable-netbeans argument)
1140 AC_ARG_ENABLE(netbeans,
1141         [  --disable-netbeans      Disable NetBeans integration support.],
1142         , [enable_netbeans="yes"])
1143 if test "$enable_netbeans" = "yes"; then
1144   AC_MSG_RESULT(no)
1145   dnl On Solaris we need the socket and nsl library.
1146   AC_CHECK_LIB(socket, socket)
1147   AC_CHECK_LIB(nsl, gethostbyname)
1148   AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1149   AC_TRY_LINK([
1150 #include <stdio.h>
1151 #include <stdlib.h>
1152 #include <stdarg.h>
1153 #include <fcntl.h>
1154 #include <netdb.h>
1155 #include <netinet/in.h>
1156 #include <errno.h>
1157 #include <sys/types.h>
1158 #include <sys/socket.h>
1159         /* Check bitfields */
1160         struct nbbuf {
1161         unsigned int  initDone:1;
1162         ushort signmaplen;
1163         };
1164             ], [
1165                 /* Check creating a socket. */
1166                 struct sockaddr_in server;
1167                 (void)socket(AF_INET, SOCK_STREAM, 0);
1168                 (void)htons(100);
1169                 (void)gethostbyname("microsoft.com");
1170                 if (errno == ECONNREFUSED)
1171                   (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1172             ],
1173         AC_MSG_RESULT(yes),
1174         AC_MSG_RESULT(no); enable_netbeans="no")
1175 else
1176   AC_MSG_RESULT(yes)
1178 if test "$enable_netbeans" = "yes"; then
1179   AC_DEFINE(FEAT_NETBEANS_INTG)
1180   NETBEANS_SRC="netbeans.c"
1181   AC_SUBST(NETBEANS_SRC)
1182   NETBEANS_OBJ="objects/netbeans.o"
1183   AC_SUBST(NETBEANS_OBJ)
1186 AC_MSG_CHECKING(--enable-sniff argument)
1187 AC_ARG_ENABLE(sniff,
1188         [  --enable-sniff          Include Sniff interface.], ,
1189         [enable_sniff="no"])
1190 AC_MSG_RESULT($enable_sniff)
1191 if test "$enable_sniff" = "yes"; then
1192   AC_DEFINE(FEAT_SNIFF)
1193   SNIFF_SRC="if_sniff.c"
1194   AC_SUBST(SNIFF_SRC)
1195   SNIFF_OBJ="objects/if_sniff.o"
1196   AC_SUBST(SNIFF_OBJ)
1199 AC_MSG_CHECKING(--enable-multibyte argument)
1200 AC_ARG_ENABLE(multibyte,
1201         [  --enable-multibyte      Include multibyte editing support.], ,
1202         [enable_multibyte="no"])
1203 AC_MSG_RESULT($enable_multibyte)
1204 if test "$enable_multibyte" = "yes"; then
1205   AC_DEFINE(FEAT_MBYTE)
1208 AC_MSG_CHECKING(--enable-hangulinput argument)
1209 AC_ARG_ENABLE(hangulinput,
1210         [  --enable-hangulinput    Include Hangul input support.], ,
1211         [enable_hangulinput="no"])
1212 AC_MSG_RESULT($enable_hangulinput)
1214 AC_MSG_CHECKING(--enable-xim argument)
1215 AC_ARG_ENABLE(xim,
1216         [  --enable-xim            Include XIM input support.],
1217         AC_MSG_RESULT($enable_xim),
1218         [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1219 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1221 AC_MSG_CHECKING(--enable-fontset argument)
1222 AC_ARG_ENABLE(fontset,
1223         [  --enable-fontset        Include X fontset output support.], ,
1224         [enable_fontset="no"])
1225 AC_MSG_RESULT($enable_fontset)
1226 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1228 test -z "$with_x" && with_x=yes
1229 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1230 if test "$with_x" = no; then
1231   AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1232 else
1233   dnl Do this check early, so that its failure can override user requests.
1235   AC_PATH_PROG(xmkmfpath, xmkmf)
1237   AC_PATH_XTRA
1239   dnl On OS390Unix the X libraries are DLLs. To use them the code must
1240   dnl be compiled with a special option.
1241   dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1242   if test "$OS390Unix" = "yes"; then
1243     CFLAGS="$CFLAGS -W c,dll"
1244     LDFLAGS="$LDFLAGS -W l,dll"
1245     X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1246   fi
1248   dnl On my HPUX system the X include dir is found, but the lib dir not.
1249   dnl This is a desparate try to fix this.
1251   if test -d "$x_includes" && test ! -d "$x_libraries"; then
1252     x_libraries=`echo "$x_includes" | sed s/include/lib/`
1253     AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1254     X_LIBS="$X_LIBS -L$x_libraries"
1255     if test "`(uname) 2>/dev/null`" = SunOS &&
1256                                          uname -r | grep '^5' >/dev/null; then
1257       X_LIBS="$X_LIBS -R $x_libraries"
1258     fi
1259   fi
1261   if test -d "$x_libraries" && test ! -d "$x_includes"; then
1262     x_includes=`echo "$x_libraries" | sed s/lib/include/`
1263     AC_MSG_RESULT(Corrected X includes to $x_includes)
1264     X_CFLAGS="$X_CFLAGS -I$x_includes"
1265   fi
1267   dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1268   X_CFLAGS="`echo $X_CFLAGS\  | sed 's%-I/usr/include %%'`"
1269   dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1270   X_LIBS="`echo $X_LIBS\  | sed 's%-L/usr/lib %%'`"
1271   dnl Same for "-R/usr/lib ".
1272   X_LIBS="`echo $X_LIBS\  | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1275   dnl Check if the X11 header files are correctly installed. On some systems
1276   dnl Xlib.h includes files that don't exist.  On some systems X11/Intrinsic.h
1277   dnl is missing.
1278   AC_MSG_CHECKING(if X11 header files can be found)
1279   cflags_save=$CFLAGS
1280   CFLAGS="$CFLAGS $X_CFLAGS"
1281   AC_TRY_COMPILE([#include <X11/Xlib.h>
1282 #include <X11/Intrinsic.h>], ,
1283         AC_MSG_RESULT(yes),
1284         AC_MSG_RESULT(no); no_x=yes)
1285   CFLAGS=$cflags_save
1287   if test "${no_x-no}" = yes; then
1288     with_x=no
1289   else
1290     AC_DEFINE(HAVE_X11)
1291     X_LIB="-lXt -lX11";
1292     AC_SUBST(X_LIB)
1294     ac_save_LDFLAGS="$LDFLAGS"
1295     LDFLAGS="-L$x_libraries $LDFLAGS"
1297     dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1298     dnl For HP-UX 10.20 it must be before -lSM -lICE
1299     AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1300                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1302     dnl Some systems need -lnsl -lsocket when testing for ICE.
1303     dnl The check above doesn't do this, try here (again).  Also needed to get
1304     dnl them after Xdmcp.  link.sh will remove them when not needed.
1305     dnl Check for other function than above to avoid the cached value
1306     AC_CHECK_LIB(ICE, IceOpenConnection,
1307                   [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1309     dnl Check for -lXpm (needed for some versions of Motif)
1310     LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1311     AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1312                 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1314     dnl Check that the X11 header files don't use implicit declarations
1315     AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1316     cflags_save=$CFLAGS
1317     CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1318     AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1319         AC_MSG_RESULT(no),
1320         CFLAGS="$CFLAGS -Wno-implicit-int"
1321         AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1322             AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1323             AC_MSG_RESULT(test failed)
1324         )
1325     )
1326     CFLAGS=$cflags_save
1328     LDFLAGS="$ac_save_LDFLAGS"
1330     AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1331     AC_CACHE_VAL(ac_cv_small_wchar_t,
1332         [AC_TRY_RUN([
1333 #include <X11/Xlib.h>
1334 #if STDC_HEADERS
1335 # include <stdlib.h>
1336 # include <stddef.h>
1337 #endif
1338                 main()
1339                 {
1340                   if (sizeof(wchar_t) <= 2)
1341                     exit(1);
1342                   exit(0);
1343                 }],
1344                 ac_cv_small_wchar_t="no",
1345                 ac_cv_small_wchar_t="yes",
1346                 AC_MSG_ERROR(failed to compile test program))])
1347     AC_MSG_RESULT($ac_cv_small_wchar_t)
1348     if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1349       AC_DEFINE(SMALL_WCHAR_T)
1350     fi
1352   fi
1355 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1357 AC_MSG_CHECKING(--enable-gui argument)
1358 AC_ARG_ENABLE(gui,
1359  [  --enable-gui[=OPTS]     X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
1361 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1362 dnl Do not use character classes for portability with old tools.
1363 enable_gui_canon=`echo "_$enable_gui" | \
1364         sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1366 dnl Skip everything by default.
1367 SKIP_GTK=YES
1368 SKIP_GTK2=YES
1369 SKIP_GNOME=YES
1370 SKIP_MOTIF=YES
1371 SKIP_ATHENA=YES
1372 SKIP_NEXTAW=YES
1373 SKIP_PHOTON=YES
1374 SKIP_CARBON=YES
1375 GUITYPE=NONE
1377 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1378   SKIP_PHOTON=
1379   case "$enable_gui_canon" in
1380     no)         AC_MSG_RESULT(no GUI support)
1381                 SKIP_PHOTON=YES ;;
1382     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1383     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1384     photon)     AC_MSG_RESULT(Photon GUI support) ;;
1385     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1386                 SKIP_PHOTON=YES ;;
1387   esac
1389 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1390   SKIP_CARBON=
1391   case "$enable_gui_canon" in
1392     no)         AC_MSG_RESULT(no GUI support)
1393                 SKIP_CARBON=YES ;;
1394     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1395     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1396     carbon)     AC_MSG_RESULT(Carbon GUI support) ;;
1397     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1398                 SKIP_CARBON=YES ;;
1399   esac
1401 else
1403   case "$enable_gui_canon" in
1404     no|none)    AC_MSG_RESULT(no GUI support) ;;
1405     yes|""|auto)        AC_MSG_RESULT(yes/auto - automatic GUI support)
1406                 SKIP_GTK=
1407                 SKIP_GTK2=
1408                 SKIP_GNOME=
1409                 SKIP_MOTIF=
1410                 SKIP_ATHENA=
1411                 SKIP_NEXTAW=
1412                 SKIP_CARBON=;;
1413     gtk)        AC_MSG_RESULT(GTK+ 1.x GUI support)
1414                 SKIP_GTK=;;
1415     gtk2)       AC_MSG_RESULT(GTK+ 2.x GUI support)
1416                 SKIP_GTK=
1417                 SKIP_GTK2=;;
1418     gnome)      AC_MSG_RESULT(GNOME 1.x GUI support)
1419                 SKIP_GNOME=
1420                 SKIP_GTK=;;
1421     gnome2)     AC_MSG_RESULT(GNOME 2.x GUI support)
1422                 SKIP_GNOME=
1423                 SKIP_GTK=
1424                 SKIP_GTK2=;;
1425     motif)      AC_MSG_RESULT(Motif GUI support)
1426                 SKIP_MOTIF=;;
1427     athena)     AC_MSG_RESULT(Athena GUI support)
1428                 SKIP_ATHENA=;;
1429     nextaw)     AC_MSG_RESULT(neXtaw GUI support)
1430                 SKIP_NEXTAW=;;
1431     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1432   esac
1436 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1437   AC_MSG_CHECKING(whether or not to look for GTK)
1438   AC_ARG_ENABLE(gtk-check,
1439         [  --enable-gtk-check      If auto-select GUI, check for GTK [default=yes]],
1440         , enable_gtk_check="yes")
1441   AC_MSG_RESULT($enable_gtk_check)
1442   if test "x$enable_gtk_check" = "xno"; then
1443     SKIP_GTK=YES
1444     SKIP_GNOME=YES
1445   fi
1448 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1449                                 -a "$enable_gui_canon" != "gnome2"; then
1450   AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1451   AC_ARG_ENABLE(gtk2-check,
1452         [  --enable-gtk2-check     If GTK GUI, check for GTK+ 2 [default=yes]],
1453         , enable_gtk2_check="yes")
1454   AC_MSG_RESULT($enable_gtk2_check)
1455   if test "x$enable_gtk2_check" = "xno"; then
1456     SKIP_GTK2=YES
1457   fi
1460 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1461                                  -a "$enable_gui_canon" != "gnome2"; then
1462   AC_MSG_CHECKING(whether or not to look for GNOME)
1463   AC_ARG_ENABLE(gnome-check,
1464         [  --enable-gnome-check    If GTK GUI, check for GNOME [default=no]],
1465         , enable_gnome_check="no")
1466   AC_MSG_RESULT($enable_gnome_check)
1467   if test "x$enable_gnome_check" = "xno"; then
1468     SKIP_GNOME=YES
1469   fi
1472 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1473   AC_MSG_CHECKING(whether or not to look for Motif)
1474   AC_ARG_ENABLE(motif-check,
1475         [  --enable-motif-check    If auto-select GUI, check for Motif [default=yes]],
1476         , enable_motif_check="yes")
1477   AC_MSG_RESULT($enable_motif_check)
1478   if test "x$enable_motif_check" = "xno"; then
1479     SKIP_MOTIF=YES
1480   fi
1483 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1484   AC_MSG_CHECKING(whether or not to look for Athena)
1485   AC_ARG_ENABLE(athena-check,
1486         [  --enable-athena-check   If auto-select GUI, check for Athena [default=yes]],
1487         , enable_athena_check="yes")
1488   AC_MSG_RESULT($enable_athena_check)
1489   if test "x$enable_athena_check" = "xno"; then
1490     SKIP_ATHENA=YES
1491   fi
1494 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1495   AC_MSG_CHECKING(whether or not to look for neXtaw)
1496   AC_ARG_ENABLE(nextaw-check,
1497         [  --enable-nextaw-check   If auto-select GUI, check for neXtaw [default=yes]],
1498         , enable_nextaw_check="yes")
1499   AC_MSG_RESULT($enable_nextaw_check);
1500   if test "x$enable_nextaw_check" = "xno"; then
1501     SKIP_NEXTAW=YES
1502   fi
1505 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1506   AC_MSG_CHECKING(whether or not to look for Carbon)
1507   AC_ARG_ENABLE(carbon-check,
1508         [  --enable-carbon-check   If auto-select GUI, check for Carbon [default=yes]],
1509         , enable_carbon_check="yes")
1510   AC_MSG_RESULT($enable_carbon_check);
1511   if test "x$enable_carbon_check" = "xno"; then
1512     SKIP_CARBON=YES
1513   fi
1517 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1518   AC_MSG_CHECKING(for Carbon GUI)
1519   dnl already did the check, just give the message
1520   AC_MSG_RESULT(yes);
1521   GUITYPE=CARBONGUI
1522   if test "$VIMNAME" = "vim"; then
1523     VIMNAME=Vim
1524   fi
1526   dnl Default install directory is not /usr/local
1527   if test x$prefix = xNONE; then
1528     prefix=/Applications
1529   fi
1531   dnl Sorry for the hard coded default
1532   datadir='${prefix}/Vim.app/Contents/Resources'
1534   dnl skip everything else
1535   SKIP_GTK=YES;
1536   SKIP_GTK2=YES;
1537   SKIP_GNOME=YES;
1538   SKIP_MOTIF=YES;
1539   SKIP_ATHENA=YES;
1540   SKIP_NEXTAW=YES;
1541   SKIP_PHOTON=YES;
1542   SKIP_CARBON=YES
1546 dnl Get the cflags and libraries from the gtk-config script
1549 dnl define an autoconf function to check for a specified version of GTK, and
1550 dnl try to compile/link a GTK program.  this gets used once for GTK 1.1.16.
1552 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1553 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1555 AC_DEFUN(AM_PATH_GTK,
1557   if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1558   {
1559     min_gtk_version=ifelse([$1], ,0.99.7,$1)
1560     AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1561     no_gtk=""
1562     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1563           && $PKG_CONFIG --exists gtk+-2.0; then
1564     {
1565       dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1566       dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1567       dnl something like that.
1568       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1569       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1570       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1571       gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1572              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1573       gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1574              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1575       gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1576              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1577     }
1578     elif test "X$GTK_CONFIG" != "Xno"; then
1579     {
1580       GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1581       GTK_LIBDIR=
1582       GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1583       gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1584              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1585       gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1586              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1587       gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1588              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1589     }
1590     else
1591       no_gtk=yes
1592     fi
1594     if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1595     {
1596       ac_save_CFLAGS="$CFLAGS"
1597       ac_save_LIBS="$LIBS"
1598       CFLAGS="$CFLAGS $GTK_CFLAGS"
1599       LIBS="$LIBS $GTK_LIBS"
1601       dnl
1602       dnl Now check if the installed GTK is sufficiently new. (Also sanity
1603       dnl checks the results of gtk-config to some extent
1604       dnl
1605       rm -f conf.gtktest
1606       AC_TRY_RUN([
1607 #include <gtk/gtk.h>
1608 #include <stdio.h>
1609 #if STDC_HEADERS
1610 # include <stdlib.h>
1611 # include <stddef.h>
1612 #endif
1615 main ()
1617 int major, minor, micro;
1618 char *tmp_version;
1620 system ("touch conf.gtktest");
1622 /* HP/UX 9 (%@#!) writes to sscanf strings */
1623 tmp_version = g_strdup("$min_gtk_version");
1624 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1625    printf("%s, bad version string\n", "$min_gtk_version");
1626    exit(1);
1629 if ((gtk_major_version > major) ||
1630     ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1631     ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1632                                      (gtk_micro_version >= micro)))
1634     return 0;
1636 return 1;
1638 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1639       CFLAGS="$ac_save_CFLAGS"
1640       LIBS="$ac_save_LIBS"
1641     }
1642     fi
1643     if test "x$no_gtk" = x ; then
1644       if test "x$enable_gtktest" = "xyes"; then
1645         AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1646       else
1647         AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1648       fi
1649       ifelse([$2], , :, [$2])
1650     else
1651     {
1652       AC_MSG_RESULT(no)
1653       GTK_CFLAGS=""
1654       GTK_LIBS=""
1655       ifelse([$3], , :, [$3])
1656     }
1657     fi
1658   }
1659   else
1660     GTK_CFLAGS=""
1661     GTK_LIBS=""
1662     ifelse([$3], , :, [$3])
1663   fi
1664   AC_SUBST(GTK_CFLAGS)
1665   AC_SUBST(GTK_LIBS)
1666   rm -f conf.gtktest
1669 dnl ---------------------------------------------------------------------------
1670 dnl gnome
1671 dnl ---------------------------------------------------------------------------
1672 AC_DEFUN([GNOME_INIT_HOOK],
1674   AC_SUBST(GNOME_LIBS)
1675   AC_SUBST(GNOME_LIBDIR)
1676   AC_SUBST(GNOME_INCLUDEDIR)
1678   AC_ARG_WITH(gnome-includes,
1679     [  --with-gnome-includes=DIR Specify location of GNOME headers],
1680     [CFLAGS="$CFLAGS -I$withval"]
1681   )
1683   AC_ARG_WITH(gnome-libs,
1684     [  --with-gnome-libs=DIR   Specify location of GNOME libs],
1685     [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1686   )
1688   AC_ARG_WITH(gnome,
1689     [  --with-gnome            Specify prefix for GNOME files],
1690     if test x$withval = xyes; then
1691       want_gnome=yes
1692       ifelse([$1], [], :, [$1])
1693     else
1694       if test "x$withval" = xno; then
1695         want_gnome=no
1696       else
1697         want_gnome=yes
1698         LDFLAGS="$LDFLAGS -L$withval/lib"
1699         CFLAGS="$CFLAGS -I$withval/include"
1700         gnome_prefix=$withval/lib
1701       fi
1702     fi,
1703     want_gnome=yes)
1705   if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1706   {
1707     AC_MSG_CHECKING(for libgnomeui-2.0)
1708     if $PKG_CONFIG --exists libgnomeui-2.0; then
1709       AC_MSG_RESULT(yes)
1710       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1711       GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1712       GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1714       dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1715       dnl This might not be the right way but it works for me...
1716       AC_MSG_CHECKING(for FreeBSD)
1717       if test "`(uname) 2>/dev/null`" = FreeBSD; then
1718         AC_MSG_RESULT(yes, adding -pthread)
1719         GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1720         GNOME_LIBS="$GNOME_LIBS -pthread"
1721       else
1722         AC_MSG_RESULT(no)
1723       fi
1724       $1
1725     else
1726       AC_MSG_RESULT(not found)
1727       if test "x$2" = xfail; then
1728         AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1729       fi
1730     fi
1731   }
1732   elif test "x$want_gnome" = xyes; then
1733   {
1734     AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1735     if test "$GNOME_CONFIG" = "no"; then
1736       no_gnome_config="yes"
1737     else
1738       AC_MSG_CHECKING(if $GNOME_CONFIG works)
1739       if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1740         AC_MSG_RESULT(yes)
1741         GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1742         GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1743         GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1744         $1
1745       else
1746         AC_MSG_RESULT(no)
1747         no_gnome_config="yes"
1748       fi
1749     fi
1751     if test x$exec_prefix = xNONE; then
1752       if test x$prefix = xNONE; then
1753         gnome_prefix=$ac_default_prefix/lib
1754       else
1755         gnome_prefix=$prefix/lib
1756       fi
1757     else
1758       gnome_prefix=`eval echo \`echo $libdir\``
1759     fi
1761     if test "$no_gnome_config" = "yes"; then
1762       AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1763       if test -f $gnome_prefix/gnomeConf.sh; then
1764         AC_MSG_RESULT(found)
1765         echo "loading gnome configuration from" \
1766           "$gnome_prefix/gnomeConf.sh"
1767         . $gnome_prefix/gnomeConf.sh
1768         $1
1769       else
1770         AC_MSG_RESULT(not found)
1771         if test x$2 = xfail; then
1772           AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1773         fi
1774       fi
1775     fi
1776   }
1777   fi
1780 AC_DEFUN([GNOME_INIT],[
1781         GNOME_INIT_HOOK([],fail)
1785 dnl ---------------------------------------------------------------------------
1786 dnl Check for GTK.  First checks for gtk-config, cause it needs that to get the
1787 dnl correct compiler flags.  Then checks for GTK 1.1.16.  If that fails, then
1788 dnl it checks for 1.0.6.  If both fail, then continue on for Motif as before...
1789 dnl ---------------------------------------------------------------------------
1790 if test -z "$SKIP_GTK"; then
1792   AC_MSG_CHECKING(--with-gtk-prefix argument)
1793   AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
1794         gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1795         gtk_config_prefix=""; AC_MSG_RESULT(no))
1797   AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1798   AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1799         gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1800         gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1802   AC_MSG_CHECKING(--disable-gtktest argument)
1803   AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
1804         , enable_gtktest=yes)
1805   if test "x$enable_gtktest" = "xyes" ; then
1806     AC_MSG_RESULT(gtk test enabled)
1807   else
1808     AC_MSG_RESULT(gtk test disabled)
1809   fi
1811   if test "x$gtk_config_prefix" != "x" ; then
1812     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1813     GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1814   fi
1815   if test "x$gtk_config_exec_prefix" != "x" ; then
1816     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1817     GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1818   fi
1819   if test "X$GTK_CONFIG" = "X"; then
1820     AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1821     if test "X$GTK_CONFIG" = "Xno"; then
1822       dnl Some distributions call it gtk12-config, annoying!
1823       AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1824       GTK_CONFIG="$GTK12_CONFIG"
1825     fi
1826   else
1827     AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1828   fi
1829   if test "X$PKG_CONFIG" = "X"; then
1830     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1831   fi
1833   if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1834     dnl First try finding version 2.2.0 or later.  The 2.0.x series has
1835     dnl problems (bold fonts, --remote doesn't work).
1836     if test "X$SKIP_GTK2" != "XYES"; then
1837       AM_PATH_GTK(2.2.0,
1838                   [GUI_LIB_LOC="$GTK_LIBDIR"
1839                    GTK_LIBNAME="$GTK_LIBS"
1840                   GUI_INC_LOC="$GTK_CFLAGS"], )
1841       if test "x$GTK_CFLAGS" != "x"; then
1842         SKIP_ATHENA=YES
1843         SKIP_NEXTAW=YES
1844         SKIP_MOTIF=YES
1845         GUITYPE=GTK
1846         AC_SUBST(GTK_LIBNAME)
1847       fi
1848     fi
1850     dnl If there is no 2.2.0 or later try the 1.x.x series.  We require at
1851     dnl least GTK 1.1.16.  1.0.6 doesn't work.  1.1.1 to 1.1.15
1852     dnl were test versions.
1853     if test "x$GUITYPE" != "xGTK"; then
1854       SKIP_GTK2=YES
1855       AM_PATH_GTK(1.1.16,
1856                   [GTK_LIBNAME="$GTK_LIBS"
1857                   GUI_INC_LOC="$GTK_CFLAGS"], )
1858       if test "x$GTK_CFLAGS" != "x"; then
1859         SKIP_ATHENA=YES
1860         SKIP_NEXTAW=YES
1861         SKIP_MOTIF=YES
1862         GUITYPE=GTK
1863         AC_SUBST(GTK_LIBNAME)
1864       fi
1865     fi
1866   fi
1867   dnl Give a warning if GTK is older than 1.2.3
1868   if test "x$GUITYPE" = "xGTK"; then
1869     if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1870          -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1871       AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1872     else
1873     {
1874       if test "0$gtk_major_version" -ge 2; then
1875         AC_DEFINE(HAVE_GTK2)
1876         if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1877                 || test "0$gtk_minor_version" -ge 2 \
1878                 || test "0$gtk_major_version" -gt 2; then
1879           AC_DEFINE(HAVE_GTK_MULTIHEAD)
1880         fi
1881       fi
1882       dnl
1883       dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1884       dnl
1885       if test -z "$SKIP_GNOME"; then
1886       {
1887         GNOME_INIT_HOOK([have_gnome=yes])
1888         if test x$have_gnome = xyes ; then
1889           AC_DEFINE(FEAT_GUI_GNOME)
1890           GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1891           GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1892         fi
1893       }
1894       fi
1895     }
1896     fi
1897   fi
1900 dnl Check for Motif include files location.
1901 dnl The LAST one found is used, this makes the highest version to be used,
1902 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1904 if test -z "$SKIP_MOTIF"; then
1905   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"
1906   dnl Remove "-I" from before $GUI_INC_LOC if it's there
1907   GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1909   AC_MSG_CHECKING(for location of Motif GUI includes)
1910   gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1911   GUI_INC_LOC=
1912   for try in $gui_includes; do
1913     if test -f "$try/Xm/Xm.h"; then
1914       GUI_INC_LOC=$try
1915     fi
1916   done
1917   if test -n "$GUI_INC_LOC"; then
1918     if test "$GUI_INC_LOC" = /usr/include; then
1919       GUI_INC_LOC=
1920       AC_MSG_RESULT(in default path)
1921     else
1922       AC_MSG_RESULT($GUI_INC_LOC)
1923     fi
1924   else
1925     AC_MSG_RESULT(<not found>)
1926     SKIP_MOTIF=YES
1927   fi
1930 dnl Check for Motif library files location.  In the same order as the include
1931 dnl files, to avoid a mixup if several versions are present
1933 if test -z "$SKIP_MOTIF"; then
1934   AC_MSG_CHECKING(--with-motif-lib argument)
1935   AC_ARG_WITH(motif-lib,
1936   [  --with-motif-lib=STRING   Library for Motif ],
1937   [ MOTIF_LIBNAME="${withval}" ] )
1939   if test -n "$MOTIF_LIBNAME"; then
1940     AC_MSG_RESULT($MOTIF_LIBNAME)
1941     GUI_LIB_LOC=
1942   else
1943     AC_MSG_RESULT(no)
1945     dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1946     GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1948     AC_MSG_CHECKING(for location of Motif GUI libs)
1949     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"
1950     GUI_LIB_LOC=
1951     for try in $gui_libs; do
1952       for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1953         if test -f "$libtry"; then
1954           GUI_LIB_LOC=$try
1955         fi
1956       done
1957     done
1958     if test -n "$GUI_LIB_LOC"; then
1959       dnl Remove /usr/lib, it causes trouble on some systems
1960       if test "$GUI_LIB_LOC" = /usr/lib; then
1961         GUI_LIB_LOC=
1962         AC_MSG_RESULT(in default path)
1963       else
1964         if test -n "$GUI_LIB_LOC"; then
1965           AC_MSG_RESULT($GUI_LIB_LOC)
1966           if test "`(uname) 2>/dev/null`" = SunOS &&
1967                                          uname -r | grep '^5' >/dev/null; then
1968             GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1969           fi
1970         fi
1971       fi
1972       MOTIF_LIBNAME=-lXm
1973     else
1974       AC_MSG_RESULT(<not found>)
1975       SKIP_MOTIF=YES
1976     fi
1977   fi
1980 if test -z "$SKIP_MOTIF"; then
1981   SKIP_ATHENA=YES
1982   SKIP_NEXTAW=YES
1983   GUITYPE=MOTIF
1984   AC_SUBST(MOTIF_LIBNAME)
1987 dnl Check if the Athena files can be found
1989 GUI_X_LIBS=
1991 if test -z "$SKIP_ATHENA"; then
1992   AC_MSG_CHECKING(if Athena header files can be found)
1993   cflags_save=$CFLAGS
1994   CFLAGS="$CFLAGS $X_CFLAGS"
1995   AC_TRY_COMPILE([
1996 #include <X11/Intrinsic.h>
1997 #include <X11/Xaw/Paned.h>], ,
1998         AC_MSG_RESULT(yes),
1999         AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2000   CFLAGS=$cflags_save
2003 if test -z "$SKIP_ATHENA"; then
2004   GUITYPE=ATHENA
2007 if test -z "$SKIP_NEXTAW"; then
2008   AC_MSG_CHECKING(if neXtaw header files can be found)
2009   cflags_save=$CFLAGS
2010   CFLAGS="$CFLAGS $X_CFLAGS"
2011   AC_TRY_COMPILE([
2012 #include <X11/Intrinsic.h>
2013 #include <X11/neXtaw/Paned.h>], ,
2014         AC_MSG_RESULT(yes),
2015         AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2016   CFLAGS=$cflags_save
2019 if test -z "$SKIP_NEXTAW"; then
2020   GUITYPE=NEXTAW
2023 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2024   dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2025   dnl Avoid adding it when it twice
2026   if test -n "$GUI_INC_LOC"; then
2027     GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2028   fi
2029   if test -n "$GUI_LIB_LOC"; then
2030     GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2031   fi
2033   dnl Check for -lXext and then for -lXmu
2034   ldflags_save=$LDFLAGS
2035   LDFLAGS="$X_LIBS $LDFLAGS"
2036   AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2037                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2038   dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2039   AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2040                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2041   AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2042                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2043   AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2044                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2045   if test -z "$SKIP_MOTIF"; then
2046     AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2047                 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2048   fi
2049   LDFLAGS=$ldflags_save
2051   dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2052   AC_MSG_CHECKING(for extra X11 defines)
2053   NARROW_PROTO=
2054   rm -fr conftestdir
2055   if mkdir conftestdir; then
2056     cd conftestdir
2057     cat > Imakefile <<'EOF'
2058 acfindx:
2059         @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2061     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2062       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2063     fi
2064     cd ..
2065     rm -fr conftestdir
2066   fi
2067   if test -z "$NARROW_PROTO"; then
2068     AC_MSG_RESULT(no)
2069   else
2070     AC_MSG_RESULT($NARROW_PROTO)
2071   fi
2072   AC_SUBST(NARROW_PROTO)
2075 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2076 dnl use the X11 include path
2077 if test "$enable_xsmp" = "yes"; then
2078   cppflags_save=$CPPFLAGS
2079   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2080   AC_CHECK_HEADERS(X11/SM/SMlib.h)
2081   CPPFLAGS=$cppflags_save
2085 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
2086   dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2087   cppflags_save=$CPPFLAGS
2088   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2089   AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2091   dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2092   if test ! "$enable_xim" = "no"; then
2093     AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2094     AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2095                   AC_MSG_RESULT(yes),
2096                   AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2097   fi
2098   CPPFLAGS=$cppflags_save
2100   dnl automatically enable XIM when hangul input isn't enabled
2101   if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2102                 -a "x$GUITYPE" != "xNONE" ; then
2103     AC_MSG_RESULT(X GUI selected; xim has been enabled)
2104     enable_xim="yes"
2105   fi
2108 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2109   cppflags_save=$CPPFLAGS
2110   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2111 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2112   AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2113   AC_TRY_COMPILE([
2114 #include <X11/Intrinsic.h>
2115 #include <X11/Xmu/Editres.h>],
2116                       [int i; i = 0;],
2117               AC_MSG_RESULT(yes)
2118                       AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2119               AC_MSG_RESULT(no))
2120   CPPFLAGS=$cppflags_save
2123 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2124 if test -z "$SKIP_MOTIF"; then
2125   cppflags_save=$CPPFLAGS
2126   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2127   AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
2128                    Xm/UnhighlightT.h Xm/Notebook.h)
2130   if test $ac_cv_header_Xm_XpmP_h = yes; then
2131     dnl Solaris uses XpmAttributes_21, very annoying.
2132     AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2133     AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2134         AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2135         AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2136         )
2137   else
2138     AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2139   fi
2140   CPPFLAGS=$cppflags_save
2143 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2144   AC_MSG_RESULT(no GUI selected; xim has been disabled)
2145   enable_xim="no"
2147 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2148   AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2149   enable_fontset="no"
2151 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2152   AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2153   enable_fontset="no"
2156 if test -z "$SKIP_PHOTON"; then
2157   GUITYPE=PHOTONGUI
2160 AC_SUBST(GUI_INC_LOC)
2161 AC_SUBST(GUI_LIB_LOC)
2162 AC_SUBST(GUITYPE)
2163 AC_SUBST(GUI_X_LIBS)
2165 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2166   AC_MSG_ERROR([cannot use workshop without Motif])
2169 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2170 if test "$enable_xim" = "yes"; then
2171   AC_DEFINE(FEAT_XIM)
2173 if test "$enable_fontset" = "yes"; then
2174   AC_DEFINE(FEAT_XFONTSET)
2178 dnl ---------------------------------------------------------------------------
2179 dnl end of GUI-checking
2180 dnl ---------------------------------------------------------------------------
2183 dnl Only really enable hangul input when GUI and XFONTSET are available
2184 if test "$enable_hangulinput" = "yes"; then
2185   if test "x$GUITYPE" = "xNONE"; then
2186     AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2187     enable_hangulinput=no
2188   else
2189     AC_DEFINE(FEAT_HANGULIN)
2190     HANGULIN_SRC=hangulin.c
2191     AC_SUBST(HANGULIN_SRC)
2192     HANGULIN_OBJ=objects/hangulin.o
2193     AC_SUBST(HANGULIN_OBJ)
2194   fi
2197 dnl Checks for libraries and include files.
2199 AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2200   [
2201     AC_RUN_IFELSE([[
2202 #include "confdefs.h"
2203 #include <ctype.h>
2204 #if STDC_HEADERS
2205 # include <stdlib.h>
2206 # include <stddef.h>
2207 #endif
2208 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2209   ]],[
2210     vim_cv_toupper_broken=yes
2211   ],[
2212     vim_cv_toupper_broken=no
2213   ],[
2214     AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2215   ])])
2217 if test "x$vim_cv_toupper_broken" = "xyes" ; then
2218   AC_DEFINE(BROKEN_TOUPPER)
2221 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2222 AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
2223         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2224         AC_MSG_RESULT(no))
2226 AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2227 AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2228         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2229         AC_MSG_RESULT(no))
2231 dnl Checks for header files.
2232 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2233 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2234 if test "$HAS_ELF" = 1; then
2235   AC_CHECK_LIB(elf, main)
2238 AC_HEADER_DIRENT
2240 dnl If sys/wait.h is not found it might still exist but not be POSIX
2241 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2242 if test $ac_cv_header_sys_wait_h = no; then
2243   AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2244   AC_TRY_COMPILE([#include <sys/wait.h>],
2245                         [union wait xx, yy; xx = yy],
2246                 AC_MSG_RESULT(yes)
2247                         AC_DEFINE(HAVE_SYS_WAIT_H)
2248                         AC_DEFINE(HAVE_UNION_WAIT),
2249                 AC_MSG_RESULT(no))
2252 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2253         termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2254         iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
2255         sys/resource.h sys/systeminfo.h locale.h \
2256         sys/stream.h termios.h libc.h sys/statfs.h \
2257         poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2258         libgen.h util/debug.h util/msg18n.h frame.h \
2259         sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
2261 dnl sys/ptem.h depends on sys/stream.h on Solaris
2262 AC_CHECK_HEADERS(sys/ptem.h, [], [],
2263 [#if defined HAVE_SYS_STREAM_H
2264 #  include <sys/stream.h>
2265 #endif])
2267 dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2268 AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2269 [#if defined HAVE_SYS_PARAM_H
2270 #  include <sys/param.h>
2271 #endif])
2274 dnl pthread_np.h may exist but can only be used after including pthread.h
2275 AC_MSG_CHECKING([for pthread_np.h])
2276 AC_TRY_COMPILE([
2277 #include <pthread.h>
2278 #include <pthread_np.h>],
2279                       [int i; i = 0;],
2280               AC_MSG_RESULT(yes)
2281                       AC_DEFINE(HAVE_PTHREAD_NP_H),
2282               AC_MSG_RESULT(no))
2284 AC_CHECK_HEADERS(strings.h)
2285 if test "x$MACOSX" = "xyes"; then
2286   dnl The strings.h file on OS/X contains a warning and nothing useful.
2287   AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2288 else
2290 dnl Check if strings.h and string.h can both be included when defined.
2291 AC_MSG_CHECKING([if strings.h can be included after string.h])
2292 cppflags_save=$CPPFLAGS
2293 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2294 AC_TRY_COMPILE([
2295 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2296 # define _NO_PROTO      /* like in os_unix.h, causes conflict for AIX (Winn) */
2297                         /* but don't do it on AIX 5.1 (Uribarri) */
2298 #endif
2299 #ifdef HAVE_XM_XM_H
2300 # include <Xm/Xm.h>     /* This breaks it for HP-UX 11 (Squassabia) */
2301 #endif
2302 #ifdef HAVE_STRING_H
2303 # include <string.h>
2304 #endif
2305 #if defined(HAVE_STRINGS_H)
2306 # include <strings.h>
2307 #endif
2308                 ], [int i; i = 0;],
2309                 AC_MSG_RESULT(yes),
2310                 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2311                 AC_MSG_RESULT(no))
2312 CPPFLAGS=$cppflags_save
2315 dnl Checks for typedefs, structures, and compiler characteristics.
2316 AC_PROG_GCC_TRADITIONAL
2317 AC_C_CONST
2318 AC_C_VOLATILE
2319 AC_TYPE_MODE_T
2320 AC_TYPE_OFF_T
2321 AC_TYPE_PID_T
2322 AC_TYPE_SIZE_T
2323 AC_TYPE_UID_T
2324 AC_HEADER_TIME
2325 AC_CHECK_TYPE(ino_t, long)
2326 AC_CHECK_TYPE(dev_t, unsigned)
2328 AC_MSG_CHECKING(for rlim_t)
2329 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2330   AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2331 else
2332   AC_EGREP_CPP(dnl
2333 changequote(<<,>>)dnl
2334 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2335 changequote([,]),
2336   [
2337 #include <sys/types.h>
2338 #if STDC_HEADERS
2339 # include <stdlib.h>
2340 # include <stddef.h>
2341 #endif
2342 #ifdef HAVE_SYS_RESOURCE_H
2343 # include <sys/resource.h>
2344 #endif
2345           ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2346           AC_MSG_RESULT($ac_cv_type_rlim_t)
2348 if test $ac_cv_type_rlim_t = no; then
2349   cat >> confdefs.h <<\EOF
2350 #define rlim_t unsigned long
2354 AC_MSG_CHECKING(for stack_t)
2355 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2356   AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2357 else
2358   AC_EGREP_CPP(stack_t,
2359   [
2360 #include <sys/types.h>
2361 #if STDC_HEADERS
2362 # include <stdlib.h>
2363 # include <stddef.h>
2364 #endif
2365 #include <signal.h>
2366           ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2367           AC_MSG_RESULT($ac_cv_type_stack_t)
2369 if test $ac_cv_type_stack_t = no; then
2370   cat >> confdefs.h <<\EOF
2371 #define stack_t struct sigaltstack
2375 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2376 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2377 AC_TRY_COMPILE([
2378 #include <sys/types.h>
2379 #if STDC_HEADERS
2380 # include <stdlib.h>
2381 # include <stddef.h>
2382 #endif
2383 #include <signal.h>
2384 #include "confdefs.h"
2385                         ], [stack_t sigstk; sigstk.ss_base = 0; ],
2386         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2387         AC_MSG_RESULT(no))
2389 olibs="$LIBS"
2390 AC_MSG_CHECKING(--with-tlib argument)
2391 AC_ARG_WITH(tlib, [  --with-tlib=library     terminal library to be used ],)
2392 if test -n "$with_tlib"; then
2393   AC_MSG_RESULT($with_tlib)
2394   LIBS="$LIBS -l$with_tlib"
2395   AC_MSG_CHECKING(for linking with $with_tlib library)
2396   AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2397   dnl Need to check for tgetent() below.
2398   olibs="$LIBS"
2399 else
2400   AC_MSG_RESULT([empty: automatic terminal library selection])
2401   dnl  On HP-UX 10.10 termcap or termlib should be used instead of
2402   dnl  curses, because curses is much slower.
2403   dnl  Newer versions of ncurses are preferred over anything.
2404   dnl  Older versions of ncurses have bugs, get a new one!
2405   dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
2406   dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
2407   case "`uname -s 2>/dev/null`" in
2408         OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
2409         *)      tlibs="ncurses termlib termcap curses";;
2410   esac
2411   for libname in $tlibs; do
2412     AC_CHECK_LIB(${libname}, tgetent,,)
2413     if test "x$olibs" != "x$LIBS"; then
2414       dnl It's possible that a library is found but it doesn't work
2415       dnl e.g., shared library that cannot be found
2416       dnl compile and run a test program to be sure
2417       AC_TRY_RUN([
2418 #ifdef HAVE_TERMCAP_H
2419 # include <termcap.h>
2420 #endif
2421 #if STDC_HEADERS
2422 # include <stdlib.h>
2423 # include <stddef.h>
2424 #endif
2425 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2426                           res="OK", res="FAIL", res="FAIL")
2427       if test "$res" = "OK"; then
2428         break
2429       fi
2430       AC_MSG_RESULT($libname library is not usable)
2431       LIBS="$olibs"
2432     fi
2433   done
2434   if test "x$olibs" = "x$LIBS"; then
2435     AC_MSG_RESULT(no terminal library found)
2436   fi
2439 if test "x$olibs" = "x$LIBS"; then
2440   AC_MSG_CHECKING([for tgetent()])
2441   AC_TRY_LINK([],
2442       [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2443         AC_MSG_RESULT(yes),
2444         AC_MSG_ERROR([NOT FOUND!
2445       You need to install a terminal library; for example ncurses.
2446       Or specify the name of the library with --with-tlib.]))
2449 AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2450   [
2451     AC_RUN_IFELSE([[
2452 #include "confdefs.h"
2453 #ifdef HAVE_TERMCAP_H
2454 # include <termcap.h>
2455 #endif
2456 #ifdef HAVE_STRING_H
2457 # include <string.h>
2458 #endif
2459 #if STDC_HEADERS
2460 # include <stdlib.h>
2461 # include <stddef.h>
2462 #endif
2463 main()
2464 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2465     ]],[
2466       vim_cv_terminfo=no
2467     ],[
2468       vim_cv_terminfo=yes
2469     ],[
2470       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2471     ])
2472   ])
2474 if test "x$vim_cv_terminfo" = "xyes" ; then
2475   AC_DEFINE(TERMINFO)
2478 if test "x$olibs" != "x$LIBS"; then
2479   AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2480     [
2481       AC_RUN_IFELSE([[
2482 #include "confdefs.h"
2483 #ifdef HAVE_TERMCAP_H
2484 # include <termcap.h>
2485 #endif
2486 #if STDC_HEADERS
2487 # include <stdlib.h>
2488 # include <stddef.h>
2489 #endif
2490 main()
2491 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2492       ]],[
2493         vim_cv_tgent=zero
2494       ],[
2495         vim_cv_tgent=non-zero
2496       ],[
2497         AC_MSG_ERROR(failed to compile test program.)
2498       ])
2499     ])
2500   
2501   if test "x$vim_cv_tgent" = "xzero" ; then
2502     AC_DEFINE(TGETENT_ZERO_ERR, 0)
2503   fi
2506 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2507 AC_TRY_LINK([
2508 #ifdef HAVE_TERMCAP_H
2509 # include <termcap.h>
2510 #endif
2511                         ], [ospeed = 20000],
2512         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2513         [AC_MSG_RESULT(no)
2514         AC_MSG_CHECKING(whether ospeed can be extern)
2515         AC_TRY_LINK([
2516 #ifdef HAVE_TERMCAP_H
2517 # include <termcap.h>
2518 #endif
2519 extern short ospeed;
2520                         ], [ospeed = 20000],
2521                 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2522                 AC_MSG_RESULT(no))]
2523         )
2525 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2526 AC_TRY_LINK([
2527 #ifdef HAVE_TERMCAP_H
2528 # include <termcap.h>
2529 #endif
2530                         ], [if (UP == 0 && BC == 0) PC = 1],
2531         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2532         [AC_MSG_RESULT(no)
2533         AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2534         AC_TRY_LINK([
2535 #ifdef HAVE_TERMCAP_H
2536 # include <termcap.h>
2537 #endif
2538 extern char *UP, *BC, PC;
2539                         ], [if (UP == 0 && BC == 0) PC = 1],
2540                 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2541                 AC_MSG_RESULT(no))]
2542         )
2544 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2545 AC_TRY_COMPILE([
2546 #ifdef HAVE_TERMCAP_H
2547 # include <termcap.h>
2548 #endif
2549                         ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2550         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2551         AC_MSG_RESULT(no))
2553 dnl On some SCO machines sys/select redefines struct timeval
2554 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2555 AC_TRY_COMPILE([
2556 #include <sys/types.h>
2557 #include <sys/time.h>
2558 #include <sys/select.h>], ,
2559           AC_MSG_RESULT(yes)
2560                         AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2561           AC_MSG_RESULT(no))
2563 dnl AC_DECL_SYS_SIGLIST
2565 dnl Checks for pty.c (copied from screen) ==========================
2566 AC_MSG_CHECKING(for /dev/ptc)
2567 if test -r /dev/ptc; then
2568   AC_DEFINE(HAVE_DEV_PTC)
2569   AC_MSG_RESULT(yes)
2570 else
2571   AC_MSG_RESULT(no)
2574 AC_MSG_CHECKING(for SVR4 ptys)
2575 if test -c /dev/ptmx ; then
2576   AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2577         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2578         AC_MSG_RESULT(no))
2579 else
2580   AC_MSG_RESULT(no)
2583 AC_MSG_CHECKING(for ptyranges)
2584 if test -d /dev/ptym ; then
2585   pdir='/dev/ptym'
2586 else
2587   pdir='/dev'
2589 dnl SCO uses ptyp%d
2590 AC_EGREP_CPP(yes,
2591 [#ifdef M_UNIX
2592    yes;
2593 #endif
2594         ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2595 dnl if test -c /dev/ptyp19; then
2596 dnl ptys=`echo /dev/ptyp??`
2597 dnl else
2598 dnl ptys=`echo $pdir/pty??`
2599 dnl fi
2600 if test "$ptys" != "$pdir/pty??" ; then
2601   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2602   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
2603   AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2604   AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2605   AC_MSG_RESULT([$p0 / $p1])
2606 else
2607   AC_MSG_RESULT([don't know])
2610 dnl    ****  pty mode/group handling ****
2612 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2613 rm -f conftest_grp
2614 AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2615   [
2616     AC_RUN_IFELSE([[
2617 #include "confdefs.h"
2618 #include <sys/types.h>
2619 #if STDC_HEADERS
2620 # include <stdlib.h>
2621 # include <stddef.h>
2622 #endif
2623 #ifdef HAVE_UNISTD_H
2624 #include <unistd.h>
2625 #endif
2626 #include <sys/stat.h>
2627 #include <stdio.h>
2628 main()
2630   struct stat sb;
2631   char *x,*ttyname();
2632   int om, m;
2633   FILE *fp;
2635   if (!(x = ttyname(0))) exit(1);
2636   if (stat(x, &sb)) exit(1);
2637   om = sb.st_mode;
2638   if (om & 002) exit(0);
2639   m = system("mesg y");
2640   if (m == -1 || m == 127) exit(1);
2641   if (stat(x, &sb)) exit(1);
2642   m = sb.st_mode;
2643   if (chmod(x, om)) exit(1);
2644   if (m & 002) exit(0);
2645   if (sb.st_gid == getgid()) exit(1);
2646   if (!(fp=fopen("conftest_grp", "w")))
2647     exit(1);
2648   fprintf(fp, "%d\n", sb.st_gid);
2649   fclose(fp);
2650   exit(0);
2652     ]],[
2653       if test -f conftest_grp; then
2654         vim_cv_tty_group=`cat conftest_grp`
2655         if test "x$vim_cv_tty_mode" = "x" ; then
2656           vim_cv_tty_mode=0620
2657         fi
2658         AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2659       else
2660         vim_cv_tty_group=world
2661         AC_MSG_RESULT([ptys are world accessible])
2662       fi
2663     ],[
2664       vim_cv_tty_group=world
2665       AC_MSG_RESULT([can't determine - assume ptys are world accessible])
2666     ],[
2667       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2668     ])
2669   ])
2670 rm -f conftest_grp
2672 if test "x$vim_cv_tty_group" != "xworld" ; then
2673   AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2674   if test "x$vim_cv_tty_mode" = "x" ; then
2675     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)])
2676   else
2677     AC_DEFINE(PTYMODE, 0620)
2678   fi
2681 dnl Checks for library functions. ===================================
2683 AC_TYPE_SIGNAL
2685 dnl find out what to use at the end of a signal function
2686 if test $ac_cv_type_signal = void; then
2687   AC_DEFINE(SIGRETURN, [return])
2688 else
2689   AC_DEFINE(SIGRETURN, [return 0])
2692 dnl check if struct sigcontext is defined (used for SGI only)
2693 AC_MSG_CHECKING(for struct sigcontext)
2694 AC_TRY_COMPILE([
2695 #include <signal.h>
2696 test_sig()
2698     struct sigcontext *scont;
2699     scont = (struct sigcontext *)0;
2700     return 1;
2701 } ], ,
2702           AC_MSG_RESULT(yes)
2703                 AC_DEFINE(HAVE_SIGCONTEXT),
2704           AC_MSG_RESULT(no))
2706 dnl tricky stuff: try to find out if getcwd() is implemented with
2707 dnl system("sh -c pwd")
2708 AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2709   [
2710     AC_RUN_IFELSE([[
2711 #include "confdefs.h"
2712 #ifdef HAVE_UNISTD_H
2713 #include <unistd.h>
2714 #endif
2715 char *dagger[] = { "IFS=pwd", 0 };
2716 main()
2718   char buffer[500];
2719   extern char **environ;
2720   environ = dagger;
2721   return getcwd(buffer, 500) ? 0 : 1;
2723     ]],[
2724       vim_cv_getcwd_broken=no
2725     ],[
2726       vim_cv_getcwd_broken=yes
2727     ],[
2728       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2729     ])
2730   ])
2732 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2733   AC_DEFINE(BAD_GETCWD)
2736 dnl Check for functions in one big call, to reduce the size of configure.
2737 dnl Can only be used for functions that do not require any include.
2738 AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
2739         getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2740         memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
2741         setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2742         sigvec strcasecmp strerror strftime stricmp strncasecmp \
2743         strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2744         usleep utime utimes)
2745 AC_FUNC_FSEEKO
2747 dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
2748 dnl appropriate, so that off_t is 64 bits when needed.
2749 AC_SYS_LARGEFILE
2751 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2752 AC_MSG_CHECKING(for st_blksize)
2753 AC_TRY_COMPILE(
2754 [#include <sys/types.h>
2755 #include <sys/stat.h>],
2756 [       struct stat st;
2757         int n;
2759         stat("/", &st);
2760         n = (int)st.st_blksize;],
2761         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2762         AC_MSG_RESULT(no))
2764 AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2765   [
2766     AC_RUN_IFELSE([[
2767 #include "confdefs.h"
2768 #if STDC_HEADERS
2769 # include <stdlib.h>
2770 # include <stddef.h>
2771 #endif
2772 #include <sys/types.h>
2773 #include <sys/stat.h>
2774 main() {struct stat st;  exit(stat("configure/", &st) != 0); }
2775     ]],[
2776       vim_cv_stat_ignores_slash=yes
2777     ],[
2778       vim_cv_stat_ignores_slash=no
2779     ],[
2780       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2781     ])
2782   ])
2784 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2785   AC_DEFINE(STAT_IGNORES_SLASH)
2787   
2788 dnl Link with iconv for charset translation, if not found without library.
2789 dnl check for iconv() requires including iconv.h
2790 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2791 dnl has been installed.
2792 AC_MSG_CHECKING(for iconv_open())
2793 save_LIBS="$LIBS"
2794 LIBS="$LIBS -liconv"
2795 AC_TRY_LINK([
2796 #ifdef HAVE_ICONV_H
2797 # include <iconv.h>
2798 #endif
2799     ], [iconv_open("fr", "to");],
2800     AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2801     LIBS="$save_LIBS"
2802     AC_TRY_LINK([
2803 #ifdef HAVE_ICONV_H
2804 # include <iconv.h>
2805 #endif
2806         ], [iconv_open("fr", "to");],
2807         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2808         AC_MSG_RESULT(no)))
2811 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2812 AC_TRY_LINK([
2813 #ifdef HAVE_LANGINFO_H
2814 # include <langinfo.h>
2815 #endif
2816 ], [char *cs = nl_langinfo(CODESET);],
2817         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2818         AC_MSG_RESULT(no))
2820 dnl Need various functions for floating point support.  Only enable
2821 dnl floating point when they are all present.
2822 AC_CHECK_LIB(m, strtod)
2823 AC_MSG_CHECKING([for strtod() and other floating point functions])
2824 AC_TRY_LINK([
2825 #ifdef HAVE_MATH_H
2826 # include <math.h>
2827 #endif
2828 #if STDC_HEADERS
2829 # include <stdlib.h>
2830 # include <stddef.h>
2831 #endif
2832 ], [char *s; double d;
2833     d = strtod("1.1", &s);
2834     d = fabs(1.11);
2835     d = ceil(1.11);
2836     d = floor(1.11);
2837     d = log10(1.11);
2838     d = pow(1.11, 2.22);
2839     d = sqrt(1.11);
2840     d = sin(1.11);
2841     d = cos(1.11);
2842     d = atan(1.11);
2843     ],
2844         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2845         AC_MSG_RESULT(no))
2847 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2848 dnl when -lacl works, also try to use -lattr (required for Debian).
2849 AC_MSG_CHECKING(--disable-acl argument)
2850 AC_ARG_ENABLE(acl,
2851         [  --disable-acl           Don't check for ACL support.],
2852         , [enable_acl="yes"])
2853 if test "$enable_acl" = "yes"; then
2854 AC_MSG_RESULT(no)
2855 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2856         AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2857                   AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2859 AC_MSG_CHECKING(for POSIX ACL support)
2860 AC_TRY_LINK([
2861 #include <sys/types.h>
2862 #ifdef HAVE_SYS_ACL_H
2863 # include <sys/acl.h>
2864 #endif
2865 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2866         acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2867         acl_free(acl);],
2868         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2869         AC_MSG_RESULT(no))
2871 AC_MSG_CHECKING(for Solaris ACL support)
2872 AC_TRY_LINK([
2873 #ifdef HAVE_SYS_ACL_H
2874 # include <sys/acl.h>
2875 #endif], [acl("foo", GETACLCNT, 0, NULL);
2876         ],
2877         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2878         AC_MSG_RESULT(no))
2880 AC_MSG_CHECKING(for AIX ACL support)
2881 AC_TRY_LINK([
2882 #if STDC_HEADERS
2883 # include <stdlib.h>
2884 # include <stddef.h>
2885 #endif
2886 #ifdef HAVE_SYS_ACL_H
2887 # include <sys/acl.h>
2888 #endif
2889 #ifdef HAVE_SYS_ACCESS_H
2890 # include <sys/access.h>
2891 #endif
2892 #define _ALL_SOURCE
2894 #include <sys/stat.h>
2896 int aclsize;
2897 struct acl *aclent;], [aclsize = sizeof(struct acl);
2898         aclent = (void *)malloc(aclsize);
2899         statacl("foo", STX_NORMAL, aclent, aclsize);
2900         ],
2901         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2902         AC_MSG_RESULT(no))
2903 else
2904   AC_MSG_RESULT(yes)
2907 AC_MSG_CHECKING(--disable-gpm argument)
2908 AC_ARG_ENABLE(gpm,
2909         [  --disable-gpm           Don't use gpm (Linux mouse daemon).], ,
2910         [enable_gpm="yes"])
2912 if test "$enable_gpm" = "yes"; then
2913   AC_MSG_RESULT(no)
2914   dnl Checking if gpm support can be compiled
2915   AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2916         [olibs="$LIBS" ; LIBS="-lgpm"]
2917         AC_TRY_LINK(
2918             [#include <gpm.h>
2919             #include <linux/keyboard.h>],
2920             [Gpm_GetLibVersion(NULL);],
2921             dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2922             dnl FEAT_MOUSE_GPM if mouse support is included
2923             [vi_cv_have_gpm=yes],
2924             [vi_cv_have_gpm=no])
2925         [LIBS="$olibs"]
2926     )
2927   if test $vi_cv_have_gpm = yes; then
2928     LIBS="$LIBS -lgpm"
2929     AC_DEFINE(HAVE_GPM)
2930   fi
2931 else
2932   AC_MSG_RESULT(yes)
2935 AC_MSG_CHECKING(--disable-sysmouse argument)
2936 AC_ARG_ENABLE(sysmouse,
2937         [  --disable-sysmouse    Don't use sysmouse (mouse in *BSD console).], ,
2938         [enable_sysmouse="yes"])
2940 if test "$enable_sysmouse" = "yes"; then
2941   AC_MSG_RESULT(no)
2942   dnl Checking if sysmouse support can be compiled
2943   dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2944   dnl defines FEAT_SYSMOUSE if mouse support is included
2945   AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2946         AC_TRY_LINK(
2947             [#include <sys/consio.h>
2948              #include <signal.h>
2949              #include <sys/fbio.h>],
2950             [struct mouse_info   mouse;
2951              mouse.operation = MOUSE_MODE;
2952              mouse.operation = MOUSE_SHOW;
2953              mouse.u.mode.mode = 0;
2954              mouse.u.mode.signal = SIGUSR2;],
2955             [vi_cv_have_sysmouse=yes],
2956             [vi_cv_have_sysmouse=no])
2957     )
2958   if test $vi_cv_have_sysmouse = yes; then
2959     AC_DEFINE(HAVE_SYSMOUSE)
2960   fi
2961 else
2962   AC_MSG_RESULT(yes)
2965 dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
2966 AC_MSG_CHECKING(for FD_CLOEXEC)
2967 AC_TRY_COMPILE(
2968 [#if HAVE_FCNTL_H
2969 # include <fcntl.h>
2970 #endif],
2971 [       int flag = FD_CLOEXEC;],
2972         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
2973         AC_MSG_RESULT(not usable))
2975 dnl rename needs to be checked separately to work on Nextstep with cc
2976 AC_MSG_CHECKING(for rename)
2977 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2978         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2979         AC_MSG_RESULT(no))
2981 dnl sysctl() may exist but not the arguments we use
2982 AC_MSG_CHECKING(for sysctl)
2983 AC_TRY_COMPILE(
2984 [#include <sys/types.h>
2985 #include <sys/sysctl.h>],
2986 [       int mib[2], r;
2987         size_t len;
2989         mib[0] = CTL_HW;
2990         mib[1] = HW_USERMEM;
2991         len = sizeof(r);
2992         (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2993         ],
2994         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2995         AC_MSG_RESULT(not usable))
2997 dnl sysinfo() may exist but not be Linux compatible
2998 AC_MSG_CHECKING(for sysinfo)
2999 AC_TRY_COMPILE(
3000 [#include <sys/types.h>
3001 #include <sys/sysinfo.h>],
3002 [       struct sysinfo sinfo;
3003         int t;
3005         (void)sysinfo(&sinfo);
3006         t = sinfo.totalram;
3007         ],
3008         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3009         AC_MSG_RESULT(not usable))
3011 dnl struct sysinfo may have the mem_unit field or not
3012 AC_MSG_CHECKING(for sysinfo.mem_unit)
3013 AC_TRY_COMPILE(
3014 [#include <sys/types.h>
3015 #include <sys/sysinfo.h>],
3016 [       struct sysinfo sinfo;
3017         sinfo.mem_unit = 1;
3018         ],
3019         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3020         AC_MSG_RESULT(no))
3022 dnl sysconf() may exist but not support what we want to use
3023 AC_MSG_CHECKING(for sysconf)
3024 AC_TRY_COMPILE(
3025 [#include <unistd.h>],
3026 [       (void)sysconf(_SC_PAGESIZE);
3027         (void)sysconf(_SC_PHYS_PAGES);
3028         ],
3029         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3030         AC_MSG_RESULT(not usable))
3032 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
3033 dnl be printed with "%d", and avoids a warning for cross-compiling.
3035 AC_MSG_CHECKING(size of int)
3036 AC_CACHE_VAL(ac_cv_sizeof_int,
3037         [AC_TRY_RUN([
3038 #include <stdio.h>
3039 #if STDC_HEADERS
3040 # include <stdlib.h>
3041 # include <stddef.h>
3042 #endif
3043 main()
3045   FILE *f=fopen("conftestval", "w");
3046   if (!f) exit(1);
3047   fprintf(f, "%d\n", (int)sizeof(int));
3048   exit(0);
3050             ac_cv_sizeof_int=`cat conftestval`,
3051             ac_cv_sizeof_int=0,
3052             AC_MSG_ERROR(failed to compile test program))])
3053 AC_MSG_RESULT($ac_cv_sizeof_int)
3054 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
3056 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3057 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3059 [bcopy_test_prog='
3060 #include "confdefs.h"
3061 #ifdef HAVE_STRING_H
3062 # include <string.h>
3063 #endif
3064 #if STDC_HEADERS
3065 # include <stdlib.h>
3066 # include <stddef.h>
3067 #endif
3068 main() {
3069   char buf[10];
3070   strcpy(buf, "abcdefghi");
3071   mch_memmove(buf, buf + 2, 3);
3072   if (strncmp(buf, "ababcf", 6))
3073     exit(1);
3074   strcpy(buf, "abcdefghi");
3075   mch_memmove(buf + 2, buf, 3);
3076   if (strncmp(buf, "cdedef", 6))
3077     exit(1);
3078   exit(0); /* libc version works properly.  */
3081 AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3082   [
3083     AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3084       [
3085         vim_cv_memmove_handles_overlap=yes
3086       ],[
3087         vim_cv_memmove_handles_overlap=no
3088       ],[
3089         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3090       ])
3091   ])
3093 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3094   AC_DEFINE(USEMEMMOVE)
3095 else
3096   AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3097     [
3098       AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3099       [
3100         vim_cv_bcopy_handles_overlap=yes
3101       ],[
3102         vim_cv_bcopy_handles_overlap=no
3103       ],[
3104         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3105       ])
3106     ])
3108   if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3109     AC_DEFINE(USEBCOPY)
3110   else
3111     AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3112       [
3113         AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3114           [
3115             vim_cv_memcpy_handles_overlap=yes
3116           ],[
3117             vim_cv_memcpy_handles_overlap=no
3118           ],[
3119             AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3120           ])
3121       ])
3123     if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3124       AC_DEFINE(USEMEMCPY)
3125     fi
3126   fi
3130 dnl Check for multibyte locale functions
3131 dnl Find out if _Xsetlocale() is supported by libX11.
3132 dnl Check if X_LOCALE should be defined.
3134 if test "$enable_multibyte" = "yes"; then
3135   cflags_save=$CFLAGS
3136   ldflags_save=$LDFLAGS
3137   if test "x$x_includes" != "xNONE" ; then
3138     CFLAGS="$CFLAGS -I$x_includes"
3139     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3140     AC_MSG_CHECKING(whether X_LOCALE needed)
3141     AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3142         AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3143                 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3144         AC_MSG_RESULT(no))
3145   fi
3146   CFLAGS=$cflags_save
3147   LDFLAGS=$ldflags_save
3150 dnl Link with xpg4, it is said to make Korean locale working
3151 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3153 dnl Check how we can run ctags.  Default to "ctags" when nothing works.
3154 dnl --version for Exuberant ctags (preferred)
3155 dnl       Add --fields=+S to get function signatures for omni completion.
3156 dnl -t for typedefs (many ctags have this)
3157 dnl -s for static functions (Elvis ctags only?)
3158 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3159 dnl -i+m to test for older Exuberant ctags
3160 AC_MSG_CHECKING(how to create tags)
3161 test -f tags && mv tags tags.save
3162 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3163   TAGPRG="ctags -I INIT+ --fields=+S"
3164 else
3165   TAGPRG="ctags"
3166   (eval etags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3167   (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3168   (eval ctags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3169   (eval ctags -t   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3170   (eval ctags -ts  /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3171   (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3172   (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3174 test -f tags.save && mv tags.save tags
3175 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3177 dnl Check how we can run man with a section number
3178 AC_MSG_CHECKING(how to run man with a section nr)
3179 MANDEF="man"
3180 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
3181 AC_MSG_RESULT($MANDEF)
3182 if test "$MANDEF" = "man -s"; then
3183   AC_DEFINE(USEMAN_S)
3186 dnl Check if gettext() is working and if it needs -lintl
3187 AC_MSG_CHECKING(--disable-nls argument)
3188 AC_ARG_ENABLE(nls,
3189         [  --disable-nls           Don't support NLS (gettext()).], ,
3190         [enable_nls="yes"])
3192 if test "$enable_nls" = "yes"; then
3193   AC_MSG_RESULT(no)
3195   INSTALL_LANGS=install-languages
3196   AC_SUBST(INSTALL_LANGS)
3197   INSTALL_TOOL_LANGS=install-tool-languages
3198   AC_SUBST(INSTALL_TOOL_LANGS)
3200   AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3201   AC_MSG_CHECKING([for NLS])
3202   if test -f po/Makefile; then
3203     have_gettext="no"
3204     if test -n "$MSGFMT"; then
3205       AC_TRY_LINK(
3206         [#include <libintl.h>],
3207         [gettext("Test");],
3208         AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3209           olibs=$LIBS
3210           LIBS="$LIBS -lintl"
3211           AC_TRY_LINK(
3212               [#include <libintl.h>],
3213               [gettext("Test");],
3214               AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3215               AC_MSG_RESULT([gettext() doesn't work]);
3216               LIBS=$olibs))
3217     else
3218       AC_MSG_RESULT([msgfmt not found - disabled]);
3219     fi
3220     if test $have_gettext = "yes"; then
3221       AC_DEFINE(HAVE_GETTEXT)
3222       MAKEMO=yes
3223       AC_SUBST(MAKEMO)
3224       dnl this was added in GNU gettext 0.10.36
3225       AC_CHECK_FUNCS(bind_textdomain_codeset)
3226       dnl _nl_msg_cat_cntr is required for GNU gettext
3227       AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3228       AC_TRY_LINK(
3229                 [#include <libintl.h>
3230                 extern int _nl_msg_cat_cntr;],
3231                 [++_nl_msg_cat_cntr;],
3232                 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3233                 AC_MSG_RESULT([no]))
3234     fi
3235   else
3236     AC_MSG_RESULT([no "po/Makefile" - disabled]);
3237   fi
3238 else
3239   AC_MSG_RESULT(yes)
3242 dnl Check for dynamic linking loader
3243 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3244 if test x${DLL} = xdlfcn.h; then
3245   AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3246   AC_MSG_CHECKING([for dlopen()])
3247   AC_TRY_LINK(,[
3248                 extern void* dlopen();
3249                 dlopen();
3250       ],
3251       AC_MSG_RESULT(yes);
3252               AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3253       AC_MSG_RESULT(no);
3254               AC_MSG_CHECKING([for dlopen() in -ldl])
3255               olibs=$LIBS
3256               LIBS="$LIBS -ldl"
3257               AC_TRY_LINK(,[
3258                                 extern void* dlopen();
3259                                 dlopen();
3260                  ],
3261                  AC_MSG_RESULT(yes);
3262                           AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3263                  AC_MSG_RESULT(no);
3264                           LIBS=$olibs))
3265   dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3266   dnl ick :-)
3267   AC_MSG_CHECKING([for dlsym()])
3268   AC_TRY_LINK(,[
3269                 extern void* dlsym();
3270                 dlsym();
3271       ],
3272       AC_MSG_RESULT(yes);
3273               AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3274       AC_MSG_RESULT(no);
3275               AC_MSG_CHECKING([for dlsym() in -ldl])
3276               olibs=$LIBS
3277               LIBS="$LIBS -ldl"
3278               AC_TRY_LINK(,[
3279                                 extern void* dlsym();
3280                                 dlsym();
3281                  ],
3282                  AC_MSG_RESULT(yes);
3283                           AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3284                  AC_MSG_RESULT(no);
3285                           LIBS=$olibs))
3286 elif test x${DLL} = xdl.h; then
3287   AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3288   AC_MSG_CHECKING([for shl_load()])
3289   AC_TRY_LINK(,[
3290                 extern void* shl_load();
3291                 shl_load();
3292      ],
3293      AC_MSG_RESULT(yes);
3294           AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3295      AC_MSG_RESULT(no);
3296           AC_MSG_CHECKING([for shl_load() in -ldld])
3297           olibs=$LIBS
3298           LIBS="$LIBS -ldld"
3299           AC_TRY_LINK(,[
3300                         extern void* shl_load();
3301                         shl_load();
3302              ],
3303              AC_MSG_RESULT(yes);
3304                   AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3305              AC_MSG_RESULT(no);
3306                   LIBS=$olibs))
3308 AC_CHECK_HEADERS(setjmp.h)
3310 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3311   dnl -ldl must come after DynaLoader.a
3312   if echo $LIBS | grep -e '-ldl' >/dev/null; then
3313     LIBS=`echo $LIBS | sed s/-ldl//`
3314     PERL_LIBS="$PERL_LIBS -ldl"
3315   fi
3318 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3319         && test "x$GUITYPE" != "xCARBONGUI"; then
3320   AC_MSG_CHECKING(whether we need -framework Carbon)
3321   dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3322   if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
3323         || test "x$features" = "xhuge"; then
3324     LIBS="$LIBS -framework Carbon"
3325     AC_MSG_RESULT(yes)
3326   else
3327     AC_MSG_RESULT(no)
3328   fi
3330 if test "x$MACARCH" = "xboth"; then
3331   LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3334 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
3335 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3336 dnl But only when making dependencies, cproto and lint don't take "-isystem".
3337 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3338 dnl the number before the version number.
3339 DEPEND_CFLAGS_FILTER=
3340 if test "$GCC" = yes; then
3341   AC_MSG_CHECKING(for GCC 3 or later)
3342   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
3343   if test "$gccmajor" -gt "2"; then
3344     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3345     AC_MSG_RESULT(yes)
3346   else
3347     AC_MSG_RESULT(no)
3348   fi
3349   dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3350   dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
3351   dnl Also remove duplicate _FORTIFY_SOURCE arguments.
3352   AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3353   if test "$gccmajor" -gt "3"; then
3354     CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
3355     AC_MSG_RESULT(yes)
3356   else
3357     AC_MSG_RESULT(no)
3358   fi
3360 AC_SUBST(DEPEND_CFLAGS_FILTER)
3362 dnl write output files
3363 AC_OUTPUT(auto/config.mk:config.mk.in)
3365 dnl vim: set sw=2 tw=78 fo+=l: