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