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