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