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.[420]
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.4"; 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.2 and 8.0
780 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
781 tclsh_name="tclsh8.2"
782 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
784 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
785 tclsh_name="tclsh8.0"
786 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
788 dnl still didn't find it, try without version number
789 if test "X$vi_cv_path_tcl" = "X"; then
791 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
793 if test "X$vi_cv_path_tcl" != "X"; then
794 AC_MSG_CHECKING(Tcl version)
795 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
796 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
797 AC_MSG_RESULT($tclver - OK);
798 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 -`
800 AC_MSG_CHECKING(for location of Tcl include)
801 if test "x$MACOSX" != "xyes"; then
802 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/include"
804 dnl For Mac OS X 10.3, use the OS-provided framework location
805 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
807 for try in $tclinc; do
808 if test -f "$try/tcl.h"; then
809 AC_MSG_RESULT($try/tcl.h)
814 if test -z "$TCL_INC"; then
815 AC_MSG_RESULT(<not found>)
818 if test -z "$SKIP_TCL"; then
819 AC_MSG_CHECKING(for location of tclConfig.sh script)
820 if test "x$MACOSX" != "xyes"; then
821 tclcnf=`echo $tclinc | sed s/include/lib/g`
823 dnl For Mac OS X 10.3, use the OS-provided framework location
824 tclcnf="/System/Library/Frameworks/Tcl.framework"
826 for try in $tclcnf; do
827 if test -f $try/tclConfig.sh; then
828 AC_MSG_RESULT($try/tclConfig.sh)
830 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
831 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
832 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
833 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
834 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'`
838 if test -z "$TCL_LIBS"; then
839 AC_MSG_RESULT(<not found>)
840 AC_MSG_CHECKING(for Tcl library by myself)
841 tcllib=`echo $tclinc | sed s/include/lib/g`
842 for ext in .so .a ; do
843 for ver in "" $tclver ; do
844 for try in $tcllib ; do
846 if test -f $try/lib$trylib ; then
847 AC_MSG_RESULT($try/lib$trylib)
848 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
849 if test "`(uname) 2>/dev/null`" = SunOS &&
850 uname -r | grep '^5' >/dev/null; then
851 TCL_LIBS="$TCL_LIBS -R $try"
858 if test -z "$TCL_LIBS"; then
859 AC_MSG_RESULT(<not found>)
863 if test -z "$SKIP_TCL"; then
866 TCL_OBJ=objects/if_tcl.o
868 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
872 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
882 AC_MSG_CHECKING(--enable-rubyinterp argument)
883 AC_ARG_ENABLE(rubyinterp,
884 [ --enable-rubyinterp Include Ruby interpreter.], ,
885 [enable_rubyinterp="no"])
886 AC_MSG_RESULT($enable_rubyinterp)
887 if test "$enable_rubyinterp" = "yes"; then
888 AC_SUBST(vi_cv_path_ruby)
889 AC_PATH_PROG(vi_cv_path_ruby, ruby)
890 if test "X$vi_cv_path_ruby" != "X"; then
891 AC_MSG_CHECKING(Ruby version)
892 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
894 AC_MSG_CHECKING(Ruby header files)
895 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
896 if test "X$rubyhdrdir" != "X"; then
897 AC_MSG_RESULT($rubyhdrdir)
898 RUBY_CFLAGS="-I$rubyhdrdir"
899 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
900 if test "X$rubylibs" != "X"; then
901 RUBY_LIBS="$rubylibs"
903 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
904 if test -f "$rubyhdrdir/$librubyarg"; then
905 librubyarg="$rubyhdrdir/$librubyarg"
907 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
908 if test -f "$rubylibdir/$librubyarg"; then
909 librubyarg="$rubylibdir/$librubyarg"
910 elif test "$librubyarg" = "libruby.a"; then
911 dnl required on Mac OS 10.3 where libruby.a doesn't exist
914 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
918 if test "X$librubyarg" != "X"; then
919 RUBY_LIBS="$librubyarg $RUBY_LIBS"
921 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
922 if test "X$rubyldflags" != "X"; then
923 LDFLAGS="$rubyldflags $LDFLAGS"
926 RUBY_OBJ="objects/if_ruby.o"
927 RUBY_PRO="if_ruby.pro"
930 AC_MSG_RESULT(not found, disabling Ruby)
933 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
940 AC_SUBST(RUBY_CFLAGS)
943 AC_MSG_CHECKING(--enable-cscope argument)
944 AC_ARG_ENABLE(cscope,
945 [ --enable-cscope Include cscope interface.], ,
946 [enable_cscope="no"])
947 AC_MSG_RESULT($enable_cscope)
948 if test "$enable_cscope" = "yes"; then
949 AC_DEFINE(FEAT_CSCOPE)
952 AC_MSG_CHECKING(--enable-workshop argument)
953 AC_ARG_ENABLE(workshop,
954 [ --enable-workshop Include Sun Visual Workshop support.], ,
955 [enable_workshop="no"])
956 AC_MSG_RESULT($enable_workshop)
957 if test "$enable_workshop" = "yes"; then
958 AC_DEFINE(FEAT_SUN_WORKSHOP)
959 WORKSHOP_SRC="workshop.c integration.c"
960 AC_SUBST(WORKSHOP_SRC)
961 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
962 AC_SUBST(WORKSHOP_OBJ)
963 if test "${enable_gui-xxx}" = xxx; then
968 AC_MSG_CHECKING(--disable-netbeans argument)
969 AC_ARG_ENABLE(netbeans,
970 [ --disable-netbeans Disable NetBeans integration support.],
971 , [enable_netbeans="yes"])
972 if test "$enable_netbeans" = "yes"; then
974 dnl On Solaris we need the socket and nsl library.
975 AC_CHECK_LIB(socket, socket)
976 AC_CHECK_LIB(nsl, gethostbyname)
977 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
984 #include <netinet/in.h>
986 #include <sys/types.h>
987 #include <sys/socket.h>
988 /* Check bitfields */
990 unsigned int initDone:1;
994 /* Check creating a socket. */
995 struct sockaddr_in server;
996 (void)socket(AF_INET, SOCK_STREAM, 0);
998 (void)gethostbyname("microsoft.com");
999 if (errno == ECONNREFUSED)
1000 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1003 AC_MSG_RESULT(no); enable_netbeans="no")
1007 if test "$enable_netbeans" = "yes"; then
1008 AC_DEFINE(FEAT_NETBEANS_INTG)
1009 NETBEANS_SRC="netbeans.c"
1010 AC_SUBST(NETBEANS_SRC)
1011 NETBEANS_OBJ="objects/netbeans.o"
1012 AC_SUBST(NETBEANS_OBJ)
1015 AC_MSG_CHECKING(--enable-sniff argument)
1016 AC_ARG_ENABLE(sniff,
1017 [ --enable-sniff Include Sniff interface.], ,
1018 [enable_sniff="no"])
1019 AC_MSG_RESULT($enable_sniff)
1020 if test "$enable_sniff" = "yes"; then
1021 AC_DEFINE(FEAT_SNIFF)
1022 SNIFF_SRC="if_sniff.c"
1024 SNIFF_OBJ="objects/if_sniff.o"
1028 AC_MSG_CHECKING(--enable-multibyte argument)
1029 AC_ARG_ENABLE(multibyte,
1030 [ --enable-multibyte Include multibyte editing support.], ,
1031 [enable_multibyte="no"])
1032 AC_MSG_RESULT($enable_multibyte)
1033 if test "$enable_multibyte" = "yes"; then
1034 AC_DEFINE(FEAT_MBYTE)
1037 AC_MSG_CHECKING(--enable-hangulinput argument)
1038 AC_ARG_ENABLE(hangulinput,
1039 [ --enable-hangulinput Include Hangul input support.], ,
1040 [enable_hangulinput="no"])
1041 AC_MSG_RESULT($enable_hangulinput)
1043 AC_MSG_CHECKING(--enable-xim argument)
1045 [ --enable-xim Include XIM input support.],
1046 AC_MSG_RESULT($enable_xim),
1047 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1048 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1050 AC_MSG_CHECKING(--enable-fontset argument)
1051 AC_ARG_ENABLE(fontset,
1052 [ --enable-fontset Include X fontset output support.], ,
1053 [enable_fontset="no"])
1054 AC_MSG_RESULT($enable_fontset)
1055 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1057 test -z "$with_x" && with_x=yes
1058 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1059 if test "$with_x" = no; then
1060 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1062 dnl Do this check early, so that its failure can override user requests.
1064 AC_PATH_PROG(xmkmfpath, xmkmf)
1068 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1069 dnl be compiled with a special option.
1070 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1071 if test "$OS390Unix" = "yes"; then
1072 CFLAGS="$CFLAGS -W c,dll"
1073 LDFLAGS="$LDFLAGS -W l,dll"
1074 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1077 dnl On my HPUX system the X include dir is found, but the lib dir not.
1078 dnl This is a desparate try to fix this.
1080 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1081 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1082 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1083 X_LIBS="$X_LIBS -L$x_libraries"
1084 if test "`(uname) 2>/dev/null`" = SunOS &&
1085 uname -r | grep '^5' >/dev/null; then
1086 X_LIBS="$X_LIBS -R $x_libraries"
1090 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1091 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1092 AC_MSG_RESULT(Corrected X includes to $x_includes)
1093 X_CFLAGS="$X_CFLAGS -I$x_includes"
1096 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1097 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1098 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1099 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1100 dnl Same for "-R/usr/lib ".
1101 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1104 dnl Check if the X11 header files are correctly installed. On some systems
1105 dnl Xlib.h includes files that don't exist
1106 AC_MSG_CHECKING(if X11 header files can be found)
1108 CFLAGS="$CFLAGS $X_CFLAGS"
1109 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1111 AC_MSG_RESULT(no); no_x=yes)
1114 if test "${no_x-no}" = yes; then
1121 ac_save_LDFLAGS="$LDFLAGS"
1122 LDFLAGS="-L$x_libraries $LDFLAGS"
1124 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1125 dnl For HP-UX 10.20 it must be before -lSM -lICE
1126 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1127 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1129 dnl Some systems need -lnsl -lsocket when testing for ICE.
1130 dnl The check above doesn't do this, try here (again). Also needed to get
1131 dnl them after Xdmcp. link.sh will remove them when not needed.
1132 dnl Check for other function than above to avoid the cached value
1133 AC_CHECK_LIB(ICE, IceOpenConnection,
1134 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1136 dnl Check for -lXpm (needed for some versions of Motif)
1137 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1138 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1139 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1141 dnl Check that the X11 header files don't use implicit declarations
1142 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1144 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1145 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1147 CFLAGS="$CFLAGS -Wno-implicit-int"
1148 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1149 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1150 AC_MSG_RESULT(test failed)
1155 LDFLAGS="$ac_save_LDFLAGS"
1160 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1162 AC_MSG_CHECKING(--enable-gui argument)
1164 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon/macvim]], , enable_gui="auto")
1166 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1167 dnl Do not use character classes for portability with old tools.
1168 enable_gui_canon=`echo "_$enable_gui" | \
1169 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1171 dnl Skip everything by default.
1183 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1185 case "$enable_gui_canon" in
1186 no) AC_MSG_RESULT(no GUI support)
1188 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1189 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1190 photon) AC_MSG_RESULT(Photon GUI support) ;;
1191 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1195 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1198 case "$enable_gui_canon" in
1199 no) AC_MSG_RESULT(no GUI support)
1202 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1203 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1204 carbon) AC_MSG_RESULT(Carbon GUI support)
1206 macvim) AC_MSG_RESULT(MacVim GUI support)
1208 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1215 case "$enable_gui_canon" in
1216 no|none) AC_MSG_RESULT(no GUI support) ;;
1217 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1226 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1228 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1231 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1234 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1238 motif) AC_MSG_RESULT(Motif GUI support)
1240 athena) AC_MSG_RESULT(Athena GUI support)
1242 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1244 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1249 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1250 AC_MSG_CHECKING(whether or not to look for GTK)
1251 AC_ARG_ENABLE(gtk-check,
1252 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1253 , enable_gtk_check="yes")
1254 AC_MSG_RESULT($enable_gtk_check)
1255 if test "x$enable_gtk_check" = "xno"; then
1261 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1262 -a "$enable_gui_canon" != "gnome2"; then
1263 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1264 AC_ARG_ENABLE(gtk2-check,
1265 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1266 , enable_gtk2_check="yes")
1267 AC_MSG_RESULT($enable_gtk2_check)
1268 if test "x$enable_gtk2_check" = "xno"; then
1273 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1274 -a "$enable_gui_canon" != "gnome2"; then
1275 AC_MSG_CHECKING(whether or not to look for GNOME)
1276 AC_ARG_ENABLE(gnome-check,
1277 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1278 , enable_gnome_check="no")
1279 AC_MSG_RESULT($enable_gnome_check)
1280 if test "x$enable_gnome_check" = "xno"; then
1285 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1286 AC_MSG_CHECKING(whether or not to look for Motif)
1287 AC_ARG_ENABLE(motif-check,
1288 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1289 , enable_motif_check="yes")
1290 AC_MSG_RESULT($enable_motif_check)
1291 if test "x$enable_motif_check" = "xno"; then
1296 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1297 AC_MSG_CHECKING(whether or not to look for Athena)
1298 AC_ARG_ENABLE(athena-check,
1299 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1300 , enable_athena_check="yes")
1301 AC_MSG_RESULT($enable_athena_check)
1302 if test "x$enable_athena_check" = "xno"; then
1307 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1308 AC_MSG_CHECKING(whether or not to look for neXtaw)
1309 AC_ARG_ENABLE(nextaw-check,
1310 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1311 , enable_nextaw_check="yes")
1312 AC_MSG_RESULT($enable_nextaw_check);
1313 if test "x$enable_nextaw_check" = "xno"; then
1318 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1319 AC_MSG_CHECKING(whether or not to look for Carbon)
1320 AC_ARG_ENABLE(carbon-check,
1321 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1322 , enable_carbon_check="yes")
1323 AC_MSG_RESULT($enable_carbon_check);
1324 if test "x$enable_carbon_check" = "xno"; then
1329 if test "x$SKIP_MACVIM" != "xYES" -a "$enable_gui_canon" != "macvim"; then
1330 AC_MSG_CHECKING(whether or not to look for MacVim)
1331 AC_ARG_ENABLE(macvim-check,
1332 [ --enable-macvim-check If auto-select GUI, check for MacVim [default=yes]],
1333 , enable_macvim_check="yes")
1334 AC_MSG_RESULT($enable_macvim_check);
1335 if test "x$enable_macvim_check" = "xno"; then
1340 if test "x$MACOSX" = "xyes"; then
1341 if test -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1342 AC_MSG_CHECKING(for Carbon GUI)
1343 dnl already did the check, just give the message
1346 elif test -z "$SKIP_MACVIM" -a "x$COCOA" = "xyes"; then
1347 AC_MSG_CHECKING(for MacVim GUI)
1348 dnl already did the check, just give the message
1353 if test "$VIMNAME" = "vim"; then
1357 dnl Default install directory is not /usr/local
1358 if test x$prefix = xNONE; then
1359 prefix=/Applications
1362 dnl Sorry for the hard coded default
1363 datadir='${prefix}/Vim.app/Contents/Resources'
1365 dnl skip everything else
1378 dnl Get the cflags and libraries from the gtk-config script
1381 dnl define an autoconf function to check for a specified version of GTK, and
1382 dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1384 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1385 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1387 AC_DEFUN(AM_PATH_GTK,
1389 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1391 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1392 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1394 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1395 && $PKG_CONFIG --exists gtk+-2.0; then
1397 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1398 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1399 dnl something like that.
1400 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1401 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1402 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1403 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1404 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1405 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1406 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1407 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1408 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1410 elif test "X$GTK_CONFIG" != "Xno"; then
1412 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1414 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1415 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1416 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1417 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1418 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1419 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1420 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1426 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1428 ac_save_CFLAGS="$CFLAGS"
1429 ac_save_LIBS="$LIBS"
1430 CFLAGS="$CFLAGS $GTK_CFLAGS"
1431 LIBS="$LIBS $GTK_LIBS"
1434 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1435 dnl checks the results of gtk-config to some extent
1439 #include <gtk/gtk.h>
1445 int major, minor, micro;
1448 system ("touch conf.gtktest");
1450 /* HP/UX 9 (%@#!) writes to sscanf strings */
1451 tmp_version = g_strdup("$min_gtk_version");
1452 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
1453 printf("%s, bad version string\n", "$min_gtk_version");
1457 if ((gtk_major_version > major) ||
1458 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1459 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1460 (gtk_micro_version >= micro)))
1466 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1467 CFLAGS="$ac_save_CFLAGS"
1468 LIBS="$ac_save_LIBS"
1471 if test "x$no_gtk" = x ; then
1472 if test "x$enable_gtktest" = "xyes"; then
1473 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1475 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1477 ifelse([$2], , :, [$2])
1483 ifelse([$3], , :, [$3])
1490 ifelse([$3], , :, [$3])
1492 AC_SUBST(GTK_CFLAGS)
1497 dnl ---------------------------------------------------------------------------
1499 dnl ---------------------------------------------------------------------------
1500 AC_DEFUN([GNOME_INIT_HOOK],
1502 AC_SUBST(GNOME_LIBS)
1503 AC_SUBST(GNOME_LIBDIR)
1504 AC_SUBST(GNOME_INCLUDEDIR)
1506 AC_ARG_WITH(gnome-includes,
1507 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1508 [CFLAGS="$CFLAGS -I$withval"]
1511 AC_ARG_WITH(gnome-libs,
1512 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1513 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1517 [ --with-gnome Specify prefix for GNOME files],
1518 if test x$withval = xyes; then
1520 ifelse([$1], [], :, [$1])
1522 if test "x$withval" = xno; then
1526 LDFLAGS="$LDFLAGS -L$withval/lib"
1527 CFLAGS="$CFLAGS -I$withval/include"
1528 gnome_prefix=$withval/lib
1533 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1535 AC_MSG_CHECKING(for libgnomeui-2.0)
1536 if $PKG_CONFIG --exists libgnomeui-2.0; then
1538 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1539 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1540 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1542 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1543 dnl This might not be the right way but it works for me...
1544 AC_MSG_CHECKING(for FreeBSD)
1545 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1546 AC_MSG_RESULT(yes, adding -pthread)
1547 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1548 GNOME_LIBS="$GNOME_LIBS -pthread"
1554 AC_MSG_RESULT(not found)
1555 if test "x$2" = xfail; then
1556 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1560 elif test "x$want_gnome" = xyes; then
1562 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1563 if test "$GNOME_CONFIG" = "no"; then
1564 no_gnome_config="yes"
1566 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1567 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1569 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1570 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1571 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1575 no_gnome_config="yes"
1579 if test x$exec_prefix = xNONE; then
1580 if test x$prefix = xNONE; then
1581 gnome_prefix=$ac_default_prefix/lib
1583 gnome_prefix=$prefix/lib
1586 gnome_prefix=`eval echo \`echo $libdir\``
1589 if test "$no_gnome_config" = "yes"; then
1590 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1591 if test -f $gnome_prefix/gnomeConf.sh; then
1592 AC_MSG_RESULT(found)
1593 echo "loading gnome configuration from" \
1594 "$gnome_prefix/gnomeConf.sh"
1595 . $gnome_prefix/gnomeConf.sh
1598 AC_MSG_RESULT(not found)
1599 if test x$2 = xfail; then
1600 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1608 AC_DEFUN([GNOME_INIT],[
1609 GNOME_INIT_HOOK([],fail)
1613 dnl ---------------------------------------------------------------------------
1614 dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1615 dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1616 dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1617 dnl ---------------------------------------------------------------------------
1618 if test -z "$SKIP_GTK"; then
1620 AC_MSG_CHECKING(--with-gtk-prefix argument)
1621 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1622 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1623 gtk_config_prefix=""; AC_MSG_RESULT(no))
1625 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1626 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1627 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1628 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1630 AC_MSG_CHECKING(--disable-gtktest argument)
1631 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1632 , enable_gtktest=yes)
1633 if test "x$enable_gtktest" = "xyes" ; then
1634 AC_MSG_RESULT(gtk test enabled)
1636 AC_MSG_RESULT(gtk test disabled)
1639 if test "x$gtk_config_prefix" != "x" ; then
1640 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1641 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1643 if test "x$gtk_config_exec_prefix" != "x" ; then
1644 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1645 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1647 if test "X$GTK_CONFIG" = "X"; then
1648 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1649 if test "X$GTK_CONFIG" = "Xno"; then
1650 dnl Some distributions call it gtk12-config, annoying!
1651 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1652 GTK_CONFIG="$GTK12_CONFIG"
1655 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1657 if test "X$PKG_CONFIG" = "X"; then
1658 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1661 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1662 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1663 dnl problems (bold fonts, --remote doesn't work).
1664 if test "X$SKIP_GTK2" != "XYES"; then
1666 [GUI_LIB_LOC="$GTK_LIBDIR"
1667 GTK_LIBNAME="$GTK_LIBS"
1668 GUI_INC_LOC="$GTK_CFLAGS"], )
1669 if test "x$GTK_CFLAGS" != "x"; then
1674 AC_SUBST(GTK_LIBNAME)
1678 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1679 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1680 dnl were test versions.
1681 if test "x$GUITYPE" != "xGTK"; then
1684 [GTK_LIBNAME="$GTK_LIBS"
1685 GUI_INC_LOC="$GTK_CFLAGS"], )
1686 if test "x$GTK_CFLAGS" != "x"; then
1691 AC_SUBST(GTK_LIBNAME)
1695 dnl Give a warning if GTK is older than 1.2.3
1696 if test "x$GUITYPE" = "xGTK"; then
1697 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1698 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1699 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1702 if test "0$gtk_major_version" -ge 2; then
1703 AC_DEFINE(HAVE_GTK2)
1704 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1705 || test "0$gtk_minor_version" -ge 2 \
1706 || test "0$gtk_major_version" -gt 2; then
1707 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1711 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1713 if test -z "$SKIP_GNOME"; then
1715 GNOME_INIT_HOOK([have_gnome=yes])
1716 if test x$have_gnome = xyes ; then
1717 AC_DEFINE(FEAT_GUI_GNOME)
1718 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1719 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1728 dnl Check for Motif include files location.
1729 dnl The LAST one found is used, this makes the highest version to be used,
1730 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1732 if test -z "$SKIP_MOTIF"; then
1733 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"
1734 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1735 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1737 AC_MSG_CHECKING(for location of Motif GUI includes)
1738 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1740 for try in $gui_includes; do
1741 if test -f "$try/Xm/Xm.h"; then
1745 if test -n "$GUI_INC_LOC"; then
1746 if test "$GUI_INC_LOC" = /usr/include; then
1748 AC_MSG_RESULT(in default path)
1750 AC_MSG_RESULT($GUI_INC_LOC)
1753 AC_MSG_RESULT(<not found>)
1758 dnl Check for Motif library files location. In the same order as the include
1759 dnl files, to avoid a mixup if several versions are present
1761 if test -z "$SKIP_MOTIF"; then
1762 AC_MSG_CHECKING(--with-motif-lib argument)
1763 AC_ARG_WITH(motif-lib,
1764 [ --with-motif-lib=STRING Library for Motif ],
1765 [ MOTIF_LIBNAME="${withval}" ] )
1767 if test -n "$MOTIF_LIBNAME"; then
1768 AC_MSG_RESULT($MOTIF_LIBNAME)
1773 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1774 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1776 AC_MSG_CHECKING(for location of Motif GUI libs)
1777 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"
1779 for try in $gui_libs; do
1780 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1781 if test -f "$libtry"; then
1786 if test -n "$GUI_LIB_LOC"; then
1787 dnl Remove /usr/lib, it causes trouble on some systems
1788 if test "$GUI_LIB_LOC" = /usr/lib; then
1790 AC_MSG_RESULT(in default path)
1792 if test -n "$GUI_LIB_LOC"; then
1793 AC_MSG_RESULT($GUI_LIB_LOC)
1794 if test "`(uname) 2>/dev/null`" = SunOS &&
1795 uname -r | grep '^5' >/dev/null; then
1796 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1802 AC_MSG_RESULT(<not found>)
1808 if test -z "$SKIP_MOTIF"; then
1812 AC_SUBST(MOTIF_LIBNAME)
1815 dnl Check if the Athena files can be found
1819 if test -z "$SKIP_ATHENA"; then
1820 AC_MSG_CHECKING(if Athena header files can be found)
1822 CFLAGS="$CFLAGS $X_CFLAGS"
1824 #include <X11/Intrinsic.h>
1825 #include <X11/Xaw/Paned.h>], ,
1827 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1831 if test -z "$SKIP_ATHENA"; then
1835 if test -z "$SKIP_NEXTAW"; then
1836 AC_MSG_CHECKING(if neXtaw header files can be found)
1838 CFLAGS="$CFLAGS $X_CFLAGS"
1840 #include <X11/Intrinsic.h>
1841 #include <X11/neXtaw/Paned.h>], ,
1843 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1847 if test -z "$SKIP_NEXTAW"; then
1851 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1852 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1853 dnl Avoid adding it when it twice
1854 if test -n "$GUI_INC_LOC"; then
1855 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1857 if test -n "$GUI_LIB_LOC"; then
1858 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1861 dnl Check for -lXext and then for -lXmu
1862 ldflags_save=$LDFLAGS
1863 LDFLAGS="$X_LIBS $LDFLAGS"
1864 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1865 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1866 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1867 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1868 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1869 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1870 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1871 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1872 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1873 if test -z "$SKIP_MOTIF"; then
1874 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1875 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1877 LDFLAGS=$ldflags_save
1879 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1880 AC_MSG_CHECKING(for extra X11 defines)
1883 if mkdir conftestdir; then
1885 cat > Imakefile <<'EOF'
1887 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1889 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1890 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1895 if test -z "$NARROW_PROTO"; then
1898 AC_MSG_RESULT($NARROW_PROTO)
1900 AC_SUBST(NARROW_PROTO)
1903 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1904 dnl use the X11 include path
1905 if test "$enable_xsmp" = "yes"; then
1906 cppflags_save=$CPPFLAGS
1907 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1908 AC_CHECK_HEADERS(X11/SM/SMlib.h)
1909 CPPFLAGS=$cppflags_save
1913 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1914 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1915 cppflags_save=$CPPFLAGS
1916 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1917 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1919 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1920 if test ! "$enable_xim" = "no"; then
1921 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1922 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1924 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1926 CPPFLAGS=$cppflags_save
1928 dnl automatically enable XIM when hangul input isn't enabled
1929 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1930 -a "x$GUITYPE" != "xNONE" ; then
1931 AC_MSG_RESULT(X GUI selected; xim has been enabled)
1936 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1937 cppflags_save=$CPPFLAGS
1938 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1939 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1940 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1942 #include <X11/Intrinsic.h>
1943 #include <X11/Xmu/Editres.h>],
1946 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1948 CPPFLAGS=$cppflags_save
1951 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1952 if test -z "$SKIP_MOTIF"; then
1953 cppflags_save=$CPPFLAGS
1954 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1955 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
1956 Xm/UnhighlightT.h Xm/Notebook.h)
1958 if test $ac_cv_header_Xm_XpmP_h = yes; then
1959 dnl Solaris uses XpmAttributes_21, very annoying.
1960 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1961 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
1962 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
1963 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1966 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1968 CPPFLAGS=$cppflags_save
1971 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
1972 AC_MSG_RESULT(no GUI selected; xim has been disabled)
1975 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
1976 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
1979 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
1980 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
1984 if test -z "$SKIP_PHOTON"; then
1988 AC_SUBST(GUI_INC_LOC)
1989 AC_SUBST(GUI_LIB_LOC)
1991 AC_SUBST(GUI_X_LIBS)
1993 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
1994 AC_MSG_ERROR([cannot use workshop without Motif])
1997 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
1998 if test "$enable_xim" = "yes"; then
2001 if test "$enable_fontset" = "yes"; then
2002 AC_DEFINE(FEAT_XFONTSET)
2006 dnl ---------------------------------------------------------------------------
2007 dnl end of GUI-checking
2008 dnl ---------------------------------------------------------------------------
2011 dnl Only really enable hangul input when GUI and XFONTSET are available
2012 if test "$enable_hangulinput" = "yes"; then
2013 if test "x$GUITYPE" = "xNONE"; then
2014 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2015 enable_hangulinput=no
2017 AC_DEFINE(FEAT_HANGULIN)
2018 HANGULIN_SRC=hangulin.c
2019 AC_SUBST(HANGULIN_SRC)
2020 HANGULIN_OBJ=objects/hangulin.o
2021 AC_SUBST(HANGULIN_OBJ)
2025 dnl Checks for libraries and include files.
2027 AC_MSG_CHECKING(quality of toupper)
2028 AC_TRY_RUN([#include <ctype.h>
2029 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }],
2030 AC_DEFINE(BROKEN_TOUPPER) AC_MSG_RESULT(bad),
2031 AC_MSG_RESULT(good), AC_MSG_ERROR(failed to compile test program))
2033 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2034 AC_TRY_COMPILE(, [printf("(" __DATE__ " " __TIME__ ")");],
2035 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2038 dnl Checks for header files.
2039 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2040 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2041 if test "$HAS_ELF" = 1; then
2042 AC_CHECK_LIB(elf, main)
2047 dnl check for standard headers, we don't use this in Vim but other stuff
2048 dnl in autoconf needs it
2052 dnl If sys/wait.h is not found it might still exist but not be POSIX
2053 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2054 if test $ac_cv_header_sys_wait_h = no; then
2055 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2056 AC_TRY_COMPILE([#include <sys/wait.h>],
2057 [union wait xx, yy; xx = yy],
2059 AC_DEFINE(HAVE_SYS_WAIT_H)
2060 AC_DEFINE(HAVE_UNION_WAIT),
2064 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2065 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2066 iconv.h langinfo.h unistd.h stropts.h errno.h \
2067 sys/resource.h sys/systeminfo.h locale.h \
2068 sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
2069 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2070 libgen.h util/debug.h util/msg18n.h frame.h \
2071 sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
2073 dnl pthread_np.h may exist but can only be used after including pthread.h
2074 AC_MSG_CHECKING([for pthread_np.h])
2076 #include <pthread.h>
2077 #include <pthread_np.h>],
2080 AC_DEFINE(HAVE_PTHREAD_NP_H),
2083 AC_CHECK_HEADERS(strings.h)
2084 if test "x$MACOSX" = "xyes"; then
2085 dnl The strings.h file on OS/X contains a warning and nothing useful.
2086 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2089 dnl Check if strings.h and string.h can both be included when defined.
2090 AC_MSG_CHECKING([if strings.h can be included after string.h])
2091 cppflags_save=$CPPFLAGS
2092 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2094 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2095 # define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2096 /* but don't do it on AIX 5.1 (Uribarri) */
2099 # include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2101 #ifdef HAVE_STRING_H
2102 # include <string.h>
2104 #if defined(HAVE_STRINGS_H)
2105 # include <strings.h>
2109 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2111 CPPFLAGS=$cppflags_save
2114 dnl Checks for typedefs, structures, and compiler characteristics.
2115 AC_PROG_GCC_TRADITIONAL
2123 AC_CHECK_TYPE(ino_t, long)
2124 AC_CHECK_TYPE(dev_t, unsigned)
2126 AC_MSG_CHECKING(for rlim_t)
2127 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2128 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2131 changequote(<<,>>)dnl
2132 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2135 #include <sys/types.h>
2140 #ifdef HAVE_SYS_RESOURCE_H
2141 #include <sys/resource.h>
2143 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2144 AC_MSG_RESULT($ac_cv_type_rlim_t)
2146 if test $ac_cv_type_rlim_t = no; then
2147 cat >> confdefs.h <<\EOF
2148 #define rlim_t unsigned long
2152 AC_MSG_CHECKING(for stack_t)
2153 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2154 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2156 AC_EGREP_CPP(stack_t,
2158 #include <sys/types.h>
2164 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2165 AC_MSG_RESULT($ac_cv_type_stack_t)
2167 if test $ac_cv_type_stack_t = no; then
2168 cat >> confdefs.h <<\EOF
2169 #define stack_t struct sigaltstack
2173 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2174 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2176 #include <sys/types.h>
2182 #include "confdefs.h"
2183 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2184 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2188 AC_MSG_CHECKING(--with-tlib argument)
2189 AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2190 if test -n "$with_tlib"; then
2191 AC_MSG_RESULT($with_tlib)
2192 LIBS="$LIBS -l$with_tlib"
2193 AC_MSG_CHECKING(for linking with $with_tlib library)
2194 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2195 dnl Need to check for tgetent() below.
2198 AC_MSG_RESULT([empty: automatic terminal library selection])
2199 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2200 dnl curses, because curses is much slower.
2201 dnl Newer versions of ncurses are preferred over anything.
2202 dnl Older versions of ncurses have bugs, get a new one!
2203 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
2204 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
2205 case "`uname -s 2>/dev/null`" in
2206 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
2207 *) tlibs="ncurses termlib termcap curses";;
2209 for libname in $tlibs; do
2210 AC_CHECK_LIB(${libname}, tgetent,,)
2211 if test "x$olibs" != "x$LIBS"; then
2212 dnl It's possible that a library is found but it doesn't work
2213 dnl e.g., shared library that cannot be found
2214 dnl compile and run a test program to be sure
2216 #ifdef HAVE_TERMCAP_H
2217 # include <termcap.h>
2219 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2220 res="OK", res="FAIL", res="FAIL")
2221 if test "$res" = "OK"; then
2224 AC_MSG_RESULT($libname library is not usable)
2228 if test "x$olibs" = "x$LIBS"; then
2229 AC_MSG_RESULT(no terminal library found)
2233 if test "x$olibs" = "x$LIBS"; then
2234 AC_MSG_CHECKING([for tgetent()])
2236 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2238 AC_MSG_ERROR([NOT FOUND!
2239 You need to install a terminal library; for example ncurses.
2240 Or specify the name of the library with --with-tlib.]))
2243 AC_MSG_CHECKING(whether we talk terminfo)
2245 #ifdef HAVE_TERMCAP_H
2246 # include <termcap.h>
2249 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }],
2250 AC_MSG_RESULT([no -- we are in termcap land]),
2251 AC_MSG_RESULT([yes -- terminfo spoken here]); AC_DEFINE(TERMINFO),
2252 AC_MSG_ERROR(failed to compile test program.))
2254 if test "x$olibs" != "x$LIBS"; then
2255 AC_MSG_CHECKING(what tgetent() returns for an unknown terminal)
2257 #ifdef HAVE_TERMCAP_H
2258 # include <termcap.h>
2261 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }],
2262 AC_MSG_RESULT(zero); AC_DEFINE(TGETENT_ZERO_ERR, 0),
2263 AC_MSG_RESULT(non-zero),
2264 AC_MSG_ERROR(failed to compile test program.))
2267 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2269 #ifdef HAVE_TERMCAP_H
2270 # include <termcap.h>
2272 ], [ospeed = 20000],
2273 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2275 AC_MSG_CHECKING(whether ospeed can be extern)
2277 #ifdef HAVE_TERMCAP_H
2278 # include <termcap.h>
2280 extern short ospeed;
2281 ], [ospeed = 20000],
2282 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2286 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2288 #ifdef HAVE_TERMCAP_H
2289 # include <termcap.h>
2291 ], [if (UP == 0 && BC == 0) PC = 1],
2292 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2294 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2296 #ifdef HAVE_TERMCAP_H
2297 # include <termcap.h>
2299 extern char *UP, *BC, PC;
2300 ], [if (UP == 0 && BC == 0) PC = 1],
2301 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2305 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2307 #ifdef HAVE_TERMCAP_H
2308 # include <termcap.h>
2310 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2311 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2314 dnl On some SCO machines sys/select redefines struct timeval
2315 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2317 #include <sys/types.h>
2318 #include <sys/time.h>
2319 #include <sys/select.h>], ,
2321 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2324 dnl AC_DECL_SYS_SIGLIST
2326 dnl Checks for pty.c (copied from screen) ==========================
2327 AC_MSG_CHECKING(for /dev/ptc)
2328 if test -r /dev/ptc; then
2329 AC_DEFINE(HAVE_DEV_PTC)
2335 AC_MSG_CHECKING(for SVR4 ptys)
2336 if test -c /dev/ptmx ; then
2337 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2338 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2344 AC_MSG_CHECKING(for ptyranges)
2345 if test -d /dev/ptym ; then
2355 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2356 dnl if test -c /dev/ptyp19; then
2357 dnl ptys=`echo /dev/ptyp??`
2359 dnl ptys=`echo $pdir/pty??`
2361 if test "$ptys" != "$pdir/pty??" ; then
2362 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2363 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2364 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2365 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2366 AC_MSG_RESULT([$p0 / $p1])
2368 AC_MSG_RESULT([don't know])
2371 dnl **** pty mode/group handling ****
2373 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2374 AC_MSG_CHECKING(default tty permissions/group)
2377 #include <sys/types.h>
2378 #include <sys/stat.h>
2387 if (!(x = ttyname(0))) exit(1);
2388 if (stat(x, &sb)) exit(1);
2390 if (om & 002) exit(0);
2391 m = system("mesg y");
2392 if (m == -1 || m == 127) exit(1);
2393 if (stat(x, &sb)) exit(1);
2395 if (chmod(x, om)) exit(1);
2396 if (m & 002) exit(0);
2397 if (sb.st_gid == getgid()) exit(1);
2398 if (!(fp=fopen("conftest_grp", "w")))
2400 fprintf(fp, "%d\n", sb.st_gid);
2405 if test -f conftest_grp; then
2406 ptygrp=`cat conftest_grp`
2407 AC_MSG_RESULT([pty mode: 0620, group: $ptygrp])
2408 AC_DEFINE(PTYMODE, 0620)
2409 AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
2411 AC_MSG_RESULT([ptys are world accessable])
2414 AC_MSG_RESULT([can't determine - assume ptys are world accessable]),
2415 AC_MSG_ERROR(failed to compile test program))
2418 dnl Checks for library functions. ===================================
2422 dnl find out what to use at the end of a signal function
2423 if test $ac_cv_type_signal = void; then
2424 AC_DEFINE(SIGRETURN, [return])
2426 AC_DEFINE(SIGRETURN, [return 0])
2429 dnl check if struct sigcontext is defined (used for SGI only)
2430 AC_MSG_CHECKING(for struct sigcontext)
2435 struct sigcontext *scont;
2436 scont = (struct sigcontext *)0;
2440 AC_DEFINE(HAVE_SIGCONTEXT),
2443 dnl tricky stuff: try to find out if getcwd() is implemented with
2444 dnl system("sh -c pwd")
2445 AC_MSG_CHECKING(getcwd implementation)
2447 char *dagger[] = { "IFS=pwd", 0 };
2451 extern char **environ;
2453 return getcwd(buffer, 500) ? 0 : 1;
2455 AC_MSG_RESULT(it is usable),
2456 AC_MSG_RESULT(it stinks)
2457 AC_DEFINE(BAD_GETCWD),
2458 AC_MSG_ERROR(failed to compile test program))
2460 dnl Check for functions in one big call, to reduce the size of configure
2461 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2462 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2463 memset nanosleep opendir putenv qsort readlink select setenv \
2464 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2465 sigvec strcasecmp strerror strftime stricmp strncasecmp \
2466 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2467 usleep utime utimes)
2469 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2470 AC_MSG_CHECKING(for st_blksize)
2472 [#include <sys/types.h>
2473 #include <sys/stat.h>],
2478 n = (int)st.st_blksize;],
2479 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2482 AC_MSG_CHECKING(whether stat() ignores a trailing slash)
2484 [#include <sys/types.h>
2485 #include <sys/stat.h>
2486 main() {struct stat st; exit(stat("configure/", &st) != 0); }],
2487 AC_MSG_RESULT(yes); AC_DEFINE(STAT_IGNORES_SLASH),
2488 AC_MSG_RESULT(no), AC_MSG_ERROR(failed to compile test program))
2490 dnl Link with iconv for charset translation, if not found without library.
2491 dnl check for iconv() requires including iconv.h
2492 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2493 dnl has been installed.
2494 AC_MSG_CHECKING(for iconv_open())
2496 LIBS="$LIBS -liconv"
2501 ], [iconv_open("fr", "to");],
2502 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2508 ], [iconv_open("fr", "to");],
2509 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2513 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2515 #ifdef HAVE_LANGINFO_H
2516 # include <langinfo.h>
2518 ], [char *cs = nl_langinfo(CODESET);],
2519 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2522 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2523 dnl when -lacl works, also try to use -lattr (required for Debian).
2524 AC_MSG_CHECKING(--disable-acl argument)
2526 [ --disable-acl Don't check for ACL support.],
2527 , [enable_acl="yes"])
2528 if test "$enable_acl" = "yes"; then
2530 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2531 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2532 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2534 AC_MSG_CHECKING(for POSIX ACL support)
2536 #include <sys/types.h>
2537 #ifdef HAVE_SYS_ACL_H
2538 # include <sys/acl.h>
2540 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2541 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2543 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2546 AC_MSG_CHECKING(for Solaris ACL support)
2548 #ifdef HAVE_SYS_ACL_H
2549 # include <sys/acl.h>
2550 #endif], [acl("foo", GETACLCNT, 0, NULL);
2552 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2555 AC_MSG_CHECKING(for AIX ACL support)
2557 #ifdef HAVE_SYS_ACL_H
2558 # include <sys/acl.h>
2560 #ifdef HAVE_SYS_ACCESS_H
2561 # include <sys/access.h>
2565 #include <sys/stat.h>
2568 struct acl *aclent;], [aclsize = sizeof(struct acl);
2569 aclent = (void *)malloc(aclsize);
2570 statacl("foo", STX_NORMAL, aclent, aclsize);
2572 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2578 AC_MSG_CHECKING(--disable-gpm argument)
2580 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2583 if test "$enable_gpm" = "yes"; then
2585 dnl Checking if gpm support can be compiled
2586 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2587 [olibs="$LIBS" ; LIBS="-lgpm"]
2590 #include <linux/keyboard.h>],
2591 [Gpm_GetLibVersion(NULL);],
2592 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2593 dnl FEAT_MOUSE_GPM if mouse support is included
2594 [vi_cv_have_gpm=yes],
2595 [vi_cv_have_gpm=no])
2598 if test $vi_cv_have_gpm = yes; then
2606 dnl rename needs to be checked separately to work on Nextstep with cc
2607 AC_MSG_CHECKING(for rename)
2608 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2609 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2612 dnl sysctl() may exist but not the arguments we use
2613 AC_MSG_CHECKING(for sysctl)
2615 [#include <sys/types.h>
2616 #include <sys/sysctl.h>],
2621 mib[1] = HW_USERMEM;
2623 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2625 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2626 AC_MSG_RESULT(not usable))
2628 dnl sysinfo() may exist but not be Linux compatible
2629 AC_MSG_CHECKING(for sysinfo)
2631 [#include <sys/types.h>
2632 #include <sys/sysinfo.h>],
2633 [ struct sysinfo sinfo;
2636 (void)sysinfo(&sinfo);
2639 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2640 AC_MSG_RESULT(not usable))
2642 dnl struct sysinfo may have the mem_unit field or not
2643 AC_MSG_CHECKING(for sysinfo.mem_unit)
2645 [#include <sys/types.h>
2646 #include <sys/sysinfo.h>],
2647 [ struct sysinfo sinfo;
2650 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2653 dnl sysconf() may exist but not support what we want to use
2654 AC_MSG_CHECKING(for sysconf)
2656 [#include <unistd.h>],
2657 [ (void)sysconf(_SC_PAGESIZE);
2658 (void)sysconf(_SC_PHYS_PAGES);
2660 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2661 AC_MSG_RESULT(not usable))
2663 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2664 dnl be printed with "%d", and avoids a warning for cross-compiling.
2666 AC_MSG_CHECKING(size of int)
2667 AC_CACHE_VAL(ac_cv_sizeof_int,
2668 [AC_TRY_RUN([#include <stdio.h>
2671 FILE *f=fopen("conftestval", "w");
2673 fprintf(f, "%d\n", (int)sizeof(int));
2676 ac_cv_sizeof_int=`cat conftestval`,
2678 AC_MSG_ERROR(failed to compile test program))])
2679 AC_MSG_RESULT($ac_cv_sizeof_int)
2680 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2682 AC_MSG_CHECKING(whether memmove/bcopy/memcpy handle overlaps)
2686 strcpy(buf, "abcdefghi");
2687 mch_memmove(buf, buf + 2, 3);
2688 if (strncmp(buf, "ababcf", 6))
2690 strcpy(buf, "abcdefghi");
2691 mch_memmove(buf + 2, buf, 3);
2692 if (strncmp(buf, "cdedef", 6))
2694 exit(0); /* libc version works properly. */
2697 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2698 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2700 AC_TRY_RUN([#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog],
2701 AC_DEFINE(USEMEMMOVE) AC_MSG_RESULT(memmove does),
2702 AC_TRY_RUN([#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog],
2703 AC_DEFINE(USEBCOPY) AC_MSG_RESULT(bcopy does),
2704 AC_TRY_RUN([#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog],
2705 AC_DEFINE(USEMEMCPY) AC_MSG_RESULT(memcpy does), AC_MSG_RESULT(no),
2706 AC_MSG_ERROR(failed to compile test program)),
2707 AC_MSG_ERROR(failed to compile test program)),
2708 AC_MSG_ERROR(failed to compile test program))
2710 dnl Check for multibyte locale functions
2711 dnl Find out if _Xsetlocale() is supported by libX11.
2712 dnl Check if X_LOCALE should be defined.
2714 if test "$enable_multibyte" = "yes"; then
2716 ldflags_save=$LDFLAGS
2717 if test -n "$x_includes" ; then
2718 CFLAGS="$CFLAGS -I$x_includes"
2719 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2720 AC_MSG_CHECKING(whether X_LOCALE needed)
2721 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2722 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2723 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2727 LDFLAGS=$ldflags_save
2730 dnl Link with xpg4, it is said to make Korean locale working
2731 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2733 dnl Check how we can run ctags
2734 dnl --version for Exuberant ctags (preferred)
2735 dnl Add --fields=+S to get function signatures for omni completion.
2736 dnl -t for typedefs (many ctags have this)
2737 dnl -s for static functions (Elvis ctags only?)
2738 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2739 dnl -i+m to test for older Exuberant ctags
2740 AC_MSG_CHECKING(how to create tags)
2741 test -f tags && mv tags tags.save
2742 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
2743 TAGPRG="ctags -I INIT+ --fields=+S"
2745 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2746 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2747 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2748 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2749 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2750 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2751 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2753 test -f tags.save && mv tags.save tags
2754 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2756 dnl Check how we can run man with a section number
2757 AC_MSG_CHECKING(how to run man with a section nr)
2759 (eval man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
2760 AC_MSG_RESULT($MANDEF)
2761 if test "$MANDEF" = "man -s"; then
2765 dnl Check if gettext() is working and if it needs -lintl
2766 AC_MSG_CHECKING(--disable-nls argument)
2768 [ --disable-nls Don't support NLS (gettext()).], ,
2771 if test "$enable_nls" = "yes"; then
2774 INSTALL_LANGS=install-languages
2775 AC_SUBST(INSTALL_LANGS)
2776 INSTALL_TOOL_LANGS=install-tool-languages
2777 AC_SUBST(INSTALL_TOOL_LANGS)
2779 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
2780 AC_MSG_CHECKING([for NLS])
2781 if test -f po/Makefile; then
2783 if test -n "$MSGFMT"; then
2785 [#include <libintl.h>],
2787 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
2791 [#include <libintl.h>],
2793 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
2794 AC_MSG_RESULT([gettext() doesn't work]);
2797 AC_MSG_RESULT([msgfmt not found - disabled]);
2799 if test $have_gettext = "yes"; then
2800 AC_DEFINE(HAVE_GETTEXT)
2803 dnl this was added in GNU gettext 0.10.36
2804 AC_CHECK_FUNCS(bind_textdomain_codeset)
2805 dnl _nl_msg_cat_cntr is required for GNU gettext
2806 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
2808 [#include <libintl.h>
2809 extern int _nl_msg_cat_cntr;],
2810 [++_nl_msg_cat_cntr;],
2811 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
2812 AC_MSG_RESULT([no]))
2815 AC_MSG_RESULT([no "po/Makefile" - disabled]);
2821 dnl Check for dynamic linking loader
2822 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
2823 if test x${DLL} = xdlfcn.h; then
2824 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
2825 AC_MSG_CHECKING([for dlopen()])
2827 extern void* dlopen();
2831 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2833 AC_MSG_CHECKING([for dlopen() in -ldl])
2837 extern void* dlopen();
2841 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2844 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
2846 AC_MSG_CHECKING([for dlsym()])
2848 extern void* dlsym();
2852 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2854 AC_MSG_CHECKING([for dlsym() in -ldl])
2858 extern void* dlsym();
2862 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2865 elif test x${DLL} = xdl.h; then
2866 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
2867 AC_MSG_CHECKING([for shl_load()])
2869 extern void* shl_load();
2873 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2875 AC_MSG_CHECKING([for shl_load() in -ldld])
2879 extern void* shl_load();
2883 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2887 AC_CHECK_HEADERS(setjmp.h)
2889 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
2890 dnl -ldl must come after DynaLoader.a
2891 if echo $LIBS | grep -e '-ldl' >/dev/null; then
2892 LIBS=`echo $LIBS | sed s/-ldl//`
2893 PERL_LIBS="$PERL_LIBS -ldl"
2897 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
2898 && test "x$GUITYPE" != "xCARBONGUI" && test "x$GUITYPE" != "xMACVIMGUI"; then
2899 AC_MSG_CHECKING(whether we need -framework Carbon)
2900 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
2901 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
2902 || test "x$features" = "xhuge"; then
2903 LIBS="$LIBS -framework Carbon"
2909 if test "x$MACARCH" = "xboth"; then
2910 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
2913 dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
2914 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
2915 dnl But only when making dependencies, cproto and lint don't take "-isystem".
2916 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
2917 dnl the number before the version number.
2918 AC_MSG_CHECKING(for GCC 3 or later)
2919 DEPEND_CFLAGS_FILTER=
2920 if test "$GCC" = yes; then
2921 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
2922 if test "$gccmajor" -gt "2"; then
2923 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
2926 if test "$DEPEND_CFLAGS_FILTER" = ""; then
2931 AC_SUBST(DEPEND_CFLAGS_FILTER)
2933 dnl write output files
2934 AC_OUTPUT(auto/config.mk:config.mk.in)
2936 dnl vim: set sw=2 tw=78 fo+=l: