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