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