Merge branch 'vim' into feat/lua
[vim_extended.git] / src / configure.in
blob1b77e93e66b8644a16617463004fdac75f523840
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 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_SUBST(vi_cv_path_ruby)
1028   AC_PATH_PROG(vi_cv_path_ruby, ruby)
1029   if test "X$vi_cv_path_ruby" != "X"; then
1030     AC_MSG_CHECKING(Ruby version)
1031     if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
1032       AC_MSG_RESULT(OK)
1033       AC_MSG_CHECKING(Ruby header files)
1034       rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
1035       if test "X$rubyhdrdir" != "X"; then
1036         AC_MSG_RESULT($rubyhdrdir)
1037         RUBY_CFLAGS="-I$rubyhdrdir"
1038         rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1039         if test "X$rubylibs" != "X"; then
1040           RUBY_LIBS="$rubylibs"
1041         fi
1042         librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
1043         if test -f "$rubyhdrdir/$librubyarg"; then
1044           librubyarg="$rubyhdrdir/$librubyarg"
1045         else
1046           rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1047           if test -f "$rubylibdir/$librubyarg"; then
1048             librubyarg="$rubylibdir/$librubyarg"
1049           elif test "$librubyarg" = "libruby.a"; then
1050             dnl required on Mac OS 10.3 where libruby.a doesn't exist
1051             librubyarg="-lruby"
1052           else
1053             librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
1054           fi
1055         fi
1057         if test "X$librubyarg" != "X"; then
1058           RUBY_LIBS="$librubyarg $RUBY_LIBS"
1059         fi
1060         rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1061         if test "X$rubyldflags" != "X"; then
1062           dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1063           dnl be included if requested by passing --with-mac-arch to
1064           dnl configure, so strip these flags first (if present)
1065           rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
1066           if test "X$rubyldflags" != "X"; then
1067             LDFLAGS="$rubyldflags $LDFLAGS"
1068           fi
1069         fi
1070         RUBY_SRC="if_ruby.c"
1071         RUBY_OBJ="objects/if_ruby.o"
1072         RUBY_PRO="if_ruby.pro"
1073         AC_DEFINE(FEAT_RUBY)
1074       else
1075         AC_MSG_RESULT(not found, disabling Ruby)
1076       fi
1077     else
1078       AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1079     fi
1080   fi
1082 AC_SUBST(RUBY_SRC)
1083 AC_SUBST(RUBY_OBJ)
1084 AC_SUBST(RUBY_PRO)
1085 AC_SUBST(RUBY_CFLAGS)
1086 AC_SUBST(RUBY_LIBS)
1088 AC_MSG_CHECKING(--enable-cscope argument)
1089 AC_ARG_ENABLE(cscope,
1090         [  --enable-cscope         Include cscope interface.], ,
1091         [enable_cscope="no"])
1092 AC_MSG_RESULT($enable_cscope)
1093 if test "$enable_cscope" = "yes"; then
1094   AC_DEFINE(FEAT_CSCOPE)
1097 AC_MSG_CHECKING(--enable-workshop argument)
1098 AC_ARG_ENABLE(workshop,
1099         [  --enable-workshop       Include Sun Visual Workshop support.], ,
1100         [enable_workshop="no"])
1101 AC_MSG_RESULT($enable_workshop)
1102 if test "$enable_workshop" = "yes"; then
1103   AC_DEFINE(FEAT_SUN_WORKSHOP)
1104   WORKSHOP_SRC="workshop.c integration.c"
1105   AC_SUBST(WORKSHOP_SRC)
1106   WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1107   AC_SUBST(WORKSHOP_OBJ)
1108   if test "${enable_gui-xxx}" = xxx; then
1109     enable_gui=motif
1110   fi
1113 AC_MSG_CHECKING(--disable-netbeans argument)
1114 AC_ARG_ENABLE(netbeans,
1115         [  --disable-netbeans      Disable NetBeans integration support.],
1116         , [enable_netbeans="yes"])
1117 if test "$enable_netbeans" = "yes"; then
1118   AC_MSG_RESULT(no)
1119   dnl On Solaris we need the socket and nsl library.
1120   AC_CHECK_LIB(socket, socket)
1121   AC_CHECK_LIB(nsl, gethostbyname)
1122   AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1123   AC_TRY_LINK([
1124 #include <stdio.h>
1125 #include <stdlib.h>
1126 #include <stdarg.h>
1127 #include <fcntl.h>
1128 #include <netdb.h>
1129 #include <netinet/in.h>
1130 #include <errno.h>
1131 #include <sys/types.h>
1132 #include <sys/socket.h>
1133         /* Check bitfields */
1134         struct nbbuf {
1135         unsigned int  initDone:1;
1136         ushort signmaplen;
1137         };
1138             ], [
1139                 /* Check creating a socket. */
1140                 struct sockaddr_in server;
1141                 (void)socket(AF_INET, SOCK_STREAM, 0);
1142                 (void)htons(100);
1143                 (void)gethostbyname("microsoft.com");
1144                 if (errno == ECONNREFUSED)
1145                   (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1146             ],
1147         AC_MSG_RESULT(yes),
1148         AC_MSG_RESULT(no); enable_netbeans="no")
1149 else
1150   AC_MSG_RESULT(yes)
1152 if test "$enable_netbeans" = "yes"; then
1153   AC_DEFINE(FEAT_NETBEANS_INTG)
1154   NETBEANS_SRC="netbeans.c"
1155   AC_SUBST(NETBEANS_SRC)
1156   NETBEANS_OBJ="objects/netbeans.o"
1157   AC_SUBST(NETBEANS_OBJ)
1160 AC_MSG_CHECKING(--enable-sniff argument)
1161 AC_ARG_ENABLE(sniff,
1162         [  --enable-sniff          Include Sniff interface.], ,
1163         [enable_sniff="no"])
1164 AC_MSG_RESULT($enable_sniff)
1165 if test "$enable_sniff" = "yes"; then
1166   AC_DEFINE(FEAT_SNIFF)
1167   SNIFF_SRC="if_sniff.c"
1168   AC_SUBST(SNIFF_SRC)
1169   SNIFF_OBJ="objects/if_sniff.o"
1170   AC_SUBST(SNIFF_OBJ)
1173 AC_MSG_CHECKING(--enable-multibyte argument)
1174 AC_ARG_ENABLE(multibyte,
1175         [  --enable-multibyte      Include multibyte editing support.], ,
1176         [enable_multibyte="no"])
1177 AC_MSG_RESULT($enable_multibyte)
1178 if test "$enable_multibyte" = "yes"; then
1179   AC_DEFINE(FEAT_MBYTE)
1182 AC_MSG_CHECKING(--enable-hangulinput argument)
1183 AC_ARG_ENABLE(hangulinput,
1184         [  --enable-hangulinput    Include Hangul input support.], ,
1185         [enable_hangulinput="no"])
1186 AC_MSG_RESULT($enable_hangulinput)
1188 AC_MSG_CHECKING(--enable-xim argument)
1189 AC_ARG_ENABLE(xim,
1190         [  --enable-xim            Include XIM input support.],
1191         AC_MSG_RESULT($enable_xim),
1192         [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1193 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1195 AC_MSG_CHECKING(--enable-fontset argument)
1196 AC_ARG_ENABLE(fontset,
1197         [  --enable-fontset        Include X fontset output support.], ,
1198         [enable_fontset="no"])
1199 AC_MSG_RESULT($enable_fontset)
1200 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1202 test -z "$with_x" && with_x=yes
1203 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1204 if test "$with_x" = no; then
1205   AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1206 else
1207   dnl Do this check early, so that its failure can override user requests.
1209   AC_PATH_PROG(xmkmfpath, xmkmf)
1211   AC_PATH_XTRA
1213   dnl On OS390Unix the X libraries are DLLs. To use them the code must
1214   dnl be compiled with a special option.
1215   dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1216   if test "$OS390Unix" = "yes"; then
1217     CFLAGS="$CFLAGS -W c,dll"
1218     LDFLAGS="$LDFLAGS -W l,dll"
1219     X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1220   fi
1222   dnl On my HPUX system the X include dir is found, but the lib dir not.
1223   dnl This is a desparate try to fix this.
1225   if test -d "$x_includes" && test ! -d "$x_libraries"; then
1226     x_libraries=`echo "$x_includes" | sed s/include/lib/`
1227     AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1228     X_LIBS="$X_LIBS -L$x_libraries"
1229     if test "`(uname) 2>/dev/null`" = SunOS &&
1230                                          uname -r | grep '^5' >/dev/null; then
1231       X_LIBS="$X_LIBS -R $x_libraries"
1232     fi
1233   fi
1235   if test -d "$x_libraries" && test ! -d "$x_includes"; then
1236     x_includes=`echo "$x_libraries" | sed s/lib/include/`
1237     AC_MSG_RESULT(Corrected X includes to $x_includes)
1238     X_CFLAGS="$X_CFLAGS -I$x_includes"
1239   fi
1241   dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1242   X_CFLAGS="`echo $X_CFLAGS\  | sed 's%-I/usr/include %%'`"
1243   dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1244   X_LIBS="`echo $X_LIBS\  | sed 's%-L/usr/lib %%'`"
1245   dnl Same for "-R/usr/lib ".
1246   X_LIBS="`echo $X_LIBS\  | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1249   dnl Check if the X11 header files are correctly installed. On some systems
1250   dnl Xlib.h includes files that don't exist.  On some systems X11/Intrinsic.h
1251   dnl is missing.
1252   AC_MSG_CHECKING(if X11 header files can be found)
1253   cflags_save=$CFLAGS
1254   CFLAGS="$CFLAGS $X_CFLAGS"
1255   AC_TRY_COMPILE([#include <X11/Xlib.h>
1256 #include <X11/Intrinsic.h>], ,
1257         AC_MSG_RESULT(yes),
1258         AC_MSG_RESULT(no); no_x=yes)
1259   CFLAGS=$cflags_save
1261   if test "${no_x-no}" = yes; then
1262     with_x=no
1263   else
1264     AC_DEFINE(HAVE_X11)
1265     X_LIB="-lXt -lX11";
1266     AC_SUBST(X_LIB)
1268     ac_save_LDFLAGS="$LDFLAGS"
1269     LDFLAGS="-L$x_libraries $LDFLAGS"
1271     dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1272     dnl For HP-UX 10.20 it must be before -lSM -lICE
1273     AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1274                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1276     dnl Some systems need -lnsl -lsocket when testing for ICE.
1277     dnl The check above doesn't do this, try here (again).  Also needed to get
1278     dnl them after Xdmcp.  link.sh will remove them when not needed.
1279     dnl Check for other function than above to avoid the cached value
1280     AC_CHECK_LIB(ICE, IceOpenConnection,
1281                   [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1283     dnl Check for -lXpm (needed for some versions of Motif)
1284     LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1285     AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1286                 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1288     dnl Check that the X11 header files don't use implicit declarations
1289     AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1290     cflags_save=$CFLAGS
1291     CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1292     AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1293         AC_MSG_RESULT(no),
1294         CFLAGS="$CFLAGS -Wno-implicit-int"
1295         AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1296             AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1297             AC_MSG_RESULT(test failed)
1298         )
1299     )
1300     CFLAGS=$cflags_save
1302     LDFLAGS="$ac_save_LDFLAGS"
1304     AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1305     AC_CACHE_VAL(ac_cv_small_wchar_t,
1306         [AC_TRY_RUN([
1307 #include <X11/Xlib.h>
1308 #if STDC_HEADERS
1309 # include <stdlib.h>
1310 # include <stddef.h>
1311 #endif
1312                 main()
1313                 {
1314                   if (sizeof(wchar_t) <= 2)
1315                     exit(1);
1316                   exit(0);
1317                 }],
1318                 ac_cv_small_wchar_t="no",
1319                 ac_cv_small_wchar_t="yes",
1320                 AC_MSG_ERROR(failed to compile test program))])
1321     AC_MSG_RESULT($ac_cv_small_wchar_t)
1322     if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1323       AC_DEFINE(SMALL_WCHAR_T)
1324     fi
1326   fi
1329 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1331 AC_MSG_CHECKING(--enable-gui argument)
1332 AC_ARG_ENABLE(gui,
1333  [  --enable-gui[=OPTS]     X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
1335 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1336 dnl Do not use character classes for portability with old tools.
1337 enable_gui_canon=`echo "_$enable_gui" | \
1338         sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1340 dnl Skip everything by default.
1341 SKIP_GTK=YES
1342 SKIP_GTK2=YES
1343 SKIP_GNOME=YES
1344 SKIP_MOTIF=YES
1345 SKIP_ATHENA=YES
1346 SKIP_NEXTAW=YES
1347 SKIP_PHOTON=YES
1348 SKIP_CARBON=YES
1349 GUITYPE=NONE
1351 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1352   SKIP_PHOTON=
1353   case "$enable_gui_canon" in
1354     no)         AC_MSG_RESULT(no GUI support)
1355                 SKIP_PHOTON=YES ;;
1356     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1357     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1358     photon)     AC_MSG_RESULT(Photon GUI support) ;;
1359     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1360                 SKIP_PHOTON=YES ;;
1361   esac
1363 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1364   SKIP_CARBON=
1365   case "$enable_gui_canon" in
1366     no)         AC_MSG_RESULT(no GUI support)
1367                 SKIP_CARBON=YES ;;
1368     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1369     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1370     carbon)     AC_MSG_RESULT(Carbon GUI support) ;;
1371     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1372                 SKIP_CARBON=YES ;;
1373   esac
1375 else
1377   case "$enable_gui_canon" in
1378     no|none)    AC_MSG_RESULT(no GUI support) ;;
1379     yes|""|auto)        AC_MSG_RESULT(yes/auto - automatic GUI support)
1380                 SKIP_GTK=
1381                 SKIP_GTK2=
1382                 SKIP_GNOME=
1383                 SKIP_MOTIF=
1384                 SKIP_ATHENA=
1385                 SKIP_NEXTAW=
1386                 SKIP_CARBON=;;
1387     gtk)        AC_MSG_RESULT(GTK+ 1.x GUI support)
1388                 SKIP_GTK=;;
1389     gtk2)       AC_MSG_RESULT(GTK+ 2.x GUI support)
1390                 SKIP_GTK=
1391                 SKIP_GTK2=;;
1392     gnome)      AC_MSG_RESULT(GNOME 1.x GUI support)
1393                 SKIP_GNOME=
1394                 SKIP_GTK=;;
1395     gnome2)     AC_MSG_RESULT(GNOME 2.x GUI support)
1396                 SKIP_GNOME=
1397                 SKIP_GTK=
1398                 SKIP_GTK2=;;
1399     motif)      AC_MSG_RESULT(Motif GUI support)
1400                 SKIP_MOTIF=;;
1401     athena)     AC_MSG_RESULT(Athena GUI support)
1402                 SKIP_ATHENA=;;
1403     nextaw)     AC_MSG_RESULT(neXtaw GUI support)
1404                 SKIP_NEXTAW=;;
1405     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1406   esac
1410 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1411   AC_MSG_CHECKING(whether or not to look for GTK)
1412   AC_ARG_ENABLE(gtk-check,
1413         [  --enable-gtk-check      If auto-select GUI, check for GTK [default=yes]],
1414         , enable_gtk_check="yes")
1415   AC_MSG_RESULT($enable_gtk_check)
1416   if test "x$enable_gtk_check" = "xno"; then
1417     SKIP_GTK=YES
1418     SKIP_GNOME=YES
1419   fi
1422 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1423                                 -a "$enable_gui_canon" != "gnome2"; then
1424   AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1425   AC_ARG_ENABLE(gtk2-check,
1426         [  --enable-gtk2-check     If GTK GUI, check for GTK+ 2 [default=yes]],
1427         , enable_gtk2_check="yes")
1428   AC_MSG_RESULT($enable_gtk2_check)
1429   if test "x$enable_gtk2_check" = "xno"; then
1430     SKIP_GTK2=YES
1431   fi
1434 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1435                                  -a "$enable_gui_canon" != "gnome2"; then
1436   AC_MSG_CHECKING(whether or not to look for GNOME)
1437   AC_ARG_ENABLE(gnome-check,
1438         [  --enable-gnome-check    If GTK GUI, check for GNOME [default=no]],
1439         , enable_gnome_check="no")
1440   AC_MSG_RESULT($enable_gnome_check)
1441   if test "x$enable_gnome_check" = "xno"; then
1442     SKIP_GNOME=YES
1443   fi
1446 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1447   AC_MSG_CHECKING(whether or not to look for Motif)
1448   AC_ARG_ENABLE(motif-check,
1449         [  --enable-motif-check    If auto-select GUI, check for Motif [default=yes]],
1450         , enable_motif_check="yes")
1451   AC_MSG_RESULT($enable_motif_check)
1452   if test "x$enable_motif_check" = "xno"; then
1453     SKIP_MOTIF=YES
1454   fi
1457 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1458   AC_MSG_CHECKING(whether or not to look for Athena)
1459   AC_ARG_ENABLE(athena-check,
1460         [  --enable-athena-check   If auto-select GUI, check for Athena [default=yes]],
1461         , enable_athena_check="yes")
1462   AC_MSG_RESULT($enable_athena_check)
1463   if test "x$enable_athena_check" = "xno"; then
1464     SKIP_ATHENA=YES
1465   fi
1468 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1469   AC_MSG_CHECKING(whether or not to look for neXtaw)
1470   AC_ARG_ENABLE(nextaw-check,
1471         [  --enable-nextaw-check   If auto-select GUI, check for neXtaw [default=yes]],
1472         , enable_nextaw_check="yes")
1473   AC_MSG_RESULT($enable_nextaw_check);
1474   if test "x$enable_nextaw_check" = "xno"; then
1475     SKIP_NEXTAW=YES
1476   fi
1479 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1480   AC_MSG_CHECKING(whether or not to look for Carbon)
1481   AC_ARG_ENABLE(carbon-check,
1482         [  --enable-carbon-check   If auto-select GUI, check for Carbon [default=yes]],
1483         , enable_carbon_check="yes")
1484   AC_MSG_RESULT($enable_carbon_check);
1485   if test "x$enable_carbon_check" = "xno"; then
1486     SKIP_CARBON=YES
1487   fi
1491 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1492   AC_MSG_CHECKING(for Carbon GUI)
1493   dnl already did the check, just give the message
1494   AC_MSG_RESULT(yes);
1495   GUITYPE=CARBONGUI
1496   if test "$VIMNAME" = "vim"; then
1497     VIMNAME=Vim
1498   fi
1500   dnl Default install directory is not /usr/local
1501   if test x$prefix = xNONE; then
1502     prefix=/Applications
1503   fi
1505   dnl Sorry for the hard coded default
1506   datadir='${prefix}/Vim.app/Contents/Resources'
1508   dnl skip everything else
1509   SKIP_GTK=YES;
1510   SKIP_GTK2=YES;
1511   SKIP_GNOME=YES;
1512   SKIP_MOTIF=YES;
1513   SKIP_ATHENA=YES;
1514   SKIP_NEXTAW=YES;
1515   SKIP_PHOTON=YES;
1516   SKIP_CARBON=YES
1520 dnl Get the cflags and libraries from the gtk-config script
1523 dnl define an autoconf function to check for a specified version of GTK, and
1524 dnl try to compile/link a GTK program.  this gets used once for GTK 1.1.16.
1526 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1527 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1529 AC_DEFUN(AM_PATH_GTK,
1531   if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1532   {
1533     min_gtk_version=ifelse([$1], ,0.99.7,$1)
1534     AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1535     no_gtk=""
1536     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1537           && $PKG_CONFIG --exists gtk+-2.0; then
1538     {
1539       dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1540       dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1541       dnl something like that.
1542       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1543       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1544       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1545       gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1546              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1547       gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1548              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1549       gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1550              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1551     }
1552     elif test "X$GTK_CONFIG" != "Xno"; then
1553     {
1554       GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1555       GTK_LIBDIR=
1556       GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1557       gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1558              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1559       gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1560              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1561       gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1562              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1563     }
1564     else
1565       no_gtk=yes
1566     fi
1568     if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1569     {
1570       ac_save_CFLAGS="$CFLAGS"
1571       ac_save_LIBS="$LIBS"
1572       CFLAGS="$CFLAGS $GTK_CFLAGS"
1573       LIBS="$LIBS $GTK_LIBS"
1575       dnl
1576       dnl Now check if the installed GTK is sufficiently new. (Also sanity
1577       dnl checks the results of gtk-config to some extent
1578       dnl
1579       rm -f conf.gtktest
1580       AC_TRY_RUN([
1581 #include <gtk/gtk.h>
1582 #include <stdio.h>
1583 #if STDC_HEADERS
1584 # include <stdlib.h>
1585 # include <stddef.h>
1586 #endif
1589 main ()
1591 int major, minor, micro;
1592 char *tmp_version;
1594 system ("touch conf.gtktest");
1596 /* HP/UX 9 (%@#!) writes to sscanf strings */
1597 tmp_version = g_strdup("$min_gtk_version");
1598 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1599    printf("%s, bad version string\n", "$min_gtk_version");
1600    exit(1);
1603 if ((gtk_major_version > major) ||
1604     ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1605     ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1606                                      (gtk_micro_version >= micro)))
1608     return 0;
1610 return 1;
1612 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1613       CFLAGS="$ac_save_CFLAGS"
1614       LIBS="$ac_save_LIBS"
1615     }
1616     fi
1617     if test "x$no_gtk" = x ; then
1618       if test "x$enable_gtktest" = "xyes"; then
1619         AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1620       else
1621         AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1622       fi
1623       ifelse([$2], , :, [$2])
1624     else
1625     {
1626       AC_MSG_RESULT(no)
1627       GTK_CFLAGS=""
1628       GTK_LIBS=""
1629       ifelse([$3], , :, [$3])
1630     }
1631     fi
1632   }
1633   else
1634     GTK_CFLAGS=""
1635     GTK_LIBS=""
1636     ifelse([$3], , :, [$3])
1637   fi
1638   AC_SUBST(GTK_CFLAGS)
1639   AC_SUBST(GTK_LIBS)
1640   rm -f conf.gtktest
1643 dnl ---------------------------------------------------------------------------
1644 dnl gnome
1645 dnl ---------------------------------------------------------------------------
1646 AC_DEFUN([GNOME_INIT_HOOK],
1648   AC_SUBST(GNOME_LIBS)
1649   AC_SUBST(GNOME_LIBDIR)
1650   AC_SUBST(GNOME_INCLUDEDIR)
1652   AC_ARG_WITH(gnome-includes,
1653     [  --with-gnome-includes=DIR Specify location of GNOME headers],
1654     [CFLAGS="$CFLAGS -I$withval"]
1655   )
1657   AC_ARG_WITH(gnome-libs,
1658     [  --with-gnome-libs=DIR   Specify location of GNOME libs],
1659     [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1660   )
1662   AC_ARG_WITH(gnome,
1663     [  --with-gnome            Specify prefix for GNOME files],
1664     if test x$withval = xyes; then
1665       want_gnome=yes
1666       ifelse([$1], [], :, [$1])
1667     else
1668       if test "x$withval" = xno; then
1669         want_gnome=no
1670       else
1671         want_gnome=yes
1672         LDFLAGS="$LDFLAGS -L$withval/lib"
1673         CFLAGS="$CFLAGS -I$withval/include"
1674         gnome_prefix=$withval/lib
1675       fi
1676     fi,
1677     want_gnome=yes)
1679   if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1680   {
1681     AC_MSG_CHECKING(for libgnomeui-2.0)
1682     if $PKG_CONFIG --exists libgnomeui-2.0; then
1683       AC_MSG_RESULT(yes)
1684       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1685       GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1686       GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1688       dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1689       dnl This might not be the right way but it works for me...
1690       AC_MSG_CHECKING(for FreeBSD)
1691       if test "`(uname) 2>/dev/null`" = FreeBSD; then
1692         AC_MSG_RESULT(yes, adding -pthread)
1693         GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1694         GNOME_LIBS="$GNOME_LIBS -pthread"
1695       else
1696         AC_MSG_RESULT(no)
1697       fi
1698       $1
1699     else
1700       AC_MSG_RESULT(not found)
1701       if test "x$2" = xfail; then
1702         AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1703       fi
1704     fi
1705   }
1706   elif test "x$want_gnome" = xyes; then
1707   {
1708     AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1709     if test "$GNOME_CONFIG" = "no"; then
1710       no_gnome_config="yes"
1711     else
1712       AC_MSG_CHECKING(if $GNOME_CONFIG works)
1713       if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1714         AC_MSG_RESULT(yes)
1715         GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1716         GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1717         GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1718         $1
1719       else
1720         AC_MSG_RESULT(no)
1721         no_gnome_config="yes"
1722       fi
1723     fi
1725     if test x$exec_prefix = xNONE; then
1726       if test x$prefix = xNONE; then
1727         gnome_prefix=$ac_default_prefix/lib
1728       else
1729         gnome_prefix=$prefix/lib
1730       fi
1731     else
1732       gnome_prefix=`eval echo \`echo $libdir\``
1733     fi
1735     if test "$no_gnome_config" = "yes"; then
1736       AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1737       if test -f $gnome_prefix/gnomeConf.sh; then
1738         AC_MSG_RESULT(found)
1739         echo "loading gnome configuration from" \
1740           "$gnome_prefix/gnomeConf.sh"
1741         . $gnome_prefix/gnomeConf.sh
1742         $1
1743       else
1744         AC_MSG_RESULT(not found)
1745         if test x$2 = xfail; then
1746           AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1747         fi
1748       fi
1749     fi
1750   }
1751   fi
1754 AC_DEFUN([GNOME_INIT],[
1755         GNOME_INIT_HOOK([],fail)
1759 dnl ---------------------------------------------------------------------------
1760 dnl Check for GTK.  First checks for gtk-config, cause it needs that to get the
1761 dnl correct compiler flags.  Then checks for GTK 1.1.16.  If that fails, then
1762 dnl it checks for 1.0.6.  If both fail, then continue on for Motif as before...
1763 dnl ---------------------------------------------------------------------------
1764 if test -z "$SKIP_GTK"; then
1766   AC_MSG_CHECKING(--with-gtk-prefix argument)
1767   AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
1768         gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1769         gtk_config_prefix=""; AC_MSG_RESULT(no))
1771   AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1772   AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1773         gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1774         gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1776   AC_MSG_CHECKING(--disable-gtktest argument)
1777   AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
1778         , enable_gtktest=yes)
1779   if test "x$enable_gtktest" = "xyes" ; then
1780     AC_MSG_RESULT(gtk test enabled)
1781   else
1782     AC_MSG_RESULT(gtk test disabled)
1783   fi
1785   if test "x$gtk_config_prefix" != "x" ; then
1786     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1787     GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1788   fi
1789   if test "x$gtk_config_exec_prefix" != "x" ; then
1790     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1791     GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1792   fi
1793   if test "X$GTK_CONFIG" = "X"; then
1794     AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1795     if test "X$GTK_CONFIG" = "Xno"; then
1796       dnl Some distributions call it gtk12-config, annoying!
1797       AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1798       GTK_CONFIG="$GTK12_CONFIG"
1799     fi
1800   else
1801     AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1802   fi
1803   if test "X$PKG_CONFIG" = "X"; then
1804     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1805   fi
1807   if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1808     dnl First try finding version 2.2.0 or later.  The 2.0.x series has
1809     dnl problems (bold fonts, --remote doesn't work).
1810     if test "X$SKIP_GTK2" != "XYES"; then
1811       AM_PATH_GTK(2.2.0,
1812                   [GUI_LIB_LOC="$GTK_LIBDIR"
1813                    GTK_LIBNAME="$GTK_LIBS"
1814                   GUI_INC_LOC="$GTK_CFLAGS"], )
1815       if test "x$GTK_CFLAGS" != "x"; then
1816         SKIP_ATHENA=YES
1817         SKIP_NEXTAW=YES
1818         SKIP_MOTIF=YES
1819         GUITYPE=GTK
1820         AC_SUBST(GTK_LIBNAME)
1821       fi
1822     fi
1824     dnl If there is no 2.2.0 or later try the 1.x.x series.  We require at
1825     dnl least GTK 1.1.16.  1.0.6 doesn't work.  1.1.1 to 1.1.15
1826     dnl were test versions.
1827     if test "x$GUITYPE" != "xGTK"; then
1828       SKIP_GTK2=YES
1829       AM_PATH_GTK(1.1.16,
1830                   [GTK_LIBNAME="$GTK_LIBS"
1831                   GUI_INC_LOC="$GTK_CFLAGS"], )
1832       if test "x$GTK_CFLAGS" != "x"; then
1833         SKIP_ATHENA=YES
1834         SKIP_NEXTAW=YES
1835         SKIP_MOTIF=YES
1836         GUITYPE=GTK
1837         AC_SUBST(GTK_LIBNAME)
1838       fi
1839     fi
1840   fi
1841   dnl Give a warning if GTK is older than 1.2.3
1842   if test "x$GUITYPE" = "xGTK"; then
1843     if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1844          -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1845       AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1846     else
1847     {
1848       if test "0$gtk_major_version" -ge 2; then
1849         AC_DEFINE(HAVE_GTK2)
1850         if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1851                 || test "0$gtk_minor_version" -ge 2 \
1852                 || test "0$gtk_major_version" -gt 2; then
1853           AC_DEFINE(HAVE_GTK_MULTIHEAD)
1854         fi
1855       fi
1856       dnl
1857       dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1858       dnl
1859       if test -z "$SKIP_GNOME"; then
1860       {
1861         GNOME_INIT_HOOK([have_gnome=yes])
1862         if test x$have_gnome = xyes ; then
1863           AC_DEFINE(FEAT_GUI_GNOME)
1864           GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1865           GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1866         fi
1867       }
1868       fi
1869     }
1870     fi
1871   fi
1874 dnl Check for Motif include files location.
1875 dnl The LAST one found is used, this makes the highest version to be used,
1876 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1878 if test -z "$SKIP_MOTIF"; then
1879   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"
1880   dnl Remove "-I" from before $GUI_INC_LOC if it's there
1881   GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1883   AC_MSG_CHECKING(for location of Motif GUI includes)
1884   gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1885   GUI_INC_LOC=
1886   for try in $gui_includes; do
1887     if test -f "$try/Xm/Xm.h"; then
1888       GUI_INC_LOC=$try
1889     fi
1890   done
1891   if test -n "$GUI_INC_LOC"; then
1892     if test "$GUI_INC_LOC" = /usr/include; then
1893       GUI_INC_LOC=
1894       AC_MSG_RESULT(in default path)
1895     else
1896       AC_MSG_RESULT($GUI_INC_LOC)
1897     fi
1898   else
1899     AC_MSG_RESULT(<not found>)
1900     SKIP_MOTIF=YES
1901   fi
1904 dnl Check for Motif library files location.  In the same order as the include
1905 dnl files, to avoid a mixup if several versions are present
1907 if test -z "$SKIP_MOTIF"; then
1908   AC_MSG_CHECKING(--with-motif-lib argument)
1909   AC_ARG_WITH(motif-lib,
1910   [  --with-motif-lib=STRING   Library for Motif ],
1911   [ MOTIF_LIBNAME="${withval}" ] )
1913   if test -n "$MOTIF_LIBNAME"; then
1914     AC_MSG_RESULT($MOTIF_LIBNAME)
1915     GUI_LIB_LOC=
1916   else
1917     AC_MSG_RESULT(no)
1919     dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1920     GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1922     AC_MSG_CHECKING(for location of Motif GUI libs)
1923     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"
1924     GUI_LIB_LOC=
1925     for try in $gui_libs; do
1926       for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1927         if test -f "$libtry"; then
1928           GUI_LIB_LOC=$try
1929         fi
1930       done
1931     done
1932     if test -n "$GUI_LIB_LOC"; then
1933       dnl Remove /usr/lib, it causes trouble on some systems
1934       if test "$GUI_LIB_LOC" = /usr/lib; then
1935         GUI_LIB_LOC=
1936         AC_MSG_RESULT(in default path)
1937       else
1938         if test -n "$GUI_LIB_LOC"; then
1939           AC_MSG_RESULT($GUI_LIB_LOC)
1940           if test "`(uname) 2>/dev/null`" = SunOS &&
1941                                          uname -r | grep '^5' >/dev/null; then
1942             GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1943           fi
1944         fi
1945       fi
1946       MOTIF_LIBNAME=-lXm
1947     else
1948       AC_MSG_RESULT(<not found>)
1949       SKIP_MOTIF=YES
1950     fi
1951   fi
1954 if test -z "$SKIP_MOTIF"; then
1955   SKIP_ATHENA=YES
1956   SKIP_NEXTAW=YES
1957   GUITYPE=MOTIF
1958   AC_SUBST(MOTIF_LIBNAME)
1961 dnl Check if the Athena files can be found
1963 GUI_X_LIBS=
1965 if test -z "$SKIP_ATHENA"; then
1966   AC_MSG_CHECKING(if Athena header files can be found)
1967   cflags_save=$CFLAGS
1968   CFLAGS="$CFLAGS $X_CFLAGS"
1969   AC_TRY_COMPILE([
1970 #include <X11/Intrinsic.h>
1971 #include <X11/Xaw/Paned.h>], ,
1972         AC_MSG_RESULT(yes),
1973         AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1974   CFLAGS=$cflags_save
1977 if test -z "$SKIP_ATHENA"; then
1978   GUITYPE=ATHENA
1981 if test -z "$SKIP_NEXTAW"; then
1982   AC_MSG_CHECKING(if neXtaw header files can be found)
1983   cflags_save=$CFLAGS
1984   CFLAGS="$CFLAGS $X_CFLAGS"
1985   AC_TRY_COMPILE([
1986 #include <X11/Intrinsic.h>
1987 #include <X11/neXtaw/Paned.h>], ,
1988         AC_MSG_RESULT(yes),
1989         AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1990   CFLAGS=$cflags_save
1993 if test -z "$SKIP_NEXTAW"; then
1994   GUITYPE=NEXTAW
1997 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1998   dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1999   dnl Avoid adding it when it twice
2000   if test -n "$GUI_INC_LOC"; then
2001     GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2002   fi
2003   if test -n "$GUI_LIB_LOC"; then
2004     GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2005   fi
2007   dnl Check for -lXext and then for -lXmu
2008   ldflags_save=$LDFLAGS
2009   LDFLAGS="$X_LIBS $LDFLAGS"
2010   AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2011                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2012   dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2013   AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2014                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2015   AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2016                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2017   AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2018                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2019   if test -z "$SKIP_MOTIF"; then
2020     AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2021                 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2022   fi
2023   LDFLAGS=$ldflags_save
2025   dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2026   AC_MSG_CHECKING(for extra X11 defines)
2027   NARROW_PROTO=
2028   rm -fr conftestdir
2029   if mkdir conftestdir; then
2030     cd conftestdir
2031     cat > Imakefile <<'EOF'
2032 acfindx:
2033         @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2035     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2036       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2037     fi
2038     cd ..
2039     rm -fr conftestdir
2040   fi
2041   if test -z "$NARROW_PROTO"; then
2042     AC_MSG_RESULT(no)
2043   else
2044     AC_MSG_RESULT($NARROW_PROTO)
2045   fi
2046   AC_SUBST(NARROW_PROTO)
2049 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2050 dnl use the X11 include path
2051 if test "$enable_xsmp" = "yes"; then
2052   cppflags_save=$CPPFLAGS
2053   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2054   AC_CHECK_HEADERS(X11/SM/SMlib.h)
2055   CPPFLAGS=$cppflags_save
2059 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
2060   dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2061   cppflags_save=$CPPFLAGS
2062   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2063   AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2065   dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2066   if test ! "$enable_xim" = "no"; then
2067     AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2068     AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2069                   AC_MSG_RESULT(yes),
2070                   AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2071   fi
2072   CPPFLAGS=$cppflags_save
2074   dnl automatically enable XIM when hangul input isn't enabled
2075   if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2076                 -a "x$GUITYPE" != "xNONE" ; then
2077     AC_MSG_RESULT(X GUI selected; xim has been enabled)
2078     enable_xim="yes"
2079   fi
2082 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2083   cppflags_save=$CPPFLAGS
2084   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2085 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2086   AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2087   AC_TRY_COMPILE([
2088 #include <X11/Intrinsic.h>
2089 #include <X11/Xmu/Editres.h>],
2090                       [int i; i = 0;],
2091               AC_MSG_RESULT(yes)
2092                       AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2093               AC_MSG_RESULT(no))
2094   CPPFLAGS=$cppflags_save
2097 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2098 if test -z "$SKIP_MOTIF"; then
2099   cppflags_save=$CPPFLAGS
2100   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2101   AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
2102                    Xm/UnhighlightT.h Xm/Notebook.h)
2104   if test $ac_cv_header_Xm_XpmP_h = yes; then
2105     dnl Solaris uses XpmAttributes_21, very annoying.
2106     AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2107     AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2108         AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2109         AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2110         )
2111   else
2112     AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2113   fi
2114   CPPFLAGS=$cppflags_save
2117 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2118   AC_MSG_RESULT(no GUI selected; xim has been disabled)
2119   enable_xim="no"
2121 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2122   AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2123   enable_fontset="no"
2125 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2126   AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2127   enable_fontset="no"
2130 if test -z "$SKIP_PHOTON"; then
2131   GUITYPE=PHOTONGUI
2134 AC_SUBST(GUI_INC_LOC)
2135 AC_SUBST(GUI_LIB_LOC)
2136 AC_SUBST(GUITYPE)
2137 AC_SUBST(GUI_X_LIBS)
2139 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2140   AC_MSG_ERROR([cannot use workshop without Motif])
2143 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2144 if test "$enable_xim" = "yes"; then
2145   AC_DEFINE(FEAT_XIM)
2147 if test "$enable_fontset" = "yes"; then
2148   AC_DEFINE(FEAT_XFONTSET)
2152 dnl ---------------------------------------------------------------------------
2153 dnl end of GUI-checking
2154 dnl ---------------------------------------------------------------------------
2157 dnl Only really enable hangul input when GUI and XFONTSET are available
2158 if test "$enable_hangulinput" = "yes"; then
2159   if test "x$GUITYPE" = "xNONE"; then
2160     AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2161     enable_hangulinput=no
2162   else
2163     AC_DEFINE(FEAT_HANGULIN)
2164     HANGULIN_SRC=hangulin.c
2165     AC_SUBST(HANGULIN_SRC)
2166     HANGULIN_OBJ=objects/hangulin.o
2167     AC_SUBST(HANGULIN_OBJ)
2168   fi
2171 dnl Checks for libraries and include files.
2173 AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2174   [
2175     AC_RUN_IFELSE([[
2176 #include "confdefs.h"
2177 #include <ctype.h>
2178 #if STDC_HEADERS
2179 # include <stdlib.h>
2180 # include <stddef.h>
2181 #endif
2182 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2183   ]],[
2184     vim_cv_toupper_broken=yes
2185   ],[
2186     vim_cv_toupper_broken=no
2187   ],[
2188     AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2189   ])])
2191 if test "x$vim_cv_toupper_broken" = "xyes" ; then
2192   AC_DEFINE(BROKEN_TOUPPER)
2195 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2196 AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
2197         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2198         AC_MSG_RESULT(no))
2200 AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2201 AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2202         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2203         AC_MSG_RESULT(no))
2205 dnl Checks for header files.
2206 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2207 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2208 if test "$HAS_ELF" = 1; then
2209   AC_CHECK_LIB(elf, main)
2212 AC_HEADER_DIRENT
2214 dnl If sys/wait.h is not found it might still exist but not be POSIX
2215 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2216 if test $ac_cv_header_sys_wait_h = no; then
2217   AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2218   AC_TRY_COMPILE([#include <sys/wait.h>],
2219                         [union wait xx, yy; xx = yy],
2220                 AC_MSG_RESULT(yes)
2221                         AC_DEFINE(HAVE_SYS_WAIT_H)
2222                         AC_DEFINE(HAVE_UNION_WAIT),
2223                 AC_MSG_RESULT(no))
2226 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2227         termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2228         iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
2229         sys/resource.h sys/systeminfo.h locale.h \
2230         sys/stream.h termios.h libc.h sys/statfs.h \
2231         poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2232         libgen.h util/debug.h util/msg18n.h frame.h \
2233         sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
2235 dnl sys/ptem.h depends on sys/stream.h on Solaris
2236 AC_CHECK_HEADERS(sys/ptem.h, [], [],
2237 [#if defined HAVE_SYS_STREAM_H
2238 #  include <sys/stream.h>
2239 #endif])
2241 dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2242 AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2243 [#if defined HAVE_SYS_PARAM_H
2244 #  include <sys/param.h>
2245 #endif])
2248 dnl pthread_np.h may exist but can only be used after including pthread.h
2249 AC_MSG_CHECKING([for pthread_np.h])
2250 AC_TRY_COMPILE([
2251 #include <pthread.h>
2252 #include <pthread_np.h>],
2253                       [int i; i = 0;],
2254               AC_MSG_RESULT(yes)
2255                       AC_DEFINE(HAVE_PTHREAD_NP_H),
2256               AC_MSG_RESULT(no))
2258 AC_CHECK_HEADERS(strings.h)
2259 if test "x$MACOSX" = "xyes"; then
2260   dnl The strings.h file on OS/X contains a warning and nothing useful.
2261   AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2262 else
2264 dnl Check if strings.h and string.h can both be included when defined.
2265 AC_MSG_CHECKING([if strings.h can be included after string.h])
2266 cppflags_save=$CPPFLAGS
2267 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2268 AC_TRY_COMPILE([
2269 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2270 # define _NO_PROTO      /* like in os_unix.h, causes conflict for AIX (Winn) */
2271                         /* but don't do it on AIX 5.1 (Uribarri) */
2272 #endif
2273 #ifdef HAVE_XM_XM_H
2274 # include <Xm/Xm.h>     /* This breaks it for HP-UX 11 (Squassabia) */
2275 #endif
2276 #ifdef HAVE_STRING_H
2277 # include <string.h>
2278 #endif
2279 #if defined(HAVE_STRINGS_H)
2280 # include <strings.h>
2281 #endif
2282                 ], [int i; i = 0;],
2283                 AC_MSG_RESULT(yes),
2284                 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2285                 AC_MSG_RESULT(no))
2286 CPPFLAGS=$cppflags_save
2289 dnl Checks for typedefs, structures, and compiler characteristics.
2290 AC_PROG_GCC_TRADITIONAL
2291 AC_C_CONST
2292 AC_C_VOLATILE
2293 AC_TYPE_MODE_T
2294 AC_TYPE_OFF_T
2295 AC_TYPE_PID_T
2296 AC_TYPE_SIZE_T
2297 AC_TYPE_UID_T
2298 AC_HEADER_TIME
2299 AC_CHECK_TYPE(ino_t, long)
2300 AC_CHECK_TYPE(dev_t, unsigned)
2302 AC_MSG_CHECKING(for rlim_t)
2303 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2304   AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2305 else
2306   AC_EGREP_CPP(dnl
2307 changequote(<<,>>)dnl
2308 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2309 changequote([,]),
2310   [
2311 #include <sys/types.h>
2312 #if STDC_HEADERS
2313 # include <stdlib.h>
2314 # include <stddef.h>
2315 #endif
2316 #ifdef HAVE_SYS_RESOURCE_H
2317 # include <sys/resource.h>
2318 #endif
2319           ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2320           AC_MSG_RESULT($ac_cv_type_rlim_t)
2322 if test $ac_cv_type_rlim_t = no; then
2323   cat >> confdefs.h <<\EOF
2324 #define rlim_t unsigned long
2328 AC_MSG_CHECKING(for stack_t)
2329 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2330   AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2331 else
2332   AC_EGREP_CPP(stack_t,
2333   [
2334 #include <sys/types.h>
2335 #if STDC_HEADERS
2336 # include <stdlib.h>
2337 # include <stddef.h>
2338 #endif
2339 #include <signal.h>
2340           ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2341           AC_MSG_RESULT($ac_cv_type_stack_t)
2343 if test $ac_cv_type_stack_t = no; then
2344   cat >> confdefs.h <<\EOF
2345 #define stack_t struct sigaltstack
2349 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2350 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2351 AC_TRY_COMPILE([
2352 #include <sys/types.h>
2353 #if STDC_HEADERS
2354 # include <stdlib.h>
2355 # include <stddef.h>
2356 #endif
2357 #include <signal.h>
2358 #include "confdefs.h"
2359                         ], [stack_t sigstk; sigstk.ss_base = 0; ],
2360         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2361         AC_MSG_RESULT(no))
2363 olibs="$LIBS"
2364 AC_MSG_CHECKING(--with-tlib argument)
2365 AC_ARG_WITH(tlib, [  --with-tlib=library     terminal library to be used ],)
2366 if test -n "$with_tlib"; then
2367   AC_MSG_RESULT($with_tlib)
2368   LIBS="$LIBS -l$with_tlib"
2369   AC_MSG_CHECKING(for linking with $with_tlib library)
2370   AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2371   dnl Need to check for tgetent() below.
2372   olibs="$LIBS"
2373 else
2374   AC_MSG_RESULT([empty: automatic terminal library selection])
2375   dnl  On HP-UX 10.10 termcap or termlib should be used instead of
2376   dnl  curses, because curses is much slower.
2377   dnl  Newer versions of ncurses are preferred over anything.
2378   dnl  Older versions of ncurses have bugs, get a new one!
2379   dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
2380   dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
2381   case "`uname -s 2>/dev/null`" in
2382         OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
2383         *)      tlibs="ncurses termlib termcap curses";;
2384   esac
2385   for libname in $tlibs; do
2386     AC_CHECK_LIB(${libname}, tgetent,,)
2387     if test "x$olibs" != "x$LIBS"; then
2388       dnl It's possible that a library is found but it doesn't work
2389       dnl e.g., shared library that cannot be found
2390       dnl compile and run a test program to be sure
2391       AC_TRY_RUN([
2392 #ifdef HAVE_TERMCAP_H
2393 # include <termcap.h>
2394 #endif
2395 #if STDC_HEADERS
2396 # include <stdlib.h>
2397 # include <stddef.h>
2398 #endif
2399 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2400                           res="OK", res="FAIL", res="FAIL")
2401       if test "$res" = "OK"; then
2402         break
2403       fi
2404       AC_MSG_RESULT($libname library is not usable)
2405       LIBS="$olibs"
2406     fi
2407   done
2408   if test "x$olibs" = "x$LIBS"; then
2409     AC_MSG_RESULT(no terminal library found)
2410   fi
2413 if test "x$olibs" = "x$LIBS"; then
2414   AC_MSG_CHECKING([for tgetent()])
2415   AC_TRY_LINK([],
2416       [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2417         AC_MSG_RESULT(yes),
2418         AC_MSG_ERROR([NOT FOUND!
2419       You need to install a terminal library; for example ncurses.
2420       Or specify the name of the library with --with-tlib.]))
2423 AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2424   [
2425     AC_RUN_IFELSE([[
2426 #include "confdefs.h"
2427 #ifdef HAVE_TERMCAP_H
2428 # include <termcap.h>
2429 #endif
2430 #ifdef HAVE_STRING_H
2431 # include <string.h>
2432 #endif
2433 #if STDC_HEADERS
2434 # include <stdlib.h>
2435 # include <stddef.h>
2436 #endif
2437 main()
2438 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2439     ]],[
2440       vim_cv_terminfo=no
2441     ],[
2442       vim_cv_terminfo=yes
2443     ],[
2444       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2445     ])
2446   ])
2448 if test "x$vim_cv_terminfo" = "xyes" ; then
2449   AC_DEFINE(TERMINFO)
2452 if test "x$olibs" != "x$LIBS"; then
2453   AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2454     [
2455       AC_RUN_IFELSE([[
2456 #include "confdefs.h"
2457 #ifdef HAVE_TERMCAP_H
2458 # include <termcap.h>
2459 #endif
2460 #if STDC_HEADERS
2461 # include <stdlib.h>
2462 # include <stddef.h>
2463 #endif
2464 main()
2465 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2466       ]],[
2467         vim_cv_tgent=zero
2468       ],[
2469         vim_cv_tgent=non-zero
2470       ],[
2471         AC_MSG_ERROR(failed to compile test program.)
2472       ])
2473     ])
2474   
2475   if test "x$vim_cv_tgent" = "xzero" ; then
2476     AC_DEFINE(TGETENT_ZERO_ERR, 0)
2477   fi
2480 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2481 AC_TRY_LINK([
2482 #ifdef HAVE_TERMCAP_H
2483 # include <termcap.h>
2484 #endif
2485                         ], [ospeed = 20000],
2486         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2487         [AC_MSG_RESULT(no)
2488         AC_MSG_CHECKING(whether ospeed can be extern)
2489         AC_TRY_LINK([
2490 #ifdef HAVE_TERMCAP_H
2491 # include <termcap.h>
2492 #endif
2493 extern short ospeed;
2494                         ], [ospeed = 20000],
2495                 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2496                 AC_MSG_RESULT(no))]
2497         )
2499 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2500 AC_TRY_LINK([
2501 #ifdef HAVE_TERMCAP_H
2502 # include <termcap.h>
2503 #endif
2504                         ], [if (UP == 0 && BC == 0) PC = 1],
2505         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2506         [AC_MSG_RESULT(no)
2507         AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2508         AC_TRY_LINK([
2509 #ifdef HAVE_TERMCAP_H
2510 # include <termcap.h>
2511 #endif
2512 extern char *UP, *BC, PC;
2513                         ], [if (UP == 0 && BC == 0) PC = 1],
2514                 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2515                 AC_MSG_RESULT(no))]
2516         )
2518 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2519 AC_TRY_COMPILE([
2520 #ifdef HAVE_TERMCAP_H
2521 # include <termcap.h>
2522 #endif
2523                         ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2524         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2525         AC_MSG_RESULT(no))
2527 dnl On some SCO machines sys/select redefines struct timeval
2528 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2529 AC_TRY_COMPILE([
2530 #include <sys/types.h>
2531 #include <sys/time.h>
2532 #include <sys/select.h>], ,
2533           AC_MSG_RESULT(yes)
2534                         AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2535           AC_MSG_RESULT(no))
2537 dnl AC_DECL_SYS_SIGLIST
2539 dnl Checks for pty.c (copied from screen) ==========================
2540 AC_MSG_CHECKING(for /dev/ptc)
2541 if test -r /dev/ptc; then
2542   AC_DEFINE(HAVE_DEV_PTC)
2543   AC_MSG_RESULT(yes)
2544 else
2545   AC_MSG_RESULT(no)
2548 AC_MSG_CHECKING(for SVR4 ptys)
2549 if test -c /dev/ptmx ; then
2550   AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2551         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2552         AC_MSG_RESULT(no))
2553 else
2554   AC_MSG_RESULT(no)
2557 AC_MSG_CHECKING(for ptyranges)
2558 if test -d /dev/ptym ; then
2559   pdir='/dev/ptym'
2560 else
2561   pdir='/dev'
2563 dnl SCO uses ptyp%d
2564 AC_EGREP_CPP(yes,
2565 [#ifdef M_UNIX
2566    yes;
2567 #endif
2568         ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2569 dnl if test -c /dev/ptyp19; then
2570 dnl ptys=`echo /dev/ptyp??`
2571 dnl else
2572 dnl ptys=`echo $pdir/pty??`
2573 dnl fi
2574 if test "$ptys" != "$pdir/pty??" ; then
2575   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2576   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
2577   AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2578   AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2579   AC_MSG_RESULT([$p0 / $p1])
2580 else
2581   AC_MSG_RESULT([don't know])
2584 dnl    ****  pty mode/group handling ****
2586 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2587 rm -f conftest_grp
2588 AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2589   [
2590     AC_RUN_IFELSE([[
2591 #include "confdefs.h"
2592 #include <sys/types.h>
2593 #if STDC_HEADERS
2594 # include <stdlib.h>
2595 # include <stddef.h>
2596 #endif
2597 #ifdef HAVE_UNISTD_H
2598 #include <unistd.h>
2599 #endif
2600 #include <sys/stat.h>
2601 #include <stdio.h>
2602 main()
2604   struct stat sb;
2605   char *x,*ttyname();
2606   int om, m;
2607   FILE *fp;
2609   if (!(x = ttyname(0))) exit(1);
2610   if (stat(x, &sb)) exit(1);
2611   om = sb.st_mode;
2612   if (om & 002) exit(0);
2613   m = system("mesg y");
2614   if (m == -1 || m == 127) exit(1);
2615   if (stat(x, &sb)) exit(1);
2616   m = sb.st_mode;
2617   if (chmod(x, om)) exit(1);
2618   if (m & 002) exit(0);
2619   if (sb.st_gid == getgid()) exit(1);
2620   if (!(fp=fopen("conftest_grp", "w")))
2621     exit(1);
2622   fprintf(fp, "%d\n", sb.st_gid);
2623   fclose(fp);
2624   exit(0);
2626     ]],[
2627       if test -f conftest_grp; then
2628         vim_cv_tty_group=`cat conftest_grp`
2629         if test "x$vim_cv_tty_mode" = "x" ; then
2630           vim_cv_tty_mode=0620
2631         fi
2632         AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2633       else
2634         vim_cv_tty_group=world
2635         AC_MSG_RESULT([ptys are world accessable])
2636       fi
2637     ],[
2638       vim_cv_tty_group=world
2639       AC_MSG_RESULT([can't determine - assume ptys are world accessable])
2640     ],[
2641       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2642     ])
2643   ])
2644 rm -f conftest_grp
2646 if test "x$vim_cv_tty_group" != "xworld" ; then
2647   AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2648   if test "x$vim_cv_tty_mode" = "x" ; then
2649     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)])
2650   else
2651     AC_DEFINE(PTYMODE, 0620)
2652   fi
2655 dnl Checks for library functions. ===================================
2657 AC_TYPE_SIGNAL
2659 dnl find out what to use at the end of a signal function
2660 if test $ac_cv_type_signal = void; then
2661   AC_DEFINE(SIGRETURN, [return])
2662 else
2663   AC_DEFINE(SIGRETURN, [return 0])
2666 dnl check if struct sigcontext is defined (used for SGI only)
2667 AC_MSG_CHECKING(for struct sigcontext)
2668 AC_TRY_COMPILE([
2669 #include <signal.h>
2670 test_sig()
2672     struct sigcontext *scont;
2673     scont = (struct sigcontext *)0;
2674     return 1;
2675 } ], ,
2676           AC_MSG_RESULT(yes)
2677                 AC_DEFINE(HAVE_SIGCONTEXT),
2678           AC_MSG_RESULT(no))
2680 dnl tricky stuff: try to find out if getcwd() is implemented with
2681 dnl system("sh -c pwd")
2682 AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2683   [
2684     AC_RUN_IFELSE([[
2685 #include "confdefs.h"
2686 #ifdef HAVE_UNISTD_H
2687 #include <unistd.h>
2688 #endif
2689 char *dagger[] = { "IFS=pwd", 0 };
2690 main()
2692   char buffer[500];
2693   extern char **environ;
2694   environ = dagger;
2695   return getcwd(buffer, 500) ? 0 : 1;
2697     ]],[
2698       vim_cv_getcwd_broken=no
2699     ],[
2700       vim_cv_getcwd_broken=yes
2701     ],[
2702       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2703     ])
2704   ])
2706 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2707   AC_DEFINE(BAD_GETCWD)
2710 dnl Check for functions in one big call, to reduce the size of configure
2711 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2712         getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2713         memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
2714         setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2715         sigvec strcasecmp strerror strftime stricmp strncasecmp \
2716         strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2717         usleep utime utimes)
2719 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2720 AC_MSG_CHECKING(for st_blksize)
2721 AC_TRY_COMPILE(
2722 [#include <sys/types.h>
2723 #include <sys/stat.h>],
2724 [       struct stat st;
2725         int n;
2727         stat("/", &st);
2728         n = (int)st.st_blksize;],
2729         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2730         AC_MSG_RESULT(no))
2732 AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2733   [
2734     AC_RUN_IFELSE([[
2735 #include "confdefs.h"
2736 #if STDC_HEADERS
2737 # include <stdlib.h>
2738 # include <stddef.h>
2739 #endif
2740 #include <sys/types.h>
2741 #include <sys/stat.h>
2742 main() {struct stat st;  exit(stat("configure/", &st) != 0); }
2743     ]],[
2744       vim_cv_stat_ignores_slash=yes
2745     ],[
2746       vim_cv_stat_ignores_slash=no
2747     ],[
2748       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2749     ])
2750   ])
2752 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2753   AC_DEFINE(STAT_IGNORES_SLASH)
2755   
2756 dnl Link with iconv for charset translation, if not found without library.
2757 dnl check for iconv() requires including iconv.h
2758 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2759 dnl has been installed.
2760 AC_MSG_CHECKING(for iconv_open())
2761 save_LIBS="$LIBS"
2762 LIBS="$LIBS -liconv"
2763 AC_TRY_LINK([
2764 #ifdef HAVE_ICONV_H
2765 # include <iconv.h>
2766 #endif
2767     ], [iconv_open("fr", "to");],
2768     AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2769     LIBS="$save_LIBS"
2770     AC_TRY_LINK([
2771 #ifdef HAVE_ICONV_H
2772 # include <iconv.h>
2773 #endif
2774         ], [iconv_open("fr", "to");],
2775         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2776         AC_MSG_RESULT(no)))
2779 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2780 AC_TRY_LINK([
2781 #ifdef HAVE_LANGINFO_H
2782 # include <langinfo.h>
2783 #endif
2784 ], [char *cs = nl_langinfo(CODESET);],
2785         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2786         AC_MSG_RESULT(no))
2788 dnl Need various functions for floating point support.  Only enable
2789 dnl floating point when they are all present.
2790 AC_CHECK_LIB(m, strtod)
2791 AC_MSG_CHECKING([for strtod() and other floating point functions])
2792 AC_TRY_LINK([
2793 #ifdef HAVE_MATH_H
2794 # include <math.h>
2795 #endif
2796 #if STDC_HEADERS
2797 # include <stdlib.h>
2798 # include <stddef.h>
2799 #endif
2800 ], [char *s; double d;
2801     d = strtod("1.1", &s);
2802     d = fabs(1.11);
2803     d = ceil(1.11);
2804     d = floor(1.11);
2805     d = log10(1.11);
2806     d = pow(1.11, 2.22);
2807     d = sqrt(1.11);
2808     d = sin(1.11);
2809     d = cos(1.11);
2810     d = atan(1.11);
2811     ],
2812         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2813         AC_MSG_RESULT(no))
2815 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2816 dnl when -lacl works, also try to use -lattr (required for Debian).
2817 AC_MSG_CHECKING(--disable-acl argument)
2818 AC_ARG_ENABLE(acl,
2819         [  --disable-acl           Don't check for ACL support.],
2820         , [enable_acl="yes"])
2821 if test "$enable_acl" = "yes"; then
2822 AC_MSG_RESULT(no)
2823 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2824         AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2825                   AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2827 AC_MSG_CHECKING(for POSIX ACL support)
2828 AC_TRY_LINK([
2829 #include <sys/types.h>
2830 #ifdef HAVE_SYS_ACL_H
2831 # include <sys/acl.h>
2832 #endif
2833 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2834         acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2835         acl_free(acl);],
2836         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2837         AC_MSG_RESULT(no))
2839 AC_MSG_CHECKING(for Solaris ACL support)
2840 AC_TRY_LINK([
2841 #ifdef HAVE_SYS_ACL_H
2842 # include <sys/acl.h>
2843 #endif], [acl("foo", GETACLCNT, 0, NULL);
2844         ],
2845         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2846         AC_MSG_RESULT(no))
2848 AC_MSG_CHECKING(for AIX ACL support)
2849 AC_TRY_LINK([
2850 #if STDC_HEADERS
2851 # include <stdlib.h>
2852 # include <stddef.h>
2853 #endif
2854 #ifdef HAVE_SYS_ACL_H
2855 # include <sys/acl.h>
2856 #endif
2857 #ifdef HAVE_SYS_ACCESS_H
2858 # include <sys/access.h>
2859 #endif
2860 #define _ALL_SOURCE
2862 #include <sys/stat.h>
2864 int aclsize;
2865 struct acl *aclent;], [aclsize = sizeof(struct acl);
2866         aclent = (void *)malloc(aclsize);
2867         statacl("foo", STX_NORMAL, aclent, aclsize);
2868         ],
2869         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2870         AC_MSG_RESULT(no))
2871 else
2872   AC_MSG_RESULT(yes)
2875 AC_MSG_CHECKING(--disable-gpm argument)
2876 AC_ARG_ENABLE(gpm,
2877         [  --disable-gpm           Don't use gpm (Linux mouse daemon).], ,
2878         [enable_gpm="yes"])
2880 if test "$enable_gpm" = "yes"; then
2881   AC_MSG_RESULT(no)
2882   dnl Checking if gpm support can be compiled
2883   AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2884         [olibs="$LIBS" ; LIBS="-lgpm"]
2885         AC_TRY_LINK(
2886             [#include <gpm.h>
2887             #include <linux/keyboard.h>],
2888             [Gpm_GetLibVersion(NULL);],
2889             dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2890             dnl FEAT_MOUSE_GPM if mouse support is included
2891             [vi_cv_have_gpm=yes],
2892             [vi_cv_have_gpm=no])
2893         [LIBS="$olibs"]
2894     )
2895   if test $vi_cv_have_gpm = yes; then
2896     LIBS="$LIBS -lgpm"
2897     AC_DEFINE(HAVE_GPM)
2898   fi
2899 else
2900   AC_MSG_RESULT(yes)
2903 AC_MSG_CHECKING(--disable-sysmouse argument)
2904 AC_ARG_ENABLE(sysmouse,
2905         [  --disable-sysmouse    Don't use sysmouse (mouse in *BSD console).], ,
2906         [enable_sysmouse="yes"])
2908 if test "$enable_sysmouse" = "yes"; then
2909   AC_MSG_RESULT(no)
2910   dnl Checking if sysmouse support can be compiled
2911   dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2912   dnl defines FEAT_SYSMOUSE if mouse support is included
2913   AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2914         AC_TRY_LINK(
2915             [#include <sys/consio.h>
2916              #include <signal.h>
2917              #include <sys/fbio.h>],
2918             [struct mouse_info   mouse;
2919              mouse.operation = MOUSE_MODE;
2920              mouse.operation = MOUSE_SHOW;
2921              mouse.u.mode.mode = 0;
2922              mouse.u.mode.signal = SIGUSR2;],
2923             [vi_cv_have_sysmouse=yes],
2924             [vi_cv_have_sysmouse=no])
2925     )
2926   if test $vi_cv_have_sysmouse = yes; then
2927     AC_DEFINE(HAVE_SYSMOUSE)
2928   fi
2929 else
2930   AC_MSG_RESULT(yes)
2933 dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
2934 AC_MSG_CHECKING(for FD_CLOEXEC)
2935 AC_TRY_COMPILE(
2936 [#if HAVE_FCNTL_H
2937 # include <fcntl.h>
2938 #endif],
2939 [       int flag = FD_CLOEXEC;],
2940         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
2941         AC_MSG_RESULT(not usable))
2943 dnl rename needs to be checked separately to work on Nextstep with cc
2944 AC_MSG_CHECKING(for rename)
2945 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2946         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2947         AC_MSG_RESULT(no))
2949 dnl sysctl() may exist but not the arguments we use
2950 AC_MSG_CHECKING(for sysctl)
2951 AC_TRY_COMPILE(
2952 [#include <sys/types.h>
2953 #include <sys/sysctl.h>],
2954 [       int mib[2], r;
2955         size_t len;
2957         mib[0] = CTL_HW;
2958         mib[1] = HW_USERMEM;
2959         len = sizeof(r);
2960         (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2961         ],
2962         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2963         AC_MSG_RESULT(not usable))
2965 dnl sysinfo() may exist but not be Linux compatible
2966 AC_MSG_CHECKING(for sysinfo)
2967 AC_TRY_COMPILE(
2968 [#include <sys/types.h>
2969 #include <sys/sysinfo.h>],
2970 [       struct sysinfo sinfo;
2971         int t;
2973         (void)sysinfo(&sinfo);
2974         t = sinfo.totalram;
2975         ],
2976         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2977         AC_MSG_RESULT(not usable))
2979 dnl struct sysinfo may have the mem_unit field or not
2980 AC_MSG_CHECKING(for sysinfo.mem_unit)
2981 AC_TRY_COMPILE(
2982 [#include <sys/types.h>
2983 #include <sys/sysinfo.h>],
2984 [       struct sysinfo sinfo;
2985         sinfo.mem_unit = 1;
2986         ],
2987         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2988         AC_MSG_RESULT(no))
2990 dnl sysconf() may exist but not support what we want to use
2991 AC_MSG_CHECKING(for sysconf)
2992 AC_TRY_COMPILE(
2993 [#include <unistd.h>],
2994 [       (void)sysconf(_SC_PAGESIZE);
2995         (void)sysconf(_SC_PHYS_PAGES);
2996         ],
2997         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2998         AC_MSG_RESULT(not usable))
3000 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
3001 dnl be printed with "%d", and avoids a warning for cross-compiling.
3003 AC_MSG_CHECKING(size of int)
3004 AC_CACHE_VAL(ac_cv_sizeof_int,
3005         [AC_TRY_RUN([
3006 #include <stdio.h>
3007 #if STDC_HEADERS
3008 # include <stdlib.h>
3009 # include <stddef.h>
3010 #endif
3011 main()
3013   FILE *f=fopen("conftestval", "w");
3014   if (!f) exit(1);
3015   fprintf(f, "%d\n", (int)sizeof(int));
3016   exit(0);
3018             ac_cv_sizeof_int=`cat conftestval`,
3019             ac_cv_sizeof_int=0,
3020             AC_MSG_ERROR(failed to compile test program))])
3021 AC_MSG_RESULT($ac_cv_sizeof_int)
3022 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
3024 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3025 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3027 [bcopy_test_prog='
3028 #include "confdefs.h"
3029 #ifdef HAVE_STRING_H
3030 # include <string.h>
3031 #endif
3032 #if STDC_HEADERS
3033 # include <stdlib.h>
3034 # include <stddef.h>
3035 #endif
3036 main() {
3037   char buf[10];
3038   strcpy(buf, "abcdefghi");
3039   mch_memmove(buf, buf + 2, 3);
3040   if (strncmp(buf, "ababcf", 6))
3041     exit(1);
3042   strcpy(buf, "abcdefghi");
3043   mch_memmove(buf + 2, buf, 3);
3044   if (strncmp(buf, "cdedef", 6))
3045     exit(1);
3046   exit(0); /* libc version works properly.  */
3049 AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3050   [
3051     AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3052       [
3053         vim_cv_memmove_handles_overlap=yes
3054       ],[
3055         vim_cv_memmove_handles_overlap=no
3056       ],[
3057         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3058       ])
3059   ])
3061 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3062   AC_DEFINE(USEMEMMOVE)
3063 else
3064   AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3065     [
3066       AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3067       [
3068         vim_cv_bcopy_handles_overlap=yes
3069       ],[
3070         vim_cv_bcopy_handles_overlap=no
3071       ],[
3072         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3073       ])
3074     ])
3076   if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3077     AC_DEFINE(USEBCOPY)
3078   else
3079     AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3080       [
3081         AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3082           [
3083             vim_cv_memcpy_handles_overlap=yes
3084           ],[
3085             vim_cv_memcpy_handles_overlap=no
3086           ],[
3087             AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3088           ])
3089       ])
3091     if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3092       AC_DEFINE(USEMEMCPY)
3093     fi
3094   fi
3098 dnl Check for multibyte locale functions
3099 dnl Find out if _Xsetlocale() is supported by libX11.
3100 dnl Check if X_LOCALE should be defined.
3102 if test "$enable_multibyte" = "yes"; then
3103   cflags_save=$CFLAGS
3104   ldflags_save=$LDFLAGS
3105   if test "x$x_includes" != "xNONE" ; then
3106     CFLAGS="$CFLAGS -I$x_includes"
3107     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3108     AC_MSG_CHECKING(whether X_LOCALE needed)
3109     AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3110         AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3111                 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3112         AC_MSG_RESULT(no))
3113   fi
3114   CFLAGS=$cflags_save
3115   LDFLAGS=$ldflags_save
3118 dnl Link with xpg4, it is said to make Korean locale working
3119 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3121 dnl Check how we can run ctags.  Default to "ctags" when nothing works.
3122 dnl --version for Exuberant ctags (preferred)
3123 dnl       Add --fields=+S to get function signatures for omni completion.
3124 dnl -t for typedefs (many ctags have this)
3125 dnl -s for static functions (Elvis ctags only?)
3126 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3127 dnl -i+m to test for older Exuberant ctags
3128 AC_MSG_CHECKING(how to create tags)
3129 test -f tags && mv tags tags.save
3130 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3131   TAGPRG="ctags -I INIT+ --fields=+S"
3132 else
3133   TAGPRG="ctags"
3134   (eval etags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3135   (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3136   (eval ctags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3137   (eval ctags -t   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3138   (eval ctags -ts  /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3139   (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3140   (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3142 test -f tags.save && mv tags.save tags
3143 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3145 dnl Check how we can run man with a section number
3146 AC_MSG_CHECKING(how to run man with a section nr)
3147 MANDEF="man"
3148 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
3149 AC_MSG_RESULT($MANDEF)
3150 if test "$MANDEF" = "man -s"; then
3151   AC_DEFINE(USEMAN_S)
3154 dnl Check if gettext() is working and if it needs -lintl
3155 AC_MSG_CHECKING(--disable-nls argument)
3156 AC_ARG_ENABLE(nls,
3157         [  --disable-nls           Don't support NLS (gettext()).], ,
3158         [enable_nls="yes"])
3160 if test "$enable_nls" = "yes"; then
3161   AC_MSG_RESULT(no)
3163   INSTALL_LANGS=install-languages
3164   AC_SUBST(INSTALL_LANGS)
3165   INSTALL_TOOL_LANGS=install-tool-languages
3166   AC_SUBST(INSTALL_TOOL_LANGS)
3168   AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3169   AC_MSG_CHECKING([for NLS])
3170   if test -f po/Makefile; then
3171     have_gettext="no"
3172     if test -n "$MSGFMT"; then
3173       AC_TRY_LINK(
3174         [#include <libintl.h>],
3175         [gettext("Test");],
3176         AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3177           olibs=$LIBS
3178           LIBS="$LIBS -lintl"
3179           AC_TRY_LINK(
3180               [#include <libintl.h>],
3181               [gettext("Test");],
3182               AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3183               AC_MSG_RESULT([gettext() doesn't work]);
3184               LIBS=$olibs))
3185     else
3186       AC_MSG_RESULT([msgfmt not found - disabled]);
3187     fi
3188     if test $have_gettext = "yes"; then
3189       AC_DEFINE(HAVE_GETTEXT)
3190       MAKEMO=yes
3191       AC_SUBST(MAKEMO)
3192       dnl this was added in GNU gettext 0.10.36
3193       AC_CHECK_FUNCS(bind_textdomain_codeset)
3194       dnl _nl_msg_cat_cntr is required for GNU gettext
3195       AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3196       AC_TRY_LINK(
3197                 [#include <libintl.h>
3198                 extern int _nl_msg_cat_cntr;],
3199                 [++_nl_msg_cat_cntr;],
3200                 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3201                 AC_MSG_RESULT([no]))
3202     fi
3203   else
3204     AC_MSG_RESULT([no "po/Makefile" - disabled]);
3205   fi
3206 else
3207   AC_MSG_RESULT(yes)
3210 dnl Check for dynamic linking loader
3211 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3212 if test x${DLL} = xdlfcn.h; then
3213   AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3214   AC_MSG_CHECKING([for dlopen()])
3215   AC_TRY_LINK(,[
3216                 extern void* dlopen();
3217                 dlopen();
3218       ],
3219       AC_MSG_RESULT(yes);
3220               AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3221       AC_MSG_RESULT(no);
3222               AC_MSG_CHECKING([for dlopen() in -ldl])
3223               olibs=$LIBS
3224               LIBS="$LIBS -ldl"
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                           LIBS=$olibs))
3233   dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3234   dnl ick :-)
3235   AC_MSG_CHECKING([for dlsym()])
3236   AC_TRY_LINK(,[
3237                 extern void* dlsym();
3238                 dlsym();
3239       ],
3240       AC_MSG_RESULT(yes);
3241               AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3242       AC_MSG_RESULT(no);
3243               AC_MSG_CHECKING([for dlsym() in -ldl])
3244               olibs=$LIBS
3245               LIBS="$LIBS -ldl"
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                           LIBS=$olibs))
3254 elif test x${DLL} = xdl.h; then
3255   AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3256   AC_MSG_CHECKING([for shl_load()])
3257   AC_TRY_LINK(,[
3258                 extern void* shl_load();
3259                 shl_load();
3260      ],
3261      AC_MSG_RESULT(yes);
3262           AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3263      AC_MSG_RESULT(no);
3264           AC_MSG_CHECKING([for shl_load() in -ldld])
3265           olibs=$LIBS
3266           LIBS="$LIBS -ldld"
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                   LIBS=$olibs))
3276 AC_CHECK_HEADERS(setjmp.h)
3278 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3279   dnl -ldl must come after DynaLoader.a
3280   if echo $LIBS | grep -e '-ldl' >/dev/null; then
3281     LIBS=`echo $LIBS | sed s/-ldl//`
3282     PERL_LIBS="$PERL_LIBS -ldl"
3283   fi
3286 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3287         && test "x$GUITYPE" != "xCARBONGUI"; then
3288   AC_MSG_CHECKING(whether we need -framework Carbon)
3289   dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3290   if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
3291         || test "x$features" = "xhuge"; then
3292     LIBS="$LIBS -framework Carbon"
3293     AC_MSG_RESULT(yes)
3294   else
3295     AC_MSG_RESULT(no)
3296   fi
3298 if test "x$MACARCH" = "xboth"; then
3299   LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3302 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
3303 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3304 dnl But only when making dependencies, cproto and lint don't take "-isystem".
3305 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3306 dnl the number before the version number.
3307 DEPEND_CFLAGS_FILTER=
3308 if test "$GCC" = yes; then
3309   AC_MSG_CHECKING(for GCC 3 or later)
3310   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
3311   if test "$gccmajor" -gt "2"; then
3312     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3313     AC_MSG_RESULT(yes)
3314   else
3315     AC_MSG_RESULT(no)
3316   fi
3317   dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3318   dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
3319   AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3320   if test "$gccmajor" -gt "3"; then
3321     CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
3322     AC_MSG_RESULT(yes)
3323   else
3324     AC_MSG_RESULT(no)
3325   fi
3327 AC_SUBST(DEPEND_CFLAGS_FILTER)
3329 dnl write output files
3330 AC_OUTPUT(auto/config.mk:config.mk.in)
3332 dnl vim: set sw=2 tw=78 fo+=l: