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