Vim 7.2b ready for testing.
[MacVim.git] / src / configure.in
blob7c65fab62d708cacc439cff10e52cf4768dc36b4
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_SCR="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-pythoninterp argument)
610 AC_ARG_ENABLE(pythoninterp,
611         [  --enable-pythoninterp   Include Python interpreter.], ,
612         [enable_pythoninterp="no"])
613 AC_MSG_RESULT($enable_pythoninterp)
614 if test "$enable_pythoninterp" = "yes"; then
615   dnl -- find the python executable
616   AC_PATH_PROG(vi_cv_path_python, python)
617   if test "X$vi_cv_path_python" != "X"; then
619     dnl -- get its version number
620     AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
621     [[vi_cv_var_python_version=`
622             ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
623     ]])
625     dnl -- it must be at least version 1.4
626     AC_MSG_CHECKING(Python is 1.4 or better)
627     if ${vi_cv_path_python} -c \
628         "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
629     then
630       AC_MSG_RESULT(yep)
632       dnl -- find where python thinks it was installed
633       AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
634       [ vi_cv_path_python_pfx=`
635             ${vi_cv_path_python} -c \
636                 "import sys; print sys.prefix"` ])
638       dnl -- and where it thinks it runs
639       AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
640       [ vi_cv_path_python_epfx=`
641             ${vi_cv_path_python} -c \
642                 "import sys; print sys.exec_prefix"` ])
644       dnl -- python's internal library path
646       AC_CACHE_VAL(vi_cv_path_pythonpath,
647       [ vi_cv_path_pythonpath=`
648             unset PYTHONPATH;
649             ${vi_cv_path_python} -c \
650                 "import sys, string; print string.join(sys.path,':')"` ])
652       dnl -- where the Python implementation library archives are
654       AC_ARG_WITH(python-config-dir,
655         [  --with-python-config-dir=PATH  Python's config directory],
656         [ vi_cv_path_python_conf="${withval}" ] )
658       AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
659       [
660         vi_cv_path_python_conf=
661         for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
662           for subdir in lib share; do
663             d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
664             if test -d "$d" && test -f "$d/config.c"; then
665               vi_cv_path_python_conf="$d"
666             fi
667           done
668         done
669       ])
671       PYTHON_CONFDIR="${vi_cv_path_python_conf}"
673       if test "X$PYTHON_CONFDIR" = "X"; then
674         AC_MSG_RESULT([can't find it!])
675       else
677         dnl -- we need to examine Python's config/Makefile too
678         dnl    see what the interpreter is built from
679         AC_CACHE_VAL(vi_cv_path_python_plibs,
680         [
681             tmp_mkf="/tmp/Makefile-conf$$"
682             cat ${PYTHON_CONFDIR}/Makefile - <<'eof' >${tmp_mkf}
684         @echo "python_MODLIBS='$(MODLIBS)'"
685         @echo "python_LIBS='$(LIBS)'"
686         @echo "python_SYSLIBS='$(SYSLIBS)'"
687         @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
689             dnl -- delete the lines from make about Entering/Leaving directory
690             eval "`cd ${PYTHON_CONFDIR} && make -f ${tmp_mkf} __ | sed '/ directory /d'`"
691             rm -f ${tmp_mkf}
692             if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
693                 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
694               vi_cv_path_python_plibs="-framework Python"
695             else
696               if test "${vi_cv_var_python_version}" = "1.4"; then
697                   vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
698               else
699                   vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
700               fi
701               vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
702               dnl remove -ltermcap, it can conflict with an earlier -lncurses
703               vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
704             fi
705         ])
707         PYTHON_LIBS="${vi_cv_path_python_plibs}"
708         if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
709           PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
710         else
711           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}"
712         fi
713         PYTHON_SRC="if_python.c"
714         dnl For Mac OSX 10.2 config.o is included in the Python library.
715         if test "x$MACOSX" = "xyes"; then
716           PYTHON_OBJ="objects/if_python.o"
717         else
718           PYTHON_OBJ="objects/if_python.o objects/py_config.o"
719         fi
720         if test "${vi_cv_var_python_version}" = "1.4"; then
721            PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
722         fi
723         PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
725         dnl On FreeBSD linking with "-pthread" is required to use threads.
726         dnl _THREAD_SAFE must be used for compiling then.
727         dnl The "-pthread" is added to $LIBS, so that the following check for
728         dnl sigaltstack() will look in libc_r (it's there in libc!).
729         dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS.  GCC
730         dnl will then define target-specific defines, e.g., -D_REENTRANT.
731         dnl Don't do this for Mac OSX, -pthread will generate a warning.
732         AC_MSG_CHECKING([if -pthread should be used])
733         threadsafe_flag=
734         thread_lib=
735         dnl if test "x$MACOSX" != "xyes"; then
736         if test "`(uname) 2>/dev/null`" != Darwin; then
737           test "$GCC" = yes && threadsafe_flag="-pthread"
738           if test "`(uname) 2>/dev/null`" = FreeBSD; then
739             threadsafe_flag="-D_THREAD_SAFE"
740             thread_lib="-pthread"
741           fi
742         fi
743         libs_save_old=$LIBS
744         if test -n "$threadsafe_flag"; then
745           cflags_save=$CFLAGS
746           CFLAGS="$CFLAGS $threadsafe_flag"
747           LIBS="$LIBS $thread_lib"
748           AC_TRY_LINK(,[ ],
749              AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
750              AC_MSG_RESULT(no); LIBS=$libs_save_old
751              )
752           CFLAGS=$cflags_save
753         else
754           AC_MSG_RESULT(no)
755         fi
757         dnl check that compiling a simple program still works with the flags
758         dnl added for Python.
759         AC_MSG_CHECKING([if compile and link flags for Python are sane])
760         cflags_save=$CFLAGS
761         libs_save=$LIBS
762         CFLAGS="$CFLAGS $PYTHON_CFLAGS"
763         LIBS="$LIBS $PYTHON_LIBS"
764         AC_TRY_LINK(,[ ],
765                AC_MSG_RESULT(yes); python_ok=yes,
766                AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
767         CFLAGS=$cflags_save
768         LIBS=$libs_save
769         if test $python_ok = yes; then
770           AC_DEFINE(FEAT_PYTHON)
771         else
772           LIBS=$libs_save_old
773           PYTHON_SRC=
774           PYTHON_OBJ=
775           PYTHON_LIBS=
776           PYTHON_CFLAGS=
777         fi
779       fi
780     else
781       AC_MSG_RESULT(too old)
782     fi
783   fi
785 AC_SUBST(PYTHON_CONFDIR)
786 AC_SUBST(PYTHON_LIBS)
787 AC_SUBST(PYTHON_GETPATH_CFLAGS)
788 AC_SUBST(PYTHON_CFLAGS)
789 AC_SUBST(PYTHON_SRC)
790 AC_SUBST(PYTHON_OBJ)
792 AC_MSG_CHECKING(--enable-tclinterp argument)
793 AC_ARG_ENABLE(tclinterp,
794         [  --enable-tclinterp      Include Tcl interpreter.], ,
795         [enable_tclinterp="no"])
796 AC_MSG_RESULT($enable_tclinterp)
798 if test "$enable_tclinterp" = "yes"; then
800   dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
801   AC_MSG_CHECKING(--with-tclsh argument)
802   AC_ARG_WITH(tclsh, [  --with-tclsh=PATH       which tclsh to use (default: tclsh8.0)],
803         tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
804         tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
805   AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
806   AC_SUBST(vi_cv_path_tcl)
808   dnl when no specific version specified, also try 8.4, 8.2 and 8.0
809   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
810     tclsh_name="tclsh8.4"
811     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
812   fi
813   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
814     tclsh_name="tclsh8.2"
815     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
816   fi
817   if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
818     tclsh_name="tclsh8.0"
819     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
820   fi
821   dnl still didn't find it, try without version number
822   if test "X$vi_cv_path_tcl" = "X"; then
823     tclsh_name="tclsh"
824     AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
825   fi
826   if test "X$vi_cv_path_tcl" != "X"; then
827     AC_MSG_CHECKING(Tcl version)
828     if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
829       tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
830       AC_MSG_RESULT($tclver - OK);
831       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 -`
833       AC_MSG_CHECKING(for location of Tcl include)
834       if test "x$MACOSX" != "xyes"; then
835         tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
836       else
837         dnl For Mac OS X 10.3, use the OS-provided framework location
838         tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
839       fi
840       TCL_INC=
841       for try in $tclinc; do
842         if test -f "$try/tcl.h"; then
843           AC_MSG_RESULT($try/tcl.h)
844           TCL_INC=$try
845           break
846         fi
847       done
848       if test -z "$TCL_INC"; then
849         AC_MSG_RESULT(<not found>)
850         SKIP_TCL=YES
851       fi
852       if test -z "$SKIP_TCL"; then
853         AC_MSG_CHECKING(for location of tclConfig.sh script)
854         if test "x$MACOSX" != "xyes"; then
855           tclcnf=`echo $tclinc | sed s/include/lib/g`
856           tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
857         else
858           dnl For Mac OS X 10.3, use the OS-provided framework location
859           tclcnf="/System/Library/Frameworks/Tcl.framework"
860         fi
861         for try in $tclcnf; do
862           if test -f $try/tclConfig.sh; then
863             AC_MSG_RESULT($try/tclConfig.sh)
864             . $try/tclConfig.sh
865             dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
866             TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
867             dnl Use $TCL_DEFS for -D_THREAD_SAFE et al.  But only use the
868             dnl "-D_ABC" items.  Watch out for -DFOO=long\ long.
869             TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'`
870             break
871           fi
872         done
873         if test -z "$TCL_LIBS"; then
874           AC_MSG_RESULT(<not found>)
875           AC_MSG_CHECKING(for Tcl library by myself)
876           tcllib=`echo $tclinc | sed s/include/lib/g`
877           tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
878           for ext in .so .a ; do
879             for ver in "" $tclver ; do
880               for try in $tcllib ; do
881                 trylib=tcl$ver$ext
882                 if test -f $try/lib$trylib ; then
883                   AC_MSG_RESULT($try/lib$trylib)
884                   TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
885                   if test "`(uname) 2>/dev/null`" = SunOS &&
886                                          uname -r | grep '^5' >/dev/null; then
887                     TCL_LIBS="$TCL_LIBS -R $try"
888                   fi
889                   break 3
890                 fi
891               done
892             done
893           done
894           if test -z "$TCL_LIBS"; then
895             AC_MSG_RESULT(<not found>)
896             SKIP_TCL=YES
897           fi
898         fi
899         if test -z "$SKIP_TCL"; then
900           AC_DEFINE(FEAT_TCL)
901           TCL_SRC=if_tcl.c
902           TCL_OBJ=objects/if_tcl.o
903           TCL_PRO=if_tcl.pro
904           TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
905         fi
906       fi
907     else
908       AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
909     fi
910   fi
912 AC_SUBST(TCL_SRC)
913 AC_SUBST(TCL_OBJ)
914 AC_SUBST(TCL_PRO)
915 AC_SUBST(TCL_CFLAGS)
916 AC_SUBST(TCL_LIBS)
918 AC_MSG_CHECKING(--enable-rubyinterp argument)
919 AC_ARG_ENABLE(rubyinterp,
920         [  --enable-rubyinterp     Include Ruby interpreter.], ,
921         [enable_rubyinterp="no"])
922 AC_MSG_RESULT($enable_rubyinterp)
923 if test "$enable_rubyinterp" = "yes"; then
924   AC_SUBST(vi_cv_path_ruby)
925   AC_PATH_PROG(vi_cv_path_ruby, ruby)
926   if test "X$vi_cv_path_ruby" != "X"; then
927     AC_MSG_CHECKING(Ruby version)
928     if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
929       AC_MSG_RESULT(OK)
930       AC_MSG_CHECKING(Ruby header files)
931       rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
932       if test "X$rubyhdrdir" != "X"; then
933         AC_MSG_RESULT($rubyhdrdir)
934         RUBY_CFLAGS="-I$rubyhdrdir"
935         rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
936         if test "X$rubylibs" != "X"; then
937           RUBY_LIBS="$rubylibs"
938         fi
939         librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
940         if test -f "$rubyhdrdir/$librubyarg"; then
941           librubyarg="$rubyhdrdir/$librubyarg"
942         else
943           rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
944           if test -f "$rubylibdir/$librubyarg"; then
945             librubyarg="$rubylibdir/$librubyarg"
946           elif test "$librubyarg" = "libruby.a"; then
947             dnl required on Mac OS 10.3 where libruby.a doesn't exist
948             librubyarg="-lruby"
949           else
950             librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
951           fi
952         fi
954         if test "X$librubyarg" != "X"; then
955           RUBY_LIBS="$librubyarg $RUBY_LIBS"
956         fi
957         rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
958         if test "X$rubyldflags" != "X"; then
959           LDFLAGS="$rubyldflags $LDFLAGS"
960         fi
961         RUBY_SRC="if_ruby.c"
962         RUBY_OBJ="objects/if_ruby.o"
963         RUBY_PRO="if_ruby.pro"
964         AC_DEFINE(FEAT_RUBY)
965       else
966         AC_MSG_RESULT(not found, disabling Ruby)
967       fi
968     else
969       AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
970     fi
971   fi
973 AC_SUBST(RUBY_SRC)
974 AC_SUBST(RUBY_OBJ)
975 AC_SUBST(RUBY_PRO)
976 AC_SUBST(RUBY_CFLAGS)
977 AC_SUBST(RUBY_LIBS)
979 AC_MSG_CHECKING(--enable-cscope argument)
980 AC_ARG_ENABLE(cscope,
981         [  --enable-cscope         Include cscope interface.], ,
982         [enable_cscope="no"])
983 AC_MSG_RESULT($enable_cscope)
984 if test "$enable_cscope" = "yes"; then
985   AC_DEFINE(FEAT_CSCOPE)
988 AC_MSG_CHECKING(--enable-workshop argument)
989 AC_ARG_ENABLE(workshop,
990         [  --enable-workshop       Include Sun Visual Workshop support.], ,
991         [enable_workshop="no"])
992 AC_MSG_RESULT($enable_workshop)
993 if test "$enable_workshop" = "yes"; then
994   AC_DEFINE(FEAT_SUN_WORKSHOP)
995   WORKSHOP_SRC="workshop.c integration.c"
996   AC_SUBST(WORKSHOP_SRC)
997   WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
998   AC_SUBST(WORKSHOP_OBJ)
999   if test "${enable_gui-xxx}" = xxx; then
1000     enable_gui=motif
1001   fi
1004 AC_MSG_CHECKING(--disable-netbeans argument)
1005 AC_ARG_ENABLE(netbeans,
1006         [  --disable-netbeans      Disable NetBeans integration support.],
1007         , [enable_netbeans="yes"])
1008 if test "$enable_netbeans" = "yes"; then
1009   AC_MSG_RESULT(no)
1010   dnl On Solaris we need the socket and nsl library.
1011   AC_CHECK_LIB(socket, socket)
1012   AC_CHECK_LIB(nsl, gethostbyname)
1013   AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1014   AC_TRY_LINK([
1015 #include <stdio.h>
1016 #include <stdlib.h>
1017 #include <stdarg.h>
1018 #include <fcntl.h>
1019 #include <netdb.h>
1020 #include <netinet/in.h>
1021 #include <errno.h>
1022 #include <sys/types.h>
1023 #include <sys/socket.h>
1024         /* Check bitfields */
1025         struct nbbuf {
1026         unsigned int  initDone:1;
1027         ushort signmaplen;
1028         };
1029             ], [
1030                 /* Check creating a socket. */
1031                 struct sockaddr_in server;
1032                 (void)socket(AF_INET, SOCK_STREAM, 0);
1033                 (void)htons(100);
1034                 (void)gethostbyname("microsoft.com");
1035                 if (errno == ECONNREFUSED)
1036                   (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1037             ],
1038         AC_MSG_RESULT(yes),
1039         AC_MSG_RESULT(no); enable_netbeans="no")
1040 else
1041   AC_MSG_RESULT(yes)
1043 if test "$enable_netbeans" = "yes"; then
1044   AC_DEFINE(FEAT_NETBEANS_INTG)
1045   NETBEANS_SRC="netbeans.c"
1046   AC_SUBST(NETBEANS_SRC)
1047   NETBEANS_OBJ="objects/netbeans.o"
1048   AC_SUBST(NETBEANS_OBJ)
1051 AC_MSG_CHECKING(--enable-sniff argument)
1052 AC_ARG_ENABLE(sniff,
1053         [  --enable-sniff          Include Sniff interface.], ,
1054         [enable_sniff="no"])
1055 AC_MSG_RESULT($enable_sniff)
1056 if test "$enable_sniff" = "yes"; then
1057   AC_DEFINE(FEAT_SNIFF)
1058   SNIFF_SRC="if_sniff.c"
1059   AC_SUBST(SNIFF_SRC)
1060   SNIFF_OBJ="objects/if_sniff.o"
1061   AC_SUBST(SNIFF_OBJ)
1064 AC_MSG_CHECKING(--enable-multibyte argument)
1065 AC_ARG_ENABLE(multibyte,
1066         [  --enable-multibyte      Include multibyte editing support.], ,
1067         [enable_multibyte="no"])
1068 AC_MSG_RESULT($enable_multibyte)
1069 if test "$enable_multibyte" = "yes"; then
1070   AC_DEFINE(FEAT_MBYTE)
1073 AC_MSG_CHECKING(--enable-hangulinput argument)
1074 AC_ARG_ENABLE(hangulinput,
1075         [  --enable-hangulinput    Include Hangul input support.], ,
1076         [enable_hangulinput="no"])
1077 AC_MSG_RESULT($enable_hangulinput)
1079 AC_MSG_CHECKING(--enable-xim argument)
1080 AC_ARG_ENABLE(xim,
1081         [  --enable-xim            Include XIM input support.],
1082         AC_MSG_RESULT($enable_xim),
1083         [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1084 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1086 AC_MSG_CHECKING(--enable-fontset argument)
1087 AC_ARG_ENABLE(fontset,
1088         [  --enable-fontset        Include X fontset output support.], ,
1089         [enable_fontset="no"])
1090 AC_MSG_RESULT($enable_fontset)
1091 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1093 test -z "$with_x" && with_x=yes
1094 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1095 if test "$with_x" = no; then
1096   AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1097 else
1098   dnl Do this check early, so that its failure can override user requests.
1100   AC_PATH_PROG(xmkmfpath, xmkmf)
1102   AC_PATH_XTRA
1104   dnl On OS390Unix the X libraries are DLLs. To use them the code must
1105   dnl be compiled with a special option.
1106   dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1107   if test "$OS390Unix" = "yes"; then
1108     CFLAGS="$CFLAGS -W c,dll"
1109     LDFLAGS="$LDFLAGS -W l,dll"
1110     X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1111   fi
1113   dnl On my HPUX system the X include dir is found, but the lib dir not.
1114   dnl This is a desparate try to fix this.
1116   if test -d "$x_includes" && test ! -d "$x_libraries"; then
1117     x_libraries=`echo "$x_includes" | sed s/include/lib/`
1118     AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1119     X_LIBS="$X_LIBS -L$x_libraries"
1120     if test "`(uname) 2>/dev/null`" = SunOS &&
1121                                          uname -r | grep '^5' >/dev/null; then
1122       X_LIBS="$X_LIBS -R $x_libraries"
1123     fi
1124   fi
1126   if test -d "$x_libraries" && test ! -d "$x_includes"; then
1127     x_includes=`echo "$x_libraries" | sed s/lib/include/`
1128     AC_MSG_RESULT(Corrected X includes to $x_includes)
1129     X_CFLAGS="$X_CFLAGS -I$x_includes"
1130   fi
1132   dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1133   X_CFLAGS="`echo $X_CFLAGS\  | sed 's%-I/usr/include %%'`"
1134   dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1135   X_LIBS="`echo $X_LIBS\  | sed 's%-L/usr/lib %%'`"
1136   dnl Same for "-R/usr/lib ".
1137   X_LIBS="`echo $X_LIBS\  | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1140   dnl Check if the X11 header files are correctly installed. On some systems
1141   dnl Xlib.h includes files that don't exist.  On some systems X11/Intrinsic.h
1142   dnl is missing.
1143   AC_MSG_CHECKING(if X11 header files can be found)
1144   cflags_save=$CFLAGS
1145   CFLAGS="$CFLAGS $X_CFLAGS"
1146   AC_TRY_COMPILE([#include <X11/Xlib.h>
1147 #include <X11/Intrinsic.h>], ,
1148         AC_MSG_RESULT(yes),
1149         AC_MSG_RESULT(no); no_x=yes)
1150   CFLAGS=$cflags_save
1152   if test "${no_x-no}" = yes; then
1153     with_x=no
1154   else
1155     AC_DEFINE(HAVE_X11)
1156     X_LIB="-lXt -lX11";
1157     AC_SUBST(X_LIB)
1159     ac_save_LDFLAGS="$LDFLAGS"
1160     LDFLAGS="-L$x_libraries $LDFLAGS"
1162     dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1163     dnl For HP-UX 10.20 it must be before -lSM -lICE
1164     AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1165                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1167     dnl Some systems need -lnsl -lsocket when testing for ICE.
1168     dnl The check above doesn't do this, try here (again).  Also needed to get
1169     dnl them after Xdmcp.  link.sh will remove them when not needed.
1170     dnl Check for other function than above to avoid the cached value
1171     AC_CHECK_LIB(ICE, IceOpenConnection,
1172                   [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1174     dnl Check for -lXpm (needed for some versions of Motif)
1175     LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1176     AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1177                 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1179     dnl Check that the X11 header files don't use implicit declarations
1180     AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1181     cflags_save=$CFLAGS
1182     CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1183     AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1184         AC_MSG_RESULT(no),
1185         CFLAGS="$CFLAGS -Wno-implicit-int"
1186         AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1187             AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1188             AC_MSG_RESULT(test failed)
1189         )
1190     )
1191     CFLAGS=$cflags_save
1193     LDFLAGS="$ac_save_LDFLAGS"
1195   fi
1198 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1200 AC_MSG_CHECKING(--enable-gui argument)
1201 AC_ARG_ENABLE(gui,
1202  [  --enable-gui[=OPTS]     X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
1204 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1205 dnl Do not use character classes for portability with old tools.
1206 enable_gui_canon=`echo "_$enable_gui" | \
1207         sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1209 dnl Skip everything by default.
1210 SKIP_GTK=YES
1211 SKIP_GTK2=YES
1212 SKIP_GNOME=YES
1213 SKIP_MOTIF=YES
1214 SKIP_ATHENA=YES
1215 SKIP_NEXTAW=YES
1216 SKIP_PHOTON=YES
1217 SKIP_CARBON=YES
1218 GUITYPE=NONE
1220 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1221   SKIP_PHOTON=
1222   case "$enable_gui_canon" in
1223     no)         AC_MSG_RESULT(no GUI support)
1224                 SKIP_PHOTON=YES ;;
1225     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1226     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1227     photon)     AC_MSG_RESULT(Photon GUI support) ;;
1228     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1229                 SKIP_PHOTON=YES ;;
1230   esac
1232 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1233   SKIP_CARBON=
1234   case "$enable_gui_canon" in
1235     no)         AC_MSG_RESULT(no GUI support)
1236                 SKIP_CARBON=YES ;;
1237     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1238     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1239     carbon)     AC_MSG_RESULT(Carbon GUI support) ;;
1240     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1241                 SKIP_CARBON=YES ;;
1242   esac
1244 else
1246   case "$enable_gui_canon" in
1247     no|none)    AC_MSG_RESULT(no GUI support) ;;
1248     yes|""|auto)        AC_MSG_RESULT(yes/auto - automatic GUI support)
1249                 SKIP_GTK=
1250                 SKIP_GTK2=
1251                 SKIP_GNOME=
1252                 SKIP_MOTIF=
1253                 SKIP_ATHENA=
1254                 SKIP_NEXTAW=
1255                 SKIP_CARBON=;;
1256     gtk)        AC_MSG_RESULT(GTK+ 1.x GUI support)
1257                 SKIP_GTK=;;
1258     gtk2)       AC_MSG_RESULT(GTK+ 2.x GUI support)
1259                 SKIP_GTK=
1260                 SKIP_GTK2=;;
1261     gnome)      AC_MSG_RESULT(GNOME 1.x GUI support)
1262                 SKIP_GNOME=
1263                 SKIP_GTK=;;
1264     gnome2)     AC_MSG_RESULT(GNOME 2.x GUI support)
1265                 SKIP_GNOME=
1266                 SKIP_GTK=
1267                 SKIP_GTK2=;;
1268     motif)      AC_MSG_RESULT(Motif GUI support)
1269                 SKIP_MOTIF=;;
1270     athena)     AC_MSG_RESULT(Athena GUI support)
1271                 SKIP_ATHENA=;;
1272     nextaw)     AC_MSG_RESULT(neXtaw GUI support)
1273                 SKIP_NEXTAW=;;
1274     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1275   esac
1279 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1280   AC_MSG_CHECKING(whether or not to look for GTK)
1281   AC_ARG_ENABLE(gtk-check,
1282         [  --enable-gtk-check      If auto-select GUI, check for GTK [default=yes]],
1283         , enable_gtk_check="yes")
1284   AC_MSG_RESULT($enable_gtk_check)
1285   if test "x$enable_gtk_check" = "xno"; then
1286     SKIP_GTK=YES
1287     SKIP_GNOME=YES
1288   fi
1291 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1292                                 -a "$enable_gui_canon" != "gnome2"; then
1293   AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1294   AC_ARG_ENABLE(gtk2-check,
1295         [  --enable-gtk2-check     If GTK GUI, check for GTK+ 2 [default=yes]],
1296         , enable_gtk2_check="yes")
1297   AC_MSG_RESULT($enable_gtk2_check)
1298   if test "x$enable_gtk2_check" = "xno"; then
1299     SKIP_GTK2=YES
1300   fi
1303 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1304                                  -a "$enable_gui_canon" != "gnome2"; then
1305   AC_MSG_CHECKING(whether or not to look for GNOME)
1306   AC_ARG_ENABLE(gnome-check,
1307         [  --enable-gnome-check    If GTK GUI, check for GNOME [default=no]],
1308         , enable_gnome_check="no")
1309   AC_MSG_RESULT($enable_gnome_check)
1310   if test "x$enable_gnome_check" = "xno"; then
1311     SKIP_GNOME=YES
1312   fi
1315 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1316   AC_MSG_CHECKING(whether or not to look for Motif)
1317   AC_ARG_ENABLE(motif-check,
1318         [  --enable-motif-check    If auto-select GUI, check for Motif [default=yes]],
1319         , enable_motif_check="yes")
1320   AC_MSG_RESULT($enable_motif_check)
1321   if test "x$enable_motif_check" = "xno"; then
1322     SKIP_MOTIF=YES
1323   fi
1326 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1327   AC_MSG_CHECKING(whether or not to look for Athena)
1328   AC_ARG_ENABLE(athena-check,
1329         [  --enable-athena-check   If auto-select GUI, check for Athena [default=yes]],
1330         , enable_athena_check="yes")
1331   AC_MSG_RESULT($enable_athena_check)
1332   if test "x$enable_athena_check" = "xno"; then
1333     SKIP_ATHENA=YES
1334   fi
1337 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1338   AC_MSG_CHECKING(whether or not to look for neXtaw)
1339   AC_ARG_ENABLE(nextaw-check,
1340         [  --enable-nextaw-check   If auto-select GUI, check for neXtaw [default=yes]],
1341         , enable_nextaw_check="yes")
1342   AC_MSG_RESULT($enable_nextaw_check);
1343   if test "x$enable_nextaw_check" = "xno"; then
1344     SKIP_NEXTAW=YES
1345   fi
1348 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1349   AC_MSG_CHECKING(whether or not to look for Carbon)
1350   AC_ARG_ENABLE(carbon-check,
1351         [  --enable-carbon-check   If auto-select GUI, check for Carbon [default=yes]],
1352         , enable_carbon_check="yes")
1353   AC_MSG_RESULT($enable_carbon_check);
1354   if test "x$enable_carbon_check" = "xno"; then
1355     SKIP_CARBON=YES
1356   fi
1360 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1361   AC_MSG_CHECKING(for Carbon GUI)
1362   dnl already did the check, just give the message
1363   AC_MSG_RESULT(yes);
1364   GUITYPE=CARBONGUI
1365   if test "$VIMNAME" = "vim"; then
1366     VIMNAME=Vim
1367   fi
1369   dnl Default install directory is not /usr/local
1370   if test x$prefix = xNONE; then
1371     prefix=/Applications
1372   fi
1374   dnl Sorry for the hard coded default
1375   datadir='${prefix}/Vim.app/Contents/Resources'
1377   dnl skip everything else
1378   SKIP_GTK=YES;
1379   SKIP_GTK2=YES;
1380   SKIP_GNOME=YES;
1381   SKIP_MOTIF=YES;
1382   SKIP_ATHENA=YES;
1383   SKIP_NEXTAW=YES;
1384   SKIP_PHOTON=YES;
1385   SKIP_CARBON=YES
1389 dnl Get the cflags and libraries from the gtk-config script
1392 dnl define an autoconf function to check for a specified version of GTK, and
1393 dnl try to compile/link a GTK program.  this gets used once for GTK 1.1.16.
1395 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1396 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1398 AC_DEFUN(AM_PATH_GTK,
1400   if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1401   {
1402     min_gtk_version=ifelse([$1], ,0.99.7,$1)
1403     AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1404     no_gtk=""
1405     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1406           && $PKG_CONFIG --exists gtk+-2.0; then
1407     {
1408       dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1409       dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1410       dnl something like that.
1411       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1412       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1413       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1414       gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1415              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1416       gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1417              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1418       gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1419              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1420     }
1421     elif test "X$GTK_CONFIG" != "Xno"; then
1422     {
1423       GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1424       GTK_LIBDIR=
1425       GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1426       gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1427              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1428       gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1429              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1430       gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1431              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1432     }
1433     else
1434       no_gtk=yes
1435     fi
1437     if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1438     {
1439       ac_save_CFLAGS="$CFLAGS"
1440       ac_save_LIBS="$LIBS"
1441       CFLAGS="$CFLAGS $GTK_CFLAGS"
1442       LIBS="$LIBS $GTK_LIBS"
1444       dnl
1445       dnl Now check if the installed GTK is sufficiently new. (Also sanity
1446       dnl checks the results of gtk-config to some extent
1447       dnl
1448       rm -f conf.gtktest
1449       AC_TRY_RUN([
1450 #include <gtk/gtk.h>
1451 #include <stdio.h>
1452 #if STDC_HEADERS
1453 # include <stdlib.h>
1454 # include <stddef.h>
1455 #endif
1458 main ()
1460 int major, minor, micro;
1461 char *tmp_version;
1463 system ("touch conf.gtktest");
1465 /* HP/UX 9 (%@#!) writes to sscanf strings */
1466 tmp_version = g_strdup("$min_gtk_version");
1467 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1468    printf("%s, bad version string\n", "$min_gtk_version");
1469    exit(1);
1472 if ((gtk_major_version > major) ||
1473     ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1474     ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1475                                      (gtk_micro_version >= micro)))
1477     return 0;
1479 return 1;
1481 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1482       CFLAGS="$ac_save_CFLAGS"
1483       LIBS="$ac_save_LIBS"
1484     }
1485     fi
1486     if test "x$no_gtk" = x ; then
1487       if test "x$enable_gtktest" = "xyes"; then
1488         AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1489       else
1490         AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1491       fi
1492       ifelse([$2], , :, [$2])
1493     else
1494     {
1495       AC_MSG_RESULT(no)
1496       GTK_CFLAGS=""
1497       GTK_LIBS=""
1498       ifelse([$3], , :, [$3])
1499     }
1500     fi
1501   }
1502   else
1503     GTK_CFLAGS=""
1504     GTK_LIBS=""
1505     ifelse([$3], , :, [$3])
1506   fi
1507   AC_SUBST(GTK_CFLAGS)
1508   AC_SUBST(GTK_LIBS)
1509   rm -f conf.gtktest
1512 dnl ---------------------------------------------------------------------------
1513 dnl gnome
1514 dnl ---------------------------------------------------------------------------
1515 AC_DEFUN([GNOME_INIT_HOOK],
1517   AC_SUBST(GNOME_LIBS)
1518   AC_SUBST(GNOME_LIBDIR)
1519   AC_SUBST(GNOME_INCLUDEDIR)
1521   AC_ARG_WITH(gnome-includes,
1522     [  --with-gnome-includes=DIR Specify location of GNOME headers],
1523     [CFLAGS="$CFLAGS -I$withval"]
1524   )
1526   AC_ARG_WITH(gnome-libs,
1527     [  --with-gnome-libs=DIR   Specify location of GNOME libs],
1528     [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1529   )
1531   AC_ARG_WITH(gnome,
1532     [  --with-gnome            Specify prefix for GNOME files],
1533     if test x$withval = xyes; then
1534       want_gnome=yes
1535       ifelse([$1], [], :, [$1])
1536     else
1537       if test "x$withval" = xno; then
1538         want_gnome=no
1539       else
1540         want_gnome=yes
1541         LDFLAGS="$LDFLAGS -L$withval/lib"
1542         CFLAGS="$CFLAGS -I$withval/include"
1543         gnome_prefix=$withval/lib
1544       fi
1545     fi,
1546     want_gnome=yes)
1548   if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1549   {
1550     AC_MSG_CHECKING(for libgnomeui-2.0)
1551     if $PKG_CONFIG --exists libgnomeui-2.0; then
1552       AC_MSG_RESULT(yes)
1553       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1554       GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1555       GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1557       dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1558       dnl This might not be the right way but it works for me...
1559       AC_MSG_CHECKING(for FreeBSD)
1560       if test "`(uname) 2>/dev/null`" = FreeBSD; then
1561         AC_MSG_RESULT(yes, adding -pthread)
1562         GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1563         GNOME_LIBS="$GNOME_LIBS -pthread"
1564       else
1565         AC_MSG_RESULT(no)
1566       fi
1567       $1
1568     else
1569       AC_MSG_RESULT(not found)
1570       if test "x$2" = xfail; then
1571         AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1572       fi
1573     fi
1574   }
1575   elif test "x$want_gnome" = xyes; then
1576   {
1577     AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1578     if test "$GNOME_CONFIG" = "no"; then
1579       no_gnome_config="yes"
1580     else
1581       AC_MSG_CHECKING(if $GNOME_CONFIG works)
1582       if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1583         AC_MSG_RESULT(yes)
1584         GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1585         GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1586         GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1587         $1
1588       else
1589         AC_MSG_RESULT(no)
1590         no_gnome_config="yes"
1591       fi
1592     fi
1594     if test x$exec_prefix = xNONE; then
1595       if test x$prefix = xNONE; then
1596         gnome_prefix=$ac_default_prefix/lib
1597       else
1598         gnome_prefix=$prefix/lib
1599       fi
1600     else
1601       gnome_prefix=`eval echo \`echo $libdir\``
1602     fi
1604     if test "$no_gnome_config" = "yes"; then
1605       AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1606       if test -f $gnome_prefix/gnomeConf.sh; then
1607         AC_MSG_RESULT(found)
1608         echo "loading gnome configuration from" \
1609           "$gnome_prefix/gnomeConf.sh"
1610         . $gnome_prefix/gnomeConf.sh
1611         $1
1612       else
1613         AC_MSG_RESULT(not found)
1614         if test x$2 = xfail; then
1615           AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1616         fi
1617       fi
1618     fi
1619   }
1620   fi
1623 AC_DEFUN([GNOME_INIT],[
1624         GNOME_INIT_HOOK([],fail)
1628 dnl ---------------------------------------------------------------------------
1629 dnl Check for GTK.  First checks for gtk-config, cause it needs that to get the
1630 dnl correct compiler flags.  Then checks for GTK 1.1.16.  If that fails, then
1631 dnl it checks for 1.0.6.  If both fail, then continue on for Motif as before...
1632 dnl ---------------------------------------------------------------------------
1633 if test -z "$SKIP_GTK"; then
1635   AC_MSG_CHECKING(--with-gtk-prefix argument)
1636   AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
1637         gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1638         gtk_config_prefix=""; AC_MSG_RESULT(no))
1640   AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1641   AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1642         gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1643         gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1645   AC_MSG_CHECKING(--disable-gtktest argument)
1646   AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
1647         , enable_gtktest=yes)
1648   if test "x$enable_gtktest" = "xyes" ; then
1649     AC_MSG_RESULT(gtk test enabled)
1650   else
1651     AC_MSG_RESULT(gtk test disabled)
1652   fi
1654   if test "x$gtk_config_prefix" != "x" ; then
1655     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1656     GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1657   fi
1658   if test "x$gtk_config_exec_prefix" != "x" ; then
1659     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1660     GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1661   fi
1662   if test "X$GTK_CONFIG" = "X"; then
1663     AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1664     if test "X$GTK_CONFIG" = "Xno"; then
1665       dnl Some distributions call it gtk12-config, annoying!
1666       AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1667       GTK_CONFIG="$GTK12_CONFIG"
1668     fi
1669   else
1670     AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1671   fi
1672   if test "X$PKG_CONFIG" = "X"; then
1673     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1674   fi
1676   if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1677     dnl First try finding version 2.2.0 or later.  The 2.0.x series has
1678     dnl problems (bold fonts, --remote doesn't work).
1679     if test "X$SKIP_GTK2" != "XYES"; then
1680       AM_PATH_GTK(2.2.0,
1681                   [GUI_LIB_LOC="$GTK_LIBDIR"
1682                    GTK_LIBNAME="$GTK_LIBS"
1683                   GUI_INC_LOC="$GTK_CFLAGS"], )
1684       if test "x$GTK_CFLAGS" != "x"; then
1685         SKIP_ATHENA=YES
1686         SKIP_NEXTAW=YES
1687         SKIP_MOTIF=YES
1688         GUITYPE=GTK
1689         AC_SUBST(GTK_LIBNAME)
1690       fi
1691     fi
1693     dnl If there is no 2.2.0 or later try the 1.x.x series.  We require at
1694     dnl least GTK 1.1.16.  1.0.6 doesn't work.  1.1.1 to 1.1.15
1695     dnl were test versions.
1696     if test "x$GUITYPE" != "xGTK"; then
1697       SKIP_GTK2=YES
1698       AM_PATH_GTK(1.1.16,
1699                   [GTK_LIBNAME="$GTK_LIBS"
1700                   GUI_INC_LOC="$GTK_CFLAGS"], )
1701       if test "x$GTK_CFLAGS" != "x"; then
1702         SKIP_ATHENA=YES
1703         SKIP_NEXTAW=YES
1704         SKIP_MOTIF=YES
1705         GUITYPE=GTK
1706         AC_SUBST(GTK_LIBNAME)
1707       fi
1708     fi
1709   fi
1710   dnl Give a warning if GTK is older than 1.2.3
1711   if test "x$GUITYPE" = "xGTK"; then
1712     if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1713          -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1714       AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1715     else
1716     {
1717       if test "0$gtk_major_version" -ge 2; then
1718         AC_DEFINE(HAVE_GTK2)
1719         if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1720                 || test "0$gtk_minor_version" -ge 2 \
1721                 || test "0$gtk_major_version" -gt 2; then
1722           AC_DEFINE(HAVE_GTK_MULTIHEAD)
1723         fi
1724       fi
1725       dnl
1726       dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1727       dnl
1728       if test -z "$SKIP_GNOME"; then
1729       {
1730         GNOME_INIT_HOOK([have_gnome=yes])
1731         if test x$have_gnome = xyes ; then
1732           AC_DEFINE(FEAT_GUI_GNOME)
1733           GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1734           GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1735         fi
1736       }
1737       fi
1738     }
1739     fi
1740   fi
1743 dnl Check for Motif include files location.
1744 dnl The LAST one found is used, this makes the highest version to be used,
1745 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1747 if test -z "$SKIP_MOTIF"; then
1748   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"
1749   dnl Remove "-I" from before $GUI_INC_LOC if it's there
1750   GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1752   AC_MSG_CHECKING(for location of Motif GUI includes)
1753   gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1754   GUI_INC_LOC=
1755   for try in $gui_includes; do
1756     if test -f "$try/Xm/Xm.h"; then
1757       GUI_INC_LOC=$try
1758     fi
1759   done
1760   if test -n "$GUI_INC_LOC"; then
1761     if test "$GUI_INC_LOC" = /usr/include; then
1762       GUI_INC_LOC=
1763       AC_MSG_RESULT(in default path)
1764     else
1765       AC_MSG_RESULT($GUI_INC_LOC)
1766     fi
1767   else
1768     AC_MSG_RESULT(<not found>)
1769     SKIP_MOTIF=YES
1770   fi
1773 dnl Check for Motif library files location.  In the same order as the include
1774 dnl files, to avoid a mixup if several versions are present
1776 if test -z "$SKIP_MOTIF"; then
1777   AC_MSG_CHECKING(--with-motif-lib argument)
1778   AC_ARG_WITH(motif-lib,
1779   [  --with-motif-lib=STRING   Library for Motif ],
1780   [ MOTIF_LIBNAME="${withval}" ] )
1782   if test -n "$MOTIF_LIBNAME"; then
1783     AC_MSG_RESULT($MOTIF_LIBNAME)
1784     GUI_LIB_LOC=
1785   else
1786     AC_MSG_RESULT(no)
1788     dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1789     GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1791     AC_MSG_CHECKING(for location of Motif GUI libs)
1792     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"
1793     GUI_LIB_LOC=
1794     for try in $gui_libs; do
1795       for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1796         if test -f "$libtry"; then
1797           GUI_LIB_LOC=$try
1798         fi
1799       done
1800     done
1801     if test -n "$GUI_LIB_LOC"; then
1802       dnl Remove /usr/lib, it causes trouble on some systems
1803       if test "$GUI_LIB_LOC" = /usr/lib; then
1804         GUI_LIB_LOC=
1805         AC_MSG_RESULT(in default path)
1806       else
1807         if test -n "$GUI_LIB_LOC"; then
1808           AC_MSG_RESULT($GUI_LIB_LOC)
1809           if test "`(uname) 2>/dev/null`" = SunOS &&
1810                                          uname -r | grep '^5' >/dev/null; then
1811             GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1812           fi
1813         fi
1814       fi
1815       MOTIF_LIBNAME=-lXm
1816     else
1817       AC_MSG_RESULT(<not found>)
1818       SKIP_MOTIF=YES
1819     fi
1820   fi
1823 if test -z "$SKIP_MOTIF"; then
1824   SKIP_ATHENA=YES
1825   SKIP_NEXTAW=YES
1826   GUITYPE=MOTIF
1827   AC_SUBST(MOTIF_LIBNAME)
1830 dnl Check if the Athena files can be found
1832 GUI_X_LIBS=
1834 if test -z "$SKIP_ATHENA"; then
1835   AC_MSG_CHECKING(if Athena header files can be found)
1836   cflags_save=$CFLAGS
1837   CFLAGS="$CFLAGS $X_CFLAGS"
1838   AC_TRY_COMPILE([
1839 #include <X11/Intrinsic.h>
1840 #include <X11/Xaw/Paned.h>], ,
1841         AC_MSG_RESULT(yes),
1842         AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1843   CFLAGS=$cflags_save
1846 if test -z "$SKIP_ATHENA"; then
1847   GUITYPE=ATHENA
1850 if test -z "$SKIP_NEXTAW"; then
1851   AC_MSG_CHECKING(if neXtaw header files can be found)
1852   cflags_save=$CFLAGS
1853   CFLAGS="$CFLAGS $X_CFLAGS"
1854   AC_TRY_COMPILE([
1855 #include <X11/Intrinsic.h>
1856 #include <X11/neXtaw/Paned.h>], ,
1857         AC_MSG_RESULT(yes),
1858         AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1859   CFLAGS=$cflags_save
1862 if test -z "$SKIP_NEXTAW"; then
1863   GUITYPE=NEXTAW
1866 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1867   dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1868   dnl Avoid adding it when it twice
1869   if test -n "$GUI_INC_LOC"; then
1870     GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1871   fi
1872   if test -n "$GUI_LIB_LOC"; then
1873     GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1874   fi
1876   dnl Check for -lXext and then for -lXmu
1877   ldflags_save=$LDFLAGS
1878   LDFLAGS="$X_LIBS $LDFLAGS"
1879   AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1880                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1881   dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1882   AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1883                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1884   AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1885                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1886   AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1887                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1888   if test -z "$SKIP_MOTIF"; then
1889     AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1890                 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1891   fi
1892   LDFLAGS=$ldflags_save
1894   dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1895   AC_MSG_CHECKING(for extra X11 defines)
1896   NARROW_PROTO=
1897   rm -fr conftestdir
1898   if mkdir conftestdir; then
1899     cd conftestdir
1900     cat > Imakefile <<'EOF'
1901 acfindx:
1902         @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1904     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1905       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1906     fi
1907     cd ..
1908     rm -fr conftestdir
1909   fi
1910   if test -z "$NARROW_PROTO"; then
1911     AC_MSG_RESULT(no)
1912   else
1913     AC_MSG_RESULT($NARROW_PROTO)
1914   fi
1915   AC_SUBST(NARROW_PROTO)
1918 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1919 dnl use the X11 include path
1920 if test "$enable_xsmp" = "yes"; then
1921   cppflags_save=$CPPFLAGS
1922   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1923   AC_CHECK_HEADERS(X11/SM/SMlib.h)
1924   CPPFLAGS=$cppflags_save
1928 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1929   dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1930   cppflags_save=$CPPFLAGS
1931   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1932   AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1934   dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1935   if test ! "$enable_xim" = "no"; then
1936     AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1937     AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1938                   AC_MSG_RESULT(yes),
1939                   AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1940   fi
1941   CPPFLAGS=$cppflags_save
1943   dnl automatically enable XIM when hangul input isn't enabled
1944   if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1945                 -a "x$GUITYPE" != "xNONE" ; then
1946     AC_MSG_RESULT(X GUI selected; xim has been enabled)
1947     enable_xim="yes"
1948   fi
1951 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1952   cppflags_save=$CPPFLAGS
1953   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1954 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1955   AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1956   AC_TRY_COMPILE([
1957 #include <X11/Intrinsic.h>
1958 #include <X11/Xmu/Editres.h>],
1959                       [int i; i = 0;],
1960               AC_MSG_RESULT(yes)
1961                       AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1962               AC_MSG_RESULT(no))
1963   CPPFLAGS=$cppflags_save
1966 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1967 if test -z "$SKIP_MOTIF"; then
1968   cppflags_save=$CPPFLAGS
1969   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1970   AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
1971                    Xm/UnhighlightT.h Xm/Notebook.h)
1973   if test $ac_cv_header_Xm_XpmP_h = yes; then
1974     dnl Solaris uses XpmAttributes_21, very annoying.
1975     AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1976     AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
1977         AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
1978         AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1979         )
1980   else
1981     AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1982   fi
1983   CPPFLAGS=$cppflags_save
1986 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
1987   AC_MSG_RESULT(no GUI selected; xim has been disabled)
1988   enable_xim="no"
1990 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
1991   AC_MSG_RESULT(no GUI selected; fontset has been disabled)
1992   enable_fontset="no"
1994 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
1995   AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
1996   enable_fontset="no"
1999 if test -z "$SKIP_PHOTON"; then
2000   GUITYPE=PHOTONGUI
2003 AC_SUBST(GUI_INC_LOC)
2004 AC_SUBST(GUI_LIB_LOC)
2005 AC_SUBST(GUITYPE)
2006 AC_SUBST(GUI_X_LIBS)
2008 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2009   AC_MSG_ERROR([cannot use workshop without Motif])
2012 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2013 if test "$enable_xim" = "yes"; then
2014   AC_DEFINE(FEAT_XIM)
2016 if test "$enable_fontset" = "yes"; then
2017   AC_DEFINE(FEAT_XFONTSET)
2021 dnl ---------------------------------------------------------------------------
2022 dnl end of GUI-checking
2023 dnl ---------------------------------------------------------------------------
2026 dnl Only really enable hangul input when GUI and XFONTSET are available
2027 if test "$enable_hangulinput" = "yes"; then
2028   if test "x$GUITYPE" = "xNONE"; then
2029     AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2030     enable_hangulinput=no
2031   else
2032     AC_DEFINE(FEAT_HANGULIN)
2033     HANGULIN_SRC=hangulin.c
2034     AC_SUBST(HANGULIN_SRC)
2035     HANGULIN_OBJ=objects/hangulin.o
2036     AC_SUBST(HANGULIN_OBJ)
2037   fi
2040 dnl Checks for libraries and include files.
2042 AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2043   [
2044     AC_RUN_IFELSE([[
2045 #include "confdefs.h"
2046 #include <ctype.h>
2047 #if STDC_HEADERS
2048 # include <stdlib.h>
2049 # include <stddef.h>
2050 #endif
2051 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2052   ]],[
2053     vim_cv_toupper_broken=yes
2054   ],[
2055     vim_cv_toupper_broken=no
2056   ],[
2057     AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2058   ])])
2060 if test "x$vim_cv_toupper_broken" = "xyes" ; then
2061   AC_DEFINE(BROKEN_TOUPPER)
2064 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2065 AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
2066         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2067         AC_MSG_RESULT(no))
2069 dnl Checks for header files.
2070 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2071 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2072 if test "$HAS_ELF" = 1; then
2073   AC_CHECK_LIB(elf, main)
2076 AC_HEADER_DIRENT
2078 dnl If sys/wait.h is not found it might still exist but not be POSIX
2079 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2080 if test $ac_cv_header_sys_wait_h = no; then
2081   AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2082   AC_TRY_COMPILE([#include <sys/wait.h>],
2083                         [union wait xx, yy; xx = yy],
2084                 AC_MSG_RESULT(yes)
2085                         AC_DEFINE(HAVE_SYS_WAIT_H)
2086                         AC_DEFINE(HAVE_UNION_WAIT),
2087                 AC_MSG_RESULT(no))
2090 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2091         termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2092         iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
2093         sys/resource.h sys/systeminfo.h locale.h \
2094         sys/stream.h termios.h libc.h sys/statfs.h \
2095         poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2096         libgen.h util/debug.h util/msg18n.h frame.h \
2097         sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
2099 dnl sys/ptem.h depends on sys/stream.h on Solaris
2100 AC_CHECK_HEADERS(sys/ptem.h, [], [],
2101 [#if defined HAVE_SYS_STREAM_H
2102 #  include <sys/stream.h>
2103 #endif])
2106 dnl pthread_np.h may exist but can only be used after including pthread.h
2107 AC_MSG_CHECKING([for pthread_np.h])
2108 AC_TRY_COMPILE([
2109 #include <pthread.h>
2110 #include <pthread_np.h>],
2111                       [int i; i = 0;],
2112               AC_MSG_RESULT(yes)
2113                       AC_DEFINE(HAVE_PTHREAD_NP_H),
2114               AC_MSG_RESULT(no))
2116 AC_CHECK_HEADERS(strings.h)
2117 if test "x$MACOSX" = "xyes"; then
2118   dnl The strings.h file on OS/X contains a warning and nothing useful.
2119   AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2120 else
2122 dnl Check if strings.h and string.h can both be included when defined.
2123 AC_MSG_CHECKING([if strings.h can be included after string.h])
2124 cppflags_save=$CPPFLAGS
2125 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2126 AC_TRY_COMPILE([
2127 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2128 # define _NO_PROTO      /* like in os_unix.h, causes conflict for AIX (Winn) */
2129                         /* but don't do it on AIX 5.1 (Uribarri) */
2130 #endif
2131 #ifdef HAVE_XM_XM_H
2132 # include <Xm/Xm.h>     /* This breaks it for HP-UX 11 (Squassabia) */
2133 #endif
2134 #ifdef HAVE_STRING_H
2135 # include <string.h>
2136 #endif
2137 #if defined(HAVE_STRINGS_H)
2138 # include <strings.h>
2139 #endif
2140                 ], [int i; i = 0;],
2141                 AC_MSG_RESULT(yes),
2142                 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2143                 AC_MSG_RESULT(no))
2144 CPPFLAGS=$cppflags_save
2147 dnl Checks for typedefs, structures, and compiler characteristics.
2148 AC_PROG_GCC_TRADITIONAL
2149 AC_C_CONST
2150 AC_TYPE_MODE_T
2151 AC_TYPE_OFF_T
2152 AC_TYPE_PID_T
2153 AC_TYPE_SIZE_T
2154 AC_TYPE_UID_T
2155 AC_HEADER_TIME
2156 AC_CHECK_TYPE(ino_t, long)
2157 AC_CHECK_TYPE(dev_t, unsigned)
2159 AC_MSG_CHECKING(for rlim_t)
2160 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2161   AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2162 else
2163   AC_EGREP_CPP(dnl
2164 changequote(<<,>>)dnl
2165 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2166 changequote([,]),
2167   [
2168 #include <sys/types.h>
2169 #if STDC_HEADERS
2170 # include <stdlib.h>
2171 # include <stddef.h>
2172 #endif
2173 #ifdef HAVE_SYS_RESOURCE_H
2174 # include <sys/resource.h>
2175 #endif
2176           ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2177           AC_MSG_RESULT($ac_cv_type_rlim_t)
2179 if test $ac_cv_type_rlim_t = no; then
2180   cat >> confdefs.h <<\EOF
2181 #define rlim_t unsigned long
2185 AC_MSG_CHECKING(for stack_t)
2186 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2187   AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2188 else
2189   AC_EGREP_CPP(stack_t,
2190   [
2191 #include <sys/types.h>
2192 #if STDC_HEADERS
2193 # include <stdlib.h>
2194 # include <stddef.h>
2195 #endif
2196 #include <signal.h>
2197           ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2198           AC_MSG_RESULT($ac_cv_type_stack_t)
2200 if test $ac_cv_type_stack_t = no; then
2201   cat >> confdefs.h <<\EOF
2202 #define stack_t struct sigaltstack
2206 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2207 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2208 AC_TRY_COMPILE([
2209 #include <sys/types.h>
2210 #if STDC_HEADERS
2211 # include <stdlib.h>
2212 # include <stddef.h>
2213 #endif
2214 #include <signal.h>
2215 #include "confdefs.h"
2216                         ], [stack_t sigstk; sigstk.ss_base = 0; ],
2217         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2218         AC_MSG_RESULT(no))
2220 olibs="$LIBS"
2221 AC_MSG_CHECKING(--with-tlib argument)
2222 AC_ARG_WITH(tlib, [  --with-tlib=library     terminal library to be used ],)
2223 if test -n "$with_tlib"; then
2224   AC_MSG_RESULT($with_tlib)
2225   LIBS="$LIBS -l$with_tlib"
2226   AC_MSG_CHECKING(for linking with $with_tlib library)
2227   AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2228   dnl Need to check for tgetent() below.
2229   olibs="$LIBS"
2230 else
2231   AC_MSG_RESULT([empty: automatic terminal library selection])
2232   dnl  On HP-UX 10.10 termcap or termlib should be used instead of
2233   dnl  curses, because curses is much slower.
2234   dnl  Newer versions of ncurses are preferred over anything.
2235   dnl  Older versions of ncurses have bugs, get a new one!
2236   dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
2237   dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
2238   case "`uname -s 2>/dev/null`" in
2239         OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
2240         *)      tlibs="ncurses termlib termcap curses";;
2241   esac
2242   for libname in $tlibs; do
2243     AC_CHECK_LIB(${libname}, tgetent,,)
2244     if test "x$olibs" != "x$LIBS"; then
2245       dnl It's possible that a library is found but it doesn't work
2246       dnl e.g., shared library that cannot be found
2247       dnl compile and run a test program to be sure
2248       AC_TRY_RUN([
2249 #ifdef HAVE_TERMCAP_H
2250 # include <termcap.h>
2251 #endif
2252 #if STDC_HEADERS
2253 # include <stdlib.h>
2254 # include <stddef.h>
2255 #endif
2256 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2257                           res="OK", res="FAIL", res="FAIL")
2258       if test "$res" = "OK"; then
2259         break
2260       fi
2261       AC_MSG_RESULT($libname library is not usable)
2262       LIBS="$olibs"
2263     fi
2264   done
2265   if test "x$olibs" = "x$LIBS"; then
2266     AC_MSG_RESULT(no terminal library found)
2267   fi
2270 if test "x$olibs" = "x$LIBS"; then
2271   AC_MSG_CHECKING([for tgetent()])
2272   AC_TRY_LINK([],
2273       [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2274         AC_MSG_RESULT(yes),
2275         AC_MSG_ERROR([NOT FOUND!
2276       You need to install a terminal library; for example ncurses.
2277       Or specify the name of the library with --with-tlib.]))
2280 AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2281   [
2282     AC_RUN_IFELSE([[
2283 #include "confdefs.h"
2284 #ifdef HAVE_TERMCAP_H
2285 # include <termcap.h>
2286 #endif
2287 #ifdef HAVE_STRING_H
2288 # include <string.h>
2289 #endif
2290 #if STDC_HEADERS
2291 # include <stdlib.h>
2292 # include <stddef.h>
2293 #endif
2294 main()
2295 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2296     ]],[
2297       vim_cv_terminfo=no
2298     ],[
2299       vim_cv_terminfo=yes
2300     ],[
2301       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2302     ])
2303   ])
2305 if test "x$vim_cv_terminfo" = "xyes" ; then
2306   AC_DEFINE(TERMINFO)
2309 if test "x$olibs" != "x$LIBS"; then
2310   AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2311     [
2312       AC_RUN_IFELSE([[
2313 #include "confdefs.h"
2314 #ifdef HAVE_TERMCAP_H
2315 # include <termcap.h>
2316 #endif
2317 #if STDC_HEADERS
2318 # include <stdlib.h>
2319 # include <stddef.h>
2320 #endif
2321 main()
2322 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2323       ]],[
2324         vim_cv_tgent=zero
2325       ],[
2326         vim_cv_tgent=non-zero
2327       ],[
2328         AC_MSG_ERROR(failed to compile test program.)
2329       ])
2330     ])
2331   
2332   if test "x$vim_cv_tgent" = "xzero" ; then
2333     AC_DEFINE(TGETENT_ZERO_ERR, 0)
2334   fi
2337 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2338 AC_TRY_LINK([
2339 #ifdef HAVE_TERMCAP_H
2340 # include <termcap.h>
2341 #endif
2342                         ], [ospeed = 20000],
2343         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2344         [AC_MSG_RESULT(no)
2345         AC_MSG_CHECKING(whether ospeed can be extern)
2346         AC_TRY_LINK([
2347 #ifdef HAVE_TERMCAP_H
2348 # include <termcap.h>
2349 #endif
2350 extern short ospeed;
2351                         ], [ospeed = 20000],
2352                 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2353                 AC_MSG_RESULT(no))]
2354         )
2356 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2357 AC_TRY_LINK([
2358 #ifdef HAVE_TERMCAP_H
2359 # include <termcap.h>
2360 #endif
2361                         ], [if (UP == 0 && BC == 0) PC = 1],
2362         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2363         [AC_MSG_RESULT(no)
2364         AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2365         AC_TRY_LINK([
2366 #ifdef HAVE_TERMCAP_H
2367 # include <termcap.h>
2368 #endif
2369 extern char *UP, *BC, PC;
2370                         ], [if (UP == 0 && BC == 0) PC = 1],
2371                 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2372                 AC_MSG_RESULT(no))]
2373         )
2375 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2376 AC_TRY_COMPILE([
2377 #ifdef HAVE_TERMCAP_H
2378 # include <termcap.h>
2379 #endif
2380                         ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2381         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2382         AC_MSG_RESULT(no))
2384 dnl On some SCO machines sys/select redefines struct timeval
2385 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2386 AC_TRY_COMPILE([
2387 #include <sys/types.h>
2388 #include <sys/time.h>
2389 #include <sys/select.h>], ,
2390           AC_MSG_RESULT(yes)
2391                         AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2392           AC_MSG_RESULT(no))
2394 dnl AC_DECL_SYS_SIGLIST
2396 dnl Checks for pty.c (copied from screen) ==========================
2397 AC_MSG_CHECKING(for /dev/ptc)
2398 if test -r /dev/ptc; then
2399   AC_DEFINE(HAVE_DEV_PTC)
2400   AC_MSG_RESULT(yes)
2401 else
2402   AC_MSG_RESULT(no)
2405 AC_MSG_CHECKING(for SVR4 ptys)
2406 if test -c /dev/ptmx ; then
2407   AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2408         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2409         AC_MSG_RESULT(no))
2410 else
2411   AC_MSG_RESULT(no)
2414 AC_MSG_CHECKING(for ptyranges)
2415 if test -d /dev/ptym ; then
2416   pdir='/dev/ptym'
2417 else
2418   pdir='/dev'
2420 dnl SCO uses ptyp%d
2421 AC_EGREP_CPP(yes,
2422 [#ifdef M_UNIX
2423    yes;
2424 #endif
2425         ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2426 dnl if test -c /dev/ptyp19; then
2427 dnl ptys=`echo /dev/ptyp??`
2428 dnl else
2429 dnl ptys=`echo $pdir/pty??`
2430 dnl fi
2431 if test "$ptys" != "$pdir/pty??" ; then
2432   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2433   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
2434   AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2435   AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2436   AC_MSG_RESULT([$p0 / $p1])
2437 else
2438   AC_MSG_RESULT([don't know])
2441 dnl    ****  pty mode/group handling ****
2443 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2444 rm -f conftest_grp
2445 AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2446   [
2447     AC_RUN_IFELSE([[
2448 #include "confdefs.h"
2449 #include <sys/types.h>
2450 #if STDC_HEADERS
2451 # include <stdlib.h>
2452 # include <stddef.h>
2453 #endif
2454 #ifdef HAVE_UNISTD_H
2455 #include <unistd.h>
2456 #endif
2457 #include <sys/stat.h>
2458 #include <stdio.h>
2459 main()
2461   struct stat sb;
2462   char *x,*ttyname();
2463   int om, m;
2464   FILE *fp;
2466   if (!(x = ttyname(0))) exit(1);
2467   if (stat(x, &sb)) exit(1);
2468   om = sb.st_mode;
2469   if (om & 002) exit(0);
2470   m = system("mesg y");
2471   if (m == -1 || m == 127) exit(1);
2472   if (stat(x, &sb)) exit(1);
2473   m = sb.st_mode;
2474   if (chmod(x, om)) exit(1);
2475   if (m & 002) exit(0);
2476   if (sb.st_gid == getgid()) exit(1);
2477   if (!(fp=fopen("conftest_grp", "w")))
2478     exit(1);
2479   fprintf(fp, "%d\n", sb.st_gid);
2480   fclose(fp);
2481   exit(0);
2483     ]],[
2484       if test -f conftest_grp; then
2485         vim_cv_tty_group=`cat conftest_grp`
2486         if test "x$vim_cv_tty_mode" = "x" ; then
2487           vim_cv_tty_mode=0620
2488         fi
2489         AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2490       else
2491         vim_cv_tty_group=world
2492         AC_MSG_RESULT([ptys are world accessable])
2493       fi
2494     ],[
2495       vim_cv_tty_group=world
2496       AC_MSG_RESULT([can't determine - assume ptys are world accessable])
2497     ],[
2498       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2499     ])
2500   ])
2501 rm -f conftest_grp
2503 if test "x$vim_cv_tty_group" != "xworld" ; then
2504   AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2505   if test "x$vim_cv_tty_mode" = "x" ; then
2506     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)])
2507   else
2508     AC_DEFINE(PTYMODE, 0620)
2509   fi
2512 dnl Checks for library functions. ===================================
2514 AC_TYPE_SIGNAL
2516 dnl find out what to use at the end of a signal function
2517 if test $ac_cv_type_signal = void; then
2518   AC_DEFINE(SIGRETURN, [return])
2519 else
2520   AC_DEFINE(SIGRETURN, [return 0])
2523 dnl check if struct sigcontext is defined (used for SGI only)
2524 AC_MSG_CHECKING(for struct sigcontext)
2525 AC_TRY_COMPILE([
2526 #include <signal.h>
2527 test_sig()
2529     struct sigcontext *scont;
2530     scont = (struct sigcontext *)0;
2531     return 1;
2532 } ], ,
2533           AC_MSG_RESULT(yes)
2534                 AC_DEFINE(HAVE_SIGCONTEXT),
2535           AC_MSG_RESULT(no))
2537 dnl tricky stuff: try to find out if getcwd() is implemented with
2538 dnl system("sh -c pwd")
2539 AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2540   [
2541     AC_RUN_IFELSE([[
2542 #include "confdefs.h"
2543 #ifdef HAVE_UNISTD_H
2544 #include <unistd.h>
2545 #endif
2546 char *dagger[] = { "IFS=pwd", 0 };
2547 main()
2549   char buffer[500];
2550   extern char **environ;
2551   environ = dagger;
2552   return getcwd(buffer, 500) ? 0 : 1;
2554     ]],[
2555       vim_cv_getcwd_broken=no
2556     ],[
2557       vim_cv_getcwd_broken=yes
2558     ],[
2559       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2560     ])
2561   ])
2563 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2564   AC_DEFINE(BAD_GETCWD)
2567 dnl Check for functions in one big call, to reduce the size of configure
2568 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2569         getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2570         memset nanosleep opendir putenv qsort readlink select setenv \
2571         setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2572         sigvec strcasecmp strerror strftime stricmp strncasecmp \
2573         strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2574         usleep utime utimes)
2576 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2577 AC_MSG_CHECKING(for st_blksize)
2578 AC_TRY_COMPILE(
2579 [#include <sys/types.h>
2580 #include <sys/stat.h>],
2581 [       struct stat st;
2582         int n;
2584         stat("/", &st);
2585         n = (int)st.st_blksize;],
2586         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2587         AC_MSG_RESULT(no))
2589 AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2590   [
2591     AC_RUN_IFELSE([[
2592 #include "confdefs.h"
2593 #if STDC_HEADERS
2594 # include <stdlib.h>
2595 # include <stddef.h>
2596 #endif
2597 #include <sys/types.h>
2598 #include <sys/stat.h>
2599 main() {struct stat st;  exit(stat("configure/", &st) != 0); }
2600     ]],[
2601       vim_cv_stat_ignores_slash=yes
2602     ],[
2603       vim_cv_stat_ignores_slash=no
2604     ],[
2605       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2606     ])
2607   ])
2609 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2610   AC_DEFINE(STAT_IGNORES_SLASH)
2612   
2613 dnl Link with iconv for charset translation, if not found without library.
2614 dnl check for iconv() requires including iconv.h
2615 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2616 dnl has been installed.
2617 AC_MSG_CHECKING(for iconv_open())
2618 save_LIBS="$LIBS"
2619 LIBS="$LIBS -liconv"
2620 AC_TRY_LINK([
2621 #ifdef HAVE_ICONV_H
2622 # include <iconv.h>
2623 #endif
2624     ], [iconv_open("fr", "to");],
2625     AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2626     LIBS="$save_LIBS"
2627     AC_TRY_LINK([
2628 #ifdef HAVE_ICONV_H
2629 # include <iconv.h>
2630 #endif
2631         ], [iconv_open("fr", "to");],
2632         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2633         AC_MSG_RESULT(no)))
2636 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2637 AC_TRY_LINK([
2638 #ifdef HAVE_LANGINFO_H
2639 # include <langinfo.h>
2640 #endif
2641 ], [char *cs = nl_langinfo(CODESET);],
2642         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2643         AC_MSG_RESULT(no))
2645 dnl Need various functions for floating point support.  Only enable
2646 dnl floating point when they are all present.
2647 AC_CHECK_LIB(m, strtod)
2648 AC_MSG_CHECKING([for strtod() and other floating point functions])
2649 AC_TRY_LINK([
2650 #ifdef HAVE_MATH_H
2651 # include <math.h>
2652 #endif
2653 #if STDC_HEADERS
2654 # include <stdlib.h>
2655 # include <stddef.h>
2656 #endif
2657 ], [char *s; double d;
2658     d = strtod("1.1", &s);
2659     d = fabs(1.11);
2660     d = ceil(1.11);
2661     d = floor(1.11);
2662     d = log10(1.11);
2663     d = pow(1.11, 2.22);
2664     d = sqrt(1.11);
2665     d = sin(1.11);
2666     d = cos(1.11);
2667     d = atan(1.11);
2668     ],
2669         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2670         AC_MSG_RESULT(no))
2672 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2673 dnl when -lacl works, also try to use -lattr (required for Debian).
2674 AC_MSG_CHECKING(--disable-acl argument)
2675 AC_ARG_ENABLE(acl,
2676         [  --disable-acl           Don't check for ACL support.],
2677         , [enable_acl="yes"])
2678 if test "$enable_acl" = "yes"; then
2679 AC_MSG_RESULT(no)
2680 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2681         AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2682                   AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2684 AC_MSG_CHECKING(for POSIX ACL support)
2685 AC_TRY_LINK([
2686 #include <sys/types.h>
2687 #ifdef HAVE_SYS_ACL_H
2688 # include <sys/acl.h>
2689 #endif
2690 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2691         acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2692         acl_free(acl);],
2693         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2694         AC_MSG_RESULT(no))
2696 AC_MSG_CHECKING(for Solaris ACL support)
2697 AC_TRY_LINK([
2698 #ifdef HAVE_SYS_ACL_H
2699 # include <sys/acl.h>
2700 #endif], [acl("foo", GETACLCNT, 0, NULL);
2701         ],
2702         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2703         AC_MSG_RESULT(no))
2705 AC_MSG_CHECKING(for AIX ACL support)
2706 AC_TRY_LINK([
2707 #if STDC_HEADERS
2708 # include <stdlib.h>
2709 # include <stddef.h>
2710 #endif
2711 #ifdef HAVE_SYS_ACL_H
2712 # include <sys/acl.h>
2713 #endif
2714 #ifdef HAVE_SYS_ACCESS_H
2715 # include <sys/access.h>
2716 #endif
2717 #define _ALL_SOURCE
2719 #include <sys/stat.h>
2721 int aclsize;
2722 struct acl *aclent;], [aclsize = sizeof(struct acl);
2723         aclent = (void *)malloc(aclsize);
2724         statacl("foo", STX_NORMAL, aclent, aclsize);
2725         ],
2726         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2727         AC_MSG_RESULT(no))
2728 else
2729   AC_MSG_RESULT(yes)
2732 AC_MSG_CHECKING(--disable-gpm argument)
2733 AC_ARG_ENABLE(gpm,
2734         [  --disable-gpm           Don't use gpm (Linux mouse daemon).], ,
2735         [enable_gpm="yes"])
2737 if test "$enable_gpm" = "yes"; then
2738   AC_MSG_RESULT(no)
2739   dnl Checking if gpm support can be compiled
2740   AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2741         [olibs="$LIBS" ; LIBS="-lgpm"]
2742         AC_TRY_LINK(
2743             [#include <gpm.h>
2744             #include <linux/keyboard.h>],
2745             [Gpm_GetLibVersion(NULL);],
2746             dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2747             dnl FEAT_MOUSE_GPM if mouse support is included
2748             [vi_cv_have_gpm=yes],
2749             [vi_cv_have_gpm=no])
2750         [LIBS="$olibs"]
2751     )
2752   if test $vi_cv_have_gpm = yes; then
2753     LIBS="$LIBS -lgpm"
2754     AC_DEFINE(HAVE_GPM)
2755   fi
2756 else
2757   AC_MSG_RESULT(yes)
2760 AC_MSG_CHECKING(--disable-sysmouse argument)
2761 AC_ARG_ENABLE(sysmouse,
2762         [  --disable-sysmouse    Don't use sysmouse (mouse in *BSD console).], ,
2763         [enable_sysmouse="yes"])
2765 if test "$enable_sysmouse" = "yes"; then
2766   AC_MSG_RESULT(no)
2767   dnl Checking if sysmouse support can be compiled
2768   dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2769   dnl defines FEAT_SYSMOUSE if mouse support is included
2770   AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2771         AC_TRY_LINK(
2772             [#include <sys/consio.h>
2773              #include <signal.h>
2774              #include <sys/fbio.h>],
2775             [struct mouse_info   mouse;
2776              mouse.operation = MOUSE_MODE;
2777              mouse.operation = MOUSE_SHOW;
2778              mouse.u.mode.mode = 0;
2779              mouse.u.mode.signal = SIGUSR2;],
2780             [vi_cv_have_sysmouse=yes],
2781             [vi_cv_have_sysmouse=no])
2782     )
2783   if test $vi_cv_have_sysmouse = yes; then
2784     AC_DEFINE(HAVE_SYSMOUSE)
2785   fi
2786 else
2787   AC_MSG_RESULT(yes)
2790 dnl rename needs to be checked separately to work on Nextstep with cc
2791 AC_MSG_CHECKING(for rename)
2792 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2793         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2794         AC_MSG_RESULT(no))
2796 dnl sysctl() may exist but not the arguments we use
2797 AC_MSG_CHECKING(for sysctl)
2798 AC_TRY_COMPILE(
2799 [#include <sys/types.h>
2800 #include <sys/sysctl.h>],
2801 [       int mib[2], r;
2802         size_t len;
2804         mib[0] = CTL_HW;
2805         mib[1] = HW_USERMEM;
2806         len = sizeof(r);
2807         (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2808         ],
2809         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2810         AC_MSG_RESULT(not usable))
2812 dnl sysinfo() may exist but not be Linux compatible
2813 AC_MSG_CHECKING(for sysinfo)
2814 AC_TRY_COMPILE(
2815 [#include <sys/types.h>
2816 #include <sys/sysinfo.h>],
2817 [       struct sysinfo sinfo;
2818         int t;
2820         (void)sysinfo(&sinfo);
2821         t = sinfo.totalram;
2822         ],
2823         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2824         AC_MSG_RESULT(not usable))
2826 dnl struct sysinfo may have the mem_unit field or not
2827 AC_MSG_CHECKING(for sysinfo.mem_unit)
2828 AC_TRY_COMPILE(
2829 [#include <sys/types.h>
2830 #include <sys/sysinfo.h>],
2831 [       struct sysinfo sinfo;
2832         sinfo.mem_unit = 1;
2833         ],
2834         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2835         AC_MSG_RESULT(no))
2837 dnl sysconf() may exist but not support what we want to use
2838 AC_MSG_CHECKING(for sysconf)
2839 AC_TRY_COMPILE(
2840 [#include <unistd.h>],
2841 [       (void)sysconf(_SC_PAGESIZE);
2842         (void)sysconf(_SC_PHYS_PAGES);
2843         ],
2844         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2845         AC_MSG_RESULT(not usable))
2847 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2848 dnl be printed with "%d", and avoids a warning for cross-compiling.
2850 AC_MSG_CHECKING(size of int)
2851 AC_CACHE_VAL(ac_cv_sizeof_int,
2852         [AC_TRY_RUN([
2853 #include <stdio.h>
2854 #if STDC_HEADERS
2855 # include <stdlib.h>
2856 # include <stddef.h>
2857 #endif
2858 main()
2860   FILE *f=fopen("conftestval", "w");
2861   if (!f) exit(1);
2862   fprintf(f, "%d\n", (int)sizeof(int));
2863   exit(0);
2865             ac_cv_sizeof_int=`cat conftestval`,
2866             ac_cv_sizeof_int=0,
2867             AC_MSG_ERROR(failed to compile test program))])
2868 AC_MSG_RESULT($ac_cv_sizeof_int)
2869 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2872 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2873 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2875 [bcopy_test_prog='
2876 #include "confdefs.h"
2877 #ifdef HAVE_STRING_H
2878 # include <string.h>
2879 #endif
2880 #if STDC_HEADERS
2881 # include <stdlib.h>
2882 # include <stddef.h>
2883 #endif
2884 main() {
2885   char buf[10];
2886   strcpy(buf, "abcdefghi");
2887   mch_memmove(buf, buf + 2, 3);
2888   if (strncmp(buf, "ababcf", 6))
2889     exit(1);
2890   strcpy(buf, "abcdefghi");
2891   mch_memmove(buf + 2, buf, 3);
2892   if (strncmp(buf, "cdedef", 6))
2893     exit(1);
2894   exit(0); /* libc version works properly.  */
2897 AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
2898   [
2899     AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
2900       [
2901         vim_cv_memmove_handles_overlap=yes
2902       ],[
2903         vim_cv_memmove_handles_overlap=no
2904       ],[
2905         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
2906       ])
2907   ])
2909 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
2910   AC_DEFINE(USEMEMMOVE)
2911 else
2912   AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
2913     [
2914       AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
2915       [
2916         vim_cv_bcopy_handles_overlap=yes
2917       ],[
2918         vim_cv_bcopy_handles_overlap=no
2919       ],[
2920         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
2921       ])
2922     ])
2924   if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
2925     AC_DEFINE(USEBCOPY)
2926   else
2927     AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
2928       [
2929         AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
2930           [
2931             vim_cv_memcpy_handles_overlap=yes
2932           ],[
2933             vim_cv_memcpy_handles_overlap=no
2934           ],[
2935             AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
2936           ])
2937       ])
2939     if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
2940       AC_DEFINE(USEMEMCPY)
2941     fi
2942   fi
2946 dnl Check for multibyte locale functions
2947 dnl Find out if _Xsetlocale() is supported by libX11.
2948 dnl Check if X_LOCALE should be defined.
2950 if test "$enable_multibyte" = "yes"; then
2951   cflags_save=$CFLAGS
2952   ldflags_save=$LDFLAGS
2953   if test -n "$x_includes" ; then
2954     CFLAGS="$CFLAGS -I$x_includes"
2955     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2956     AC_MSG_CHECKING(whether X_LOCALE needed)
2957     AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2958         AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2959                 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2960         AC_MSG_RESULT(no))
2961   fi
2962   CFLAGS=$cflags_save
2963   LDFLAGS=$ldflags_save
2966 dnl Link with xpg4, it is said to make Korean locale working
2967 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2969 dnl Check how we can run ctags
2970 dnl --version for Exuberant ctags (preferred)
2971 dnl       Add --fields=+S to get function signatures for omni completion.
2972 dnl -t for typedefs (many ctags have this)
2973 dnl -s for static functions (Elvis ctags only?)
2974 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2975 dnl -i+m to test for older Exuberant ctags
2976 AC_MSG_CHECKING(how to create tags)
2977 test -f tags && mv tags tags.save
2978 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
2979   TAGPRG="ctags -I INIT+ --fields=+S"
2980 else
2981   (eval etags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2982   (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2983   (eval ctags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2984   (eval ctags -t   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2985   (eval ctags -ts  /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2986   (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2987   (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2989 test -f tags.save && mv tags.save tags
2990 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2992 dnl Check how we can run man with a section number
2993 AC_MSG_CHECKING(how to run man with a section nr)
2994 MANDEF="man"
2995 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
2996 AC_MSG_RESULT($MANDEF)
2997 if test "$MANDEF" = "man -s"; then
2998   AC_DEFINE(USEMAN_S)
3001 dnl Check if gettext() is working and if it needs -lintl
3002 AC_MSG_CHECKING(--disable-nls argument)
3003 AC_ARG_ENABLE(nls,
3004         [  --disable-nls           Don't support NLS (gettext()).], ,
3005         [enable_nls="yes"])
3007 if test "$enable_nls" = "yes"; then
3008   AC_MSG_RESULT(no)
3010   INSTALL_LANGS=install-languages
3011   AC_SUBST(INSTALL_LANGS)
3012   INSTALL_TOOL_LANGS=install-tool-languages
3013   AC_SUBST(INSTALL_TOOL_LANGS)
3015   AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3016   AC_MSG_CHECKING([for NLS])
3017   if test -f po/Makefile; then
3018     have_gettext="no"
3019     if test -n "$MSGFMT"; then
3020       AC_TRY_LINK(
3021         [#include <libintl.h>],
3022         [gettext("Test");],
3023         AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3024           olibs=$LIBS
3025           LIBS="$LIBS -lintl"
3026           AC_TRY_LINK(
3027               [#include <libintl.h>],
3028               [gettext("Test");],
3029               AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3030               AC_MSG_RESULT([gettext() doesn't work]);
3031               LIBS=$olibs))
3032     else
3033       AC_MSG_RESULT([msgfmt not found - disabled]);
3034     fi
3035     if test $have_gettext = "yes"; then
3036       AC_DEFINE(HAVE_GETTEXT)
3037       MAKEMO=yes
3038       AC_SUBST(MAKEMO)
3039       dnl this was added in GNU gettext 0.10.36
3040       AC_CHECK_FUNCS(bind_textdomain_codeset)
3041       dnl _nl_msg_cat_cntr is required for GNU gettext
3042       AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3043       AC_TRY_LINK(
3044                 [#include <libintl.h>
3045                 extern int _nl_msg_cat_cntr;],
3046                 [++_nl_msg_cat_cntr;],
3047                 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3048                 AC_MSG_RESULT([no]))
3049     fi
3050   else
3051     AC_MSG_RESULT([no "po/Makefile" - disabled]);
3052   fi
3053 else
3054   AC_MSG_RESULT(yes)
3057 dnl Check for dynamic linking loader
3058 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3059 if test x${DLL} = xdlfcn.h; then
3060   AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3061   AC_MSG_CHECKING([for dlopen()])
3062   AC_TRY_LINK(,[
3063                 extern void* dlopen();
3064                 dlopen();
3065       ],
3066       AC_MSG_RESULT(yes);
3067               AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3068       AC_MSG_RESULT(no);
3069               AC_MSG_CHECKING([for dlopen() in -ldl])
3070               olibs=$LIBS
3071               LIBS="$LIBS -ldl"
3072               AC_TRY_LINK(,[
3073                                 extern void* dlopen();
3074                                 dlopen();
3075                  ],
3076                  AC_MSG_RESULT(yes);
3077                           AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3078                  AC_MSG_RESULT(no);
3079                           LIBS=$olibs))
3080   dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3081   dnl ick :-)
3082   AC_MSG_CHECKING([for dlsym()])
3083   AC_TRY_LINK(,[
3084                 extern void* dlsym();
3085                 dlsym();
3086       ],
3087       AC_MSG_RESULT(yes);
3088               AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3089       AC_MSG_RESULT(no);
3090               AC_MSG_CHECKING([for dlsym() in -ldl])
3091               olibs=$LIBS
3092               LIBS="$LIBS -ldl"
3093               AC_TRY_LINK(,[
3094                                 extern void* dlsym();
3095                                 dlsym();
3096                  ],
3097                  AC_MSG_RESULT(yes);
3098                           AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3099                  AC_MSG_RESULT(no);
3100                           LIBS=$olibs))
3101 elif test x${DLL} = xdl.h; then
3102   AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3103   AC_MSG_CHECKING([for shl_load()])
3104   AC_TRY_LINK(,[
3105                 extern void* shl_load();
3106                 shl_load();
3107      ],
3108      AC_MSG_RESULT(yes);
3109           AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3110      AC_MSG_RESULT(no);
3111           AC_MSG_CHECKING([for shl_load() in -ldld])
3112           olibs=$LIBS
3113           LIBS="$LIBS -ldld"
3114           AC_TRY_LINK(,[
3115                         extern void* shl_load();
3116                         shl_load();
3117              ],
3118              AC_MSG_RESULT(yes);
3119                   AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3120              AC_MSG_RESULT(no);
3121                   LIBS=$olibs))
3123 AC_CHECK_HEADERS(setjmp.h)
3125 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3126   dnl -ldl must come after DynaLoader.a
3127   if echo $LIBS | grep -e '-ldl' >/dev/null; then
3128     LIBS=`echo $LIBS | sed s/-ldl//`
3129     PERL_LIBS="$PERL_LIBS -ldl"
3130   fi
3133 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3134         && test "x$GUITYPE" != "xCARBONGUI"; then
3135   AC_MSG_CHECKING(whether we need -framework Carbon)
3136   dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3137   if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
3138         || test "x$features" = "xhuge"; then
3139     LIBS="$LIBS -framework Carbon"
3140     AC_MSG_RESULT(yes)
3141   else
3142     AC_MSG_RESULT(no)
3143   fi
3145 if test "x$MACARCH" = "xboth"; then
3146   LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3149 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
3150 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3151 dnl But only when making dependencies, cproto and lint don't take "-isystem".
3152 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3153 dnl the number before the version number.
3154 AC_MSG_CHECKING(for GCC 3 or later)
3155 DEPEND_CFLAGS_FILTER=
3156 if test "$GCC" = yes; then
3157   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
3158   if test "$gccmajor" -gt "2"; then
3159     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3160   fi
3162 if test "$DEPEND_CFLAGS_FILTER" = ""; then
3163   AC_MSG_RESULT(no)
3164 else
3165   AC_MSG_RESULT(yes)
3167 AC_SUBST(DEPEND_CFLAGS_FILTER)
3169 dnl write output files
3170 AC_OUTPUT(auto/config.mk:config.mk.in)
3172 dnl vim: set sw=2 tw=78 fo+=l: