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 Check for standard headers. We don't use this in Vim but other stuff
27 dnl in autoconf needs it, where it uses STDC_HEADERS.
31 dnl Set default value for CFLAGS if none is defined or it's empty
32 if test -z "$CFLAGS"; then
34 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
36 if test "$GCC" = yes; then
37 dnl method that should work for nearly all versions
38 gccversion=`"$CC" -dumpversion`
39 if test "x$gccversion" = "x"; then
40 dnl old method; fall-back for when -dumpversion doesn't work
41 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
43 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
44 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
45 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
46 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
48 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
49 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
50 CFLAGS="$CFLAGS -fno-strength-reduce"
55 dnl If configure thinks we are cross compiling, there might be something
56 dnl wrong with the CC or CFLAGS settings, give a useful warning message
57 if test "$cross_compiling" = yes; then
58 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
61 dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
62 dnl But gcc 3.1 changed the meaning! See near the end.
63 test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
65 if test -f ./toolcheck; then
66 AC_CHECKING(for buggy tools)
67 sh ./toolcheck 1>&AC_FD_MSG
70 OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
72 dnl Check for BeOS, which needs an extra source file
73 AC_MSG_CHECKING(for BeOS)
75 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
76 BEOS=yes; AC_MSG_RESULT(yes);;
77 *) BEOS=no; AC_MSG_RESULT(no);;
80 dnl If QNX is found, assume we don't want to use Xphoton
81 dnl unless it was specifically asked for (--with-x)
82 AC_MSG_CHECKING(for QNX)
84 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
85 test -z "$with_x" && with_x=no
86 QNX=yes; AC_MSG_RESULT(yes);;
87 *) QNX=no; AC_MSG_RESULT(no);;
90 dnl Check for Darwin and MacOS X
91 dnl We do a check for MacOS X in the very beginning because there
92 dnl are a lot of other things we need to change besides GUI stuff
93 AC_MSG_CHECKING([for Darwin (Mac OS X)])
94 if test "`(uname) 2>/dev/null`" = Darwin; then
97 AC_MSG_CHECKING(--disable-darwin argument)
99 [ --disable-darwin Disable Darwin (Mac OS X) support.],
100 , [enable_darwin="yes"])
101 if test "$enable_darwin" = "yes"; then
103 AC_MSG_CHECKING(if Darwin files are there)
104 if test -f os_macosx.c; then
107 AC_MSG_RESULT([no, Darwin support disabled])
111 AC_MSG_RESULT([yes, Darwin support excluded])
114 AC_MSG_CHECKING(--with-mac-arch argument)
115 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
116 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
117 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
119 if test "x$MACARCH" = "xboth"; then
120 AC_MSG_CHECKING(for 10.4 universal SDK)
121 dnl There is a terrible inconsistency (but we appear to get away with it):
122 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
123 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
124 dnl tests using the preprocessor are actually done with the wrong header
125 dnl files. $LDFLAGS is set at the end, because configure uses it together
126 dnl with $CFLAGS and we can only have one -sysroot argument.
127 save_cppflags="$CPPFLAGS"
128 save_cflags="$CFLAGS"
129 save_ldflags="$LDFLAGS"
130 CFLAGS="$CFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
131 AC_TRY_LINK([ ], [ ],
132 AC_MSG_RESULT(found, will make universal binary),
134 AC_MSG_RESULT(not found)
135 CFLAGS="$save_cflags"
136 AC_MSG_CHECKING(if Intel architecture is supported)
137 CPPFLAGS="$CPPFLAGS -arch i386"
138 LDFLAGS="$save_ldflags -arch i386"
139 AC_TRY_LINK([ ], [ ],
140 AC_MSG_RESULT(yes); MACARCH="intel",
141 AC_MSG_RESULT(no, using PowerPC)
143 CPPFLAGS="$save_cppflags -arch ppc"
144 LDFLAGS="$save_ldflags -arch ppc"))
145 elif test "x$MACARCH" = "xintel"; then
146 CPPFLAGS="$CPPFLAGS -arch intel"
147 LDFLAGS="$LDFLAGS -arch intel"
148 elif test "x$MACARCH" = "xppc"; then
149 CPPFLAGS="$CPPFLAGS -arch ppc"
150 LDFLAGS="$LDFLAGS -arch ppc"
153 if test "$enable_darwin" = "yes"; then
155 OS_EXTRA_SRC="os_macosx.c os_mac_conv.c";
156 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
157 dnl TODO: use -arch i386 on Intel machines
158 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
159 if test "x$MACARCH" = "xboth"; then
160 CPPFLAGS="$CPPFLAGS -I/Developer/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
162 CPPFLAGS="$CPPFLAGS -I/Developer/Headers/FlatCarbon"
165 dnl If Carbon or Cocoa is found, assume we don't want
166 dnl X11 unless it was specifically asked for (--with-x)
167 dnl or Motif, Athena or GTK GUI is used.
168 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
170 SAVE_CPPFLAGS=$CPPFLAGS
172 CPPFLAGS="$CPPFLAGS -ObjC"
173 CFLAGS="$CFLAGS -ObjC"
174 AC_CHECK_HEADER(Cocoa/Cocoa.h, COCOA=yes)
175 CPPFLAGS=$SAVE_CPPFLAGS
178 if test "x$CARBON" = "xyes" -o "x$COCOA" = "xyes"; then
179 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
185 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
186 dnl free. This happens in expand_filename(), because the optimizer swaps
187 dnl two blocks of code, both using "repl", that can't be swapped.
188 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
189 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
196 AC_SUBST(OS_EXTRA_SRC)
197 AC_SUBST(OS_EXTRA_OBJ)
199 dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
200 dnl Only when the directory exists and it wasn't there yet.
201 dnl For gcc don't do this when it is already in the default search path.
202 dnl Skip all of this when cross-compiling.
203 if test "$cross_compiling" = no; then
204 AC_MSG_CHECKING(--with-local-dir argument)
205 have_local_include=''
207 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
208 --without-local-dir do not search /usr/local for local libraries.], [
213 # avoid adding local dir to LDFLAGS and CPPFLAGS
217 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
219 AC_MSG_RESULT($local_dir)
222 AC_MSG_RESULT(Defaulting to $local_dir)
224 if test "$GCC" = yes -a "$local_dir" != no; then
225 echo 'void f(){}' > conftest.c
226 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
227 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
228 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
229 rm -f conftest.c conftest.o
231 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
232 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
233 if test "$tt" = "$LDFLAGS"; then
234 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
237 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
238 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
239 if test "$tt" = "$CPPFLAGS"; then
240 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
245 AC_MSG_CHECKING(--with-vim-name argument)
246 AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
247 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
248 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
250 AC_MSG_CHECKING(--with-ex-name argument)
251 AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
252 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
253 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
255 AC_MSG_CHECKING(--with-view-name argument)
256 AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
257 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
258 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
261 AC_MSG_CHECKING(--with-global-runtime argument)
262 AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
263 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
266 AC_MSG_CHECKING(--with-modified-by argument)
267 AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
268 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
271 dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
272 AC_MSG_CHECKING(if character set is EBCDIC)
274 [ /* TryCompile function for CharSet.
275 Treat any failure as ASCII for compatibility with existing art.
276 Use compile-time rather than run-time tests for cross-compiler
279 make an error "Character set is not EBCDIC"
281 [ # TryCompile action if true
283 [ # TryCompile action if false
285 # end of TryCompile ])
286 # end of CacheVal CvEbcdic
287 AC_MSG_RESULT($cf_cv_ebcdic)
288 case "$cf_cv_ebcdic" in #(vi
289 yes) AC_DEFINE(EBCDIC)
292 *) line_break='"\\012"';;
296 if test "$cf_cv_ebcdic" = "yes"; then
297 dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
298 AC_MSG_CHECKING(for OS/390 Unix)
300 OS/390) OS390Unix="yes";
301 dnl If using cc the environment variable _CC_CCMODE must be
302 dnl set to "1", so that some compiler extensions are enabled.
303 dnl If using c89 the environment variable is named _CC_C89MODE.
304 dnl Note: compile with c89 never tested.
305 if test "$CC" = "cc"; then
309 if test "$CC" = "c89"; then
316 if test "$ccm" != "1"; then
318 echo "------------------------------------------"
319 echo " On OS/390 Unix, the environment variable"
320 echo " __CC_${ccn}MODE must be set to \"1\"!"
322 echo " export _CC_${ccn}MODE=1"
323 echo " and then call configure again."
324 echo "------------------------------------------"
327 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
336 dnl Link with -lselinux for SELinux stuff; if not found
337 AC_MSG_CHECKING(--disable-selinux argument)
338 AC_ARG_ENABLE(selinux,
339 [ --disable-selinux Don't check for SELinux support.],
340 , enable_selinux="yes")
341 if test "$enable_selinux" = "yes"; then
343 AC_CHECK_LIB(selinux, is_selinux_enabled,
344 [LIBS="$LIBS -lselinux"
345 AC_DEFINE(HAVE_SELINUX)])
350 dnl Check user requested features.
352 AC_MSG_CHECKING(--with-features argument)
353 AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
354 features="$withval"; AC_MSG_RESULT($features),
355 features="normal"; AC_MSG_RESULT(Defaulting to normal))
360 tiny) AC_DEFINE(FEAT_TINY) ;;
361 small) AC_DEFINE(FEAT_SMALL) ;;
362 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
363 dogvimdiff="installgvimdiff" ;;
364 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
365 dogvimdiff="installgvimdiff" ;;
366 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
367 dogvimdiff="installgvimdiff" ;;
368 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
374 AC_MSG_CHECKING(--with-compiledby argument)
375 AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
376 compiledby="$withval"; AC_MSG_RESULT($withval),
377 compiledby=""; AC_MSG_RESULT(no))
380 AC_MSG_CHECKING(--disable-xsmp argument)
382 [ --disable-xsmp Disable XSMP session management],
385 if test "$enable_xsmp" = "yes"; then
387 AC_MSG_CHECKING(--disable-xsmp-interact argument)
388 AC_ARG_ENABLE(xsmp-interact,
389 [ --disable-xsmp-interact Disable XSMP interaction],
390 , enable_xsmp_interact="yes")
391 if test "$enable_xsmp_interact" = "yes"; then
393 AC_DEFINE(USE_XSMP_INTERACT)
401 dnl Check for MzScheme feature.
402 AC_MSG_CHECKING(--enable-mzschemeinterp argument)
403 AC_ARG_ENABLE(mzschemeinterp,
404 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
405 [enable_mzschemeinterp="no"])
406 AC_MSG_RESULT($enable_mzschemeinterp)
408 if test "$enable_mzschemeinterp" = "yes"; then
409 dnl -- find the mzscheme executable
410 AC_SUBST(vi_cv_path_mzscheme)
412 AC_MSG_CHECKING(--with-plthome argument)
414 [ --with-plthome=PLTHOME Use PLTHOME.],
415 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
416 with_plthome="";AC_MSG_RESULT("no"))
418 if test "X$with_plthome" != "X"; then
419 vi_cv_path_mzscheme_pfx="$with_plthome"
421 AC_MSG_CHECKING(PLTHOME environment var)
422 if test "X$PLTHOME" != "X"; then
423 AC_MSG_RESULT("$PLTHOME")
424 vi_cv_path_mzscheme_pfx="$PLTHOME"
426 AC_MSG_RESULT(not set)
427 dnl -- try to find MzScheme executable
428 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
430 dnl resolve symbolic link, the executable is often elsewhere and there
431 dnl are no links for the include files.
432 if test "X$vi_cv_path_mzscheme" != "X"; then
433 lsout=`ls -l $vi_cv_path_mzscheme`
434 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
435 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
439 if test "X$vi_cv_path_mzscheme" != "X"; then
440 dnl -- find where MzScheme thinks it was installed
441 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
442 dnl different versions of MzScheme differ in command line processing
443 dnl use universal approach
444 echo "(display (simplify-path \
445 (build-path (call-with-values \
446 (lambda () (split-path (find-system-path (quote exec-file)))) \
447 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
448 dnl Remove a trailing slash
449 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
457 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
458 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
459 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
460 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
464 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
465 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
467 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
470 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
471 if test -f /usr/include/plt/scheme.h; then
473 SCHEME_INC=/usr/include/plt
476 vi_cv_path_mzscheme_pfx=
482 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
483 if test "x$MACOSX" = "xyes"; then
484 MZSCHEME_LIBS="-framework PLT_MzScheme"
485 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
486 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
487 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
488 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
489 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
491 dnl Using shared objects
492 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
493 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
494 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
496 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
498 if test "$GCC" = yes; then
499 dnl Make Vim remember the path to the library. For when it's not in
500 dnl $LD_LIBRARY_PATH.
501 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
502 elif test "`(uname) 2>/dev/null`" = SunOS &&
503 uname -r | grep '^5' >/dev/null; then
504 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
507 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
508 SCHEME_COLLECTS=lib/plt/
510 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
511 dnl need to generate bytecode for MzScheme base
512 MZSCHEME_EXTRA="mzscheme_base.c"
513 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
514 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
516 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
517 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
518 MZSCHEME_SRC="if_mzsch.c"
519 MZSCHEME_OBJ="objects/if_mzsch.o"
520 MZSCHEME_PRO="if_mzsch.pro"
521 AC_DEFINE(FEAT_MZSCHEME)
523 AC_SUBST(MZSCHEME_SRC)
524 AC_SUBST(MZSCHEME_OBJ)
525 AC_SUBST(MZSCHEME_PRO)
526 AC_SUBST(MZSCHEME_LIBS)
527 AC_SUBST(MZSCHEME_CFLAGS)
528 AC_SUBST(MZSCHEME_EXTRA)
529 AC_SUBST(MZSCHEME_MZC)
533 AC_MSG_CHECKING(--enable-perlinterp argument)
534 AC_ARG_ENABLE(perlinterp,
535 [ --enable-perlinterp Include Perl interpreter.], ,
536 [enable_perlinterp="no"])
537 AC_MSG_RESULT($enable_perlinterp)
538 if test "$enable_perlinterp" = "yes"; then
539 AC_SUBST(vi_cv_path_perl)
540 AC_PATH_PROG(vi_cv_path_perl, perl)
541 if test "X$vi_cv_path_perl" != "X"; then
542 AC_MSG_CHECKING(Perl version)
543 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
544 eval `$vi_cv_path_perl -V:usethreads`
545 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
548 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
549 eval `$vi_cv_path_perl -V:use5005threads`
550 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
554 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
558 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
561 if test $badthreads = no; then
563 eval `$vi_cv_path_perl -V:shrpenv`
564 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
567 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
568 AC_SUBST(vi_cv_perllib)
569 dnl Remove "-fno-something", it breaks using cproto.
570 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
571 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
572 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
573 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
574 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
575 -e 's/-bE:perl.exp//' -e 's/-lc //'`
576 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
577 dnl a test in configure may fail because of that.
578 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
579 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
581 dnl check that compiling a simple program still works with the flags
583 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
586 ldflags_save=$LDFLAGS
587 CFLAGS="$CFLAGS $perlcppflags"
588 LIBS="$LIBS $perllibs"
589 LDFLAGS="$perlldflags $LDFLAGS"
591 AC_MSG_RESULT(yes); perl_ok=yes,
592 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
595 LDFLAGS=$ldflags_save
596 if test $perl_ok = yes; then
597 if test "X$perlcppflags" != "X"; then
598 dnl remove -pipe and -Wxxx, it confuses cproto
599 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
601 if test "X$perlldflags" != "X"; then
602 LDFLAGS="$perlldflags $LDFLAGS"
605 PERL_SRC="auto/if_perl.c if_perlsfio.c"
606 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
607 PERL_PRO="if_perl.pro if_perlsfio.pro"
612 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
616 if test "x$MACOSX" = "xyes"; then
617 dnl Mac OS X 10.2 or later
618 dir=/System/Library/Perl
619 darwindir=$dir/darwin
620 if test -d $darwindir; then
624 dir=/System/Library/Perl/5.8.1
625 darwindir=$dir/darwin-thread-multi-2level
626 if test -d $darwindir; then
630 if test -n "$PERL"; then
632 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
633 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
634 PERL_LIBS="-L$darwindir/CORE -lperl"
642 AC_SUBST(PERL_CFLAGS)
645 AC_MSG_CHECKING(--enable-pythoninterp argument)
646 AC_ARG_ENABLE(pythoninterp,
647 [ --enable-pythoninterp Include Python interpreter.], ,
648 [enable_pythoninterp="no"])
649 AC_MSG_RESULT($enable_pythoninterp)
650 if test "$enable_pythoninterp" = "yes"; then
651 dnl -- find the python executable
652 AC_PATH_PROG(vi_cv_path_python, python)
653 if test "X$vi_cv_path_python" != "X"; then
655 dnl -- get its version number
656 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
657 [[vi_cv_var_python_version=`
658 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
661 dnl -- it must be at least version 1.4
662 AC_MSG_CHECKING(Python is 1.4 or better)
663 if ${vi_cv_path_python} -c \
664 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
668 dnl -- find where python thinks it was installed
669 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
670 [ vi_cv_path_python_pfx=`
671 ${vi_cv_path_python} -c \
672 "import sys; print sys.prefix"` ])
674 dnl -- and where it thinks it runs
675 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
676 [ vi_cv_path_python_epfx=`
677 ${vi_cv_path_python} -c \
678 "import sys; print sys.exec_prefix"` ])
680 dnl -- python's internal library path
682 AC_CACHE_VAL(vi_cv_path_pythonpath,
683 [ vi_cv_path_pythonpath=`
685 ${vi_cv_path_python} -c \
686 "import sys, string; print string.join(sys.path,':')"` ])
688 dnl -- where the Python implementation library archives are
690 AC_ARG_WITH(python-config-dir,
691 [ --with-python-config-dir=PATH Python's config directory],
692 [ vi_cv_path_python_conf="${withval}" ] )
694 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
696 vi_cv_path_python_conf=
697 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
698 for subdir in lib share; do
699 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
700 if test -d "$d" && test -f "$d/config.c"; then
701 vi_cv_path_python_conf="$d"
707 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
709 if test "X$PYTHON_CONFDIR" = "X"; then
710 AC_MSG_RESULT([can't find it!])
713 dnl -- we need to examine Python's config/Makefile too
714 dnl see what the interpreter is built from
715 AC_CACHE_VAL(vi_cv_path_python_plibs,
718 tmp_mkf="$pwd/config-PyMake$$"
719 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
721 @echo "python_MODLIBS='$(MODLIBS)'"
722 @echo "python_LIBS='$(LIBS)'"
723 @echo "python_SYSLIBS='$(SYSLIBS)'"
724 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
726 dnl -- delete the lines from make about Entering/Leaving directory
727 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
728 rm -f -- "${tmp_mkf}"
729 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
730 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
731 vi_cv_path_python_plibs="-framework Python"
733 if test "${vi_cv_var_python_version}" = "1.4"; then
734 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
736 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
738 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
739 dnl remove -ltermcap, it can conflict with an earlier -lncurses
740 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
744 PYTHON_LIBS="${vi_cv_path_python_plibs}"
745 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
746 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
748 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}"
750 PYTHON_SRC="if_python.c"
751 dnl For Mac OSX 10.2 config.o is included in the Python library.
752 if test "x$MACOSX" = "xyes"; then
753 PYTHON_OBJ="objects/if_python.o"
755 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
757 if test "${vi_cv_var_python_version}" = "1.4"; then
758 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
760 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
762 dnl On FreeBSD linking with "-pthread" is required to use threads.
763 dnl _THREAD_SAFE must be used for compiling then.
764 dnl The "-pthread" is added to $LIBS, so that the following check for
765 dnl sigaltstack() will look in libc_r (it's there in libc!).
766 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
767 dnl will then define target-specific defines, e.g., -D_REENTRANT.
768 dnl Don't do this for Mac OSX, -pthread will generate a warning.
769 AC_MSG_CHECKING([if -pthread should be used])
772 dnl if test "x$MACOSX" != "xyes"; then
773 if test "`(uname) 2>/dev/null`" != Darwin; then
774 test "$GCC" = yes && threadsafe_flag="-pthread"
775 if test "`(uname) 2>/dev/null`" = FreeBSD; then
776 threadsafe_flag="-D_THREAD_SAFE"
777 thread_lib="-pthread"
781 if test -n "$threadsafe_flag"; then
783 CFLAGS="$CFLAGS $threadsafe_flag"
784 LIBS="$LIBS $thread_lib"
786 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
787 AC_MSG_RESULT(no); LIBS=$libs_save_old
794 dnl check that compiling a simple program still works with the flags
795 dnl added for Python.
796 AC_MSG_CHECKING([if compile and link flags for Python are sane])
799 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
800 LIBS="$LIBS $PYTHON_LIBS"
802 AC_MSG_RESULT(yes); python_ok=yes,
803 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
806 if test $python_ok = yes; then
807 AC_DEFINE(FEAT_PYTHON)
818 AC_MSG_RESULT(too old)
822 AC_SUBST(PYTHON_CONFDIR)
823 AC_SUBST(PYTHON_LIBS)
824 AC_SUBST(PYTHON_GETPATH_CFLAGS)
825 AC_SUBST(PYTHON_CFLAGS)
829 AC_MSG_CHECKING(--enable-tclinterp argument)
830 AC_ARG_ENABLE(tclinterp,
831 [ --enable-tclinterp Include Tcl interpreter.], ,
832 [enable_tclinterp="no"])
833 AC_MSG_RESULT($enable_tclinterp)
835 if test "$enable_tclinterp" = "yes"; then
837 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
838 AC_MSG_CHECKING(--with-tclsh argument)
839 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
840 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
841 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
842 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
843 AC_SUBST(vi_cv_path_tcl)
845 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
846 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
847 tclsh_name="tclsh8.4"
848 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
850 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
851 tclsh_name="tclsh8.2"
852 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
854 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
855 tclsh_name="tclsh8.0"
856 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
858 dnl still didn't find it, try without version number
859 if test "X$vi_cv_path_tcl" = "X"; then
861 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
863 if test "X$vi_cv_path_tcl" != "X"; then
864 AC_MSG_CHECKING(Tcl version)
865 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
866 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
867 AC_MSG_RESULT($tclver - OK);
868 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 -`
870 AC_MSG_CHECKING(for location of Tcl include)
871 if test "x$MACOSX" != "xyes"; then
872 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
874 dnl For Mac OS X 10.3, use the OS-provided framework location
875 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
878 for try in $tclinc; do
879 if test -f "$try/tcl.h"; then
880 AC_MSG_RESULT($try/tcl.h)
885 if test -z "$TCL_INC"; then
886 AC_MSG_RESULT(<not found>)
889 if test -z "$SKIP_TCL"; then
890 AC_MSG_CHECKING(for location of tclConfig.sh script)
891 if test "x$MACOSX" != "xyes"; then
892 tclcnf=`echo $tclinc | sed s/include/lib/g`
893 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
895 dnl For Mac OS X 10.3, use the OS-provided framework location
896 tclcnf="/System/Library/Frameworks/Tcl.framework"
898 for try in $tclcnf; do
899 if test -f $try/tclConfig.sh; then
900 AC_MSG_RESULT($try/tclConfig.sh)
902 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
903 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
904 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
905 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
906 TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^[[^-]]/d' -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'`
910 if test -z "$TCL_LIBS"; then
911 AC_MSG_RESULT(<not found>)
912 AC_MSG_CHECKING(for Tcl library by myself)
913 tcllib=`echo $tclinc | sed s/include/lib/g`
914 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
915 for ext in .so .a ; do
916 for ver in "" $tclver ; do
917 for try in $tcllib ; do
919 if test -f $try/lib$trylib ; then
920 AC_MSG_RESULT($try/lib$trylib)
921 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
922 if test "`(uname) 2>/dev/null`" = SunOS &&
923 uname -r | grep '^5' >/dev/null; then
924 TCL_LIBS="$TCL_LIBS -R $try"
931 if test -z "$TCL_LIBS"; then
932 AC_MSG_RESULT(<not found>)
936 if test -z "$SKIP_TCL"; then
939 TCL_OBJ=objects/if_tcl.o
941 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
945 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
955 AC_MSG_CHECKING(--enable-rubyinterp argument)
956 AC_ARG_ENABLE(rubyinterp,
957 [ --enable-rubyinterp Include Ruby interpreter.], ,
958 [enable_rubyinterp="no"])
959 AC_MSG_RESULT($enable_rubyinterp)
960 if test "$enable_rubyinterp" = "yes"; then
961 AC_SUBST(vi_cv_path_ruby)
962 AC_PATH_PROG(vi_cv_path_ruby, ruby)
963 if test "X$vi_cv_path_ruby" != "X"; then
964 AC_MSG_CHECKING(Ruby version)
965 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
967 AC_MSG_CHECKING(Ruby header files)
968 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
969 if test "X$rubyhdrdir" != "X"; then
970 AC_MSG_RESULT($rubyhdrdir)
971 RUBY_CFLAGS="-I$rubyhdrdir"
972 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
973 if test "X$rubylibs" != "X"; then
974 RUBY_LIBS="$rubylibs"
976 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
977 if test -f "$rubyhdrdir/$librubyarg"; then
978 librubyarg="$rubyhdrdir/$librubyarg"
980 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
981 if test -f "$rubylibdir/$librubyarg"; then
982 librubyarg="$rubylibdir/$librubyarg"
983 elif test "$librubyarg" = "libruby.a"; then
984 dnl required on Mac OS 10.3 where libruby.a doesn't exist
987 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
991 if test "X$librubyarg" != "X"; then
992 RUBY_LIBS="$librubyarg $RUBY_LIBS"
994 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
995 if test "X$rubyldflags" != "X"; then
996 dnl Ruby on Mac OS X 10.5 and later adds "-arch" flags but these
997 dnl should only be included if requested by passing --with-mac-arch
998 dnl to configure, so strip these flags first (if present)
999 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1000 if test "X$rubyldflags" != "X"; then
1001 LDFLAGS="$rubyldflags $LDFLAGS"
1004 RUBY_SRC="if_ruby.c"
1005 RUBY_OBJ="objects/if_ruby.o"
1006 RUBY_PRO="if_ruby.pro"
1007 AC_DEFINE(FEAT_RUBY)
1009 AC_MSG_RESULT(not found, disabling Ruby)
1012 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1019 AC_SUBST(RUBY_CFLAGS)
1022 AC_MSG_CHECKING(--enable-cscope argument)
1023 AC_ARG_ENABLE(cscope,
1024 [ --enable-cscope Include cscope interface.], ,
1025 [enable_cscope="no"])
1026 AC_MSG_RESULT($enable_cscope)
1027 if test "$enable_cscope" = "yes"; then
1028 AC_DEFINE(FEAT_CSCOPE)
1031 AC_MSG_CHECKING(--enable-workshop argument)
1032 AC_ARG_ENABLE(workshop,
1033 [ --enable-workshop Include Sun Visual Workshop support.], ,
1034 [enable_workshop="no"])
1035 AC_MSG_RESULT($enable_workshop)
1036 if test "$enable_workshop" = "yes"; then
1037 AC_DEFINE(FEAT_SUN_WORKSHOP)
1038 WORKSHOP_SRC="workshop.c integration.c"
1039 AC_SUBST(WORKSHOP_SRC)
1040 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1041 AC_SUBST(WORKSHOP_OBJ)
1042 if test "${enable_gui-xxx}" = xxx; then
1047 AC_MSG_CHECKING(--disable-netbeans argument)
1048 AC_ARG_ENABLE(netbeans,
1049 [ --disable-netbeans Disable NetBeans integration support.],
1050 , [enable_netbeans="yes"])
1051 if test "$enable_netbeans" = "yes"; then
1053 dnl On Solaris we need the socket and nsl library.
1054 AC_CHECK_LIB(socket, socket)
1055 AC_CHECK_LIB(nsl, gethostbyname)
1056 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1063 #include <netinet/in.h>
1065 #include <sys/types.h>
1066 #include <sys/socket.h>
1067 /* Check bitfields */
1069 unsigned int initDone:1;
1073 /* Check creating a socket. */
1074 struct sockaddr_in server;
1075 (void)socket(AF_INET, SOCK_STREAM, 0);
1077 (void)gethostbyname("microsoft.com");
1078 if (errno == ECONNREFUSED)
1079 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1082 AC_MSG_RESULT(no); enable_netbeans="no")
1086 if test "$enable_netbeans" = "yes"; then
1087 AC_DEFINE(FEAT_NETBEANS_INTG)
1088 NETBEANS_SRC="netbeans.c"
1089 AC_SUBST(NETBEANS_SRC)
1090 NETBEANS_OBJ="objects/netbeans.o"
1091 AC_SUBST(NETBEANS_OBJ)
1094 AC_MSG_CHECKING(--enable-sniff argument)
1095 AC_ARG_ENABLE(sniff,
1096 [ --enable-sniff Include Sniff interface.], ,
1097 [enable_sniff="no"])
1098 AC_MSG_RESULT($enable_sniff)
1099 if test "$enable_sniff" = "yes"; then
1100 AC_DEFINE(FEAT_SNIFF)
1101 SNIFF_SRC="if_sniff.c"
1103 SNIFF_OBJ="objects/if_sniff.o"
1107 AC_MSG_CHECKING(--enable-multibyte argument)
1108 AC_ARG_ENABLE(multibyte,
1109 [ --enable-multibyte Include multibyte editing support.], ,
1110 [enable_multibyte="no"])
1111 AC_MSG_RESULT($enable_multibyte)
1112 if test "$enable_multibyte" = "yes"; then
1113 AC_DEFINE(FEAT_MBYTE)
1116 AC_MSG_CHECKING(--enable-hangulinput argument)
1117 AC_ARG_ENABLE(hangulinput,
1118 [ --enable-hangulinput Include Hangul input support.], ,
1119 [enable_hangulinput="no"])
1120 AC_MSG_RESULT($enable_hangulinput)
1122 AC_MSG_CHECKING(--enable-xim argument)
1124 [ --enable-xim Include XIM input support.],
1125 AC_MSG_RESULT($enable_xim),
1126 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1127 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1129 AC_MSG_CHECKING(--enable-fontset argument)
1130 AC_ARG_ENABLE(fontset,
1131 [ --enable-fontset Include X fontset output support.], ,
1132 [enable_fontset="no"])
1133 AC_MSG_RESULT($enable_fontset)
1134 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1136 test -z "$with_x" && with_x=yes
1137 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1138 if test "$with_x" = no; then
1139 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1141 dnl Do this check early, so that its failure can override user requests.
1143 AC_PATH_PROG(xmkmfpath, xmkmf)
1147 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1148 dnl be compiled with a special option.
1149 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1150 if test "$OS390Unix" = "yes"; then
1151 CFLAGS="$CFLAGS -W c,dll"
1152 LDFLAGS="$LDFLAGS -W l,dll"
1153 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1156 dnl On my HPUX system the X include dir is found, but the lib dir not.
1157 dnl This is a desparate try to fix this.
1159 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1160 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1161 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1162 X_LIBS="$X_LIBS -L$x_libraries"
1163 if test "`(uname) 2>/dev/null`" = SunOS &&
1164 uname -r | grep '^5' >/dev/null; then
1165 X_LIBS="$X_LIBS -R $x_libraries"
1169 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1170 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1171 AC_MSG_RESULT(Corrected X includes to $x_includes)
1172 X_CFLAGS="$X_CFLAGS -I$x_includes"
1175 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1176 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1177 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1178 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1179 dnl Same for "-R/usr/lib ".
1180 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1183 dnl Check if the X11 header files are correctly installed. On some systems
1184 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1186 AC_MSG_CHECKING(if X11 header files can be found)
1188 CFLAGS="$CFLAGS $X_CFLAGS"
1189 AC_TRY_COMPILE([#include <X11/Xlib.h>
1190 #include <X11/Intrinsic.h>], ,
1192 AC_MSG_RESULT(no); no_x=yes)
1195 if test "${no_x-no}" = yes; then
1202 ac_save_LDFLAGS="$LDFLAGS"
1203 LDFLAGS="-L$x_libraries $LDFLAGS"
1205 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1206 dnl For HP-UX 10.20 it must be before -lSM -lICE
1207 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1208 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1210 dnl Some systems need -lnsl -lsocket when testing for ICE.
1211 dnl The check above doesn't do this, try here (again). Also needed to get
1212 dnl them after Xdmcp. link.sh will remove them when not needed.
1213 dnl Check for other function than above to avoid the cached value
1214 AC_CHECK_LIB(ICE, IceOpenConnection,
1215 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1217 dnl Check for -lXpm (needed for some versions of Motif)
1218 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1219 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1220 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1222 dnl Check that the X11 header files don't use implicit declarations
1223 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1225 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1226 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1228 CFLAGS="$CFLAGS -Wno-implicit-int"
1229 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1230 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1231 AC_MSG_RESULT(test failed)
1236 LDFLAGS="$ac_save_LDFLAGS"
1238 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1239 AC_CACHE_VAL(ac_cv_small_wchar_t,
1241 #include <X11/Xlib.h>
1243 # include <stdlib.h>
1244 # include <stddef.h>
1248 if (sizeof(wchar_t) <= 2)
1252 ac_cv_small_wchar_t="no",
1253 ac_cv_small_wchar_t="yes",
1254 AC_MSG_ERROR(failed to compile test program))])
1255 AC_MSG_RESULT($ac_cv_small_wchar_t)
1256 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1257 AC_DEFINE(SMALL_WCHAR_T)
1263 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1265 AC_MSG_CHECKING(--enable-gui argument)
1267 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon/macvim]], , enable_gui="auto")
1269 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1270 dnl Do not use character classes for portability with old tools.
1271 enable_gui_canon=`echo "_$enable_gui" | \
1272 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1274 dnl Skip everything by default.
1286 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1288 case "$enable_gui_canon" in
1289 no) AC_MSG_RESULT(no GUI support)
1291 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1292 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1293 photon) AC_MSG_RESULT(Photon GUI support) ;;
1294 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1298 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1301 case "$enable_gui_canon" in
1302 no) AC_MSG_RESULT(no GUI support)
1305 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1306 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1307 carbon) AC_MSG_RESULT(Carbon GUI support)
1309 macvim) AC_MSG_RESULT(MacVim GUI support)
1311 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1318 case "$enable_gui_canon" in
1319 no|none) AC_MSG_RESULT(no GUI support) ;;
1320 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1329 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1331 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1334 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1337 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1341 motif) AC_MSG_RESULT(Motif GUI support)
1343 athena) AC_MSG_RESULT(Athena GUI support)
1345 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1347 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1352 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1353 AC_MSG_CHECKING(whether or not to look for GTK)
1354 AC_ARG_ENABLE(gtk-check,
1355 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1356 , enable_gtk_check="yes")
1357 AC_MSG_RESULT($enable_gtk_check)
1358 if test "x$enable_gtk_check" = "xno"; then
1364 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1365 -a "$enable_gui_canon" != "gnome2"; then
1366 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1367 AC_ARG_ENABLE(gtk2-check,
1368 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1369 , enable_gtk2_check="yes")
1370 AC_MSG_RESULT($enable_gtk2_check)
1371 if test "x$enable_gtk2_check" = "xno"; then
1376 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1377 -a "$enable_gui_canon" != "gnome2"; then
1378 AC_MSG_CHECKING(whether or not to look for GNOME)
1379 AC_ARG_ENABLE(gnome-check,
1380 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1381 , enable_gnome_check="no")
1382 AC_MSG_RESULT($enable_gnome_check)
1383 if test "x$enable_gnome_check" = "xno"; then
1388 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1389 AC_MSG_CHECKING(whether or not to look for Motif)
1390 AC_ARG_ENABLE(motif-check,
1391 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1392 , enable_motif_check="yes")
1393 AC_MSG_RESULT($enable_motif_check)
1394 if test "x$enable_motif_check" = "xno"; then
1399 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1400 AC_MSG_CHECKING(whether or not to look for Athena)
1401 AC_ARG_ENABLE(athena-check,
1402 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1403 , enable_athena_check="yes")
1404 AC_MSG_RESULT($enable_athena_check)
1405 if test "x$enable_athena_check" = "xno"; then
1410 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1411 AC_MSG_CHECKING(whether or not to look for neXtaw)
1412 AC_ARG_ENABLE(nextaw-check,
1413 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1414 , enable_nextaw_check="yes")
1415 AC_MSG_RESULT($enable_nextaw_check);
1416 if test "x$enable_nextaw_check" = "xno"; then
1421 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1422 AC_MSG_CHECKING(whether or not to look for Carbon)
1423 AC_ARG_ENABLE(carbon-check,
1424 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1425 , enable_carbon_check="yes")
1426 AC_MSG_RESULT($enable_carbon_check);
1427 if test "x$enable_carbon_check" = "xno"; then
1432 if test "x$SKIP_MACVIM" != "xYES" -a "$enable_gui_canon" != "macvim"; then
1433 AC_MSG_CHECKING(whether or not to look for MacVim)
1434 AC_ARG_ENABLE(macvim-check,
1435 [ --enable-macvim-check If auto-select GUI, check for MacVim [default=yes]],
1436 , enable_macvim_check="yes")
1437 AC_MSG_RESULT($enable_macvim_check);
1438 if test "x$enable_macvim_check" = "xno"; then
1443 if test "x$MACOSX" = "xyes"; then
1444 dnl Default install directory is not /usr/local
1445 if test x$prefix = xNONE; then
1446 prefix=/Applications
1449 if test -z "$SKIP_MACVIM" -a "x$COCOA" = "xyes"; then
1450 AC_MSG_CHECKING(for MacVim GUI)
1451 dnl already did the check, just give the message
1454 dnl Sorry for the hard coded default
1455 datadir='${prefix}/MacVim.app/Contents/Resources'
1456 elif test -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1457 AC_MSG_CHECKING(for Carbon GUI)
1458 dnl already did the check, just give the message
1461 dnl Sorry for the hard coded default
1462 datadir='${prefix}/Vim.app/Contents/Resources'
1465 if test "$VIMNAME" = "vim"; then
1469 dnl skip everything else
1482 dnl Get the cflags and libraries from the gtk-config script
1485 dnl define an autoconf function to check for a specified version of GTK, and
1486 dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1488 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1489 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1491 AC_DEFUN(AM_PATH_GTK,
1493 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1495 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1496 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1498 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1499 && $PKG_CONFIG --exists gtk+-2.0; then
1501 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1502 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1503 dnl something like that.
1504 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1505 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1506 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1507 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1508 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1509 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1510 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1511 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1512 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1514 elif test "X$GTK_CONFIG" != "Xno"; then
1516 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1518 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1519 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1520 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1521 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1522 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1523 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1524 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1530 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1532 ac_save_CFLAGS="$CFLAGS"
1533 ac_save_LIBS="$LIBS"
1534 CFLAGS="$CFLAGS $GTK_CFLAGS"
1535 LIBS="$LIBS $GTK_LIBS"
1538 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1539 dnl checks the results of gtk-config to some extent
1543 #include <gtk/gtk.h>
1546 # include <stdlib.h>
1547 # include <stddef.h>
1553 int major, minor, micro;
1556 system ("touch conf.gtktest");
1558 /* HP/UX 9 (%@#!) writes to sscanf strings */
1559 tmp_version = g_strdup("$min_gtk_version");
1560 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
1561 printf("%s, bad version string\n", "$min_gtk_version");
1565 if ((gtk_major_version > major) ||
1566 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1567 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1568 (gtk_micro_version >= micro)))
1574 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1575 CFLAGS="$ac_save_CFLAGS"
1576 LIBS="$ac_save_LIBS"
1579 if test "x$no_gtk" = x ; then
1580 if test "x$enable_gtktest" = "xyes"; then
1581 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1583 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1585 ifelse([$2], , :, [$2])
1591 ifelse([$3], , :, [$3])
1598 ifelse([$3], , :, [$3])
1600 AC_SUBST(GTK_CFLAGS)
1605 dnl ---------------------------------------------------------------------------
1607 dnl ---------------------------------------------------------------------------
1608 AC_DEFUN([GNOME_INIT_HOOK],
1610 AC_SUBST(GNOME_LIBS)
1611 AC_SUBST(GNOME_LIBDIR)
1612 AC_SUBST(GNOME_INCLUDEDIR)
1614 AC_ARG_WITH(gnome-includes,
1615 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1616 [CFLAGS="$CFLAGS -I$withval"]
1619 AC_ARG_WITH(gnome-libs,
1620 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1621 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1625 [ --with-gnome Specify prefix for GNOME files],
1626 if test x$withval = xyes; then
1628 ifelse([$1], [], :, [$1])
1630 if test "x$withval" = xno; then
1634 LDFLAGS="$LDFLAGS -L$withval/lib"
1635 CFLAGS="$CFLAGS -I$withval/include"
1636 gnome_prefix=$withval/lib
1641 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1643 AC_MSG_CHECKING(for libgnomeui-2.0)
1644 if $PKG_CONFIG --exists libgnomeui-2.0; then
1646 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1647 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1648 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1650 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1651 dnl This might not be the right way but it works for me...
1652 AC_MSG_CHECKING(for FreeBSD)
1653 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1654 AC_MSG_RESULT(yes, adding -pthread)
1655 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1656 GNOME_LIBS="$GNOME_LIBS -pthread"
1662 AC_MSG_RESULT(not found)
1663 if test "x$2" = xfail; then
1664 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1668 elif test "x$want_gnome" = xyes; then
1670 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1671 if test "$GNOME_CONFIG" = "no"; then
1672 no_gnome_config="yes"
1674 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1675 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1677 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1678 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1679 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1683 no_gnome_config="yes"
1687 if test x$exec_prefix = xNONE; then
1688 if test x$prefix = xNONE; then
1689 gnome_prefix=$ac_default_prefix/lib
1691 gnome_prefix=$prefix/lib
1694 gnome_prefix=`eval echo \`echo $libdir\``
1697 if test "$no_gnome_config" = "yes"; then
1698 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1699 if test -f $gnome_prefix/gnomeConf.sh; then
1700 AC_MSG_RESULT(found)
1701 echo "loading gnome configuration from" \
1702 "$gnome_prefix/gnomeConf.sh"
1703 . $gnome_prefix/gnomeConf.sh
1706 AC_MSG_RESULT(not found)
1707 if test x$2 = xfail; then
1708 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1716 AC_DEFUN([GNOME_INIT],[
1717 GNOME_INIT_HOOK([],fail)
1721 dnl ---------------------------------------------------------------------------
1722 dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1723 dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1724 dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1725 dnl ---------------------------------------------------------------------------
1726 if test -z "$SKIP_GTK"; then
1728 AC_MSG_CHECKING(--with-gtk-prefix argument)
1729 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1730 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1731 gtk_config_prefix=""; AC_MSG_RESULT(no))
1733 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1734 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1735 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1736 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1738 AC_MSG_CHECKING(--disable-gtktest argument)
1739 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1740 , enable_gtktest=yes)
1741 if test "x$enable_gtktest" = "xyes" ; then
1742 AC_MSG_RESULT(gtk test enabled)
1744 AC_MSG_RESULT(gtk test disabled)
1747 if test "x$gtk_config_prefix" != "x" ; then
1748 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1749 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1751 if test "x$gtk_config_exec_prefix" != "x" ; then
1752 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1753 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1755 if test "X$GTK_CONFIG" = "X"; then
1756 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1757 if test "X$GTK_CONFIG" = "Xno"; then
1758 dnl Some distributions call it gtk12-config, annoying!
1759 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1760 GTK_CONFIG="$GTK12_CONFIG"
1763 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1765 if test "X$PKG_CONFIG" = "X"; then
1766 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1769 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1770 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1771 dnl problems (bold fonts, --remote doesn't work).
1772 if test "X$SKIP_GTK2" != "XYES"; then
1774 [GUI_LIB_LOC="$GTK_LIBDIR"
1775 GTK_LIBNAME="$GTK_LIBS"
1776 GUI_INC_LOC="$GTK_CFLAGS"], )
1777 if test "x$GTK_CFLAGS" != "x"; then
1782 AC_SUBST(GTK_LIBNAME)
1786 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1787 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1788 dnl were test versions.
1789 if test "x$GUITYPE" != "xGTK"; then
1792 [GTK_LIBNAME="$GTK_LIBS"
1793 GUI_INC_LOC="$GTK_CFLAGS"], )
1794 if test "x$GTK_CFLAGS" != "x"; then
1799 AC_SUBST(GTK_LIBNAME)
1803 dnl Give a warning if GTK is older than 1.2.3
1804 if test "x$GUITYPE" = "xGTK"; then
1805 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1806 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1807 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1810 if test "0$gtk_major_version" -ge 2; then
1811 AC_DEFINE(HAVE_GTK2)
1812 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1813 || test "0$gtk_minor_version" -ge 2 \
1814 || test "0$gtk_major_version" -gt 2; then
1815 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1819 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1821 if test -z "$SKIP_GNOME"; then
1823 GNOME_INIT_HOOK([have_gnome=yes])
1824 if test x$have_gnome = xyes ; then
1825 AC_DEFINE(FEAT_GUI_GNOME)
1826 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1827 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1836 dnl Check for Motif include files location.
1837 dnl The LAST one found is used, this makes the highest version to be used,
1838 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1840 if test -z "$SKIP_MOTIF"; then
1841 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"
1842 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1843 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1845 AC_MSG_CHECKING(for location of Motif GUI includes)
1846 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1848 for try in $gui_includes; do
1849 if test -f "$try/Xm/Xm.h"; then
1853 if test -n "$GUI_INC_LOC"; then
1854 if test "$GUI_INC_LOC" = /usr/include; then
1856 AC_MSG_RESULT(in default path)
1858 AC_MSG_RESULT($GUI_INC_LOC)
1861 AC_MSG_RESULT(<not found>)
1866 dnl Check for Motif library files location. In the same order as the include
1867 dnl files, to avoid a mixup if several versions are present
1869 if test -z "$SKIP_MOTIF"; then
1870 AC_MSG_CHECKING(--with-motif-lib argument)
1871 AC_ARG_WITH(motif-lib,
1872 [ --with-motif-lib=STRING Library for Motif ],
1873 [ MOTIF_LIBNAME="${withval}" ] )
1875 if test -n "$MOTIF_LIBNAME"; then
1876 AC_MSG_RESULT($MOTIF_LIBNAME)
1881 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1882 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1884 AC_MSG_CHECKING(for location of Motif GUI libs)
1885 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"
1887 for try in $gui_libs; do
1888 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
1889 if test -f "$libtry"; then
1894 if test -n "$GUI_LIB_LOC"; then
1895 dnl Remove /usr/lib, it causes trouble on some systems
1896 if test "$GUI_LIB_LOC" = /usr/lib; then
1898 AC_MSG_RESULT(in default path)
1900 if test -n "$GUI_LIB_LOC"; then
1901 AC_MSG_RESULT($GUI_LIB_LOC)
1902 if test "`(uname) 2>/dev/null`" = SunOS &&
1903 uname -r | grep '^5' >/dev/null; then
1904 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1910 AC_MSG_RESULT(<not found>)
1916 if test -z "$SKIP_MOTIF"; then
1920 AC_SUBST(MOTIF_LIBNAME)
1923 dnl Check if the Athena files can be found
1927 if test -z "$SKIP_ATHENA"; then
1928 AC_MSG_CHECKING(if Athena header files can be found)
1930 CFLAGS="$CFLAGS $X_CFLAGS"
1932 #include <X11/Intrinsic.h>
1933 #include <X11/Xaw/Paned.h>], ,
1935 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1939 if test -z "$SKIP_ATHENA"; then
1943 if test -z "$SKIP_NEXTAW"; then
1944 AC_MSG_CHECKING(if neXtaw header files can be found)
1946 CFLAGS="$CFLAGS $X_CFLAGS"
1948 #include <X11/Intrinsic.h>
1949 #include <X11/neXtaw/Paned.h>], ,
1951 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1955 if test -z "$SKIP_NEXTAW"; then
1959 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1960 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1961 dnl Avoid adding it when it twice
1962 if test -n "$GUI_INC_LOC"; then
1963 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1965 if test -n "$GUI_LIB_LOC"; then
1966 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1969 dnl Check for -lXext and then for -lXmu
1970 ldflags_save=$LDFLAGS
1971 LDFLAGS="$X_LIBS $LDFLAGS"
1972 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1973 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1974 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1975 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1976 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1977 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1978 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1979 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1980 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1981 if test -z "$SKIP_MOTIF"; then
1982 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1983 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1985 LDFLAGS=$ldflags_save
1987 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1988 AC_MSG_CHECKING(for extra X11 defines)
1991 if mkdir conftestdir; then
1993 cat > Imakefile <<'EOF'
1995 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1997 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1998 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2003 if test -z "$NARROW_PROTO"; then
2006 AC_MSG_RESULT($NARROW_PROTO)
2008 AC_SUBST(NARROW_PROTO)
2011 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2012 dnl use the X11 include path
2013 if test "$enable_xsmp" = "yes"; then
2014 cppflags_save=$CPPFLAGS
2015 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2016 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2017 CPPFLAGS=$cppflags_save
2021 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
2022 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2023 cppflags_save=$CPPFLAGS
2024 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2025 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2027 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2028 if test ! "$enable_xim" = "no"; then
2029 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2030 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2032 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2034 CPPFLAGS=$cppflags_save
2036 dnl automatically enable XIM when hangul input isn't enabled
2037 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2038 -a "x$GUITYPE" != "xNONE" ; then
2039 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2044 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2045 cppflags_save=$CPPFLAGS
2046 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2047 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2048 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2050 #include <X11/Intrinsic.h>
2051 #include <X11/Xmu/Editres.h>],
2054 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2056 CPPFLAGS=$cppflags_save
2059 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2060 if test -z "$SKIP_MOTIF"; then
2061 cppflags_save=$CPPFLAGS
2062 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2063 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
2064 Xm/UnhighlightT.h Xm/Notebook.h)
2066 if test $ac_cv_header_Xm_XpmP_h = yes; then
2067 dnl Solaris uses XpmAttributes_21, very annoying.
2068 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2069 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2070 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2071 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2074 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2076 CPPFLAGS=$cppflags_save
2079 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2080 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2083 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2084 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2087 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2088 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2092 if test -z "$SKIP_PHOTON"; then
2096 AC_SUBST(GUI_INC_LOC)
2097 AC_SUBST(GUI_LIB_LOC)
2099 AC_SUBST(GUI_X_LIBS)
2101 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2102 AC_MSG_ERROR([cannot use workshop without Motif])
2105 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2106 if test "$enable_xim" = "yes"; then
2109 if test "$enable_fontset" = "yes"; then
2110 AC_DEFINE(FEAT_XFONTSET)
2114 dnl ---------------------------------------------------------------------------
2115 dnl end of GUI-checking
2116 dnl ---------------------------------------------------------------------------
2119 dnl Only really enable hangul input when GUI and XFONTSET are available
2120 if test "$enable_hangulinput" = "yes"; then
2121 if test "x$GUITYPE" = "xNONE"; then
2122 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2123 enable_hangulinput=no
2125 AC_DEFINE(FEAT_HANGULIN)
2126 HANGULIN_SRC=hangulin.c
2127 AC_SUBST(HANGULIN_SRC)
2128 HANGULIN_OBJ=objects/hangulin.o
2129 AC_SUBST(HANGULIN_OBJ)
2133 dnl Checks for libraries and include files.
2135 AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2138 #include "confdefs.h"
2141 # include <stdlib.h>
2142 # include <stddef.h>
2144 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2146 vim_cv_toupper_broken=yes
2148 vim_cv_toupper_broken=no
2150 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2153 if test "x$vim_cv_toupper_broken" = "xyes" ; then
2154 AC_DEFINE(BROKEN_TOUPPER)
2157 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2158 AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
2159 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2162 AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2163 AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2164 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2167 dnl Checks for header files.
2168 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2169 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2170 if test "$HAS_ELF" = 1; then
2171 AC_CHECK_LIB(elf, main)
2176 dnl If sys/wait.h is not found it might still exist but not be POSIX
2177 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2178 if test $ac_cv_header_sys_wait_h = no; then
2179 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2180 AC_TRY_COMPILE([#include <sys/wait.h>],
2181 [union wait xx, yy; xx = yy],
2183 AC_DEFINE(HAVE_SYS_WAIT_H)
2184 AC_DEFINE(HAVE_UNION_WAIT),
2188 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2189 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2190 iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
2191 sys/resource.h sys/systeminfo.h locale.h \
2192 sys/stream.h termios.h libc.h sys/statfs.h \
2193 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2194 libgen.h util/debug.h util/msg18n.h frame.h \
2195 sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
2197 dnl sys/ptem.h depends on sys/stream.h on Solaris
2198 AC_CHECK_HEADERS(sys/ptem.h, [], [],
2199 [#if defined HAVE_SYS_STREAM_H
2200 # include <sys/stream.h>
2203 dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2204 AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2205 [#if defined HAVE_SYS_PARAM_H
2206 # include <sys/param.h>
2210 dnl pthread_np.h may exist but can only be used after including pthread.h
2211 AC_MSG_CHECKING([for pthread_np.h])
2213 #include <pthread.h>
2214 #include <pthread_np.h>],
2217 AC_DEFINE(HAVE_PTHREAD_NP_H),
2220 AC_CHECK_HEADERS(strings.h)
2221 if test "x$MACOSX" = "xyes"; then
2222 dnl The strings.h file on OS/X contains a warning and nothing useful.
2223 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2226 dnl Check if strings.h and string.h can both be included when defined.
2227 AC_MSG_CHECKING([if strings.h can be included after string.h])
2228 cppflags_save=$CPPFLAGS
2229 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2231 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2232 # define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2233 /* but don't do it on AIX 5.1 (Uribarri) */
2236 # include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2238 #ifdef HAVE_STRING_H
2239 # include <string.h>
2241 #if defined(HAVE_STRINGS_H)
2242 # include <strings.h>
2246 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2248 CPPFLAGS=$cppflags_save
2251 dnl Checks for typedefs, structures, and compiler characteristics.
2252 AC_PROG_GCC_TRADITIONAL
2261 AC_CHECK_TYPE(ino_t, long)
2262 AC_CHECK_TYPE(dev_t, unsigned)
2264 AC_MSG_CHECKING(for rlim_t)
2265 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2266 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2269 changequote(<<,>>)dnl
2270 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2273 #include <sys/types.h>
2275 # include <stdlib.h>
2276 # include <stddef.h>
2278 #ifdef HAVE_SYS_RESOURCE_H
2279 # include <sys/resource.h>
2281 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2282 AC_MSG_RESULT($ac_cv_type_rlim_t)
2284 if test $ac_cv_type_rlim_t = no; then
2285 cat >> confdefs.h <<\EOF
2286 #define rlim_t unsigned long
2290 AC_MSG_CHECKING(for stack_t)
2291 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2292 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2294 AC_EGREP_CPP(stack_t,
2296 #include <sys/types.h>
2298 # include <stdlib.h>
2299 # include <stddef.h>
2302 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2303 AC_MSG_RESULT($ac_cv_type_stack_t)
2305 if test $ac_cv_type_stack_t = no; then
2306 cat >> confdefs.h <<\EOF
2307 #define stack_t struct sigaltstack
2311 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2312 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2314 #include <sys/types.h>
2316 # include <stdlib.h>
2317 # include <stddef.h>
2320 #include "confdefs.h"
2321 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2322 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2326 AC_MSG_CHECKING(--with-tlib argument)
2327 AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2328 if test -n "$with_tlib"; then
2329 AC_MSG_RESULT($with_tlib)
2330 LIBS="$LIBS -l$with_tlib"
2331 AC_MSG_CHECKING(for linking with $with_tlib library)
2332 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2333 dnl Need to check for tgetent() below.
2336 AC_MSG_RESULT([empty: automatic terminal library selection])
2337 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2338 dnl curses, because curses is much slower.
2339 dnl Newer versions of ncurses are preferred over anything.
2340 dnl Older versions of ncurses have bugs, get a new one!
2341 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
2342 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
2343 case "`uname -s 2>/dev/null`" in
2344 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
2345 *) tlibs="ncurses termlib termcap curses";;
2347 for libname in $tlibs; do
2348 AC_CHECK_LIB(${libname}, tgetent,,)
2349 if test "x$olibs" != "x$LIBS"; then
2350 dnl It's possible that a library is found but it doesn't work
2351 dnl e.g., shared library that cannot be found
2352 dnl compile and run a test program to be sure
2354 #ifdef HAVE_TERMCAP_H
2355 # include <termcap.h>
2358 # include <stdlib.h>
2359 # include <stddef.h>
2361 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2362 res="OK", res="FAIL", res="FAIL")
2363 if test "$res" = "OK"; then
2366 AC_MSG_RESULT($libname library is not usable)
2370 if test "x$olibs" = "x$LIBS"; then
2371 AC_MSG_RESULT(no terminal library found)
2375 if test "x$olibs" = "x$LIBS"; then
2376 AC_MSG_CHECKING([for tgetent()])
2378 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2380 AC_MSG_ERROR([NOT FOUND!
2381 You need to install a terminal library; for example ncurses.
2382 Or specify the name of the library with --with-tlib.]))
2385 AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2388 #include "confdefs.h"
2389 #ifdef HAVE_TERMCAP_H
2390 # include <termcap.h>
2392 #ifdef HAVE_STRING_H
2393 # include <string.h>
2396 # include <stdlib.h>
2397 # include <stddef.h>
2400 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2406 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2410 if test "x$vim_cv_terminfo" = "xyes" ; then
2414 if test "x$olibs" != "x$LIBS"; then
2415 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2418 #include "confdefs.h"
2419 #ifdef HAVE_TERMCAP_H
2420 # include <termcap.h>
2423 # include <stdlib.h>
2424 # include <stddef.h>
2427 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2431 vim_cv_tgent=non-zero
2433 AC_MSG_ERROR(failed to compile test program.)
2437 if test "x$vim_cv_tgent" = "xzero" ; then
2438 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2442 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2444 #ifdef HAVE_TERMCAP_H
2445 # include <termcap.h>
2447 ], [ospeed = 20000],
2448 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2450 AC_MSG_CHECKING(whether ospeed can be extern)
2452 #ifdef HAVE_TERMCAP_H
2453 # include <termcap.h>
2455 extern short ospeed;
2456 ], [ospeed = 20000],
2457 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2461 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2463 #ifdef HAVE_TERMCAP_H
2464 # include <termcap.h>
2466 ], [if (UP == 0 && BC == 0) PC = 1],
2467 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2469 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2471 #ifdef HAVE_TERMCAP_H
2472 # include <termcap.h>
2474 extern char *UP, *BC, PC;
2475 ], [if (UP == 0 && BC == 0) PC = 1],
2476 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2480 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2482 #ifdef HAVE_TERMCAP_H
2483 # include <termcap.h>
2485 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2486 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2489 dnl On some SCO machines sys/select redefines struct timeval
2490 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2492 #include <sys/types.h>
2493 #include <sys/time.h>
2494 #include <sys/select.h>], ,
2496 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2499 dnl AC_DECL_SYS_SIGLIST
2501 dnl Checks for pty.c (copied from screen) ==========================
2502 AC_MSG_CHECKING(for /dev/ptc)
2503 if test -r /dev/ptc; then
2504 AC_DEFINE(HAVE_DEV_PTC)
2510 AC_MSG_CHECKING(for SVR4 ptys)
2511 if test -c /dev/ptmx ; then
2512 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2513 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2519 AC_MSG_CHECKING(for ptyranges)
2520 if test -d /dev/ptym ; then
2530 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2531 dnl if test -c /dev/ptyp19; then
2532 dnl ptys=`echo /dev/ptyp??`
2534 dnl ptys=`echo $pdir/pty??`
2536 if test "$ptys" != "$pdir/pty??" ; then
2537 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2538 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2539 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2540 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2541 AC_MSG_RESULT([$p0 / $p1])
2543 AC_MSG_RESULT([don't know])
2546 dnl **** pty mode/group handling ****
2548 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2550 AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2553 #include "confdefs.h"
2554 #include <sys/types.h>
2556 # include <stdlib.h>
2557 # include <stddef.h>
2559 #ifdef HAVE_UNISTD_H
2562 #include <sys/stat.h>
2571 if (!(x = ttyname(0))) exit(1);
2572 if (stat(x, &sb)) exit(1);
2574 if (om & 002) exit(0);
2575 m = system("mesg y");
2576 if (m == -1 || m == 127) exit(1);
2577 if (stat(x, &sb)) exit(1);
2579 if (chmod(x, om)) exit(1);
2580 if (m & 002) exit(0);
2581 if (sb.st_gid == getgid()) exit(1);
2582 if (!(fp=fopen("conftest_grp", "w")))
2584 fprintf(fp, "%d\n", sb.st_gid);
2589 if test -f conftest_grp; then
2590 vim_cv_tty_group=`cat conftest_grp`
2591 if test "x$vim_cv_tty_mode" = "x" ; then
2592 vim_cv_tty_mode=0620
2594 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2596 vim_cv_tty_group=world
2597 AC_MSG_RESULT([ptys are world accessable])
2600 vim_cv_tty_group=world
2601 AC_MSG_RESULT([can't determine - assume ptys are world accessable])
2603 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2608 if test "x$vim_cv_tty_group" != "xworld" ; then
2609 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2610 if test "x$vim_cv_tty_mode" = "x" ; then
2611 AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)])
2613 AC_DEFINE(PTYMODE, 0620)
2617 dnl Checks for library functions. ===================================
2621 dnl find out what to use at the end of a signal function
2622 if test $ac_cv_type_signal = void; then
2623 AC_DEFINE(SIGRETURN, [return])
2625 AC_DEFINE(SIGRETURN, [return 0])
2628 dnl check if struct sigcontext is defined (used for SGI only)
2629 AC_MSG_CHECKING(for struct sigcontext)
2634 struct sigcontext *scont;
2635 scont = (struct sigcontext *)0;
2639 AC_DEFINE(HAVE_SIGCONTEXT),
2642 dnl tricky stuff: try to find out if getcwd() is implemented with
2643 dnl system("sh -c pwd")
2644 AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2647 #include "confdefs.h"
2648 #ifdef HAVE_UNISTD_H
2651 char *dagger[] = { "IFS=pwd", 0 };
2655 extern char **environ;
2657 return getcwd(buffer, 500) ? 0 : 1;
2660 vim_cv_getcwd_broken=no
2662 vim_cv_getcwd_broken=yes
2664 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2668 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2669 AC_DEFINE(BAD_GETCWD)
2672 dnl Check for functions in one big call, to reduce the size of configure
2673 AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2674 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2675 memset nanosleep opendir putenv qsort readlink select setenv \
2676 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2677 sigvec strcasecmp strerror strftime stricmp strncasecmp \
2678 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2679 usleep utime utimes)
2681 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2682 AC_MSG_CHECKING(for st_blksize)
2684 [#include <sys/types.h>
2685 #include <sys/stat.h>],
2690 n = (int)st.st_blksize;],
2691 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2694 AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2697 #include "confdefs.h"
2699 # include <stdlib.h>
2700 # include <stddef.h>
2702 #include <sys/types.h>
2703 #include <sys/stat.h>
2704 main() {struct stat st; exit(stat("configure/", &st) != 0); }
2706 vim_cv_stat_ignores_slash=yes
2708 vim_cv_stat_ignores_slash=no
2710 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2714 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2715 AC_DEFINE(STAT_IGNORES_SLASH)
2718 dnl Link with iconv for charset translation, if not found without library.
2719 dnl check for iconv() requires including iconv.h
2720 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2721 dnl has been installed.
2722 AC_MSG_CHECKING(for iconv_open())
2724 LIBS="$LIBS -liconv"
2729 ], [iconv_open("fr", "to");],
2730 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2736 ], [iconv_open("fr", "to");],
2737 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2741 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2743 #ifdef HAVE_LANGINFO_H
2744 # include <langinfo.h>
2746 ], [char *cs = nl_langinfo(CODESET);],
2747 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2750 dnl Need various functions for floating point support. Only enable
2751 dnl floating point when they are all present.
2752 AC_CHECK_LIB(m, strtod)
2753 AC_MSG_CHECKING([for strtod() and other floating point functions])
2759 # include <stdlib.h>
2760 # include <stddef.h>
2762 ], [char *s; double d;
2763 d = strtod("1.1", &s);
2768 d = pow(1.11, 2.22);
2774 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2777 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2778 dnl when -lacl works, also try to use -lattr (required for Debian).
2779 AC_MSG_CHECKING(--disable-acl argument)
2781 [ --disable-acl Don't check for ACL support.],
2782 , [enable_acl="yes"])
2783 if test "$enable_acl" = "yes"; then
2785 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2786 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2787 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2789 AC_MSG_CHECKING(for POSIX ACL support)
2791 #include <sys/types.h>
2792 #ifdef HAVE_SYS_ACL_H
2793 # include <sys/acl.h>
2795 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2796 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2798 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2801 AC_MSG_CHECKING(for Solaris ACL support)
2803 #ifdef HAVE_SYS_ACL_H
2804 # include <sys/acl.h>
2805 #endif], [acl("foo", GETACLCNT, 0, NULL);
2807 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2810 AC_MSG_CHECKING(for AIX ACL support)
2813 # include <stdlib.h>
2814 # include <stddef.h>
2816 #ifdef HAVE_SYS_ACL_H
2817 # include <sys/acl.h>
2819 #ifdef HAVE_SYS_ACCESS_H
2820 # include <sys/access.h>
2824 #include <sys/stat.h>
2827 struct acl *aclent;], [aclsize = sizeof(struct acl);
2828 aclent = (void *)malloc(aclsize);
2829 statacl("foo", STX_NORMAL, aclent, aclsize);
2831 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2837 AC_MSG_CHECKING(--disable-gpm argument)
2839 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2842 if test "$enable_gpm" = "yes"; then
2844 dnl Checking if gpm support can be compiled
2845 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2846 [olibs="$LIBS" ; LIBS="-lgpm"]
2849 #include <linux/keyboard.h>],
2850 [Gpm_GetLibVersion(NULL);],
2851 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2852 dnl FEAT_MOUSE_GPM if mouse support is included
2853 [vi_cv_have_gpm=yes],
2854 [vi_cv_have_gpm=no])
2857 if test $vi_cv_have_gpm = yes; then
2865 AC_MSG_CHECKING(--disable-sysmouse argument)
2866 AC_ARG_ENABLE(sysmouse,
2867 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
2868 [enable_sysmouse="yes"])
2870 if test "$enable_sysmouse" = "yes"; then
2872 dnl Checking if sysmouse support can be compiled
2873 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2874 dnl defines FEAT_SYSMOUSE if mouse support is included
2875 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2877 [#include <sys/consio.h>
2879 #include <sys/fbio.h>],
2880 [struct mouse_info mouse;
2881 mouse.operation = MOUSE_MODE;
2882 mouse.operation = MOUSE_SHOW;
2883 mouse.u.mode.mode = 0;
2884 mouse.u.mode.signal = SIGUSR2;],
2885 [vi_cv_have_sysmouse=yes],
2886 [vi_cv_have_sysmouse=no])
2888 if test $vi_cv_have_sysmouse = yes; then
2889 AC_DEFINE(HAVE_SYSMOUSE)
2895 dnl rename needs to be checked separately to work on Nextstep with cc
2896 AC_MSG_CHECKING(for rename)
2897 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2898 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2901 dnl sysctl() may exist but not the arguments we use
2902 AC_MSG_CHECKING(for sysctl)
2904 [#include <sys/types.h>
2905 #include <sys/sysctl.h>],
2910 mib[1] = HW_USERMEM;
2912 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2914 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2915 AC_MSG_RESULT(not usable))
2917 dnl sysinfo() may exist but not be Linux compatible
2918 AC_MSG_CHECKING(for sysinfo)
2920 [#include <sys/types.h>
2921 #include <sys/sysinfo.h>],
2922 [ struct sysinfo sinfo;
2925 (void)sysinfo(&sinfo);
2928 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2929 AC_MSG_RESULT(not usable))
2931 dnl struct sysinfo may have the mem_unit field or not
2932 AC_MSG_CHECKING(for sysinfo.mem_unit)
2934 [#include <sys/types.h>
2935 #include <sys/sysinfo.h>],
2936 [ struct sysinfo sinfo;
2939 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2942 dnl sysconf() may exist but not support what we want to use
2943 AC_MSG_CHECKING(for sysconf)
2945 [#include <unistd.h>],
2946 [ (void)sysconf(_SC_PAGESIZE);
2947 (void)sysconf(_SC_PHYS_PAGES);
2949 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2950 AC_MSG_RESULT(not usable))
2952 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2953 dnl be printed with "%d", and avoids a warning for cross-compiling.
2955 AC_MSG_CHECKING(size of int)
2956 AC_CACHE_VAL(ac_cv_sizeof_int,
2960 # include <stdlib.h>
2961 # include <stddef.h>
2965 FILE *f=fopen("conftestval", "w");
2967 fprintf(f, "%d\n", (int)sizeof(int));
2970 ac_cv_sizeof_int=`cat conftestval`,
2972 AC_MSG_ERROR(failed to compile test program))])
2973 AC_MSG_RESULT($ac_cv_sizeof_int)
2974 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2976 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2977 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2980 #include "confdefs.h"
2981 #ifdef HAVE_STRING_H
2982 # include <string.h>
2985 # include <stdlib.h>
2986 # include <stddef.h>
2990 strcpy(buf, "abcdefghi");
2991 mch_memmove(buf, buf + 2, 3);
2992 if (strncmp(buf, "ababcf", 6))
2994 strcpy(buf, "abcdefghi");
2995 mch_memmove(buf + 2, buf, 3);
2996 if (strncmp(buf, "cdedef", 6))
2998 exit(0); /* libc version works properly. */
3001 AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3003 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3005 vim_cv_memmove_handles_overlap=yes
3007 vim_cv_memmove_handles_overlap=no
3009 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3013 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3014 AC_DEFINE(USEMEMMOVE)
3016 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3018 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3020 vim_cv_bcopy_handles_overlap=yes
3022 vim_cv_bcopy_handles_overlap=no
3024 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3028 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3031 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3033 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3035 vim_cv_memcpy_handles_overlap=yes
3037 vim_cv_memcpy_handles_overlap=no
3039 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3043 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3044 AC_DEFINE(USEMEMCPY)
3050 dnl Check for multibyte locale functions
3051 dnl Find out if _Xsetlocale() is supported by libX11.
3052 dnl Check if X_LOCALE should be defined.
3054 if test "$enable_multibyte" = "yes"; then
3056 ldflags_save=$LDFLAGS
3057 if test "x$x_includes" != "xNONE" ; then
3058 CFLAGS="$CFLAGS -I$x_includes"
3059 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3060 AC_MSG_CHECKING(whether X_LOCALE needed)
3061 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3062 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3063 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3067 LDFLAGS=$ldflags_save
3070 dnl Link with xpg4, it is said to make Korean locale working
3071 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3073 dnl Check how we can run ctags. Default to "ctags" when nothing works.
3074 dnl --version for Exuberant ctags (preferred)
3075 dnl Add --fields=+S to get function signatures for omni completion.
3076 dnl -t for typedefs (many ctags have this)
3077 dnl -s for static functions (Elvis ctags only?)
3078 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3079 dnl -i+m to test for older Exuberant ctags
3080 AC_MSG_CHECKING(how to create tags)
3081 test -f tags && mv tags tags.save
3082 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3083 TAGPRG="ctags -I INIT+ --fields=+S"
3086 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3087 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3088 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3089 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3090 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3091 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3092 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3094 test -f tags.save && mv tags.save tags
3095 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3097 dnl Check how we can run man with a section number
3098 AC_MSG_CHECKING(how to run man with a section nr)
3100 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
3101 AC_MSG_RESULT($MANDEF)
3102 if test "$MANDEF" = "man -s"; then
3106 dnl Check if gettext() is working and if it needs -lintl
3107 AC_MSG_CHECKING(--disable-nls argument)
3109 [ --disable-nls Don't support NLS (gettext()).], ,
3112 if test "$enable_nls" = "yes"; then
3115 INSTALL_LANGS=install-languages
3116 AC_SUBST(INSTALL_LANGS)
3117 INSTALL_TOOL_LANGS=install-tool-languages
3118 AC_SUBST(INSTALL_TOOL_LANGS)
3120 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3121 AC_MSG_CHECKING([for NLS])
3122 if test -f po/Makefile; then
3124 if test -n "$MSGFMT"; then
3126 [#include <libintl.h>],
3128 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3132 [#include <libintl.h>],
3134 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3135 AC_MSG_RESULT([gettext() doesn't work]);
3138 AC_MSG_RESULT([msgfmt not found - disabled]);
3140 if test $have_gettext = "yes"; then
3141 AC_DEFINE(HAVE_GETTEXT)
3144 dnl this was added in GNU gettext 0.10.36
3145 AC_CHECK_FUNCS(bind_textdomain_codeset)
3146 dnl _nl_msg_cat_cntr is required for GNU gettext
3147 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3149 [#include <libintl.h>
3150 extern int _nl_msg_cat_cntr;],
3151 [++_nl_msg_cat_cntr;],
3152 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3153 AC_MSG_RESULT([no]))
3156 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3162 dnl Check for dynamic linking loader
3163 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3164 if test x${DLL} = xdlfcn.h; then
3165 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3166 AC_MSG_CHECKING([for dlopen()])
3168 extern void* dlopen();
3172 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3174 AC_MSG_CHECKING([for dlopen() in -ldl])
3178 extern void* dlopen();
3182 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3185 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3187 AC_MSG_CHECKING([for dlsym()])
3189 extern void* dlsym();
3193 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3195 AC_MSG_CHECKING([for dlsym() in -ldl])
3199 extern void* dlsym();
3203 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3206 elif test x${DLL} = xdl.h; then
3207 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3208 AC_MSG_CHECKING([for shl_load()])
3210 extern void* shl_load();
3214 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3216 AC_MSG_CHECKING([for shl_load() in -ldld])
3220 extern void* shl_load();
3224 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3228 AC_CHECK_HEADERS(setjmp.h)
3230 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3231 dnl -ldl must come after DynaLoader.a
3232 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3233 LIBS=`echo $LIBS | sed s/-ldl//`
3234 PERL_LIBS="$PERL_LIBS -ldl"
3238 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3239 && test "x$GUITYPE" != "xCARBONGUI" && test "x$GUITYPE" != "xMACVIMGUI"; then
3240 AC_MSG_CHECKING(whether we need -framework Carbon)
3241 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3242 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
3243 || test "x$features" = "xhuge"; then
3244 LIBS="$LIBS -framework Carbon"
3250 if test "x$MACARCH" = "xboth"; then
3251 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3254 if test "x$MACOSX" = "xyes"; then
3255 AC_MSG_CHECKING(--with-xcodecfg argument)
3256 AC_ARG_WITH(xcodecfg,
3257 [ --with-xcodecfg=CFG Debug, Release (default: Release)],
3258 [ XCODEFLAGS="$XCODEFLAGS -configuration $withval"
3259 AC_MSG_RESULT($withval) ],
3260 [ AC_MSG_RESULT(using default) ])
3263 dnl This is an attempt to support choice of SDKs, however it does not
3264 dnl work to compile with different SDKs. Must figure out how to fix
3265 dnl this before this option can be used.
3266 dnl AC_MSG_CHECKING(--with-macsdk argument)
3267 dnl AC_ARG_WITH(macsdk,
3268 dnl [ --with-macsdk=SDK SDK version (10.4, 10.5, 10.6, ...)],
3269 dnl [ macsdk="$withval"; AC_MSG_RESULT($macsdk) ],
3270 dnl [ macsdk=""; AC_MSG_RESULT(using default) ])
3272 dnl if test -n "$macsdk"; then
3273 dnl AC_MSG_CHECKING(if SDK is supported)
3274 dnl save_cflags="$CFLAGS"
3275 dnl save_ldflags="$LDFLAGS"
3276 dnl sdkflags="/Developer/SDKs/MacOSX$macsdk"
3277 dnl if test "x$macsdk" = "x10.4"; then
3278 dnl sdkflags="$sdkflags""u"
3280 dnl sdkflags="$sdkflags.sdk -mmacosx-version-min=$macsdk"
3281 dnl CFLAGS="$CFLAGS -isysroot $sdkflags"
3282 dnl LDFLAGS="$LDFLAGS -Wl,-syslibroot,$sdkflags"
3283 dnl AC_TRY_LINK([ ], [ ],
3284 dnl [ AC_MSG_RESULT([yes])
3285 dnl XCODEFLAGS="$XCODEFLAGS -sdk macosx$macsdk" ],
3286 dnl [ AC_MSG_RESULT([no])
3288 dnl CFLAGS="$save_cflags"
3289 dnl LDFLAGS="$save_ldflags" ])
3293 AC_MSG_CHECKING(--with-archs argument)
3295 [ --with-archs=ARCHS space separated list of archs (i386 x86_64 ppc ...)],
3296 [ ARCHS="$withval"; AC_MSG_RESULT($ARCHS) ],
3297 [ ARCHS=""; AC_MSG_RESULT(defaulting to native arch) ])
3299 if test -n "$ARCHS"; then
3300 AC_MSG_CHECKING(if architectures are supported)
3301 save_cflags="$CFLAGS"
3302 save_ldflags="$LDFLAGS"
3303 archflags=`echo "$ARCHS" | sed -e 's/[[[:<:]]]/-arch /g'`
3304 CFLAGS="$CFLAGS $archflags"
3305 LDFLAGS="$LDFLAGS $archflags"
3306 AC_TRY_LINK([ ], [ ],
3307 [ AC_MSG_RESULT([yes])
3308 XCODEFLAGS="$XCODEFLAGS ARCHS=\"$ARCHS\" ONLY_ACTIVE_ARCH=\"NO\"" ],
3309 [ AC_MSG_RESULT([no, will build for native arch only])
3311 CFLAGS="$save_cflags"
3312 LDFLAGS="$save_ldflags" ])
3314 if test -z "$ARCHS"; then
3315 dnl Mac OS X 10.6 compiles 64 bit by default, but 64 bit is currently not
3316 dnl supported. Compile 32 bit unless an architecture has been selected
3318 CFLAGS="$CFLAGS -m32"
3319 LDFLAGS="$LDFLAGS -m32"
3322 AC_SUBST(XCODEFLAGS)
3326 dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3327 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3328 dnl But only when making dependencies, cproto and lint don't take "-isystem".
3329 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3330 dnl the number before the version number.
3331 DEPEND_CFLAGS_FILTER=
3332 if test "$GCC" = yes; then
3333 AC_MSG_CHECKING(for GCC 3 or later)
3334 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
3335 if test "$gccmajor" -gt "2"; then
3336 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3341 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3342 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
3343 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3344 if test "$gccmajor" -gt "3"; then
3345 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
3351 AC_SUBST(DEPEND_CFLAGS_FILTER)
3353 dnl write output files
3354 AC_OUTPUT(auto/config.mk:config.mk.in)
3356 dnl vim: set sw=2 tw=78 fo+=l: