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.
7 AC_CONFIG_HEADER(auto/config.h:config.h.in)
9 dnl Being able to run configure means the system is Unix (compatible).
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
26 dnl Set default value for CFLAGS if none is defined or it's empty
27 if test -z "$CFLAGS"; then
29 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
31 if test "$GCC" = yes; then
32 dnl method that should work for nearly all versions
33 gccversion=`"$CC" -dumpversion`
34 if test "x$gccversion" = "x"; then
35 dnl old method; fall-back for when -dumpversion doesn't work
36 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
38 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
39 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
40 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
41 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
43 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
44 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
45 CFLAGS="$CFLAGS -fno-strength-reduce"
50 dnl If configure thinks we are cross compiling, there is probably something
51 dnl wrong with the CC or CFLAGS settings, give an understandable error message
52 if test "$cross_compiling" = yes; then
53 AC_MSG_ERROR([cannot compile a simple program, check CC and CFLAGS
54 (cross compiling doesn't work)])
57 dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
58 dnl But gcc 3.1 changed the meaning! See near the end.
59 test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
61 if test -f ./toolcheck; then
62 AC_CHECKING(for buggy tools)
63 sh ./toolcheck 1>&AC_FD_MSG
66 OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
68 dnl Check for BeOS, which needs an extra source file
69 AC_MSG_CHECKING(for BeOS)
71 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
72 BEOS=yes; AC_MSG_RESULT(yes);;
73 *) BEOS=no; AC_MSG_RESULT(no);;
76 dnl If QNX is found, assume we don't want to use Xphoton
77 dnl unless it was specifically asked for (--with-x)
78 AC_MSG_CHECKING(for QNX)
80 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
81 test -z "$with_x" && with_x=no
82 QNX=yes; AC_MSG_RESULT(yes);;
83 *) QNX=no; AC_MSG_RESULT(no);;
86 dnl Check for Darwin and MacOS X
87 dnl We do a check for MacOS X in the very beginning because there
88 dnl are a lot of other things we need to change besides GUI stuff
89 AC_MSG_CHECKING([for Darwin (Mac OS X)])
90 if test "`(uname) 2>/dev/null`" = Darwin; then
93 AC_MSG_CHECKING(--disable-darwin argument)
95 [ --disable-darwin Disable Darwin (Mac OS X) support.],
96 , [enable_darwin="yes"])
97 if test "$enable_darwin" = "yes"; then
99 AC_MSG_CHECKING(if Darwin files are there)
100 if test -f os_macosx.c; then
103 AC_MSG_RESULT([no, Darwin support disabled])
107 AC_MSG_RESULT([yes, Darwin support excluded])
110 AC_MSG_CHECKING(--with-mac-arch argument)
111 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
112 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
113 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
115 if test "x$MACARCH" = "xboth"; then
116 AC_MSG_CHECKING(for 10.4 universal SDK)
117 dnl There is a terrible inconsistency (but we appear to get away with it):
118 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
119 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
120 dnl tests using the preprocessor are actually done with the wrong header
121 dnl files. $LDFLAGS is set at the end, because configure uses it together
122 dnl with $CFLAGS and we can only have one -sysroot argument.
123 save_cppflags="$CPPFLAGS"
124 save_cflags="$CFLAGS"
125 save_ldflags="$LDFLAGS"
126 CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
127 AC_TRY_LINK([ ], [ ],
128 AC_MSG_RESULT(found, will make universal binary),
130 AC_MSG_RESULT(not found)
131 CFLAGS="$save_cflags"
132 AC_MSG_CHECKING(if Intel architecture is supported)
133 CPPFLAGS="$CPPFLAGS -arch i386"
134 LDFLAGS="$save_ldflags -arch i386"
135 AC_TRY_LINK([ ], [ ],
136 AC_MSG_RESULT(yes); MACARCH="intel",
137 AC_MSG_RESULT(no, using PowerPC)
139 CPPFLAGS="$save_cppflags -arch ppc"
140 LDFLAGS="$save_ldflags -arch ppc"))
141 elif test "x$MACARCH" = "xintel"; then
142 CPPFLAGS="$CPPFLAGS -arch intel"
143 LDFLAGS="$LDFLAGS -arch intel"
144 elif test "x$MACARCH" = "xppc"; then
145 CPPFLAGS="$CPPFLAGS -arch ppc"
146 LDFLAGS="$LDFLAGS -arch ppc"
149 if test "$enable_darwin" = "yes"; then
151 OS_EXTRA_SCR="os_macosx.c os_mac_conv.c";
152 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
153 dnl TODO: use -arch i386 on Intel machines
154 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
155 if test "x$MACARCH" = "xboth"; then
156 CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
158 CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
161 dnl If Carbon is found, assume we don't want X11
162 dnl unless it was specifically asked for (--with-x)
163 dnl or Motif, Athena or GTK GUI is used.
164 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
165 if test "x$CARBON" = "xyes"; then
166 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
172 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
173 dnl free. This happens in expand_filename(), because the optimizer swaps
174 dnl two blocks of code, both using "repl", that can't be swapped.
175 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
176 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
183 AC_SUBST(OS_EXTRA_SRC)
184 AC_SUBST(OS_EXTRA_OBJ)
186 dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
187 dnl Only when the directory exists and it wasn't there yet.
188 dnl For gcc don't do this when it is already in the default search path.
189 have_local_include=''
191 if test "$GCC" = yes; then
192 echo 'void f(){}' > conftest.c
193 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
194 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep '/usr/local/include'`
195 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep '/usr/local/lib'`
196 rm -f conftest.c conftest.o
198 if test -z "$have_local_lib" -a -d /usr/local/lib; then
199 tt=`echo "$LDFLAGS" | sed -e 's+-L/usr/local/lib ++g' -e 's+-L/usr/local/lib$++g'`
200 if test "$tt" = "$LDFLAGS"; then
201 LDFLAGS="$LDFLAGS -L/usr/local/lib"
204 if test -z "$have_local_include" -a -d /usr/local/include; then
205 tt=`echo "$CPPFLAGS" | sed -e 's+-I/usr/local/include ++g' -e 's+-I/usr/local/include$++g'`
206 if test "$tt" = "$CPPFLAGS"; then
207 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
211 AC_MSG_CHECKING(--with-vim-name argument)
212 AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
213 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
214 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
216 AC_MSG_CHECKING(--with-ex-name argument)
217 AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
218 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
219 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
221 AC_MSG_CHECKING(--with-view-name argument)
222 AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
223 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
224 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
227 AC_MSG_CHECKING(--with-global-runtime argument)
228 AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
229 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
232 AC_MSG_CHECKING(--with-modified-by argument)
233 AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
234 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
237 dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
238 AC_MSG_CHECKING(if character set is EBCDIC)
240 [ /* TryCompile function for CharSet.
241 Treat any failure as ASCII for compatibility with existing art.
242 Use compile-time rather than run-time tests for cross-compiler
245 make an error "Character set is not EBCDIC"
247 [ # TryCompile action if true
249 [ # TryCompile action if false
251 # end of TryCompile ])
252 # end of CacheVal CvEbcdic
253 AC_MSG_RESULT($cf_cv_ebcdic)
254 case "$cf_cv_ebcdic" in #(vi
255 yes) AC_DEFINE(EBCDIC)
258 *) line_break='"\\012"';;
262 if test "$cf_cv_ebcdic" = "yes"; then
263 dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
264 AC_MSG_CHECKING(for OS/390 Unix)
266 OS/390) OS390Unix="yes";
267 dnl If using cc the environment variable _CC_CCMODE must be
268 dnl set to "1", so that some compiler extensions are enabled.
269 dnl If using c89 the environment variable is named _CC_C89MODE.
270 dnl Note: compile with c89 never tested.
271 if test "$CC" = "cc"; then
275 if test "$CC" = "c89"; then
282 if test "$ccm" != "1"; then
284 echo "------------------------------------------"
285 echo " On OS/390 Unix, the environment variable"
286 echo " __CC_${ccn}MODE must be set to \"1\"!"
288 echo " export _CC_${ccn}MODE=1"
289 echo " and then call configure again."
290 echo "------------------------------------------"
293 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
302 dnl Link with -lselinux for SELinux stuff; if not found
303 AC_MSG_CHECKING(--disable-selinux argument)
304 AC_ARG_ENABLE(selinux,
305 [ --disable-selinux Don't check for SELinux support.],
306 , enable_selinux="yes")
307 if test "$enable_selinux" = "yes"; then
309 AC_CHECK_LIB(selinux, is_selinux_enabled,
310 [LIBS="$LIBS -lselinux"
311 AC_DEFINE(HAVE_SELINUX)])
316 dnl Check user requested features.
318 AC_MSG_CHECKING(--with-features argument)
319 AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
320 features="$withval"; AC_MSG_RESULT($features),
321 features="normal"; AC_MSG_RESULT(Defaulting to normal))
326 tiny) AC_DEFINE(FEAT_TINY) ;;
327 small) AC_DEFINE(FEAT_SMALL) ;;
328 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
329 dogvimdiff="installgvimdiff" ;;
330 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
331 dogvimdiff="installgvimdiff" ;;
332 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
333 dogvimdiff="installgvimdiff" ;;
334 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
340 AC_MSG_CHECKING(--with-compiledby argument)
341 AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
342 compiledby="$withval"; AC_MSG_RESULT($withval),
343 compiledby=""; AC_MSG_RESULT(no))
346 AC_MSG_CHECKING(--disable-xsmp argument)
348 [ --disable-xsmp Disable XSMP session management],
351 if test "$enable_xsmp" = "yes"; then
353 AC_MSG_CHECKING(--disable-xsmp-interact argument)
354 AC_ARG_ENABLE(xsmp-interact,
355 [ --disable-xsmp-interact Disable XSMP interaction],
356 , enable_xsmp_interact="yes")
357 if test "$enable_xsmp_interact" = "yes"; then
359 AC_DEFINE(USE_XSMP_INTERACT)
367 dnl Check for MzScheme feature.
368 AC_MSG_CHECKING(--enable-mzschemeinterp argument)
369 AC_ARG_ENABLE(mzschemeinterp,
370 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
371 [enable_mzschemeinterp="no"])
372 AC_MSG_RESULT($enable_mzschemeinterp)
374 if test "$enable_mzschemeinterp" = "yes"; then
375 dnl -- find the mzscheme executable
376 AC_SUBST(vi_cv_path_mzscheme)
378 AC_MSG_CHECKING(--with-plthome argument)
380 [ --with-plthome=PLTHOME Use PLTHOME.],
381 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
382 with_plthome="";AC_MSG_RESULT("no"))
384 if test "X$with_plthome" != "X"; then
385 vi_cv_path_mzscheme_pfx="$with_plthome"
387 AC_MSG_CHECKING(PLTHOME environment var)
388 if test "X$PLTHOME" != "X"; then
389 AC_MSG_RESULT("$PLTHOME")
390 vi_cv_path_mzscheme_pfx="$PLTHOME"
392 AC_MSG_RESULT("not set")
393 dnl -- try to find MzScheme executable
394 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
396 dnl resolve symbolic link, the executable is often elsewhere and there
397 dnl are no links for the include files.
398 if test "X$vi_cv_path_mzscheme" != "X"; then
399 lsout=`ls -l $vi_cv_path_mzscheme`
400 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
401 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
405 if test "X$vi_cv_path_mzscheme" != "X"; then
406 dnl -- find where MzScheme thinks it was installed
407 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
408 [ vi_cv_path_mzscheme_pfx=`
409 ${vi_cv_path_mzscheme} -evm \
410 "(display (simplify-path \
411 (build-path (call-with-values \
412 (lambda () (split-path (find-system-path (quote exec-file)))) \
413 (lambda (base name must-be-dir?) base)) (quote up))))"` ])
414 dnl Remove a trailing slash.
415 vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
421 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
422 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
423 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
427 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/plt/include)
428 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
433 vi_cv_path_mzscheme_pfx=
438 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
439 if test "x$MACOSX" = "xyes"; then
440 MZSCHEME_LIBS="-framework PLT_MzScheme"
441 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
442 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
444 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
445 if test "$GCC" = yes; then
446 dnl Make Vim remember the path to the library. For when it's not in
447 dnl $LD_LIBRARY_PATH.
448 MZSCHEME_LIBS="$MZSCHEME_LIBS -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
449 elif test "`(uname) 2>/dev/null`" = SunOS &&
450 uname -r | grep '^5' >/dev/null; then
451 MZSCHEME_LIBS="$MZSCHEME_LIBS -R ${vi_cv_path_mzscheme_pfx}/lib"
454 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
455 SCHEME_COLLECTS=lib/plt/
457 MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include${SCHEME_INC} \
458 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
459 MZSCHEME_SRC="if_mzsch.c"
460 MZSCHEME_OBJ="objects/if_mzsch.o"
461 MZSCHEME_PRO="if_mzsch.pro"
462 AC_DEFINE(FEAT_MZSCHEME)
464 AC_SUBST(MZSCHEME_SRC)
465 AC_SUBST(MZSCHEME_OBJ)
466 AC_SUBST(MZSCHEME_PRO)
467 AC_SUBST(MZSCHEME_LIBS)
468 AC_SUBST(MZSCHEME_CFLAGS)
472 AC_MSG_CHECKING(--enable-perlinterp argument)
473 AC_ARG_ENABLE(perlinterp,
474 [ --enable-perlinterp Include Perl interpreter.], ,
475 [enable_perlinterp="no"])
476 AC_MSG_RESULT($enable_perlinterp)
477 if test "$enable_perlinterp" = "yes"; then
478 AC_SUBST(vi_cv_path_perl)
479 AC_PATH_PROG(vi_cv_path_perl, perl)
480 if test "X$vi_cv_path_perl" != "X"; then
481 AC_MSG_CHECKING(Perl version)
482 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
483 eval `$vi_cv_path_perl -V:usethreads`
484 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
487 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
488 eval `$vi_cv_path_perl -V:use5005threads`
489 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
493 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
497 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
500 if test $badthreads = no; then
502 eval `$vi_cv_path_perl -V:shrpenv`
503 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
506 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
507 AC_SUBST(vi_cv_perllib)
508 dnl Remove "-fno-something", it breaks using cproto.
509 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
510 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
511 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
512 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
513 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
514 -e 's/-bE:perl.exp//' -e 's/-lc //'`
515 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
516 dnl a test in configure may fail because of that.
517 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
518 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
520 dnl check that compiling a simple program still works with the flags
522 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
525 ldflags_save=$LDFLAGS
526 CFLAGS="$CFLAGS $perlcppflags"
527 LIBS="$LIBS $perllibs"
528 LDFLAGS="$perlldflags $LDFLAGS"
530 AC_MSG_RESULT(yes); perl_ok=yes,
531 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
534 LDFLAGS=$ldflags_save
535 if test $perl_ok = yes; then
536 if test "X$perlcppflags" != "X"; then
537 dnl remove -pipe and -Wxxx, it confuses cproto
538 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
540 if test "X$perlldflags" != "X"; then
541 LDFLAGS="$perlldflags $LDFLAGS"
544 PERL_SRC="auto/if_perl.c if_perlsfio.c"
545 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
546 PERL_PRO="if_perl.pro if_perlsfio.pro"
551 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
555 if test "x$MACOSX" = "xyes"; then
556 dnl Mac OS X 10.2 or later
557 dir=/System/Library/Perl
558 darwindir=$dir/darwin
559 if test -d $darwindir; then
563 dir=/System/Library/Perl/5.8.1
564 darwindir=$dir/darwin-thread-multi-2level
565 if test -d $darwindir; then
569 if test -n "$PERL"; then
571 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
572 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
573 PERL_LIBS="-L$darwindir/CORE -lperl"
581 AC_SUBST(PERL_CFLAGS)
584 AC_MSG_CHECKING(--enable-pythoninterp argument)
585 AC_ARG_ENABLE(pythoninterp,
586 [ --enable-pythoninterp Include Python interpreter.], ,
587 [enable_pythoninterp="no"])
588 AC_MSG_RESULT($enable_pythoninterp)
589 if test "$enable_pythoninterp" = "yes"; then
590 dnl -- find the python executable
591 AC_PATH_PROG(vi_cv_path_python, python)
592 if test "X$vi_cv_path_python" != "X"; then
594 dnl -- get its version number
595 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
596 [[vi_cv_var_python_version=`
597 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
600 dnl -- it must be at least version 1.4
601 AC_MSG_CHECKING(Python is 1.4 or better)
602 if ${vi_cv_path_python} -c \
603 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
607 dnl -- find where python thinks it was installed
608 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
609 [ vi_cv_path_python_pfx=`
610 ${vi_cv_path_python} -c \
611 "import sys; print sys.prefix"` ])
613 dnl -- and where it thinks it runs
614 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
615 [ vi_cv_path_python_epfx=`
616 ${vi_cv_path_python} -c \
617 "import sys; print sys.exec_prefix"` ])
619 dnl -- python's internal library path
621 AC_CACHE_VAL(vi_cv_path_pythonpath,
622 [ vi_cv_path_pythonpath=`
624 ${vi_cv_path_python} -c \
625 "import sys, string; print string.join(sys.path,':')"` ])
627 dnl -- where the Python implementation library archives are
629 AC_ARG_WITH(python-config-dir,
630 [ --with-python-config-dir=PATH Python's config directory],
631 [ vi_cv_path_python_conf="${withval}" ] )
633 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
635 vi_cv_path_python_conf=
636 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
637 for subdir in lib share; do
638 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
639 if test -d "$d" && test -f "$d/config.c"; then
640 vi_cv_path_python_conf="$d"
646 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
648 if test "X$PYTHON_CONFDIR" = "X"; then
649 AC_MSG_RESULT([can't find it!])
652 dnl -- we need to examine Python's config/Makefile too
653 dnl see what the interpreter is built from
654 AC_CACHE_VAL(vi_cv_path_python_plibs,
656 tmp_mkf="/tmp/Makefile-conf$$"
657 cat ${PYTHON_CONFDIR}/Makefile - <<'eof' >${tmp_mkf}
659 @echo "python_MODLIBS='$(MODLIBS)'"
660 @echo "python_LIBS='$(LIBS)'"
661 @echo "python_SYSLIBS='$(SYSLIBS)'"
662 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
664 dnl -- delete the lines from make about Entering/Leaving directory
665 eval "`cd ${PYTHON_CONFDIR} && make -f ${tmp_mkf} __ | sed '/ directory /d'`"
667 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
668 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
669 vi_cv_path_python_plibs="-framework Python"
671 if test "${vi_cv_var_python_version}" = "1.4"; then
672 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
674 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
676 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
677 dnl remove -ltermcap, it can conflict with an earlier -lncurses
678 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
682 PYTHON_LIBS="${vi_cv_path_python_plibs}"
683 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
684 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
686 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}"
688 PYTHON_SRC="if_python.c"
689 dnl For Mac OSX 10.2 config.o is included in the Python library.
690 if test "x$MACOSX" = "xyes"; then
691 PYTHON_OBJ="objects/if_python.o"
693 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
695 if test "${vi_cv_var_python_version}" = "1.4"; then
696 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
698 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
700 dnl On FreeBSD linking with "-pthread" is required to use threads.
701 dnl _THREAD_SAFE must be used for compiling then.
702 dnl The "-pthread" is added to $LIBS, so that the following check for
703 dnl sigaltstack() will look in libc_r (it's there in libc!).
704 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
705 dnl will then define target-specific defines, e.g., -D_REENTRANT.
706 dnl Don't do this for Mac OSX, -pthread will generate a warning.
707 AC_MSG_CHECKING([if -pthread should be used])
710 dnl if test "x$MACOSX" != "xyes"; then
711 if test "`(uname) 2>/dev/null`" != Darwin; then
712 test "$GCC" = yes && threadsafe_flag="-pthread"
713 if test "`(uname) 2>/dev/null`" = FreeBSD; then
714 threadsafe_flag="-D_THREAD_SAFE"
715 thread_lib="-pthread"
719 if test -n "$threadsafe_flag"; then
721 CFLAGS="$CFLAGS $threadsafe_flag"
722 LIBS="$LIBS $thread_lib"
724 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
725 AC_MSG_RESULT(no); LIBS=$libs_save_old
732 dnl check that compiling a simple program still works with the flags
733 dnl added for Python.
734 AC_MSG_CHECKING([if compile and link flags for Python are sane])
737 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
738 LIBS="$LIBS $PYTHON_LIBS"
740 AC_MSG_RESULT(yes); python_ok=yes,
741 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
744 if test $python_ok = yes; then
745 AC_DEFINE(FEAT_PYTHON)
756 AC_MSG_RESULT(too old)
760 AC_SUBST(PYTHON_CONFDIR)
761 AC_SUBST(PYTHON_LIBS)
762 AC_SUBST(PYTHON_GETPATH_CFLAGS)
763 AC_SUBST(PYTHON_CFLAGS)
767 AC_MSG_CHECKING(--enable-tclinterp argument)
768 AC_ARG_ENABLE(tclinterp,
769 [ --enable-tclinterp Include Tcl interpreter.], ,
770 [enable_tclinterp="no"])
771 AC_MSG_RESULT($enable_tclinterp)
773 if test "$enable_tclinterp" = "yes"; then
775 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
776 AC_MSG_CHECKING(--with-tclsh argument)
777 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
778 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
779 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
780 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
781 AC_SUBST(vi_cv_path_tcl)
783 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
784 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
785 tclsh_name="tclsh8.4"
786 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
788 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
789 tclsh_name="tclsh8.2"
790 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
792 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
793 tclsh_name="tclsh8.0"
794 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
796 dnl still didn't find it, try without version number
797 if test "X$vi_cv_path_tcl" = "X"; then
799 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
801 if test "X$vi_cv_path_tcl" != "X"; then
802 AC_MSG_CHECKING(Tcl version)
803 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
804 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
805 AC_MSG_RESULT($tclver - OK);
806 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 -`
808 AC_MSG_CHECKING(for location of Tcl include)
809 if test "x$MACOSX" != "xyes"; then
810 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
812 dnl For Mac OS X 10.3, use the OS-provided framework location
813 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
816 for try in $tclinc; do
817 if test -f "$try/tcl.h"; then
818 AC_MSG_RESULT($try/tcl.h)
823 if test -z "$TCL_INC"; then
824 AC_MSG_RESULT(<not found>)
827 if test -z "$SKIP_TCL"; then
828 AC_MSG_CHECKING(for location of tclConfig.sh script)
829 if test "x$MACOSX" != "xyes"; then
830 tclcnf=`echo $tclinc | sed s/include/lib/g`
831 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
833 dnl For Mac OS X 10.3, use the OS-provided framework location
834 tclcnf="/System/Library/Frameworks/Tcl.framework"
836 for try in $tclcnf; do
837 if test -f $try/tclConfig.sh; then
838 AC_MSG_RESULT($try/tclConfig.sh)
840 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
841 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
842 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
843 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
844 TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'`
848 if test -z "$TCL_LIBS"; then
849 AC_MSG_RESULT(<not found>)
850 AC_MSG_CHECKING(for Tcl library by myself)
851 tcllib=`echo $tclinc | sed s/include/lib/g`
852 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
853 for ext in .so .a ; do
854 for ver in "" $tclver ; do
855 for try in $tcllib ; do
857 if test -f $try/lib$trylib ; then
858 AC_MSG_RESULT($try/lib$trylib)
859 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
860 if test "`(uname) 2>/dev/null`" = SunOS &&
861 uname -r | grep '^5' >/dev/null; then
862 TCL_LIBS="$TCL_LIBS -R $try"
869 if test -z "$TCL_LIBS"; then
870 AC_MSG_RESULT(<not found>)
874 if test -z "$SKIP_TCL"; then
877 TCL_OBJ=objects/if_tcl.o
879 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
883 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
893 AC_MSG_CHECKING(--enable-rubyinterp argument)
894 AC_ARG_ENABLE(rubyinterp,
895 [ --enable-rubyinterp Include Ruby interpreter.], ,
896 [enable_rubyinterp="no"])
897 AC_MSG_RESULT($enable_rubyinterp)
898 if test "$enable_rubyinterp" = "yes"; then
899 AC_SUBST(vi_cv_path_ruby)
900 AC_PATH_PROG(vi_cv_path_ruby, ruby)
901 if test "X$vi_cv_path_ruby" != "X"; then
902 AC_MSG_CHECKING(Ruby version)
903 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
905 AC_MSG_CHECKING(Ruby header files)
906 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
907 if test "X$rubyhdrdir" != "X"; then
908 AC_MSG_RESULT($rubyhdrdir)
909 RUBY_CFLAGS="-I$rubyhdrdir"
910 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
911 if test "X$rubylibs" != "X"; then
912 RUBY_LIBS="$rubylibs"
914 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
915 if test -f "$rubyhdrdir/$librubyarg"; then
916 librubyarg="$rubyhdrdir/$librubyarg"
918 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
919 if test -f "$rubylibdir/$librubyarg"; then
920 librubyarg="$rubylibdir/$librubyarg"
921 elif test "$librubyarg" = "libruby.a"; then
922 dnl required on Mac OS 10.3 where libruby.a doesn't exist
925 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
929 if test "X$librubyarg" != "X"; then
930 RUBY_LIBS="$librubyarg $RUBY_LIBS"
932 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
933 if test "X$rubyldflags" != "X"; then
934 LDFLAGS="$rubyldflags $LDFLAGS"
937 RUBY_OBJ="objects/if_ruby.o"
938 RUBY_PRO="if_ruby.pro"
941 AC_MSG_RESULT(not found, disabling Ruby)
944 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
951 AC_SUBST(RUBY_CFLAGS)
954 AC_MSG_CHECKING(--enable-cscope argument)
955 AC_ARG_ENABLE(cscope,
956 [ --enable-cscope Include cscope interface.], ,
957 [enable_cscope="no"])
958 AC_MSG_RESULT($enable_cscope)
959 if test "$enable_cscope" = "yes"; then
960 AC_DEFINE(FEAT_CSCOPE)
963 AC_MSG_CHECKING(--enable-workshop argument)
964 AC_ARG_ENABLE(workshop,
965 [ --enable-workshop Include Sun Visual Workshop support.], ,
966 [enable_workshop="no"])
967 AC_MSG_RESULT($enable_workshop)
968 if test "$enable_workshop" = "yes"; then
969 AC_DEFINE(FEAT_SUN_WORKSHOP)
970 WORKSHOP_SRC="workshop.c integration.c"
971 AC_SUBST(WORKSHOP_SRC)
972 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
973 AC_SUBST(WORKSHOP_OBJ)
974 if test "${enable_gui-xxx}" = xxx; then
979 AC_MSG_CHECKING(--disable-netbeans argument)
980 AC_ARG_ENABLE(netbeans,
981 [ --disable-netbeans Disable NetBeans integration support.],
982 , [enable_netbeans="yes"])
983 if test "$enable_netbeans" = "yes"; then
985 dnl On Solaris we need the socket and nsl library.
986 AC_CHECK_LIB(socket, socket)
987 AC_CHECK_LIB(nsl, gethostbyname)
988 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
995 #include <netinet/in.h>
997 #include <sys/types.h>
998 #include <sys/socket.h>
999 /* Check bitfields */
1001 unsigned int initDone:1;
1005 /* Check creating a socket. */
1006 struct sockaddr_in server;
1007 (void)socket(AF_INET, SOCK_STREAM, 0);
1009 (void)gethostbyname("microsoft.com");
1010 if (errno == ECONNREFUSED)
1011 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1014 AC_MSG_RESULT(no); enable_netbeans="no")
1018 if test "$enable_netbeans" = "yes"; then
1019 AC_DEFINE(FEAT_NETBEANS_INTG)
1020 NETBEANS_SRC="netbeans.c"
1021 AC_SUBST(NETBEANS_SRC)
1022 NETBEANS_OBJ="objects/netbeans.o"
1023 AC_SUBST(NETBEANS_OBJ)
1026 AC_MSG_CHECKING(--enable-sniff argument)
1027 AC_ARG_ENABLE(sniff,
1028 [ --enable-sniff Include Sniff interface.], ,
1029 [enable_sniff="no"])
1030 AC_MSG_RESULT($enable_sniff)
1031 if test "$enable_sniff" = "yes"; then
1032 AC_DEFINE(FEAT_SNIFF)
1033 SNIFF_SRC="if_sniff.c"
1035 SNIFF_OBJ="objects/if_sniff.o"
1039 AC_MSG_CHECKING(--enable-multibyte argument)
1040 AC_ARG_ENABLE(multibyte,
1041 [ --enable-multibyte Include multibyte editing support.], ,
1042 [enable_multibyte="no"])
1043 AC_MSG_RESULT($enable_multibyte)
1044 if test "$enable_multibyte" = "yes"; then
1045 AC_DEFINE(FEAT_MBYTE)
1048 AC_MSG_CHECKING(--enable-hangulinput argument)
1049 AC_ARG_ENABLE(hangulinput,
1050 [ --enable-hangulinput Include Hangul input support.], ,
1051 [enable_hangulinput="no"])
1052 AC_MSG_RESULT($enable_hangulinput)
1054 AC_MSG_CHECKING(--enable-xim argument)
1056 [ --enable-xim Include XIM input support.],
1057 AC_MSG_RESULT($enable_xim),
1058 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1059 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1061 AC_MSG_CHECKING(--enable-fontset argument)
1062 AC_ARG_ENABLE(fontset,
1063 [ --enable-fontset Include X fontset output support.], ,
1064 [enable_fontset="no"])
1065 AC_MSG_RESULT($enable_fontset)
1066 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1068 test -z "$with_x" && with_x=yes
1069 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1070 if test "$with_x" = no; then
1071 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1073 dnl Do this check early, so that its failure can override user requests.
1075 AC_PATH_PROG(xmkmfpath, xmkmf)
1079 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1080 dnl be compiled with a special option.
1081 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1082 if test "$OS390Unix" = "yes"; then
1083 CFLAGS="$CFLAGS -W c,dll"
1084 LDFLAGS="$LDFLAGS -W l,dll"
1085 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1088 dnl On my HPUX system the X include dir is found, but the lib dir not.
1089 dnl This is a desparate try to fix this.
1091 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1092 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1093 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1094 X_LIBS="$X_LIBS -L$x_libraries"
1095 if test "`(uname) 2>/dev/null`" = SunOS &&
1096 uname -r | grep '^5' >/dev/null; then
1097 X_LIBS="$X_LIBS -R $x_libraries"
1101 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1102 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1103 AC_MSG_RESULT(Corrected X includes to $x_includes)
1104 X_CFLAGS="$X_CFLAGS -I$x_includes"
1107 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1108 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1109 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1110 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1111 dnl Same for "-R/usr/lib ".
1112 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1115 dnl Check if the X11 header files are correctly installed. On some systems
1116 dnl Xlib.h includes files that don't exist
1117 AC_MSG_CHECKING(if X11 header files can be found)
1119 CFLAGS="$CFLAGS $X_CFLAGS"
1120 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1122 AC_MSG_RESULT(no); no_x=yes)
1125 if test "${no_x-no}" = yes; then
1132 ac_save_LDFLAGS="$LDFLAGS"
1133 LDFLAGS="-L$x_libraries $LDFLAGS"
1135 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1136 dnl For HP-UX 10.20 it must be before -lSM -lICE
1137 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1138 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1140 dnl Some systems need -lnsl -lsocket when testing for ICE.
1141 dnl The check above doesn't do this, try here (again). Also needed to get
1142 dnl them after Xdmcp. link.sh will remove them when not needed.
1143 dnl Check for other function than above to avoid the cached value
1144 AC_CHECK_LIB(ICE, IceOpenConnection,
1145 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1147 dnl Check for -lXpm (needed for some versions of Motif)
1148 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1149 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1150 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1152 dnl Check that the X11 header files don't use implicit declarations
1153 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1155 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1156 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1158 CFLAGS="$CFLAGS -Wno-implicit-int"
1159 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1160 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1161 AC_MSG_RESULT(test failed)
1166 LDFLAGS="$ac_save_LDFLAGS"
1171 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1173 AC_MSG_CHECKING(--enable-gui argument)
1175 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
1177 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1178 dnl Do not use character classes for portability with old tools.
1179 enable_gui_canon=`echo "_$enable_gui" | \
1180 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1182 dnl Skip everything by default.
1193 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1195 case "$enable_gui_canon" in
1196 no) AC_MSG_RESULT(no GUI support)
1198 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1199 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1200 photon) AC_MSG_RESULT(Photon GUI support) ;;
1201 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1205 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1207 case "$enable_gui_canon" in
1208 no) AC_MSG_RESULT(no GUI support)
1210 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1211 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1212 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1213 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1219 case "$enable_gui_canon" in
1220 no|none) AC_MSG_RESULT(no GUI support) ;;
1221 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1229 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1231 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1234 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1237 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1241 motif) AC_MSG_RESULT(Motif GUI support)
1243 athena) AC_MSG_RESULT(Athena GUI support)
1245 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1247 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1252 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1253 AC_MSG_CHECKING(whether or not to look for GTK)
1254 AC_ARG_ENABLE(gtk-check,
1255 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1256 , enable_gtk_check="yes")
1257 AC_MSG_RESULT($enable_gtk_check)
1258 if test "x$enable_gtk_check" = "xno"; then
1264 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1265 -a "$enable_gui_canon" != "gnome2"; then
1266 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1267 AC_ARG_ENABLE(gtk2-check,
1268 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1269 , enable_gtk2_check="yes")
1270 AC_MSG_RESULT($enable_gtk2_check)
1271 if test "x$enable_gtk2_check" = "xno"; then
1276 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1277 -a "$enable_gui_canon" != "gnome2"; then
1278 AC_MSG_CHECKING(whether or not to look for GNOME)
1279 AC_ARG_ENABLE(gnome-check,
1280 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1281 , enable_gnome_check="no")
1282 AC_MSG_RESULT($enable_gnome_check)
1283 if test "x$enable_gnome_check" = "xno"; then
1288 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1289 AC_MSG_CHECKING(whether or not to look for Motif)
1290 AC_ARG_ENABLE(motif-check,
1291 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1292 , enable_motif_check="yes")
1293 AC_MSG_RESULT($enable_motif_check)
1294 if test "x$enable_motif_check" = "xno"; then
1299 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1300 AC_MSG_CHECKING(whether or not to look for Athena)
1301 AC_ARG_ENABLE(athena-check,
1302 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1303 , enable_athena_check="yes")
1304 AC_MSG_RESULT($enable_athena_check)
1305 if test "x$enable_athena_check" = "xno"; then
1310 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1311 AC_MSG_CHECKING(whether or not to look for neXtaw)
1312 AC_ARG_ENABLE(nextaw-check,
1313 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1314 , enable_nextaw_check="yes")
1315 AC_MSG_RESULT($enable_nextaw_check);
1316 if test "x$enable_nextaw_check" = "xno"; then
1321 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1322 AC_MSG_CHECKING(whether or not to look for Carbon)
1323 AC_ARG_ENABLE(carbon-check,
1324 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1325 , enable_carbon_check="yes")
1326 AC_MSG_RESULT($enable_carbon_check);
1327 if test "x$enable_carbon_check" = "xno"; then
1333 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1334 AC_MSG_CHECKING(for Carbon GUI)
1335 dnl already did the check, just give the message
1338 if test "$VIMNAME" = "vim"; then
1342 dnl Default install directory is not /usr/local
1343 if test x$prefix = xNONE; then
1344 prefix=/Applications
1347 dnl Sorry for the hard coded default
1348 datadir='${prefix}/Vim.app/Contents/Resources'
1350 dnl skip everything else
1362 dnl Get the cflags and libraries from the gtk-config script
1365 dnl define an autoconf function to check for a specified version of GTK, and
1366 dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1368 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1369 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1371 AC_DEFUN(AM_PATH_GTK,
1373 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1375 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1376 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1378 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1379 && $PKG_CONFIG --exists gtk+-2.0; then
1381 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1382 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1383 dnl something like that.
1384 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1385 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1386 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1387 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1388 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1389 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1390 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1391 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1392 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1394 elif test "X$GTK_CONFIG" != "Xno"; then
1396 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1398 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1399 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1400 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1401 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1402 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1403 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1404 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1410 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1412 ac_save_CFLAGS="$CFLAGS"
1413 ac_save_LIBS="$LIBS"
1414 CFLAGS="$CFLAGS $GTK_CFLAGS"
1415 LIBS="$LIBS $GTK_LIBS"
1418 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1419 dnl checks the results of gtk-config to some extent
1423 #include <gtk/gtk.h>
1429 int major, minor, micro;
1432 system ("touch conf.gtktest");
1434 /* HP/UX 9 (%@#!) writes to sscanf strings */
1435 tmp_version = g_strdup("$min_gtk_version");
1436 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
1437 printf("%s, bad version string\n", "$min_gtk_version");
1441 if ((gtk_major_version > major) ||
1442 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1443 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1444 (gtk_micro_version >= micro)))
1450 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1451 CFLAGS="$ac_save_CFLAGS"
1452 LIBS="$ac_save_LIBS"
1455 if test "x$no_gtk" = x ; then
1456 if test "x$enable_gtktest" = "xyes"; then
1457 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1459 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1461 ifelse([$2], , :, [$2])
1467 ifelse([$3], , :, [$3])
1474 ifelse([$3], , :, [$3])
1476 AC_SUBST(GTK_CFLAGS)
1481 dnl ---------------------------------------------------------------------------
1483 dnl ---------------------------------------------------------------------------
1484 AC_DEFUN([GNOME_INIT_HOOK],
1486 AC_SUBST(GNOME_LIBS)
1487 AC_SUBST(GNOME_LIBDIR)
1488 AC_SUBST(GNOME_INCLUDEDIR)
1490 AC_ARG_WITH(gnome-includes,
1491 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1492 [CFLAGS="$CFLAGS -I$withval"]
1495 AC_ARG_WITH(gnome-libs,
1496 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1497 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1501 [ --with-gnome Specify prefix for GNOME files],
1502 if test x$withval = xyes; then
1504 ifelse([$1], [], :, [$1])
1506 if test "x$withval" = xno; then
1510 LDFLAGS="$LDFLAGS -L$withval/lib"
1511 CFLAGS="$CFLAGS -I$withval/include"
1512 gnome_prefix=$withval/lib
1517 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1519 AC_MSG_CHECKING(for libgnomeui-2.0)
1520 if $PKG_CONFIG --exists libgnomeui-2.0; then
1522 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1523 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1524 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1526 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1527 dnl This might not be the right way but it works for me...
1528 AC_MSG_CHECKING(for FreeBSD)
1529 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1530 AC_MSG_RESULT(yes, adding -pthread)
1531 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1532 GNOME_LIBS="$GNOME_LIBS -pthread"
1538 AC_MSG_RESULT(not found)
1539 if test "x$2" = xfail; then
1540 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1544 elif test "x$want_gnome" = xyes; then
1546 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1547 if test "$GNOME_CONFIG" = "no"; then
1548 no_gnome_config="yes"
1550 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1551 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1553 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1554 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1555 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1559 no_gnome_config="yes"
1563 if test x$exec_prefix = xNONE; then
1564 if test x$prefix = xNONE; then
1565 gnome_prefix=$ac_default_prefix/lib
1567 gnome_prefix=$prefix/lib
1570 gnome_prefix=`eval echo \`echo $libdir\``
1573 if test "$no_gnome_config" = "yes"; then
1574 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1575 if test -f $gnome_prefix/gnomeConf.sh; then
1576 AC_MSG_RESULT(found)
1577 echo "loading gnome configuration from" \
1578 "$gnome_prefix/gnomeConf.sh"
1579 . $gnome_prefix/gnomeConf.sh
1582 AC_MSG_RESULT(not found)
1583 if test x$2 = xfail; then
1584 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1592 AC_DEFUN([GNOME_INIT],[
1593 GNOME_INIT_HOOK([],fail)
1597 dnl ---------------------------------------------------------------------------
1598 dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1599 dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1600 dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1601 dnl ---------------------------------------------------------------------------
1602 if test -z "$SKIP_GTK"; then
1604 AC_MSG_CHECKING(--with-gtk-prefix argument)
1605 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1606 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1607 gtk_config_prefix=""; AC_MSG_RESULT(no))
1609 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1610 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1611 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1612 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1614 AC_MSG_CHECKING(--disable-gtktest argument)
1615 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1616 , enable_gtktest=yes)
1617 if test "x$enable_gtktest" = "xyes" ; then
1618 AC_MSG_RESULT(gtk test enabled)
1620 AC_MSG_RESULT(gtk test disabled)
1623 if test "x$gtk_config_prefix" != "x" ; then
1624 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1625 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1627 if test "x$gtk_config_exec_prefix" != "x" ; then
1628 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1629 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1631 if test "X$GTK_CONFIG" = "X"; then
1632 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1633 if test "X$GTK_CONFIG" = "Xno"; then
1634 dnl Some distributions call it gtk12-config, annoying!
1635 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1636 GTK_CONFIG="$GTK12_CONFIG"
1639 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1641 if test "X$PKG_CONFIG" = "X"; then
1642 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1645 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1646 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1647 dnl problems (bold fonts, --remote doesn't work).
1648 if test "X$SKIP_GTK2" != "XYES"; then
1650 [GUI_LIB_LOC="$GTK_LIBDIR"
1651 GTK_LIBNAME="$GTK_LIBS"
1652 GUI_INC_LOC="$GTK_CFLAGS"], )
1653 if test "x$GTK_CFLAGS" != "x"; then
1658 AC_SUBST(GTK_LIBNAME)
1662 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1663 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1664 dnl were test versions.
1665 if test "x$GUITYPE" != "xGTK"; then
1668 [GTK_LIBNAME="$GTK_LIBS"
1669 GUI_INC_LOC="$GTK_CFLAGS"], )
1670 if test "x$GTK_CFLAGS" != "x"; then
1675 AC_SUBST(GTK_LIBNAME)
1679 dnl Give a warning if GTK is older than 1.2.3
1680 if test "x$GUITYPE" = "xGTK"; then
1681 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1682 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1683 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1686 if test "0$gtk_major_version" -ge 2; then
1687 AC_DEFINE(HAVE_GTK2)
1688 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1689 || test "0$gtk_minor_version" -ge 2 \
1690 || test "0$gtk_major_version" -gt 2; then
1691 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1695 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1697 if test -z "$SKIP_GNOME"; then
1699 GNOME_INIT_HOOK([have_gnome=yes])
1700 if test x$have_gnome = xyes ; then
1701 AC_DEFINE(FEAT_GUI_GNOME)
1702 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1703 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1712 dnl Check for Motif include files location.
1713 dnl The LAST one found is used, this makes the highest version to be used,
1714 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1716 if test -z "$SKIP_MOTIF"; then
1717 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"
1718 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1719 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1721 AC_MSG_CHECKING(for location of Motif GUI includes)
1722 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1724 for try in $gui_includes; do
1725 if test -f "$try/Xm/Xm.h"; then
1729 if test -n "$GUI_INC_LOC"; then
1730 if test "$GUI_INC_LOC" = /usr/include; then
1732 AC_MSG_RESULT(in default path)
1734 AC_MSG_RESULT($GUI_INC_LOC)
1737 AC_MSG_RESULT(<not found>)
1742 dnl Check for Motif library files location. In the same order as the include
1743 dnl files, to avoid a mixup if several versions are present
1745 if test -z "$SKIP_MOTIF"; then
1746 AC_MSG_CHECKING(--with-motif-lib argument)
1747 AC_ARG_WITH(motif-lib,
1748 [ --with-motif-lib=STRING Library for Motif ],
1749 [ MOTIF_LIBNAME="${withval}" ] )
1751 if test -n "$MOTIF_LIBNAME"; then
1752 AC_MSG_RESULT($MOTIF_LIBNAME)
1757 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1758 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1760 AC_MSG_CHECKING(for location of Motif GUI libs)
1761 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"
1763 for try in $gui_libs; do
1764 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1765 if test -f "$libtry"; then
1770 if test -n "$GUI_LIB_LOC"; then
1771 dnl Remove /usr/lib, it causes trouble on some systems
1772 if test "$GUI_LIB_LOC" = /usr/lib; then
1774 AC_MSG_RESULT(in default path)
1776 if test -n "$GUI_LIB_LOC"; then
1777 AC_MSG_RESULT($GUI_LIB_LOC)
1778 if test "`(uname) 2>/dev/null`" = SunOS &&
1779 uname -r | grep '^5' >/dev/null; then
1780 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1786 AC_MSG_RESULT(<not found>)
1792 if test -z "$SKIP_MOTIF"; then
1796 AC_SUBST(MOTIF_LIBNAME)
1799 dnl Check if the Athena files can be found
1803 if test -z "$SKIP_ATHENA"; then
1804 AC_MSG_CHECKING(if Athena header files can be found)
1806 CFLAGS="$CFLAGS $X_CFLAGS"
1808 #include <X11/Intrinsic.h>
1809 #include <X11/Xaw/Paned.h>], ,
1811 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1815 if test -z "$SKIP_ATHENA"; then
1819 if test -z "$SKIP_NEXTAW"; then
1820 AC_MSG_CHECKING(if neXtaw header files can be found)
1822 CFLAGS="$CFLAGS $X_CFLAGS"
1824 #include <X11/Intrinsic.h>
1825 #include <X11/neXtaw/Paned.h>], ,
1827 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1831 if test -z "$SKIP_NEXTAW"; then
1835 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1836 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1837 dnl Avoid adding it when it twice
1838 if test -n "$GUI_INC_LOC"; then
1839 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1841 if test -n "$GUI_LIB_LOC"; then
1842 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1845 dnl Check for -lXext and then for -lXmu
1846 ldflags_save=$LDFLAGS
1847 LDFLAGS="$X_LIBS $LDFLAGS"
1848 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1849 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1850 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1851 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1852 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1853 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1854 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1855 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1856 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1857 if test -z "$SKIP_MOTIF"; then
1858 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1859 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1861 LDFLAGS=$ldflags_save
1863 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1864 AC_MSG_CHECKING(for extra X11 defines)
1867 if mkdir conftestdir; then
1869 cat > Imakefile <<'EOF'
1871 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1873 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1874 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1879 if test -z "$NARROW_PROTO"; then
1882 AC_MSG_RESULT($NARROW_PROTO)
1884 AC_SUBST(NARROW_PROTO)
1887 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1888 dnl use the X11 include path
1889 if test "$enable_xsmp" = "yes"; then
1890 cppflags_save=$CPPFLAGS
1891 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1892 AC_CHECK_HEADERS(X11/SM/SMlib.h)
1893 CPPFLAGS=$cppflags_save
1897 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1898 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1899 cppflags_save=$CPPFLAGS
1900 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1901 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1903 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1904 if test ! "$enable_xim" = "no"; then
1905 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1906 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1908 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1910 CPPFLAGS=$cppflags_save
1912 dnl automatically enable XIM when hangul input isn't enabled
1913 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1914 -a "x$GUITYPE" != "xNONE" ; then
1915 AC_MSG_RESULT(X GUI selected; xim has been enabled)
1920 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1921 cppflags_save=$CPPFLAGS
1922 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1923 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1924 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1926 #include <X11/Intrinsic.h>
1927 #include <X11/Xmu/Editres.h>],
1930 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1932 CPPFLAGS=$cppflags_save
1935 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1936 if test -z "$SKIP_MOTIF"; then
1937 cppflags_save=$CPPFLAGS
1938 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1939 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
1940 Xm/UnhighlightT.h Xm/Notebook.h)
1942 if test $ac_cv_header_Xm_XpmP_h = yes; then
1943 dnl Solaris uses XpmAttributes_21, very annoying.
1944 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1945 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
1946 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
1947 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1950 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1952 CPPFLAGS=$cppflags_save
1955 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
1956 AC_MSG_RESULT(no GUI selected; xim has been disabled)
1959 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
1960 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
1963 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
1964 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
1968 if test -z "$SKIP_PHOTON"; then
1972 AC_SUBST(GUI_INC_LOC)
1973 AC_SUBST(GUI_LIB_LOC)
1975 AC_SUBST(GUI_X_LIBS)
1977 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
1978 AC_MSG_ERROR([cannot use workshop without Motif])
1981 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
1982 if test "$enable_xim" = "yes"; then
1985 if test "$enable_fontset" = "yes"; then
1986 AC_DEFINE(FEAT_XFONTSET)
1990 dnl ---------------------------------------------------------------------------
1991 dnl end of GUI-checking
1992 dnl ---------------------------------------------------------------------------
1995 dnl Only really enable hangul input when GUI and XFONTSET are available
1996 if test "$enable_hangulinput" = "yes"; then
1997 if test "x$GUITYPE" = "xNONE"; then
1998 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
1999 enable_hangulinput=no
2001 AC_DEFINE(FEAT_HANGULIN)
2002 HANGULIN_SRC=hangulin.c
2003 AC_SUBST(HANGULIN_SRC)
2004 HANGULIN_OBJ=objects/hangulin.o
2005 AC_SUBST(HANGULIN_OBJ)
2009 dnl Checks for libraries and include files.
2011 AC_MSG_CHECKING(quality of toupper)
2012 AC_TRY_RUN([#include <ctype.h>
2013 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }],
2014 AC_DEFINE(BROKEN_TOUPPER) AC_MSG_RESULT(bad),
2015 AC_MSG_RESULT(good), AC_MSG_ERROR(failed to compile test program))
2017 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2018 AC_TRY_COMPILE(, [printf("(" __DATE__ " " __TIME__ ")");],
2019 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2022 dnl Checks for header files.
2023 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2024 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2025 if test "$HAS_ELF" = 1; then
2026 AC_CHECK_LIB(elf, main)
2031 dnl check for standard headers, we don't use this in Vim but other stuff
2032 dnl in autoconf needs it
2036 dnl If sys/wait.h is not found it might still exist but not be POSIX
2037 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2038 if test $ac_cv_header_sys_wait_h = no; then
2039 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2040 AC_TRY_COMPILE([#include <sys/wait.h>],
2041 [union wait xx, yy; xx = yy],
2043 AC_DEFINE(HAVE_SYS_WAIT_H)
2044 AC_DEFINE(HAVE_UNION_WAIT),
2048 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2049 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2050 iconv.h langinfo.h unistd.h stropts.h errno.h \
2051 sys/resource.h sys/systeminfo.h locale.h \
2052 sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
2053 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2054 libgen.h util/debug.h util/msg18n.h frame.h \
2055 sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
2057 dnl pthread_np.h may exist but can only be used after including pthread.h
2058 AC_MSG_CHECKING([for pthread_np.h])
2060 #include <pthread.h>
2061 #include <pthread_np.h>],
2064 AC_DEFINE(HAVE_PTHREAD_NP_H),
2067 AC_CHECK_HEADERS(strings.h)
2068 if test "x$MACOSX" = "xyes"; then
2069 dnl The strings.h file on OS/X contains a warning and nothing useful.
2070 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2073 dnl Check if strings.h and string.h can both be included when defined.
2074 AC_MSG_CHECKING([if strings.h can be included after string.h])
2075 cppflags_save=$CPPFLAGS
2076 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2078 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2079 # define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2080 /* but don't do it on AIX 5.1 (Uribarri) */
2083 # include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2085 #ifdef HAVE_STRING_H
2086 # include <string.h>
2088 #if defined(HAVE_STRINGS_H)
2089 # include <strings.h>
2093 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2095 CPPFLAGS=$cppflags_save
2098 dnl Checks for typedefs, structures, and compiler characteristics.
2099 AC_PROG_GCC_TRADITIONAL
2107 AC_CHECK_TYPE(ino_t, long)
2108 AC_CHECK_TYPE(dev_t, unsigned)
2110 AC_MSG_CHECKING(for rlim_t)
2111 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2112 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2115 changequote(<<,>>)dnl
2116 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2119 #include <sys/types.h>
2124 #ifdef HAVE_SYS_RESOURCE_H
2125 #include <sys/resource.h>
2127 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2128 AC_MSG_RESULT($ac_cv_type_rlim_t)
2130 if test $ac_cv_type_rlim_t = no; then
2131 cat >> confdefs.h <<\EOF
2132 #define rlim_t unsigned long
2136 AC_MSG_CHECKING(for stack_t)
2137 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2138 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2140 AC_EGREP_CPP(stack_t,
2142 #include <sys/types.h>
2148 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2149 AC_MSG_RESULT($ac_cv_type_stack_t)
2151 if test $ac_cv_type_stack_t = no; then
2152 cat >> confdefs.h <<\EOF
2153 #define stack_t struct sigaltstack
2157 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2158 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2160 #include <sys/types.h>
2166 #include "confdefs.h"
2167 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2168 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2172 AC_MSG_CHECKING(--with-tlib argument)
2173 AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2174 if test -n "$with_tlib"; then
2175 AC_MSG_RESULT($with_tlib)
2176 LIBS="$LIBS -l$with_tlib"
2177 AC_MSG_CHECKING(for linking with $with_tlib library)
2178 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2179 dnl Need to check for tgetent() below.
2182 AC_MSG_RESULT([empty: automatic terminal library selection])
2183 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2184 dnl curses, because curses is much slower.
2185 dnl Newer versions of ncurses are preferred over anything.
2186 dnl Older versions of ncurses have bugs, get a new one!
2187 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
2188 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
2189 case "`uname -s 2>/dev/null`" in
2190 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
2191 *) tlibs="ncurses termlib termcap curses";;
2193 for libname in $tlibs; do
2194 AC_CHECK_LIB(${libname}, tgetent,,)
2195 if test "x$olibs" != "x$LIBS"; then
2196 dnl It's possible that a library is found but it doesn't work
2197 dnl e.g., shared library that cannot be found
2198 dnl compile and run a test program to be sure
2200 #ifdef HAVE_TERMCAP_H
2201 # include <termcap.h>
2203 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2204 res="OK", res="FAIL", res="FAIL")
2205 if test "$res" = "OK"; then
2208 AC_MSG_RESULT($libname library is not usable)
2212 if test "x$olibs" = "x$LIBS"; then
2213 AC_MSG_RESULT(no terminal library found)
2217 if test "x$olibs" = "x$LIBS"; then
2218 AC_MSG_CHECKING([for tgetent()])
2220 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2222 AC_MSG_ERROR([NOT FOUND!
2223 You need to install a terminal library; for example ncurses.
2224 Or specify the name of the library with --with-tlib.]))
2227 AC_MSG_CHECKING(whether we talk terminfo)
2229 #ifdef HAVE_TERMCAP_H
2230 # include <termcap.h>
2233 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }],
2234 AC_MSG_RESULT([no -- we are in termcap land]),
2235 AC_MSG_RESULT([yes -- terminfo spoken here]); AC_DEFINE(TERMINFO),
2236 AC_MSG_ERROR(failed to compile test program.))
2238 if test "x$olibs" != "x$LIBS"; then
2239 AC_MSG_CHECKING(what tgetent() returns for an unknown terminal)
2241 #ifdef HAVE_TERMCAP_H
2242 # include <termcap.h>
2245 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }],
2246 AC_MSG_RESULT(zero); AC_DEFINE(TGETENT_ZERO_ERR, 0),
2247 AC_MSG_RESULT(non-zero),
2248 AC_MSG_ERROR(failed to compile test program.))
2251 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2253 #ifdef HAVE_TERMCAP_H
2254 # include <termcap.h>
2256 ], [ospeed = 20000],
2257 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2259 AC_MSG_CHECKING(whether ospeed can be extern)
2261 #ifdef HAVE_TERMCAP_H
2262 # include <termcap.h>
2264 extern short ospeed;
2265 ], [ospeed = 20000],
2266 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2270 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2272 #ifdef HAVE_TERMCAP_H
2273 # include <termcap.h>
2275 ], [if (UP == 0 && BC == 0) PC = 1],
2276 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2278 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2280 #ifdef HAVE_TERMCAP_H
2281 # include <termcap.h>
2283 extern char *UP, *BC, PC;
2284 ], [if (UP == 0 && BC == 0) PC = 1],
2285 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2289 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2291 #ifdef HAVE_TERMCAP_H
2292 # include <termcap.h>
2294 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2295 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2298 dnl On some SCO machines sys/select redefines struct timeval
2299 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2301 #include <sys/types.h>
2302 #include <sys/time.h>
2303 #include <sys/select.h>], ,
2305 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2308 dnl AC_DECL_SYS_SIGLIST
2310 dnl Checks for pty.c (copied from screen) ==========================
2311 AC_MSG_CHECKING(for /dev/ptc)
2312 if test -r /dev/ptc; then
2313 AC_DEFINE(HAVE_DEV_PTC)
2319 AC_MSG_CHECKING(for SVR4 ptys)
2320 if test -c /dev/ptmx ; then
2321 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2322 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2328 AC_MSG_CHECKING(for ptyranges)
2329 if test -d /dev/ptym ; then
2339 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2340 dnl if test -c /dev/ptyp19; then
2341 dnl ptys=`echo /dev/ptyp??`
2343 dnl ptys=`echo $pdir/pty??`
2345 if test "$ptys" != "$pdir/pty??" ; then
2346 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2347 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2348 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2349 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2350 AC_MSG_RESULT([$p0 / $p1])
2352 AC_MSG_RESULT([don't know])
2355 dnl **** pty mode/group handling ****
2357 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2358 AC_MSG_CHECKING(default tty permissions/group)
2361 #include <sys/types.h>
2362 #include <sys/stat.h>
2371 if (!(x = ttyname(0))) exit(1);
2372 if (stat(x, &sb)) exit(1);
2374 if (om & 002) exit(0);
2375 m = system("mesg y");
2376 if (m == -1 || m == 127) exit(1);
2377 if (stat(x, &sb)) exit(1);
2379 if (chmod(x, om)) exit(1);
2380 if (m & 002) exit(0);
2381 if (sb.st_gid == getgid()) exit(1);
2382 if (!(fp=fopen("conftest_grp", "w")))
2384 fprintf(fp, "%d\n", sb.st_gid);
2389 if test -f conftest_grp; then
2390 ptygrp=`cat conftest_grp`
2391 AC_MSG_RESULT([pty mode: 0620, group: $ptygrp])
2392 AC_DEFINE(PTYMODE, 0620)
2393 AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
2395 AC_MSG_RESULT([ptys are world accessable])
2398 AC_MSG_RESULT([can't determine - assume ptys are world accessable]),
2399 AC_MSG_ERROR(failed to compile test program))
2402 dnl Checks for library functions. ===================================
2406 dnl find out what to use at the end of a signal function
2407 if test $ac_cv_type_signal = void; then
2408 AC_DEFINE(SIGRETURN, [return])
2410 AC_DEFINE(SIGRETURN, [return 0])
2413 dnl check if struct sigcontext is defined (used for SGI only)
2414 AC_MSG_CHECKING(for struct sigcontext)
2419 struct sigcontext *scont;
2420 scont = (struct sigcontext *)0;
2424 AC_DEFINE(HAVE_SIGCONTEXT),
2427 dnl tricky stuff: try to find out if getcwd() is implemented with
2428 dnl system("sh -c pwd")
2429 AC_MSG_CHECKING(getcwd implementation)
2431 char *dagger[] = { "IFS=pwd", 0 };
2435 extern char **environ;
2437 return getcwd(buffer, 500) ? 0 : 1;
2439 AC_MSG_RESULT(it is usable),
2440 AC_MSG_RESULT(it stinks)
2441 AC_DEFINE(BAD_GETCWD),
2442 AC_MSG_ERROR(failed to compile test program))
2444 dnl Check for functions in one big call, to reduce the size of configure
2445 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2446 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2447 memset nanosleep opendir putenv qsort readlink select setenv \
2448 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2449 sigvec strcasecmp strerror strftime stricmp strncasecmp \
2450 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2451 usleep utime utimes)
2453 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2454 AC_MSG_CHECKING(for st_blksize)
2456 [#include <sys/types.h>
2457 #include <sys/stat.h>],
2462 n = (int)st.st_blksize;],
2463 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2466 AC_MSG_CHECKING(whether stat() ignores a trailing slash)
2468 [#include <sys/types.h>
2469 #include <sys/stat.h>
2470 main() {struct stat st; exit(stat("configure/", &st) != 0); }],
2471 AC_MSG_RESULT(yes); AC_DEFINE(STAT_IGNORES_SLASH),
2472 AC_MSG_RESULT(no), AC_MSG_ERROR(failed to compile test program))
2474 dnl Link with iconv for charset translation, if not found without library.
2475 dnl check for iconv() requires including iconv.h
2476 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2477 dnl has been installed.
2478 AC_MSG_CHECKING(for iconv_open())
2480 LIBS="$LIBS -liconv"
2485 ], [iconv_open("fr", "to");],
2486 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2492 ], [iconv_open("fr", "to");],
2493 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2497 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2499 #ifdef HAVE_LANGINFO_H
2500 # include <langinfo.h>
2502 ], [char *cs = nl_langinfo(CODESET);],
2503 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2506 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2507 dnl when -lacl works, also try to use -lattr (required for Debian).
2508 AC_MSG_CHECKING(--disable-acl argument)
2510 [ --disable-acl Don't check for ACL support.],
2511 , [enable_acl="yes"])
2512 if test "$enable_acl" = "yes"; then
2514 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2515 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2516 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2518 AC_MSG_CHECKING(for POSIX ACL support)
2520 #include <sys/types.h>
2521 #ifdef HAVE_SYS_ACL_H
2522 # include <sys/acl.h>
2524 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2525 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2527 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2530 AC_MSG_CHECKING(for Solaris ACL support)
2532 #ifdef HAVE_SYS_ACL_H
2533 # include <sys/acl.h>
2534 #endif], [acl("foo", GETACLCNT, 0, NULL);
2536 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2539 AC_MSG_CHECKING(for AIX ACL support)
2541 #ifdef HAVE_SYS_ACL_H
2542 # include <sys/acl.h>
2544 #ifdef HAVE_SYS_ACCESS_H
2545 # include <sys/access.h>
2549 #include <sys/stat.h>
2552 struct acl *aclent;], [aclsize = sizeof(struct acl);
2553 aclent = (void *)malloc(aclsize);
2554 statacl("foo", STX_NORMAL, aclent, aclsize);
2556 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2562 AC_MSG_CHECKING(--disable-gpm argument)
2564 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2567 if test "$enable_gpm" = "yes"; then
2569 dnl Checking if gpm support can be compiled
2570 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2571 [olibs="$LIBS" ; LIBS="-lgpm"]
2574 #include <linux/keyboard.h>],
2575 [Gpm_GetLibVersion(NULL);],
2576 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2577 dnl FEAT_MOUSE_GPM if mouse support is included
2578 [vi_cv_have_gpm=yes],
2579 [vi_cv_have_gpm=no])
2582 if test $vi_cv_have_gpm = yes; then
2590 dnl rename needs to be checked separately to work on Nextstep with cc
2591 AC_MSG_CHECKING(for rename)
2592 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2593 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2596 dnl sysctl() may exist but not the arguments we use
2597 AC_MSG_CHECKING(for sysctl)
2599 [#include <sys/types.h>
2600 #include <sys/sysctl.h>],
2605 mib[1] = HW_USERMEM;
2607 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2609 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2610 AC_MSG_RESULT(not usable))
2612 dnl sysinfo() may exist but not be Linux compatible
2613 AC_MSG_CHECKING(for sysinfo)
2615 [#include <sys/types.h>
2616 #include <sys/sysinfo.h>],
2617 [ struct sysinfo sinfo;
2620 (void)sysinfo(&sinfo);
2623 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2624 AC_MSG_RESULT(not usable))
2626 dnl struct sysinfo may have the mem_unit field or not
2627 AC_MSG_CHECKING(for sysinfo.mem_unit)
2629 [#include <sys/types.h>
2630 #include <sys/sysinfo.h>],
2631 [ struct sysinfo sinfo;
2634 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2637 dnl sysconf() may exist but not support what we want to use
2638 AC_MSG_CHECKING(for sysconf)
2640 [#include <unistd.h>],
2641 [ (void)sysconf(_SC_PAGESIZE);
2642 (void)sysconf(_SC_PHYS_PAGES);
2644 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2645 AC_MSG_RESULT(not usable))
2647 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2648 dnl be printed with "%d", and avoids a warning for cross-compiling.
2650 AC_MSG_CHECKING(size of int)
2651 AC_CACHE_VAL(ac_cv_sizeof_int,
2652 [AC_TRY_RUN([#include <stdio.h>
2655 FILE *f=fopen("conftestval", "w");
2657 fprintf(f, "%d\n", (int)sizeof(int));
2660 ac_cv_sizeof_int=`cat conftestval`,
2662 AC_MSG_ERROR(failed to compile test program))])
2663 AC_MSG_RESULT($ac_cv_sizeof_int)
2664 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2666 AC_MSG_CHECKING(whether memmove/bcopy/memcpy handle overlaps)
2670 strcpy(buf, "abcdefghi");
2671 mch_memmove(buf, buf + 2, 3);
2672 if (strncmp(buf, "ababcf", 6))
2674 strcpy(buf, "abcdefghi");
2675 mch_memmove(buf + 2, buf, 3);
2676 if (strncmp(buf, "cdedef", 6))
2678 exit(0); /* libc version works properly. */
2681 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2682 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2684 AC_TRY_RUN([#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog],
2685 AC_DEFINE(USEMEMMOVE) AC_MSG_RESULT(memmove does),
2686 AC_TRY_RUN([#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog],
2687 AC_DEFINE(USEBCOPY) AC_MSG_RESULT(bcopy does),
2688 AC_TRY_RUN([#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog],
2689 AC_DEFINE(USEMEMCPY) AC_MSG_RESULT(memcpy does), AC_MSG_RESULT(no),
2690 AC_MSG_ERROR(failed to compile test program)),
2691 AC_MSG_ERROR(failed to compile test program)),
2692 AC_MSG_ERROR(failed to compile test program))
2694 dnl Check for multibyte locale functions
2695 dnl Find out if _Xsetlocale() is supported by libX11.
2696 dnl Check if X_LOCALE should be defined.
2698 if test "$enable_multibyte" = "yes"; then
2700 ldflags_save=$LDFLAGS
2701 if test -n "$x_includes" ; then
2702 CFLAGS="$CFLAGS -I$x_includes"
2703 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2704 AC_MSG_CHECKING(whether X_LOCALE needed)
2705 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2706 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2707 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2711 LDFLAGS=$ldflags_save
2714 dnl Link with xpg4, it is said to make Korean locale working
2715 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2717 dnl Check how we can run ctags
2718 dnl --version for Exuberant ctags (preferred)
2719 dnl Add --fields=+S to get function signatures for omni completion.
2720 dnl -t for typedefs (many ctags have this)
2721 dnl -s for static functions (Elvis ctags only?)
2722 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2723 dnl -i+m to test for older Exuberant ctags
2724 AC_MSG_CHECKING(how to create tags)
2725 test -f tags && mv tags tags.save
2726 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
2727 TAGPRG="ctags -I INIT+ --fields=+S"
2729 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2730 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2731 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2732 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2733 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2734 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2735 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2737 test -f tags.save && mv tags.save tags
2738 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2740 dnl Check how we can run man with a section number
2741 AC_MSG_CHECKING(how to run man with a section nr)
2743 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
2744 AC_MSG_RESULT($MANDEF)
2745 if test "$MANDEF" = "man -s"; then
2749 dnl Check if gettext() is working and if it needs -lintl
2750 AC_MSG_CHECKING(--disable-nls argument)
2752 [ --disable-nls Don't support NLS (gettext()).], ,
2755 if test "$enable_nls" = "yes"; then
2758 INSTALL_LANGS=install-languages
2759 AC_SUBST(INSTALL_LANGS)
2760 INSTALL_TOOL_LANGS=install-tool-languages
2761 AC_SUBST(INSTALL_TOOL_LANGS)
2763 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
2764 AC_MSG_CHECKING([for NLS])
2765 if test -f po/Makefile; then
2767 if test -n "$MSGFMT"; then
2769 [#include <libintl.h>],
2771 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
2775 [#include <libintl.h>],
2777 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
2778 AC_MSG_RESULT([gettext() doesn't work]);
2781 AC_MSG_RESULT([msgfmt not found - disabled]);
2783 if test $have_gettext = "yes"; then
2784 AC_DEFINE(HAVE_GETTEXT)
2787 dnl this was added in GNU gettext 0.10.36
2788 AC_CHECK_FUNCS(bind_textdomain_codeset)
2789 dnl _nl_msg_cat_cntr is required for GNU gettext
2790 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
2792 [#include <libintl.h>
2793 extern int _nl_msg_cat_cntr;],
2794 [++_nl_msg_cat_cntr;],
2795 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
2796 AC_MSG_RESULT([no]))
2799 AC_MSG_RESULT([no "po/Makefile" - disabled]);
2805 dnl Check for dynamic linking loader
2806 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
2807 if test x${DLL} = xdlfcn.h; then
2808 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
2809 AC_MSG_CHECKING([for dlopen()])
2811 extern void* dlopen();
2815 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2817 AC_MSG_CHECKING([for dlopen() in -ldl])
2821 extern void* dlopen();
2825 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2828 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
2830 AC_MSG_CHECKING([for dlsym()])
2832 extern void* dlsym();
2836 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2838 AC_MSG_CHECKING([for dlsym() in -ldl])
2842 extern void* dlsym();
2846 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2849 elif test x${DLL} = xdl.h; then
2850 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
2851 AC_MSG_CHECKING([for shl_load()])
2853 extern void* shl_load();
2857 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2859 AC_MSG_CHECKING([for shl_load() in -ldld])
2863 extern void* shl_load();
2867 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2871 AC_CHECK_HEADERS(setjmp.h)
2873 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
2874 dnl -ldl must come after DynaLoader.a
2875 if echo $LIBS | grep -e '-ldl' >/dev/null; then
2876 LIBS=`echo $LIBS | sed s/-ldl//`
2877 PERL_LIBS="$PERL_LIBS -ldl"
2881 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
2882 && test "x$GUITYPE" != "xCARBONGUI"; then
2883 AC_MSG_CHECKING(whether we need -framework Carbon)
2884 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
2885 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
2886 || test "x$features" = "xhuge"; then
2887 LIBS="$LIBS -framework Carbon"
2893 if test "x$MACARCH" = "xboth"; then
2894 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
2897 dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
2898 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
2899 dnl But only when making dependencies, cproto and lint don't take "-isystem".
2900 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
2901 dnl the number before the version number.
2902 AC_MSG_CHECKING(for GCC 3 or later)
2903 DEPEND_CFLAGS_FILTER=
2904 if test "$GCC" = yes; then
2905 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
2906 if test "$gccmajor" -gt "2"; then
2907 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
2910 if test "$DEPEND_CFLAGS_FILTER" = ""; then
2915 AC_SUBST(DEPEND_CFLAGS_FILTER)
2917 dnl write output files
2918 AC_OUTPUT(auto/config.mk:config.mk.in)
2920 dnl vim: set sw=2 tw=78 fo+=l: