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