Add --with-macsdk flag to configure
[MacVim.git] / src / configure.in
blob2a00665d2e58b1cdbfc613f40d2cded0bbf5ebc1
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           dnl Ruby on Mac OS X 10.5 and later adds "-arch" flags but these
997           dnl should only be included if requested by passing --with-mac-arch
998           dnl to configure, so strip these flags first (if present)
999           rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1000           if test "X$rubyldflags" != "X"; then
1001             LDFLAGS="$rubyldflags $LDFLAGS"
1002           fi
1003         fi
1004         RUBY_SRC="if_ruby.c"
1005         RUBY_OBJ="objects/if_ruby.o"
1006         RUBY_PRO="if_ruby.pro"
1007         AC_DEFINE(FEAT_RUBY)
1008       else
1009         AC_MSG_RESULT(not found, disabling Ruby)
1010       fi
1011     else
1012       AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1013     fi
1014   fi
1016 AC_SUBST(RUBY_SRC)
1017 AC_SUBST(RUBY_OBJ)
1018 AC_SUBST(RUBY_PRO)
1019 AC_SUBST(RUBY_CFLAGS)
1020 AC_SUBST(RUBY_LIBS)
1022 AC_MSG_CHECKING(--enable-cscope argument)
1023 AC_ARG_ENABLE(cscope,
1024         [  --enable-cscope         Include cscope interface.], ,
1025         [enable_cscope="no"])
1026 AC_MSG_RESULT($enable_cscope)
1027 if test "$enable_cscope" = "yes"; then
1028   AC_DEFINE(FEAT_CSCOPE)
1031 AC_MSG_CHECKING(--enable-workshop argument)
1032 AC_ARG_ENABLE(workshop,
1033         [  --enable-workshop       Include Sun Visual Workshop support.], ,
1034         [enable_workshop="no"])
1035 AC_MSG_RESULT($enable_workshop)
1036 if test "$enable_workshop" = "yes"; then
1037   AC_DEFINE(FEAT_SUN_WORKSHOP)
1038   WORKSHOP_SRC="workshop.c integration.c"
1039   AC_SUBST(WORKSHOP_SRC)
1040   WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1041   AC_SUBST(WORKSHOP_OBJ)
1042   if test "${enable_gui-xxx}" = xxx; then
1043     enable_gui=motif
1044   fi
1047 AC_MSG_CHECKING(--disable-netbeans argument)
1048 AC_ARG_ENABLE(netbeans,
1049         [  --disable-netbeans      Disable NetBeans integration support.],
1050         , [enable_netbeans="yes"])
1051 if test "$enable_netbeans" = "yes"; then
1052   AC_MSG_RESULT(no)
1053   dnl On Solaris we need the socket and nsl library.
1054   AC_CHECK_LIB(socket, socket)
1055   AC_CHECK_LIB(nsl, gethostbyname)
1056   AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1057   AC_TRY_LINK([
1058 #include <stdio.h>
1059 #include <stdlib.h>
1060 #include <stdarg.h>
1061 #include <fcntl.h>
1062 #include <netdb.h>
1063 #include <netinet/in.h>
1064 #include <errno.h>
1065 #include <sys/types.h>
1066 #include <sys/socket.h>
1067         /* Check bitfields */
1068         struct nbbuf {
1069         unsigned int  initDone:1;
1070         ushort signmaplen;
1071         };
1072             ], [
1073                 /* Check creating a socket. */
1074                 struct sockaddr_in server;
1075                 (void)socket(AF_INET, SOCK_STREAM, 0);
1076                 (void)htons(100);
1077                 (void)gethostbyname("microsoft.com");
1078                 if (errno == ECONNREFUSED)
1079                   (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1080             ],
1081         AC_MSG_RESULT(yes),
1082         AC_MSG_RESULT(no); enable_netbeans="no")
1083 else
1084   AC_MSG_RESULT(yes)
1086 if test "$enable_netbeans" = "yes"; then
1087   AC_DEFINE(FEAT_NETBEANS_INTG)
1088   NETBEANS_SRC="netbeans.c"
1089   AC_SUBST(NETBEANS_SRC)
1090   NETBEANS_OBJ="objects/netbeans.o"
1091   AC_SUBST(NETBEANS_OBJ)
1094 AC_MSG_CHECKING(--enable-sniff argument)
1095 AC_ARG_ENABLE(sniff,
1096         [  --enable-sniff          Include Sniff interface.], ,
1097         [enable_sniff="no"])
1098 AC_MSG_RESULT($enable_sniff)
1099 if test "$enable_sniff" = "yes"; then
1100   AC_DEFINE(FEAT_SNIFF)
1101   SNIFF_SRC="if_sniff.c"
1102   AC_SUBST(SNIFF_SRC)
1103   SNIFF_OBJ="objects/if_sniff.o"
1104   AC_SUBST(SNIFF_OBJ)
1107 AC_MSG_CHECKING(--enable-multibyte argument)
1108 AC_ARG_ENABLE(multibyte,
1109         [  --enable-multibyte      Include multibyte editing support.], ,
1110         [enable_multibyte="no"])
1111 AC_MSG_RESULT($enable_multibyte)
1112 if test "$enable_multibyte" = "yes"; then
1113   AC_DEFINE(FEAT_MBYTE)
1116 AC_MSG_CHECKING(--enable-hangulinput argument)
1117 AC_ARG_ENABLE(hangulinput,
1118         [  --enable-hangulinput    Include Hangul input support.], ,
1119         [enable_hangulinput="no"])
1120 AC_MSG_RESULT($enable_hangulinput)
1122 AC_MSG_CHECKING(--enable-xim argument)
1123 AC_ARG_ENABLE(xim,
1124         [  --enable-xim            Include XIM input support.],
1125         AC_MSG_RESULT($enable_xim),
1126         [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1127 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1129 AC_MSG_CHECKING(--enable-fontset argument)
1130 AC_ARG_ENABLE(fontset,
1131         [  --enable-fontset        Include X fontset output support.], ,
1132         [enable_fontset="no"])
1133 AC_MSG_RESULT($enable_fontset)
1134 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1136 test -z "$with_x" && with_x=yes
1137 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1138 if test "$with_x" = no; then
1139   AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1140 else
1141   dnl Do this check early, so that its failure can override user requests.
1143   AC_PATH_PROG(xmkmfpath, xmkmf)
1145   AC_PATH_XTRA
1147   dnl On OS390Unix the X libraries are DLLs. To use them the code must
1148   dnl be compiled with a special option.
1149   dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1150   if test "$OS390Unix" = "yes"; then
1151     CFLAGS="$CFLAGS -W c,dll"
1152     LDFLAGS="$LDFLAGS -W l,dll"
1153     X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1154   fi
1156   dnl On my HPUX system the X include dir is found, but the lib dir not.
1157   dnl This is a desparate try to fix this.
1159   if test -d "$x_includes" && test ! -d "$x_libraries"; then
1160     x_libraries=`echo "$x_includes" | sed s/include/lib/`
1161     AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1162     X_LIBS="$X_LIBS -L$x_libraries"
1163     if test "`(uname) 2>/dev/null`" = SunOS &&
1164                                          uname -r | grep '^5' >/dev/null; then
1165       X_LIBS="$X_LIBS -R $x_libraries"
1166     fi
1167   fi
1169   if test -d "$x_libraries" && test ! -d "$x_includes"; then
1170     x_includes=`echo "$x_libraries" | sed s/lib/include/`
1171     AC_MSG_RESULT(Corrected X includes to $x_includes)
1172     X_CFLAGS="$X_CFLAGS -I$x_includes"
1173   fi
1175   dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1176   X_CFLAGS="`echo $X_CFLAGS\  | sed 's%-I/usr/include %%'`"
1177   dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1178   X_LIBS="`echo $X_LIBS\  | sed 's%-L/usr/lib %%'`"
1179   dnl Same for "-R/usr/lib ".
1180   X_LIBS="`echo $X_LIBS\  | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1183   dnl Check if the X11 header files are correctly installed. On some systems
1184   dnl Xlib.h includes files that don't exist.  On some systems X11/Intrinsic.h
1185   dnl is missing.
1186   AC_MSG_CHECKING(if X11 header files can be found)
1187   cflags_save=$CFLAGS
1188   CFLAGS="$CFLAGS $X_CFLAGS"
1189   AC_TRY_COMPILE([#include <X11/Xlib.h>
1190 #include <X11/Intrinsic.h>], ,
1191         AC_MSG_RESULT(yes),
1192         AC_MSG_RESULT(no); no_x=yes)
1193   CFLAGS=$cflags_save
1195   if test "${no_x-no}" = yes; then
1196     with_x=no
1197   else
1198     AC_DEFINE(HAVE_X11)
1199     X_LIB="-lXt -lX11";
1200     AC_SUBST(X_LIB)
1202     ac_save_LDFLAGS="$LDFLAGS"
1203     LDFLAGS="-L$x_libraries $LDFLAGS"
1205     dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1206     dnl For HP-UX 10.20 it must be before -lSM -lICE
1207     AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1208                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1210     dnl Some systems need -lnsl -lsocket when testing for ICE.
1211     dnl The check above doesn't do this, try here (again).  Also needed to get
1212     dnl them after Xdmcp.  link.sh will remove them when not needed.
1213     dnl Check for other function than above to avoid the cached value
1214     AC_CHECK_LIB(ICE, IceOpenConnection,
1215                   [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1217     dnl Check for -lXpm (needed for some versions of Motif)
1218     LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1219     AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1220                 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1222     dnl Check that the X11 header files don't use implicit declarations
1223     AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1224     cflags_save=$CFLAGS
1225     CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1226     AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1227         AC_MSG_RESULT(no),
1228         CFLAGS="$CFLAGS -Wno-implicit-int"
1229         AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1230             AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1231             AC_MSG_RESULT(test failed)
1232         )
1233     )
1234     CFLAGS=$cflags_save
1236     LDFLAGS="$ac_save_LDFLAGS"
1238     AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1239     AC_CACHE_VAL(ac_cv_small_wchar_t,
1240         [AC_TRY_RUN([
1241 #include <X11/Xlib.h>
1242 #if STDC_HEADERS
1243 # include <stdlib.h>
1244 # include <stddef.h>
1245 #endif
1246                 main()
1247                 {
1248                   if (sizeof(wchar_t) <= 2)
1249                     exit(1);
1250                   exit(0);
1251                 }],
1252                 ac_cv_small_wchar_t="no",
1253                 ac_cv_small_wchar_t="yes",
1254                 AC_MSG_ERROR(failed to compile test program))])
1255     AC_MSG_RESULT($ac_cv_small_wchar_t)
1256     if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1257       AC_DEFINE(SMALL_WCHAR_T)
1258     fi
1260   fi
1263 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1265 AC_MSG_CHECKING(--enable-gui argument)
1266 AC_ARG_ENABLE(gui,
1267  [  --enable-gui[=OPTS]       X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon/macvim]], , enable_gui="auto")
1269 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1270 dnl Do not use character classes for portability with old tools.
1271 enable_gui_canon=`echo "_$enable_gui" | \
1272         sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1274 dnl Skip everything by default.
1275 SKIP_GTK=YES
1276 SKIP_GTK2=YES
1277 SKIP_GNOME=YES
1278 SKIP_MOTIF=YES
1279 SKIP_ATHENA=YES
1280 SKIP_NEXTAW=YES
1281 SKIP_PHOTON=YES
1282 SKIP_CARBON=YES
1283 SKIP_MACVIM=YES
1284 GUITYPE=NONE
1286 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1287   SKIP_PHOTON=
1288   case "$enable_gui_canon" in
1289     no)         AC_MSG_RESULT(no GUI support)
1290                 SKIP_PHOTON=YES ;;
1291     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1292     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1293     photon)     AC_MSG_RESULT(Photon GUI support) ;;
1294     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1295                 SKIP_PHOTON=YES ;;
1296   esac
1298 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1299   SKIP_CARBON=
1300   SKIP_MACVIM=
1301   case "$enable_gui_canon" in
1302     no)         AC_MSG_RESULT(no GUI support)
1303                 SKIP_CARBON=YES 
1304                 SKIP_MACVIM=YES ;;
1305     yes|"")     AC_MSG_RESULT(yes - automatic GUI support) ;;
1306     auto)       AC_MSG_RESULT(auto - automatic GUI support) ;;
1307     carbon)     AC_MSG_RESULT(Carbon GUI support) 
1308                 SKIP_MACVIM=YES ;;
1309     macvim)     AC_MSG_RESULT(MacVim GUI support) 
1310                 SKIP_CARBON=YES ;;
1311     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1312                 SKIP_CARBON=YES 
1313                 SKIP_MACVIM=YES ;;
1314   esac
1316 else
1318   case "$enable_gui_canon" in
1319     no|none)    AC_MSG_RESULT(no GUI support) ;;
1320     yes|""|auto)        AC_MSG_RESULT(yes/auto - automatic GUI support)
1321                 SKIP_GTK=
1322                 SKIP_GTK2=
1323                 SKIP_GNOME=
1324                 SKIP_MOTIF=
1325                 SKIP_ATHENA=
1326                 SKIP_NEXTAW=
1327                 SKIP_MACVIM=
1328                 SKIP_CARBON=;;
1329     gtk)        AC_MSG_RESULT(GTK+ 1.x GUI support)
1330                 SKIP_GTK=;;
1331     gtk2)       AC_MSG_RESULT(GTK+ 2.x GUI support)
1332                 SKIP_GTK=
1333                 SKIP_GTK2=;;
1334     gnome)      AC_MSG_RESULT(GNOME 1.x GUI support)
1335                 SKIP_GNOME=
1336                 SKIP_GTK=;;
1337     gnome2)     AC_MSG_RESULT(GNOME 2.x GUI support)
1338                 SKIP_GNOME=
1339                 SKIP_GTK=
1340                 SKIP_GTK2=;;
1341     motif)      AC_MSG_RESULT(Motif GUI support)
1342                 SKIP_MOTIF=;;
1343     athena)     AC_MSG_RESULT(Athena GUI support)
1344                 SKIP_ATHENA=;;
1345     nextaw)     AC_MSG_RESULT(neXtaw GUI support)
1346                 SKIP_NEXTAW=;;
1347     *)          AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1348   esac
1352 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1353   AC_MSG_CHECKING(whether or not to look for GTK)
1354   AC_ARG_ENABLE(gtk-check,
1355         [  --enable-gtk-check      If auto-select GUI, check for GTK [default=yes]],
1356         , enable_gtk_check="yes")
1357   AC_MSG_RESULT($enable_gtk_check)
1358   if test "x$enable_gtk_check" = "xno"; then
1359     SKIP_GTK=YES
1360     SKIP_GNOME=YES
1361   fi
1364 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1365                                 -a "$enable_gui_canon" != "gnome2"; then
1366   AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1367   AC_ARG_ENABLE(gtk2-check,
1368         [  --enable-gtk2-check     If GTK GUI, check for GTK+ 2 [default=yes]],
1369         , enable_gtk2_check="yes")
1370   AC_MSG_RESULT($enable_gtk2_check)
1371   if test "x$enable_gtk2_check" = "xno"; then
1372     SKIP_GTK2=YES
1373   fi
1376 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1377                                  -a "$enable_gui_canon" != "gnome2"; then
1378   AC_MSG_CHECKING(whether or not to look for GNOME)
1379   AC_ARG_ENABLE(gnome-check,
1380         [  --enable-gnome-check    If GTK GUI, check for GNOME [default=no]],
1381         , enable_gnome_check="no")
1382   AC_MSG_RESULT($enable_gnome_check)
1383   if test "x$enable_gnome_check" = "xno"; then
1384     SKIP_GNOME=YES
1385   fi
1388 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1389   AC_MSG_CHECKING(whether or not to look for Motif)
1390   AC_ARG_ENABLE(motif-check,
1391         [  --enable-motif-check    If auto-select GUI, check for Motif [default=yes]],
1392         , enable_motif_check="yes")
1393   AC_MSG_RESULT($enable_motif_check)
1394   if test "x$enable_motif_check" = "xno"; then
1395     SKIP_MOTIF=YES
1396   fi
1399 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1400   AC_MSG_CHECKING(whether or not to look for Athena)
1401   AC_ARG_ENABLE(athena-check,
1402         [  --enable-athena-check   If auto-select GUI, check for Athena [default=yes]],
1403         , enable_athena_check="yes")
1404   AC_MSG_RESULT($enable_athena_check)
1405   if test "x$enable_athena_check" = "xno"; then
1406     SKIP_ATHENA=YES
1407   fi
1410 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1411   AC_MSG_CHECKING(whether or not to look for neXtaw)
1412   AC_ARG_ENABLE(nextaw-check,
1413         [  --enable-nextaw-check   If auto-select GUI, check for neXtaw [default=yes]],
1414         , enable_nextaw_check="yes")
1415   AC_MSG_RESULT($enable_nextaw_check);
1416   if test "x$enable_nextaw_check" = "xno"; then
1417     SKIP_NEXTAW=YES
1418   fi
1421 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1422   AC_MSG_CHECKING(whether or not to look for Carbon)
1423   AC_ARG_ENABLE(carbon-check,
1424         [  --enable-carbon-check   If auto-select GUI, check for Carbon [default=yes]],
1425         , enable_carbon_check="yes")
1426   AC_MSG_RESULT($enable_carbon_check);
1427   if test "x$enable_carbon_check" = "xno"; then
1428     SKIP_CARBON=YES
1429   fi
1432 if test "x$SKIP_MACVIM" != "xYES" -a "$enable_gui_canon" != "macvim"; then
1433   AC_MSG_CHECKING(whether or not to look for MacVim)
1434   AC_ARG_ENABLE(macvim-check,
1435         [  --enable-macvim-check    If auto-select GUI, check for MacVim [default=yes]],
1436         , enable_macvim_check="yes")
1437   AC_MSG_RESULT($enable_macvim_check);
1438   if test "x$enable_macvim_check" = "xno"; then
1439     SKIP_MACVIM=YES
1440   fi
1443 if test "x$MACOSX" = "xyes"; then
1444   dnl Default install directory is not /usr/local
1445   if test x$prefix = xNONE; then
1446     prefix=/Applications
1447   fi
1449   if test -z "$SKIP_MACVIM" -a "x$COCOA" = "xyes"; then
1450     AC_MSG_CHECKING(for MacVim GUI)
1451     dnl already did the check, just give the message
1452     AC_MSG_RESULT(yes);
1453     GUITYPE=MACVIMGUI
1454     dnl Sorry for the hard coded default
1455     datadir='${prefix}/MacVim.app/Contents/Resources'
1456   elif test -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1457     AC_MSG_CHECKING(for Carbon GUI)
1458     dnl already did the check, just give the message
1459     AC_MSG_RESULT(yes);
1460     GUITYPE=CARBONGUI
1461     dnl Sorry for the hard coded default
1462     datadir='${prefix}/Vim.app/Contents/Resources'
1463   fi
1465   if test "$VIMNAME" = "vim"; then
1466     VIMNAME=Vim
1467   fi
1469   dnl skip everything else
1470   SKIP_GTK=YES;
1471   SKIP_GTK2=YES;
1472   SKIP_GNOME=YES;
1473   SKIP_MOTIF=YES;
1474   SKIP_ATHENA=YES;
1475   SKIP_NEXTAW=YES;
1476   SKIP_PHOTON=YES;
1477   SKIP_MACVIM=YES;
1478   SKIP_CARBON=YES
1482 dnl Get the cflags and libraries from the gtk-config script
1485 dnl define an autoconf function to check for a specified version of GTK, and
1486 dnl try to compile/link a GTK program.  this gets used once for GTK 1.1.16.
1488 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1489 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1491 AC_DEFUN(AM_PATH_GTK,
1493   if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1494   {
1495     min_gtk_version=ifelse([$1], ,0.99.7,$1)
1496     AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1497     no_gtk=""
1498     if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1499           && $PKG_CONFIG --exists gtk+-2.0; then
1500     {
1501       dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1502       dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1503       dnl something like that.
1504       GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1505       GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1506       GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1507       gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1508              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1509       gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1510              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1511       gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1512              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1513     }
1514     elif test "X$GTK_CONFIG" != "Xno"; then
1515     {
1516       GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1517       GTK_LIBDIR=
1518       GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1519       gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1520              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1521       gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1522              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1523       gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1524              sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1525     }
1526     else
1527       no_gtk=yes
1528     fi
1530     if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1531     {
1532       ac_save_CFLAGS="$CFLAGS"
1533       ac_save_LIBS="$LIBS"
1534       CFLAGS="$CFLAGS $GTK_CFLAGS"
1535       LIBS="$LIBS $GTK_LIBS"
1537       dnl
1538       dnl Now check if the installed GTK is sufficiently new. (Also sanity
1539       dnl checks the results of gtk-config to some extent
1540       dnl
1541       rm -f conf.gtktest
1542       AC_TRY_RUN([
1543 #include <gtk/gtk.h>
1544 #include <stdio.h>
1545 #if STDC_HEADERS
1546 # include <stdlib.h>
1547 # include <stddef.h>
1548 #endif
1551 main ()
1553 int major, minor, micro;
1554 char *tmp_version;
1556 system ("touch conf.gtktest");
1558 /* HP/UX 9 (%@#!) writes to sscanf strings */
1559 tmp_version = g_strdup("$min_gtk_version");
1560 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1561    printf("%s, bad version string\n", "$min_gtk_version");
1562    exit(1);
1565 if ((gtk_major_version > major) ||
1566     ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1567     ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1568                                      (gtk_micro_version >= micro)))
1570     return 0;
1572 return 1;
1574 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1575       CFLAGS="$ac_save_CFLAGS"
1576       LIBS="$ac_save_LIBS"
1577     }
1578     fi
1579     if test "x$no_gtk" = x ; then
1580       if test "x$enable_gtktest" = "xyes"; then
1581         AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1582       else
1583         AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1584       fi
1585       ifelse([$2], , :, [$2])
1586     else
1587     {
1588       AC_MSG_RESULT(no)
1589       GTK_CFLAGS=""
1590       GTK_LIBS=""
1591       ifelse([$3], , :, [$3])
1592     }
1593     fi
1594   }
1595   else
1596     GTK_CFLAGS=""
1597     GTK_LIBS=""
1598     ifelse([$3], , :, [$3])
1599   fi
1600   AC_SUBST(GTK_CFLAGS)
1601   AC_SUBST(GTK_LIBS)
1602   rm -f conf.gtktest
1605 dnl ---------------------------------------------------------------------------
1606 dnl gnome
1607 dnl ---------------------------------------------------------------------------
1608 AC_DEFUN([GNOME_INIT_HOOK],
1610   AC_SUBST(GNOME_LIBS)
1611   AC_SUBST(GNOME_LIBDIR)
1612   AC_SUBST(GNOME_INCLUDEDIR)
1614   AC_ARG_WITH(gnome-includes,
1615     [  --with-gnome-includes=DIR Specify location of GNOME headers],
1616     [CFLAGS="$CFLAGS -I$withval"]
1617   )
1619   AC_ARG_WITH(gnome-libs,
1620     [  --with-gnome-libs=DIR   Specify location of GNOME libs],
1621     [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1622   )
1624   AC_ARG_WITH(gnome,
1625     [  --with-gnome            Specify prefix for GNOME files],
1626     if test x$withval = xyes; then
1627       want_gnome=yes
1628       ifelse([$1], [], :, [$1])
1629     else
1630       if test "x$withval" = xno; then
1631         want_gnome=no
1632       else
1633         want_gnome=yes
1634         LDFLAGS="$LDFLAGS -L$withval/lib"
1635         CFLAGS="$CFLAGS -I$withval/include"
1636         gnome_prefix=$withval/lib
1637       fi
1638     fi,
1639     want_gnome=yes)
1641   if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1642   {
1643     AC_MSG_CHECKING(for libgnomeui-2.0)
1644     if $PKG_CONFIG --exists libgnomeui-2.0; then
1645       AC_MSG_RESULT(yes)
1646       GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1647       GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1648       GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1650       dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1651       dnl This might not be the right way but it works for me...
1652       AC_MSG_CHECKING(for FreeBSD)
1653       if test "`(uname) 2>/dev/null`" = FreeBSD; then
1654         AC_MSG_RESULT(yes, adding -pthread)
1655         GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1656         GNOME_LIBS="$GNOME_LIBS -pthread"
1657       else
1658         AC_MSG_RESULT(no)
1659       fi
1660       $1
1661     else
1662       AC_MSG_RESULT(not found)
1663       if test "x$2" = xfail; then
1664         AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1665       fi
1666     fi
1667   }
1668   elif test "x$want_gnome" = xyes; then
1669   {
1670     AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1671     if test "$GNOME_CONFIG" = "no"; then
1672       no_gnome_config="yes"
1673     else
1674       AC_MSG_CHECKING(if $GNOME_CONFIG works)
1675       if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1676         AC_MSG_RESULT(yes)
1677         GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1678         GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1679         GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1680         $1
1681       else
1682         AC_MSG_RESULT(no)
1683         no_gnome_config="yes"
1684       fi
1685     fi
1687     if test x$exec_prefix = xNONE; then
1688       if test x$prefix = xNONE; then
1689         gnome_prefix=$ac_default_prefix/lib
1690       else
1691         gnome_prefix=$prefix/lib
1692       fi
1693     else
1694       gnome_prefix=`eval echo \`echo $libdir\``
1695     fi
1697     if test "$no_gnome_config" = "yes"; then
1698       AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1699       if test -f $gnome_prefix/gnomeConf.sh; then
1700         AC_MSG_RESULT(found)
1701         echo "loading gnome configuration from" \
1702           "$gnome_prefix/gnomeConf.sh"
1703         . $gnome_prefix/gnomeConf.sh
1704         $1
1705       else
1706         AC_MSG_RESULT(not found)
1707         if test x$2 = xfail; then
1708           AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1709         fi
1710       fi
1711     fi
1712   }
1713   fi
1716 AC_DEFUN([GNOME_INIT],[
1717         GNOME_INIT_HOOK([],fail)
1721 dnl ---------------------------------------------------------------------------
1722 dnl Check for GTK.  First checks for gtk-config, cause it needs that to get the
1723 dnl correct compiler flags.  Then checks for GTK 1.1.16.  If that fails, then
1724 dnl it checks for 1.0.6.  If both fail, then continue on for Motif as before...
1725 dnl ---------------------------------------------------------------------------
1726 if test -z "$SKIP_GTK"; then
1728   AC_MSG_CHECKING(--with-gtk-prefix argument)
1729   AC_ARG_WITH(gtk-prefix,[  --with-gtk-prefix=PFX   Prefix where GTK is installed (optional)],
1730         gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1731         gtk_config_prefix=""; AC_MSG_RESULT(no))
1733   AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1734   AC_ARG_WITH(gtk-exec-prefix,[  --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1735         gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1736         gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1738   AC_MSG_CHECKING(--disable-gtktest argument)
1739   AC_ARG_ENABLE(gtktest, [  --disable-gtktest       Do not try to compile and run a test GTK program],
1740         , enable_gtktest=yes)
1741   if test "x$enable_gtktest" = "xyes" ; then
1742     AC_MSG_RESULT(gtk test enabled)
1743   else
1744     AC_MSG_RESULT(gtk test disabled)
1745   fi
1747   if test "x$gtk_config_prefix" != "x" ; then
1748     gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1749     GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1750   fi
1751   if test "x$gtk_config_exec_prefix" != "x" ; then
1752     gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1753     GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1754   fi
1755   if test "X$GTK_CONFIG" = "X"; then
1756     AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1757     if test "X$GTK_CONFIG" = "Xno"; then
1758       dnl Some distributions call it gtk12-config, annoying!
1759       AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1760       GTK_CONFIG="$GTK12_CONFIG"
1761     fi
1762   else
1763     AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1764   fi
1765   if test "X$PKG_CONFIG" = "X"; then
1766     AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1767   fi
1769   if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1770     dnl First try finding version 2.2.0 or later.  The 2.0.x series has
1771     dnl problems (bold fonts, --remote doesn't work).
1772     if test "X$SKIP_GTK2" != "XYES"; then
1773       AM_PATH_GTK(2.2.0,
1774                   [GUI_LIB_LOC="$GTK_LIBDIR"
1775                    GTK_LIBNAME="$GTK_LIBS"
1776                   GUI_INC_LOC="$GTK_CFLAGS"], )
1777       if test "x$GTK_CFLAGS" != "x"; then
1778         SKIP_ATHENA=YES
1779         SKIP_NEXTAW=YES
1780         SKIP_MOTIF=YES
1781         GUITYPE=GTK
1782         AC_SUBST(GTK_LIBNAME)
1783       fi
1784     fi
1786     dnl If there is no 2.2.0 or later try the 1.x.x series.  We require at
1787     dnl least GTK 1.1.16.  1.0.6 doesn't work.  1.1.1 to 1.1.15
1788     dnl were test versions.
1789     if test "x$GUITYPE" != "xGTK"; then
1790       SKIP_GTK2=YES
1791       AM_PATH_GTK(1.1.16,
1792                   [GTK_LIBNAME="$GTK_LIBS"
1793                   GUI_INC_LOC="$GTK_CFLAGS"], )
1794       if test "x$GTK_CFLAGS" != "x"; then
1795         SKIP_ATHENA=YES
1796         SKIP_NEXTAW=YES
1797         SKIP_MOTIF=YES
1798         GUITYPE=GTK
1799         AC_SUBST(GTK_LIBNAME)
1800       fi
1801     fi
1802   fi
1803   dnl Give a warning if GTK is older than 1.2.3
1804   if test "x$GUITYPE" = "xGTK"; then
1805     if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1806          -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1807       AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1808     else
1809     {
1810       if test "0$gtk_major_version" -ge 2; then
1811         AC_DEFINE(HAVE_GTK2)
1812         if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1813                 || test "0$gtk_minor_version" -ge 2 \
1814                 || test "0$gtk_major_version" -gt 2; then
1815           AC_DEFINE(HAVE_GTK_MULTIHEAD)
1816         fi
1817       fi
1818       dnl
1819       dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1820       dnl
1821       if test -z "$SKIP_GNOME"; then
1822       {
1823         GNOME_INIT_HOOK([have_gnome=yes])
1824         if test x$have_gnome = xyes ; then
1825           AC_DEFINE(FEAT_GUI_GNOME)
1826           GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1827           GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1828         fi
1829       }
1830       fi
1831     }
1832     fi
1833   fi
1836 dnl Check for Motif include files location.
1837 dnl The LAST one found is used, this makes the highest version to be used,
1838 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1840 if test -z "$SKIP_MOTIF"; then
1841   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"
1842   dnl Remove "-I" from before $GUI_INC_LOC if it's there
1843   GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1845   AC_MSG_CHECKING(for location of Motif GUI includes)
1846   gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1847   GUI_INC_LOC=
1848   for try in $gui_includes; do
1849     if test -f "$try/Xm/Xm.h"; then
1850       GUI_INC_LOC=$try
1851     fi
1852   done
1853   if test -n "$GUI_INC_LOC"; then
1854     if test "$GUI_INC_LOC" = /usr/include; then
1855       GUI_INC_LOC=
1856       AC_MSG_RESULT(in default path)
1857     else
1858       AC_MSG_RESULT($GUI_INC_LOC)
1859     fi
1860   else
1861     AC_MSG_RESULT(<not found>)
1862     SKIP_MOTIF=YES
1863   fi
1866 dnl Check for Motif library files location.  In the same order as the include
1867 dnl files, to avoid a mixup if several versions are present
1869 if test -z "$SKIP_MOTIF"; then
1870   AC_MSG_CHECKING(--with-motif-lib argument)
1871   AC_ARG_WITH(motif-lib,
1872   [  --with-motif-lib=STRING   Library for Motif ],
1873   [ MOTIF_LIBNAME="${withval}" ] )
1875   if test -n "$MOTIF_LIBNAME"; then
1876     AC_MSG_RESULT($MOTIF_LIBNAME)
1877     GUI_LIB_LOC=
1878   else
1879     AC_MSG_RESULT(no)
1881     dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1882     GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1884     AC_MSG_CHECKING(for location of Motif GUI libs)
1885     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"
1886     GUI_LIB_LOC=
1887     for try in $gui_libs; do
1888       for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1889         if test -f "$libtry"; then
1890           GUI_LIB_LOC=$try
1891         fi
1892       done
1893     done
1894     if test -n "$GUI_LIB_LOC"; then
1895       dnl Remove /usr/lib, it causes trouble on some systems
1896       if test "$GUI_LIB_LOC" = /usr/lib; then
1897         GUI_LIB_LOC=
1898         AC_MSG_RESULT(in default path)
1899       else
1900         if test -n "$GUI_LIB_LOC"; then
1901           AC_MSG_RESULT($GUI_LIB_LOC)
1902           if test "`(uname) 2>/dev/null`" = SunOS &&
1903                                          uname -r | grep '^5' >/dev/null; then
1904             GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1905           fi
1906         fi
1907       fi
1908       MOTIF_LIBNAME=-lXm
1909     else
1910       AC_MSG_RESULT(<not found>)
1911       SKIP_MOTIF=YES
1912     fi
1913   fi
1916 if test -z "$SKIP_MOTIF"; then
1917   SKIP_ATHENA=YES
1918   SKIP_NEXTAW=YES
1919   GUITYPE=MOTIF
1920   AC_SUBST(MOTIF_LIBNAME)
1923 dnl Check if the Athena files can be found
1925 GUI_X_LIBS=
1927 if test -z "$SKIP_ATHENA"; then
1928   AC_MSG_CHECKING(if Athena header files can be found)
1929   cflags_save=$CFLAGS
1930   CFLAGS="$CFLAGS $X_CFLAGS"
1931   AC_TRY_COMPILE([
1932 #include <X11/Intrinsic.h>
1933 #include <X11/Xaw/Paned.h>], ,
1934         AC_MSG_RESULT(yes),
1935         AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1936   CFLAGS=$cflags_save
1939 if test -z "$SKIP_ATHENA"; then
1940   GUITYPE=ATHENA
1943 if test -z "$SKIP_NEXTAW"; then
1944   AC_MSG_CHECKING(if neXtaw header files can be found)
1945   cflags_save=$CFLAGS
1946   CFLAGS="$CFLAGS $X_CFLAGS"
1947   AC_TRY_COMPILE([
1948 #include <X11/Intrinsic.h>
1949 #include <X11/neXtaw/Paned.h>], ,
1950         AC_MSG_RESULT(yes),
1951         AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1952   CFLAGS=$cflags_save
1955 if test -z "$SKIP_NEXTAW"; then
1956   GUITYPE=NEXTAW
1959 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1960   dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1961   dnl Avoid adding it when it twice
1962   if test -n "$GUI_INC_LOC"; then
1963     GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1964   fi
1965   if test -n "$GUI_LIB_LOC"; then
1966     GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1967   fi
1969   dnl Check for -lXext and then for -lXmu
1970   ldflags_save=$LDFLAGS
1971   LDFLAGS="$X_LIBS $LDFLAGS"
1972   AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1973                 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1974   dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1975   AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1976                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1977   AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1978                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1979   AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1980                 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1981   if test -z "$SKIP_MOTIF"; then
1982     AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1983                 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1984   fi
1985   LDFLAGS=$ldflags_save
1987   dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1988   AC_MSG_CHECKING(for extra X11 defines)
1989   NARROW_PROTO=
1990   rm -fr conftestdir
1991   if mkdir conftestdir; then
1992     cd conftestdir
1993     cat > Imakefile <<'EOF'
1994 acfindx:
1995         @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1997     if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1998       eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1999     fi
2000     cd ..
2001     rm -fr conftestdir
2002   fi
2003   if test -z "$NARROW_PROTO"; then
2004     AC_MSG_RESULT(no)
2005   else
2006     AC_MSG_RESULT($NARROW_PROTO)
2007   fi
2008   AC_SUBST(NARROW_PROTO)
2011 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2012 dnl use the X11 include path
2013 if test "$enable_xsmp" = "yes"; then
2014   cppflags_save=$CPPFLAGS
2015   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2016   AC_CHECK_HEADERS(X11/SM/SMlib.h)
2017   CPPFLAGS=$cppflags_save
2021 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
2022   dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2023   cppflags_save=$CPPFLAGS
2024   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2025   AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2027   dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2028   if test ! "$enable_xim" = "no"; then
2029     AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2030     AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2031                   AC_MSG_RESULT(yes),
2032                   AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2033   fi
2034   CPPFLAGS=$cppflags_save
2036   dnl automatically enable XIM when hangul input isn't enabled
2037   if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2038                 -a "x$GUITYPE" != "xNONE" ; then
2039     AC_MSG_RESULT(X GUI selected; xim has been enabled)
2040     enable_xim="yes"
2041   fi
2044 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2045   cppflags_save=$CPPFLAGS
2046   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2047 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2048   AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2049   AC_TRY_COMPILE([
2050 #include <X11/Intrinsic.h>
2051 #include <X11/Xmu/Editres.h>],
2052                       [int i; i = 0;],
2053               AC_MSG_RESULT(yes)
2054                       AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2055               AC_MSG_RESULT(no))
2056   CPPFLAGS=$cppflags_save
2059 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2060 if test -z "$SKIP_MOTIF"; then
2061   cppflags_save=$CPPFLAGS
2062   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2063   AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
2064                    Xm/UnhighlightT.h Xm/Notebook.h)
2066   if test $ac_cv_header_Xm_XpmP_h = yes; then
2067     dnl Solaris uses XpmAttributes_21, very annoying.
2068     AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2069     AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2070         AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2071         AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2072         )
2073   else
2074     AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2075   fi
2076   CPPFLAGS=$cppflags_save
2079 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2080   AC_MSG_RESULT(no GUI selected; xim has been disabled)
2081   enable_xim="no"
2083 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2084   AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2085   enable_fontset="no"
2087 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2088   AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2089   enable_fontset="no"
2092 if test -z "$SKIP_PHOTON"; then
2093   GUITYPE=PHOTONGUI
2096 AC_SUBST(GUI_INC_LOC)
2097 AC_SUBST(GUI_LIB_LOC)
2098 AC_SUBST(GUITYPE)
2099 AC_SUBST(GUI_X_LIBS)
2101 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2102   AC_MSG_ERROR([cannot use workshop without Motif])
2105 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2106 if test "$enable_xim" = "yes"; then
2107   AC_DEFINE(FEAT_XIM)
2109 if test "$enable_fontset" = "yes"; then
2110   AC_DEFINE(FEAT_XFONTSET)
2114 dnl ---------------------------------------------------------------------------
2115 dnl end of GUI-checking
2116 dnl ---------------------------------------------------------------------------
2119 dnl Only really enable hangul input when GUI and XFONTSET are available
2120 if test "$enable_hangulinput" = "yes"; then
2121   if test "x$GUITYPE" = "xNONE"; then
2122     AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2123     enable_hangulinput=no
2124   else
2125     AC_DEFINE(FEAT_HANGULIN)
2126     HANGULIN_SRC=hangulin.c
2127     AC_SUBST(HANGULIN_SRC)
2128     HANGULIN_OBJ=objects/hangulin.o
2129     AC_SUBST(HANGULIN_OBJ)
2130   fi
2133 dnl Checks for libraries and include files.
2135 AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2136   [
2137     AC_RUN_IFELSE([[
2138 #include "confdefs.h"
2139 #include <ctype.h>
2140 #if STDC_HEADERS
2141 # include <stdlib.h>
2142 # include <stddef.h>
2143 #endif
2144 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2145   ]],[
2146     vim_cv_toupper_broken=yes
2147   ],[
2148     vim_cv_toupper_broken=no
2149   ],[
2150     AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2151   ])])
2153 if test "x$vim_cv_toupper_broken" = "xyes" ; then
2154   AC_DEFINE(BROKEN_TOUPPER)
2157 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2158 AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
2159         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2160         AC_MSG_RESULT(no))
2162 AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2163 AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2164         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2165         AC_MSG_RESULT(no))
2167 dnl Checks for header files.
2168 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2169 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2170 if test "$HAS_ELF" = 1; then
2171   AC_CHECK_LIB(elf, main)
2174 AC_HEADER_DIRENT
2176 dnl If sys/wait.h is not found it might still exist but not be POSIX
2177 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2178 if test $ac_cv_header_sys_wait_h = no; then
2179   AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2180   AC_TRY_COMPILE([#include <sys/wait.h>],
2181                         [union wait xx, yy; xx = yy],
2182                 AC_MSG_RESULT(yes)
2183                         AC_DEFINE(HAVE_SYS_WAIT_H)
2184                         AC_DEFINE(HAVE_UNION_WAIT),
2185                 AC_MSG_RESULT(no))
2188 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2189         termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2190         iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
2191         sys/resource.h sys/systeminfo.h locale.h \
2192         sys/stream.h termios.h libc.h sys/statfs.h \
2193         poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2194         libgen.h util/debug.h util/msg18n.h frame.h \
2195         sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
2197 dnl sys/ptem.h depends on sys/stream.h on Solaris
2198 AC_CHECK_HEADERS(sys/ptem.h, [], [],
2199 [#if defined HAVE_SYS_STREAM_H
2200 #  include <sys/stream.h>
2201 #endif])
2203 dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2204 AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2205 [#if defined HAVE_SYS_PARAM_H
2206 #  include <sys/param.h>
2207 #endif])
2210 dnl pthread_np.h may exist but can only be used after including pthread.h
2211 AC_MSG_CHECKING([for pthread_np.h])
2212 AC_TRY_COMPILE([
2213 #include <pthread.h>
2214 #include <pthread_np.h>],
2215                       [int i; i = 0;],
2216               AC_MSG_RESULT(yes)
2217                       AC_DEFINE(HAVE_PTHREAD_NP_H),
2218               AC_MSG_RESULT(no))
2220 AC_CHECK_HEADERS(strings.h)
2221 if test "x$MACOSX" = "xyes"; then
2222   dnl The strings.h file on OS/X contains a warning and nothing useful.
2223   AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2224 else
2226 dnl Check if strings.h and string.h can both be included when defined.
2227 AC_MSG_CHECKING([if strings.h can be included after string.h])
2228 cppflags_save=$CPPFLAGS
2229 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2230 AC_TRY_COMPILE([
2231 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2232 # define _NO_PROTO      /* like in os_unix.h, causes conflict for AIX (Winn) */
2233                         /* but don't do it on AIX 5.1 (Uribarri) */
2234 #endif
2235 #ifdef HAVE_XM_XM_H
2236 # include <Xm/Xm.h>     /* This breaks it for HP-UX 11 (Squassabia) */
2237 #endif
2238 #ifdef HAVE_STRING_H
2239 # include <string.h>
2240 #endif
2241 #if defined(HAVE_STRINGS_H)
2242 # include <strings.h>
2243 #endif
2244                 ], [int i; i = 0;],
2245                 AC_MSG_RESULT(yes),
2246                 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2247                 AC_MSG_RESULT(no))
2248 CPPFLAGS=$cppflags_save
2251 dnl Checks for typedefs, structures, and compiler characteristics.
2252 AC_PROG_GCC_TRADITIONAL
2253 AC_C_CONST
2254 AC_C_VOLATILE
2255 AC_TYPE_MODE_T
2256 AC_TYPE_OFF_T
2257 AC_TYPE_PID_T
2258 AC_TYPE_SIZE_T
2259 AC_TYPE_UID_T
2260 AC_HEADER_TIME
2261 AC_CHECK_TYPE(ino_t, long)
2262 AC_CHECK_TYPE(dev_t, unsigned)
2264 AC_MSG_CHECKING(for rlim_t)
2265 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2266   AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2267 else
2268   AC_EGREP_CPP(dnl
2269 changequote(<<,>>)dnl
2270 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2271 changequote([,]),
2272   [
2273 #include <sys/types.h>
2274 #if STDC_HEADERS
2275 # include <stdlib.h>
2276 # include <stddef.h>
2277 #endif
2278 #ifdef HAVE_SYS_RESOURCE_H
2279 # include <sys/resource.h>
2280 #endif
2281           ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2282           AC_MSG_RESULT($ac_cv_type_rlim_t)
2284 if test $ac_cv_type_rlim_t = no; then
2285   cat >> confdefs.h <<\EOF
2286 #define rlim_t unsigned long
2290 AC_MSG_CHECKING(for stack_t)
2291 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2292   AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2293 else
2294   AC_EGREP_CPP(stack_t,
2295   [
2296 #include <sys/types.h>
2297 #if STDC_HEADERS
2298 # include <stdlib.h>
2299 # include <stddef.h>
2300 #endif
2301 #include <signal.h>
2302           ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2303           AC_MSG_RESULT($ac_cv_type_stack_t)
2305 if test $ac_cv_type_stack_t = no; then
2306   cat >> confdefs.h <<\EOF
2307 #define stack_t struct sigaltstack
2311 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2312 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2313 AC_TRY_COMPILE([
2314 #include <sys/types.h>
2315 #if STDC_HEADERS
2316 # include <stdlib.h>
2317 # include <stddef.h>
2318 #endif
2319 #include <signal.h>
2320 #include "confdefs.h"
2321                         ], [stack_t sigstk; sigstk.ss_base = 0; ],
2322         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2323         AC_MSG_RESULT(no))
2325 olibs="$LIBS"
2326 AC_MSG_CHECKING(--with-tlib argument)
2327 AC_ARG_WITH(tlib, [  --with-tlib=library     terminal library to be used ],)
2328 if test -n "$with_tlib"; then
2329   AC_MSG_RESULT($with_tlib)
2330   LIBS="$LIBS -l$with_tlib"
2331   AC_MSG_CHECKING(for linking with $with_tlib library)
2332   AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2333   dnl Need to check for tgetent() below.
2334   olibs="$LIBS"
2335 else
2336   AC_MSG_RESULT([empty: automatic terminal library selection])
2337   dnl  On HP-UX 10.10 termcap or termlib should be used instead of
2338   dnl  curses, because curses is much slower.
2339   dnl  Newer versions of ncurses are preferred over anything.
2340   dnl  Older versions of ncurses have bugs, get a new one!
2341   dnl  Digital Unix (OSF1) should use curses (Ronald Schild).
2342   dnl  On SCO Openserver should prefer termlib (Roger Cornelius).
2343   case "`uname -s 2>/dev/null`" in
2344         OSF1|SCO_SV)    tlibs="ncurses curses termlib termcap";;
2345         *)      tlibs="ncurses termlib termcap curses";;
2346   esac
2347   for libname in $tlibs; do
2348     AC_CHECK_LIB(${libname}, tgetent,,)
2349     if test "x$olibs" != "x$LIBS"; then
2350       dnl It's possible that a library is found but it doesn't work
2351       dnl e.g., shared library that cannot be found
2352       dnl compile and run a test program to be sure
2353       AC_TRY_RUN([
2354 #ifdef HAVE_TERMCAP_H
2355 # include <termcap.h>
2356 #endif
2357 #if STDC_HEADERS
2358 # include <stdlib.h>
2359 # include <stddef.h>
2360 #endif
2361 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2362                           res="OK", res="FAIL", res="FAIL")
2363       if test "$res" = "OK"; then
2364         break
2365       fi
2366       AC_MSG_RESULT($libname library is not usable)
2367       LIBS="$olibs"
2368     fi
2369   done
2370   if test "x$olibs" = "x$LIBS"; then
2371     AC_MSG_RESULT(no terminal library found)
2372   fi
2375 if test "x$olibs" = "x$LIBS"; then
2376   AC_MSG_CHECKING([for tgetent()])
2377   AC_TRY_LINK([],
2378       [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2379         AC_MSG_RESULT(yes),
2380         AC_MSG_ERROR([NOT FOUND!
2381       You need to install a terminal library; for example ncurses.
2382       Or specify the name of the library with --with-tlib.]))
2385 AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2386   [
2387     AC_RUN_IFELSE([[
2388 #include "confdefs.h"
2389 #ifdef HAVE_TERMCAP_H
2390 # include <termcap.h>
2391 #endif
2392 #ifdef HAVE_STRING_H
2393 # include <string.h>
2394 #endif
2395 #if STDC_HEADERS
2396 # include <stdlib.h>
2397 # include <stddef.h>
2398 #endif
2399 main()
2400 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2401     ]],[
2402       vim_cv_terminfo=no
2403     ],[
2404       vim_cv_terminfo=yes
2405     ],[
2406       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2407     ])
2408   ])
2410 if test "x$vim_cv_terminfo" = "xyes" ; then
2411   AC_DEFINE(TERMINFO)
2414 if test "x$olibs" != "x$LIBS"; then
2415   AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2416     [
2417       AC_RUN_IFELSE([[
2418 #include "confdefs.h"
2419 #ifdef HAVE_TERMCAP_H
2420 # include <termcap.h>
2421 #endif
2422 #if STDC_HEADERS
2423 # include <stdlib.h>
2424 # include <stddef.h>
2425 #endif
2426 main()
2427 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2428       ]],[
2429         vim_cv_tgent=zero
2430       ],[
2431         vim_cv_tgent=non-zero
2432       ],[
2433         AC_MSG_ERROR(failed to compile test program.)
2434       ])
2435     ])
2436   
2437   if test "x$vim_cv_tgent" = "xzero" ; then
2438     AC_DEFINE(TGETENT_ZERO_ERR, 0)
2439   fi
2442 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2443 AC_TRY_LINK([
2444 #ifdef HAVE_TERMCAP_H
2445 # include <termcap.h>
2446 #endif
2447                         ], [ospeed = 20000],
2448         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2449         [AC_MSG_RESULT(no)
2450         AC_MSG_CHECKING(whether ospeed can be extern)
2451         AC_TRY_LINK([
2452 #ifdef HAVE_TERMCAP_H
2453 # include <termcap.h>
2454 #endif
2455 extern short ospeed;
2456                         ], [ospeed = 20000],
2457                 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2458                 AC_MSG_RESULT(no))]
2459         )
2461 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2462 AC_TRY_LINK([
2463 #ifdef HAVE_TERMCAP_H
2464 # include <termcap.h>
2465 #endif
2466                         ], [if (UP == 0 && BC == 0) PC = 1],
2467         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2468         [AC_MSG_RESULT(no)
2469         AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2470         AC_TRY_LINK([
2471 #ifdef HAVE_TERMCAP_H
2472 # include <termcap.h>
2473 #endif
2474 extern char *UP, *BC, PC;
2475                         ], [if (UP == 0 && BC == 0) PC = 1],
2476                 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2477                 AC_MSG_RESULT(no))]
2478         )
2480 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2481 AC_TRY_COMPILE([
2482 #ifdef HAVE_TERMCAP_H
2483 # include <termcap.h>
2484 #endif
2485                         ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2486         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2487         AC_MSG_RESULT(no))
2489 dnl On some SCO machines sys/select redefines struct timeval
2490 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2491 AC_TRY_COMPILE([
2492 #include <sys/types.h>
2493 #include <sys/time.h>
2494 #include <sys/select.h>], ,
2495           AC_MSG_RESULT(yes)
2496                         AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2497           AC_MSG_RESULT(no))
2499 dnl AC_DECL_SYS_SIGLIST
2501 dnl Checks for pty.c (copied from screen) ==========================
2502 AC_MSG_CHECKING(for /dev/ptc)
2503 if test -r /dev/ptc; then
2504   AC_DEFINE(HAVE_DEV_PTC)
2505   AC_MSG_RESULT(yes)
2506 else
2507   AC_MSG_RESULT(no)
2510 AC_MSG_CHECKING(for SVR4 ptys)
2511 if test -c /dev/ptmx ; then
2512   AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2513         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2514         AC_MSG_RESULT(no))
2515 else
2516   AC_MSG_RESULT(no)
2519 AC_MSG_CHECKING(for ptyranges)
2520 if test -d /dev/ptym ; then
2521   pdir='/dev/ptym'
2522 else
2523   pdir='/dev'
2525 dnl SCO uses ptyp%d
2526 AC_EGREP_CPP(yes,
2527 [#ifdef M_UNIX
2528    yes;
2529 #endif
2530         ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2531 dnl if test -c /dev/ptyp19; then
2532 dnl ptys=`echo /dev/ptyp??`
2533 dnl else
2534 dnl ptys=`echo $pdir/pty??`
2535 dnl fi
2536 if test "$ptys" != "$pdir/pty??" ; then
2537   p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2538   p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
2539   AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2540   AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2541   AC_MSG_RESULT([$p0 / $p1])
2542 else
2543   AC_MSG_RESULT([don't know])
2546 dnl    ****  pty mode/group handling ****
2548 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2549 rm -f conftest_grp
2550 AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2551   [
2552     AC_RUN_IFELSE([[
2553 #include "confdefs.h"
2554 #include <sys/types.h>
2555 #if STDC_HEADERS
2556 # include <stdlib.h>
2557 # include <stddef.h>
2558 #endif
2559 #ifdef HAVE_UNISTD_H
2560 #include <unistd.h>
2561 #endif
2562 #include <sys/stat.h>
2563 #include <stdio.h>
2564 main()
2566   struct stat sb;
2567   char *x,*ttyname();
2568   int om, m;
2569   FILE *fp;
2571   if (!(x = ttyname(0))) exit(1);
2572   if (stat(x, &sb)) exit(1);
2573   om = sb.st_mode;
2574   if (om & 002) exit(0);
2575   m = system("mesg y");
2576   if (m == -1 || m == 127) exit(1);
2577   if (stat(x, &sb)) exit(1);
2578   m = sb.st_mode;
2579   if (chmod(x, om)) exit(1);
2580   if (m & 002) exit(0);
2581   if (sb.st_gid == getgid()) exit(1);
2582   if (!(fp=fopen("conftest_grp", "w")))
2583     exit(1);
2584   fprintf(fp, "%d\n", sb.st_gid);
2585   fclose(fp);
2586   exit(0);
2588     ]],[
2589       if test -f conftest_grp; then
2590         vim_cv_tty_group=`cat conftest_grp`
2591         if test "x$vim_cv_tty_mode" = "x" ; then
2592           vim_cv_tty_mode=0620
2593         fi
2594         AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2595       else
2596         vim_cv_tty_group=world
2597         AC_MSG_RESULT([ptys are world accessable])
2598       fi
2599     ],[
2600       vim_cv_tty_group=world
2601       AC_MSG_RESULT([can't determine - assume ptys are world accessable])
2602     ],[
2603       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2604     ])
2605   ])
2606 rm -f conftest_grp
2608 if test "x$vim_cv_tty_group" != "xworld" ; then
2609   AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2610   if test "x$vim_cv_tty_mode" = "x" ; then
2611     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)])
2612   else
2613     AC_DEFINE(PTYMODE, 0620)
2614   fi
2617 dnl Checks for library functions. ===================================
2619 AC_TYPE_SIGNAL
2621 dnl find out what to use at the end of a signal function
2622 if test $ac_cv_type_signal = void; then
2623   AC_DEFINE(SIGRETURN, [return])
2624 else
2625   AC_DEFINE(SIGRETURN, [return 0])
2628 dnl check if struct sigcontext is defined (used for SGI only)
2629 AC_MSG_CHECKING(for struct sigcontext)
2630 AC_TRY_COMPILE([
2631 #include <signal.h>
2632 test_sig()
2634     struct sigcontext *scont;
2635     scont = (struct sigcontext *)0;
2636     return 1;
2637 } ], ,
2638           AC_MSG_RESULT(yes)
2639                 AC_DEFINE(HAVE_SIGCONTEXT),
2640           AC_MSG_RESULT(no))
2642 dnl tricky stuff: try to find out if getcwd() is implemented with
2643 dnl system("sh -c pwd")
2644 AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2645   [
2646     AC_RUN_IFELSE([[
2647 #include "confdefs.h"
2648 #ifdef HAVE_UNISTD_H
2649 #include <unistd.h>
2650 #endif
2651 char *dagger[] = { "IFS=pwd", 0 };
2652 main()
2654   char buffer[500];
2655   extern char **environ;
2656   environ = dagger;
2657   return getcwd(buffer, 500) ? 0 : 1;
2659     ]],[
2660       vim_cv_getcwd_broken=no
2661     ],[
2662       vim_cv_getcwd_broken=yes
2663     ],[
2664       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2665     ])
2666   ])
2668 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2669   AC_DEFINE(BAD_GETCWD)
2672 dnl Check for functions in one big call, to reduce the size of configure
2673 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2674         getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2675         memset nanosleep opendir putenv qsort readlink select setenv \
2676         setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2677         sigvec strcasecmp strerror strftime stricmp strncasecmp \
2678         strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2679         usleep utime utimes)
2681 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2682 AC_MSG_CHECKING(for st_blksize)
2683 AC_TRY_COMPILE(
2684 [#include <sys/types.h>
2685 #include <sys/stat.h>],
2686 [       struct stat st;
2687         int n;
2689         stat("/", &st);
2690         n = (int)st.st_blksize;],
2691         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2692         AC_MSG_RESULT(no))
2694 AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2695   [
2696     AC_RUN_IFELSE([[
2697 #include "confdefs.h"
2698 #if STDC_HEADERS
2699 # include <stdlib.h>
2700 # include <stddef.h>
2701 #endif
2702 #include <sys/types.h>
2703 #include <sys/stat.h>
2704 main() {struct stat st;  exit(stat("configure/", &st) != 0); }
2705     ]],[
2706       vim_cv_stat_ignores_slash=yes
2707     ],[
2708       vim_cv_stat_ignores_slash=no
2709     ],[
2710       AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2711     ])
2712   ])
2714 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2715   AC_DEFINE(STAT_IGNORES_SLASH)
2717   
2718 dnl Link with iconv for charset translation, if not found without library.
2719 dnl check for iconv() requires including iconv.h
2720 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2721 dnl has been installed.
2722 AC_MSG_CHECKING(for iconv_open())
2723 save_LIBS="$LIBS"
2724 LIBS="$LIBS -liconv"
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; with -liconv); AC_DEFINE(HAVE_ICONV),
2731     LIBS="$save_LIBS"
2732     AC_TRY_LINK([
2733 #ifdef HAVE_ICONV_H
2734 # include <iconv.h>
2735 #endif
2736         ], [iconv_open("fr", "to");],
2737         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2738         AC_MSG_RESULT(no)))
2741 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2742 AC_TRY_LINK([
2743 #ifdef HAVE_LANGINFO_H
2744 # include <langinfo.h>
2745 #endif
2746 ], [char *cs = nl_langinfo(CODESET);],
2747         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2748         AC_MSG_RESULT(no))
2750 dnl Need various functions for floating point support.  Only enable
2751 dnl floating point when they are all present.
2752 AC_CHECK_LIB(m, strtod)
2753 AC_MSG_CHECKING([for strtod() and other floating point functions])
2754 AC_TRY_LINK([
2755 #ifdef HAVE_MATH_H
2756 # include <math.h>
2757 #endif
2758 #if STDC_HEADERS
2759 # include <stdlib.h>
2760 # include <stddef.h>
2761 #endif
2762 ], [char *s; double d;
2763     d = strtod("1.1", &s);
2764     d = fabs(1.11);
2765     d = ceil(1.11);
2766     d = floor(1.11);
2767     d = log10(1.11);
2768     d = pow(1.11, 2.22);
2769     d = sqrt(1.11);
2770     d = sin(1.11);
2771     d = cos(1.11);
2772     d = atan(1.11);
2773     ],
2774         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2775         AC_MSG_RESULT(no))
2777 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2778 dnl when -lacl works, also try to use -lattr (required for Debian).
2779 AC_MSG_CHECKING(--disable-acl argument)
2780 AC_ARG_ENABLE(acl,
2781         [  --disable-acl           Don't check for ACL support.],
2782         , [enable_acl="yes"])
2783 if test "$enable_acl" = "yes"; then
2784 AC_MSG_RESULT(no)
2785 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2786         AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2787                   AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2789 AC_MSG_CHECKING(for POSIX ACL support)
2790 AC_TRY_LINK([
2791 #include <sys/types.h>
2792 #ifdef HAVE_SYS_ACL_H
2793 # include <sys/acl.h>
2794 #endif
2795 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2796         acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2797         acl_free(acl);],
2798         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2799         AC_MSG_RESULT(no))
2801 AC_MSG_CHECKING(for Solaris ACL support)
2802 AC_TRY_LINK([
2803 #ifdef HAVE_SYS_ACL_H
2804 # include <sys/acl.h>
2805 #endif], [acl("foo", GETACLCNT, 0, NULL);
2806         ],
2807         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2808         AC_MSG_RESULT(no))
2810 AC_MSG_CHECKING(for AIX ACL support)
2811 AC_TRY_LINK([
2812 #if STDC_HEADERS
2813 # include <stdlib.h>
2814 # include <stddef.h>
2815 #endif
2816 #ifdef HAVE_SYS_ACL_H
2817 # include <sys/acl.h>
2818 #endif
2819 #ifdef HAVE_SYS_ACCESS_H
2820 # include <sys/access.h>
2821 #endif
2822 #define _ALL_SOURCE
2824 #include <sys/stat.h>
2826 int aclsize;
2827 struct acl *aclent;], [aclsize = sizeof(struct acl);
2828         aclent = (void *)malloc(aclsize);
2829         statacl("foo", STX_NORMAL, aclent, aclsize);
2830         ],
2831         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2832         AC_MSG_RESULT(no))
2833 else
2834   AC_MSG_RESULT(yes)
2837 AC_MSG_CHECKING(--disable-gpm argument)
2838 AC_ARG_ENABLE(gpm,
2839         [  --disable-gpm           Don't use gpm (Linux mouse daemon).], ,
2840         [enable_gpm="yes"])
2842 if test "$enable_gpm" = "yes"; then
2843   AC_MSG_RESULT(no)
2844   dnl Checking if gpm support can be compiled
2845   AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2846         [olibs="$LIBS" ; LIBS="-lgpm"]
2847         AC_TRY_LINK(
2848             [#include <gpm.h>
2849             #include <linux/keyboard.h>],
2850             [Gpm_GetLibVersion(NULL);],
2851             dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2852             dnl FEAT_MOUSE_GPM if mouse support is included
2853             [vi_cv_have_gpm=yes],
2854             [vi_cv_have_gpm=no])
2855         [LIBS="$olibs"]
2856     )
2857   if test $vi_cv_have_gpm = yes; then
2858     LIBS="$LIBS -lgpm"
2859     AC_DEFINE(HAVE_GPM)
2860   fi
2861 else
2862   AC_MSG_RESULT(yes)
2865 AC_MSG_CHECKING(--disable-sysmouse argument)
2866 AC_ARG_ENABLE(sysmouse,
2867         [  --disable-sysmouse    Don't use sysmouse (mouse in *BSD console).], ,
2868         [enable_sysmouse="yes"])
2870 if test "$enable_sysmouse" = "yes"; then
2871   AC_MSG_RESULT(no)
2872   dnl Checking if sysmouse support can be compiled
2873   dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2874   dnl defines FEAT_SYSMOUSE if mouse support is included
2875   AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2876         AC_TRY_LINK(
2877             [#include <sys/consio.h>
2878              #include <signal.h>
2879              #include <sys/fbio.h>],
2880             [struct mouse_info   mouse;
2881              mouse.operation = MOUSE_MODE;
2882              mouse.operation = MOUSE_SHOW;
2883              mouse.u.mode.mode = 0;
2884              mouse.u.mode.signal = SIGUSR2;],
2885             [vi_cv_have_sysmouse=yes],
2886             [vi_cv_have_sysmouse=no])
2887     )
2888   if test $vi_cv_have_sysmouse = yes; then
2889     AC_DEFINE(HAVE_SYSMOUSE)
2890   fi
2891 else
2892   AC_MSG_RESULT(yes)
2895 dnl rename needs to be checked separately to work on Nextstep with cc
2896 AC_MSG_CHECKING(for rename)
2897 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2898         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2899         AC_MSG_RESULT(no))
2901 dnl sysctl() may exist but not the arguments we use
2902 AC_MSG_CHECKING(for sysctl)
2903 AC_TRY_COMPILE(
2904 [#include <sys/types.h>
2905 #include <sys/sysctl.h>],
2906 [       int mib[2], r;
2907         size_t len;
2909         mib[0] = CTL_HW;
2910         mib[1] = HW_USERMEM;
2911         len = sizeof(r);
2912         (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2913         ],
2914         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2915         AC_MSG_RESULT(not usable))
2917 dnl sysinfo() may exist but not be Linux compatible
2918 AC_MSG_CHECKING(for sysinfo)
2919 AC_TRY_COMPILE(
2920 [#include <sys/types.h>
2921 #include <sys/sysinfo.h>],
2922 [       struct sysinfo sinfo;
2923         int t;
2925         (void)sysinfo(&sinfo);
2926         t = sinfo.totalram;
2927         ],
2928         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2929         AC_MSG_RESULT(not usable))
2931 dnl struct sysinfo may have the mem_unit field or not
2932 AC_MSG_CHECKING(for sysinfo.mem_unit)
2933 AC_TRY_COMPILE(
2934 [#include <sys/types.h>
2935 #include <sys/sysinfo.h>],
2936 [       struct sysinfo sinfo;
2937         sinfo.mem_unit = 1;
2938         ],
2939         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2940         AC_MSG_RESULT(no))
2942 dnl sysconf() may exist but not support what we want to use
2943 AC_MSG_CHECKING(for sysconf)
2944 AC_TRY_COMPILE(
2945 [#include <unistd.h>],
2946 [       (void)sysconf(_SC_PAGESIZE);
2947         (void)sysconf(_SC_PHYS_PAGES);
2948         ],
2949         AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2950         AC_MSG_RESULT(not usable))
2952 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2953 dnl be printed with "%d", and avoids a warning for cross-compiling.
2955 AC_MSG_CHECKING(size of int)
2956 AC_CACHE_VAL(ac_cv_sizeof_int,
2957         [AC_TRY_RUN([
2958 #include <stdio.h>
2959 #if STDC_HEADERS
2960 # include <stdlib.h>
2961 # include <stddef.h>
2962 #endif
2963 main()
2965   FILE *f=fopen("conftestval", "w");
2966   if (!f) exit(1);
2967   fprintf(f, "%d\n", (int)sizeof(int));
2968   exit(0);
2970             ac_cv_sizeof_int=`cat conftestval`,
2971             ac_cv_sizeof_int=0,
2972             AC_MSG_ERROR(failed to compile test program))])
2973 AC_MSG_RESULT($ac_cv_sizeof_int)
2974 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2976 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2977 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2979 [bcopy_test_prog='
2980 #include "confdefs.h"
2981 #ifdef HAVE_STRING_H
2982 # include <string.h>
2983 #endif
2984 #if STDC_HEADERS
2985 # include <stdlib.h>
2986 # include <stddef.h>
2987 #endif
2988 main() {
2989   char buf[10];
2990   strcpy(buf, "abcdefghi");
2991   mch_memmove(buf, buf + 2, 3);
2992   if (strncmp(buf, "ababcf", 6))
2993     exit(1);
2994   strcpy(buf, "abcdefghi");
2995   mch_memmove(buf + 2, buf, 3);
2996   if (strncmp(buf, "cdedef", 6))
2997     exit(1);
2998   exit(0); /* libc version works properly.  */
3001 AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3002   [
3003     AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3004       [
3005         vim_cv_memmove_handles_overlap=yes
3006       ],[
3007         vim_cv_memmove_handles_overlap=no
3008       ],[
3009         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3010       ])
3011   ])
3013 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3014   AC_DEFINE(USEMEMMOVE)
3015 else
3016   AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3017     [
3018       AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3019       [
3020         vim_cv_bcopy_handles_overlap=yes
3021       ],[
3022         vim_cv_bcopy_handles_overlap=no
3023       ],[
3024         AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3025       ])
3026     ])
3028   if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3029     AC_DEFINE(USEBCOPY)
3030   else
3031     AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3032       [
3033         AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3034           [
3035             vim_cv_memcpy_handles_overlap=yes
3036           ],[
3037             vim_cv_memcpy_handles_overlap=no
3038           ],[
3039             AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3040           ])
3041       ])
3043     if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3044       AC_DEFINE(USEMEMCPY)
3045     fi
3046   fi
3050 dnl Check for multibyte locale functions
3051 dnl Find out if _Xsetlocale() is supported by libX11.
3052 dnl Check if X_LOCALE should be defined.
3054 if test "$enable_multibyte" = "yes"; then
3055   cflags_save=$CFLAGS
3056   ldflags_save=$LDFLAGS
3057   if test "x$x_includes" != "xNONE" ; then
3058     CFLAGS="$CFLAGS -I$x_includes"
3059     LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3060     AC_MSG_CHECKING(whether X_LOCALE needed)
3061     AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3062         AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3063                 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3064         AC_MSG_RESULT(no))
3065   fi
3066   CFLAGS=$cflags_save
3067   LDFLAGS=$ldflags_save
3070 dnl Link with xpg4, it is said to make Korean locale working
3071 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3073 dnl Check how we can run ctags.  Default to "ctags" when nothing works.
3074 dnl --version for Exuberant ctags (preferred)
3075 dnl       Add --fields=+S to get function signatures for omni completion.
3076 dnl -t for typedefs (many ctags have this)
3077 dnl -s for static functions (Elvis ctags only?)
3078 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3079 dnl -i+m to test for older Exuberant ctags
3080 AC_MSG_CHECKING(how to create tags)
3081 test -f tags && mv tags tags.save
3082 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3083   TAGPRG="ctags -I INIT+ --fields=+S"
3084 else
3085   TAGPRG="ctags"
3086   (eval etags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3087   (eval etags -c   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3088   (eval ctags      /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3089   (eval ctags -t   /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3090   (eval ctags -ts  /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3091   (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3092   (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3094 test -f tags.save && mv tags.save tags
3095 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3097 dnl Check how we can run man with a section number
3098 AC_MSG_CHECKING(how to run man with a section nr)
3099 MANDEF="man"
3100 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
3101 AC_MSG_RESULT($MANDEF)
3102 if test "$MANDEF" = "man -s"; then
3103   AC_DEFINE(USEMAN_S)
3106 dnl Check if gettext() is working and if it needs -lintl
3107 AC_MSG_CHECKING(--disable-nls argument)
3108 AC_ARG_ENABLE(nls,
3109         [  --disable-nls           Don't support NLS (gettext()).], ,
3110         [enable_nls="yes"])
3112 if test "$enable_nls" = "yes"; then
3113   AC_MSG_RESULT(no)
3115   INSTALL_LANGS=install-languages
3116   AC_SUBST(INSTALL_LANGS)
3117   INSTALL_TOOL_LANGS=install-tool-languages
3118   AC_SUBST(INSTALL_TOOL_LANGS)
3120   AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3121   AC_MSG_CHECKING([for NLS])
3122   if test -f po/Makefile; then
3123     have_gettext="no"
3124     if test -n "$MSGFMT"; then
3125       AC_TRY_LINK(
3126         [#include <libintl.h>],
3127         [gettext("Test");],
3128         AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3129           olibs=$LIBS
3130           LIBS="$LIBS -lintl"
3131           AC_TRY_LINK(
3132               [#include <libintl.h>],
3133               [gettext("Test");],
3134               AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3135               AC_MSG_RESULT([gettext() doesn't work]);
3136               LIBS=$olibs))
3137     else
3138       AC_MSG_RESULT([msgfmt not found - disabled]);
3139     fi
3140     if test $have_gettext = "yes"; then
3141       AC_DEFINE(HAVE_GETTEXT)
3142       MAKEMO=yes
3143       AC_SUBST(MAKEMO)
3144       dnl this was added in GNU gettext 0.10.36
3145       AC_CHECK_FUNCS(bind_textdomain_codeset)
3146       dnl _nl_msg_cat_cntr is required for GNU gettext
3147       AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3148       AC_TRY_LINK(
3149                 [#include <libintl.h>
3150                 extern int _nl_msg_cat_cntr;],
3151                 [++_nl_msg_cat_cntr;],
3152                 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3153                 AC_MSG_RESULT([no]))
3154     fi
3155   else
3156     AC_MSG_RESULT([no "po/Makefile" - disabled]);
3157   fi
3158 else
3159   AC_MSG_RESULT(yes)
3162 dnl Check for dynamic linking loader
3163 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3164 if test x${DLL} = xdlfcn.h; then
3165   AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3166   AC_MSG_CHECKING([for dlopen()])
3167   AC_TRY_LINK(,[
3168                 extern void* dlopen();
3169                 dlopen();
3170       ],
3171       AC_MSG_RESULT(yes);
3172               AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3173       AC_MSG_RESULT(no);
3174               AC_MSG_CHECKING([for dlopen() in -ldl])
3175               olibs=$LIBS
3176               LIBS="$LIBS -ldl"
3177               AC_TRY_LINK(,[
3178                                 extern void* dlopen();
3179                                 dlopen();
3180                  ],
3181                  AC_MSG_RESULT(yes);
3182                           AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3183                  AC_MSG_RESULT(no);
3184                           LIBS=$olibs))
3185   dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3186   dnl ick :-)
3187   AC_MSG_CHECKING([for dlsym()])
3188   AC_TRY_LINK(,[
3189                 extern void* dlsym();
3190                 dlsym();
3191       ],
3192       AC_MSG_RESULT(yes);
3193               AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3194       AC_MSG_RESULT(no);
3195               AC_MSG_CHECKING([for dlsym() in -ldl])
3196               olibs=$LIBS
3197               LIBS="$LIBS -ldl"
3198               AC_TRY_LINK(,[
3199                                 extern void* dlsym();
3200                                 dlsym();
3201                  ],
3202                  AC_MSG_RESULT(yes);
3203                           AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3204                  AC_MSG_RESULT(no);
3205                           LIBS=$olibs))
3206 elif test x${DLL} = xdl.h; then
3207   AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3208   AC_MSG_CHECKING([for shl_load()])
3209   AC_TRY_LINK(,[
3210                 extern void* shl_load();
3211                 shl_load();
3212      ],
3213      AC_MSG_RESULT(yes);
3214           AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3215      AC_MSG_RESULT(no);
3216           AC_MSG_CHECKING([for shl_load() in -ldld])
3217           olibs=$LIBS
3218           LIBS="$LIBS -ldld"
3219           AC_TRY_LINK(,[
3220                         extern void* shl_load();
3221                         shl_load();
3222              ],
3223              AC_MSG_RESULT(yes);
3224                   AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3225              AC_MSG_RESULT(no);
3226                   LIBS=$olibs))
3228 AC_CHECK_HEADERS(setjmp.h)
3230 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3231   dnl -ldl must come after DynaLoader.a
3232   if echo $LIBS | grep -e '-ldl' >/dev/null; then
3233     LIBS=`echo $LIBS | sed s/-ldl//`
3234     PERL_LIBS="$PERL_LIBS -ldl"
3235   fi
3238 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3239         && test "x$GUITYPE" != "xCARBONGUI" && test "x$GUITYPE" != "xMACVIMGUI"; then
3240   AC_MSG_CHECKING(whether we need -framework Carbon)
3241   dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3242   if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
3243         || test "x$features" = "xhuge"; then
3244     LIBS="$LIBS -framework Carbon"
3245     AC_MSG_RESULT(yes)
3246   else
3247     AC_MSG_RESULT(no)
3248   fi
3250 if test "x$MACARCH" = "xboth"; then
3251   LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3254 if test "x$MACOSX" = "xyes"; then
3255   AC_MSG_CHECKING(--with-xcodecfg argument)
3256   AC_ARG_WITH(xcodecfg,
3257     [  --with-xcodecfg=CFG     Debug, Release (default: Release)],
3258     [ XCODEFLAGS="$XCODEFLAGS -configuration $withval"
3259       AC_MSG_RESULT($withval) ],
3260     [ AC_MSG_RESULT(using default) ])
3263      dnl This is an attempt to support choice of SDKs, however it does not
3264      dnl work to compile with different SDKs.  Must figure out how to fix
3265      dnl this before this option can be used.
3266 dnl  AC_MSG_CHECKING(--with-macsdk argument)
3267 dnl  AC_ARG_WITH(macsdk,
3268 dnl    [  --with-macsdk=SDK       SDK version (10.4, 10.5, 10.6, ...)],
3269 dnl    [ macsdk="$withval"; AC_MSG_RESULT($macsdk) ],
3270 dnl    [ macsdk=""; AC_MSG_RESULT(using default) ])
3272 dnl  if test -n "$macsdk"; then
3273 dnl    AC_MSG_CHECKING(if SDK is supported)
3274 dnl    save_cflags="$CFLAGS"
3275 dnl    save_ldflags="$LDFLAGS"
3276 dnl    sdkflags="/Developer/SDKs/MacOSX$macsdk"
3277 dnl    if test "x$macsdk" = "x10.4"; then
3278 dnl      sdkflags="$sdkflags""u"
3279 dnl    fi
3280 dnl    sdkflags="$sdkflags.sdk -mmacosx-version-min=$macsdk"
3281 dnl    CFLAGS="$CFLAGS -isysroot $sdkflags"
3282 dnl    LDFLAGS="$LDFLAGS -Wl,-syslibroot,$sdkflags"
3283 dnl    AC_TRY_LINK([ ], [ ],
3284 dnl      [ AC_MSG_RESULT([yes])
3285 dnl        XCODEFLAGS="$XCODEFLAGS -sdk macosx$macsdk" ],
3286 dnl      [ AC_MSG_RESULT([no])
3287 dnl        ARCHS=""
3288 dnl        CFLAGS="$save_cflags"
3289 dnl        LDFLAGS="$save_ldflags" ])
3290 dnl  fi
3293   AC_MSG_CHECKING(--with-archs argument)
3294   AC_ARG_WITH(archs,
3295     [  --with-archs=ARCHS      space separated list of archs (i386 x86_64 ppc ...)],
3296     [ ARCHS="$withval"; AC_MSG_RESULT($ARCHS) ],
3297     [ ARCHS=""; AC_MSG_RESULT(defaulting to native arch) ])
3299   if test -n "$ARCHS"; then
3300     AC_MSG_CHECKING(if architectures are supported)
3301     save_cflags="$CFLAGS"
3302     save_ldflags="$LDFLAGS"
3303     archflags=`echo "$ARCHS" | sed -e 's/[[[:<:]]]/-arch /g'`
3304     CFLAGS="$CFLAGS $archflags"
3305     LDFLAGS="$LDFLAGS $archflags"
3306     AC_TRY_LINK([ ], [ ],
3307       [ AC_MSG_RESULT([yes])
3308         XCODEFLAGS="$XCODEFLAGS ARCHS=\"$ARCHS\" ONLY_ACTIVE_ARCH=\"NO\"" ],
3309       [ AC_MSG_RESULT([no, will build for native arch only])
3310         ARCHS=""
3311         CFLAGS="$save_cflags"
3312         LDFLAGS="$save_ldflags" ])
3313   fi
3314   if test -z "$ARCHS"; then
3315     dnl Mac OS X 10.6 compiles 64 bit by default, but 64 bit is currently not
3316     dnl supported.  Compile 32 bit unless an architecture has been selected
3317     dnl manually.
3318     CFLAGS="$CFLAGS -m32"
3319     LDFLAGS="$LDFLAGS -m32"
3320   fi
3322   AC_SUBST(XCODEFLAGS)
3326 dnl gcc 3.1 changed the meaning of -MM.  The only solution appears to be to
3327 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3328 dnl But only when making dependencies, cproto and lint don't take "-isystem".
3329 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3330 dnl the number before the version number.
3331 DEPEND_CFLAGS_FILTER=
3332 if test "$GCC" = yes; then
3333   AC_MSG_CHECKING(for GCC 3 or later)
3334   gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
3335   if test "$gccmajor" -gt "2"; then
3336     DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3337     AC_MSG_RESULT(yes)
3338   else
3339     AC_MSG_RESULT(no)
3340   fi
3341   dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3342   dnl declared as char x[1] but actually longer.  Introduced in gcc 4.0.
3343   AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3344   if test "$gccmajor" -gt "3"; then
3345     CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
3346     AC_MSG_RESULT(yes)
3347   else
3348     AC_MSG_RESULT(no)
3349   fi
3351 AC_SUBST(DEPEND_CFLAGS_FILTER)
3353 dnl write output files
3354 AC_OUTPUT(auto/config.mk:config.mk.in)
3356 dnl vim: set sw=2 tw=78 fo+=l: