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 or Cocoa is found, assume we don't want
162 dnl X11 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)
166 SAVE_CPPFLAGS=$CPPFLAGS
168 CPPFLAGS="$CPPFLAGS -ObjC"
169 CFLAGS="$CFLAGS -ObjC"
170 AC_CHECK_HEADER(Cocoa/Cocoa.h, COCOA=yes)
171 CPPFLAGS=$SAVE_CPPFLAGS
174 if test "x$CARBON" = "xyes" -o "x$COCOA" = "xyes"; then
175 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
181 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
182 dnl free. This happens in expand_filename(), because the optimizer swaps
183 dnl two blocks of code, both using "repl", that can't be swapped.
184 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
185 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
192 AC_SUBST(OS_EXTRA_SRC)
193 AC_SUBST(OS_EXTRA_OBJ)
195 dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
196 dnl Only when the directory exists and it wasn't there yet.
197 dnl For gcc don't do this when it is already in the default search path.
198 have_local_include=''
200 if test "$GCC" = yes; then
201 echo 'void f(){}' > conftest.c
202 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
203 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep '/usr/local/include'`
204 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep '/usr/local/lib'`
205 rm -f conftest.c conftest.o
207 if test -z "$have_local_lib" -a -d /usr/local/lib; then
208 tt=`echo "$LDFLAGS" | sed -e 's+-L/usr/local/lib ++g' -e 's+-L/usr/local/lib$++g'`
209 if test "$tt" = "$LDFLAGS"; then
210 LDFLAGS="$LDFLAGS -L/usr/local/lib"
213 if test -z "$have_local_include" -a -d /usr/local/include; then
214 tt=`echo "$CPPFLAGS" | sed -e 's+-I/usr/local/include ++g' -e 's+-I/usr/local/include$++g'`
215 if test "$tt" = "$CPPFLAGS"; then
216 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
220 AC_MSG_CHECKING(--with-vim-name argument)
221 AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
222 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
223 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
225 AC_MSG_CHECKING(--with-ex-name argument)
226 AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
227 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
228 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
230 AC_MSG_CHECKING(--with-view-name argument)
231 AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
232 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
233 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
236 AC_MSG_CHECKING(--with-global-runtime argument)
237 AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
238 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
241 AC_MSG_CHECKING(--with-modified-by argument)
242 AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
243 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
246 dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
247 AC_MSG_CHECKING(if character set is EBCDIC)
249 [ /* TryCompile function for CharSet.
250 Treat any failure as ASCII for compatibility with existing art.
251 Use compile-time rather than run-time tests for cross-compiler
254 make an error "Character set is not EBCDIC"
256 [ # TryCompile action if true
258 [ # TryCompile action if false
260 # end of TryCompile ])
261 # end of CacheVal CvEbcdic
262 AC_MSG_RESULT($cf_cv_ebcdic)
263 case "$cf_cv_ebcdic" in #(vi
264 yes) AC_DEFINE(EBCDIC)
267 *) line_break='"\\012"';;
271 if test "$cf_cv_ebcdic" = "yes"; then
272 dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
273 AC_MSG_CHECKING(for OS/390 Unix)
275 OS/390) OS390Unix="yes";
276 dnl If using cc the environment variable _CC_CCMODE must be
277 dnl set to "1", so that some compiler extensions are enabled.
278 dnl If using c89 the environment variable is named _CC_C89MODE.
279 dnl Note: compile with c89 never tested.
280 if test "$CC" = "cc"; then
284 if test "$CC" = "c89"; then
291 if test "$ccm" != "1"; then
293 echo "------------------------------------------"
294 echo " On OS/390 Unix, the environment variable"
295 echo " __CC_${ccn}MODE must be set to \"1\"!"
297 echo " export _CC_${ccn}MODE=1"
298 echo " and then call configure again."
299 echo "------------------------------------------"
302 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
312 dnl Check user requested features.
314 AC_MSG_CHECKING(--with-features argument)
315 AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
316 features="$withval"; AC_MSG_RESULT($features),
317 features="normal"; AC_MSG_RESULT(Defaulting to normal))
322 tiny) AC_DEFINE(FEAT_TINY) ;;
323 small) AC_DEFINE(FEAT_SMALL) ;;
324 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
325 dogvimdiff="installgvimdiff" ;;
326 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
327 dogvimdiff="installgvimdiff" ;;
328 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
329 dogvimdiff="installgvimdiff" ;;
330 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
336 AC_MSG_CHECKING(--with-compiledby argument)
337 AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
338 compiledby="$withval"; AC_MSG_RESULT($withval),
339 compiledby=""; AC_MSG_RESULT(no))
342 AC_MSG_CHECKING(--disable-xsmp argument)
344 [ --disable-xsmp Disable XSMP session management],
347 if test "$enable_xsmp" = "yes"; then
349 AC_MSG_CHECKING(--disable-xsmp-interact argument)
350 AC_ARG_ENABLE(xsmp-interact,
351 [ --disable-xsmp-interact Disable XSMP interaction],
352 , enable_xsmp_interact="yes")
353 if test "$enable_xsmp_interact" = "yes"; then
355 AC_DEFINE(USE_XSMP_INTERACT)
363 dnl Check for MzScheme feature.
364 AC_MSG_CHECKING(--enable-mzschemeinterp argument)
365 AC_ARG_ENABLE(mzschemeinterp,
366 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
367 [enable_mzschemeinterp="no"])
368 AC_MSG_RESULT($enable_mzschemeinterp)
370 if test "$enable_mzschemeinterp" = "yes"; then
371 dnl -- find the mzscheme executable
372 AC_SUBST(vi_cv_path_mzscheme)
374 AC_MSG_CHECKING(--with-plthome argument)
376 [ --with-plthome=PLTHOME Use PLTHOME.],
377 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
378 with_plthome="";AC_MSG_RESULT("no"))
380 if test "X$with_plthome" != "X"; then
381 vi_cv_path_mzscheme_pfx="$with_plthome"
383 AC_MSG_CHECKING(PLTHOME environment var)
384 if test "X$PLTHOME" != "X"; then
385 AC_MSG_RESULT("$PLTHOME")
386 vi_cv_path_mzscheme_pfx="$PLTHOME"
388 AC_MSG_RESULT("not set")
389 dnl -- try to find MzScheme executable
390 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
392 dnl resolve symbolic link, the executable is often elsewhere and there
393 dnl are no links for the include files.
394 if test "X$vi_cv_path_mzscheme" != "X"; then
395 lsout=`ls -l $vi_cv_path_mzscheme`
396 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
397 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
401 if test "X$vi_cv_path_mzscheme" != "X"; then
402 dnl -- find where MzScheme thinks it was installed
403 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
404 [ vi_cv_path_mzscheme_pfx=`
405 ${vi_cv_path_mzscheme} -evm \
406 "(display (simplify-path \
407 (build-path (call-with-values \
408 (lambda () (split-path (find-system-path (quote exec-file)))) \
409 (lambda (base name must-be-dir?) base)) (quote up))))"` ])
410 dnl Remove a trailing slash.
411 vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
417 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
418 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
419 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
423 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/plt/include)
424 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
429 vi_cv_path_mzscheme_pfx=
434 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
435 if test "x$MACOSX" = "xyes"; then
436 MZSCHEME_LIBS="-framework PLT_MzScheme"
437 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
438 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
440 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
441 if test "$GCC" = yes; then
442 dnl Make Vim remember the path to the library. For when it's not in
443 dnl $LD_LIBRARY_PATH.
444 MZSCHEME_LIBS="$MZSCHEME_LIBS -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
445 elif test "`(uname) 2>/dev/null`" = SunOS &&
446 uname -r | grep '^5' >/dev/null; then
447 MZSCHEME_LIBS="$MZSCHEME_LIBS -R ${vi_cv_path_mzscheme_pfx}/lib"
450 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
451 SCHEME_COLLECTS=lib/plt/
453 MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include${SCHEME_INC} \
454 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
455 MZSCHEME_SRC="if_mzsch.c"
456 MZSCHEME_OBJ="objects/if_mzsch.o"
457 MZSCHEME_PRO="if_mzsch.pro"
458 AC_DEFINE(FEAT_MZSCHEME)
460 AC_SUBST(MZSCHEME_SRC)
461 AC_SUBST(MZSCHEME_OBJ)
462 AC_SUBST(MZSCHEME_PRO)
463 AC_SUBST(MZSCHEME_LIBS)
464 AC_SUBST(MZSCHEME_CFLAGS)
468 AC_MSG_CHECKING(--enable-perlinterp argument)
469 AC_ARG_ENABLE(perlinterp,
470 [ --enable-perlinterp Include Perl interpreter.], ,
471 [enable_perlinterp="no"])
472 AC_MSG_RESULT($enable_perlinterp)
473 if test "$enable_perlinterp" = "yes"; then
474 AC_SUBST(vi_cv_path_perl)
475 AC_PATH_PROG(vi_cv_path_perl, perl)
476 if test "X$vi_cv_path_perl" != "X"; then
477 AC_MSG_CHECKING(Perl version)
478 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
479 eval `$vi_cv_path_perl -V:usethreads`
480 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
483 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
484 eval `$vi_cv_path_perl -V:use5005threads`
485 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
489 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
493 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
496 if test $badthreads = no; then
498 eval `$vi_cv_path_perl -V:shrpenv`
499 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
502 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
503 AC_SUBST(vi_cv_perllib)
504 dnl Remove "-fno-something", it breaks using cproto.
505 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
506 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
507 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
508 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
509 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
510 -e 's/-bE:perl.exp//' -e 's/-lc //'`
511 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
512 dnl a test in configure may fail because of that.
513 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
514 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
516 dnl check that compiling a simple program still works with the flags
518 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
521 ldflags_save=$LDFLAGS
522 CFLAGS="$CFLAGS $perlcppflags"
523 LIBS="$LIBS $perllibs"
524 LDFLAGS="$perlldflags $LDFLAGS"
526 AC_MSG_RESULT(yes); perl_ok=yes,
527 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
530 LDFLAGS=$ldflags_save
531 if test $perl_ok = yes; then
532 if test "X$perlcppflags" != "X"; then
533 dnl remove -pipe and -Wxxx, it confuses cproto
534 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
536 if test "X$perlldflags" != "X"; then
537 LDFLAGS="$perlldflags $LDFLAGS"
540 PERL_SRC="auto/if_perl.c if_perlsfio.c"
541 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
542 PERL_PRO="if_perl.pro if_perlsfio.pro"
547 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
551 if test "x$MACOSX" = "xyes"; then
552 dnl Mac OS X 10.2 or later
553 dir=/System/Library/Perl
554 darwindir=$dir/darwin
555 if test -d $darwindir; then
559 dir=/System/Library/Perl/5.8.1
560 darwindir=$dir/darwin-thread-multi-2level
561 if test -d $darwindir; then
565 if test -n "$PERL"; then
567 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
568 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
569 PERL_LIBS="-L$darwindir/CORE -lperl"
577 AC_SUBST(PERL_CFLAGS)
580 AC_MSG_CHECKING(--enable-pythoninterp argument)
581 AC_ARG_ENABLE(pythoninterp,
582 [ --enable-pythoninterp Include Python interpreter.], ,
583 [enable_pythoninterp="no"])
584 AC_MSG_RESULT($enable_pythoninterp)
585 if test "$enable_pythoninterp" = "yes"; then
586 dnl -- find the python executable
587 AC_PATH_PROG(vi_cv_path_python, python)
588 if test "X$vi_cv_path_python" != "X"; then
590 dnl -- get its version number
591 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
592 [[vi_cv_var_python_version=`
593 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
596 dnl -- it must be at least version 1.4
597 AC_MSG_CHECKING(Python is 1.4 or better)
598 if ${vi_cv_path_python} -c \
599 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
603 dnl -- find where python thinks it was installed
604 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
605 [ vi_cv_path_python_pfx=`
606 ${vi_cv_path_python} -c \
607 "import sys; print sys.prefix"` ])
609 dnl -- and where it thinks it runs
610 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
611 [ vi_cv_path_python_epfx=`
612 ${vi_cv_path_python} -c \
613 "import sys; print sys.exec_prefix"` ])
615 dnl -- python's internal library path
617 AC_CACHE_VAL(vi_cv_path_pythonpath,
618 [ vi_cv_path_pythonpath=`
620 ${vi_cv_path_python} -c \
621 "import sys, string; print string.join(sys.path,':')"` ])
623 dnl -- where the Python implementation library archives are
625 AC_ARG_WITH(python-config-dir,
626 [ --with-python-config-dir=PATH Python's config directory],
627 [ vi_cv_path_python_conf="${withval}" ] )
629 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
631 vi_cv_path_python_conf=
632 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
633 for subdir in lib share; do
634 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
635 if test -d "$d" && test -f "$d/config.c"; then
636 vi_cv_path_python_conf="$d"
642 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
644 if test "X$PYTHON_CONFDIR" = "X"; then
645 AC_MSG_RESULT([can't find it!])
648 dnl -- we need to examine Python's config/Makefile too
649 dnl see what the interpreter is built from
650 AC_CACHE_VAL(vi_cv_path_python_plibs,
652 tmp_mkf="/tmp/Makefile-conf$$"
653 cat ${PYTHON_CONFDIR}/Makefile - <<'eof' >${tmp_mkf}
655 @echo "python_MODLIBS='$(MODLIBS)'"
656 @echo "python_LIBS='$(LIBS)'"
657 @echo "python_SYSLIBS='$(SYSLIBS)'"
658 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
660 dnl -- delete the lines from make about Entering/Leaving directory
661 eval "`cd ${PYTHON_CONFDIR} && make -f ${tmp_mkf} __ | sed '/ directory /d'`"
663 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
664 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
665 vi_cv_path_python_plibs="-framework Python"
667 if test "${vi_cv_var_python_version}" = "1.4"; then
668 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
670 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
672 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
673 dnl remove -ltermcap, it can conflict with an earlier -lncurses
674 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
678 PYTHON_LIBS="${vi_cv_path_python_plibs}"
679 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
680 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
682 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}"
684 PYTHON_SRC="if_python.c"
685 dnl For Mac OSX 10.2 config.o is included in the Python library.
686 if test "x$MACOSX" = "xyes"; then
687 PYTHON_OBJ="objects/if_python.o"
689 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
691 if test "${vi_cv_var_python_version}" = "1.4"; then
692 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
694 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
696 dnl On FreeBSD linking with "-pthread" is required to use threads.
697 dnl _THREAD_SAFE must be used for compiling then.
698 dnl The "-pthread" is added to $LIBS, so that the following check for
699 dnl sigaltstack() will look in libc_r (it's there in libc!).
700 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
701 dnl will then define target-specific defines, e.g., -D_REENTRANT.
702 dnl Don't do this for Mac OSX, -pthread will generate a warning.
703 AC_MSG_CHECKING([if -pthread should be used])
706 dnl if test "x$MACOSX" != "xyes"; then
707 if test "`(uname) 2>/dev/null`" != Darwin; then
708 test "$GCC" = yes && threadsafe_flag="-pthread"
709 if test "`(uname) 2>/dev/null`" = FreeBSD; then
710 threadsafe_flag="-D_THREAD_SAFE"
711 thread_lib="-pthread"
715 if test -n "$threadsafe_flag"; then
717 CFLAGS="$CFLAGS $threadsafe_flag"
718 LIBS="$LIBS $thread_lib"
720 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
721 AC_MSG_RESULT(no); LIBS=$libs_save_old
728 dnl check that compiling a simple program still works with the flags
729 dnl added for Python.
730 AC_MSG_CHECKING([if compile and link flags for Python are sane])
733 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
734 LIBS="$LIBS $PYTHON_LIBS"
736 AC_MSG_RESULT(yes); python_ok=yes,
737 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
740 if test $python_ok = yes; then
741 AC_DEFINE(FEAT_PYTHON)
752 AC_MSG_RESULT(too old)
756 AC_SUBST(PYTHON_CONFDIR)
757 AC_SUBST(PYTHON_LIBS)
758 AC_SUBST(PYTHON_GETPATH_CFLAGS)
759 AC_SUBST(PYTHON_CFLAGS)
763 AC_MSG_CHECKING(--enable-tclinterp argument)
764 AC_ARG_ENABLE(tclinterp,
765 [ --enable-tclinterp Include Tcl interpreter.], ,
766 [enable_tclinterp="no"])
767 AC_MSG_RESULT($enable_tclinterp)
769 if test "$enable_tclinterp" = "yes"; then
771 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
772 AC_MSG_CHECKING(--with-tclsh argument)
773 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
774 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
775 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
776 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
777 AC_SUBST(vi_cv_path_tcl)
779 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
780 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
781 tclsh_name="tclsh8.4"
782 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
784 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
785 tclsh_name="tclsh8.2"
786 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
788 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
789 tclsh_name="tclsh8.0"
790 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
792 dnl still didn't find it, try without version number
793 if test "X$vi_cv_path_tcl" = "X"; then
795 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
797 if test "X$vi_cv_path_tcl" != "X"; then
798 AC_MSG_CHECKING(Tcl version)
799 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
800 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
801 AC_MSG_RESULT($tclver - OK);
802 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 -`
804 AC_MSG_CHECKING(for location of Tcl include)
805 if test "x$MACOSX" != "xyes"; then
806 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
808 dnl For Mac OS X 10.3, use the OS-provided framework location
809 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
812 for try in $tclinc; do
813 if test -f "$try/tcl.h"; then
814 AC_MSG_RESULT($try/tcl.h)
819 if test -z "$TCL_INC"; then
820 AC_MSG_RESULT(<not found>)
823 if test -z "$SKIP_TCL"; then
824 AC_MSG_CHECKING(for location of tclConfig.sh script)
825 if test "x$MACOSX" != "xyes"; then
826 tclcnf=`echo $tclinc | sed s/include/lib/g`
827 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
829 dnl For Mac OS X 10.3, use the OS-provided framework location
830 tclcnf="/System/Library/Frameworks/Tcl.framework"
832 for try in $tclcnf; do
833 if test -f $try/tclConfig.sh; then
834 AC_MSG_RESULT($try/tclConfig.sh)
836 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
837 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
838 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
839 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
840 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'`
844 if test -z "$TCL_LIBS"; then
845 AC_MSG_RESULT(<not found>)
846 AC_MSG_CHECKING(for Tcl library by myself)
847 tcllib=`echo $tclinc | sed s/include/lib/g`
848 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
849 for ext in .so .a ; do
850 for ver in "" $tclver ; do
851 for try in $tcllib ; do
853 if test -f $try/lib$trylib ; then
854 AC_MSG_RESULT($try/lib$trylib)
855 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
856 if test "`(uname) 2>/dev/null`" = SunOS &&
857 uname -r | grep '^5' >/dev/null; then
858 TCL_LIBS="$TCL_LIBS -R $try"
865 if test -z "$TCL_LIBS"; then
866 AC_MSG_RESULT(<not found>)
870 if test -z "$SKIP_TCL"; then
873 TCL_OBJ=objects/if_tcl.o
875 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
879 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
889 AC_MSG_CHECKING(--enable-rubyinterp argument)
890 AC_ARG_ENABLE(rubyinterp,
891 [ --enable-rubyinterp Include Ruby interpreter.], ,
892 [enable_rubyinterp="no"])
893 AC_MSG_RESULT($enable_rubyinterp)
894 if test "$enable_rubyinterp" = "yes"; then
895 AC_SUBST(vi_cv_path_ruby)
896 AC_PATH_PROG(vi_cv_path_ruby, ruby)
897 if test "X$vi_cv_path_ruby" != "X"; then
898 AC_MSG_CHECKING(Ruby version)
899 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
901 AC_MSG_CHECKING(Ruby header files)
902 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
903 if test "X$rubyhdrdir" != "X"; then
904 AC_MSG_RESULT($rubyhdrdir)
905 RUBY_CFLAGS="-I$rubyhdrdir"
906 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
907 if test "X$rubylibs" != "X"; then
908 RUBY_LIBS="$rubylibs"
910 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
911 if test -f "$rubyhdrdir/$librubyarg"; then
912 librubyarg="$rubyhdrdir/$librubyarg"
914 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
915 if test -f "$rubylibdir/$librubyarg"; then
916 librubyarg="$rubylibdir/$librubyarg"
917 elif test "$librubyarg" = "libruby.a"; then
918 dnl required on Mac OS 10.3 where libruby.a doesn't exist
921 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
925 if test "X$librubyarg" != "X"; then
926 RUBY_LIBS="$librubyarg $RUBY_LIBS"
928 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
929 if test "X$rubyldflags" != "X"; then
930 LDFLAGS="$rubyldflags $LDFLAGS"
933 RUBY_OBJ="objects/if_ruby.o"
934 RUBY_PRO="if_ruby.pro"
937 AC_MSG_RESULT(not found, disabling Ruby)
940 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
947 AC_SUBST(RUBY_CFLAGS)
950 AC_MSG_CHECKING(--enable-cscope argument)
951 AC_ARG_ENABLE(cscope,
952 [ --enable-cscope Include cscope interface.], ,
953 [enable_cscope="no"])
954 AC_MSG_RESULT($enable_cscope)
955 if test "$enable_cscope" = "yes"; then
956 AC_DEFINE(FEAT_CSCOPE)
959 AC_MSG_CHECKING(--enable-workshop argument)
960 AC_ARG_ENABLE(workshop,
961 [ --enable-workshop Include Sun Visual Workshop support.], ,
962 [enable_workshop="no"])
963 AC_MSG_RESULT($enable_workshop)
964 if test "$enable_workshop" = "yes"; then
965 AC_DEFINE(FEAT_SUN_WORKSHOP)
966 WORKSHOP_SRC="workshop.c integration.c"
967 AC_SUBST(WORKSHOP_SRC)
968 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
969 AC_SUBST(WORKSHOP_OBJ)
970 if test "${enable_gui-xxx}" = xxx; then
975 AC_MSG_CHECKING(--disable-netbeans argument)
976 AC_ARG_ENABLE(netbeans,
977 [ --disable-netbeans Disable NetBeans integration support.],
978 , [enable_netbeans="yes"])
979 if test "$enable_netbeans" = "yes"; then
981 dnl On Solaris we need the socket and nsl library.
982 AC_CHECK_LIB(socket, socket)
983 AC_CHECK_LIB(nsl, gethostbyname)
984 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
991 #include <netinet/in.h>
993 #include <sys/types.h>
994 #include <sys/socket.h>
995 /* Check bitfields */
997 unsigned int initDone:1;
1001 /* Check creating a socket. */
1002 struct sockaddr_in server;
1003 (void)socket(AF_INET, SOCK_STREAM, 0);
1005 (void)gethostbyname("microsoft.com");
1006 if (errno == ECONNREFUSED)
1007 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1010 AC_MSG_RESULT(no); enable_netbeans="no")
1014 if test "$enable_netbeans" = "yes"; then
1015 AC_DEFINE(FEAT_NETBEANS_INTG)
1016 NETBEANS_SRC="netbeans.c"
1017 AC_SUBST(NETBEANS_SRC)
1018 NETBEANS_OBJ="objects/netbeans.o"
1019 AC_SUBST(NETBEANS_OBJ)
1022 AC_MSG_CHECKING(--enable-sniff argument)
1023 AC_ARG_ENABLE(sniff,
1024 [ --enable-sniff Include Sniff interface.], ,
1025 [enable_sniff="no"])
1026 AC_MSG_RESULT($enable_sniff)
1027 if test "$enable_sniff" = "yes"; then
1028 AC_DEFINE(FEAT_SNIFF)
1029 SNIFF_SRC="if_sniff.c"
1031 SNIFF_OBJ="objects/if_sniff.o"
1035 AC_MSG_CHECKING(--enable-multibyte argument)
1036 AC_ARG_ENABLE(multibyte,
1037 [ --enable-multibyte Include multibyte editing support.], ,
1038 [enable_multibyte="no"])
1039 AC_MSG_RESULT($enable_multibyte)
1040 if test "$enable_multibyte" = "yes"; then
1041 AC_DEFINE(FEAT_MBYTE)
1044 AC_MSG_CHECKING(--enable-hangulinput argument)
1045 AC_ARG_ENABLE(hangulinput,
1046 [ --enable-hangulinput Include Hangul input support.], ,
1047 [enable_hangulinput="no"])
1048 AC_MSG_RESULT($enable_hangulinput)
1050 AC_MSG_CHECKING(--enable-xim argument)
1052 [ --enable-xim Include XIM input support.],
1053 AC_MSG_RESULT($enable_xim),
1054 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1055 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1057 AC_MSG_CHECKING(--enable-fontset argument)
1058 AC_ARG_ENABLE(fontset,
1059 [ --enable-fontset Include X fontset output support.], ,
1060 [enable_fontset="no"])
1061 AC_MSG_RESULT($enable_fontset)
1062 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1064 test -z "$with_x" && with_x=yes
1065 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1066 if test "$with_x" = no; then
1067 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1069 dnl Do this check early, so that its failure can override user requests.
1071 AC_PATH_PROG(xmkmfpath, xmkmf)
1075 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1076 dnl be compiled with a special option.
1077 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1078 if test "$OS390Unix" = "yes"; then
1079 CFLAGS="$CFLAGS -W c,dll"
1080 LDFLAGS="$LDFLAGS -W l,dll"
1081 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1084 dnl On my HPUX system the X include dir is found, but the lib dir not.
1085 dnl This is a desparate try to fix this.
1087 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1088 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1089 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1090 X_LIBS="$X_LIBS -L$x_libraries"
1091 if test "`(uname) 2>/dev/null`" = SunOS &&
1092 uname -r | grep '^5' >/dev/null; then
1093 X_LIBS="$X_LIBS -R $x_libraries"
1097 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1098 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1099 AC_MSG_RESULT(Corrected X includes to $x_includes)
1100 X_CFLAGS="$X_CFLAGS -I$x_includes"
1103 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1104 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1105 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1106 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1107 dnl Same for "-R/usr/lib ".
1108 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1111 dnl Check if the X11 header files are correctly installed. On some systems
1112 dnl Xlib.h includes files that don't exist
1113 AC_MSG_CHECKING(if X11 header files can be found)
1115 CFLAGS="$CFLAGS $X_CFLAGS"
1116 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1118 AC_MSG_RESULT(no); no_x=yes)
1121 if test "${no_x-no}" = yes; then
1128 ac_save_LDFLAGS="$LDFLAGS"
1129 LDFLAGS="-L$x_libraries $LDFLAGS"
1131 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1132 dnl For HP-UX 10.20 it must be before -lSM -lICE
1133 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1134 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1136 dnl Some systems need -lnsl -lsocket when testing for ICE.
1137 dnl The check above doesn't do this, try here (again). Also needed to get
1138 dnl them after Xdmcp. link.sh will remove them when not needed.
1139 dnl Check for other function than above to avoid the cached value
1140 AC_CHECK_LIB(ICE, IceOpenConnection,
1141 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1143 dnl Check for -lXpm (needed for some versions of Motif)
1144 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1145 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1146 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1148 dnl Check that the X11 header files don't use implicit declarations
1149 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1151 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1152 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1154 CFLAGS="$CFLAGS -Wno-implicit-int"
1155 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1156 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1157 AC_MSG_RESULT(test failed)
1162 LDFLAGS="$ac_save_LDFLAGS"
1167 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1169 AC_MSG_CHECKING(--enable-gui argument)
1171 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon/macvim]], , enable_gui="auto")
1173 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1174 dnl Do not use character classes for portability with old tools.
1175 enable_gui_canon=`echo "_$enable_gui" | \
1176 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1178 dnl Skip everything by default.
1190 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1192 case "$enable_gui_canon" in
1193 no) AC_MSG_RESULT(no GUI support)
1195 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1196 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1197 photon) AC_MSG_RESULT(Photon GUI support) ;;
1198 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1202 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1205 case "$enable_gui_canon" in
1206 no) AC_MSG_RESULT(no GUI support)
1209 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1210 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1211 carbon) AC_MSG_RESULT(Carbon GUI support)
1213 macvim) AC_MSG_RESULT(MacVim GUI support)
1215 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1222 case "$enable_gui_canon" in
1223 no|none) AC_MSG_RESULT(no GUI support) ;;
1224 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1233 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1235 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1238 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1241 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1245 motif) AC_MSG_RESULT(Motif GUI support)
1247 athena) AC_MSG_RESULT(Athena GUI support)
1249 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1251 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1256 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1257 AC_MSG_CHECKING(whether or not to look for GTK)
1258 AC_ARG_ENABLE(gtk-check,
1259 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1260 , enable_gtk_check="yes")
1261 AC_MSG_RESULT($enable_gtk_check)
1262 if test "x$enable_gtk_check" = "xno"; then
1268 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1269 -a "$enable_gui_canon" != "gnome2"; then
1270 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1271 AC_ARG_ENABLE(gtk2-check,
1272 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1273 , enable_gtk2_check="yes")
1274 AC_MSG_RESULT($enable_gtk2_check)
1275 if test "x$enable_gtk2_check" = "xno"; then
1280 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1281 -a "$enable_gui_canon" != "gnome2"; then
1282 AC_MSG_CHECKING(whether or not to look for GNOME)
1283 AC_ARG_ENABLE(gnome-check,
1284 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1285 , enable_gnome_check="no")
1286 AC_MSG_RESULT($enable_gnome_check)
1287 if test "x$enable_gnome_check" = "xno"; then
1292 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1293 AC_MSG_CHECKING(whether or not to look for Motif)
1294 AC_ARG_ENABLE(motif-check,
1295 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1296 , enable_motif_check="yes")
1297 AC_MSG_RESULT($enable_motif_check)
1298 if test "x$enable_motif_check" = "xno"; then
1303 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1304 AC_MSG_CHECKING(whether or not to look for Athena)
1305 AC_ARG_ENABLE(athena-check,
1306 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1307 , enable_athena_check="yes")
1308 AC_MSG_RESULT($enable_athena_check)
1309 if test "x$enable_athena_check" = "xno"; then
1314 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1315 AC_MSG_CHECKING(whether or not to look for neXtaw)
1316 AC_ARG_ENABLE(nextaw-check,
1317 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1318 , enable_nextaw_check="yes")
1319 AC_MSG_RESULT($enable_nextaw_check);
1320 if test "x$enable_nextaw_check" = "xno"; then
1325 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1326 AC_MSG_CHECKING(whether or not to look for Carbon)
1327 AC_ARG_ENABLE(carbon-check,
1328 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1329 , enable_carbon_check="yes")
1330 AC_MSG_RESULT($enable_carbon_check);
1331 if test "x$enable_carbon_check" = "xno"; then
1336 if test "x$SKIP_MACVIM" != "xYES" -a "$enable_gui_canon" != "macvim"; then
1337 AC_MSG_CHECKING(whether or not to look for MacVim)
1338 AC_ARG_ENABLE(macvim-check,
1339 [ --enable-macvim-check If auto-select GUI, check for MacVim [default=yes]],
1340 , enable_macvim_check="yes")
1341 AC_MSG_RESULT($enable_macvim_check);
1342 if test "x$enable_macvim_check" = "xno"; then
1347 if test "x$MACOSX" = "xyes"; then
1348 if test -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1349 AC_MSG_CHECKING(for Carbon GUI)
1350 dnl already did the check, just give the message
1353 elif test -z "$SKIP_MACVIM" -a "x$COCOA" = "xyes"; then
1354 AC_MSG_CHECKING(for MacVim GUI)
1355 dnl already did the check, just give the message
1360 if test "$VIMNAME" = "vim"; then
1364 dnl Default install directory is not /usr/local
1365 if test x$prefix = xNONE; then
1366 prefix=/Applications
1369 dnl Sorry for the hard coded default
1370 datadir='${prefix}/Vim.app/Contents/Resources'
1372 dnl skip everything else
1385 dnl Get the cflags and libraries from the gtk-config script
1388 dnl define an autoconf function to check for a specified version of GTK, and
1389 dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1391 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1392 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1394 AC_DEFUN(AM_PATH_GTK,
1396 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1398 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1399 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1401 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1402 && $PKG_CONFIG --exists gtk+-2.0; then
1404 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1405 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1406 dnl something like that.
1407 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1408 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1409 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1410 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1411 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1412 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1413 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1414 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1415 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1417 elif test "X$GTK_CONFIG" != "Xno"; then
1419 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1421 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1422 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1423 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1424 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1425 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1426 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1427 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1433 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1435 ac_save_CFLAGS="$CFLAGS"
1436 ac_save_LIBS="$LIBS"
1437 CFLAGS="$CFLAGS $GTK_CFLAGS"
1438 LIBS="$LIBS $GTK_LIBS"
1441 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1442 dnl checks the results of gtk-config to some extent
1446 #include <gtk/gtk.h>
1452 int major, minor, micro;
1455 system ("touch conf.gtktest");
1457 /* HP/UX 9 (%@#!) writes to sscanf strings */
1458 tmp_version = g_strdup("$min_gtk_version");
1459 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
1460 printf("%s, bad version string\n", "$min_gtk_version");
1464 if ((gtk_major_version > major) ||
1465 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1466 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1467 (gtk_micro_version >= micro)))
1473 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1474 CFLAGS="$ac_save_CFLAGS"
1475 LIBS="$ac_save_LIBS"
1478 if test "x$no_gtk" = x ; then
1479 if test "x$enable_gtktest" = "xyes"; then
1480 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1482 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1484 ifelse([$2], , :, [$2])
1490 ifelse([$3], , :, [$3])
1497 ifelse([$3], , :, [$3])
1499 AC_SUBST(GTK_CFLAGS)
1504 dnl ---------------------------------------------------------------------------
1506 dnl ---------------------------------------------------------------------------
1507 AC_DEFUN([GNOME_INIT_HOOK],
1509 AC_SUBST(GNOME_LIBS)
1510 AC_SUBST(GNOME_LIBDIR)
1511 AC_SUBST(GNOME_INCLUDEDIR)
1513 AC_ARG_WITH(gnome-includes,
1514 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1515 [CFLAGS="$CFLAGS -I$withval"]
1518 AC_ARG_WITH(gnome-libs,
1519 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1520 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1524 [ --with-gnome Specify prefix for GNOME files],
1525 if test x$withval = xyes; then
1527 ifelse([$1], [], :, [$1])
1529 if test "x$withval" = xno; then
1533 LDFLAGS="$LDFLAGS -L$withval/lib"
1534 CFLAGS="$CFLAGS -I$withval/include"
1535 gnome_prefix=$withval/lib
1540 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1542 AC_MSG_CHECKING(for libgnomeui-2.0)
1543 if $PKG_CONFIG --exists libgnomeui-2.0; then
1545 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1546 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1547 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1549 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1550 dnl This might not be the right way but it works for me...
1551 AC_MSG_CHECKING(for FreeBSD)
1552 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1553 AC_MSG_RESULT(yes, adding -pthread)
1554 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1555 GNOME_LIBS="$GNOME_LIBS -pthread"
1561 AC_MSG_RESULT(not found)
1562 if test "x$2" = xfail; then
1563 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1567 elif test "x$want_gnome" = xyes; then
1569 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1570 if test "$GNOME_CONFIG" = "no"; then
1571 no_gnome_config="yes"
1573 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1574 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1576 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1577 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1578 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1582 no_gnome_config="yes"
1586 if test x$exec_prefix = xNONE; then
1587 if test x$prefix = xNONE; then
1588 gnome_prefix=$ac_default_prefix/lib
1590 gnome_prefix=$prefix/lib
1593 gnome_prefix=`eval echo \`echo $libdir\``
1596 if test "$no_gnome_config" = "yes"; then
1597 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1598 if test -f $gnome_prefix/gnomeConf.sh; then
1599 AC_MSG_RESULT(found)
1600 echo "loading gnome configuration from" \
1601 "$gnome_prefix/gnomeConf.sh"
1602 . $gnome_prefix/gnomeConf.sh
1605 AC_MSG_RESULT(not found)
1606 if test x$2 = xfail; then
1607 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1615 AC_DEFUN([GNOME_INIT],[
1616 GNOME_INIT_HOOK([],fail)
1620 dnl ---------------------------------------------------------------------------
1621 dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1622 dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1623 dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1624 dnl ---------------------------------------------------------------------------
1625 if test -z "$SKIP_GTK"; then
1627 AC_MSG_CHECKING(--with-gtk-prefix argument)
1628 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1629 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1630 gtk_config_prefix=""; AC_MSG_RESULT(no))
1632 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1633 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1634 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1635 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1637 AC_MSG_CHECKING(--disable-gtktest argument)
1638 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1639 , enable_gtktest=yes)
1640 if test "x$enable_gtktest" = "xyes" ; then
1641 AC_MSG_RESULT(gtk test enabled)
1643 AC_MSG_RESULT(gtk test disabled)
1646 if test "x$gtk_config_prefix" != "x" ; then
1647 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1648 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1650 if test "x$gtk_config_exec_prefix" != "x" ; then
1651 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1652 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1654 if test "X$GTK_CONFIG" = "X"; then
1655 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1656 if test "X$GTK_CONFIG" = "Xno"; then
1657 dnl Some distributions call it gtk12-config, annoying!
1658 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1659 GTK_CONFIG="$GTK12_CONFIG"
1662 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1664 if test "X$PKG_CONFIG" = "X"; then
1665 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1668 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1669 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1670 dnl problems (bold fonts, --remote doesn't work).
1671 if test "X$SKIP_GTK2" != "XYES"; then
1673 [GUI_LIB_LOC="$GTK_LIBDIR"
1674 GTK_LIBNAME="$GTK_LIBS"
1675 GUI_INC_LOC="$GTK_CFLAGS"], )
1676 if test "x$GTK_CFLAGS" != "x"; then
1681 AC_SUBST(GTK_LIBNAME)
1685 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1686 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1687 dnl were test versions.
1688 if test "x$GUITYPE" != "xGTK"; then
1691 [GTK_LIBNAME="$GTK_LIBS"
1692 GUI_INC_LOC="$GTK_CFLAGS"], )
1693 if test "x$GTK_CFLAGS" != "x"; then
1698 AC_SUBST(GTK_LIBNAME)
1702 dnl Give a warning if GTK is older than 1.2.3
1703 if test "x$GUITYPE" = "xGTK"; then
1704 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1705 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1706 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1709 if test "0$gtk_major_version" -ge 2; then
1710 AC_DEFINE(HAVE_GTK2)
1711 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1712 || test "0$gtk_minor_version" -ge 2 \
1713 || test "0$gtk_major_version" -gt 2; then
1714 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1718 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1720 if test -z "$SKIP_GNOME"; then
1722 GNOME_INIT_HOOK([have_gnome=yes])
1723 if test x$have_gnome = xyes ; then
1724 AC_DEFINE(FEAT_GUI_GNOME)
1725 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1726 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1735 dnl Check for Motif include files location.
1736 dnl The LAST one found is used, this makes the highest version to be used,
1737 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1739 if test -z "$SKIP_MOTIF"; then
1740 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"
1741 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1742 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1744 AC_MSG_CHECKING(for location of Motif GUI includes)
1745 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1747 for try in $gui_includes; do
1748 if test -f "$try/Xm/Xm.h"; then
1752 if test -n "$GUI_INC_LOC"; then
1753 if test "$GUI_INC_LOC" = /usr/include; then
1755 AC_MSG_RESULT(in default path)
1757 AC_MSG_RESULT($GUI_INC_LOC)
1760 AC_MSG_RESULT(<not found>)
1765 dnl Check for Motif library files location. In the same order as the include
1766 dnl files, to avoid a mixup if several versions are present
1768 if test -z "$SKIP_MOTIF"; then
1769 AC_MSG_CHECKING(--with-motif-lib argument)
1770 AC_ARG_WITH(motif-lib,
1771 [ --with-motif-lib=STRING Library for Motif ],
1772 [ MOTIF_LIBNAME="${withval}" ] )
1774 if test -n "$MOTIF_LIBNAME"; then
1775 AC_MSG_RESULT($MOTIF_LIBNAME)
1780 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1781 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1783 AC_MSG_CHECKING(for location of Motif GUI libs)
1784 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"
1786 for try in $gui_libs; do
1787 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1788 if test -f "$libtry"; then
1793 if test -n "$GUI_LIB_LOC"; then
1794 dnl Remove /usr/lib, it causes trouble on some systems
1795 if test "$GUI_LIB_LOC" = /usr/lib; then
1797 AC_MSG_RESULT(in default path)
1799 if test -n "$GUI_LIB_LOC"; then
1800 AC_MSG_RESULT($GUI_LIB_LOC)
1801 if test "`(uname) 2>/dev/null`" = SunOS &&
1802 uname -r | grep '^5' >/dev/null; then
1803 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1809 AC_MSG_RESULT(<not found>)
1815 if test -z "$SKIP_MOTIF"; then
1819 AC_SUBST(MOTIF_LIBNAME)
1822 dnl Check if the Athena files can be found
1826 if test -z "$SKIP_ATHENA"; then
1827 AC_MSG_CHECKING(if Athena header files can be found)
1829 CFLAGS="$CFLAGS $X_CFLAGS"
1831 #include <X11/Intrinsic.h>
1832 #include <X11/Xaw/Paned.h>], ,
1834 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1838 if test -z "$SKIP_ATHENA"; then
1842 if test -z "$SKIP_NEXTAW"; then
1843 AC_MSG_CHECKING(if neXtaw header files can be found)
1845 CFLAGS="$CFLAGS $X_CFLAGS"
1847 #include <X11/Intrinsic.h>
1848 #include <X11/neXtaw/Paned.h>], ,
1850 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1854 if test -z "$SKIP_NEXTAW"; then
1858 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1859 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1860 dnl Avoid adding it when it twice
1861 if test -n "$GUI_INC_LOC"; then
1862 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1864 if test -n "$GUI_LIB_LOC"; then
1865 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1868 dnl Check for -lXext and then for -lXmu
1869 ldflags_save=$LDFLAGS
1870 LDFLAGS="$X_LIBS $LDFLAGS"
1871 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1872 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1873 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1874 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1875 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1876 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1877 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1878 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1879 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1880 if test -z "$SKIP_MOTIF"; then
1881 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1882 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1884 LDFLAGS=$ldflags_save
1886 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1887 AC_MSG_CHECKING(for extra X11 defines)
1890 if mkdir conftestdir; then
1892 cat > Imakefile <<'EOF'
1894 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1896 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1897 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1902 if test -z "$NARROW_PROTO"; then
1905 AC_MSG_RESULT($NARROW_PROTO)
1907 AC_SUBST(NARROW_PROTO)
1910 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1911 dnl use the X11 include path
1912 if test "$enable_xsmp" = "yes"; then
1913 cppflags_save=$CPPFLAGS
1914 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1915 AC_CHECK_HEADERS(X11/SM/SMlib.h)
1916 CPPFLAGS=$cppflags_save
1920 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1921 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1922 cppflags_save=$CPPFLAGS
1923 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1924 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1926 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1927 if test ! "$enable_xim" = "no"; then
1928 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1929 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1931 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1933 CPPFLAGS=$cppflags_save
1935 dnl automatically enable XIM when hangul input isn't enabled
1936 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1937 -a "x$GUITYPE" != "xNONE" ; then
1938 AC_MSG_RESULT(X GUI selected; xim has been enabled)
1943 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1944 cppflags_save=$CPPFLAGS
1945 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1946 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1947 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1949 #include <X11/Intrinsic.h>
1950 #include <X11/Xmu/Editres.h>],
1953 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1955 CPPFLAGS=$cppflags_save
1958 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1959 if test -z "$SKIP_MOTIF"; then
1960 cppflags_save=$CPPFLAGS
1961 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1962 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
1963 Xm/UnhighlightT.h Xm/Notebook.h)
1965 if test $ac_cv_header_Xm_XpmP_h = yes; then
1966 dnl Solaris uses XpmAttributes_21, very annoying.
1967 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1968 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
1969 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
1970 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1973 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1975 CPPFLAGS=$cppflags_save
1978 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
1979 AC_MSG_RESULT(no GUI selected; xim has been disabled)
1982 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
1983 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
1986 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
1987 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
1991 if test -z "$SKIP_PHOTON"; then
1995 AC_SUBST(GUI_INC_LOC)
1996 AC_SUBST(GUI_LIB_LOC)
1998 AC_SUBST(GUI_X_LIBS)
2000 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2001 AC_MSG_ERROR([cannot use workshop without Motif])
2004 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2005 if test "$enable_xim" = "yes"; then
2008 if test "$enable_fontset" = "yes"; then
2009 AC_DEFINE(FEAT_XFONTSET)
2013 dnl ---------------------------------------------------------------------------
2014 dnl end of GUI-checking
2015 dnl ---------------------------------------------------------------------------
2018 dnl Only really enable hangul input when GUI and XFONTSET are available
2019 if test "$enable_hangulinput" = "yes"; then
2020 if test "x$GUITYPE" = "xNONE"; then
2021 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2022 enable_hangulinput=no
2024 AC_DEFINE(FEAT_HANGULIN)
2025 HANGULIN_SRC=hangulin.c
2026 AC_SUBST(HANGULIN_SRC)
2027 HANGULIN_OBJ=objects/hangulin.o
2028 AC_SUBST(HANGULIN_OBJ)
2032 dnl Checks for libraries and include files.
2034 AC_MSG_CHECKING(quality of toupper)
2035 AC_TRY_RUN([#include <ctype.h>
2036 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }],
2037 AC_DEFINE(BROKEN_TOUPPER) AC_MSG_RESULT(bad),
2038 AC_MSG_RESULT(good), AC_MSG_ERROR(failed to compile test program))
2040 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2041 AC_TRY_COMPILE(, [printf("(" __DATE__ " " __TIME__ ")");],
2042 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2045 dnl Checks for header files.
2046 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2047 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2048 if test "$HAS_ELF" = 1; then
2049 AC_CHECK_LIB(elf, main)
2054 dnl check for standard headers, we don't use this in Vim but other stuff
2055 dnl in autoconf needs it
2059 dnl If sys/wait.h is not found it might still exist but not be POSIX
2060 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2061 if test $ac_cv_header_sys_wait_h = no; then
2062 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2063 AC_TRY_COMPILE([#include <sys/wait.h>],
2064 [union wait xx, yy; xx = yy],
2066 AC_DEFINE(HAVE_SYS_WAIT_H)
2067 AC_DEFINE(HAVE_UNION_WAIT),
2071 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2072 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2073 iconv.h langinfo.h unistd.h stropts.h errno.h \
2074 sys/resource.h sys/systeminfo.h locale.h \
2075 sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
2076 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2077 libgen.h util/debug.h util/msg18n.h frame.h \
2078 sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
2080 dnl pthread_np.h may exist but can only be used after including pthread.h
2081 AC_MSG_CHECKING([for pthread_np.h])
2083 #include <pthread.h>
2084 #include <pthread_np.h>],
2087 AC_DEFINE(HAVE_PTHREAD_NP_H),
2090 AC_CHECK_HEADERS(strings.h)
2091 if test "x$MACOSX" = "xyes"; then
2092 dnl The strings.h file on OS/X contains a warning and nothing useful.
2093 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2096 dnl Check if strings.h and string.h can both be included when defined.
2097 AC_MSG_CHECKING([if strings.h can be included after string.h])
2098 cppflags_save=$CPPFLAGS
2099 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2101 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2102 # define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2103 /* but don't do it on AIX 5.1 (Uribarri) */
2106 # include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2108 #ifdef HAVE_STRING_H
2109 # include <string.h>
2111 #if defined(HAVE_STRINGS_H)
2112 # include <strings.h>
2116 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2118 CPPFLAGS=$cppflags_save
2121 dnl Checks for typedefs, structures, and compiler characteristics.
2122 AC_PROG_GCC_TRADITIONAL
2130 AC_CHECK_TYPE(ino_t, long)
2131 AC_CHECK_TYPE(dev_t, unsigned)
2133 AC_MSG_CHECKING(for rlim_t)
2134 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2135 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2138 changequote(<<,>>)dnl
2139 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2142 #include <sys/types.h>
2147 #ifdef HAVE_SYS_RESOURCE_H
2148 #include <sys/resource.h>
2150 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2151 AC_MSG_RESULT($ac_cv_type_rlim_t)
2153 if test $ac_cv_type_rlim_t = no; then
2154 cat >> confdefs.h <<\EOF
2155 #define rlim_t unsigned long
2159 AC_MSG_CHECKING(for stack_t)
2160 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2161 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2163 AC_EGREP_CPP(stack_t,
2165 #include <sys/types.h>
2171 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2172 AC_MSG_RESULT($ac_cv_type_stack_t)
2174 if test $ac_cv_type_stack_t = no; then
2175 cat >> confdefs.h <<\EOF
2176 #define stack_t struct sigaltstack
2180 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2181 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2183 #include <sys/types.h>
2189 #include "confdefs.h"
2190 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2191 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2195 AC_MSG_CHECKING(--with-tlib argument)
2196 AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2197 if test -n "$with_tlib"; then
2198 AC_MSG_RESULT($with_tlib)
2199 LIBS="$LIBS -l$with_tlib"
2200 AC_MSG_CHECKING(for linking with $with_tlib library)
2201 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2202 dnl Need to check for tgetent() below.
2205 AC_MSG_RESULT([empty: automatic terminal library selection])
2206 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2207 dnl curses, because curses is much slower.
2208 dnl Newer versions of ncurses are preferred over anything.
2209 dnl Older versions of ncurses have bugs, get a new one!
2210 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
2211 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
2212 case "`uname -s 2>/dev/null`" in
2213 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
2214 *) tlibs="ncurses termlib termcap curses";;
2216 for libname in $tlibs; do
2217 AC_CHECK_LIB(${libname}, tgetent,,)
2218 if test "x$olibs" != "x$LIBS"; then
2219 dnl It's possible that a library is found but it doesn't work
2220 dnl e.g., shared library that cannot be found
2221 dnl compile and run a test program to be sure
2223 #ifdef HAVE_TERMCAP_H
2224 # include <termcap.h>
2226 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2227 res="OK", res="FAIL", res="FAIL")
2228 if test "$res" = "OK"; then
2231 AC_MSG_RESULT($libname library is not usable)
2235 if test "x$olibs" = "x$LIBS"; then
2236 AC_MSG_RESULT(no terminal library found)
2240 if test "x$olibs" = "x$LIBS"; then
2241 AC_MSG_CHECKING([for tgetent()])
2243 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2245 AC_MSG_ERROR([NOT FOUND!
2246 You need to install a terminal library; for example ncurses.
2247 Or specify the name of the library with --with-tlib.]))
2250 AC_MSG_CHECKING(whether we talk terminfo)
2252 #ifdef HAVE_TERMCAP_H
2253 # include <termcap.h>
2256 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }],
2257 AC_MSG_RESULT([no -- we are in termcap land]),
2258 AC_MSG_RESULT([yes -- terminfo spoken here]); AC_DEFINE(TERMINFO),
2259 AC_MSG_ERROR(failed to compile test program.))
2261 if test "x$olibs" != "x$LIBS"; then
2262 AC_MSG_CHECKING(what tgetent() returns for an unknown terminal)
2264 #ifdef HAVE_TERMCAP_H
2265 # include <termcap.h>
2268 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }],
2269 AC_MSG_RESULT(zero); AC_DEFINE(TGETENT_ZERO_ERR, 0),
2270 AC_MSG_RESULT(non-zero),
2271 AC_MSG_ERROR(failed to compile test program.))
2274 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2276 #ifdef HAVE_TERMCAP_H
2277 # include <termcap.h>
2279 ], [ospeed = 20000],
2280 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2282 AC_MSG_CHECKING(whether ospeed can be extern)
2284 #ifdef HAVE_TERMCAP_H
2285 # include <termcap.h>
2287 extern short ospeed;
2288 ], [ospeed = 20000],
2289 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2293 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2295 #ifdef HAVE_TERMCAP_H
2296 # include <termcap.h>
2298 ], [if (UP == 0 && BC == 0) PC = 1],
2299 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2301 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2303 #ifdef HAVE_TERMCAP_H
2304 # include <termcap.h>
2306 extern char *UP, *BC, PC;
2307 ], [if (UP == 0 && BC == 0) PC = 1],
2308 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2312 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2314 #ifdef HAVE_TERMCAP_H
2315 # include <termcap.h>
2317 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2318 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2321 dnl On some SCO machines sys/select redefines struct timeval
2322 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2324 #include <sys/types.h>
2325 #include <sys/time.h>
2326 #include <sys/select.h>], ,
2328 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2331 dnl AC_DECL_SYS_SIGLIST
2333 dnl Checks for pty.c (copied from screen) ==========================
2334 AC_MSG_CHECKING(for /dev/ptc)
2335 if test -r /dev/ptc; then
2336 AC_DEFINE(HAVE_DEV_PTC)
2342 AC_MSG_CHECKING(for SVR4 ptys)
2343 if test -c /dev/ptmx ; then
2344 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2345 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2351 AC_MSG_CHECKING(for ptyranges)
2352 if test -d /dev/ptym ; then
2362 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2363 dnl if test -c /dev/ptyp19; then
2364 dnl ptys=`echo /dev/ptyp??`
2366 dnl ptys=`echo $pdir/pty??`
2368 if test "$ptys" != "$pdir/pty??" ; then
2369 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2370 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2371 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2372 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2373 AC_MSG_RESULT([$p0 / $p1])
2375 AC_MSG_RESULT([don't know])
2378 dnl **** pty mode/group handling ****
2380 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2381 AC_MSG_CHECKING(default tty permissions/group)
2384 #include <sys/types.h>
2385 #include <sys/stat.h>
2394 if (!(x = ttyname(0))) exit(1);
2395 if (stat(x, &sb)) exit(1);
2397 if (om & 002) exit(0);
2398 m = system("mesg y");
2399 if (m == -1 || m == 127) exit(1);
2400 if (stat(x, &sb)) exit(1);
2402 if (chmod(x, om)) exit(1);
2403 if (m & 002) exit(0);
2404 if (sb.st_gid == getgid()) exit(1);
2405 if (!(fp=fopen("conftest_grp", "w")))
2407 fprintf(fp, "%d\n", sb.st_gid);
2412 if test -f conftest_grp; then
2413 ptygrp=`cat conftest_grp`
2414 AC_MSG_RESULT([pty mode: 0620, group: $ptygrp])
2415 AC_DEFINE(PTYMODE, 0620)
2416 AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
2418 AC_MSG_RESULT([ptys are world accessable])
2421 AC_MSG_RESULT([can't determine - assume ptys are world accessable]),
2422 AC_MSG_ERROR(failed to compile test program))
2425 dnl Checks for library functions. ===================================
2429 dnl find out what to use at the end of a signal function
2430 if test $ac_cv_type_signal = void; then
2431 AC_DEFINE(SIGRETURN, [return])
2433 AC_DEFINE(SIGRETURN, [return 0])
2436 dnl check if struct sigcontext is defined (used for SGI only)
2437 AC_MSG_CHECKING(for struct sigcontext)
2442 struct sigcontext *scont;
2443 scont = (struct sigcontext *)0;
2447 AC_DEFINE(HAVE_SIGCONTEXT),
2450 dnl tricky stuff: try to find out if getcwd() is implemented with
2451 dnl system("sh -c pwd")
2452 AC_MSG_CHECKING(getcwd implementation)
2454 char *dagger[] = { "IFS=pwd", 0 };
2458 extern char **environ;
2460 return getcwd(buffer, 500) ? 0 : 1;
2462 AC_MSG_RESULT(it is usable),
2463 AC_MSG_RESULT(it stinks)
2464 AC_DEFINE(BAD_GETCWD),
2465 AC_MSG_ERROR(failed to compile test program))
2467 dnl Check for functions in one big call, to reduce the size of configure
2468 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2469 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2470 memset nanosleep opendir putenv qsort readlink select setenv \
2471 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2472 sigvec strcasecmp strerror strftime stricmp strncasecmp \
2473 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2474 usleep utime utimes)
2476 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2477 AC_MSG_CHECKING(for st_blksize)
2479 [#include <sys/types.h>
2480 #include <sys/stat.h>],
2485 n = (int)st.st_blksize;],
2486 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2489 AC_MSG_CHECKING(whether stat() ignores a trailing slash)
2491 [#include <sys/types.h>
2492 #include <sys/stat.h>
2493 main() {struct stat st; exit(stat("configure/", &st) != 0); }],
2494 AC_MSG_RESULT(yes); AC_DEFINE(STAT_IGNORES_SLASH),
2495 AC_MSG_RESULT(no), AC_MSG_ERROR(failed to compile test program))
2497 dnl Link with iconv for charset translation, if not found without library.
2498 dnl check for iconv() requires including iconv.h
2499 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2500 dnl has been installed.
2501 AC_MSG_CHECKING(for iconv_open())
2503 LIBS="$LIBS -liconv"
2508 ], [iconv_open("fr", "to");],
2509 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2515 ], [iconv_open("fr", "to");],
2516 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2520 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2522 #ifdef HAVE_LANGINFO_H
2523 # include <langinfo.h>
2525 ], [char *cs = nl_langinfo(CODESET);],
2526 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2529 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2530 dnl when -lacl works, also try to use -lattr (required for Debian).
2531 AC_MSG_CHECKING(--disable-acl argument)
2533 [ --disable-acl Don't check for ACL support.],
2534 , [enable_acl="yes"])
2535 if test "$enable_acl" = "yes"; then
2537 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2538 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2539 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2541 AC_MSG_CHECKING(for POSIX ACL support)
2543 #include <sys/types.h>
2544 #ifdef HAVE_SYS_ACL_H
2545 # include <sys/acl.h>
2547 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2548 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2550 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2553 AC_MSG_CHECKING(for Solaris ACL support)
2555 #ifdef HAVE_SYS_ACL_H
2556 # include <sys/acl.h>
2557 #endif], [acl("foo", GETACLCNT, 0, NULL);
2559 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2562 AC_MSG_CHECKING(for AIX ACL support)
2564 #ifdef HAVE_SYS_ACL_H
2565 # include <sys/acl.h>
2567 #ifdef HAVE_SYS_ACCESS_H
2568 # include <sys/access.h>
2572 #include <sys/stat.h>
2575 struct acl *aclent;], [aclsize = sizeof(struct acl);
2576 aclent = (void *)malloc(aclsize);
2577 statacl("foo", STX_NORMAL, aclent, aclsize);
2579 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2585 AC_MSG_CHECKING(--disable-gpm argument)
2587 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2590 if test "$enable_gpm" = "yes"; then
2592 dnl Checking if gpm support can be compiled
2593 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2594 [olibs="$LIBS" ; LIBS="-lgpm"]
2597 #include <linux/keyboard.h>],
2598 [Gpm_GetLibVersion(NULL);],
2599 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2600 dnl FEAT_MOUSE_GPM if mouse support is included
2601 [vi_cv_have_gpm=yes],
2602 [vi_cv_have_gpm=no])
2605 if test $vi_cv_have_gpm = yes; then
2613 dnl rename needs to be checked separately to work on Nextstep with cc
2614 AC_MSG_CHECKING(for rename)
2615 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2616 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2619 dnl sysctl() may exist but not the arguments we use
2620 AC_MSG_CHECKING(for sysctl)
2622 [#include <sys/types.h>
2623 #include <sys/sysctl.h>],
2628 mib[1] = HW_USERMEM;
2630 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2632 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2633 AC_MSG_RESULT(not usable))
2635 dnl sysinfo() may exist but not be Linux compatible
2636 AC_MSG_CHECKING(for sysinfo)
2638 [#include <sys/types.h>
2639 #include <sys/sysinfo.h>],
2640 [ struct sysinfo sinfo;
2643 (void)sysinfo(&sinfo);
2646 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2647 AC_MSG_RESULT(not usable))
2649 dnl struct sysinfo may have the mem_unit field or not
2650 AC_MSG_CHECKING(for sysinfo.mem_unit)
2652 [#include <sys/types.h>
2653 #include <sys/sysinfo.h>],
2654 [ struct sysinfo sinfo;
2657 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2660 dnl sysconf() may exist but not support what we want to use
2661 AC_MSG_CHECKING(for sysconf)
2663 [#include <unistd.h>],
2664 [ (void)sysconf(_SC_PAGESIZE);
2665 (void)sysconf(_SC_PHYS_PAGES);
2667 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2668 AC_MSG_RESULT(not usable))
2670 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2671 dnl be printed with "%d", and avoids a warning for cross-compiling.
2673 AC_MSG_CHECKING(size of int)
2674 AC_CACHE_VAL(ac_cv_sizeof_int,
2675 [AC_TRY_RUN([#include <stdio.h>
2678 FILE *f=fopen("conftestval", "w");
2680 fprintf(f, "%d\n", (int)sizeof(int));
2683 ac_cv_sizeof_int=`cat conftestval`,
2685 AC_MSG_ERROR(failed to compile test program))])
2686 AC_MSG_RESULT($ac_cv_sizeof_int)
2687 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2689 AC_MSG_CHECKING(whether memmove/bcopy/memcpy handle overlaps)
2693 strcpy(buf, "abcdefghi");
2694 mch_memmove(buf, buf + 2, 3);
2695 if (strncmp(buf, "ababcf", 6))
2697 strcpy(buf, "abcdefghi");
2698 mch_memmove(buf + 2, buf, 3);
2699 if (strncmp(buf, "cdedef", 6))
2701 exit(0); /* libc version works properly. */
2704 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2705 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2707 AC_TRY_RUN([#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog],
2708 AC_DEFINE(USEMEMMOVE) AC_MSG_RESULT(memmove does),
2709 AC_TRY_RUN([#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog],
2710 AC_DEFINE(USEBCOPY) AC_MSG_RESULT(bcopy does),
2711 AC_TRY_RUN([#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog],
2712 AC_DEFINE(USEMEMCPY) AC_MSG_RESULT(memcpy does), AC_MSG_RESULT(no),
2713 AC_MSG_ERROR(failed to compile test program)),
2714 AC_MSG_ERROR(failed to compile test program)),
2715 AC_MSG_ERROR(failed to compile test program))
2717 dnl Check for multibyte locale functions
2718 dnl Find out if _Xsetlocale() is supported by libX11.
2719 dnl Check if X_LOCALE should be defined.
2721 if test "$enable_multibyte" = "yes"; then
2723 ldflags_save=$LDFLAGS
2724 if test -n "$x_includes" ; then
2725 CFLAGS="$CFLAGS -I$x_includes"
2726 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2727 AC_MSG_CHECKING(whether X_LOCALE needed)
2728 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2729 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2730 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2734 LDFLAGS=$ldflags_save
2737 dnl Link with xpg4, it is said to make Korean locale working
2738 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2740 dnl Check how we can run ctags
2741 dnl --version for Exuberant ctags (preferred)
2742 dnl Add --fields=+S to get function signatures for omni completion.
2743 dnl -t for typedefs (many ctags have this)
2744 dnl -s for static functions (Elvis ctags only?)
2745 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2746 dnl -i+m to test for older Exuberant ctags
2747 AC_MSG_CHECKING(how to create tags)
2748 test -f tags && mv tags tags.save
2749 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
2750 TAGPRG="ctags -I INIT+ --fields=+S"
2752 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2753 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2754 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2755 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2756 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2757 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2758 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2760 test -f tags.save && mv tags.save tags
2761 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2763 dnl Check how we can run man with a section number
2764 AC_MSG_CHECKING(how to run man with a section nr)
2766 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
2767 AC_MSG_RESULT($MANDEF)
2768 if test "$MANDEF" = "man -s"; then
2772 dnl Check if gettext() is working and if it needs -lintl
2773 AC_MSG_CHECKING(--disable-nls argument)
2775 [ --disable-nls Don't support NLS (gettext()).], ,
2778 if test "$enable_nls" = "yes"; then
2781 INSTALL_LANGS=install-languages
2782 AC_SUBST(INSTALL_LANGS)
2783 INSTALL_TOOL_LANGS=install-tool-languages
2784 AC_SUBST(INSTALL_TOOL_LANGS)
2786 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
2787 AC_MSG_CHECKING([for NLS])
2788 if test -f po/Makefile; then
2790 if test -n "$MSGFMT"; then
2792 [#include <libintl.h>],
2794 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
2798 [#include <libintl.h>],
2800 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
2801 AC_MSG_RESULT([gettext() doesn't work]);
2804 AC_MSG_RESULT([msgfmt not found - disabled]);
2806 if test $have_gettext = "yes"; then
2807 AC_DEFINE(HAVE_GETTEXT)
2810 dnl this was added in GNU gettext 0.10.36
2811 AC_CHECK_FUNCS(bind_textdomain_codeset)
2812 dnl _nl_msg_cat_cntr is required for GNU gettext
2813 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
2815 [#include <libintl.h>
2816 extern int _nl_msg_cat_cntr;],
2817 [++_nl_msg_cat_cntr;],
2818 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
2819 AC_MSG_RESULT([no]))
2822 AC_MSG_RESULT([no "po/Makefile" - disabled]);
2828 dnl Check for dynamic linking loader
2829 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
2830 if test x${DLL} = xdlfcn.h; then
2831 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
2832 AC_MSG_CHECKING([for dlopen()])
2834 extern void* dlopen();
2838 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2840 AC_MSG_CHECKING([for dlopen() in -ldl])
2844 extern void* dlopen();
2848 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2851 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
2853 AC_MSG_CHECKING([for dlsym()])
2855 extern void* dlsym();
2859 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2861 AC_MSG_CHECKING([for dlsym() in -ldl])
2865 extern void* dlsym();
2869 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2872 elif test x${DLL} = xdl.h; then
2873 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
2874 AC_MSG_CHECKING([for shl_load()])
2876 extern void* shl_load();
2880 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2882 AC_MSG_CHECKING([for shl_load() in -ldld])
2886 extern void* shl_load();
2890 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2894 AC_CHECK_HEADERS(setjmp.h)
2896 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
2897 dnl -ldl must come after DynaLoader.a
2898 if echo $LIBS | grep -e '-ldl' >/dev/null; then
2899 LIBS=`echo $LIBS | sed s/-ldl//`
2900 PERL_LIBS="$PERL_LIBS -ldl"
2904 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
2905 && test "x$GUITYPE" != "xCARBONGUI" && test "x$GUITYPE" != "xMACVIMGUI"; then
2906 AC_MSG_CHECKING(whether we need -framework Carbon)
2907 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
2908 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
2909 || test "x$features" = "xhuge"; then
2910 LIBS="$LIBS -framework Carbon"
2916 if test "x$MACARCH" = "xboth"; then
2917 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
2920 dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
2921 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
2922 dnl But only when making dependencies, cproto and lint don't take "-isystem".
2923 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
2924 dnl the number before the version number.
2925 AC_MSG_CHECKING(for GCC 3 or later)
2926 DEPEND_CFLAGS_FILTER=
2927 if test "$GCC" = yes; then
2928 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
2929 if test "$gccmajor" -gt "2"; then
2930 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
2933 if test "$DEPEND_CFLAGS_FILTER" = ""; then
2938 AC_SUBST(DEPEND_CFLAGS_FILTER)
2940 dnl write output files
2941 AC_OUTPUT(auto/config.mk:config.mk.in)
2943 dnl vim: set sw=2 tw=78 fo+=l: