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