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