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