Merge branch 'vim'
[MacVim.git] / src / configure.in
bloba233de18dc16d5db195f891362ee98daaefb2dcb
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 Checks for libraries and include files.
2173 AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2174   [
2175     AC_RUN_IFELSE([[
2176 #include "confdefs.h"
2177 #include <ctype.h>
2178 #if STDC_HEADERS
2179 # include <stdlib.h>
2180 # include <stddef.h>
2181 #endif
2182 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2183   ]],[
2184     vim_cv_toupper_broken=yes
2185   ],[
2186     vim_cv_toupper_broken=no
2187   ],[
2188     AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2189   ])])
2191 if test "x$vim_cv_toupper_broken" = "xyes" ; then
2192   AC_DEFINE(BROKEN_TOUPPER)
2195 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2196 AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
2197         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2198         AC_MSG_RESULT(no))
2200 AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2201 AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2202         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2203         AC_MSG_RESULT(no))
2205 dnl Checks for header files.
2206 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2207 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2208 if test "$HAS_ELF" = 1; then
2209   AC_CHECK_LIB(elf, main)
2212 AC_HEADER_DIRENT
2214 dnl If sys/wait.h is not found it might still exist but not be POSIX
2215 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2216 if test $ac_cv_header_sys_wait_h = no; then
2217   AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2218   AC_TRY_COMPILE([#include <sys/wait.h>],
2219                         [union wait xx, yy; xx = yy],
2220                 AC_MSG_RESULT(yes)
2221                         AC_DEFINE(HAVE_SYS_WAIT_H)
2222                         AC_DEFINE(HAVE_UNION_WAIT),
2223                 AC_MSG_RESULT(no))
2226 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2227         termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2228         iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
2229         sys/resource.h sys/systeminfo.h locale.h \
2230         sys/stream.h termios.h libc.h sys/statfs.h \
2231         poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2232         libgen.h util/debug.h util/msg18n.h frame.h \
2233         sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
2235 dnl sys/ptem.h depends on sys/stream.h on Solaris
2236 AC_CHECK_HEADERS(sys/ptem.h, [], [],
2237 [#if defined HAVE_SYS_STREAM_H
2238 #  include <sys/stream.h>
2239 #endif])
2241 dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2242 AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2243 [#if defined HAVE_SYS_PARAM_H
2244 #  include <sys/param.h>
2245 #endif])
2248 dnl pthread_np.h may exist but can only be used after including pthread.h
2249 AC_MSG_CHECKING([for pthread_np.h])
2250 AC_TRY_COMPILE([
2251 #include <pthread.h>
2252 #include <pthread_np.h>],
2253                       [int i; i = 0;],
2254               AC_MSG_RESULT(yes)
2255                       AC_DEFINE(HAVE_PTHREAD_NP_H),
2256               AC_MSG_RESULT(no))
2258 AC_CHECK_HEADERS(strings.h)
2259 if test "x$MACOSX" = "xyes"; then
2260   dnl The strings.h file on OS/X contains a warning and nothing useful.
2261   AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2262 else
2264 dnl Check if strings.h and string.h can both be included when defined.
2265 AC_MSG_CHECKING([if strings.h can be included after string.h])
2266 cppflags_save=$CPPFLAGS
2267 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2268 AC_TRY_COMPILE([
2269 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2270 # define _NO_PROTO      /* like in os_unix.h, causes conflict for AIX (Winn) */
2271                         /* but don't do it on AIX 5.1 (Uribarri) */
2272 #endif
2273 #ifdef HAVE_XM_XM_H
2274 # include <Xm/Xm.h>     /* This breaks it for HP-UX 11 (Squassabia) */
2275 #endif
2276 #ifdef HAVE_STRING_H
2277 # include <string.h>
2278 #endif
2279 #if defined(HAVE_STRINGS_H)
2280 # include <strings.h>
2281 #endif
2282                 ], [int i; i = 0;],
2283                 AC_MSG_RESULT(yes),
2284                 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2285                 AC_MSG_RESULT(no))
2286 CPPFLAGS=$cppflags_save
2289 dnl Checks for typedefs, structures, and compiler characteristics.
2290 AC_PROG_GCC_TRADITIONAL
2291 AC_C_CONST
2292 AC_C_VOLATILE
2293 AC_TYPE_MODE_T
2294 AC_TYPE_OFF_T
2295 AC_TYPE_PID_T
2296 AC_TYPE_SIZE_T
2297 AC_TYPE_UID_T
2298 AC_HEADER_TIME
2299 AC_CHECK_TYPE(ino_t, long)
2300 AC_CHECK_TYPE(dev_t, unsigned)
2302 AC_MSG_CHECKING(for rlim_t)
2303 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2304   AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2305 else
2306   AC_EGREP_CPP(dnl
2307 changequote(<<,>>)dnl
2308 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2309 changequote([,]),
2310   [
2311 #include <sys/types.h>
2312 #if STDC_HEADERS
2313 # include <stdlib.h>
2314 # include <stddef.h>
2315 #endif
2316 #ifdef HAVE_SYS_RESOURCE_H
2317 # include <sys/resource.h>
2318 #endif
2319           ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2320           AC_MSG_RESULT($ac_cv_type_rlim_t)
2322 if test $ac_cv_type_rlim_t = no; then
2323   cat >> confdefs.h <<\EOF
2324 #define rlim_t unsigned long
2328 AC_MSG_CHECKING(for stack_t)
2329 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2330   AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2331 else
2332   AC_EGREP_CPP(stack_t,
2333   [
2334 #include <sys/types.h>
2335 #if STDC_HEADERS
2336 # include <stdlib.h>
2337 # include <stddef.h>
2338 #endif
2339 #include <signal.h>
2340           ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2341           AC_MSG_RESULT($ac_cv_type_stack_t)
2343 if test $ac_cv_type_stack_t = no; then
2344   cat >> confdefs.h <<\EOF
2345 #define stack_t struct sigaltstack
2349 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2350 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2351 AC_TRY_COMPILE([
2352 #include <sys/types.h>
2353 #if STDC_HEADERS
2354 # include <stdlib.h>
2355 # include <stddef.h>
2356 #endif
2357 #include <signal.h>
2358 #include "confdefs.h"
2359                         ], [stack_t sigstk; sigstk.ss_base = 0; ],
2360         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2361         AC_MSG_RESULT(no))
2363 olibs="$LIBS"
2364 AC_MSG_CHECKING(--with-tlib argument)
2365 AC_ARG_WITH(tlib, [  --with-tlib=library     terminal library to be used ],)
2366 if test -n "$with_tlib"; then
2367   AC_MSG_RESULT($with_tlib)
2368   LIBS="$LIBS -l$with_tlib"
2369   AC_MSG_CHECKING(for linking with $with_tlib library)
2370   AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2371   dnl Need to check for tgetent() below.
2372   olibs="$LIBS"
2373 else
2374   AC_MSG_RESULT([empty: automatic terminal library selection])
2375   dnl  On HP-UX 10.10 termcap or termlib should be used instead of
2376   dnl  curses, because curses is much slower.
2377   dnl  Newer versions of ncurses are preferred over anything.
2378   dnl  Older versions of ncurses have bugs, get a new one!
2379   dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
2380   dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
2381   case "`uname -s 2>/dev/null`" in
2382         OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
2383         *)      tlibs="ncurses termlib termcap curses";;
2384   esac
2385   for libname in $tlibs; do
2386     AC_CHECK_LIB(${libname}, tgetent,,)
2387     if test "x$olibs" != "x$LIBS"; then
2388       dnl It's possible that a library is found but it doesn't work
2389       dnl e.g., shared library that cannot be found
2390       dnl compile and run a test program to be sure
2391       AC_TRY_RUN([
2392 #ifdef HAVE_TERMCAP_H
2393 # include <termcap.h>
2394 #endif
2395 #if STDC_HEADERS
2396 # include <stdlib.h>
2397 # include <stddef.h>
2398 #endif
2399 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2400                           res="OK", res="FAIL", res="FAIL")
2401       if test "$res" = "OK"; then
2402         break
2403       fi
2404       AC_MSG_RESULT($libname library is not usable)
2405       LIBS="$olibs"
2406     fi
2407   done
2408   if test "x$olibs" = "x$LIBS"; then
2409     AC_MSG_RESULT(no terminal library found)
2410   fi
2413 if test "x$olibs" = "x$LIBS"; then
2414   AC_MSG_CHECKING([for tgetent()])
2415   AC_TRY_LINK([],
2416       [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2417         AC_MSG_RESULT(yes),
2418         AC_MSG_ERROR([NOT FOUND!
2419       You need to install a terminal library; for example ncurses.
2420       Or specify the name of the library with --with-tlib.]))
2423 AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2424   [
2425     AC_RUN_IFELSE([[
2426 #include "confdefs.h"
2427 #ifdef HAVE_TERMCAP_H
2428 # include <termcap.h>
2429 #endif
2430 #ifdef HAVE_STRING_H
2431 # include <string.h>
2432 #endif
2433 #if STDC_HEADERS
2434 # include <stdlib.h>
2435 # include <stddef.h>
2436 #endif
2437 main()
2438 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2439     ]],[
2440       vim_cv_terminfo=no
2441     ],[
2442       vim_cv_terminfo=yes
2443     ],[
2444       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2445     ])
2446   ])
2448 if test "x$vim_cv_terminfo" = "xyes" ; then
2449   AC_DEFINE(TERMINFO)
2452 if test "x$olibs" != "x$LIBS"; then
2453   AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2454     [
2455       AC_RUN_IFELSE([[
2456 #include "confdefs.h"
2457 #ifdef HAVE_TERMCAP_H
2458 # include <termcap.h>
2459 #endif
2460 #if STDC_HEADERS
2461 # include <stdlib.h>
2462 # include <stddef.h>
2463 #endif
2464 main()
2465 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2466       ]],[
2467         vim_cv_tgent=zero
2468       ],[
2469         vim_cv_tgent=non-zero
2470       ],[
2471         AC_MSG_ERROR(failed to compile test program.)
2472       ])
2473     ])
2474   
2475   if test "x$vim_cv_tgent" = "xzero" ; then
2476     AC_DEFINE(TGETENT_ZERO_ERR, 0)
2477   fi
2480 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2481 AC_TRY_LINK([
2482 #ifdef HAVE_TERMCAP_H
2483 # include <termcap.h>
2484 #endif
2485                         ], [ospeed = 20000],
2486         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2487         [AC_MSG_RESULT(no)
2488         AC_MSG_CHECKING(whether ospeed can be extern)
2489         AC_TRY_LINK([
2490 #ifdef HAVE_TERMCAP_H
2491 # include <termcap.h>
2492 #endif
2493 extern short ospeed;
2494                         ], [ospeed = 20000],
2495                 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2496                 AC_MSG_RESULT(no))]
2497         )
2499 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2500 AC_TRY_LINK([
2501 #ifdef HAVE_TERMCAP_H
2502 # include <termcap.h>
2503 #endif
2504                         ], [if (UP == 0 && BC == 0) PC = 1],
2505         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2506         [AC_MSG_RESULT(no)
2507         AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2508         AC_TRY_LINK([
2509 #ifdef HAVE_TERMCAP_H
2510 # include <termcap.h>
2511 #endif
2512 extern char *UP, *BC, PC;
2513                         ], [if (UP == 0 && BC == 0) PC = 1],
2514                 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2515                 AC_MSG_RESULT(no))]
2516         )
2518 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2519 AC_TRY_COMPILE([
2520 #ifdef HAVE_TERMCAP_H
2521 # include <termcap.h>
2522 #endif
2523                         ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2524         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2525         AC_MSG_RESULT(no))
2527 dnl On some SCO machines sys/select redefines struct timeval
2528 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2529 AC_TRY_COMPILE([
2530 #include <sys/types.h>
2531 #include <sys/time.h>
2532 #include <sys/select.h>], ,
2533           AC_MSG_RESULT(yes)
2534                         AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2535           AC_MSG_RESULT(no))
2537 dnl AC_DECL_SYS_SIGLIST
2539 dnl Checks for pty.c (copied from screen) ==========================
2540 AC_MSG_CHECKING(for /dev/ptc)
2541 if test -r /dev/ptc; then
2542   AC_DEFINE(HAVE_DEV_PTC)
2543   AC_MSG_RESULT(yes)
2544 else
2545   AC_MSG_RESULT(no)
2548 AC_MSG_CHECKING(for SVR4 ptys)
2549 if test -c /dev/ptmx ; then
2550   AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2551         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2552         AC_MSG_RESULT(no))
2553 else
2554   AC_MSG_RESULT(no)
2557 AC_MSG_CHECKING(for ptyranges)
2558 if test -d /dev/ptym ; then
2559   pdir='/dev/ptym'
2560 else
2561   pdir='/dev'
2563 dnl SCO uses ptyp%d
2564 AC_EGREP_CPP(yes,
2565 [#ifdef M_UNIX
2566    yes;
2567 #endif
2568         ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2569 dnl if test -c /dev/ptyp19; then
2570 dnl ptys=`echo /dev/ptyp??`
2571 dnl else
2572 dnl ptys=`echo $pdir/pty??`
2573 dnl fi
2574 if test "$ptys" != "$pdir/pty??" ; then
2575   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2576   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
2577   AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2578   AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2579   AC_MSG_RESULT([$p0 / $p1])
2580 else
2581   AC_MSG_RESULT([don't know])
2584 dnl    ****  pty mode/group handling ****
2586 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2587 rm -f conftest_grp
2588 AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2589   [
2590     AC_RUN_IFELSE([[
2591 #include "confdefs.h"
2592 #include <sys/types.h>
2593 #if STDC_HEADERS
2594 # include <stdlib.h>
2595 # include <stddef.h>
2596 #endif
2597 #ifdef HAVE_UNISTD_H
2598 #include <unistd.h>
2599 #endif
2600 #include <sys/stat.h>
2601 #include <stdio.h>
2602 main()
2604   struct stat sb;
2605   char *x,*ttyname();
2606   int om, m;
2607   FILE *fp;
2609   if (!(x = ttyname(0))) exit(1);
2610   if (stat(x, &sb)) exit(1);
2611   om = sb.st_mode;
2612   if (om & 002) exit(0);
2613   m = system("mesg y");
2614   if (m == -1 || m == 127) exit(1);
2615   if (stat(x, &sb)) exit(1);
2616   m = sb.st_mode;
2617   if (chmod(x, om)) exit(1);
2618   if (m & 002) exit(0);
2619   if (sb.st_gid == getgid()) exit(1);
2620   if (!(fp=fopen("conftest_grp", "w")))
2621     exit(1);
2622   fprintf(fp, "%d\n", sb.st_gid);
2623   fclose(fp);
2624   exit(0);
2626     ]],[
2627       if test -f conftest_grp; then
2628         vim_cv_tty_group=`cat conftest_grp`
2629         if test "x$vim_cv_tty_mode" = "x" ; then
2630           vim_cv_tty_mode=0620
2631         fi
2632         AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2633       else
2634         vim_cv_tty_group=world
2635         AC_MSG_RESULT([ptys are world accessible])
2636       fi
2637     ],[
2638       vim_cv_tty_group=world
2639       AC_MSG_RESULT([can't determine - assume ptys are world accessible])
2640     ],[
2641       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2642     ])
2643   ])
2644 rm -f conftest_grp
2646 if test "x$vim_cv_tty_group" != "xworld" ; then
2647   AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2648   if test "x$vim_cv_tty_mode" = "x" ; then
2649     AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)])
2650   else
2651     AC_DEFINE(PTYMODE, 0620)
2652   fi
2655 dnl Checks for library functions. ===================================
2657 AC_TYPE_SIGNAL
2659 dnl find out what to use at the end of a signal function
2660 if test $ac_cv_type_signal = void; then
2661   AC_DEFINE(SIGRETURN, [return])
2662 else
2663   AC_DEFINE(SIGRETURN, [return 0])
2666 dnl check if struct sigcontext is defined (used for SGI only)
2667 AC_MSG_CHECKING(for struct sigcontext)
2668 AC_TRY_COMPILE([
2669 #include <signal.h>
2670 test_sig()
2672     struct sigcontext *scont;
2673     scont = (struct sigcontext *)0;
2674     return 1;
2675 } ], ,
2676           AC_MSG_RESULT(yes)
2677                 AC_DEFINE(HAVE_SIGCONTEXT),
2678           AC_MSG_RESULT(no))
2680 dnl tricky stuff: try to find out if getcwd() is implemented with
2681 dnl system("sh -c pwd")
2682 AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2683   [
2684     AC_RUN_IFELSE([[
2685 #include "confdefs.h"
2686 #ifdef HAVE_UNISTD_H
2687 #include <unistd.h>
2688 #endif
2689 char *dagger[] = { "IFS=pwd", 0 };
2690 main()
2692   char buffer[500];
2693   extern char **environ;
2694   environ = dagger;
2695   return getcwd(buffer, 500) ? 0 : 1;
2697     ]],[
2698       vim_cv_getcwd_broken=no
2699     ],[
2700       vim_cv_getcwd_broken=yes
2701     ],[
2702       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2703     ])
2704   ])
2706 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2707   AC_DEFINE(BAD_GETCWD)
2710 dnl Check for functions in one big call, to reduce the size of configure.
2711 dnl Can only be used for functions that do not require any include.
2712 AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
2713         getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2714         memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
2715         setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2716         sigvec strcasecmp strerror strftime stricmp strncasecmp \
2717         strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2718         usleep utime utimes)
2719 AC_FUNC_FSEEKO
2721 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2722 AC_MSG_CHECKING(for st_blksize)
2723 AC_TRY_COMPILE(
2724 [#include <sys/types.h>
2725 #include <sys/stat.h>],
2726 [       struct stat st;
2727         int n;
2729         stat("/", &st);
2730         n = (int)st.st_blksize;],
2731         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2732         AC_MSG_RESULT(no))
2734 AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2735   [
2736     AC_RUN_IFELSE([[
2737 #include "confdefs.h"
2738 #if STDC_HEADERS
2739 # include <stdlib.h>
2740 # include <stddef.h>
2741 #endif
2742 #include <sys/types.h>
2743 #include <sys/stat.h>
2744 main() {struct stat st;  exit(stat("configure/", &st) != 0); }
2745     ]],[
2746       vim_cv_stat_ignores_slash=yes
2747     ],[
2748       vim_cv_stat_ignores_slash=no
2749     ],[
2750       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2751     ])
2752   ])
2754 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2755   AC_DEFINE(STAT_IGNORES_SLASH)
2757   
2758 dnl Link with iconv for charset translation, if not found without library.
2759 dnl check for iconv() requires including iconv.h
2760 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2761 dnl has been installed.
2762 AC_MSG_CHECKING(for iconv_open())
2763 save_LIBS="$LIBS"
2764 LIBS="$LIBS -liconv"
2765 AC_TRY_LINK([
2766 #ifdef HAVE_ICONV_H
2767 # include <iconv.h>
2768 #endif
2769     ], [iconv_open("fr", "to");],
2770     AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2771     LIBS="$save_LIBS"
2772     AC_TRY_LINK([
2773 #ifdef HAVE_ICONV_H
2774 # include <iconv.h>
2775 #endif
2776         ], [iconv_open("fr", "to");],
2777         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2778         AC_MSG_RESULT(no)))
2781 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2782 AC_TRY_LINK([
2783 #ifdef HAVE_LANGINFO_H
2784 # include <langinfo.h>
2785 #endif
2786 ], [char *cs = nl_langinfo(CODESET);],
2787         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2788         AC_MSG_RESULT(no))
2790 dnl Need various functions for floating point support.  Only enable
2791 dnl floating point when they are all present.
2792 AC_CHECK_LIB(m, strtod)
2793 AC_MSG_CHECKING([for strtod() and other floating point functions])
2794 AC_TRY_LINK([
2795 #ifdef HAVE_MATH_H
2796 # include <math.h>
2797 #endif
2798 #if STDC_HEADERS
2799 # include <stdlib.h>
2800 # include <stddef.h>
2801 #endif
2802 ], [char *s; double d;
2803     d = strtod("1.1", &s);
2804     d = fabs(1.11);
2805     d = ceil(1.11);
2806     d = floor(1.11);
2807     d = log10(1.11);
2808     d = pow(1.11, 2.22);
2809     d = sqrt(1.11);
2810     d = sin(1.11);
2811     d = cos(1.11);
2812     d = atan(1.11);
2813     ],
2814         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2815         AC_MSG_RESULT(no))
2817 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2818 dnl when -lacl works, also try to use -lattr (required for Debian).
2819 AC_MSG_CHECKING(--disable-acl argument)
2820 AC_ARG_ENABLE(acl,
2821         [  --disable-acl           Don't check for ACL support.],
2822         , [enable_acl="yes"])
2823 if test "$enable_acl" = "yes"; then
2824 AC_MSG_RESULT(no)
2825 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2826         AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2827                   AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2829 AC_MSG_CHECKING(for POSIX ACL support)
2830 AC_TRY_LINK([
2831 #include <sys/types.h>
2832 #ifdef HAVE_SYS_ACL_H
2833 # include <sys/acl.h>
2834 #endif
2835 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2836         acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2837         acl_free(acl);],
2838         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2839         AC_MSG_RESULT(no))
2841 AC_MSG_CHECKING(for Solaris ACL support)
2842 AC_TRY_LINK([
2843 #ifdef HAVE_SYS_ACL_H
2844 # include <sys/acl.h>
2845 #endif], [acl("foo", GETACLCNT, 0, NULL);
2846         ],
2847         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2848         AC_MSG_RESULT(no))
2850 AC_MSG_CHECKING(for AIX ACL support)
2851 AC_TRY_LINK([
2852 #if STDC_HEADERS
2853 # include <stdlib.h>
2854 # include <stddef.h>
2855 #endif
2856 #ifdef HAVE_SYS_ACL_H
2857 # include <sys/acl.h>
2858 #endif
2859 #ifdef HAVE_SYS_ACCESS_H
2860 # include <sys/access.h>
2861 #endif
2862 #define _ALL_SOURCE
2864 #include <sys/stat.h>
2866 int aclsize;
2867 struct acl *aclent;], [aclsize = sizeof(struct acl);
2868         aclent = (void *)malloc(aclsize);
2869         statacl("foo", STX_NORMAL, aclent, aclsize);
2870         ],
2871         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2872         AC_MSG_RESULT(no))
2873 else
2874   AC_MSG_RESULT(yes)
2877 AC_MSG_CHECKING(--disable-gpm argument)
2878 AC_ARG_ENABLE(gpm,
2879         [  --disable-gpm           Don't use gpm (Linux mouse daemon).], ,
2880         [enable_gpm="yes"])
2882 if test "$enable_gpm" = "yes"; then
2883   AC_MSG_RESULT(no)
2884   dnl Checking if gpm support can be compiled
2885   AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2886         [olibs="$LIBS" ; LIBS="-lgpm"]
2887         AC_TRY_LINK(
2888             [#include <gpm.h>
2889             #include <linux/keyboard.h>],
2890             [Gpm_GetLibVersion(NULL);],
2891             dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2892             dnl FEAT_MOUSE_GPM if mouse support is included
2893             [vi_cv_have_gpm=yes],
2894             [vi_cv_have_gpm=no])
2895         [LIBS="$olibs"]
2896     )
2897   if test $vi_cv_have_gpm = yes; then
2898     LIBS="$LIBS -lgpm"
2899     AC_DEFINE(HAVE_GPM)
2900   fi
2901 else
2902   AC_MSG_RESULT(yes)
2905 AC_MSG_CHECKING(--disable-sysmouse argument)
2906 AC_ARG_ENABLE(sysmouse,
2907         [  --disable-sysmouse    Don't use sysmouse (mouse in *BSD console).], ,
2908         [enable_sysmouse="yes"])
2910 if test "$enable_sysmouse" = "yes"; then
2911   AC_MSG_RESULT(no)
2912   dnl Checking if sysmouse support can be compiled
2913   dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2914   dnl defines FEAT_SYSMOUSE if mouse support is included
2915   AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2916         AC_TRY_LINK(
2917             [#include <sys/consio.h>
2918              #include <signal.h>
2919              #include <sys/fbio.h>],
2920             [struct mouse_info   mouse;
2921              mouse.operation = MOUSE_MODE;
2922              mouse.operation = MOUSE_SHOW;
2923              mouse.u.mode.mode = 0;
2924              mouse.u.mode.signal = SIGUSR2;],
2925             [vi_cv_have_sysmouse=yes],
2926             [vi_cv_have_sysmouse=no])
2927     )
2928   if test $vi_cv_have_sysmouse = yes; then
2929     AC_DEFINE(HAVE_SYSMOUSE)
2930   fi
2931 else
2932   AC_MSG_RESULT(yes)
2935 dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
2936 AC_MSG_CHECKING(for FD_CLOEXEC)
2937 AC_TRY_COMPILE(
2938 [#if HAVE_FCNTL_H
2939 # include <fcntl.h>
2940 #endif],
2941 [       int flag = FD_CLOEXEC;],
2942         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
2943         AC_MSG_RESULT(not usable))
2945 dnl rename needs to be checked separately to work on Nextstep with cc
2946 AC_MSG_CHECKING(for rename)
2947 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2948         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2949         AC_MSG_RESULT(no))
2951 dnl sysctl() may exist but not the arguments we use
2952 AC_MSG_CHECKING(for sysctl)
2953 AC_TRY_COMPILE(
2954 [#include <sys/types.h>
2955 #include <sys/sysctl.h>],
2956 [       int mib[2], r;
2957         size_t len;
2959         mib[0] = CTL_HW;
2960         mib[1] = HW_USERMEM;
2961         len = sizeof(r);
2962         (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2963         ],
2964         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2965         AC_MSG_RESULT(not usable))
2967 dnl sysinfo() may exist but not be Linux compatible
2968 AC_MSG_CHECKING(for sysinfo)
2969 AC_TRY_COMPILE(
2970 [#include <sys/types.h>
2971 #include <sys/sysinfo.h>],
2972 [       struct sysinfo sinfo;
2973         int t;
2975         (void)sysinfo(&sinfo);
2976         t = sinfo.totalram;
2977         ],
2978         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2979         AC_MSG_RESULT(not usable))
2981 dnl struct sysinfo may have the mem_unit field or not
2982 AC_MSG_CHECKING(for sysinfo.mem_unit)
2983 AC_TRY_COMPILE(
2984 [#include <sys/types.h>
2985 #include <sys/sysinfo.h>],
2986 [       struct sysinfo sinfo;
2987         sinfo.mem_unit = 1;
2988         ],
2989         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2990         AC_MSG_RESULT(no))
2992 dnl sysconf() may exist but not support what we want to use
2993 AC_MSG_CHECKING(for sysconf)
2994 AC_TRY_COMPILE(
2995 [#include <unistd.h>],
2996 [       (void)sysconf(_SC_PAGESIZE);
2997         (void)sysconf(_SC_PHYS_PAGES);
2998         ],
2999         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3000         AC_MSG_RESULT(not usable))
3002 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
3003 dnl be printed with "%d", and avoids a warning for cross-compiling.
3005 AC_MSG_CHECKING(size of int)
3006 AC_CACHE_VAL(ac_cv_sizeof_int,
3007         [AC_TRY_RUN([
3008 #include <stdio.h>
3009 #if STDC_HEADERS
3010 # include <stdlib.h>
3011 # include <stddef.h>
3012 #endif
3013 main()
3015   FILE *f=fopen("conftestval", "w");
3016   if (!f) exit(1);
3017   fprintf(f, "%d\n", (int)sizeof(int));
3018   exit(0);
3020             ac_cv_sizeof_int=`cat conftestval`,
3021             ac_cv_sizeof_int=0,
3022             AC_MSG_ERROR(failed to compile test program))])
3023 AC_MSG_RESULT($ac_cv_sizeof_int)
3024 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
3026 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3027 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3029 [bcopy_test_prog='
3030 #include "confdefs.h"
3031 #ifdef HAVE_STRING_H
3032 # include <string.h>
3033 #endif
3034 #if STDC_HEADERS
3035 # include <stdlib.h>
3036 # include <stddef.h>
3037 #endif
3038 main() {
3039   char buf[10];
3040   strcpy(buf, "abcdefghi");
3041   mch_memmove(buf, buf + 2, 3);
3042   if (strncmp(buf, "ababcf", 6))
3043     exit(1);
3044   strcpy(buf, "abcdefghi");
3045   mch_memmove(buf + 2, buf, 3);
3046   if (strncmp(buf, "cdedef", 6))
3047     exit(1);
3048   exit(0); /* libc version works properly.  */
3051 AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3052   [
3053     AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3054       [
3055         vim_cv_memmove_handles_overlap=yes
3056       ],[
3057         vim_cv_memmove_handles_overlap=no
3058       ],[
3059         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3060       ])
3061   ])
3063 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3064   AC_DEFINE(USEMEMMOVE)
3065 else
3066   AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3067     [
3068       AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3069       [
3070         vim_cv_bcopy_handles_overlap=yes
3071       ],[
3072         vim_cv_bcopy_handles_overlap=no
3073       ],[
3074         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3075       ])
3076     ])
3078   if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3079     AC_DEFINE(USEBCOPY)
3080   else
3081     AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3082       [
3083         AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3084           [
3085             vim_cv_memcpy_handles_overlap=yes
3086           ],[
3087             vim_cv_memcpy_handles_overlap=no
3088           ],[
3089             AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3090           ])
3091       ])
3093     if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3094       AC_DEFINE(USEMEMCPY)
3095     fi
3096   fi
3100 dnl Check for multibyte locale functions
3101 dnl Find out if _Xsetlocale() is supported by libX11.
3102 dnl Check if X_LOCALE should be defined.
3104 if test "$enable_multibyte" = "yes"; then
3105   cflags_save=$CFLAGS
3106   ldflags_save=$LDFLAGS
3107   if test "x$x_includes" != "xNONE" ; then
3108     CFLAGS="$CFLAGS -I$x_includes"
3109     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3110     AC_MSG_CHECKING(whether X_LOCALE needed)
3111     AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3112         AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3113                 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3114         AC_MSG_RESULT(no))
3115   fi
3116   CFLAGS=$cflags_save
3117   LDFLAGS=$ldflags_save
3120 dnl Link with xpg4, it is said to make Korean locale working
3121 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3123 dnl Check how we can run ctags.  Default to "ctags" when nothing works.
3124 dnl --version for Exuberant ctags (preferred)
3125 dnl       Add --fields=+S to get function signatures for omni completion.
3126 dnl -t for typedefs (many ctags have this)
3127 dnl -s for static functions (Elvis ctags only?)
3128 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3129 dnl -i+m to test for older Exuberant ctags
3130 AC_MSG_CHECKING(how to create tags)
3131 test -f tags && mv tags tags.save
3132 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3133   TAGPRG="ctags -I INIT+ --fields=+S"
3134 else
3135   TAGPRG="ctags"
3136   (eval etags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3137   (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3138   (eval ctags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3139   (eval ctags -t   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3140   (eval ctags -ts  /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3141   (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3142   (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3144 test -f tags.save && mv tags.save tags
3145 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3147 dnl Check how we can run man with a section number
3148 AC_MSG_CHECKING(how to run man with a section nr)
3149 MANDEF="man"
3150 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
3151 AC_MSG_RESULT($MANDEF)
3152 if test "$MANDEF" = "man -s"; then
3153   AC_DEFINE(USEMAN_S)
3156 dnl Check if gettext() is working and if it needs -lintl
3157 AC_MSG_CHECKING(--disable-nls argument)
3158 AC_ARG_ENABLE(nls,
3159         [  --disable-nls           Don't support NLS (gettext()).], ,
3160         [enable_nls="yes"])
3162 if test "$enable_nls" = "yes"; then
3163   AC_MSG_RESULT(no)
3165   INSTALL_LANGS=install-languages
3166   AC_SUBST(INSTALL_LANGS)
3167   INSTALL_TOOL_LANGS=install-tool-languages
3168   AC_SUBST(INSTALL_TOOL_LANGS)
3170   AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3171   AC_MSG_CHECKING([for NLS])
3172   if test -f po/Makefile; then
3173     have_gettext="no"
3174     if test -n "$MSGFMT"; then
3175       AC_TRY_LINK(
3176         [#include <libintl.h>],
3177         [gettext("Test");],
3178         AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3179           olibs=$LIBS
3180           LIBS="$LIBS -lintl"
3181           AC_TRY_LINK(
3182               [#include <libintl.h>],
3183               [gettext("Test");],
3184               AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3185               AC_MSG_RESULT([gettext() doesn't work]);
3186               LIBS=$olibs))
3187     else
3188       AC_MSG_RESULT([msgfmt not found - disabled]);
3189     fi
3190     if test $have_gettext = "yes"; then
3191       AC_DEFINE(HAVE_GETTEXT)
3192       MAKEMO=yes
3193       AC_SUBST(MAKEMO)
3194       dnl this was added in GNU gettext 0.10.36
3195       AC_CHECK_FUNCS(bind_textdomain_codeset)
3196       dnl _nl_msg_cat_cntr is required for GNU gettext
3197       AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3198       AC_TRY_LINK(
3199                 [#include <libintl.h>
3200                 extern int _nl_msg_cat_cntr;],
3201                 [++_nl_msg_cat_cntr;],
3202                 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3203                 AC_MSG_RESULT([no]))
3204     fi
3205   else
3206     AC_MSG_RESULT([no "po/Makefile" - disabled]);
3207   fi
3208 else
3209   AC_MSG_RESULT(yes)
3212 dnl Check for dynamic linking loader
3213 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3214 if test x${DLL} = xdlfcn.h; then
3215   AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3216   AC_MSG_CHECKING([for dlopen()])
3217   AC_TRY_LINK(,[
3218                 extern void* dlopen();
3219                 dlopen();
3220       ],
3221       AC_MSG_RESULT(yes);
3222               AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3223       AC_MSG_RESULT(no);
3224               AC_MSG_CHECKING([for dlopen() in -ldl])
3225               olibs=$LIBS
3226               LIBS="$LIBS -ldl"
3227               AC_TRY_LINK(,[
3228                                 extern void* dlopen();
3229                                 dlopen();
3230                  ],
3231                  AC_MSG_RESULT(yes);
3232                           AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3233                  AC_MSG_RESULT(no);
3234                           LIBS=$olibs))
3235   dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3236   dnl ick :-)
3237   AC_MSG_CHECKING([for dlsym()])
3238   AC_TRY_LINK(,[
3239                 extern void* dlsym();
3240                 dlsym();
3241       ],
3242       AC_MSG_RESULT(yes);
3243               AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3244       AC_MSG_RESULT(no);
3245               AC_MSG_CHECKING([for dlsym() in -ldl])
3246               olibs=$LIBS
3247               LIBS="$LIBS -ldl"
3248               AC_TRY_LINK(,[
3249                                 extern void* dlsym();
3250                                 dlsym();
3251                  ],
3252                  AC_MSG_RESULT(yes);
3253                           AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3254                  AC_MSG_RESULT(no);
3255                           LIBS=$olibs))
3256 elif test x${DLL} = xdl.h; then
3257   AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3258   AC_MSG_CHECKING([for shl_load()])
3259   AC_TRY_LINK(,[
3260                 extern void* shl_load();
3261                 shl_load();
3262      ],
3263      AC_MSG_RESULT(yes);
3264           AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3265      AC_MSG_RESULT(no);
3266           AC_MSG_CHECKING([for shl_load() in -ldld])
3267           olibs=$LIBS
3268           LIBS="$LIBS -ldld"
3269           AC_TRY_LINK(,[
3270                         extern void* shl_load();
3271                         shl_load();
3272              ],
3273              AC_MSG_RESULT(yes);
3274                   AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3275              AC_MSG_RESULT(no);
3276                   LIBS=$olibs))
3278 AC_CHECK_HEADERS(setjmp.h)
3280 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3281   dnl -ldl must come after DynaLoader.a
3282   if echo $LIBS | grep -e '-ldl' >/dev/null; then
3283     LIBS=`echo $LIBS | sed s/-ldl//`
3284     PERL_LIBS="$PERL_LIBS -ldl"
3285   fi
3288 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3289         && test "x$GUITYPE" != "xCARBONGUI" && test "x$GUITYPE" != "xMACVIMGUI"; then
3290   AC_MSG_CHECKING(whether we need -framework Carbon)
3291   dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3292   if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
3293         || test "x$features" = "xhuge"; then
3294     LIBS="$LIBS -framework Carbon"
3295     AC_MSG_RESULT(yes)
3296   else
3297     AC_MSG_RESULT(no)
3298   fi
3301 if test "x$MACOSX" = "xyes"; then
3302   AC_MSG_CHECKING(--with-xcodecfg argument)
3303   AC_ARG_WITH(xcodecfg,
3304     [  --with-xcodecfg=CFG     Debug, Release (default: Release)],
3305     [ XCODEFLAGS="$XCODEFLAGS -configuration $withval"
3306       AC_MSG_RESULT($withval) ],
3307     [ AC_MSG_RESULT(using default) ])
3309   AC_SUBST(XCODEFLAGS)
3313 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
3314 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3315 dnl But only when making dependencies, cproto and lint don't take "-isystem".
3316 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3317 dnl the number before the version number.
3318 DEPEND_CFLAGS_FILTER=
3319 if test "$GCC" = yes; then
3320   AC_MSG_CHECKING(for GCC 3 or later)
3321   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
3322   if test "$gccmajor" -gt "2"; then
3323     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3324     AC_MSG_RESULT(yes)
3325   else
3326     AC_MSG_RESULT(no)
3327   fi
3328   dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3329   dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
3330   dnl Also remove duplicate _FORTIFY_SOURCE arguments.
3331   AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3332   if test "$gccmajor" -gt "3"; then
3333     CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
3334     AC_MSG_RESULT(yes)
3335   else
3336     AC_MSG_RESULT(no)
3337   fi
3339 AC_SUBST(DEPEND_CFLAGS_FILTER)
3341 dnl write output files
3342 AC_OUTPUT(auto/config.mk:config.mk.in)
3344 dnl vim: set sw=2 tw=78 fo+=l: