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