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/include"
808 dnl For Mac OS X 10.3, use the OS-provided framework location
809 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
811 for try in $tclinc; do
812 if test -f "$try/tcl.h"; then
813 AC_MSG_RESULT($try/tcl.h)
818 if test -z "$TCL_INC"; then
819 AC_MSG_RESULT(<not found>)
822 if test -z "$SKIP_TCL"; then
823 AC_MSG_CHECKING(for location of tclConfig.sh script)
824 if test "x$MACOSX" != "xyes"; then
825 tclcnf=`echo $tclinc | sed s/include/lib/g`
826 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
828 dnl For Mac OS X 10.3, use the OS-provided framework location
829 tclcnf="/System/Library/Frameworks/Tcl.framework"
831 for try in $tclcnf; do
832 if test -f $try/tclConfig.sh; then
833 AC_MSG_RESULT($try/tclConfig.sh)
835 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
836 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
837 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
838 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
839 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'`
843 if test -z "$TCL_LIBS"; then
844 AC_MSG_RESULT(<not found>)
845 AC_MSG_CHECKING(for Tcl library by myself)
846 tcllib=`echo $tclinc | sed s/include/lib/g`
847 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
848 for ext in .so .a ; do
849 for ver in "" $tclver ; do
850 for try in $tcllib ; do
852 if test -f $try/lib$trylib ; then
853 AC_MSG_RESULT($try/lib$trylib)
854 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
855 if test "`(uname) 2>/dev/null`" = SunOS &&
856 uname -r | grep '^5' >/dev/null; then
857 TCL_LIBS="$TCL_LIBS -R $try"
864 if test -z "$TCL_LIBS"; then
865 AC_MSG_RESULT(<not found>)
869 if test -z "$SKIP_TCL"; then
872 TCL_OBJ=objects/if_tcl.o
874 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
878 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
888 AC_MSG_CHECKING(--enable-rubyinterp argument)
889 AC_ARG_ENABLE(rubyinterp,
890 [ --enable-rubyinterp Include Ruby interpreter.], ,
891 [enable_rubyinterp="no"])
892 AC_MSG_RESULT($enable_rubyinterp)
893 if test "$enable_rubyinterp" = "yes"; then
894 AC_SUBST(vi_cv_path_ruby)
895 AC_PATH_PROG(vi_cv_path_ruby, ruby)
896 if test "X$vi_cv_path_ruby" != "X"; then
897 AC_MSG_CHECKING(Ruby version)
898 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
900 AC_MSG_CHECKING(Ruby header files)
901 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
902 if test "X$rubyhdrdir" != "X"; then
903 AC_MSG_RESULT($rubyhdrdir)
904 RUBY_CFLAGS="-I$rubyhdrdir"
905 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
906 if test "X$rubylibs" != "X"; then
907 RUBY_LIBS="$rubylibs"
909 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
910 if test -f "$rubyhdrdir/$librubyarg"; then
911 librubyarg="$rubyhdrdir/$librubyarg"
913 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
914 if test -f "$rubylibdir/$librubyarg"; then
915 librubyarg="$rubylibdir/$librubyarg"
916 elif test "$librubyarg" = "libruby.a"; then
917 dnl required on Mac OS 10.3 where libruby.a doesn't exist
920 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
924 if test "X$librubyarg" != "X"; then
925 RUBY_LIBS="$librubyarg $RUBY_LIBS"
927 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
928 if test "X$rubyldflags" != "X"; then
929 LDFLAGS="$rubyldflags $LDFLAGS"
932 RUBY_OBJ="objects/if_ruby.o"
933 RUBY_PRO="if_ruby.pro"
936 AC_MSG_RESULT(not found, disabling Ruby)
939 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
946 AC_SUBST(RUBY_CFLAGS)
949 AC_MSG_CHECKING(--enable-cscope argument)
950 AC_ARG_ENABLE(cscope,
951 [ --enable-cscope Include cscope interface.], ,
952 [enable_cscope="no"])
953 AC_MSG_RESULT($enable_cscope)
954 if test "$enable_cscope" = "yes"; then
955 AC_DEFINE(FEAT_CSCOPE)
958 AC_MSG_CHECKING(--enable-workshop argument)
959 AC_ARG_ENABLE(workshop,
960 [ --enable-workshop Include Sun Visual Workshop support.], ,
961 [enable_workshop="no"])
962 AC_MSG_RESULT($enable_workshop)
963 if test "$enable_workshop" = "yes"; then
964 AC_DEFINE(FEAT_SUN_WORKSHOP)
965 WORKSHOP_SRC="workshop.c integration.c"
966 AC_SUBST(WORKSHOP_SRC)
967 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
968 AC_SUBST(WORKSHOP_OBJ)
969 if test "${enable_gui-xxx}" = xxx; then
974 AC_MSG_CHECKING(--disable-netbeans argument)
975 AC_ARG_ENABLE(netbeans,
976 [ --disable-netbeans Disable NetBeans integration support.],
977 , [enable_netbeans="yes"])
978 if test "$enable_netbeans" = "yes"; then
980 dnl On Solaris we need the socket and nsl library.
981 AC_CHECK_LIB(socket, socket)
982 AC_CHECK_LIB(nsl, gethostbyname)
983 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
990 #include <netinet/in.h>
992 #include <sys/types.h>
993 #include <sys/socket.h>
994 /* Check bitfields */
996 unsigned int initDone:1;
1000 /* Check creating a socket. */
1001 struct sockaddr_in server;
1002 (void)socket(AF_INET, SOCK_STREAM, 0);
1004 (void)gethostbyname("microsoft.com");
1005 if (errno == ECONNREFUSED)
1006 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1009 AC_MSG_RESULT(no); enable_netbeans="no")
1013 if test "$enable_netbeans" = "yes"; then
1014 AC_DEFINE(FEAT_NETBEANS_INTG)
1015 NETBEANS_SRC="netbeans.c"
1016 AC_SUBST(NETBEANS_SRC)
1017 NETBEANS_OBJ="objects/netbeans.o"
1018 AC_SUBST(NETBEANS_OBJ)
1021 AC_MSG_CHECKING(--enable-sniff argument)
1022 AC_ARG_ENABLE(sniff,
1023 [ --enable-sniff Include Sniff interface.], ,
1024 [enable_sniff="no"])
1025 AC_MSG_RESULT($enable_sniff)
1026 if test "$enable_sniff" = "yes"; then
1027 AC_DEFINE(FEAT_SNIFF)
1028 SNIFF_SRC="if_sniff.c"
1030 SNIFF_OBJ="objects/if_sniff.o"
1034 AC_MSG_CHECKING(--enable-multibyte argument)
1035 AC_ARG_ENABLE(multibyte,
1036 [ --enable-multibyte Include multibyte editing support.], ,
1037 [enable_multibyte="no"])
1038 AC_MSG_RESULT($enable_multibyte)
1039 if test "$enable_multibyte" = "yes"; then
1040 AC_DEFINE(FEAT_MBYTE)
1043 AC_MSG_CHECKING(--enable-hangulinput argument)
1044 AC_ARG_ENABLE(hangulinput,
1045 [ --enable-hangulinput Include Hangul input support.], ,
1046 [enable_hangulinput="no"])
1047 AC_MSG_RESULT($enable_hangulinput)
1049 AC_MSG_CHECKING(--enable-xim argument)
1051 [ --enable-xim Include XIM input support.],
1052 AC_MSG_RESULT($enable_xim),
1053 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1054 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1056 AC_MSG_CHECKING(--enable-fontset argument)
1057 AC_ARG_ENABLE(fontset,
1058 [ --enable-fontset Include X fontset output support.], ,
1059 [enable_fontset="no"])
1060 AC_MSG_RESULT($enable_fontset)
1061 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1063 test -z "$with_x" && with_x=yes
1064 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1065 if test "$with_x" = no; then
1066 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1068 dnl Do this check early, so that its failure can override user requests.
1070 AC_PATH_PROG(xmkmfpath, xmkmf)
1074 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1075 dnl be compiled with a special option.
1076 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1077 if test "$OS390Unix" = "yes"; then
1078 CFLAGS="$CFLAGS -W c,dll"
1079 LDFLAGS="$LDFLAGS -W l,dll"
1080 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1083 dnl On my HPUX system the X include dir is found, but the lib dir not.
1084 dnl This is a desparate try to fix this.
1086 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1087 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1088 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1089 X_LIBS="$X_LIBS -L$x_libraries"
1090 if test "`(uname) 2>/dev/null`" = SunOS &&
1091 uname -r | grep '^5' >/dev/null; then
1092 X_LIBS="$X_LIBS -R $x_libraries"
1096 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1097 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1098 AC_MSG_RESULT(Corrected X includes to $x_includes)
1099 X_CFLAGS="$X_CFLAGS -I$x_includes"
1102 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1103 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1104 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1105 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1106 dnl Same for "-R/usr/lib ".
1107 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1110 dnl Check if the X11 header files are correctly installed. On some systems
1111 dnl Xlib.h includes files that don't exist
1112 AC_MSG_CHECKING(if X11 header files can be found)
1114 CFLAGS="$CFLAGS $X_CFLAGS"
1115 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1117 AC_MSG_RESULT(no); no_x=yes)
1120 if test "${no_x-no}" = yes; then
1127 ac_save_LDFLAGS="$LDFLAGS"
1128 LDFLAGS="-L$x_libraries $LDFLAGS"
1130 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1131 dnl For HP-UX 10.20 it must be before -lSM -lICE
1132 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1133 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1135 dnl Some systems need -lnsl -lsocket when testing for ICE.
1136 dnl The check above doesn't do this, try here (again). Also needed to get
1137 dnl them after Xdmcp. link.sh will remove them when not needed.
1138 dnl Check for other function than above to avoid the cached value
1139 AC_CHECK_LIB(ICE, IceOpenConnection,
1140 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1142 dnl Check for -lXpm (needed for some versions of Motif)
1143 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1144 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1145 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1147 dnl Check that the X11 header files don't use implicit declarations
1148 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1150 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1151 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1153 CFLAGS="$CFLAGS -Wno-implicit-int"
1154 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1155 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1156 AC_MSG_RESULT(test failed)
1161 LDFLAGS="$ac_save_LDFLAGS"
1166 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1168 AC_MSG_CHECKING(--enable-gui argument)
1170 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon/macvim]], , enable_gui="auto")
1172 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1173 dnl Do not use character classes for portability with old tools.
1174 enable_gui_canon=`echo "_$enable_gui" | \
1175 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1177 dnl Skip everything by default.
1189 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1191 case "$enable_gui_canon" in
1192 no) AC_MSG_RESULT(no GUI support)
1194 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1195 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1196 photon) AC_MSG_RESULT(Photon GUI support) ;;
1197 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1201 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1204 case "$enable_gui_canon" in
1205 no) AC_MSG_RESULT(no GUI support)
1208 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1209 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1210 carbon) AC_MSG_RESULT(Carbon GUI support)
1212 macvim) AC_MSG_RESULT(MacVim GUI support)
1214 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1221 case "$enable_gui_canon" in
1222 no|none) AC_MSG_RESULT(no GUI support) ;;
1223 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1232 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1234 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1237 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1240 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1244 motif) AC_MSG_RESULT(Motif GUI support)
1246 athena) AC_MSG_RESULT(Athena GUI support)
1248 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1250 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1255 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1256 AC_MSG_CHECKING(whether or not to look for GTK)
1257 AC_ARG_ENABLE(gtk-check,
1258 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1259 , enable_gtk_check="yes")
1260 AC_MSG_RESULT($enable_gtk_check)
1261 if test "x$enable_gtk_check" = "xno"; then
1267 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1268 -a "$enable_gui_canon" != "gnome2"; then
1269 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1270 AC_ARG_ENABLE(gtk2-check,
1271 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1272 , enable_gtk2_check="yes")
1273 AC_MSG_RESULT($enable_gtk2_check)
1274 if test "x$enable_gtk2_check" = "xno"; then
1279 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1280 -a "$enable_gui_canon" != "gnome2"; then
1281 AC_MSG_CHECKING(whether or not to look for GNOME)
1282 AC_ARG_ENABLE(gnome-check,
1283 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1284 , enable_gnome_check="no")
1285 AC_MSG_RESULT($enable_gnome_check)
1286 if test "x$enable_gnome_check" = "xno"; then
1291 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1292 AC_MSG_CHECKING(whether or not to look for Motif)
1293 AC_ARG_ENABLE(motif-check,
1294 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1295 , enable_motif_check="yes")
1296 AC_MSG_RESULT($enable_motif_check)
1297 if test "x$enable_motif_check" = "xno"; then
1302 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1303 AC_MSG_CHECKING(whether or not to look for Athena)
1304 AC_ARG_ENABLE(athena-check,
1305 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1306 , enable_athena_check="yes")
1307 AC_MSG_RESULT($enable_athena_check)
1308 if test "x$enable_athena_check" = "xno"; then
1313 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1314 AC_MSG_CHECKING(whether or not to look for neXtaw)
1315 AC_ARG_ENABLE(nextaw-check,
1316 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1317 , enable_nextaw_check="yes")
1318 AC_MSG_RESULT($enable_nextaw_check);
1319 if test "x$enable_nextaw_check" = "xno"; then
1324 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1325 AC_MSG_CHECKING(whether or not to look for Carbon)
1326 AC_ARG_ENABLE(carbon-check,
1327 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1328 , enable_carbon_check="yes")
1329 AC_MSG_RESULT($enable_carbon_check);
1330 if test "x$enable_carbon_check" = "xno"; then
1335 if test "x$SKIP_MACVIM" != "xYES" -a "$enable_gui_canon" != "macvim"; then
1336 AC_MSG_CHECKING(whether or not to look for MacVim)
1337 AC_ARG_ENABLE(macvim-check,
1338 [ --enable-macvim-check If auto-select GUI, check for MacVim [default=yes]],
1339 , enable_macvim_check="yes")
1340 AC_MSG_RESULT($enable_macvim_check);
1341 if test "x$enable_macvim_check" = "xno"; then
1346 if test "x$MACOSX" = "xyes"; then
1347 if test -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1348 AC_MSG_CHECKING(for Carbon GUI)
1349 dnl already did the check, just give the message
1352 elif test -z "$SKIP_MACVIM" -a "x$COCOA" = "xyes"; then
1353 AC_MSG_CHECKING(for MacVim GUI)
1354 dnl already did the check, just give the message
1359 if test "$VIMNAME" = "vim"; then
1363 dnl Default install directory is not /usr/local
1364 if test x$prefix = xNONE; then
1365 prefix=/Applications
1368 dnl Sorry for the hard coded default
1369 datadir='${prefix}/Vim.app/Contents/Resources'
1371 dnl skip everything else
1384 dnl Get the cflags and libraries from the gtk-config script
1387 dnl define an autoconf function to check for a specified version of GTK, and
1388 dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1390 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1391 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1393 AC_DEFUN(AM_PATH_GTK,
1395 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1397 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1398 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1400 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1401 && $PKG_CONFIG --exists gtk+-2.0; then
1403 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1404 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1405 dnl something like that.
1406 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1407 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1408 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1409 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1410 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1411 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1412 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1413 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1414 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1416 elif test "X$GTK_CONFIG" != "Xno"; then
1418 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1420 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1421 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1422 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1423 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1424 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1425 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1426 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1432 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1434 ac_save_CFLAGS="$CFLAGS"
1435 ac_save_LIBS="$LIBS"
1436 CFLAGS="$CFLAGS $GTK_CFLAGS"
1437 LIBS="$LIBS $GTK_LIBS"
1440 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1441 dnl checks the results of gtk-config to some extent
1445 #include <gtk/gtk.h>
1451 int major, minor, micro;
1454 system ("touch conf.gtktest");
1456 /* HP/UX 9 (%@#!) writes to sscanf strings */
1457 tmp_version = g_strdup("$min_gtk_version");
1458 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
1459 printf("%s, bad version string\n", "$min_gtk_version");
1463 if ((gtk_major_version > major) ||
1464 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1465 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1466 (gtk_micro_version >= micro)))
1472 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1473 CFLAGS="$ac_save_CFLAGS"
1474 LIBS="$ac_save_LIBS"
1477 if test "x$no_gtk" = x ; then
1478 if test "x$enable_gtktest" = "xyes"; then
1479 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1481 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1483 ifelse([$2], , :, [$2])
1489 ifelse([$3], , :, [$3])
1496 ifelse([$3], , :, [$3])
1498 AC_SUBST(GTK_CFLAGS)
1503 dnl ---------------------------------------------------------------------------
1505 dnl ---------------------------------------------------------------------------
1506 AC_DEFUN([GNOME_INIT_HOOK],
1508 AC_SUBST(GNOME_LIBS)
1509 AC_SUBST(GNOME_LIBDIR)
1510 AC_SUBST(GNOME_INCLUDEDIR)
1512 AC_ARG_WITH(gnome-includes,
1513 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1514 [CFLAGS="$CFLAGS -I$withval"]
1517 AC_ARG_WITH(gnome-libs,
1518 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1519 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1523 [ --with-gnome Specify prefix for GNOME files],
1524 if test x$withval = xyes; then
1526 ifelse([$1], [], :, [$1])
1528 if test "x$withval" = xno; then
1532 LDFLAGS="$LDFLAGS -L$withval/lib"
1533 CFLAGS="$CFLAGS -I$withval/include"
1534 gnome_prefix=$withval/lib
1539 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1541 AC_MSG_CHECKING(for libgnomeui-2.0)
1542 if $PKG_CONFIG --exists libgnomeui-2.0; then
1544 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1545 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1546 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1548 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1549 dnl This might not be the right way but it works for me...
1550 AC_MSG_CHECKING(for FreeBSD)
1551 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1552 AC_MSG_RESULT(yes, adding -pthread)
1553 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1554 GNOME_LIBS="$GNOME_LIBS -pthread"
1560 AC_MSG_RESULT(not found)
1561 if test "x$2" = xfail; then
1562 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1566 elif test "x$want_gnome" = xyes; then
1568 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1569 if test "$GNOME_CONFIG" = "no"; then
1570 no_gnome_config="yes"
1572 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1573 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1575 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1576 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1577 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1581 no_gnome_config="yes"
1585 if test x$exec_prefix = xNONE; then
1586 if test x$prefix = xNONE; then
1587 gnome_prefix=$ac_default_prefix/lib
1589 gnome_prefix=$prefix/lib
1592 gnome_prefix=`eval echo \`echo $libdir\``
1595 if test "$no_gnome_config" = "yes"; then
1596 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1597 if test -f $gnome_prefix/gnomeConf.sh; then
1598 AC_MSG_RESULT(found)
1599 echo "loading gnome configuration from" \
1600 "$gnome_prefix/gnomeConf.sh"
1601 . $gnome_prefix/gnomeConf.sh
1604 AC_MSG_RESULT(not found)
1605 if test x$2 = xfail; then
1606 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1614 AC_DEFUN([GNOME_INIT],[
1615 GNOME_INIT_HOOK([],fail)
1619 dnl ---------------------------------------------------------------------------
1620 dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1621 dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1622 dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1623 dnl ---------------------------------------------------------------------------
1624 if test -z "$SKIP_GTK"; then
1626 AC_MSG_CHECKING(--with-gtk-prefix argument)
1627 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1628 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1629 gtk_config_prefix=""; AC_MSG_RESULT(no))
1631 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1632 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1633 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1634 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1636 AC_MSG_CHECKING(--disable-gtktest argument)
1637 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1638 , enable_gtktest=yes)
1639 if test "x$enable_gtktest" = "xyes" ; then
1640 AC_MSG_RESULT(gtk test enabled)
1642 AC_MSG_RESULT(gtk test disabled)
1645 if test "x$gtk_config_prefix" != "x" ; then
1646 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1647 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1649 if test "x$gtk_config_exec_prefix" != "x" ; then
1650 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1651 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1653 if test "X$GTK_CONFIG" = "X"; then
1654 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1655 if test "X$GTK_CONFIG" = "Xno"; then
1656 dnl Some distributions call it gtk12-config, annoying!
1657 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1658 GTK_CONFIG="$GTK12_CONFIG"
1661 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1663 if test "X$PKG_CONFIG" = "X"; then
1664 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1667 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1668 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1669 dnl problems (bold fonts, --remote doesn't work).
1670 if test "X$SKIP_GTK2" != "XYES"; then
1672 [GUI_LIB_LOC="$GTK_LIBDIR"
1673 GTK_LIBNAME="$GTK_LIBS"
1674 GUI_INC_LOC="$GTK_CFLAGS"], )
1675 if test "x$GTK_CFLAGS" != "x"; then
1680 AC_SUBST(GTK_LIBNAME)
1684 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1685 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1686 dnl were test versions.
1687 if test "x$GUITYPE" != "xGTK"; then
1690 [GTK_LIBNAME="$GTK_LIBS"
1691 GUI_INC_LOC="$GTK_CFLAGS"], )
1692 if test "x$GTK_CFLAGS" != "x"; then
1697 AC_SUBST(GTK_LIBNAME)
1701 dnl Give a warning if GTK is older than 1.2.3
1702 if test "x$GUITYPE" = "xGTK"; then
1703 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1704 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1705 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1708 if test "0$gtk_major_version" -ge 2; then
1709 AC_DEFINE(HAVE_GTK2)
1710 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1711 || test "0$gtk_minor_version" -ge 2 \
1712 || test "0$gtk_major_version" -gt 2; then
1713 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1717 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1719 if test -z "$SKIP_GNOME"; then
1721 GNOME_INIT_HOOK([have_gnome=yes])
1722 if test x$have_gnome = xyes ; then
1723 AC_DEFINE(FEAT_GUI_GNOME)
1724 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1725 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1734 dnl Check for Motif include files location.
1735 dnl The LAST one found is used, this makes the highest version to be used,
1736 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1738 if test -z "$SKIP_MOTIF"; then
1739 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"
1740 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1741 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1743 AC_MSG_CHECKING(for location of Motif GUI includes)
1744 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1746 for try in $gui_includes; do
1747 if test -f "$try/Xm/Xm.h"; then
1751 if test -n "$GUI_INC_LOC"; then
1752 if test "$GUI_INC_LOC" = /usr/include; then
1754 AC_MSG_RESULT(in default path)
1756 AC_MSG_RESULT($GUI_INC_LOC)
1759 AC_MSG_RESULT(<not found>)
1764 dnl Check for Motif library files location. In the same order as the include
1765 dnl files, to avoid a mixup if several versions are present
1767 if test -z "$SKIP_MOTIF"; then
1768 AC_MSG_CHECKING(--with-motif-lib argument)
1769 AC_ARG_WITH(motif-lib,
1770 [ --with-motif-lib=STRING Library for Motif ],
1771 [ MOTIF_LIBNAME="${withval}" ] )
1773 if test -n "$MOTIF_LIBNAME"; then
1774 AC_MSG_RESULT($MOTIF_LIBNAME)
1779 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1780 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1782 AC_MSG_CHECKING(for location of Motif GUI libs)
1783 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"
1785 for try in $gui_libs; do
1786 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1787 if test -f "$libtry"; then
1792 if test -n "$GUI_LIB_LOC"; then
1793 dnl Remove /usr/lib, it causes trouble on some systems
1794 if test "$GUI_LIB_LOC" = /usr/lib; then
1796 AC_MSG_RESULT(in default path)
1798 if test -n "$GUI_LIB_LOC"; then
1799 AC_MSG_RESULT($GUI_LIB_LOC)
1800 if test "`(uname) 2>/dev/null`" = SunOS &&
1801 uname -r | grep '^5' >/dev/null; then
1802 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1808 AC_MSG_RESULT(<not found>)
1814 if test -z "$SKIP_MOTIF"; then
1818 AC_SUBST(MOTIF_LIBNAME)
1821 dnl Check if the Athena files can be found
1825 if test -z "$SKIP_ATHENA"; then
1826 AC_MSG_CHECKING(if Athena header files can be found)
1828 CFLAGS="$CFLAGS $X_CFLAGS"
1830 #include <X11/Intrinsic.h>
1831 #include <X11/Xaw/Paned.h>], ,
1833 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1837 if test -z "$SKIP_ATHENA"; then
1841 if test -z "$SKIP_NEXTAW"; then
1842 AC_MSG_CHECKING(if neXtaw header files can be found)
1844 CFLAGS="$CFLAGS $X_CFLAGS"
1846 #include <X11/Intrinsic.h>
1847 #include <X11/neXtaw/Paned.h>], ,
1849 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1853 if test -z "$SKIP_NEXTAW"; then
1857 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1858 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1859 dnl Avoid adding it when it twice
1860 if test -n "$GUI_INC_LOC"; then
1861 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1863 if test -n "$GUI_LIB_LOC"; then
1864 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1867 dnl Check for -lXext and then for -lXmu
1868 ldflags_save=$LDFLAGS
1869 LDFLAGS="$X_LIBS $LDFLAGS"
1870 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1871 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1872 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1873 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1874 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1875 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1876 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1877 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1878 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1879 if test -z "$SKIP_MOTIF"; then
1880 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1881 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1883 LDFLAGS=$ldflags_save
1885 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1886 AC_MSG_CHECKING(for extra X11 defines)
1889 if mkdir conftestdir; then
1891 cat > Imakefile <<'EOF'
1893 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1895 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1896 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1901 if test -z "$NARROW_PROTO"; then
1904 AC_MSG_RESULT($NARROW_PROTO)
1906 AC_SUBST(NARROW_PROTO)
1909 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1910 dnl use the X11 include path
1911 if test "$enable_xsmp" = "yes"; then
1912 cppflags_save=$CPPFLAGS
1913 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1914 AC_CHECK_HEADERS(X11/SM/SMlib.h)
1915 CPPFLAGS=$cppflags_save
1919 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1920 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1921 cppflags_save=$CPPFLAGS
1922 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1923 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1925 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1926 if test ! "$enable_xim" = "no"; then
1927 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1928 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1930 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1932 CPPFLAGS=$cppflags_save
1934 dnl automatically enable XIM when hangul input isn't enabled
1935 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1936 -a "x$GUITYPE" != "xNONE" ; then
1937 AC_MSG_RESULT(X GUI selected; xim has been enabled)
1942 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1943 cppflags_save=$CPPFLAGS
1944 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1945 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1946 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1948 #include <X11/Intrinsic.h>
1949 #include <X11/Xmu/Editres.h>],
1952 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1954 CPPFLAGS=$cppflags_save
1957 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1958 if test -z "$SKIP_MOTIF"; then
1959 cppflags_save=$CPPFLAGS
1960 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1961 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
1962 Xm/UnhighlightT.h Xm/Notebook.h)
1964 if test $ac_cv_header_Xm_XpmP_h = yes; then
1965 dnl Solaris uses XpmAttributes_21, very annoying.
1966 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1967 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
1968 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
1969 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1972 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1974 CPPFLAGS=$cppflags_save
1977 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
1978 AC_MSG_RESULT(no GUI selected; xim has been disabled)
1981 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
1982 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
1985 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
1986 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
1990 if test -z "$SKIP_PHOTON"; then
1994 AC_SUBST(GUI_INC_LOC)
1995 AC_SUBST(GUI_LIB_LOC)
1997 AC_SUBST(GUI_X_LIBS)
1999 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2000 AC_MSG_ERROR([cannot use workshop without Motif])
2003 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2004 if test "$enable_xim" = "yes"; then
2007 if test "$enable_fontset" = "yes"; then
2008 AC_DEFINE(FEAT_XFONTSET)
2012 dnl ---------------------------------------------------------------------------
2013 dnl end of GUI-checking
2014 dnl ---------------------------------------------------------------------------
2017 dnl Only really enable hangul input when GUI and XFONTSET are available
2018 if test "$enable_hangulinput" = "yes"; then
2019 if test "x$GUITYPE" = "xNONE"; then
2020 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2021 enable_hangulinput=no
2023 AC_DEFINE(FEAT_HANGULIN)
2024 HANGULIN_SRC=hangulin.c
2025 AC_SUBST(HANGULIN_SRC)
2026 HANGULIN_OBJ=objects/hangulin.o
2027 AC_SUBST(HANGULIN_OBJ)
2031 dnl Checks for libraries and include files.
2033 AC_MSG_CHECKING(quality of toupper)
2034 AC_TRY_RUN([#include <ctype.h>
2035 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }],
2036 AC_DEFINE(BROKEN_TOUPPER) AC_MSG_RESULT(bad),
2037 AC_MSG_RESULT(good), AC_MSG_ERROR(failed to compile test program))
2039 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2040 AC_TRY_COMPILE(, [printf("(" __DATE__ " " __TIME__ ")");],
2041 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2044 dnl Checks for header files.
2045 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2046 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2047 if test "$HAS_ELF" = 1; then
2048 AC_CHECK_LIB(elf, main)
2053 dnl check for standard headers, we don't use this in Vim but other stuff
2054 dnl in autoconf needs it
2058 dnl If sys/wait.h is not found it might still exist but not be POSIX
2059 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2060 if test $ac_cv_header_sys_wait_h = no; then
2061 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2062 AC_TRY_COMPILE([#include <sys/wait.h>],
2063 [union wait xx, yy; xx = yy],
2065 AC_DEFINE(HAVE_SYS_WAIT_H)
2066 AC_DEFINE(HAVE_UNION_WAIT),
2070 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2071 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2072 iconv.h langinfo.h unistd.h stropts.h errno.h \
2073 sys/resource.h sys/systeminfo.h locale.h \
2074 sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
2075 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2076 libgen.h util/debug.h util/msg18n.h frame.h \
2077 sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
2079 dnl pthread_np.h may exist but can only be used after including pthread.h
2080 AC_MSG_CHECKING([for pthread_np.h])
2082 #include <pthread.h>
2083 #include <pthread_np.h>],
2086 AC_DEFINE(HAVE_PTHREAD_NP_H),
2089 AC_CHECK_HEADERS(strings.h)
2090 if test "x$MACOSX" = "xyes"; then
2091 dnl The strings.h file on OS/X contains a warning and nothing useful.
2092 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2095 dnl Check if strings.h and string.h can both be included when defined.
2096 AC_MSG_CHECKING([if strings.h can be included after string.h])
2097 cppflags_save=$CPPFLAGS
2098 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2100 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2101 # define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2102 /* but don't do it on AIX 5.1 (Uribarri) */
2105 # include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2107 #ifdef HAVE_STRING_H
2108 # include <string.h>
2110 #if defined(HAVE_STRINGS_H)
2111 # include <strings.h>
2115 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2117 CPPFLAGS=$cppflags_save
2120 dnl Checks for typedefs, structures, and compiler characteristics.
2121 AC_PROG_GCC_TRADITIONAL
2129 AC_CHECK_TYPE(ino_t, long)
2130 AC_CHECK_TYPE(dev_t, unsigned)
2132 AC_MSG_CHECKING(for rlim_t)
2133 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2134 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2137 changequote(<<,>>)dnl
2138 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2141 #include <sys/types.h>
2146 #ifdef HAVE_SYS_RESOURCE_H
2147 #include <sys/resource.h>
2149 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2150 AC_MSG_RESULT($ac_cv_type_rlim_t)
2152 if test $ac_cv_type_rlim_t = no; then
2153 cat >> confdefs.h <<\EOF
2154 #define rlim_t unsigned long
2158 AC_MSG_CHECKING(for stack_t)
2159 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2160 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2162 AC_EGREP_CPP(stack_t,
2164 #include <sys/types.h>
2170 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2171 AC_MSG_RESULT($ac_cv_type_stack_t)
2173 if test $ac_cv_type_stack_t = no; then
2174 cat >> confdefs.h <<\EOF
2175 #define stack_t struct sigaltstack
2179 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2180 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2182 #include <sys/types.h>
2188 #include "confdefs.h"
2189 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2190 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2194 AC_MSG_CHECKING(--with-tlib argument)
2195 AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2196 if test -n "$with_tlib"; then
2197 AC_MSG_RESULT($with_tlib)
2198 LIBS="$LIBS -l$with_tlib"
2199 AC_MSG_CHECKING(for linking with $with_tlib library)
2200 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2201 dnl Need to check for tgetent() below.
2204 AC_MSG_RESULT([empty: automatic terminal library selection])
2205 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2206 dnl curses, because curses is much slower.
2207 dnl Newer versions of ncurses are preferred over anything.
2208 dnl Older versions of ncurses have bugs, get a new one!
2209 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
2210 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
2211 case "`uname -s 2>/dev/null`" in
2212 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
2213 *) tlibs="ncurses termlib termcap curses";;
2215 for libname in $tlibs; do
2216 AC_CHECK_LIB(${libname}, tgetent,,)
2217 if test "x$olibs" != "x$LIBS"; then
2218 dnl It's possible that a library is found but it doesn't work
2219 dnl e.g., shared library that cannot be found
2220 dnl compile and run a test program to be sure
2222 #ifdef HAVE_TERMCAP_H
2223 # include <termcap.h>
2225 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2226 res="OK", res="FAIL", res="FAIL")
2227 if test "$res" = "OK"; then
2230 AC_MSG_RESULT($libname library is not usable)
2234 if test "x$olibs" = "x$LIBS"; then
2235 AC_MSG_RESULT(no terminal library found)
2239 if test "x$olibs" = "x$LIBS"; then
2240 AC_MSG_CHECKING([for tgetent()])
2242 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2244 AC_MSG_ERROR([NOT FOUND!
2245 You need to install a terminal library; for example ncurses.
2246 Or specify the name of the library with --with-tlib.]))
2249 AC_MSG_CHECKING(whether we talk terminfo)
2251 #ifdef HAVE_TERMCAP_H
2252 # include <termcap.h>
2255 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }],
2256 AC_MSG_RESULT([no -- we are in termcap land]),
2257 AC_MSG_RESULT([yes -- terminfo spoken here]); AC_DEFINE(TERMINFO),
2258 AC_MSG_ERROR(failed to compile test program.))
2260 if test "x$olibs" != "x$LIBS"; then
2261 AC_MSG_CHECKING(what tgetent() returns for an unknown terminal)
2263 #ifdef HAVE_TERMCAP_H
2264 # include <termcap.h>
2267 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }],
2268 AC_MSG_RESULT(zero); AC_DEFINE(TGETENT_ZERO_ERR, 0),
2269 AC_MSG_RESULT(non-zero),
2270 AC_MSG_ERROR(failed to compile test program.))
2273 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2275 #ifdef HAVE_TERMCAP_H
2276 # include <termcap.h>
2278 ], [ospeed = 20000],
2279 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2281 AC_MSG_CHECKING(whether ospeed can be extern)
2283 #ifdef HAVE_TERMCAP_H
2284 # include <termcap.h>
2286 extern short ospeed;
2287 ], [ospeed = 20000],
2288 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2292 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2294 #ifdef HAVE_TERMCAP_H
2295 # include <termcap.h>
2297 ], [if (UP == 0 && BC == 0) PC = 1],
2298 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2300 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2302 #ifdef HAVE_TERMCAP_H
2303 # include <termcap.h>
2305 extern char *UP, *BC, PC;
2306 ], [if (UP == 0 && BC == 0) PC = 1],
2307 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2311 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2313 #ifdef HAVE_TERMCAP_H
2314 # include <termcap.h>
2316 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2317 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2320 dnl On some SCO machines sys/select redefines struct timeval
2321 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2323 #include <sys/types.h>
2324 #include <sys/time.h>
2325 #include <sys/select.h>], ,
2327 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2330 dnl AC_DECL_SYS_SIGLIST
2332 dnl Checks for pty.c (copied from screen) ==========================
2333 AC_MSG_CHECKING(for /dev/ptc)
2334 if test -r /dev/ptc; then
2335 AC_DEFINE(HAVE_DEV_PTC)
2341 AC_MSG_CHECKING(for SVR4 ptys)
2342 if test -c /dev/ptmx ; then
2343 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2344 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2350 AC_MSG_CHECKING(for ptyranges)
2351 if test -d /dev/ptym ; then
2361 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2362 dnl if test -c /dev/ptyp19; then
2363 dnl ptys=`echo /dev/ptyp??`
2365 dnl ptys=`echo $pdir/pty??`
2367 if test "$ptys" != "$pdir/pty??" ; then
2368 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2369 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2370 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2371 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2372 AC_MSG_RESULT([$p0 / $p1])
2374 AC_MSG_RESULT([don't know])
2377 dnl **** pty mode/group handling ****
2379 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2380 AC_MSG_CHECKING(default tty permissions/group)
2383 #include <sys/types.h>
2384 #include <sys/stat.h>
2393 if (!(x = ttyname(0))) exit(1);
2394 if (stat(x, &sb)) exit(1);
2396 if (om & 002) exit(0);
2397 m = system("mesg y");
2398 if (m == -1 || m == 127) exit(1);
2399 if (stat(x, &sb)) exit(1);
2401 if (chmod(x, om)) exit(1);
2402 if (m & 002) exit(0);
2403 if (sb.st_gid == getgid()) exit(1);
2404 if (!(fp=fopen("conftest_grp", "w")))
2406 fprintf(fp, "%d\n", sb.st_gid);
2411 if test -f conftest_grp; then
2412 ptygrp=`cat conftest_grp`
2413 AC_MSG_RESULT([pty mode: 0620, group: $ptygrp])
2414 AC_DEFINE(PTYMODE, 0620)
2415 AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
2417 AC_MSG_RESULT([ptys are world accessable])
2420 AC_MSG_RESULT([can't determine - assume ptys are world accessable]),
2421 AC_MSG_ERROR(failed to compile test program))
2424 dnl Checks for library functions. ===================================
2428 dnl find out what to use at the end of a signal function
2429 if test $ac_cv_type_signal = void; then
2430 AC_DEFINE(SIGRETURN, [return])
2432 AC_DEFINE(SIGRETURN, [return 0])
2435 dnl check if struct sigcontext is defined (used for SGI only)
2436 AC_MSG_CHECKING(for struct sigcontext)
2441 struct sigcontext *scont;
2442 scont = (struct sigcontext *)0;
2446 AC_DEFINE(HAVE_SIGCONTEXT),
2449 dnl tricky stuff: try to find out if getcwd() is implemented with
2450 dnl system("sh -c pwd")
2451 AC_MSG_CHECKING(getcwd implementation)
2453 char *dagger[] = { "IFS=pwd", 0 };
2457 extern char **environ;
2459 return getcwd(buffer, 500) ? 0 : 1;
2461 AC_MSG_RESULT(it is usable),
2462 AC_MSG_RESULT(it stinks)
2463 AC_DEFINE(BAD_GETCWD),
2464 AC_MSG_ERROR(failed to compile test program))
2466 dnl Check for functions in one big call, to reduce the size of configure
2467 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2468 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2469 memset nanosleep opendir putenv qsort readlink select setenv \
2470 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2471 sigvec strcasecmp strerror strftime stricmp strncasecmp \
2472 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2473 usleep utime utimes)
2475 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2476 AC_MSG_CHECKING(for st_blksize)
2478 [#include <sys/types.h>
2479 #include <sys/stat.h>],
2484 n = (int)st.st_blksize;],
2485 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2488 AC_MSG_CHECKING(whether stat() ignores a trailing slash)
2490 [#include <sys/types.h>
2491 #include <sys/stat.h>
2492 main() {struct stat st; exit(stat("configure/", &st) != 0); }],
2493 AC_MSG_RESULT(yes); AC_DEFINE(STAT_IGNORES_SLASH),
2494 AC_MSG_RESULT(no), AC_MSG_ERROR(failed to compile test program))
2496 dnl Link with iconv for charset translation, if not found without library.
2497 dnl check for iconv() requires including iconv.h
2498 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2499 dnl has been installed.
2500 AC_MSG_CHECKING(for iconv_open())
2502 LIBS="$LIBS -liconv"
2507 ], [iconv_open("fr", "to");],
2508 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2514 ], [iconv_open("fr", "to");],
2515 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2519 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2521 #ifdef HAVE_LANGINFO_H
2522 # include <langinfo.h>
2524 ], [char *cs = nl_langinfo(CODESET);],
2525 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2528 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2529 dnl when -lacl works, also try to use -lattr (required for Debian).
2530 AC_MSG_CHECKING(--disable-acl argument)
2532 [ --disable-acl Don't check for ACL support.],
2533 , [enable_acl="yes"])
2534 if test "$enable_acl" = "yes"; then
2536 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2537 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2538 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2540 AC_MSG_CHECKING(for POSIX ACL support)
2542 #include <sys/types.h>
2543 #ifdef HAVE_SYS_ACL_H
2544 # include <sys/acl.h>
2546 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2547 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2549 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2552 AC_MSG_CHECKING(for Solaris ACL support)
2554 #ifdef HAVE_SYS_ACL_H
2555 # include <sys/acl.h>
2556 #endif], [acl("foo", GETACLCNT, 0, NULL);
2558 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2561 AC_MSG_CHECKING(for AIX ACL support)
2563 #ifdef HAVE_SYS_ACL_H
2564 # include <sys/acl.h>
2566 #ifdef HAVE_SYS_ACCESS_H
2567 # include <sys/access.h>
2571 #include <sys/stat.h>
2574 struct acl *aclent;], [aclsize = sizeof(struct acl);
2575 aclent = (void *)malloc(aclsize);
2576 statacl("foo", STX_NORMAL, aclent, aclsize);
2578 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2584 AC_MSG_CHECKING(--disable-gpm argument)
2586 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2589 if test "$enable_gpm" = "yes"; then
2591 dnl Checking if gpm support can be compiled
2592 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2593 [olibs="$LIBS" ; LIBS="-lgpm"]
2596 #include <linux/keyboard.h>],
2597 [Gpm_GetLibVersion(NULL);],
2598 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2599 dnl FEAT_MOUSE_GPM if mouse support is included
2600 [vi_cv_have_gpm=yes],
2601 [vi_cv_have_gpm=no])
2604 if test $vi_cv_have_gpm = yes; then
2612 dnl rename needs to be checked separately to work on Nextstep with cc
2613 AC_MSG_CHECKING(for rename)
2614 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2615 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2618 dnl sysctl() may exist but not the arguments we use
2619 AC_MSG_CHECKING(for sysctl)
2621 [#include <sys/types.h>
2622 #include <sys/sysctl.h>],
2627 mib[1] = HW_USERMEM;
2629 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2631 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2632 AC_MSG_RESULT(not usable))
2634 dnl sysinfo() may exist but not be Linux compatible
2635 AC_MSG_CHECKING(for sysinfo)
2637 [#include <sys/types.h>
2638 #include <sys/sysinfo.h>],
2639 [ struct sysinfo sinfo;
2642 (void)sysinfo(&sinfo);
2645 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2646 AC_MSG_RESULT(not usable))
2648 dnl struct sysinfo may have the mem_unit field or not
2649 AC_MSG_CHECKING(for sysinfo.mem_unit)
2651 [#include <sys/types.h>
2652 #include <sys/sysinfo.h>],
2653 [ struct sysinfo sinfo;
2656 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2659 dnl sysconf() may exist but not support what we want to use
2660 AC_MSG_CHECKING(for sysconf)
2662 [#include <unistd.h>],
2663 [ (void)sysconf(_SC_PAGESIZE);
2664 (void)sysconf(_SC_PHYS_PAGES);
2666 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2667 AC_MSG_RESULT(not usable))
2669 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2670 dnl be printed with "%d", and avoids a warning for cross-compiling.
2672 AC_MSG_CHECKING(size of int)
2673 AC_CACHE_VAL(ac_cv_sizeof_int,
2674 [AC_TRY_RUN([#include <stdio.h>
2677 FILE *f=fopen("conftestval", "w");
2679 fprintf(f, "%d\n", (int)sizeof(int));
2682 ac_cv_sizeof_int=`cat conftestval`,
2684 AC_MSG_ERROR(failed to compile test program))])
2685 AC_MSG_RESULT($ac_cv_sizeof_int)
2686 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2688 AC_MSG_CHECKING(whether memmove/bcopy/memcpy handle overlaps)
2692 strcpy(buf, "abcdefghi");
2693 mch_memmove(buf, buf + 2, 3);
2694 if (strncmp(buf, "ababcf", 6))
2696 strcpy(buf, "abcdefghi");
2697 mch_memmove(buf + 2, buf, 3);
2698 if (strncmp(buf, "cdedef", 6))
2700 exit(0); /* libc version works properly. */
2703 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2704 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2706 AC_TRY_RUN([#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog],
2707 AC_DEFINE(USEMEMMOVE) AC_MSG_RESULT(memmove does),
2708 AC_TRY_RUN([#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog],
2709 AC_DEFINE(USEBCOPY) AC_MSG_RESULT(bcopy does),
2710 AC_TRY_RUN([#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog],
2711 AC_DEFINE(USEMEMCPY) AC_MSG_RESULT(memcpy does), AC_MSG_RESULT(no),
2712 AC_MSG_ERROR(failed to compile test program)),
2713 AC_MSG_ERROR(failed to compile test program)),
2714 AC_MSG_ERROR(failed to compile test program))
2716 dnl Check for multibyte locale functions
2717 dnl Find out if _Xsetlocale() is supported by libX11.
2718 dnl Check if X_LOCALE should be defined.
2720 if test "$enable_multibyte" = "yes"; then
2722 ldflags_save=$LDFLAGS
2723 if test -n "$x_includes" ; then
2724 CFLAGS="$CFLAGS -I$x_includes"
2725 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2726 AC_MSG_CHECKING(whether X_LOCALE needed)
2727 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2728 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2729 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2733 LDFLAGS=$ldflags_save
2736 dnl Link with xpg4, it is said to make Korean locale working
2737 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2739 dnl Check how we can run ctags
2740 dnl --version for Exuberant ctags (preferred)
2741 dnl Add --fields=+S to get function signatures for omni completion.
2742 dnl -t for typedefs (many ctags have this)
2743 dnl -s for static functions (Elvis ctags only?)
2744 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2745 dnl -i+m to test for older Exuberant ctags
2746 AC_MSG_CHECKING(how to create tags)
2747 test -f tags && mv tags tags.save
2748 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
2749 TAGPRG="ctags -I INIT+ --fields=+S"
2751 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2752 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2753 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2754 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2755 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2756 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2757 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2759 test -f tags.save && mv tags.save tags
2760 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2762 dnl Check how we can run man with a section number
2763 AC_MSG_CHECKING(how to run man with a section nr)
2765 (eval man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
2766 AC_MSG_RESULT($MANDEF)
2767 if test "$MANDEF" = "man -s"; then
2771 dnl Check if gettext() is working and if it needs -lintl
2772 AC_MSG_CHECKING(--disable-nls argument)
2774 [ --disable-nls Don't support NLS (gettext()).], ,
2777 if test "$enable_nls" = "yes"; then
2780 INSTALL_LANGS=install-languages
2781 AC_SUBST(INSTALL_LANGS)
2782 INSTALL_TOOL_LANGS=install-tool-languages
2783 AC_SUBST(INSTALL_TOOL_LANGS)
2785 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
2786 AC_MSG_CHECKING([for NLS])
2787 if test -f po/Makefile; then
2789 if test -n "$MSGFMT"; then
2791 [#include <libintl.h>],
2793 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
2797 [#include <libintl.h>],
2799 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
2800 AC_MSG_RESULT([gettext() doesn't work]);
2803 AC_MSG_RESULT([msgfmt not found - disabled]);
2805 if test $have_gettext = "yes"; then
2806 AC_DEFINE(HAVE_GETTEXT)
2809 dnl this was added in GNU gettext 0.10.36
2810 AC_CHECK_FUNCS(bind_textdomain_codeset)
2811 dnl _nl_msg_cat_cntr is required for GNU gettext
2812 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
2814 [#include <libintl.h>
2815 extern int _nl_msg_cat_cntr;],
2816 [++_nl_msg_cat_cntr;],
2817 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
2818 AC_MSG_RESULT([no]))
2821 AC_MSG_RESULT([no "po/Makefile" - disabled]);
2827 dnl Check for dynamic linking loader
2828 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
2829 if test x${DLL} = xdlfcn.h; then
2830 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
2831 AC_MSG_CHECKING([for dlopen()])
2833 extern void* dlopen();
2837 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2839 AC_MSG_CHECKING([for dlopen() in -ldl])
2843 extern void* dlopen();
2847 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2850 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
2852 AC_MSG_CHECKING([for dlsym()])
2854 extern void* dlsym();
2858 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2860 AC_MSG_CHECKING([for dlsym() in -ldl])
2864 extern void* dlsym();
2868 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2871 elif test x${DLL} = xdl.h; then
2872 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
2873 AC_MSG_CHECKING([for shl_load()])
2875 extern void* shl_load();
2879 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2881 AC_MSG_CHECKING([for shl_load() in -ldld])
2885 extern void* shl_load();
2889 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2893 AC_CHECK_HEADERS(setjmp.h)
2895 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
2896 dnl -ldl must come after DynaLoader.a
2897 if echo $LIBS | grep -e '-ldl' >/dev/null; then
2898 LIBS=`echo $LIBS | sed s/-ldl//`
2899 PERL_LIBS="$PERL_LIBS -ldl"
2903 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
2904 && test "x$GUITYPE" != "xCARBONGUI" && test "x$GUITYPE" != "xMACVIMGUI"; then
2905 AC_MSG_CHECKING(whether we need -framework Carbon)
2906 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
2907 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
2908 || test "x$features" = "xhuge"; then
2909 LIBS="$LIBS -framework Carbon"
2915 if test "x$MACARCH" = "xboth"; then
2916 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
2919 dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
2920 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
2921 dnl But only when making dependencies, cproto and lint don't take "-isystem".
2922 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
2923 dnl the number before the version number.
2924 AC_MSG_CHECKING(for GCC 3 or later)
2925 DEPEND_CFLAGS_FILTER=
2926 if test "$GCC" = yes; then
2927 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
2928 if test "$gccmajor" -gt "2"; then
2929 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
2932 if test "$DEPEND_CFLAGS_FILTER" = ""; then
2937 AC_SUBST(DEPEND_CFLAGS_FILTER)
2939 dnl write output files
2940 AC_OUTPUT(auto/config.mk:config.mk.in)
2942 dnl vim: set sw=2 tw=78 fo+=l: