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/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
799 dnl For Mac OS X 10.3, use the OS-provided framework location
800 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
803 for try in $tclinc; do
804 if test -f "$try/tcl.h"; then
805 AC_MSG_RESULT($try/tcl.h)
810 if test -z "$TCL_INC"; then
811 AC_MSG_RESULT(<not found>)
814 if test -z "$SKIP_TCL"; then
815 AC_MSG_CHECKING(for location of tclConfig.sh script)
816 if test "x$MACOSX" != "xyes"; then
817 tclcnf=`echo $tclinc | sed s/include/lib/g`
818 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
820 dnl For Mac OS X 10.3, use the OS-provided framework location
821 tclcnf="/System/Library/Frameworks/Tcl.framework"
823 for try in $tclcnf; do
824 if test -f $try/tclConfig.sh; then
825 AC_MSG_RESULT($try/tclConfig.sh)
827 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
828 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
829 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
830 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
831 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'`
835 if test -z "$TCL_LIBS"; then
836 AC_MSG_RESULT(<not found>)
837 AC_MSG_CHECKING(for Tcl library by myself)
838 tcllib=`echo $tclinc | sed s/include/lib/g`
839 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
840 for ext in .so .a ; do
841 for ver in "" $tclver ; do
842 for try in $tcllib ; do
844 if test -f $try/lib$trylib ; then
845 AC_MSG_RESULT($try/lib$trylib)
846 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
847 if test "`(uname) 2>/dev/null`" = SunOS &&
848 uname -r | grep '^5' >/dev/null; then
849 TCL_LIBS="$TCL_LIBS -R $try"
856 if test -z "$TCL_LIBS"; then
857 AC_MSG_RESULT(<not found>)
861 if test -z "$SKIP_TCL"; then
864 TCL_OBJ=objects/if_tcl.o
866 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
870 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
880 AC_MSG_CHECKING(--enable-rubyinterp argument)
881 AC_ARG_ENABLE(rubyinterp,
882 [ --enable-rubyinterp Include Ruby interpreter.], ,
883 [enable_rubyinterp="no"])
884 AC_MSG_RESULT($enable_rubyinterp)
885 if test "$enable_rubyinterp" = "yes"; then
886 AC_SUBST(vi_cv_path_ruby)
887 AC_PATH_PROG(vi_cv_path_ruby, ruby)
888 if test "X$vi_cv_path_ruby" != "X"; then
889 AC_MSG_CHECKING(Ruby version)
890 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
892 AC_MSG_CHECKING(Ruby header files)
893 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
894 if test "X$rubyhdrdir" != "X"; then
895 AC_MSG_RESULT($rubyhdrdir)
896 RUBY_CFLAGS="-I$rubyhdrdir"
897 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
898 if test "X$rubylibs" != "X"; then
899 RUBY_LIBS="$rubylibs"
901 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
902 if test -f "$rubyhdrdir/$librubyarg"; then
903 librubyarg="$rubyhdrdir/$librubyarg"
905 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
906 if test -f "$rubylibdir/$librubyarg"; then
907 librubyarg="$rubylibdir/$librubyarg"
908 elif test "$librubyarg" = "libruby.a"; then
909 dnl required on Mac OS 10.3 where libruby.a doesn't exist
912 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
916 if test "X$librubyarg" != "X"; then
917 RUBY_LIBS="$librubyarg $RUBY_LIBS"
919 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
920 if test "X$rubyldflags" != "X"; then
921 LDFLAGS="$rubyldflags $LDFLAGS"
924 RUBY_OBJ="objects/if_ruby.o"
925 RUBY_PRO="if_ruby.pro"
928 AC_MSG_RESULT(not found, disabling Ruby)
931 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
938 AC_SUBST(RUBY_CFLAGS)
941 AC_MSG_CHECKING(--enable-cscope argument)
942 AC_ARG_ENABLE(cscope,
943 [ --enable-cscope Include cscope interface.], ,
944 [enable_cscope="no"])
945 AC_MSG_RESULT($enable_cscope)
946 if test "$enable_cscope" = "yes"; then
947 AC_DEFINE(FEAT_CSCOPE)
950 AC_MSG_CHECKING(--enable-workshop argument)
951 AC_ARG_ENABLE(workshop,
952 [ --enable-workshop Include Sun Visual Workshop support.], ,
953 [enable_workshop="no"])
954 AC_MSG_RESULT($enable_workshop)
955 if test "$enable_workshop" = "yes"; then
956 AC_DEFINE(FEAT_SUN_WORKSHOP)
957 WORKSHOP_SRC="workshop.c integration.c"
958 AC_SUBST(WORKSHOP_SRC)
959 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
960 AC_SUBST(WORKSHOP_OBJ)
961 if test "${enable_gui-xxx}" = xxx; then
966 AC_MSG_CHECKING(--disable-netbeans argument)
967 AC_ARG_ENABLE(netbeans,
968 [ --disable-netbeans Disable NetBeans integration support.],
969 , [enable_netbeans="yes"])
970 if test "$enable_netbeans" = "yes"; then
972 dnl On Solaris we need the socket and nsl library.
973 AC_CHECK_LIB(socket, socket)
974 AC_CHECK_LIB(nsl, gethostbyname)
975 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
982 #include <netinet/in.h>
984 #include <sys/types.h>
985 #include <sys/socket.h>
986 /* Check bitfields */
988 unsigned int initDone:1;
992 /* Check creating a socket. */
993 struct sockaddr_in server;
994 (void)socket(AF_INET, SOCK_STREAM, 0);
996 (void)gethostbyname("microsoft.com");
997 if (errno == ECONNREFUSED)
998 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1001 AC_MSG_RESULT(no); enable_netbeans="no")
1005 if test "$enable_netbeans" = "yes"; then
1006 AC_DEFINE(FEAT_NETBEANS_INTG)
1007 NETBEANS_SRC="netbeans.c"
1008 AC_SUBST(NETBEANS_SRC)
1009 NETBEANS_OBJ="objects/netbeans.o"
1010 AC_SUBST(NETBEANS_OBJ)
1013 AC_MSG_CHECKING(--enable-sniff argument)
1014 AC_ARG_ENABLE(sniff,
1015 [ --enable-sniff Include Sniff interface.], ,
1016 [enable_sniff="no"])
1017 AC_MSG_RESULT($enable_sniff)
1018 if test "$enable_sniff" = "yes"; then
1019 AC_DEFINE(FEAT_SNIFF)
1020 SNIFF_SRC="if_sniff.c"
1022 SNIFF_OBJ="objects/if_sniff.o"
1026 AC_MSG_CHECKING(--enable-multibyte argument)
1027 AC_ARG_ENABLE(multibyte,
1028 [ --enable-multibyte Include multibyte editing support.], ,
1029 [enable_multibyte="no"])
1030 AC_MSG_RESULT($enable_multibyte)
1031 if test "$enable_multibyte" = "yes"; then
1032 AC_DEFINE(FEAT_MBYTE)
1035 AC_MSG_CHECKING(--enable-hangulinput argument)
1036 AC_ARG_ENABLE(hangulinput,
1037 [ --enable-hangulinput Include Hangul input support.], ,
1038 [enable_hangulinput="no"])
1039 AC_MSG_RESULT($enable_hangulinput)
1041 AC_MSG_CHECKING(--enable-xim argument)
1043 [ --enable-xim Include XIM input support.],
1044 AC_MSG_RESULT($enable_xim),
1045 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1046 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1048 AC_MSG_CHECKING(--enable-fontset argument)
1049 AC_ARG_ENABLE(fontset,
1050 [ --enable-fontset Include X fontset output support.], ,
1051 [enable_fontset="no"])
1052 AC_MSG_RESULT($enable_fontset)
1053 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1055 test -z "$with_x" && with_x=yes
1056 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1057 if test "$with_x" = no; then
1058 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1060 dnl Do this check early, so that its failure can override user requests.
1062 AC_PATH_PROG(xmkmfpath, xmkmf)
1066 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1067 dnl be compiled with a special option.
1068 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1069 if test "$OS390Unix" = "yes"; then
1070 CFLAGS="$CFLAGS -W c,dll"
1071 LDFLAGS="$LDFLAGS -W l,dll"
1072 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1075 dnl On my HPUX system the X include dir is found, but the lib dir not.
1076 dnl This is a desparate try to fix this.
1078 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1079 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1080 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1081 X_LIBS="$X_LIBS -L$x_libraries"
1082 if test "`(uname) 2>/dev/null`" = SunOS &&
1083 uname -r | grep '^5' >/dev/null; then
1084 X_LIBS="$X_LIBS -R $x_libraries"
1088 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1089 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1090 AC_MSG_RESULT(Corrected X includes to $x_includes)
1091 X_CFLAGS="$X_CFLAGS -I$x_includes"
1094 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1095 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1096 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1097 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1098 dnl Same for "-R/usr/lib ".
1099 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1102 dnl Check if the X11 header files are correctly installed. On some systems
1103 dnl Xlib.h includes files that don't exist
1104 AC_MSG_CHECKING(if X11 header files can be found)
1106 CFLAGS="$CFLAGS $X_CFLAGS"
1107 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1109 AC_MSG_RESULT(no); no_x=yes)
1112 if test "${no_x-no}" = yes; then
1119 ac_save_LDFLAGS="$LDFLAGS"
1120 LDFLAGS="-L$x_libraries $LDFLAGS"
1122 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1123 dnl For HP-UX 10.20 it must be before -lSM -lICE
1124 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1125 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1127 dnl Some systems need -lnsl -lsocket when testing for ICE.
1128 dnl The check above doesn't do this, try here (again). Also needed to get
1129 dnl them after Xdmcp. link.sh will remove them when not needed.
1130 dnl Check for other function than above to avoid the cached value
1131 AC_CHECK_LIB(ICE, IceOpenConnection,
1132 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1134 dnl Check for -lXpm (needed for some versions of Motif)
1135 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1136 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1137 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1139 dnl Check that the X11 header files don't use implicit declarations
1140 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1142 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1143 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1145 CFLAGS="$CFLAGS -Wno-implicit-int"
1146 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1147 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1148 AC_MSG_RESULT(test failed)
1153 LDFLAGS="$ac_save_LDFLAGS"
1158 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1160 AC_MSG_CHECKING(--enable-gui argument)
1162 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
1164 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1165 dnl Do not use character classes for portability with old tools.
1166 enable_gui_canon=`echo "_$enable_gui" | \
1167 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1169 dnl Skip everything by default.
1180 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1182 case "$enable_gui_canon" in
1183 no) AC_MSG_RESULT(no GUI support)
1185 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1186 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1187 photon) AC_MSG_RESULT(Photon GUI support) ;;
1188 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1192 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1194 case "$enable_gui_canon" in
1195 no) AC_MSG_RESULT(no GUI support)
1197 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1198 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1199 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1200 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1206 case "$enable_gui_canon" in
1207 no|none) AC_MSG_RESULT(no GUI support) ;;
1208 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1216 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1218 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1221 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1224 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1228 motif) AC_MSG_RESULT(Motif GUI support)
1230 athena) AC_MSG_RESULT(Athena GUI support)
1232 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1234 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1239 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1240 AC_MSG_CHECKING(whether or not to look for GTK)
1241 AC_ARG_ENABLE(gtk-check,
1242 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1243 , enable_gtk_check="yes")
1244 AC_MSG_RESULT($enable_gtk_check)
1245 if test "x$enable_gtk_check" = "xno"; then
1251 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1252 -a "$enable_gui_canon" != "gnome2"; then
1253 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1254 AC_ARG_ENABLE(gtk2-check,
1255 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1256 , enable_gtk2_check="yes")
1257 AC_MSG_RESULT($enable_gtk2_check)
1258 if test "x$enable_gtk2_check" = "xno"; then
1263 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1264 -a "$enable_gui_canon" != "gnome2"; then
1265 AC_MSG_CHECKING(whether or not to look for GNOME)
1266 AC_ARG_ENABLE(gnome-check,
1267 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1268 , enable_gnome_check="no")
1269 AC_MSG_RESULT($enable_gnome_check)
1270 if test "x$enable_gnome_check" = "xno"; then
1275 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1276 AC_MSG_CHECKING(whether or not to look for Motif)
1277 AC_ARG_ENABLE(motif-check,
1278 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1279 , enable_motif_check="yes")
1280 AC_MSG_RESULT($enable_motif_check)
1281 if test "x$enable_motif_check" = "xno"; then
1286 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1287 AC_MSG_CHECKING(whether or not to look for Athena)
1288 AC_ARG_ENABLE(athena-check,
1289 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1290 , enable_athena_check="yes")
1291 AC_MSG_RESULT($enable_athena_check)
1292 if test "x$enable_athena_check" = "xno"; then
1297 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1298 AC_MSG_CHECKING(whether or not to look for neXtaw)
1299 AC_ARG_ENABLE(nextaw-check,
1300 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1301 , enable_nextaw_check="yes")
1302 AC_MSG_RESULT($enable_nextaw_check);
1303 if test "x$enable_nextaw_check" = "xno"; then
1308 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1309 AC_MSG_CHECKING(whether or not to look for Carbon)
1310 AC_ARG_ENABLE(carbon-check,
1311 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1312 , enable_carbon_check="yes")
1313 AC_MSG_RESULT($enable_carbon_check);
1314 if test "x$enable_carbon_check" = "xno"; then
1320 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1321 AC_MSG_CHECKING(for Carbon GUI)
1322 dnl already did the check, just give the message
1325 if test "$VIMNAME" = "vim"; then
1329 dnl Default install directory is not /usr/local
1330 if test x$prefix = xNONE; then
1331 prefix=/Applications
1334 dnl Sorry for the hard coded default
1335 datadir='${prefix}/Vim.app/Contents/Resources'
1337 dnl skip everything else
1349 dnl Get the cflags and libraries from the gtk-config script
1352 dnl define an autoconf function to check for a specified version of GTK, and
1353 dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1355 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1356 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1358 AC_DEFUN(AM_PATH_GTK,
1360 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1362 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1363 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1365 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1366 && $PKG_CONFIG --exists gtk+-2.0; then
1368 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1369 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1370 dnl something like that.
1371 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1372 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1373 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1374 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1375 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1376 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1377 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1378 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1379 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1381 elif test "X$GTK_CONFIG" != "Xno"; then
1383 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1385 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1386 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1387 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1388 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1389 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1390 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1391 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1397 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1399 ac_save_CFLAGS="$CFLAGS"
1400 ac_save_LIBS="$LIBS"
1401 CFLAGS="$CFLAGS $GTK_CFLAGS"
1402 LIBS="$LIBS $GTK_LIBS"
1405 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1406 dnl checks the results of gtk-config to some extent
1410 #include <gtk/gtk.h>
1416 int major, minor, micro;
1419 system ("touch conf.gtktest");
1421 /* HP/UX 9 (%@#!) writes to sscanf strings */
1422 tmp_version = g_strdup("$min_gtk_version");
1423 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
1424 printf("%s, bad version string\n", "$min_gtk_version");
1428 if ((gtk_major_version > major) ||
1429 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1430 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1431 (gtk_micro_version >= micro)))
1437 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1438 CFLAGS="$ac_save_CFLAGS"
1439 LIBS="$ac_save_LIBS"
1442 if test "x$no_gtk" = x ; then
1443 if test "x$enable_gtktest" = "xyes"; then
1444 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1446 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1448 ifelse([$2], , :, [$2])
1454 ifelse([$3], , :, [$3])
1461 ifelse([$3], , :, [$3])
1463 AC_SUBST(GTK_CFLAGS)
1468 dnl ---------------------------------------------------------------------------
1470 dnl ---------------------------------------------------------------------------
1471 AC_DEFUN([GNOME_INIT_HOOK],
1473 AC_SUBST(GNOME_LIBS)
1474 AC_SUBST(GNOME_LIBDIR)
1475 AC_SUBST(GNOME_INCLUDEDIR)
1477 AC_ARG_WITH(gnome-includes,
1478 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1479 [CFLAGS="$CFLAGS -I$withval"]
1482 AC_ARG_WITH(gnome-libs,
1483 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1484 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1488 [ --with-gnome Specify prefix for GNOME files],
1489 if test x$withval = xyes; then
1491 ifelse([$1], [], :, [$1])
1493 if test "x$withval" = xno; then
1497 LDFLAGS="$LDFLAGS -L$withval/lib"
1498 CFLAGS="$CFLAGS -I$withval/include"
1499 gnome_prefix=$withval/lib
1504 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1506 AC_MSG_CHECKING(for libgnomeui-2.0)
1507 if $PKG_CONFIG --exists libgnomeui-2.0; then
1509 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1510 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1511 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1513 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1514 dnl This might not be the right way but it works for me...
1515 AC_MSG_CHECKING(for FreeBSD)
1516 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1517 AC_MSG_RESULT(yes, adding -pthread)
1518 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1519 GNOME_LIBS="$GNOME_LIBS -pthread"
1525 AC_MSG_RESULT(not found)
1526 if test "x$2" = xfail; then
1527 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1531 elif test "x$want_gnome" = xyes; then
1533 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1534 if test "$GNOME_CONFIG" = "no"; then
1535 no_gnome_config="yes"
1537 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1538 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1540 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1541 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1542 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1546 no_gnome_config="yes"
1550 if test x$exec_prefix = xNONE; then
1551 if test x$prefix = xNONE; then
1552 gnome_prefix=$ac_default_prefix/lib
1554 gnome_prefix=$prefix/lib
1557 gnome_prefix=`eval echo \`echo $libdir\``
1560 if test "$no_gnome_config" = "yes"; then
1561 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1562 if test -f $gnome_prefix/gnomeConf.sh; then
1563 AC_MSG_RESULT(found)
1564 echo "loading gnome configuration from" \
1565 "$gnome_prefix/gnomeConf.sh"
1566 . $gnome_prefix/gnomeConf.sh
1569 AC_MSG_RESULT(not found)
1570 if test x$2 = xfail; then
1571 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1579 AC_DEFUN([GNOME_INIT],[
1580 GNOME_INIT_HOOK([],fail)
1584 dnl ---------------------------------------------------------------------------
1585 dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1586 dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1587 dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1588 dnl ---------------------------------------------------------------------------
1589 if test -z "$SKIP_GTK"; then
1591 AC_MSG_CHECKING(--with-gtk-prefix argument)
1592 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1593 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1594 gtk_config_prefix=""; AC_MSG_RESULT(no))
1596 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1597 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1598 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1599 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1601 AC_MSG_CHECKING(--disable-gtktest argument)
1602 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1603 , enable_gtktest=yes)
1604 if test "x$enable_gtktest" = "xyes" ; then
1605 AC_MSG_RESULT(gtk test enabled)
1607 AC_MSG_RESULT(gtk test disabled)
1610 if test "x$gtk_config_prefix" != "x" ; then
1611 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1612 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1614 if test "x$gtk_config_exec_prefix" != "x" ; then
1615 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1616 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1618 if test "X$GTK_CONFIG" = "X"; then
1619 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1620 if test "X$GTK_CONFIG" = "Xno"; then
1621 dnl Some distributions call it gtk12-config, annoying!
1622 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1623 GTK_CONFIG="$GTK12_CONFIG"
1626 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1628 if test "X$PKG_CONFIG" = "X"; then
1629 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1632 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1633 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1634 dnl problems (bold fonts, --remote doesn't work).
1635 if test "X$SKIP_GTK2" != "XYES"; then
1637 [GUI_LIB_LOC="$GTK_LIBDIR"
1638 GTK_LIBNAME="$GTK_LIBS"
1639 GUI_INC_LOC="$GTK_CFLAGS"], )
1640 if test "x$GTK_CFLAGS" != "x"; then
1645 AC_SUBST(GTK_LIBNAME)
1649 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1650 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1651 dnl were test versions.
1652 if test "x$GUITYPE" != "xGTK"; then
1655 [GTK_LIBNAME="$GTK_LIBS"
1656 GUI_INC_LOC="$GTK_CFLAGS"], )
1657 if test "x$GTK_CFLAGS" != "x"; then
1662 AC_SUBST(GTK_LIBNAME)
1666 dnl Give a warning if GTK is older than 1.2.3
1667 if test "x$GUITYPE" = "xGTK"; then
1668 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1669 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1670 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1673 if test "0$gtk_major_version" -ge 2; then
1674 AC_DEFINE(HAVE_GTK2)
1675 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1676 || test "0$gtk_minor_version" -ge 2 \
1677 || test "0$gtk_major_version" -gt 2; then
1678 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1682 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1684 if test -z "$SKIP_GNOME"; then
1686 GNOME_INIT_HOOK([have_gnome=yes])
1687 if test x$have_gnome = xyes ; then
1688 AC_DEFINE(FEAT_GUI_GNOME)
1689 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1690 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1699 dnl Check for Motif include files location.
1700 dnl The LAST one found is used, this makes the highest version to be used,
1701 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1703 if test -z "$SKIP_MOTIF"; then
1704 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"
1705 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1706 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1708 AC_MSG_CHECKING(for location of Motif GUI includes)
1709 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1711 for try in $gui_includes; do
1712 if test -f "$try/Xm/Xm.h"; then
1716 if test -n "$GUI_INC_LOC"; then
1717 if test "$GUI_INC_LOC" = /usr/include; then
1719 AC_MSG_RESULT(in default path)
1721 AC_MSG_RESULT($GUI_INC_LOC)
1724 AC_MSG_RESULT(<not found>)
1729 dnl Check for Motif library files location. In the same order as the include
1730 dnl files, to avoid a mixup if several versions are present
1732 if test -z "$SKIP_MOTIF"; then
1733 AC_MSG_CHECKING(--with-motif-lib argument)
1734 AC_ARG_WITH(motif-lib,
1735 [ --with-motif-lib=STRING Library for Motif ],
1736 [ MOTIF_LIBNAME="${withval}" ] )
1738 if test -n "$MOTIF_LIBNAME"; then
1739 AC_MSG_RESULT($MOTIF_LIBNAME)
1744 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1745 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1747 AC_MSG_CHECKING(for location of Motif GUI libs)
1748 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"
1750 for try in $gui_libs; do
1751 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1752 if test -f "$libtry"; then
1757 if test -n "$GUI_LIB_LOC"; then
1758 dnl Remove /usr/lib, it causes trouble on some systems
1759 if test "$GUI_LIB_LOC" = /usr/lib; then
1761 AC_MSG_RESULT(in default path)
1763 if test -n "$GUI_LIB_LOC"; then
1764 AC_MSG_RESULT($GUI_LIB_LOC)
1765 if test "`(uname) 2>/dev/null`" = SunOS &&
1766 uname -r | grep '^5' >/dev/null; then
1767 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1773 AC_MSG_RESULT(<not found>)
1779 if test -z "$SKIP_MOTIF"; then
1783 AC_SUBST(MOTIF_LIBNAME)
1786 dnl Check if the Athena files can be found
1790 if test -z "$SKIP_ATHENA"; then
1791 AC_MSG_CHECKING(if Athena header files can be found)
1793 CFLAGS="$CFLAGS $X_CFLAGS"
1795 #include <X11/Intrinsic.h>
1796 #include <X11/Xaw/Paned.h>], ,
1798 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1802 if test -z "$SKIP_ATHENA"; then
1806 if test -z "$SKIP_NEXTAW"; then
1807 AC_MSG_CHECKING(if neXtaw header files can be found)
1809 CFLAGS="$CFLAGS $X_CFLAGS"
1811 #include <X11/Intrinsic.h>
1812 #include <X11/neXtaw/Paned.h>], ,
1814 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1818 if test -z "$SKIP_NEXTAW"; then
1822 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1823 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1824 dnl Avoid adding it when it twice
1825 if test -n "$GUI_INC_LOC"; then
1826 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1828 if test -n "$GUI_LIB_LOC"; then
1829 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1832 dnl Check for -lXext and then for -lXmu
1833 ldflags_save=$LDFLAGS
1834 LDFLAGS="$X_LIBS $LDFLAGS"
1835 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1836 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1837 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1838 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1839 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1840 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1841 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1842 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1843 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1844 if test -z "$SKIP_MOTIF"; then
1845 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1846 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1848 LDFLAGS=$ldflags_save
1850 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1851 AC_MSG_CHECKING(for extra X11 defines)
1854 if mkdir conftestdir; then
1856 cat > Imakefile <<'EOF'
1858 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1860 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1861 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1866 if test -z "$NARROW_PROTO"; then
1869 AC_MSG_RESULT($NARROW_PROTO)
1871 AC_SUBST(NARROW_PROTO)
1874 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1875 dnl use the X11 include path
1876 if test "$enable_xsmp" = "yes"; then
1877 cppflags_save=$CPPFLAGS
1878 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1879 AC_CHECK_HEADERS(X11/SM/SMlib.h)
1880 CPPFLAGS=$cppflags_save
1884 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1885 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1886 cppflags_save=$CPPFLAGS
1887 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1888 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1890 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1891 if test ! "$enable_xim" = "no"; then
1892 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1893 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1895 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1897 CPPFLAGS=$cppflags_save
1899 dnl automatically enable XIM when hangul input isn't enabled
1900 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1901 -a "x$GUITYPE" != "xNONE" ; then
1902 AC_MSG_RESULT(X GUI selected; xim has been enabled)
1907 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1908 cppflags_save=$CPPFLAGS
1909 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1910 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1911 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1913 #include <X11/Intrinsic.h>
1914 #include <X11/Xmu/Editres.h>],
1917 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1919 CPPFLAGS=$cppflags_save
1922 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1923 if test -z "$SKIP_MOTIF"; then
1924 cppflags_save=$CPPFLAGS
1925 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1926 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
1927 Xm/UnhighlightT.h Xm/Notebook.h)
1929 if test $ac_cv_header_Xm_XpmP_h = yes; then
1930 dnl Solaris uses XpmAttributes_21, very annoying.
1931 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1932 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
1933 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
1934 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1937 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
1939 CPPFLAGS=$cppflags_save
1942 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
1943 AC_MSG_RESULT(no GUI selected; xim has been disabled)
1946 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
1947 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
1950 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
1951 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
1955 if test -z "$SKIP_PHOTON"; then
1959 AC_SUBST(GUI_INC_LOC)
1960 AC_SUBST(GUI_LIB_LOC)
1962 AC_SUBST(GUI_X_LIBS)
1964 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
1965 AC_MSG_ERROR([cannot use workshop without Motif])
1968 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
1969 if test "$enable_xim" = "yes"; then
1972 if test "$enable_fontset" = "yes"; then
1973 AC_DEFINE(FEAT_XFONTSET)
1977 dnl ---------------------------------------------------------------------------
1978 dnl end of GUI-checking
1979 dnl ---------------------------------------------------------------------------
1982 dnl Only really enable hangul input when GUI and XFONTSET are available
1983 if test "$enable_hangulinput" = "yes"; then
1984 if test "x$GUITYPE" = "xNONE"; then
1985 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
1986 enable_hangulinput=no
1988 AC_DEFINE(FEAT_HANGULIN)
1989 HANGULIN_SRC=hangulin.c
1990 AC_SUBST(HANGULIN_SRC)
1991 HANGULIN_OBJ=objects/hangulin.o
1992 AC_SUBST(HANGULIN_OBJ)
1996 dnl Checks for libraries and include files.
1998 AC_MSG_CHECKING(quality of toupper)
1999 AC_TRY_RUN([#include <ctype.h>
2000 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }],
2001 AC_DEFINE(BROKEN_TOUPPER) AC_MSG_RESULT(bad),
2002 AC_MSG_RESULT(good), AC_MSG_ERROR(failed to compile test program))
2004 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2005 AC_TRY_COMPILE(, [printf("(" __DATE__ " " __TIME__ ")");],
2006 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2009 dnl Checks for header files.
2010 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2011 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2012 if test "$HAS_ELF" = 1; then
2013 AC_CHECK_LIB(elf, main)
2018 dnl check for standard headers, we don't use this in Vim but other stuff
2019 dnl in autoconf needs it
2023 dnl If sys/wait.h is not found it might still exist but not be POSIX
2024 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2025 if test $ac_cv_header_sys_wait_h = no; then
2026 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2027 AC_TRY_COMPILE([#include <sys/wait.h>],
2028 [union wait xx, yy; xx = yy],
2030 AC_DEFINE(HAVE_SYS_WAIT_H)
2031 AC_DEFINE(HAVE_UNION_WAIT),
2035 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2036 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2037 iconv.h langinfo.h unistd.h stropts.h errno.h \
2038 sys/resource.h sys/systeminfo.h locale.h \
2039 sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
2040 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2041 libgen.h util/debug.h util/msg18n.h frame.h \
2042 sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
2044 dnl pthread_np.h may exist but can only be used after including pthread.h
2045 AC_MSG_CHECKING([for pthread_np.h])
2047 #include <pthread.h>
2048 #include <pthread_np.h>],
2051 AC_DEFINE(HAVE_PTHREAD_NP_H),
2054 AC_CHECK_HEADERS(strings.h)
2055 if test "x$MACOSX" = "xyes"; then
2056 dnl The strings.h file on OS/X contains a warning and nothing useful.
2057 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2060 dnl Check if strings.h and string.h can both be included when defined.
2061 AC_MSG_CHECKING([if strings.h can be included after string.h])
2062 cppflags_save=$CPPFLAGS
2063 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2065 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2066 # define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2067 /* but don't do it on AIX 5.1 (Uribarri) */
2070 # include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2072 #ifdef HAVE_STRING_H
2073 # include <string.h>
2075 #if defined(HAVE_STRINGS_H)
2076 # include <strings.h>
2080 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2082 CPPFLAGS=$cppflags_save
2085 dnl Checks for typedefs, structures, and compiler characteristics.
2086 AC_PROG_GCC_TRADITIONAL
2094 AC_CHECK_TYPE(ino_t, long)
2095 AC_CHECK_TYPE(dev_t, unsigned)
2097 AC_MSG_CHECKING(for rlim_t)
2098 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2099 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2102 changequote(<<,>>)dnl
2103 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2106 #include <sys/types.h>
2111 #ifdef HAVE_SYS_RESOURCE_H
2112 #include <sys/resource.h>
2114 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2115 AC_MSG_RESULT($ac_cv_type_rlim_t)
2117 if test $ac_cv_type_rlim_t = no; then
2118 cat >> confdefs.h <<\EOF
2119 #define rlim_t unsigned long
2123 AC_MSG_CHECKING(for stack_t)
2124 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2125 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2127 AC_EGREP_CPP(stack_t,
2129 #include <sys/types.h>
2135 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2136 AC_MSG_RESULT($ac_cv_type_stack_t)
2138 if test $ac_cv_type_stack_t = no; then
2139 cat >> confdefs.h <<\EOF
2140 #define stack_t struct sigaltstack
2144 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2145 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2147 #include <sys/types.h>
2153 #include "confdefs.h"
2154 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2155 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2159 AC_MSG_CHECKING(--with-tlib argument)
2160 AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2161 if test -n "$with_tlib"; then
2162 AC_MSG_RESULT($with_tlib)
2163 LIBS="$LIBS -l$with_tlib"
2164 AC_MSG_CHECKING(for linking with $with_tlib library)
2165 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2166 dnl Need to check for tgetent() below.
2169 AC_MSG_RESULT([empty: automatic terminal library selection])
2170 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2171 dnl curses, because curses is much slower.
2172 dnl Newer versions of ncurses are preferred over anything.
2173 dnl Older versions of ncurses have bugs, get a new one!
2174 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
2175 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
2176 case "`uname -s 2>/dev/null`" in
2177 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
2178 *) tlibs="ncurses termlib termcap curses";;
2180 for libname in $tlibs; do
2181 AC_CHECK_LIB(${libname}, tgetent,,)
2182 if test "x$olibs" != "x$LIBS"; then
2183 dnl It's possible that a library is found but it doesn't work
2184 dnl e.g., shared library that cannot be found
2185 dnl compile and run a test program to be sure
2187 #ifdef HAVE_TERMCAP_H
2188 # include <termcap.h>
2190 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2191 res="OK", res="FAIL", res="FAIL")
2192 if test "$res" = "OK"; then
2195 AC_MSG_RESULT($libname library is not usable)
2199 if test "x$olibs" = "x$LIBS"; then
2200 AC_MSG_RESULT(no terminal library found)
2204 if test "x$olibs" = "x$LIBS"; then
2205 AC_MSG_CHECKING([for tgetent()])
2207 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2209 AC_MSG_ERROR([NOT FOUND!
2210 You need to install a terminal library; for example ncurses.
2211 Or specify the name of the library with --with-tlib.]))
2214 AC_MSG_CHECKING(whether we talk terminfo)
2216 #ifdef HAVE_TERMCAP_H
2217 # include <termcap.h>
2220 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }],
2221 AC_MSG_RESULT([no -- we are in termcap land]),
2222 AC_MSG_RESULT([yes -- terminfo spoken here]); AC_DEFINE(TERMINFO),
2223 AC_MSG_ERROR(failed to compile test program.))
2225 if test "x$olibs" != "x$LIBS"; then
2226 AC_MSG_CHECKING(what tgetent() returns for an unknown terminal)
2228 #ifdef HAVE_TERMCAP_H
2229 # include <termcap.h>
2232 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }],
2233 AC_MSG_RESULT(zero); AC_DEFINE(TGETENT_ZERO_ERR, 0),
2234 AC_MSG_RESULT(non-zero),
2235 AC_MSG_ERROR(failed to compile test program.))
2238 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2240 #ifdef HAVE_TERMCAP_H
2241 # include <termcap.h>
2243 ], [ospeed = 20000],
2244 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2246 AC_MSG_CHECKING(whether ospeed can be extern)
2248 #ifdef HAVE_TERMCAP_H
2249 # include <termcap.h>
2251 extern short ospeed;
2252 ], [ospeed = 20000],
2253 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2257 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2259 #ifdef HAVE_TERMCAP_H
2260 # include <termcap.h>
2262 ], [if (UP == 0 && BC == 0) PC = 1],
2263 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2265 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2267 #ifdef HAVE_TERMCAP_H
2268 # include <termcap.h>
2270 extern char *UP, *BC, PC;
2271 ], [if (UP == 0 && BC == 0) PC = 1],
2272 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2276 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2278 #ifdef HAVE_TERMCAP_H
2279 # include <termcap.h>
2281 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2282 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2285 dnl On some SCO machines sys/select redefines struct timeval
2286 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2288 #include <sys/types.h>
2289 #include <sys/time.h>
2290 #include <sys/select.h>], ,
2292 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2295 dnl AC_DECL_SYS_SIGLIST
2297 dnl Checks for pty.c (copied from screen) ==========================
2298 AC_MSG_CHECKING(for /dev/ptc)
2299 if test -r /dev/ptc; then
2300 AC_DEFINE(HAVE_DEV_PTC)
2306 AC_MSG_CHECKING(for SVR4 ptys)
2307 if test -c /dev/ptmx ; then
2308 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2309 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2315 AC_MSG_CHECKING(for ptyranges)
2316 if test -d /dev/ptym ; then
2326 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2327 dnl if test -c /dev/ptyp19; then
2328 dnl ptys=`echo /dev/ptyp??`
2330 dnl ptys=`echo $pdir/pty??`
2332 if test "$ptys" != "$pdir/pty??" ; then
2333 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2334 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2335 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2336 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2337 AC_MSG_RESULT([$p0 / $p1])
2339 AC_MSG_RESULT([don't know])
2342 dnl **** pty mode/group handling ****
2344 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2345 AC_MSG_CHECKING(default tty permissions/group)
2348 #include <sys/types.h>
2349 #include <sys/stat.h>
2358 if (!(x = ttyname(0))) exit(1);
2359 if (stat(x, &sb)) exit(1);
2361 if (om & 002) exit(0);
2362 m = system("mesg y");
2363 if (m == -1 || m == 127) exit(1);
2364 if (stat(x, &sb)) exit(1);
2366 if (chmod(x, om)) exit(1);
2367 if (m & 002) exit(0);
2368 if (sb.st_gid == getgid()) exit(1);
2369 if (!(fp=fopen("conftest_grp", "w")))
2371 fprintf(fp, "%d\n", sb.st_gid);
2376 if test -f conftest_grp; then
2377 ptygrp=`cat conftest_grp`
2378 AC_MSG_RESULT([pty mode: 0620, group: $ptygrp])
2379 AC_DEFINE(PTYMODE, 0620)
2380 AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
2382 AC_MSG_RESULT([ptys are world accessable])
2385 AC_MSG_RESULT([can't determine - assume ptys are world accessable]),
2386 AC_MSG_ERROR(failed to compile test program))
2389 dnl Checks for library functions. ===================================
2393 dnl find out what to use at the end of a signal function
2394 if test $ac_cv_type_signal = void; then
2395 AC_DEFINE(SIGRETURN, [return])
2397 AC_DEFINE(SIGRETURN, [return 0])
2400 dnl check if struct sigcontext is defined (used for SGI only)
2401 AC_MSG_CHECKING(for struct sigcontext)
2406 struct sigcontext *scont;
2407 scont = (struct sigcontext *)0;
2411 AC_DEFINE(HAVE_SIGCONTEXT),
2414 dnl tricky stuff: try to find out if getcwd() is implemented with
2415 dnl system("sh -c pwd")
2416 AC_MSG_CHECKING(getcwd implementation)
2418 char *dagger[] = { "IFS=pwd", 0 };
2422 extern char **environ;
2424 return getcwd(buffer, 500) ? 0 : 1;
2426 AC_MSG_RESULT(it is usable),
2427 AC_MSG_RESULT(it stinks)
2428 AC_DEFINE(BAD_GETCWD),
2429 AC_MSG_ERROR(failed to compile test program))
2431 dnl Check for functions in one big call, to reduce the size of configure
2432 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2433 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2434 memset nanosleep opendir putenv qsort readlink select setenv \
2435 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2436 sigvec strcasecmp strerror strftime stricmp strncasecmp \
2437 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2438 usleep utime utimes)
2440 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2441 AC_MSG_CHECKING(for st_blksize)
2443 [#include <sys/types.h>
2444 #include <sys/stat.h>],
2449 n = (int)st.st_blksize;],
2450 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2453 AC_MSG_CHECKING(whether stat() ignores a trailing slash)
2455 [#include <sys/types.h>
2456 #include <sys/stat.h>
2457 main() {struct stat st; exit(stat("configure/", &st) != 0); }],
2458 AC_MSG_RESULT(yes); AC_DEFINE(STAT_IGNORES_SLASH),
2459 AC_MSG_RESULT(no), AC_MSG_ERROR(failed to compile test program))
2461 dnl Link with iconv for charset translation, if not found without library.
2462 dnl check for iconv() requires including iconv.h
2463 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2464 dnl has been installed.
2465 AC_MSG_CHECKING(for iconv_open())
2467 LIBS="$LIBS -liconv"
2472 ], [iconv_open("fr", "to");],
2473 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2479 ], [iconv_open("fr", "to");],
2480 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2484 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2486 #ifdef HAVE_LANGINFO_H
2487 # include <langinfo.h>
2489 ], [char *cs = nl_langinfo(CODESET);],
2490 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2493 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2494 dnl when -lacl works, also try to use -lattr (required for Debian).
2495 AC_MSG_CHECKING(--disable-acl argument)
2497 [ --disable-acl Don't check for ACL support.],
2498 , [enable_acl="yes"])
2499 if test "$enable_acl" = "yes"; then
2501 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2502 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2503 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2505 AC_MSG_CHECKING(for POSIX ACL support)
2507 #include <sys/types.h>
2508 #ifdef HAVE_SYS_ACL_H
2509 # include <sys/acl.h>
2511 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2512 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2514 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2517 AC_MSG_CHECKING(for Solaris ACL support)
2519 #ifdef HAVE_SYS_ACL_H
2520 # include <sys/acl.h>
2521 #endif], [acl("foo", GETACLCNT, 0, NULL);
2523 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2526 AC_MSG_CHECKING(for AIX ACL support)
2528 #ifdef HAVE_SYS_ACL_H
2529 # include <sys/acl.h>
2531 #ifdef HAVE_SYS_ACCESS_H
2532 # include <sys/access.h>
2536 #include <sys/stat.h>
2539 struct acl *aclent;], [aclsize = sizeof(struct acl);
2540 aclent = (void *)malloc(aclsize);
2541 statacl("foo", STX_NORMAL, aclent, aclsize);
2543 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2549 AC_MSG_CHECKING(--disable-gpm argument)
2551 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2554 if test "$enable_gpm" = "yes"; then
2556 dnl Checking if gpm support can be compiled
2557 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2558 [olibs="$LIBS" ; LIBS="-lgpm"]
2561 #include <linux/keyboard.h>],
2562 [Gpm_GetLibVersion(NULL);],
2563 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2564 dnl FEAT_MOUSE_GPM if mouse support is included
2565 [vi_cv_have_gpm=yes],
2566 [vi_cv_have_gpm=no])
2569 if test $vi_cv_have_gpm = yes; then
2577 dnl rename needs to be checked separately to work on Nextstep with cc
2578 AC_MSG_CHECKING(for rename)
2579 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2580 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2583 dnl sysctl() may exist but not the arguments we use
2584 AC_MSG_CHECKING(for sysctl)
2586 [#include <sys/types.h>
2587 #include <sys/sysctl.h>],
2592 mib[1] = HW_USERMEM;
2594 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2596 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2597 AC_MSG_RESULT(not usable))
2599 dnl sysinfo() may exist but not be Linux compatible
2600 AC_MSG_CHECKING(for sysinfo)
2602 [#include <sys/types.h>
2603 #include <sys/sysinfo.h>],
2604 [ struct sysinfo sinfo;
2607 (void)sysinfo(&sinfo);
2610 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2611 AC_MSG_RESULT(not usable))
2613 dnl struct sysinfo may have the mem_unit field or not
2614 AC_MSG_CHECKING(for sysinfo.mem_unit)
2616 [#include <sys/types.h>
2617 #include <sys/sysinfo.h>],
2618 [ struct sysinfo sinfo;
2621 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2624 dnl sysconf() may exist but not support what we want to use
2625 AC_MSG_CHECKING(for sysconf)
2627 [#include <unistd.h>],
2628 [ (void)sysconf(_SC_PAGESIZE);
2629 (void)sysconf(_SC_PHYS_PAGES);
2631 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2632 AC_MSG_RESULT(not usable))
2634 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2635 dnl be printed with "%d", and avoids a warning for cross-compiling.
2637 AC_MSG_CHECKING(size of int)
2638 AC_CACHE_VAL(ac_cv_sizeof_int,
2639 [AC_TRY_RUN([#include <stdio.h>
2642 FILE *f=fopen("conftestval", "w");
2644 fprintf(f, "%d\n", (int)sizeof(int));
2647 ac_cv_sizeof_int=`cat conftestval`,
2649 AC_MSG_ERROR(failed to compile test program))])
2650 AC_MSG_RESULT($ac_cv_sizeof_int)
2651 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2653 AC_MSG_CHECKING(whether memmove/bcopy/memcpy handle overlaps)
2657 strcpy(buf, "abcdefghi");
2658 mch_memmove(buf, buf + 2, 3);
2659 if (strncmp(buf, "ababcf", 6))
2661 strcpy(buf, "abcdefghi");
2662 mch_memmove(buf + 2, buf, 3);
2663 if (strncmp(buf, "cdedef", 6))
2665 exit(0); /* libc version works properly. */
2668 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2669 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2671 AC_TRY_RUN([#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog],
2672 AC_DEFINE(USEMEMMOVE) AC_MSG_RESULT(memmove does),
2673 AC_TRY_RUN([#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog],
2674 AC_DEFINE(USEBCOPY) AC_MSG_RESULT(bcopy does),
2675 AC_TRY_RUN([#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog],
2676 AC_DEFINE(USEMEMCPY) AC_MSG_RESULT(memcpy does), AC_MSG_RESULT(no),
2677 AC_MSG_ERROR(failed to compile test program)),
2678 AC_MSG_ERROR(failed to compile test program)),
2679 AC_MSG_ERROR(failed to compile test program))
2681 dnl Check for multibyte locale functions
2682 dnl Find out if _Xsetlocale() is supported by libX11.
2683 dnl Check if X_LOCALE should be defined.
2685 if test "$enable_multibyte" = "yes"; then
2687 ldflags_save=$LDFLAGS
2688 if test -n "$x_includes" ; then
2689 CFLAGS="$CFLAGS -I$x_includes"
2690 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2691 AC_MSG_CHECKING(whether X_LOCALE needed)
2692 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2693 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2694 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2698 LDFLAGS=$ldflags_save
2701 dnl Link with xpg4, it is said to make Korean locale working
2702 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2704 dnl Check how we can run ctags
2705 dnl --version for Exuberant ctags (preferred)
2706 dnl Add --fields=+S to get function signatures for omni completion.
2707 dnl -t for typedefs (many ctags have this)
2708 dnl -s for static functions (Elvis ctags only?)
2709 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2710 dnl -i+m to test for older Exuberant ctags
2711 AC_MSG_CHECKING(how to create tags)
2712 test -f tags && mv tags tags.save
2713 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
2714 TAGPRG="ctags -I INIT+ --fields=+S"
2716 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2717 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2718 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2719 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2720 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2721 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2722 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2724 test -f tags.save && mv tags.save tags
2725 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2727 dnl Check how we can run man with a section number
2728 AC_MSG_CHECKING(how to run man with a section nr)
2730 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
2731 AC_MSG_RESULT($MANDEF)
2732 if test "$MANDEF" = "man -s"; then
2736 dnl Check if gettext() is working and if it needs -lintl
2737 AC_MSG_CHECKING(--disable-nls argument)
2739 [ --disable-nls Don't support NLS (gettext()).], ,
2742 if test "$enable_nls" = "yes"; then
2745 INSTALL_LANGS=install-languages
2746 AC_SUBST(INSTALL_LANGS)
2747 INSTALL_TOOL_LANGS=install-tool-languages
2748 AC_SUBST(INSTALL_TOOL_LANGS)
2750 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
2751 AC_MSG_CHECKING([for NLS])
2752 if test -f po/Makefile; then
2754 if test -n "$MSGFMT"; then
2756 [#include <libintl.h>],
2758 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
2762 [#include <libintl.h>],
2764 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
2765 AC_MSG_RESULT([gettext() doesn't work]);
2768 AC_MSG_RESULT([msgfmt not found - disabled]);
2770 if test $have_gettext = "yes"; then
2771 AC_DEFINE(HAVE_GETTEXT)
2774 dnl this was added in GNU gettext 0.10.36
2775 AC_CHECK_FUNCS(bind_textdomain_codeset)
2776 dnl _nl_msg_cat_cntr is required for GNU gettext
2777 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
2779 [#include <libintl.h>
2780 extern int _nl_msg_cat_cntr;],
2781 [++_nl_msg_cat_cntr;],
2782 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
2783 AC_MSG_RESULT([no]))
2786 AC_MSG_RESULT([no "po/Makefile" - disabled]);
2792 dnl Check for dynamic linking loader
2793 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
2794 if test x${DLL} = xdlfcn.h; then
2795 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
2796 AC_MSG_CHECKING([for dlopen()])
2798 extern void* dlopen();
2802 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2804 AC_MSG_CHECKING([for dlopen() in -ldl])
2808 extern void* dlopen();
2812 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2815 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
2817 AC_MSG_CHECKING([for dlsym()])
2819 extern void* dlsym();
2823 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2825 AC_MSG_CHECKING([for dlsym() in -ldl])
2829 extern void* dlsym();
2833 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
2836 elif test x${DLL} = xdl.h; then
2837 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
2838 AC_MSG_CHECKING([for shl_load()])
2840 extern void* shl_load();
2844 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2846 AC_MSG_CHECKING([for shl_load() in -ldld])
2850 extern void* shl_load();
2854 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
2858 AC_CHECK_HEADERS(setjmp.h)
2860 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
2861 dnl -ldl must come after DynaLoader.a
2862 if echo $LIBS | grep -e '-ldl' >/dev/null; then
2863 LIBS=`echo $LIBS | sed s/-ldl//`
2864 PERL_LIBS="$PERL_LIBS -ldl"
2868 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
2869 && test "x$GUITYPE" != "xCARBONGUI"; then
2870 AC_MSG_CHECKING(whether we need -framework Carbon)
2871 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
2872 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
2873 || test "x$features" = "xhuge"; then
2874 LIBS="$LIBS -framework Carbon"
2880 if test "x$MACARCH" = "xboth"; then
2881 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
2884 dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
2885 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
2886 dnl But only when making dependencies, cproto and lint don't take "-isystem".
2887 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
2888 dnl the number before the version number.
2889 AC_MSG_CHECKING(for GCC 3 or later)
2890 DEPEND_CFLAGS_FILTER=
2891 if test "$GCC" = yes; then
2892 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
2893 if test "$gccmajor" -gt "2"; then
2894 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
2897 if test "$DEPEND_CFLAGS_FILTER" = ""; then
2902 AC_SUBST(DEPEND_CFLAGS_FILTER)
2904 dnl write output files
2905 AC_OUTPUT(auto/config.mk:config.mk.in)
2907 dnl vim: set sw=2 tw=78 fo+=l: