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