1 dnl configure.in: autoconf script for Vim
3 dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4 dnl Should also work with autoconf 2.54 and later.
7 AC_CONFIG_HEADER(auto/config.h:config.h.in)
9 dnl Being able to run configure means the system is Unix (compatible).
13 dnl Checks for programs.
14 AC_PROG_CC dnl required by almost everything
15 AC_PROG_CPP dnl required by header file checks
16 AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17 AC_ISC_POSIX dnl required by AC_C_CROSS
18 AC_PROG_AWK dnl required for "make html" in ../doc
20 dnl Don't strip if we don't have it
21 AC_CHECK_PROG(STRIP, strip, strip, :)
23 dnl Check for extension of executables
26 dnl Set default value for CFLAGS if none is defined or it's empty
27 if test -z "$CFLAGS"; then
29 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
31 if test "$GCC" = yes; then
32 dnl method that should work for nearly all versions
33 gccversion=`"$CC" -dumpversion`
34 if test "x$gccversion" = "x"; then
35 dnl old method; fall-back for when -dumpversion doesn't work
36 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
38 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
39 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
40 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
41 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
43 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
44 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
45 CFLAGS="$CFLAGS -fno-strength-reduce"
50 dnl If configure thinks we are cross compiling, there is probably something
51 dnl wrong with the CC or CFLAGS settings, give an understandable error message
52 if test "$cross_compiling" = yes; then
53 AC_MSG_ERROR([cannot compile a simple program, check CC and CFLAGS
54 (cross compiling doesn't work)])
57 dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
58 dnl But gcc 3.1 changed the meaning! See near the end.
59 test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
61 if test -f ./toolcheck; then
62 AC_CHECKING(for buggy tools)
63 sh ./toolcheck 1>&AC_FD_MSG
66 OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
68 dnl Check for BeOS, which needs an extra source file
69 AC_MSG_CHECKING(for BeOS)
71 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
72 BEOS=yes; AC_MSG_RESULT(yes);;
73 *) BEOS=no; AC_MSG_RESULT(no);;
76 dnl If QNX is found, assume we don't want to use Xphoton
77 dnl unless it was specifically asked for (--with-x)
78 AC_MSG_CHECKING(for QNX)
80 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
81 test -z "$with_x" && with_x=no
82 QNX=yes; AC_MSG_RESULT(yes);;
83 *) QNX=no; AC_MSG_RESULT(no);;
86 dnl Check for Darwin and MacOS X
87 dnl We do a check for MacOS X in the very beginning because there
88 dnl are a lot of other things we need to change besides GUI stuff
89 AC_MSG_CHECKING([for Darwin (Mac OS X)])
90 if test "`(uname) 2>/dev/null`" = Darwin; then
93 AC_MSG_CHECKING(--disable-darwin argument)
95 [ --disable-darwin Disable Darwin (Mac OS X) support.],
96 , [enable_darwin="yes"])
97 if test "$enable_darwin" = "yes"; then
99 AC_MSG_CHECKING(if Darwin files are there)
100 if test -f os_macosx.c; then
103 AC_MSG_RESULT([no, Darwin support disabled])
107 AC_MSG_RESULT([yes, Darwin support excluded])
110 AC_MSG_CHECKING(--with-mac-arch argument)
111 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
112 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
113 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
115 if test "x$MACARCH" = "xboth"; then
116 AC_MSG_CHECKING(for 10.4 universal SDK)
117 dnl There is a terrible inconsistency (but we appear to get away with it):
118 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
119 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
120 dnl tests using the preprocessor are actually done with the wrong header
121 dnl files. $LDFLAGS is set at the end, because configure uses it together
122 dnl with $CFLAGS and we can only have one -sysroot argument.
123 save_cppflags="$CPPFLAGS"
124 save_cflags="$CFLAGS"
125 save_ldflags="$LDFLAGS"
126 CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
127 AC_TRY_LINK([ ], [ ],
128 AC_MSG_RESULT(found, will make universal binary),
130 AC_MSG_RESULT(not found)
131 CFLAGS="$save_cflags"
132 AC_MSG_CHECKING(if Intel architecture is supported)
133 CPPFLAGS="$CPPFLAGS -arch i386"
134 LDFLAGS="$save_ldflags -arch i386"
135 AC_TRY_LINK([ ], [ ],
136 AC_MSG_RESULT(yes); MACARCH="intel",
137 AC_MSG_RESULT(no, using PowerPC)
139 CPPFLAGS="$save_cppflags -arch ppc"
140 LDFLAGS="$save_ldflags -arch ppc"))
141 elif test "x$MACARCH" = "xintel"; then
142 CPPFLAGS="$CPPFLAGS -arch intel"
143 LDFLAGS="$LDFLAGS -arch intel"
144 elif test "x$MACARCH" = "xppc"; then
145 CPPFLAGS="$CPPFLAGS -arch ppc"
146 LDFLAGS="$LDFLAGS -arch ppc"
149 if test "$enable_darwin" = "yes"; then
151 OS_EXTRA_SCR="os_macosx.c os_mac_conv.c";
152 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
153 dnl TODO: use -arch i386 on Intel machines
154 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
155 if test "x$MACARCH" = "xboth"; then
156 CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
158 CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
161 dnl If Carbon is found, assume we don't want X11
162 dnl unless it was specifically asked for (--with-x)
163 dnl or Motif, Athena or GTK GUI is used.
164 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
165 if test "x$CARBON" = "xyes"; then
166 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk -a "X$enable_gui" != Xgtk2; then
172 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
173 dnl free. This happens in expand_filename(), because the optimizer swaps
174 dnl two blocks of code, both using "repl", that can't be swapped.
175 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
176 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
183 AC_SUBST(OS_EXTRA_SRC)
184 AC_SUBST(OS_EXTRA_OBJ)
186 dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
187 dnl Only when the directory exists and it wasn't there yet.
188 dnl For gcc don't do this when it is already in the default search path.
189 have_local_include=''
191 if test "$GCC" = yes; then
192 echo 'void f(){}' > conftest.c
193 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
194 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep '/usr/local/include'`
195 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep '/usr/local/lib'`
196 rm -f conftest.c conftest.o
198 if test -z "$have_local_lib" -a -d /usr/local/lib; then
199 tt=`echo "$LDFLAGS" | sed -e 's+-L/usr/local/lib ++g' -e 's+-L/usr/local/lib$++g'`
200 if test "$tt" = "$LDFLAGS"; then
201 LDFLAGS="$LDFLAGS -L/usr/local/lib"
204 if test -z "$have_local_include" -a -d /usr/local/include; then
205 tt=`echo "$CPPFLAGS" | sed -e 's+-I/usr/local/include ++g' -e 's+-I/usr/local/include$++g'`
206 if test "$tt" = "$CPPFLAGS"; then
207 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
211 AC_MSG_CHECKING(--with-vim-name argument)
212 AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
213 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
214 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
216 AC_MSG_CHECKING(--with-ex-name argument)
217 AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
218 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
219 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
221 AC_MSG_CHECKING(--with-view-name argument)
222 AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
223 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
224 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
227 AC_MSG_CHECKING(--with-global-runtime argument)
228 AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
229 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
232 AC_MSG_CHECKING(--with-modified-by argument)
233 AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
234 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
237 dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
238 AC_MSG_CHECKING(if character set is EBCDIC)
240 [ /* TryCompile function for CharSet.
241 Treat any failure as ASCII for compatibility with existing art.
242 Use compile-time rather than run-time tests for cross-compiler
245 make an error "Character set is not EBCDIC"
247 [ # TryCompile action if true
249 [ # TryCompile action if false
251 # end of TryCompile ])
252 # end of CacheVal CvEbcdic
253 AC_MSG_RESULT($cf_cv_ebcdic)
254 case "$cf_cv_ebcdic" in #(vi
255 yes) AC_DEFINE(EBCDIC)
258 *) line_break='"\\012"';;
262 if test "$cf_cv_ebcdic" = "yes"; then
263 dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
264 AC_MSG_CHECKING(for OS/390 Unix)
266 OS/390) OS390Unix="yes";
267 dnl If using cc the environment variable _CC_CCMODE must be
268 dnl set to "1", so that some compiler extensions are enabled.
269 dnl If using c89 the environment variable is named _CC_C89MODE.
270 dnl Note: compile with c89 never tested.
271 if test "$CC" = "cc"; then
275 if test "$CC" = "c89"; then
282 if test "$ccm" != "1"; then
284 echo "------------------------------------------"
285 echo " On OS/390 Unix, the environment variable"
286 echo " __CC_${ccn}MODE must be set to \"1\"!"
288 echo " export _CC_${ccn}MODE=1"
289 echo " and then call configure again."
290 echo "------------------------------------------"
293 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
303 dnl Check user requested features.
305 AC_MSG_CHECKING(--with-features argument)
306 AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
307 features="$withval"; AC_MSG_RESULT($features),
308 features="normal"; AC_MSG_RESULT(Defaulting to normal))
313 tiny) AC_DEFINE(FEAT_TINY) ;;
314 small) AC_DEFINE(FEAT_SMALL) ;;
315 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
316 dogvimdiff="installgvimdiff" ;;
317 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
318 dogvimdiff="installgvimdiff" ;;
319 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
320 dogvimdiff="installgvimdiff" ;;
321 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
327 AC_MSG_CHECKING(--with-compiledby argument)
328 AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
329 compiledby="$withval"; AC_MSG_RESULT($withval),
330 compiledby=""; AC_MSG_RESULT(no))
333 AC_MSG_CHECKING(--disable-xsmp argument)
335 [ --disable-xsmp Disable XSMP session management],
338 if test "$enable_xsmp" = "yes"; then
340 AC_MSG_CHECKING(--disable-xsmp-interact argument)
341 AC_ARG_ENABLE(xsmp-interact,
342 [ --disable-xsmp-interact Disable XSMP interaction],
343 , enable_xsmp_interact="yes")
344 if test "$enable_xsmp_interact" = "yes"; then
346 AC_DEFINE(USE_XSMP_INTERACT)
354 dnl Check for MzScheme feature.
355 AC_MSG_CHECKING(--enable-mzschemeinterp argument)
356 AC_ARG_ENABLE(mzschemeinterp,
357 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
358 [enable_mzschemeinterp="no"])
359 AC_MSG_RESULT($enable_mzschemeinterp)
361 if test "$enable_mzschemeinterp" = "yes"; then
362 dnl -- find the mzscheme executable
363 AC_SUBST(vi_cv_path_mzscheme)
365 AC_MSG_CHECKING(--with-plthome argument)
367 [ --with-plthome=PLTHOME Use PLTHOME.],
368 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
369 with_plthome="";AC_MSG_RESULT("no"))
371 if test "X$with_plthome" != "X"; then
372 vi_cv_path_mzscheme_pfx="$with_plthome"
374 AC_MSG_CHECKING(PLTHOME environment var)
375 if test "X$PLTHOME" != "X"; then
376 AC_MSG_RESULT("$PLTHOME")
377 vi_cv_path_mzscheme_pfx="$PLTHOME"
379 AC_MSG_RESULT("not set")
380 dnl -- try to find MzScheme executable
381 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
383 dnl resolve symbolic link, the executable is often elsewhere and there
384 dnl are no links for the include files.
385 if test "X$vi_cv_path_mzscheme" != "X"; then
386 lsout=`ls -l $vi_cv_path_mzscheme`
387 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
388 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
392 if test "X$vi_cv_path_mzscheme" != "X"; then
393 dnl -- find where MzScheme thinks it was installed
394 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
395 [ vi_cv_path_mzscheme_pfx=`
396 ${vi_cv_path_mzscheme} -evm \
397 "(display (simplify-path \
398 (build-path (call-with-values \
399 (lambda () (split-path (find-system-path (quote exec-file)))) \
400 (lambda (base name must-be-dir?) base)) (quote up))))"` ])
401 dnl Remove a trailing slash.
402 vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
408 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
409 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
410 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
414 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/plt/include)
415 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
420 vi_cv_path_mzscheme_pfx=
425 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
426 if test "x$MACOSX" = "xyes"; then
427 MZSCHEME_LIBS="-framework PLT_MzScheme"
428 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
429 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
431 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
432 if test "$GCC" = yes; then
433 dnl Make Vim remember the path to the library. For when it's not in
434 dnl $LD_LIBRARY_PATH.
435 MZSCHEME_LIBS="$MZSCHEME_LIBS -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
436 elif test "`(uname) 2>/dev/null`" = SunOS &&
437 uname -r | grep '^5' >/dev/null; then
438 MZSCHEME_LIBS="$MZSCHEME_LIBS -R ${vi_cv_path_mzscheme_pfx}/lib"
441 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
442 SCHEME_COLLECTS=lib/plt/
444 MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include${SCHEME_INC} \
445 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
446 MZSCHEME_SRC="if_mzsch.c"
447 MZSCHEME_OBJ="objects/if_mzsch.o"
448 MZSCHEME_PRO="if_mzsch.pro"
449 AC_DEFINE(FEAT_MZSCHEME)
451 AC_SUBST(MZSCHEME_SRC)
452 AC_SUBST(MZSCHEME_OBJ)
453 AC_SUBST(MZSCHEME_PRO)
454 AC_SUBST(MZSCHEME_LIBS)
455 AC_SUBST(MZSCHEME_CFLAGS)
459 AC_MSG_CHECKING(--enable-perlinterp argument)
460 AC_ARG_ENABLE(perlinterp,
461 [ --enable-perlinterp Include Perl interpreter.], ,
462 [enable_perlinterp="no"])
463 AC_MSG_RESULT($enable_perlinterp)
464 if test "$enable_perlinterp" = "yes"; then
465 AC_SUBST(vi_cv_path_perl)
466 AC_PATH_PROG(vi_cv_path_perl, perl)
467 if test "X$vi_cv_path_perl" != "X"; then
468 AC_MSG_CHECKING(Perl version)
469 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
470 eval `$vi_cv_path_perl -V:usethreads`
471 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
474 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
475 eval `$vi_cv_path_perl -V:use5005threads`
476 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
480 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
484 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
487 if test $badthreads = no; then
489 eval `$vi_cv_path_perl -V:shrpenv`
490 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
493 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
494 AC_SUBST(vi_cv_perllib)
495 dnl Remove "-fno-something", it breaks using cproto.
496 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
497 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
498 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
499 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
500 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
501 -e 's/-bE:perl.exp//' -e 's/-lc //'`
502 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
503 dnl a test in configure may fail because of that.
504 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
505 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
507 dnl check that compiling a simple program still works with the flags
509 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
512 ldflags_save=$LDFLAGS
513 CFLAGS="$CFLAGS $perlcppflags"
514 LIBS="$LIBS $perllibs"
515 LDFLAGS="$perlldflags $LDFLAGS"
517 AC_MSG_RESULT(yes); perl_ok=yes,
518 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
521 LDFLAGS=$ldflags_save
522 if test $perl_ok = yes; then
523 if test "X$perlcppflags" != "X"; then
524 dnl remove -pipe and -Wxxx, it confuses cproto
525 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
527 if test "X$perlldflags" != "X"; then
528 LDFLAGS="$perlldflags $LDFLAGS"
531 PERL_SRC="auto/if_perl.c if_perlsfio.c"
532 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
533 PERL_PRO="if_perl.pro if_perlsfio.pro"
538 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
542 if test "x$MACOSX" = "xyes"; then
543 dnl Mac OS X 10.2 or later
544 dir=/System/Library/Perl
545 darwindir=$dir/darwin
546 if test -d $darwindir; then
550 dir=/System/Library/Perl/5.8.1
551 darwindir=$dir/darwin-thread-multi-2level
552 if test -d $darwindir; then
556 if test -n "$PERL"; then
558 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
559 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
560 PERL_LIBS="-L$darwindir/CORE -lperl"
568 AC_SUBST(PERL_CFLAGS)
571 AC_MSG_CHECKING(--enable-pythoninterp argument)
572 AC_ARG_ENABLE(pythoninterp,
573 [ --enable-pythoninterp Include Python interpreter.], ,
574 [enable_pythoninterp="no"])
575 AC_MSG_RESULT($enable_pythoninterp)
576 if test "$enable_pythoninterp" = "yes"; then
577 dnl -- find the python executable
578 AC_PATH_PROG(vi_cv_path_python, python)
579 if test "X$vi_cv_path_python" != "X"; then
581 dnl -- get its version number
582 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
583 [[vi_cv_var_python_version=`
584 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
587 dnl -- it must be at least version 1.4
588 AC_MSG_CHECKING(Python is 1.4 or better)
589 if ${vi_cv_path_python} -c \
590 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
594 dnl -- find where python thinks it was installed
595 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
596 [ vi_cv_path_python_pfx=`
597 ${vi_cv_path_python} -c \
598 "import sys; print sys.prefix"` ])
600 dnl -- and where it thinks it runs
601 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
602 [ vi_cv_path_python_epfx=`
603 ${vi_cv_path_python} -c \
604 "import sys; print sys.exec_prefix"` ])
606 dnl -- python's internal library path
608 AC_CACHE_VAL(vi_cv_path_pythonpath,
609 [ vi_cv_path_pythonpath=`
611 ${vi_cv_path_python} -c \
612 "import sys, string; print string.join(sys.path,':')"` ])
614 dnl -- where the Python implementation library archives are
616 AC_ARG_WITH(python-config-dir,
617 [ --with-python-config-dir=PATH Python's config directory],
618 [ vi_cv_path_python_conf="${withval}" ] )
620 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
622 vi_cv_path_python_conf=
623 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
624 for subdir in lib share; do
625 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
626 if test -d "$d" && test -f "$d/config.c"; then
627 vi_cv_path_python_conf="$d"
633 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
635 if test "X$PYTHON_CONFDIR" = "X"; then
636 AC_MSG_RESULT([can't find it!])
639 dnl -- we need to examine Python's config/Makefile too
640 dnl see what the interpreter is built from
641 AC_CACHE_VAL(vi_cv_path_python_plibs,
643 tmp_mkf="/tmp/Makefile-conf$$"
644 cat ${PYTHON_CONFDIR}/Makefile - <<'eof' >${tmp_mkf}
646 @echo "python_MODLIBS='$(MODLIBS)'"
647 @echo "python_LIBS='$(LIBS)'"
648 @echo "python_SYSLIBS='$(SYSLIBS)'"
649 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
651 dnl -- delete the lines from make about Entering/Leaving directory
652 eval "`cd ${PYTHON_CONFDIR} && make -f ${tmp_mkf} __ | sed '/ directory /d'`"
654 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
655 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
656 vi_cv_path_python_plibs="-framework Python"
658 if test "${vi_cv_var_python_version}" = "1.4"; then
659 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
661 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
663 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
664 dnl remove -ltermcap, it can conflict with an earlier -lncurses
665 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
669 PYTHON_LIBS="${vi_cv_path_python_plibs}"
670 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
671 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
673 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}"
675 PYTHON_SRC="if_python.c"
676 dnl For Mac OSX 10.2 config.o is included in the Python library.
677 if test "x$MACOSX" = "xyes"; then
678 PYTHON_OBJ="objects/if_python.o"
680 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
682 if test "${vi_cv_var_python_version}" = "1.4"; then
683 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
685 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
687 dnl On FreeBSD linking with "-pthread" is required to use threads.
688 dnl _THREAD_SAFE must be used for compiling then.
689 dnl The "-pthread" is added to $LIBS, so that the following check for
690 dnl sigaltstack() will look in libc_r (it's there in libc!).
691 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
692 dnl will then define target-specific defines, e.g., -D_REENTRANT.
693 dnl Don't do this for Mac OSX, -pthread will generate a warning.
694 AC_MSG_CHECKING([if -pthread should be used])
697 dnl if test "x$MACOSX" != "xyes"; then
698 if test "`(uname) 2>/dev/null`" != Darwin; then
699 test "$GCC" = yes && threadsafe_flag="-pthread"
700 if test "`(uname) 2>/dev/null`" = FreeBSD; then
701 threadsafe_flag="-D_THREAD_SAFE"
702 thread_lib="-pthread"
706 if test -n "$threadsafe_flag"; then
708 CFLAGS="$CFLAGS $threadsafe_flag"
709 LIBS="$LIBS $thread_lib"
711 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
712 AC_MSG_RESULT(no); LIBS=$libs_save_old
719 dnl check that compiling a simple program still works with the flags
720 dnl added for Python.
721 AC_MSG_CHECKING([if compile and link flags for Python are sane])
724 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
725 LIBS="$LIBS $PYTHON_LIBS"
727 AC_MSG_RESULT(yes); python_ok=yes,
728 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
731 if test $python_ok = yes; then
732 AC_DEFINE(FEAT_PYTHON)
743 AC_MSG_RESULT(too old)
747 AC_SUBST(PYTHON_CONFDIR)
748 AC_SUBST(PYTHON_LIBS)
749 AC_SUBST(PYTHON_GETPATH_CFLAGS)
750 AC_SUBST(PYTHON_CFLAGS)
754 AC_MSG_CHECKING(--enable-tclinterp argument)
755 AC_ARG_ENABLE(tclinterp,
756 [ --enable-tclinterp Include Tcl interpreter.], ,
757 [enable_tclinterp="no"])
758 AC_MSG_RESULT($enable_tclinterp)
760 if test "$enable_tclinterp" = "yes"; then
762 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
763 AC_MSG_CHECKING(--with-tclsh argument)
764 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
765 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
766 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
767 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
768 AC_SUBST(vi_cv_path_tcl)
770 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
771 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
772 tclsh_name="tclsh8.4"
773 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
775 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
776 tclsh_name="tclsh8.2"
777 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
779 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
780 tclsh_name="tclsh8.0"
781 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
783 dnl still didn't find it, try without version number
784 if test "X$vi_cv_path_tcl" = "X"; then
786 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
788 if test "X$vi_cv_path_tcl" != "X"; then
789 AC_MSG_CHECKING(Tcl version)
790 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
791 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
792 AC_MSG_RESULT($tclver - OK);
793 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 -`
795 AC_MSG_CHECKING(for location of Tcl include)
796 if test "x$MACOSX" != "xyes"; then
797 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/include"
799 dnl For Mac OS X 10.3, use the OS-provided framework location
800 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
802 for try in $tclinc; do
803 if test -f "$try/tcl.h"; then
804 AC_MSG_RESULT($try/tcl.h)
809 if test -z "$TCL_INC"; then
810 AC_MSG_RESULT(<not found>)
813 if test -z "$SKIP_TCL"; then
814 AC_MSG_CHECKING(for location of tclConfig.sh script)
815 if test "x$MACOSX" != "xyes"; then
816 tclcnf=`echo $tclinc | sed s/include/lib/g`
817 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
819 dnl For Mac OS X 10.3, use the OS-provided framework location
820 tclcnf="/System/Library/Frameworks/Tcl.framework"
822 for try in $tclcnf; do
823 if test -f $try/tclConfig.sh; then
824 AC_MSG_RESULT($try/tclConfig.sh)
826 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
827 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
828 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
829 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
830 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'`
834 if test -z "$TCL_LIBS"; then
835 AC_MSG_RESULT(<not found>)
836 AC_MSG_CHECKING(for Tcl library by myself)
837 tcllib=`echo $tclinc | sed s/include/lib/g`
838 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
839 for ext in .so .a ; do
840 for ver in "" $tclver ; do
841 for try in $tcllib ; do
843 if test -f $try/lib$trylib ; then
844 AC_MSG_RESULT($try/lib$trylib)
845 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
846 if test "`(uname) 2>/dev/null`" = SunOS &&
847 uname -r | grep '^5' >/dev/null; then
848 TCL_LIBS="$TCL_LIBS -R $try"
855 if test -z "$TCL_LIBS"; then
856 AC_MSG_RESULT(<not found>)
860 if test -z "$SKIP_TCL"; then
863 TCL_OBJ=objects/if_tcl.o
865 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
869 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
879 AC_MSG_CHECKING(--enable-rubyinterp argument)
880 AC_ARG_ENABLE(rubyinterp,
881 [ --enable-rubyinterp Include Ruby interpreter.], ,
882 [enable_rubyinterp="no"])
883 AC_MSG_RESULT($enable_rubyinterp)
884 if test "$enable_rubyinterp" = "yes"; then
885 AC_SUBST(vi_cv_path_ruby)
886 AC_PATH_PROG(vi_cv_path_ruby, ruby)
887 if test "X$vi_cv_path_ruby" != "X"; then
888 AC_MSG_CHECKING(Ruby version)
889 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
891 AC_MSG_CHECKING(Ruby header files)
892 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
893 if test "X$rubyhdrdir" != "X"; then
894 AC_MSG_RESULT($rubyhdrdir)
895 RUBY_CFLAGS="-I$rubyhdrdir"
896 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
897 if test "X$rubylibs" != "X"; then
898 RUBY_LIBS="$rubylibs"
900 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
901 if test -f "$rubyhdrdir/$librubyarg"; then
902 librubyarg="$rubyhdrdir/$librubyarg"
904 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
905 if test -f "$rubylibdir/$librubyarg"; then
906 librubyarg="$rubylibdir/$librubyarg"
907 elif test "$librubyarg" = "libruby.a"; then
908 dnl required on Mac OS 10.3 where libruby.a doesn't exist
911 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
915 if test "X$librubyarg" != "X"; then
916 RUBY_LIBS="$librubyarg $RUBY_LIBS"
918 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
919 if test "X$rubyldflags" != "X"; then
920 LDFLAGS="$rubyldflags $LDFLAGS"
923 RUBY_OBJ="objects/if_ruby.o"
924 RUBY_PRO="if_ruby.pro"
927 AC_MSG_RESULT(not found, disabling Ruby)
930 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
937 AC_SUBST(RUBY_CFLAGS)
940 AC_MSG_CHECKING(--enable-cscope argument)
941 AC_ARG_ENABLE(cscope,
942 [ --enable-cscope Include cscope interface.], ,
943 [enable_cscope="no"])
944 AC_MSG_RESULT($enable_cscope)
945 if test "$enable_cscope" = "yes"; then
946 AC_DEFINE(FEAT_CSCOPE)
949 AC_MSG_CHECKING(--enable-workshop argument)
950 AC_ARG_ENABLE(workshop,
951 [ --enable-workshop Include Sun Visual Workshop support.], ,
952 [enable_workshop="no"])
953 AC_MSG_RESULT($enable_workshop)
954 if test "$enable_workshop" = "yes"; then
955 AC_DEFINE(FEAT_SUN_WORKSHOP)
956 WORKSHOP_SRC="workshop.c integration.c"
957 AC_SUBST(WORKSHOP_SRC)
958 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
959 AC_SUBST(WORKSHOP_OBJ)
960 if test "${enable_gui-xxx}" = xxx; then
965 AC_MSG_CHECKING(--disable-netbeans argument)
966 AC_ARG_ENABLE(netbeans,
967 [ --disable-netbeans Disable NetBeans integration support.],
968 , [enable_netbeans="yes"])
969 if test "$enable_netbeans" = "yes"; then
971 dnl On Solaris we need the socket and nsl library.
972 AC_CHECK_LIB(socket, socket)
973 AC_CHECK_LIB(nsl, gethostbyname)
974 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
981 #include <netinet/in.h>
983 #include <sys/types.h>
984 #include <sys/socket.h>
985 /* Check bitfields */
987 unsigned int initDone:1;
991 /* Check creating a socket. */
992 struct sockaddr_in server;
993 (void)socket(AF_INET, SOCK_STREAM, 0);
995 (void)gethostbyname("microsoft.com");
996 if (errno == ECONNREFUSED)
997 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1000 AC_MSG_RESULT(no); enable_netbeans="no")
1004 if test "$enable_netbeans" = "yes"; then
1005 AC_DEFINE(FEAT_NETBEANS_INTG)
1006 NETBEANS_SRC="netbeans.c"
1007 AC_SUBST(NETBEANS_SRC)
1008 NETBEANS_OBJ="objects/netbeans.o"
1009 AC_SUBST(NETBEANS_OBJ)
1012 AC_MSG_CHECKING(--enable-sniff argument)
1013 AC_ARG_ENABLE(sniff,
1014 [ --enable-sniff Include Sniff interface.], ,
1015 [enable_sniff="no"])
1016 AC_MSG_RESULT($enable_sniff)
1017 if test "$enable_sniff" = "yes"; then
1018 AC_DEFINE(FEAT_SNIFF)
1019 SNIFF_SRC="if_sniff.c"
1021 SNIFF_OBJ="objects/if_sniff.o"
1025 AC_MSG_CHECKING(--enable-multibyte argument)
1026 AC_ARG_ENABLE(multibyte,
1027 [ --enable-multibyte Include multibyte editing support.], ,
1028 [enable_multibyte="no"])
1029 AC_MSG_RESULT($enable_multibyte)
1030 if test "$enable_multibyte" = "yes"; then
1031 AC_DEFINE(FEAT_MBYTE)
1034 AC_MSG_CHECKING(--enable-hangulinput argument)
1035 AC_ARG_ENABLE(hangulinput,
1036 [ --enable-hangulinput Include Hangul input support.], ,
1037 [enable_hangulinput="no"])
1038 AC_MSG_RESULT($enable_hangulinput)
1040 AC_MSG_CHECKING(--enable-xim argument)
1042 [ --enable-xim Include XIM input support.],
1043 AC_MSG_RESULT($enable_xim),
1044 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1045 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1047 AC_MSG_CHECKING(--enable-fontset argument)
1048 AC_ARG_ENABLE(fontset,
1049 [ --enable-fontset Include X fontset output support.], ,
1050 [enable_fontset="no"])
1051 AC_MSG_RESULT($enable_fontset)
1052 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1054 test -z "$with_x" && with_x=yes
1055 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1056 if test "$with_x" = no; then
1057 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1059 dnl Do this check early, so that its failure can override user requests.
1061 AC_PATH_PROG(xmkmfpath, xmkmf)
1065 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1066 dnl be compiled with a special option.
1067 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1068 if test "$OS390Unix" = "yes"; then
1069 CFLAGS="$CFLAGS -W c,dll"
1070 LDFLAGS="$LDFLAGS -W l,dll"
1071 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1074 dnl On my HPUX system the X include dir is found, but the lib dir not.
1075 dnl This is a desparate try to fix this.
1077 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1078 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1079 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1080 X_LIBS="$X_LIBS -L$x_libraries"
1081 if test "`(uname) 2>/dev/null`" = SunOS &&
1082 uname -r | grep '^5' >/dev/null; then
1083 X_LIBS="$X_LIBS -R $x_libraries"
1087 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1088 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1089 AC_MSG_RESULT(Corrected X includes to $x_includes)
1090 X_CFLAGS="$X_CFLAGS -I$x_includes"
1093 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1094 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1095 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1096 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1097 dnl Same for "-R/usr/lib ".
1098 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1101 dnl Check if the X11 header files are correctly installed. On some systems
1102 dnl Xlib.h includes files that don't exist
1103 AC_MSG_CHECKING(if X11 header files can be found)
1105 CFLAGS="$CFLAGS $X_CFLAGS"
1106 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1108 AC_MSG_RESULT(no); no_x=yes)
1111 if test "${no_x-no}" = yes; then
1118 ac_save_LDFLAGS="$LDFLAGS"
1119 LDFLAGS="-L$x_libraries $LDFLAGS"
1121 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1122 dnl For HP-UX 10.20 it must be before -lSM -lICE
1123 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1124 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1126 dnl Some systems need -lnsl -lsocket when testing for ICE.
1127 dnl The check above doesn't do this, try here (again). Also needed to get
1128 dnl them after Xdmcp. link.sh will remove them when not needed.
1129 dnl Check for other function than above to avoid the cached value
1130 AC_CHECK_LIB(ICE, IceOpenConnection,
1131 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1133 dnl Check for -lXpm (needed for some versions of Motif)
1134 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1135 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1136 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1138 dnl Check that the X11 header files don't use implicit declarations
1139 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1141 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1142 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1144 CFLAGS="$CFLAGS -Wno-implicit-int"
1145 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1146 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1147 AC_MSG_RESULT(test failed)
1152 LDFLAGS="$ac_save_LDFLAGS"
1157 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1159 AC_MSG_CHECKING(--enable-gui argument)
1161 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
1163 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1164 dnl Do not use character classes for portability with old tools.
1165 enable_gui_canon=`echo "_$enable_gui" | \
1166 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1168 dnl Skip everything by default.
1179 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1181 case "$enable_gui_canon" in
1182 no) AC_MSG_RESULT(no GUI support)
1184 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1185 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1186 photon) AC_MSG_RESULT(Photon GUI support) ;;
1187 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1191 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1193 case "$enable_gui_canon" in
1194 no) AC_MSG_RESULT(no GUI support)
1196 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1197 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1198 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1199 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1205 case "$enable_gui_canon" in
1206 no|none) AC_MSG_RESULT(no GUI support) ;;
1207 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1215 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1217 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1220 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1223 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1227 motif) AC_MSG_RESULT(Motif GUI support)
1229 athena) AC_MSG_RESULT(Athena GUI support)
1231 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1233 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1238 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1239 AC_MSG_CHECKING(whether or not to look for GTK)
1240 AC_ARG_ENABLE(gtk-check,
1241 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1242 , enable_gtk_check="yes")
1243 AC_MSG_RESULT($enable_gtk_check)
1244 if test "x$enable_gtk_check" = "xno"; then
1250 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1251 -a "$enable_gui_canon" != "gnome2"; then
1252 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1253 AC_ARG_ENABLE(gtk2-check,
1254 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1255 , enable_gtk2_check="yes")
1256 AC_MSG_RESULT($enable_gtk2_check)
1257 if test "x$enable_gtk2_check" = "xno"; then
1262 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1263 -a "$enable_gui_canon" != "gnome2"; then
1264 AC_MSG_CHECKING(whether or not to look for GNOME)
1265 AC_ARG_ENABLE(gnome-check,
1266 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1267 , enable_gnome_check="no")
1268 AC_MSG_RESULT($enable_gnome_check)
1269 if test "x$enable_gnome_check" = "xno"; then
1274 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1275 AC_MSG_CHECKING(whether or not to look for Motif)
1276 AC_ARG_ENABLE(motif-check,
1277 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1278 , enable_motif_check="yes")
1279 AC_MSG_RESULT($enable_motif_check)
1280 if test "x$enable_motif_check" = "xno"; then
1285 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1286 AC_MSG_CHECKING(whether or not to look for Athena)
1287 AC_ARG_ENABLE(athena-check,
1288 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1289 , enable_athena_check="yes")
1290 AC_MSG_RESULT($enable_athena_check)
1291 if test "x$enable_athena_check" = "xno"; then
1296 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1297 AC_MSG_CHECKING(whether or not to look for neXtaw)
1298 AC_ARG_ENABLE(nextaw-check,
1299 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1300 , enable_nextaw_check="yes")
1301 AC_MSG_RESULT($enable_nextaw_check);
1302 if test "x$enable_nextaw_check" = "xno"; then
1307 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1308 AC_MSG_CHECKING(whether or not to look for Carbon)
1309 AC_ARG_ENABLE(carbon-check,
1310 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1311 , enable_carbon_check="yes")
1312 AC_MSG_RESULT($enable_carbon_check);
1313 if test "x$enable_carbon_check" = "xno"; then
1319 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1320 AC_MSG_CHECKING(for Carbon GUI)
1321 dnl already did the check, just give the message
1324 if test "$VIMNAME" = "vim"; then
1328 dnl Default install directory is not /usr/local
1329 if test x$prefix = xNONE; then
1330 prefix=/Applications
1333 dnl Sorry for the hard coded default
1334 datadir='${prefix}/Vim.app/Contents/Resources'
1336 dnl skip everything else
1348 dnl Get the cflags and libraries from the gtk-config script
1351 dnl define an autoconf function to check for a specified version of GTK, and
1352 dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1354 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1355 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1357 AC_DEFUN(AM_PATH_GTK,
1359 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1361 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1362 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1364 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1365 && $PKG_CONFIG --exists gtk+-2.0; then
1367 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1368 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1369 dnl something like that.
1370 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1371 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1372 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1373 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1374 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1375 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1376 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1377 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1378 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1380 elif test "X$GTK_CONFIG" != "Xno"; then
1382 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1384 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1385 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1386 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1387 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1388 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1389 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1390 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1396 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1398 ac_save_CFLAGS="$CFLAGS"
1399 ac_save_LIBS="$LIBS"
1400 CFLAGS="$CFLAGS $GTK_CFLAGS"
1401 LIBS="$LIBS $GTK_LIBS"
1404 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1405 dnl checks the results of gtk-config to some extent
1409 #include <gtk/gtk.h>
1415 int major, minor, micro;
1418 system ("touch conf.gtktest");
1420 /* HP/UX 9 (%@#!) writes to sscanf strings */
1421 tmp_version = g_strdup("$min_gtk_version");
1422 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
1423 printf("%s, bad version string\n", "$min_gtk_version");
1427 if ((gtk_major_version > major) ||
1428 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1429 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1430 (gtk_micro_version >= micro)))
1436 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1437 CFLAGS="$ac_save_CFLAGS"
1438 LIBS="$ac_save_LIBS"
1441 if test "x$no_gtk" = x ; then
1442 if test "x$enable_gtktest" = "xyes"; then
1443 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1445 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1447 ifelse([$2], , :, [$2])
1453 ifelse([$3], , :, [$3])
1460 ifelse([$3], , :, [$3])
1462 AC_SUBST(GTK_CFLAGS)
1467 dnl ---------------------------------------------------------------------------
1469 dnl ---------------------------------------------------------------------------
1470 AC_DEFUN([GNOME_INIT_HOOK],
1472 AC_SUBST(GNOME_LIBS)
1473 AC_SUBST(GNOME_LIBDIR)
1474 AC_SUBST(GNOME_INCLUDEDIR)
1476 AC_ARG_WITH(gnome-includes,
1477 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1478 [CFLAGS="$CFLAGS -I$withval"]
1481 AC_ARG_WITH(gnome-libs,
1482 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1483 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1487 [ --with-gnome Specify prefix for GNOME files],
1488 if test x$withval = xyes; then
1490 ifelse([$1], [], :, [$1])
1492 if test "x$withval" = xno; then
1496 LDFLAGS="$LDFLAGS -L$withval/lib"
1497 CFLAGS="$CFLAGS -I$withval/include"
1498 gnome_prefix=$withval/lib
1503 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1505 AC_MSG_CHECKING(for libgnomeui-2.0)
1506 if $PKG_CONFIG --exists libgnomeui-2.0; then
1508 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1509 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1510 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1512 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1513 dnl This might not be the right way but it works for me...
1514 AC_MSG_CHECKING(for FreeBSD)
1515 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1516 AC_MSG_RESULT(yes, adding -pthread)
1517 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1518 GNOME_LIBS="$GNOME_LIBS -pthread"
1524 AC_MSG_RESULT(not found)
1525 if test "x$2" = xfail; then
1526 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1530 elif test "x$want_gnome" = xyes; then
1532 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1533 if test "$GNOME_CONFIG" = "no"; then
1534 no_gnome_config="yes"
1536 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1537 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1539 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1540 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1541 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1545 no_gnome_config="yes"
1549 if test x$exec_prefix = xNONE; then
1550 if test x$prefix = xNONE; then
1551 gnome_prefix=$ac_default_prefix/lib
1553 gnome_prefix=$prefix/lib
1556 gnome_prefix=`eval echo \`echo $libdir\``
1559 if test "$no_gnome_config" = "yes"; then
1560 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1561 if test -f $gnome_prefix/gnomeConf.sh; then
1562 AC_MSG_RESULT(found)
1563 echo "loading gnome configuration from" \
1564 "$gnome_prefix/gnomeConf.sh"
1565 . $gnome_prefix/gnomeConf.sh
1568 AC_MSG_RESULT(not found)
1569 if test x$2 = xfail; then
1570 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1578 AC_DEFUN([GNOME_INIT],[
1579 GNOME_INIT_HOOK([],fail)
1583 dnl ---------------------------------------------------------------------------
1584 dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1585 dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1586 dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1587 dnl ---------------------------------------------------------------------------
1588 if test -z "$SKIP_GTK"; then
1590 AC_MSG_CHECKING(--with-gtk-prefix argument)
1591 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1592 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1593 gtk_config_prefix=""; AC_MSG_RESULT(no))
1595 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1596 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1597 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1598 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1600 AC_MSG_CHECKING(--disable-gtktest argument)
1601 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1602 , enable_gtktest=yes)
1603 if test "x$enable_gtktest" = "xyes" ; then
1604 AC_MSG_RESULT(gtk test enabled)
1606 AC_MSG_RESULT(gtk test disabled)
1609 if test "x$gtk_config_prefix" != "x" ; then
1610 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1611 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1613 if test "x$gtk_config_exec_prefix" != "x" ; then
1614 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1615 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1617 if test "X$GTK_CONFIG" = "X"; then
1618 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1619 if test "X$GTK_CONFIG" = "Xno"; then
1620 dnl Some distributions call it gtk12-config, annoying!
1621 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1622 GTK_CONFIG="$GTK12_CONFIG"
1625 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1627 if test "X$PKG_CONFIG" = "X"; then
1628 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1631 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1632 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1633 dnl problems (bold fonts, --remote doesn't work).
1634 if test "X$SKIP_GTK2" != "XYES"; then
1636 [GUI_LIB_LOC="$GTK_LIBDIR"
1637 GTK_LIBNAME="$GTK_LIBS"
1638 GUI_INC_LOC="$GTK_CFLAGS"], )
1639 if test "x$GTK_CFLAGS" != "x"; then
1644 AC_SUBST(GTK_LIBNAME)
1648 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1649 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1650 dnl were test versions.
1651 if test "x$GUITYPE" != "xGTK"; then
1654 [GTK_LIBNAME="$GTK_LIBS"
1655 GUI_INC_LOC="$GTK_CFLAGS"], )
1656 if test "x$GTK_CFLAGS" != "x"; then
1661 AC_SUBST(GTK_LIBNAME)
1665 dnl Give a warning if GTK is older than 1.2.3
1666 if test "x$GUITYPE" = "xGTK"; then
1667 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1668 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1669 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1672 if test "0$gtk_major_version" -ge 2; then
1673 AC_DEFINE(HAVE_GTK2)
1674 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1675 || test "0$gtk_minor_version" -ge 2 \
1676 || test "0$gtk_major_version" -gt 2; then
1677 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1681 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1683 if test -z "$SKIP_GNOME"; then
1685 GNOME_INIT_HOOK([have_gnome=yes])
1686 if test x$have_gnome = xyes ; then
1687 AC_DEFINE(FEAT_GUI_GNOME)
1688 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1689 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1698 dnl Check for Motif include files location.
1699 dnl The LAST one found is used, this makes the highest version to be used,
1700 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1702 if test -z "$SKIP_MOTIF"; then
1703 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"
1704 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1705 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1707 AC_MSG_CHECKING(for location of Motif GUI includes)
1708 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1710 for try in $gui_includes; do
1711 if test -f "$try/Xm/Xm.h"; then
1715 if test -n "$GUI_INC_LOC"; then
1716 if test "$GUI_INC_LOC" = /usr/include; then
1718 AC_MSG_RESULT(in default path)
1720 AC_MSG_RESULT($GUI_INC_LOC)
1723 AC_MSG_RESULT(<not found>)
1728 dnl Check for Motif library files location. In the same order as the include
1729 dnl files, to avoid a mixup if several versions are present
1731 if test -z "$SKIP_MOTIF"; then
1732 AC_MSG_CHECKING(--with-motif-lib argument)
1733 AC_ARG_WITH(motif-lib,
1734 [ --with-motif-lib=STRING Library for Motif ],
1735 [ MOTIF_LIBNAME="${withval}" ] )
1737 if test -n "$MOTIF_LIBNAME"; then
1738 AC_MSG_RESULT($MOTIF_LIBNAME)
1743 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1744 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1746 AC_MSG_CHECKING(for location of Motif GUI libs)
1747 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"
1749 for try in $gui_libs; do
1750 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1751 if test -f "$libtry"; then
1756 if test -n "$GUI_LIB_LOC"; then
1757 dnl Remove /usr/lib, it causes trouble on some systems
1758 if test "$GUI_LIB_LOC" = /usr/lib; then
1760 AC_MSG_RESULT(in default path)
1762 if test -n "$GUI_LIB_LOC"; then
1763 AC_MSG_RESULT($GUI_LIB_LOC)
1764 if test "`(uname) 2>/dev/null`" = SunOS &&
1765 uname -r | grep '^5' >/dev/null; then
1766 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1772 AC_MSG_RESULT(<not found>)
1778 if test -z "$SKIP_MOTIF"; then
1782 AC_SUBST(MOTIF_LIBNAME)
1785 dnl Check if the Athena files can be found
1789 if test -z "$SKIP_ATHENA"; then
1790 AC_MSG_CHECKING(if Athena header files can be found)
1792 CFLAGS="$CFLAGS $X_CFLAGS"
1794 #include <X11/Intrinsic.h>
1795 #include <X11/Xaw/Paned.h>], ,
1797 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1801 if test -z "$SKIP_ATHENA"; then
1805 if test -z "$SKIP_NEXTAW"; then
1806 AC_MSG_CHECKING(if neXtaw header files can be found)
1808 CFLAGS="$CFLAGS $X_CFLAGS"
1810 #include <X11/Intrinsic.h>
1811 #include <X11/neXtaw/Paned.h>], ,
1813 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1817 if test -z "$SKIP_NEXTAW"; then
1821 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1822 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1823 dnl Avoid adding it when it twice
1824 if test -n "$GUI_INC_LOC"; then
1825 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1827 if test -n "$GUI_LIB_LOC"; then
1828 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1831 dnl Check for -lXext and then for -lXmu
1832 ldflags_save=$LDFLAGS
1833 LDFLAGS="$X_LIBS $LDFLAGS"
1834 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1835 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1836 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1837 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1838 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1839 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1840 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1841 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1842 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1843 if test -z "$SKIP_MOTIF"; then
1844 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1845 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1847 LDFLAGS=$ldflags_save
1849 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1850 AC_MSG_CHECKING(for extra X11 defines)
1853 if mkdir conftestdir; then
1855 cat > Imakefile <<'EOF'
1857 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1859 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1860 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1865 if test -z "$NARROW_PROTO"; then
1868 AC_MSG_RESULT($NARROW_PROTO)
1870 AC_SUBST(NARROW_PROTO)
1873 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1874 dnl use the X11 include path
1875 if test "$enable_xsmp" = "yes"; then
1876 cppflags_save=$CPPFLAGS
1877 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1878 AC_CHECK_HEADERS(X11/SM/SMlib.h)
1879 CPPFLAGS=$cppflags_save
1883 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1884 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1885 cppflags_save=$CPPFLAGS
1886 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1887 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1889 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1890 if test ! "$enable_xim" = "no"; then
1891 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1892 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1894 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1896 CPPFLAGS=$cppflags_save
1898 dnl automatically enable XIM when hangul input isn't enabled
1899 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1900 -a "x$GUITYPE" != "xNONE" ; then
1901 AC_MSG_RESULT(X GUI selected; xim has been enabled)
1906 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1907 cppflags_save=$CPPFLAGS
1908 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1909 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1910 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1912 #include <X11/Intrinsic.h>
1913 #include <X11/Xmu/Editres.h>],
1916 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1918 CPPFLAGS=$cppflags_save
1921 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1922 if test -z "$SKIP_MOTIF"; then
1923 cppflags_save=$CPPFLAGS
1924 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1925 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
1926 Xm/UnhighlightT.h Xm/Notebook.h)
1928 if test $ac_cv_header_Xm_XpmP_h = yes; then
1929 dnl Solaris uses XpmAttributes_21, very annoying.
1930 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1931 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
1932 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
1933 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1936 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1938 CPPFLAGS=$cppflags_save
1941 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
1942 AC_MSG_RESULT(no GUI selected; xim has been disabled)
1945 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
1946 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
1949 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
1950 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
1954 if test -z "$SKIP_PHOTON"; then
1958 AC_SUBST(GUI_INC_LOC)
1959 AC_SUBST(GUI_LIB_LOC)
1961 AC_SUBST(GUI_X_LIBS)
1963 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
1964 AC_MSG_ERROR([cannot use workshop without Motif])
1967 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
1968 if test "$enable_xim" = "yes"; then
1971 if test "$enable_fontset" = "yes"; then
1972 AC_DEFINE(FEAT_XFONTSET)
1976 dnl ---------------------------------------------------------------------------
1977 dnl end of GUI-checking
1978 dnl ---------------------------------------------------------------------------
1981 dnl Only really enable hangul input when GUI and XFONTSET are available
1982 if test "$enable_hangulinput" = "yes"; then
1983 if test "x$GUITYPE" = "xNONE"; then
1984 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
1985 enable_hangulinput=no
1987 AC_DEFINE(FEAT_HANGULIN)
1988 HANGULIN_SRC=hangulin.c
1989 AC_SUBST(HANGULIN_SRC)
1990 HANGULIN_OBJ=objects/hangulin.o
1991 AC_SUBST(HANGULIN_OBJ)
1995 dnl Checks for libraries and include files.
1997 AC_MSG_CHECKING(quality of toupper)
1998 AC_TRY_RUN([#include <ctype.h>
1999 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }],
2000 AC_DEFINE(BROKEN_TOUPPER) AC_MSG_RESULT(bad),
2001 AC_MSG_RESULT(good), AC_MSG_ERROR(failed to compile test program))
2003 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2004 AC_TRY_COMPILE(, [printf("(" __DATE__ " " __TIME__ ")");],
2005 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2008 dnl Checks for header files.
2009 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2010 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2011 if test "$HAS_ELF" = 1; then
2012 AC_CHECK_LIB(elf, main)
2017 dnl check for standard headers, we don't use this in Vim but other stuff
2018 dnl in autoconf needs it
2022 dnl If sys/wait.h is not found it might still exist but not be POSIX
2023 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2024 if test $ac_cv_header_sys_wait_h = no; then
2025 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2026 AC_TRY_COMPILE([#include <sys/wait.h>],
2027 [union wait xx, yy; xx = yy],
2029 AC_DEFINE(HAVE_SYS_WAIT_H)
2030 AC_DEFINE(HAVE_UNION_WAIT),
2034 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2035 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2036 iconv.h langinfo.h unistd.h stropts.h errno.h \
2037 sys/resource.h sys/systeminfo.h locale.h \
2038 sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
2039 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2040 libgen.h util/debug.h util/msg18n.h frame.h \
2041 sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
2043 dnl pthread_np.h may exist but can only be used after including pthread.h
2044 AC_MSG_CHECKING([for pthread_np.h])
2046 #include <pthread.h>
2047 #include <pthread_np.h>],
2050 AC_DEFINE(HAVE_PTHREAD_NP_H),
2053 AC_CHECK_HEADERS(strings.h)
2054 if test "x$MACOSX" = "xyes"; then
2055 dnl The strings.h file on OS/X contains a warning and nothing useful.
2056 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2059 dnl Check if strings.h and string.h can both be included when defined.
2060 AC_MSG_CHECKING([if strings.h can be included after string.h])
2061 cppflags_save=$CPPFLAGS
2062 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2064 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2065 # define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2066 /* but don't do it on AIX 5.1 (Uribarri) */
2069 # include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2071 #ifdef HAVE_STRING_H
2072 # include <string.h>
2074 #if defined(HAVE_STRINGS_H)
2075 # include <strings.h>
2079 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2081 CPPFLAGS=$cppflags_save
2084 dnl Checks for typedefs, structures, and compiler characteristics.
2085 AC_PROG_GCC_TRADITIONAL
2093 AC_CHECK_TYPE(ino_t, long)
2094 AC_CHECK_TYPE(dev_t, unsigned)
2096 AC_MSG_CHECKING(for rlim_t)
2097 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2098 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2101 changequote(<<,>>)dnl
2102 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2105 #include <sys/types.h>
2110 #ifdef HAVE_SYS_RESOURCE_H
2111 #include <sys/resource.h>
2113 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2114 AC_MSG_RESULT($ac_cv_type_rlim_t)
2116 if test $ac_cv_type_rlim_t = no; then
2117 cat >> confdefs.h <<\EOF
2118 #define rlim_t unsigned long
2122 AC_MSG_CHECKING(for stack_t)
2123 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2124 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2126 AC_EGREP_CPP(stack_t,
2128 #include <sys/types.h>
2134 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2135 AC_MSG_RESULT($ac_cv_type_stack_t)
2137 if test $ac_cv_type_stack_t = no; then
2138 cat >> confdefs.h <<\EOF
2139 #define stack_t struct sigaltstack
2143 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2144 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2146 #include <sys/types.h>
2152 #include "confdefs.h"
2153 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2154 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2158 AC_MSG_CHECKING(--with-tlib argument)
2159 AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2160 if test -n "$with_tlib"; then
2161 AC_MSG_RESULT($with_tlib)
2162 LIBS="$LIBS -l$with_tlib"
2163 AC_MSG_CHECKING(for linking with $with_tlib library)
2164 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2165 dnl Need to check for tgetent() below.
2168 AC_MSG_RESULT([empty: automatic terminal library selection])
2169 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2170 dnl curses, because curses is much slower.
2171 dnl Newer versions of ncurses are preferred over anything.
2172 dnl Older versions of ncurses have bugs, get a new one!
2173 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
2174 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
2175 case "`uname -s 2>/dev/null`" in
2176 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
2177 *) tlibs="ncurses termlib termcap curses";;
2179 for libname in $tlibs; do
2180 AC_CHECK_LIB(${libname}, tgetent,,)
2181 if test "x$olibs" != "x$LIBS"; then
2182 dnl It's possible that a library is found but it doesn't work
2183 dnl e.g., shared library that cannot be found
2184 dnl compile and run a test program to be sure
2186 #ifdef HAVE_TERMCAP_H
2187 # include <termcap.h>
2189 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2190 res="OK", res="FAIL", res="FAIL")
2191 if test "$res" = "OK"; then
2194 AC_MSG_RESULT($libname library is not usable)
2198 if test "x$olibs" = "x$LIBS"; then
2199 AC_MSG_RESULT(no terminal library found)
2203 if test "x$olibs" = "x$LIBS"; then
2204 AC_MSG_CHECKING([for tgetent()])
2206 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2208 AC_MSG_ERROR([NOT FOUND!
2209 You need to install a terminal library; for example ncurses.
2210 Or specify the name of the library with --with-tlib.]))
2213 AC_MSG_CHECKING(whether we talk terminfo)
2215 #ifdef HAVE_TERMCAP_H
2216 # include <termcap.h>
2219 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }],
2220 AC_MSG_RESULT([no -- we are in termcap land]),
2221 AC_MSG_RESULT([yes -- terminfo spoken here]); AC_DEFINE(TERMINFO),
2222 AC_MSG_ERROR(failed to compile test program.))
2224 if test "x$olibs" != "x$LIBS"; then
2225 AC_MSG_CHECKING(what tgetent() returns for an unknown terminal)
2227 #ifdef HAVE_TERMCAP_H
2228 # include <termcap.h>
2231 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }],
2232 AC_MSG_RESULT(zero); AC_DEFINE(TGETENT_ZERO_ERR, 0),
2233 AC_MSG_RESULT(non-zero),
2234 AC_MSG_ERROR(failed to compile test program.))
2237 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2239 #ifdef HAVE_TERMCAP_H
2240 # include <termcap.h>
2242 ], [ospeed = 20000],
2243 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2245 AC_MSG_CHECKING(whether ospeed can be extern)
2247 #ifdef HAVE_TERMCAP_H
2248 # include <termcap.h>
2250 extern short ospeed;
2251 ], [ospeed = 20000],
2252 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2256 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2258 #ifdef HAVE_TERMCAP_H
2259 # include <termcap.h>
2261 ], [if (UP == 0 && BC == 0) PC = 1],
2262 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2264 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2266 #ifdef HAVE_TERMCAP_H
2267 # include <termcap.h>
2269 extern char *UP, *BC, PC;
2270 ], [if (UP == 0 && BC == 0) PC = 1],
2271 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2275 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2277 #ifdef HAVE_TERMCAP_H
2278 # include <termcap.h>
2280 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2281 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2284 dnl On some SCO machines sys/select redefines struct timeval
2285 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2287 #include <sys/types.h>
2288 #include <sys/time.h>
2289 #include <sys/select.h>], ,
2291 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2294 dnl AC_DECL_SYS_SIGLIST
2296 dnl Checks for pty.c (copied from screen) ==========================
2297 AC_MSG_CHECKING(for /dev/ptc)
2298 if test -r /dev/ptc; then
2299 AC_DEFINE(HAVE_DEV_PTC)
2305 AC_MSG_CHECKING(for SVR4 ptys)
2306 if test -c /dev/ptmx ; then
2307 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2308 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2314 AC_MSG_CHECKING(for ptyranges)
2315 if test -d /dev/ptym ; then
2325 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2326 dnl if test -c /dev/ptyp19; then
2327 dnl ptys=`echo /dev/ptyp??`
2329 dnl ptys=`echo $pdir/pty??`
2331 if test "$ptys" != "$pdir/pty??" ; then
2332 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2333 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2334 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2335 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2336 AC_MSG_RESULT([$p0 / $p1])
2338 AC_MSG_RESULT([don't know])
2341 dnl **** pty mode/group handling ****
2343 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2344 AC_MSG_CHECKING(default tty permissions/group)
2347 #include <sys/types.h>
2348 #include <sys/stat.h>
2357 if (!(x = ttyname(0))) exit(1);
2358 if (stat(x, &sb)) exit(1);
2360 if (om & 002) exit(0);
2361 m = system("mesg y");
2362 if (m == -1 || m == 127) exit(1);
2363 if (stat(x, &sb)) exit(1);
2365 if (chmod(x, om)) exit(1);
2366 if (m & 002) exit(0);
2367 if (sb.st_gid == getgid()) exit(1);
2368 if (!(fp=fopen("conftest_grp", "w")))
2370 fprintf(fp, "%d\n", sb.st_gid);
2375 if test -f conftest_grp; then
2376 ptygrp=`cat conftest_grp`
2377 AC_MSG_RESULT([pty mode: 0620, group: $ptygrp])
2378 AC_DEFINE(PTYMODE, 0620)
2379 AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
2381 AC_MSG_RESULT([ptys are world accessable])
2384 AC_MSG_RESULT([can't determine - assume ptys are world accessable]),
2385 AC_MSG_ERROR(failed to compile test program))
2388 dnl Checks for library functions. ===================================
2392 dnl find out what to use at the end of a signal function
2393 if test $ac_cv_type_signal = void; then
2394 AC_DEFINE(SIGRETURN, [return])
2396 AC_DEFINE(SIGRETURN, [return 0])
2399 dnl check if struct sigcontext is defined (used for SGI only)
2400 AC_MSG_CHECKING(for struct sigcontext)
2405 struct sigcontext *scont;
2406 scont = (struct sigcontext *)0;
2410 AC_DEFINE(HAVE_SIGCONTEXT),
2413 dnl tricky stuff: try to find out if getcwd() is implemented with
2414 dnl system("sh -c pwd")
2415 AC_MSG_CHECKING(getcwd implementation)
2417 char *dagger[] = { "IFS=pwd", 0 };
2421 extern char **environ;
2423 return getcwd(buffer, 500) ? 0 : 1;
2425 AC_MSG_RESULT(it is usable),
2426 AC_MSG_RESULT(it stinks)
2427 AC_DEFINE(BAD_GETCWD),
2428 AC_MSG_ERROR(failed to compile test program))
2430 dnl Check for functions in one big call, to reduce the size of configure
2431 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2432 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2433 memset nanosleep opendir putenv qsort readlink select setenv \
2434 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2435 sigvec strcasecmp strerror strftime stricmp strncasecmp \
2436 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2437 usleep utime utimes)
2439 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2440 AC_MSG_CHECKING(for st_blksize)
2442 [#include <sys/types.h>
2443 #include <sys/stat.h>],
2448 n = (int)st.st_blksize;],
2449 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2452 AC_MSG_CHECKING(whether stat() ignores a trailing slash)
2454 [#include <sys/types.h>
2455 #include <sys/stat.h>
2456 main() {struct stat st; exit(stat("configure/", &st) != 0); }],
2457 AC_MSG_RESULT(yes); AC_DEFINE(STAT_IGNORES_SLASH),
2458 AC_MSG_RESULT(no), AC_MSG_ERROR(failed to compile test program))
2460 dnl Link with iconv for charset translation, if not found without library.
2461 dnl check for iconv() requires including iconv.h
2462 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2463 dnl has been installed.
2464 AC_MSG_CHECKING(for iconv_open())
2466 LIBS="$LIBS -liconv"
2471 ], [iconv_open("fr", "to");],
2472 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2478 ], [iconv_open("fr", "to");],
2479 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2483 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2485 #ifdef HAVE_LANGINFO_H
2486 # include <langinfo.h>
2488 ], [char *cs = nl_langinfo(CODESET);],
2489 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2492 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2493 dnl when -lacl works, also try to use -lattr (required for Debian).
2494 AC_MSG_CHECKING(--disable-acl argument)
2496 [ --disable-acl Don't check for ACL support.],
2497 , [enable_acl="yes"])
2498 if test "$enable_acl" = "yes"; then
2500 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2501 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2502 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2504 AC_MSG_CHECKING(for POSIX ACL support)
2506 #include <sys/types.h>
2507 #ifdef HAVE_SYS_ACL_H
2508 # include <sys/acl.h>
2510 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2511 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2513 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2516 AC_MSG_CHECKING(for Solaris ACL support)
2518 #ifdef HAVE_SYS_ACL_H
2519 # include <sys/acl.h>
2520 #endif], [acl("foo", GETACLCNT, 0, NULL);
2522 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2525 AC_MSG_CHECKING(for AIX ACL support)
2527 #ifdef HAVE_SYS_ACL_H
2528 # include <sys/acl.h>
2530 #ifdef HAVE_SYS_ACCESS_H
2531 # include <sys/access.h>
2535 #include <sys/stat.h>
2538 struct acl *aclent;], [aclsize = sizeof(struct acl);
2539 aclent = (void *)malloc(aclsize);
2540 statacl("foo", STX_NORMAL, aclent, aclsize);
2542 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2548 AC_MSG_CHECKING(--disable-gpm argument)
2550 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2553 if test "$enable_gpm" = "yes"; then
2555 dnl Checking if gpm support can be compiled
2556 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2557 [olibs="$LIBS" ; LIBS="-lgpm"]
2560 #include <linux/keyboard.h>],
2561 [Gpm_GetLibVersion(NULL);],
2562 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2563 dnl FEAT_MOUSE_GPM if mouse support is included
2564 [vi_cv_have_gpm=yes],
2565 [vi_cv_have_gpm=no])
2568 if test $vi_cv_have_gpm = yes; then
2576 dnl rename needs to be checked separately to work on Nextstep with cc
2577 AC_MSG_CHECKING(for rename)
2578 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2579 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2582 dnl sysctl() may exist but not the arguments we use
2583 AC_MSG_CHECKING(for sysctl)
2585 [#include <sys/types.h>
2586 #include <sys/sysctl.h>],
2591 mib[1] = HW_USERMEM;
2593 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2595 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2596 AC_MSG_RESULT(not usable))
2598 dnl sysinfo() may exist but not be Linux compatible
2599 AC_MSG_CHECKING(for sysinfo)
2601 [#include <sys/types.h>
2602 #include <sys/sysinfo.h>],
2603 [ struct sysinfo sinfo;
2606 (void)sysinfo(&sinfo);
2609 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2610 AC_MSG_RESULT(not usable))
2612 dnl struct sysinfo may have the mem_unit field or not
2613 AC_MSG_CHECKING(for sysinfo.mem_unit)
2615 [#include <sys/types.h>
2616 #include <sys/sysinfo.h>],
2617 [ struct sysinfo sinfo;
2620 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2623 dnl sysconf() may exist but not support what we want to use
2624 AC_MSG_CHECKING(for sysconf)
2626 [#include <unistd.h>],
2627 [ (void)sysconf(_SC_PAGESIZE);
2628 (void)sysconf(_SC_PHYS_PAGES);
2630 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2631 AC_MSG_RESULT(not usable))
2633 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2634 dnl be printed with "%d", and avoids a warning for cross-compiling.
2636 AC_MSG_CHECKING(size of int)
2637 AC_CACHE_VAL(ac_cv_sizeof_int,
2638 [AC_TRY_RUN([#include <stdio.h>
2641 FILE *f=fopen("conftestval", "w");
2643 fprintf(f, "%d\n", (int)sizeof(int));
2646 ac_cv_sizeof_int=`cat conftestval`,
2648 AC_MSG_ERROR(failed to compile test program))])
2649 AC_MSG_RESULT($ac_cv_sizeof_int)
2650 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2652 AC_MSG_CHECKING(whether memmove/bcopy/memcpy handle overlaps)
2656 strcpy(buf, "abcdefghi");
2657 mch_memmove(buf, buf + 2, 3);
2658 if (strncmp(buf, "ababcf", 6))
2660 strcpy(buf, "abcdefghi");
2661 mch_memmove(buf + 2, buf, 3);
2662 if (strncmp(buf, "cdedef", 6))
2664 exit(0); /* libc version works properly. */
2667 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2668 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2670 AC_TRY_RUN([#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog],
2671 AC_DEFINE(USEMEMMOVE) AC_MSG_RESULT(memmove does),
2672 AC_TRY_RUN([#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog],
2673 AC_DEFINE(USEBCOPY) AC_MSG_RESULT(bcopy does),
2674 AC_TRY_RUN([#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog],
2675 AC_DEFINE(USEMEMCPY) AC_MSG_RESULT(memcpy does), AC_MSG_RESULT(no),
2676 AC_MSG_ERROR(failed to compile test program)),
2677 AC_MSG_ERROR(failed to compile test program)),
2678 AC_MSG_ERROR(failed to compile test program))
2680 dnl Check for multibyte locale functions
2681 dnl Find out if _Xsetlocale() is supported by libX11.
2682 dnl Check if X_LOCALE should be defined.
2684 if test "$enable_multibyte" = "yes"; then
2686 ldflags_save=$LDFLAGS
2687 if test -n "$x_includes" ; then
2688 CFLAGS="$CFLAGS -I$x_includes"
2689 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2690 AC_MSG_CHECKING(whether X_LOCALE needed)
2691 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2692 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2693 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2697 LDFLAGS=$ldflags_save
2700 dnl Link with xpg4, it is said to make Korean locale working
2701 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2703 dnl Check how we can run ctags
2704 dnl --version for Exuberant ctags (preferred)
2705 dnl Add --fields=+S to get function signatures for omni completion.
2706 dnl -t for typedefs (many ctags have this)
2707 dnl -s for static functions (Elvis ctags only?)
2708 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2709 dnl -i+m to test for older Exuberant ctags
2710 AC_MSG_CHECKING(how to create tags)
2711 test -f tags && mv tags tags.save
2712 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
2713 TAGPRG="ctags -I INIT+ --fields=+S"
2715 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2716 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2717 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2718 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2719 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2720 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2721 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2723 test -f tags.save && mv tags.save tags
2724 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2726 dnl Check how we can run man with a section number
2727 AC_MSG_CHECKING(how to run man with a section nr)
2729 (eval man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
2730 AC_MSG_RESULT($MANDEF)
2731 if test "$MANDEF" = "man -s"; then
2735 dnl Check if gettext() is working and if it needs -lintl
2736 AC_MSG_CHECKING(--disable-nls argument)
2738 [ --disable-nls Don't support NLS (gettext()).], ,
2741 if test "$enable_nls" = "yes"; then
2744 INSTALL_LANGS=install-languages
2745 AC_SUBST(INSTALL_LANGS)
2746 INSTALL_TOOL_LANGS=install-tool-languages
2747 AC_SUBST(INSTALL_TOOL_LANGS)
2749 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
2750 AC_MSG_CHECKING([for NLS])
2751 if test -f po/Makefile; then
2753 if test -n "$MSGFMT"; then
2755 [#include <libintl.h>],
2757 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
2761 [#include <libintl.h>],
2763 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
2764 AC_MSG_RESULT([gettext() doesn't work]);
2767 AC_MSG_RESULT([msgfmt not found - disabled]);
2769 if test $have_gettext = "yes"; then
2770 AC_DEFINE(HAVE_GETTEXT)
2773 dnl this was added in GNU gettext 0.10.36
2774 AC_CHECK_FUNCS(bind_textdomain_codeset)
2775 dnl _nl_msg_cat_cntr is required for GNU gettext
2776 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
2778 [#include <libintl.h>
2779 extern int _nl_msg_cat_cntr;],
2780 [++_nl_msg_cat_cntr;],
2781 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
2782 AC_MSG_RESULT([no]))
2785 AC_MSG_RESULT([no "po/Makefile" - disabled]);
2791 dnl Check for dynamic linking loader
2792 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
2793 if test x${DLL} = xdlfcn.h; then
2794 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
2795 AC_MSG_CHECKING([for dlopen()])
2797 extern void* dlopen();
2801 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2803 AC_MSG_CHECKING([for dlopen() in -ldl])
2807 extern void* dlopen();
2811 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2814 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
2816 AC_MSG_CHECKING([for dlsym()])
2818 extern void* dlsym();
2822 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2824 AC_MSG_CHECKING([for dlsym() in -ldl])
2828 extern void* dlsym();
2832 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2835 elif test x${DLL} = xdl.h; then
2836 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
2837 AC_MSG_CHECKING([for shl_load()])
2839 extern void* shl_load();
2843 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2845 AC_MSG_CHECKING([for shl_load() in -ldld])
2849 extern void* shl_load();
2853 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2857 AC_CHECK_HEADERS(setjmp.h)
2859 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
2860 dnl -ldl must come after DynaLoader.a
2861 if echo $LIBS | grep -e '-ldl' >/dev/null; then
2862 LIBS=`echo $LIBS | sed s/-ldl//`
2863 PERL_LIBS="$PERL_LIBS -ldl"
2867 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
2868 && test "x$GUITYPE" != "xCARBONGUI"; then
2869 AC_MSG_CHECKING(whether we need -framework Carbon)
2870 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
2871 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
2872 || test "x$features" = "xhuge"; then
2873 LIBS="$LIBS -framework Carbon"
2879 if test "x$MACARCH" = "xboth"; then
2880 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
2883 dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
2884 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
2885 dnl But only when making dependencies, cproto and lint don't take "-isystem".
2886 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
2887 dnl the number before the version number.
2888 AC_MSG_CHECKING(for GCC 3 or later)
2889 DEPEND_CFLAGS_FILTER=
2890 if test "$GCC" = yes; then
2891 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
2892 if test "$gccmajor" -gt "2"; then
2893 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
2896 if test "$DEPEND_CFLAGS_FILTER" = ""; then
2901 AC_SUBST(DEPEND_CFLAGS_FILTER)
2903 dnl write output files
2904 AC_OUTPUT(auto/config.mk:config.mk.in)
2906 dnl vim: set sw=2 tw=78 fo+=l: