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