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 AC_MSG_CHECKING(--with-developer-dir argument)
120 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
121 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
122 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
124 if test "x$DEVELOPER_DIR" = "x"; then
125 AC_PATH_PROG(XCODE_SELECT, xcode-select)
126 if test "x$XCODE_SELECT" != "x"; then
127 AC_MSG_CHECKING(for developer dir using xcode-select)
128 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
129 AC_MSG_RESULT([$DEVELOPER_DIR])
131 DEVELOPER_DIR=/Developer
135 if test "x$MACARCH" = "xboth"; then
136 AC_MSG_CHECKING(for 10.4 universal SDK)
137 dnl There is a terrible inconsistency (but we appear to get away with it):
138 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
139 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
140 dnl tests using the preprocessor are actually done with the wrong header
141 dnl files. $LDFLAGS is set at the end, because configure uses it together
142 dnl with $CFLAGS and we can only have one -sysroot argument.
143 save_cppflags="$CPPFLAGS"
144 save_cflags="$CFLAGS"
145 save_ldflags="$LDFLAGS"
146 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
147 AC_TRY_LINK([ ], [ ],
148 AC_MSG_RESULT(found, will make universal binary),
150 AC_MSG_RESULT(not found)
151 CFLAGS="$save_cflags"
152 AC_MSG_CHECKING(if Intel architecture is supported)
153 CPPFLAGS="$CPPFLAGS -arch i386"
154 LDFLAGS="$save_ldflags -arch i386"
155 AC_TRY_LINK([ ], [ ],
156 AC_MSG_RESULT(yes); MACARCH="intel",
157 AC_MSG_RESULT(no, using PowerPC)
159 CPPFLAGS="$save_cppflags -arch ppc"
160 LDFLAGS="$save_ldflags -arch ppc"))
161 elif test "x$MACARCH" = "xintel"; then
162 CPPFLAGS="$CPPFLAGS -arch intel"
163 LDFLAGS="$LDFLAGS -arch intel"
164 elif test "x$MACARCH" = "xppc"; then
165 CPPFLAGS="$CPPFLAGS -arch ppc"
166 LDFLAGS="$LDFLAGS -arch ppc"
169 if test "$enable_darwin" = "yes"; then
171 OS_EXTRA_SRC="os_macosx.c os_mac_conv.c";
172 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
173 dnl TODO: use -arch i386 on Intel machines
174 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
175 if test "x$MACARCH" = "xboth"; then
176 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
178 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
181 dnl If Carbon is found, assume we don't want X11
182 dnl unless it was specifically asked for (--with-x)
183 dnl or Motif, Athena or GTK GUI is used.
184 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
185 if test "x$CARBON" = "xyes"; then
186 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
192 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
193 dnl free. This happens in expand_filename(), because the optimizer swaps
194 dnl two blocks of code, both using "repl", that can't be swapped.
195 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
196 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
203 AC_SUBST(OS_EXTRA_SRC)
204 AC_SUBST(OS_EXTRA_OBJ)
206 dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
207 dnl Only when the directory exists and it wasn't there yet.
208 dnl For gcc don't do this when it is already in the default search path.
209 dnl Skip all of this when cross-compiling.
210 if test "$cross_compiling" = no; then
211 AC_MSG_CHECKING(--with-local-dir argument)
212 have_local_include=''
214 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
215 --without-local-dir do not search /usr/local for local libraries.], [
220 # avoid adding local dir to LDFLAGS and CPPFLAGS
224 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
226 AC_MSG_RESULT($local_dir)
229 AC_MSG_RESULT(Defaulting to $local_dir)
231 if test "$GCC" = yes -a "$local_dir" != no; then
232 echo 'void f(){}' > conftest.c
233 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
234 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
235 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
236 rm -f conftest.c conftest.o
238 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
239 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
240 if test "$tt" = "$LDFLAGS"; then
241 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
244 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
245 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
246 if test "$tt" = "$CPPFLAGS"; then
247 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
252 AC_MSG_CHECKING(--with-vim-name argument)
253 AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
254 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
255 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
257 AC_MSG_CHECKING(--with-ex-name argument)
258 AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
259 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
260 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
262 AC_MSG_CHECKING(--with-view-name argument)
263 AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
264 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
265 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
268 AC_MSG_CHECKING(--with-global-runtime argument)
269 AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
270 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
273 AC_MSG_CHECKING(--with-modified-by argument)
274 AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
278 dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
279 AC_MSG_CHECKING(if character set is EBCDIC)
281 [ /* TryCompile function for CharSet.
282 Treat any failure as ASCII for compatibility with existing art.
283 Use compile-time rather than run-time tests for cross-compiler
286 make an error "Character set is not EBCDIC"
288 [ # TryCompile action if true
290 [ # TryCompile action if false
292 # end of TryCompile ])
293 # end of CacheVal CvEbcdic
294 AC_MSG_RESULT($cf_cv_ebcdic)
295 case "$cf_cv_ebcdic" in #(vi
296 yes) AC_DEFINE(EBCDIC)
299 *) line_break='"\\012"';;
303 if test "$cf_cv_ebcdic" = "yes"; then
304 dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
305 AC_MSG_CHECKING(for OS/390 Unix)
307 OS/390) OS390Unix="yes";
308 dnl If using cc the environment variable _CC_CCMODE must be
309 dnl set to "1", so that some compiler extensions are enabled.
310 dnl If using c89 the environment variable is named _CC_C89MODE.
311 dnl Note: compile with c89 never tested.
312 if test "$CC" = "cc"; then
316 if test "$CC" = "c89"; then
323 if test "$ccm" != "1"; then
325 echo "------------------------------------------"
326 echo " On OS/390 Unix, the environment variable"
327 echo " __CC_${ccn}MODE must be set to \"1\"!"
329 echo " export _CC_${ccn}MODE=1"
330 echo " and then call configure again."
331 echo "------------------------------------------"
334 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
343 dnl Link with -lselinux for SELinux stuff; if not found
344 AC_MSG_CHECKING(--disable-selinux argument)
345 AC_ARG_ENABLE(selinux,
346 [ --disable-selinux Don't check for SELinux support.],
347 , enable_selinux="yes")
348 if test "$enable_selinux" = "yes"; then
350 AC_CHECK_LIB(selinux, is_selinux_enabled,
351 [LIBS="$LIBS -lselinux"
352 AC_DEFINE(HAVE_SELINUX)])
357 dnl Check user requested features.
359 AC_MSG_CHECKING(--with-features argument)
360 AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
361 features="$withval"; AC_MSG_RESULT($features),
362 features="normal"; AC_MSG_RESULT(Defaulting to normal))
367 tiny) AC_DEFINE(FEAT_TINY) ;;
368 small) AC_DEFINE(FEAT_SMALL) ;;
369 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
370 dogvimdiff="installgvimdiff" ;;
371 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
372 dogvimdiff="installgvimdiff" ;;
373 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
374 dogvimdiff="installgvimdiff" ;;
375 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
381 AC_MSG_CHECKING(--with-compiledby argument)
382 AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
383 compiledby="$withval"; AC_MSG_RESULT($withval),
384 compiledby=""; AC_MSG_RESULT(no))
387 AC_MSG_CHECKING(--disable-xsmp argument)
389 [ --disable-xsmp Disable XSMP session management],
392 if test "$enable_xsmp" = "yes"; then
394 AC_MSG_CHECKING(--disable-xsmp-interact argument)
395 AC_ARG_ENABLE(xsmp-interact,
396 [ --disable-xsmp-interact Disable XSMP interaction],
397 , enable_xsmp_interact="yes")
398 if test "$enable_xsmp_interact" = "yes"; then
400 AC_DEFINE(USE_XSMP_INTERACT)
408 dnl Check for Lua feature.
409 AC_MSG_CHECKING(--enable-luainterp argument)
410 AC_ARG_ENABLE(luainterp,
411 [ --enable-luainterp Include Lua interpreter.], ,
412 [enable_luainterp="no"])
413 AC_MSG_RESULT($enable_luainterp)
415 if test "$enable_luainterp" = "yes"; then
416 dnl -- find the lua executable
417 AC_SUBST(vi_cv_path_lua)
419 AC_MSG_CHECKING(--with-lua-prefix argument)
420 AC_ARG_WITH(lua_prefix,
421 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
422 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
423 with_lua_prefix="";AC_MSG_RESULT("no"))
425 if test "X$with_lua_prefix" != "X"; then
426 vi_cv_path_lua_pfx="$with_lua_prefix"
428 AC_MSG_CHECKING(LUA_PREFIX environment var)
429 if test "X$LUA_PREFIX" != "X"; then
430 AC_MSG_RESULT("$LUA_PREFIX")
431 vi_cv_path_lua_pfx="$LUA_PREFIX"
433 AC_MSG_RESULT("not set")
438 if test "X$vi_cv_path_lua_pfx" != "X"; then
439 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
440 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
444 dnl -- try to find Lua executable
445 AC_PATH_PROG(vi_cv_path_lua, lua)
446 if test "X$vi_cv_path_lua" != "X"; then
447 dnl -- find Lua version
448 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
449 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION:sub(5,7))"` ])
450 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
451 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
453 LUA_INC=/lua$vi_cv_version_lua
462 if test "X$vi_cv_path_lua_pfx" != "X"; then
463 if test "X$vi_cv_version_lua" != "X"; then
464 dnl Test alternate location using version
465 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
467 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
469 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
471 LUA_OBJ="objects/if_lua.o"
483 dnl Check for MzScheme feature.
484 AC_MSG_CHECKING(--enable-mzschemeinterp argument)
485 AC_ARG_ENABLE(mzschemeinterp,
486 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
487 [enable_mzschemeinterp="no"])
488 AC_MSG_RESULT($enable_mzschemeinterp)
490 if test "$enable_mzschemeinterp" = "yes"; then
491 dnl -- find the mzscheme executable
492 AC_SUBST(vi_cv_path_mzscheme)
494 AC_MSG_CHECKING(--with-plthome argument)
496 [ --with-plthome=PLTHOME Use PLTHOME.],
497 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
498 with_plthome="";AC_MSG_RESULT("no"))
500 if test "X$with_plthome" != "X"; then
501 vi_cv_path_mzscheme_pfx="$with_plthome"
503 AC_MSG_CHECKING(PLTHOME environment var)
504 if test "X$PLTHOME" != "X"; then
505 AC_MSG_RESULT("$PLTHOME")
506 vi_cv_path_mzscheme_pfx="$PLTHOME"
508 AC_MSG_RESULT(not set)
509 dnl -- try to find MzScheme executable
510 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
512 dnl resolve symbolic link, the executable is often elsewhere and there
513 dnl are no links for the include files.
514 if test "X$vi_cv_path_mzscheme" != "X"; then
515 lsout=`ls -l $vi_cv_path_mzscheme`
516 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
517 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
521 if test "X$vi_cv_path_mzscheme" != "X"; then
522 dnl -- find where MzScheme thinks it was installed
523 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
524 dnl different versions of MzScheme differ in command line processing
525 dnl use universal approach
526 echo "(display (simplify-path \
527 (build-path (call-with-values \
528 (lambda () (split-path (find-system-path (quote exec-file)))) \
529 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
530 dnl Remove a trailing slash
531 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
539 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
540 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
541 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
542 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
546 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
547 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
549 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
552 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
553 if test -f /usr/include/plt/scheme.h; then
555 SCHEME_INC=/usr/include/plt
558 vi_cv_path_mzscheme_pfx=
564 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
565 if test "x$MACOSX" = "xyes"; then
566 MZSCHEME_LIBS="-framework PLT_MzScheme"
567 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
568 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
569 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
570 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
571 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
573 dnl Using shared objects
574 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
575 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
576 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
578 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
580 if test "$GCC" = yes; then
581 dnl Make Vim remember the path to the library. For when it's not in
582 dnl $LD_LIBRARY_PATH.
583 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
584 elif test "`(uname) 2>/dev/null`" = SunOS &&
585 uname -r | grep '^5' >/dev/null; then
586 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
589 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
590 SCHEME_COLLECTS=lib/plt/
592 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
593 dnl need to generate bytecode for MzScheme base
594 MZSCHEME_EXTRA="mzscheme_base.c"
595 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
596 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
598 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
599 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
600 MZSCHEME_SRC="if_mzsch.c"
601 MZSCHEME_OBJ="objects/if_mzsch.o"
602 MZSCHEME_PRO="if_mzsch.pro"
603 AC_DEFINE(FEAT_MZSCHEME)
605 AC_SUBST(MZSCHEME_SRC)
606 AC_SUBST(MZSCHEME_OBJ)
607 AC_SUBST(MZSCHEME_PRO)
608 AC_SUBST(MZSCHEME_LIBS)
609 AC_SUBST(MZSCHEME_CFLAGS)
610 AC_SUBST(MZSCHEME_EXTRA)
611 AC_SUBST(MZSCHEME_MZC)
615 AC_MSG_CHECKING(--enable-perlinterp argument)
616 AC_ARG_ENABLE(perlinterp,
617 [ --enable-perlinterp Include Perl interpreter.], ,
618 [enable_perlinterp="no"])
619 AC_MSG_RESULT($enable_perlinterp)
620 if test "$enable_perlinterp" = "yes"; then
621 AC_SUBST(vi_cv_path_perl)
622 AC_PATH_PROG(vi_cv_path_perl, perl)
623 if test "X$vi_cv_path_perl" != "X"; then
624 AC_MSG_CHECKING(Perl version)
625 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
626 eval `$vi_cv_path_perl -V:usethreads`
627 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
630 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
631 eval `$vi_cv_path_perl -V:use5005threads`
632 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
636 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
640 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
643 if test $badthreads = no; then
645 eval `$vi_cv_path_perl -V:shrpenv`
646 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
649 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
650 AC_SUBST(vi_cv_perllib)
651 dnl Remove "-fno-something", it breaks using cproto.
652 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
653 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
654 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
655 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
656 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
657 -e 's/-bE:perl.exp//' -e 's/-lc //'`
658 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
659 dnl a test in configure may fail because of that.
660 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
661 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
663 dnl check that compiling a simple program still works with the flags
665 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
668 ldflags_save=$LDFLAGS
669 CFLAGS="$CFLAGS $perlcppflags"
670 LIBS="$LIBS $perllibs"
671 LDFLAGS="$perlldflags $LDFLAGS"
673 AC_MSG_RESULT(yes); perl_ok=yes,
674 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
677 LDFLAGS=$ldflags_save
678 if test $perl_ok = yes; then
679 if test "X$perlcppflags" != "X"; then
680 dnl remove -pipe and -Wxxx, it confuses cproto
681 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
683 if test "X$perlldflags" != "X"; then
684 LDFLAGS="$perlldflags $LDFLAGS"
687 PERL_SRC="auto/if_perl.c if_perlsfio.c"
688 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
689 PERL_PRO="if_perl.pro if_perlsfio.pro"
694 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
698 if test "x$MACOSX" = "xyes"; then
699 dnl Mac OS X 10.2 or later
700 dir=/System/Library/Perl
701 darwindir=$dir/darwin
702 if test -d $darwindir; then
706 dir=/System/Library/Perl/5.8.1
707 darwindir=$dir/darwin-thread-multi-2level
708 if test -d $darwindir; then
712 if test -n "$PERL"; then
714 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
715 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
716 PERL_LIBS="-L$darwindir/CORE -lperl"
724 AC_SUBST(PERL_CFLAGS)
727 AC_MSG_CHECKING(--enable-eclinterp argument)
728 AC_ARG_ENABLE(eclinterp,
729 [ --enable-eclinterp Include ECL compiler.], ,
730 [enable_eclinterp="no"])
731 AC_MSG_RESULT($enable_eclinterp)
732 if test "$enable_eclinterp" = "yes"; then
733 dnl -- find the ecl-config executable
734 AC_PATH_PROG(vi_cv_path_ecl_config, ecl-config)
735 if test "X$vi_cv_path_ecl_config" != "X"; then
737 dnl -- Ask ecl-config where to find ecl's libraries
738 AC_CACHE_VAL(vi_cv_path_ecl_plibs,
740 vi_cv_path_ecl_plibs=`ecl-config --libs`
743 ECL_LIBS="${vi_cv_path_ecl_plibs}"
744 AC_CACHE_VAL(vi_cv_path_ecl_cflags,
746 vi_cv_path_ecl_cflags=`ecl-config --cflags`
748 ECL_CFLAGS="${vi_cv_path_ecl_cflags}"
751 ECL_OBJ="objects/if_ecl.o"
753 dnl check that compiling a simple program still works with the flags
755 AC_MSG_CHECKING([if compile and link flags for ECL are sane])
758 CFLAGS="$CFLAGS $ECL_CFLAGS"
759 LIBS="$LIBS $ECL_LIBS"
761 AC_MSG_RESULT(yes); ecl_ok=yes,
762 AC_MSG_RESULT(no: ECL DISABLED); ecl_ok=no)
765 if test $ecl_ok = yes; then
780 AC_MSG_CHECKING(--enable-pythoninterp argument)
781 AC_ARG_ENABLE(pythoninterp,
782 [ --enable-pythoninterp Include Python interpreter.], ,
783 [enable_pythoninterp="no"])
784 AC_MSG_RESULT($enable_pythoninterp)
785 if test "$enable_pythoninterp" = "yes"; then
786 dnl -- find the python executable
787 AC_PATH_PROG(vi_cv_path_python, python)
788 if test "X$vi_cv_path_python" != "X"; then
790 dnl -- get its version number
791 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
792 [[vi_cv_var_python_version=`
793 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
796 dnl -- it must be at least version 1.4
797 AC_MSG_CHECKING(Python is 1.4 or better)
798 if ${vi_cv_path_python} -c \
799 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
803 dnl -- find where python thinks it was installed
804 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
805 [ vi_cv_path_python_pfx=`
806 ${vi_cv_path_python} -c \
807 "import sys; print sys.prefix"` ])
809 dnl -- and where it thinks it runs
810 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
811 [ vi_cv_path_python_epfx=`
812 ${vi_cv_path_python} -c \
813 "import sys; print sys.exec_prefix"` ])
815 dnl -- python's internal library path
817 AC_CACHE_VAL(vi_cv_path_pythonpath,
818 [ vi_cv_path_pythonpath=`
820 ${vi_cv_path_python} -c \
821 "import sys, string; print string.join(sys.path,':')"` ])
823 dnl -- where the Python implementation library archives are
825 AC_ARG_WITH(python-config-dir,
826 [ --with-python-config-dir=PATH Python's config directory],
827 [ vi_cv_path_python_conf="${withval}" ] )
829 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
831 vi_cv_path_python_conf=
832 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
833 for subdir in lib64 lib share; do
834 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
835 if test -d "$d" && test -f "$d/config.c"; then
836 vi_cv_path_python_conf="$d"
842 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
844 if test "X$PYTHON_CONFDIR" = "X"; then
845 AC_MSG_RESULT([can't find it!])
848 dnl -- we need to examine Python's config/Makefile too
849 dnl see what the interpreter is built from
850 AC_CACHE_VAL(vi_cv_path_python_plibs,
853 tmp_mkf="$pwd/config-PyMake$$"
854 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
856 @echo "python_MODLIBS='$(MODLIBS)'"
857 @echo "python_LIBS='$(LIBS)'"
858 @echo "python_SYSLIBS='$(SYSLIBS)'"
859 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
861 dnl -- delete the lines from make about Entering/Leaving directory
862 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
863 rm -f -- "${tmp_mkf}"
864 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
865 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
866 vi_cv_path_python_plibs="-framework Python"
868 if test "${vi_cv_var_python_version}" = "1.4"; then
869 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
871 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
873 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
874 dnl remove -ltermcap, it can conflict with an earlier -lncurses
875 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
879 PYTHON_LIBS="${vi_cv_path_python_plibs}"
880 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
881 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
883 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}"
885 PYTHON_SRC="if_python.c"
886 dnl For Mac OSX 10.2 config.o is included in the Python library.
887 if test "x$MACOSX" = "xyes"; then
888 PYTHON_OBJ="objects/if_python.o"
890 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
892 if test "${vi_cv_var_python_version}" = "1.4"; then
893 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
895 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
897 dnl On FreeBSD linking with "-pthread" is required to use threads.
898 dnl _THREAD_SAFE must be used for compiling then.
899 dnl The "-pthread" is added to $LIBS, so that the following check for
900 dnl sigaltstack() will look in libc_r (it's there in libc!).
901 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
902 dnl will then define target-specific defines, e.g., -D_REENTRANT.
903 dnl Don't do this for Mac OSX, -pthread will generate a warning.
904 AC_MSG_CHECKING([if -pthread should be used])
907 dnl if test "x$MACOSX" != "xyes"; then
908 if test "`(uname) 2>/dev/null`" != Darwin; then
909 test "$GCC" = yes && threadsafe_flag="-pthread"
910 if test "`(uname) 2>/dev/null`" = FreeBSD; then
911 threadsafe_flag="-D_THREAD_SAFE"
912 thread_lib="-pthread"
916 if test -n "$threadsafe_flag"; then
918 CFLAGS="$CFLAGS $threadsafe_flag"
919 LIBS="$LIBS $thread_lib"
921 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
922 AC_MSG_RESULT(no); LIBS=$libs_save_old
929 dnl check that compiling a simple program still works with the flags
930 dnl added for Python.
931 AC_MSG_CHECKING([if compile and link flags for Python are sane])
934 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
935 LIBS="$LIBS $PYTHON_LIBS"
937 AC_MSG_RESULT(yes); python_ok=yes,
938 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
941 if test $python_ok = yes; then
942 AC_DEFINE(FEAT_PYTHON)
953 AC_MSG_RESULT(too old)
957 AC_SUBST(PYTHON_CONFDIR)
958 AC_SUBST(PYTHON_LIBS)
959 AC_SUBST(PYTHON_GETPATH_CFLAGS)
960 AC_SUBST(PYTHON_CFLAGS)
964 AC_MSG_CHECKING(--enable-tclinterp argument)
965 AC_ARG_ENABLE(tclinterp,
966 [ --enable-tclinterp Include Tcl interpreter.], ,
967 [enable_tclinterp="no"])
968 AC_MSG_RESULT($enable_tclinterp)
970 if test "$enable_tclinterp" = "yes"; then
972 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
973 AC_MSG_CHECKING(--with-tclsh argument)
974 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
975 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
976 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
977 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
978 AC_SUBST(vi_cv_path_tcl)
980 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
981 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
982 tclsh_name="tclsh8.4"
983 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
985 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
986 tclsh_name="tclsh8.2"
987 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
989 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
990 tclsh_name="tclsh8.0"
991 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
993 dnl still didn't find it, try without version number
994 if test "X$vi_cv_path_tcl" = "X"; then
996 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
998 if test "X$vi_cv_path_tcl" != "X"; then
999 AC_MSG_CHECKING(Tcl version)
1000 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1001 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1002 AC_MSG_RESULT($tclver - OK);
1003 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 -`
1005 AC_MSG_CHECKING(for location of Tcl include)
1006 if test "x$MACOSX" != "xyes"; then
1007 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
1009 dnl For Mac OS X 10.3, use the OS-provided framework location
1010 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1013 for try in $tclinc; do
1014 if test -f "$try/tcl.h"; then
1015 AC_MSG_RESULT($try/tcl.h)
1020 if test -z "$TCL_INC"; then
1021 AC_MSG_RESULT(<not found>)
1024 if test -z "$SKIP_TCL"; then
1025 AC_MSG_CHECKING(for location of tclConfig.sh script)
1026 if test "x$MACOSX" != "xyes"; then
1027 tclcnf=`echo $tclinc | sed s/include/lib/g`
1028 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
1030 dnl For Mac OS X 10.3, use the OS-provided framework location
1031 tclcnf="/System/Library/Frameworks/Tcl.framework"
1033 for try in $tclcnf; do
1034 if test -f $try/tclConfig.sh; then
1035 AC_MSG_RESULT($try/tclConfig.sh)
1037 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1038 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1039 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
1040 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
1041 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'`
1045 if test -z "$TCL_LIBS"; then
1046 AC_MSG_RESULT(<not found>)
1047 AC_MSG_CHECKING(for Tcl library by myself)
1048 tcllib=`echo $tclinc | sed s/include/lib/g`
1049 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
1050 for ext in .so .a ; do
1051 for ver in "" $tclver ; do
1052 for try in $tcllib ; do
1054 if test -f $try/lib$trylib ; then
1055 AC_MSG_RESULT($try/lib$trylib)
1056 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1057 if test "`(uname) 2>/dev/null`" = SunOS &&
1058 uname -r | grep '^5' >/dev/null; then
1059 TCL_LIBS="$TCL_LIBS -R $try"
1066 if test -z "$TCL_LIBS"; then
1067 AC_MSG_RESULT(<not found>)
1071 if test -z "$SKIP_TCL"; then
1074 TCL_OBJ=objects/if_tcl.o
1076 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1080 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1087 AC_SUBST(TCL_CFLAGS)
1090 AC_MSG_CHECKING(--enable-rubyinterp argument)
1091 AC_ARG_ENABLE(rubyinterp,
1092 [ --enable-rubyinterp Include Ruby interpreter.], ,
1093 [enable_rubyinterp="no"])
1094 AC_MSG_RESULT($enable_rubyinterp)
1095 if test "$enable_rubyinterp" = "yes"; then
1096 AC_MSG_CHECKING(--with-ruby-command argument)
1097 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1098 RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
1099 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
1100 AC_SUBST(vi_cv_path_ruby)
1101 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
1102 if test "X$vi_cv_path_ruby" != "X"; then
1103 AC_MSG_CHECKING(Ruby version)
1104 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
1106 AC_MSG_CHECKING(Ruby header files)
1107 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
1108 if test "X$rubyhdrdir" != "X"; then
1109 AC_MSG_RESULT($rubyhdrdir)
1110 RUBY_CFLAGS="-I$rubyhdrdir"
1111 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1112 if test -d "$rubyhdrdir/$rubyarch"; then
1113 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1115 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1116 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
1117 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1118 if test "X$rubylibs" != "X"; then
1119 RUBY_LIBS="$rubylibs"
1121 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
1122 if test -f "$rubyhdrdir/$librubyarg"; then
1123 librubyarg="$rubyhdrdir/$librubyarg"
1125 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1126 if test -f "$rubylibdir/$librubyarg"; then
1127 librubyarg="$rubylibdir/$librubyarg"
1128 elif test "$librubyarg" = "libruby.a"; then
1129 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1132 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
1136 if test "X$librubyarg" != "X"; then
1137 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1139 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1140 if test "X$rubyldflags" != "X"; then
1141 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1142 dnl be included if requested by passing --with-mac-arch to
1143 dnl configure, so strip these flags first (if present)
1144 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
1145 if test "X$rubyldflags" != "X"; then
1146 LDFLAGS="$rubyldflags $LDFLAGS"
1149 RUBY_SRC="if_ruby.c"
1150 RUBY_OBJ="objects/if_ruby.o"
1151 RUBY_PRO="if_ruby.pro"
1152 AC_DEFINE(FEAT_RUBY)
1154 AC_MSG_RESULT(not found; disabling Ruby)
1157 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1164 AC_SUBST(RUBY_CFLAGS)
1167 AC_MSG_CHECKING(--enable-cscope argument)
1168 AC_ARG_ENABLE(cscope,
1169 [ --enable-cscope Include cscope interface.], ,
1170 [enable_cscope="no"])
1171 AC_MSG_RESULT($enable_cscope)
1172 if test "$enable_cscope" = "yes"; then
1173 AC_DEFINE(FEAT_CSCOPE)
1176 AC_MSG_CHECKING(--enable-workshop argument)
1177 AC_ARG_ENABLE(workshop,
1178 [ --enable-workshop Include Sun Visual Workshop support.], ,
1179 [enable_workshop="no"])
1180 AC_MSG_RESULT($enable_workshop)
1181 if test "$enable_workshop" = "yes"; then
1182 AC_DEFINE(FEAT_SUN_WORKSHOP)
1183 WORKSHOP_SRC="workshop.c integration.c"
1184 AC_SUBST(WORKSHOP_SRC)
1185 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1186 AC_SUBST(WORKSHOP_OBJ)
1187 if test "${enable_gui-xxx}" = xxx; then
1192 AC_MSG_CHECKING(--disable-netbeans argument)
1193 AC_ARG_ENABLE(netbeans,
1194 [ --disable-netbeans Disable NetBeans integration support.],
1195 , [enable_netbeans="yes"])
1196 if test "$enable_netbeans" = "yes"; then
1198 dnl On Solaris we need the socket and nsl library.
1199 AC_CHECK_LIB(socket, socket)
1200 AC_CHECK_LIB(nsl, gethostbyname)
1201 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1208 #include <netinet/in.h>
1210 #include <sys/types.h>
1211 #include <sys/socket.h>
1212 /* Check bitfields */
1214 unsigned int initDone:1;
1218 /* Check creating a socket. */
1219 struct sockaddr_in server;
1220 (void)socket(AF_INET, SOCK_STREAM, 0);
1222 (void)gethostbyname("microsoft.com");
1223 if (errno == ECONNREFUSED)
1224 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1227 AC_MSG_RESULT(no); enable_netbeans="no")
1231 if test "$enable_netbeans" = "yes"; then
1232 AC_DEFINE(FEAT_NETBEANS_INTG)
1233 NETBEANS_SRC="netbeans.c"
1234 AC_SUBST(NETBEANS_SRC)
1235 NETBEANS_OBJ="objects/netbeans.o"
1236 AC_SUBST(NETBEANS_OBJ)
1239 AC_MSG_CHECKING(--enable-sniff argument)
1240 AC_ARG_ENABLE(sniff,
1241 [ --enable-sniff Include Sniff interface.], ,
1242 [enable_sniff="no"])
1243 AC_MSG_RESULT($enable_sniff)
1244 if test "$enable_sniff" = "yes"; then
1245 AC_DEFINE(FEAT_SNIFF)
1246 SNIFF_SRC="if_sniff.c"
1248 SNIFF_OBJ="objects/if_sniff.o"
1252 AC_MSG_CHECKING(--enable-multibyte argument)
1253 AC_ARG_ENABLE(multibyte,
1254 [ --enable-multibyte Include multibyte editing support.], ,
1255 [enable_multibyte="no"])
1256 AC_MSG_RESULT($enable_multibyte)
1257 if test "$enable_multibyte" = "yes"; then
1258 AC_DEFINE(FEAT_MBYTE)
1261 AC_MSG_CHECKING(--enable-hangulinput argument)
1262 AC_ARG_ENABLE(hangulinput,
1263 [ --enable-hangulinput Include Hangul input support.], ,
1264 [enable_hangulinput="no"])
1265 AC_MSG_RESULT($enable_hangulinput)
1267 AC_MSG_CHECKING(--enable-xim argument)
1269 [ --enable-xim Include XIM input support.],
1270 AC_MSG_RESULT($enable_xim),
1271 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1272 dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1274 AC_MSG_CHECKING(--enable-fontset argument)
1275 AC_ARG_ENABLE(fontset,
1276 [ --enable-fontset Include X fontset output support.], ,
1277 [enable_fontset="no"])
1278 AC_MSG_RESULT($enable_fontset)
1279 dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1281 test -z "$with_x" && with_x=yes
1282 test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1283 if test "$with_x" = no; then
1284 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1286 dnl Do this check early, so that its failure can override user requests.
1288 AC_PATH_PROG(xmkmfpath, xmkmf)
1292 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1293 dnl be compiled with a special option.
1294 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1295 if test "$OS390Unix" = "yes"; then
1296 CFLAGS="$CFLAGS -W c,dll"
1297 LDFLAGS="$LDFLAGS -W l,dll"
1298 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1301 dnl On my HPUX system the X include dir is found, but the lib dir not.
1302 dnl This is a desparate try to fix this.
1304 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1305 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1306 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1307 X_LIBS="$X_LIBS -L$x_libraries"
1308 if test "`(uname) 2>/dev/null`" = SunOS &&
1309 uname -r | grep '^5' >/dev/null; then
1310 X_LIBS="$X_LIBS -R $x_libraries"
1314 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1315 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1316 AC_MSG_RESULT(Corrected X includes to $x_includes)
1317 X_CFLAGS="$X_CFLAGS -I$x_includes"
1320 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1321 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1322 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1323 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1324 dnl Same for "-R/usr/lib ".
1325 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1328 dnl Check if the X11 header files are correctly installed. On some systems
1329 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1331 AC_MSG_CHECKING(if X11 header files can be found)
1333 CFLAGS="$CFLAGS $X_CFLAGS"
1334 AC_TRY_COMPILE([#include <X11/Xlib.h>
1335 #include <X11/Intrinsic.h>], ,
1337 AC_MSG_RESULT(no); no_x=yes)
1340 if test "${no_x-no}" = yes; then
1347 ac_save_LDFLAGS="$LDFLAGS"
1348 LDFLAGS="-L$x_libraries $LDFLAGS"
1350 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1351 dnl For HP-UX 10.20 it must be before -lSM -lICE
1352 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1353 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1355 dnl Some systems need -lnsl -lsocket when testing for ICE.
1356 dnl The check above doesn't do this, try here (again). Also needed to get
1357 dnl them after Xdmcp. link.sh will remove them when not needed.
1358 dnl Check for other function than above to avoid the cached value
1359 AC_CHECK_LIB(ICE, IceOpenConnection,
1360 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1362 dnl Check for -lXpm (needed for some versions of Motif)
1363 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1364 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1365 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1367 dnl Check that the X11 header files don't use implicit declarations
1368 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1370 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1371 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1373 CFLAGS="$CFLAGS -Wno-implicit-int"
1374 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1375 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1376 AC_MSG_RESULT(test failed)
1381 LDFLAGS="$ac_save_LDFLAGS"
1383 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1384 AC_CACHE_VAL(ac_cv_small_wchar_t,
1386 #include <X11/Xlib.h>
1388 # include <stdlib.h>
1389 # include <stddef.h>
1393 if (sizeof(wchar_t) <= 2)
1397 ac_cv_small_wchar_t="no",
1398 ac_cv_small_wchar_t="yes",
1399 AC_MSG_ERROR(failed to compile test program))])
1400 AC_MSG_RESULT($ac_cv_small_wchar_t)
1401 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1402 AC_DEFINE(SMALL_WCHAR_T)
1408 test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
1410 AC_MSG_CHECKING(--enable-gui argument)
1412 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
1414 dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1415 dnl Do not use character classes for portability with old tools.
1416 enable_gui_canon=`echo "_$enable_gui" | \
1417 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1419 dnl Skip everything by default.
1430 if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
1432 case "$enable_gui_canon" in
1433 no) AC_MSG_RESULT(no GUI support)
1435 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1436 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1437 photon) AC_MSG_RESULT(Photon GUI support) ;;
1438 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1442 elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1444 case "$enable_gui_canon" in
1445 no) AC_MSG_RESULT(no GUI support)
1447 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1448 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1449 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1450 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1456 case "$enable_gui_canon" in
1457 no|none) AC_MSG_RESULT(no GUI support) ;;
1458 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1466 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1468 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1471 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1474 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1478 motif) AC_MSG_RESULT(Motif GUI support)
1480 athena) AC_MSG_RESULT(Athena GUI support)
1482 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1484 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1489 if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1490 AC_MSG_CHECKING(whether or not to look for GTK)
1491 AC_ARG_ENABLE(gtk-check,
1492 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1493 , enable_gtk_check="yes")
1494 AC_MSG_RESULT($enable_gtk_check)
1495 if test "x$enable_gtk_check" = "xno"; then
1501 if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1502 -a "$enable_gui_canon" != "gnome2"; then
1503 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1504 AC_ARG_ENABLE(gtk2-check,
1505 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1506 , enable_gtk2_check="yes")
1507 AC_MSG_RESULT($enable_gtk2_check)
1508 if test "x$enable_gtk2_check" = "xno"; then
1513 if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1514 -a "$enable_gui_canon" != "gnome2"; then
1515 AC_MSG_CHECKING(whether or not to look for GNOME)
1516 AC_ARG_ENABLE(gnome-check,
1517 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1518 , enable_gnome_check="no")
1519 AC_MSG_RESULT($enable_gnome_check)
1520 if test "x$enable_gnome_check" = "xno"; then
1525 if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1526 AC_MSG_CHECKING(whether or not to look for Motif)
1527 AC_ARG_ENABLE(motif-check,
1528 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1529 , enable_motif_check="yes")
1530 AC_MSG_RESULT($enable_motif_check)
1531 if test "x$enable_motif_check" = "xno"; then
1536 if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1537 AC_MSG_CHECKING(whether or not to look for Athena)
1538 AC_ARG_ENABLE(athena-check,
1539 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1540 , enable_athena_check="yes")
1541 AC_MSG_RESULT($enable_athena_check)
1542 if test "x$enable_athena_check" = "xno"; then
1547 if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1548 AC_MSG_CHECKING(whether or not to look for neXtaw)
1549 AC_ARG_ENABLE(nextaw-check,
1550 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1551 , enable_nextaw_check="yes")
1552 AC_MSG_RESULT($enable_nextaw_check);
1553 if test "x$enable_nextaw_check" = "xno"; then
1558 if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1559 AC_MSG_CHECKING(whether or not to look for Carbon)
1560 AC_ARG_ENABLE(carbon-check,
1561 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1562 , enable_carbon_check="yes")
1563 AC_MSG_RESULT($enable_carbon_check);
1564 if test "x$enable_carbon_check" = "xno"; then
1570 if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1571 AC_MSG_CHECKING(for Carbon GUI)
1572 dnl already did the check, just give the message
1575 if test "$VIMNAME" = "vim"; then
1579 dnl Default install directory is not /usr/local
1580 if test x$prefix = xNONE; then
1581 prefix=/Applications
1584 dnl Sorry for the hard coded default
1585 datadir='${prefix}/Vim.app/Contents/Resources'
1587 dnl skip everything else
1599 dnl Get the cflags and libraries from the gtk-config script
1602 dnl define an autoconf function to check for a specified version of GTK, and
1603 dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1605 dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
1606 dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
1608 AC_DEFUN(AM_PATH_GTK,
1610 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1612 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1613 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1615 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1616 && $PKG_CONFIG --exists gtk+-2.0; then
1618 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1619 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1620 dnl something like that.
1621 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
1622 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
1623 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1624 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1625 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1626 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1627 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1628 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1629 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1631 elif test "X$GTK_CONFIG" != "Xno"; then
1633 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
1635 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1636 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1637 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1638 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1639 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1640 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1641 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1647 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1649 ac_save_CFLAGS="$CFLAGS"
1650 ac_save_LIBS="$LIBS"
1651 CFLAGS="$CFLAGS $GTK_CFLAGS"
1652 LIBS="$LIBS $GTK_LIBS"
1655 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1656 dnl checks the results of gtk-config to some extent
1660 #include <gtk/gtk.h>
1663 # include <stdlib.h>
1664 # include <stddef.h>
1670 int major, minor, micro;
1673 system ("touch conf.gtktest");
1675 /* HP/UX 9 (%@#!) writes to sscanf strings */
1676 tmp_version = g_strdup("$min_gtk_version");
1677 if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
1678 printf("%s, bad version string\n", "$min_gtk_version");
1682 if ((gtk_major_version > major) ||
1683 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1684 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1685 (gtk_micro_version >= micro)))
1691 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1692 CFLAGS="$ac_save_CFLAGS"
1693 LIBS="$ac_save_LIBS"
1696 if test "x$no_gtk" = x ; then
1697 if test "x$enable_gtktest" = "xyes"; then
1698 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1700 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1702 ifelse([$2], , :, [$2])
1708 ifelse([$3], , :, [$3])
1715 ifelse([$3], , :, [$3])
1717 AC_SUBST(GTK_CFLAGS)
1722 dnl ---------------------------------------------------------------------------
1724 dnl ---------------------------------------------------------------------------
1725 AC_DEFUN([GNOME_INIT_HOOK],
1727 AC_SUBST(GNOME_LIBS)
1728 AC_SUBST(GNOME_LIBDIR)
1729 AC_SUBST(GNOME_INCLUDEDIR)
1731 AC_ARG_WITH(gnome-includes,
1732 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1733 [CFLAGS="$CFLAGS -I$withval"]
1736 AC_ARG_WITH(gnome-libs,
1737 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1738 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1742 [ --with-gnome Specify prefix for GNOME files],
1743 if test x$withval = xyes; then
1745 ifelse([$1], [], :, [$1])
1747 if test "x$withval" = xno; then
1751 LDFLAGS="$LDFLAGS -L$withval/lib"
1752 CFLAGS="$CFLAGS -I$withval/include"
1753 gnome_prefix=$withval/lib
1758 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1760 AC_MSG_CHECKING(for libgnomeui-2.0)
1761 if $PKG_CONFIG --exists libgnomeui-2.0; then
1763 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1764 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1765 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1767 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1768 dnl This might not be the right way but it works for me...
1769 AC_MSG_CHECKING(for FreeBSD)
1770 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1771 AC_MSG_RESULT(yes, adding -pthread)
1772 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
1773 GNOME_LIBS="$GNOME_LIBS -pthread"
1779 AC_MSG_RESULT(not found)
1780 if test "x$2" = xfail; then
1781 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1785 elif test "x$want_gnome" = xyes; then
1787 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1788 if test "$GNOME_CONFIG" = "no"; then
1789 no_gnome_config="yes"
1791 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1792 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1794 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1795 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1796 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1800 no_gnome_config="yes"
1804 if test x$exec_prefix = xNONE; then
1805 if test x$prefix = xNONE; then
1806 gnome_prefix=$ac_default_prefix/lib
1808 gnome_prefix=$prefix/lib
1811 gnome_prefix=`eval echo \`echo $libdir\``
1814 if test "$no_gnome_config" = "yes"; then
1815 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1816 if test -f $gnome_prefix/gnomeConf.sh; then
1817 AC_MSG_RESULT(found)
1818 echo "loading gnome configuration from" \
1819 "$gnome_prefix/gnomeConf.sh"
1820 . $gnome_prefix/gnomeConf.sh
1823 AC_MSG_RESULT(not found)
1824 if test x$2 = xfail; then
1825 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1833 AC_DEFUN([GNOME_INIT],[
1834 GNOME_INIT_HOOK([],fail)
1838 dnl ---------------------------------------------------------------------------
1839 dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1840 dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1841 dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1842 dnl ---------------------------------------------------------------------------
1843 if test -z "$SKIP_GTK"; then
1845 AC_MSG_CHECKING(--with-gtk-prefix argument)
1846 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1847 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1848 gtk_config_prefix=""; AC_MSG_RESULT(no))
1850 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1851 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1852 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1853 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1855 AC_MSG_CHECKING(--disable-gtktest argument)
1856 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1857 , enable_gtktest=yes)
1858 if test "x$enable_gtktest" = "xyes" ; then
1859 AC_MSG_RESULT(gtk test enabled)
1861 AC_MSG_RESULT(gtk test disabled)
1864 if test "x$gtk_config_prefix" != "x" ; then
1865 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1866 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1868 if test "x$gtk_config_exec_prefix" != "x" ; then
1869 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1870 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1872 if test "X$GTK_CONFIG" = "X"; then
1873 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1874 if test "X$GTK_CONFIG" = "Xno"; then
1875 dnl Some distributions call it gtk12-config, annoying!
1876 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1877 GTK_CONFIG="$GTK12_CONFIG"
1880 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1882 if test "X$PKG_CONFIG" = "X"; then
1883 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1886 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1887 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1888 dnl problems (bold fonts, --remote doesn't work).
1889 if test "X$SKIP_GTK2" != "XYES"; then
1891 [GUI_LIB_LOC="$GTK_LIBDIR"
1892 GTK_LIBNAME="$GTK_LIBS"
1893 GUI_INC_LOC="$GTK_CFLAGS"], )
1894 if test "x$GTK_CFLAGS" != "x"; then
1899 AC_SUBST(GTK_LIBNAME)
1903 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1904 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1905 dnl were test versions.
1906 if test "x$GUITYPE" != "xGTK"; then
1909 [GTK_LIBNAME="$GTK_LIBS"
1910 GUI_INC_LOC="$GTK_CFLAGS"], )
1911 if test "x$GTK_CFLAGS" != "x"; then
1916 AC_SUBST(GTK_LIBNAME)
1920 dnl Give a warning if GTK is older than 1.2.3
1921 if test "x$GUITYPE" = "xGTK"; then
1922 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1923 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1924 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1927 if test "0$gtk_major_version" -ge 2; then
1928 AC_DEFINE(HAVE_GTK2)
1929 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1930 || test "0$gtk_minor_version" -ge 2 \
1931 || test "0$gtk_major_version" -gt 2; then
1932 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1936 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1938 if test -z "$SKIP_GNOME"; then
1940 GNOME_INIT_HOOK([have_gnome=yes])
1941 if test x$have_gnome = xyes ; then
1942 AC_DEFINE(FEAT_GUI_GNOME)
1943 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1944 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1953 dnl Check for Motif include files location.
1954 dnl The LAST one found is used, this makes the highest version to be used,
1955 dnl e.g. when Motif1.2 and Motif2.0 are both present.
1957 if test -z "$SKIP_MOTIF"; then
1958 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"
1959 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1960 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1962 AC_MSG_CHECKING(for location of Motif GUI includes)
1963 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1965 for try in $gui_includes; do
1966 if test -f "$try/Xm/Xm.h"; then
1970 if test -n "$GUI_INC_LOC"; then
1971 if test "$GUI_INC_LOC" = /usr/include; then
1973 AC_MSG_RESULT(in default path)
1975 AC_MSG_RESULT($GUI_INC_LOC)
1978 AC_MSG_RESULT(<not found>)
1983 dnl Check for Motif library files location. In the same order as the include
1984 dnl files, to avoid a mixup if several versions are present
1986 if test -z "$SKIP_MOTIF"; then
1987 AC_MSG_CHECKING(--with-motif-lib argument)
1988 AC_ARG_WITH(motif-lib,
1989 [ --with-motif-lib=STRING Library for Motif ],
1990 [ MOTIF_LIBNAME="${withval}" ] )
1992 if test -n "$MOTIF_LIBNAME"; then
1993 AC_MSG_RESULT($MOTIF_LIBNAME)
1998 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1999 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2001 AC_MSG_CHECKING(for location of Motif GUI libs)
2002 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"
2004 for try in $gui_libs; do
2005 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
2006 if test -f "$libtry"; then
2011 if test -n "$GUI_LIB_LOC"; then
2012 dnl Remove /usr/lib, it causes trouble on some systems
2013 if test "$GUI_LIB_LOC" = /usr/lib; then
2015 AC_MSG_RESULT(in default path)
2017 if test -n "$GUI_LIB_LOC"; then
2018 AC_MSG_RESULT($GUI_LIB_LOC)
2019 if test "`(uname) 2>/dev/null`" = SunOS &&
2020 uname -r | grep '^5' >/dev/null; then
2021 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2027 AC_MSG_RESULT(<not found>)
2033 if test -z "$SKIP_MOTIF"; then
2037 AC_SUBST(MOTIF_LIBNAME)
2040 dnl Check if the Athena files can be found
2044 if test -z "$SKIP_ATHENA"; then
2045 AC_MSG_CHECKING(if Athena header files can be found)
2047 CFLAGS="$CFLAGS $X_CFLAGS"
2049 #include <X11/Intrinsic.h>
2050 #include <X11/Xaw/Paned.h>], ,
2052 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2056 if test -z "$SKIP_ATHENA"; then
2060 if test -z "$SKIP_NEXTAW"; then
2061 AC_MSG_CHECKING(if neXtaw header files can be found)
2063 CFLAGS="$CFLAGS $X_CFLAGS"
2065 #include <X11/Intrinsic.h>
2066 #include <X11/neXtaw/Paned.h>], ,
2068 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2072 if test -z "$SKIP_NEXTAW"; then
2076 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2077 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2078 dnl Avoid adding it when it twice
2079 if test -n "$GUI_INC_LOC"; then
2080 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2082 if test -n "$GUI_LIB_LOC"; then
2083 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2086 dnl Check for -lXext and then for -lXmu
2087 ldflags_save=$LDFLAGS
2088 LDFLAGS="$X_LIBS $LDFLAGS"
2089 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2090 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2091 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2092 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2093 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2094 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2095 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2096 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2097 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2098 if test -z "$SKIP_MOTIF"; then
2099 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2100 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2102 LDFLAGS=$ldflags_save
2104 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2105 AC_MSG_CHECKING(for extra X11 defines)
2108 if mkdir conftestdir; then
2110 cat > Imakefile <<'EOF'
2112 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2114 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2115 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2120 if test -z "$NARROW_PROTO"; then
2123 AC_MSG_RESULT($NARROW_PROTO)
2125 AC_SUBST(NARROW_PROTO)
2128 dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2129 dnl use the X11 include path
2130 if test "$enable_xsmp" = "yes"; then
2131 cppflags_save=$CPPFLAGS
2132 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2133 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2134 CPPFLAGS=$cppflags_save
2138 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
2139 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2140 cppflags_save=$CPPFLAGS
2141 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2142 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2144 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2145 if test ! "$enable_xim" = "no"; then
2146 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2147 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2149 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2151 CPPFLAGS=$cppflags_save
2153 dnl automatically enable XIM when hangul input isn't enabled
2154 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2155 -a "x$GUITYPE" != "xNONE" ; then
2156 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2161 if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2162 cppflags_save=$CPPFLAGS
2163 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2164 dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2165 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2167 #include <X11/Intrinsic.h>
2168 #include <X11/Xmu/Editres.h>],
2171 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2173 CPPFLAGS=$cppflags_save
2176 dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2177 if test -z "$SKIP_MOTIF"; then
2178 cppflags_save=$CPPFLAGS
2179 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2180 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
2181 Xm/UnhighlightT.h Xm/Notebook.h)
2183 if test $ac_cv_header_Xm_XpmP_h = yes; then
2184 dnl Solaris uses XpmAttributes_21, very annoying.
2185 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2186 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2187 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2188 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2191 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2193 CPPFLAGS=$cppflags_save
2196 if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2197 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2200 if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2201 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2204 if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2205 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2209 if test -z "$SKIP_PHOTON"; then
2213 AC_SUBST(GUI_INC_LOC)
2214 AC_SUBST(GUI_LIB_LOC)
2216 AC_SUBST(GUI_X_LIBS)
2218 if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2219 AC_MSG_ERROR([cannot use workshop without Motif])
2222 dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2223 if test "$enable_xim" = "yes"; then
2226 if test "$enable_fontset" = "yes"; then
2227 AC_DEFINE(FEAT_XFONTSET)
2231 dnl ---------------------------------------------------------------------------
2232 dnl end of GUI-checking
2233 dnl ---------------------------------------------------------------------------
2236 dnl Only really enable hangul input when GUI and XFONTSET are available
2237 if test "$enable_hangulinput" = "yes"; then
2238 if test "x$GUITYPE" = "xNONE"; then
2239 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2240 enable_hangulinput=no
2242 AC_DEFINE(FEAT_HANGULIN)
2243 HANGULIN_SRC=hangulin.c
2244 AC_SUBST(HANGULIN_SRC)
2245 HANGULIN_OBJ=objects/hangulin.o
2246 AC_SUBST(HANGULIN_OBJ)
2250 dnl Checks for libraries and include files.
2252 AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2255 #include "confdefs.h"
2258 # include <stdlib.h>
2259 # include <stddef.h>
2261 main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2263 vim_cv_toupper_broken=yes
2265 vim_cv_toupper_broken=no
2267 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2270 if test "x$vim_cv_toupper_broken" = "xyes" ; then
2271 AC_DEFINE(BROKEN_TOUPPER)
2274 AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2275 AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
2276 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2279 AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2280 AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2281 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2284 dnl Checks for header files.
2285 AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2286 dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2287 if test "$HAS_ELF" = 1; then
2288 AC_CHECK_LIB(elf, main)
2293 dnl If sys/wait.h is not found it might still exist but not be POSIX
2294 dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2295 if test $ac_cv_header_sys_wait_h = no; then
2296 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2297 AC_TRY_COMPILE([#include <sys/wait.h>],
2298 [union wait xx, yy; xx = yy],
2300 AC_DEFINE(HAVE_SYS_WAIT_H)
2301 AC_DEFINE(HAVE_UNION_WAIT),
2305 AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2306 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
2307 iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
2308 sys/resource.h sys/systeminfo.h locale.h \
2309 sys/stream.h termios.h libc.h sys/statfs.h \
2310 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
2311 libgen.h util/debug.h util/msg18n.h frame.h \
2312 sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
2314 dnl sys/ptem.h depends on sys/stream.h on Solaris
2315 AC_CHECK_HEADERS(sys/ptem.h, [], [],
2316 [#if defined HAVE_SYS_STREAM_H
2317 # include <sys/stream.h>
2320 dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2321 AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2322 [#if defined HAVE_SYS_PARAM_H
2323 # include <sys/param.h>
2327 dnl pthread_np.h may exist but can only be used after including pthread.h
2328 AC_MSG_CHECKING([for pthread_np.h])
2330 #include <pthread.h>
2331 #include <pthread_np.h>],
2334 AC_DEFINE(HAVE_PTHREAD_NP_H),
2337 AC_CHECK_HEADERS(strings.h)
2338 if test "x$MACOSX" = "xyes"; then
2339 dnl The strings.h file on OS/X contains a warning and nothing useful.
2340 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2343 dnl Check if strings.h and string.h can both be included when defined.
2344 AC_MSG_CHECKING([if strings.h can be included after string.h])
2345 cppflags_save=$CPPFLAGS
2346 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2348 #if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2349 # define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2350 /* but don't do it on AIX 5.1 (Uribarri) */
2353 # include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2355 #ifdef HAVE_STRING_H
2356 # include <string.h>
2358 #if defined(HAVE_STRINGS_H)
2359 # include <strings.h>
2363 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2365 CPPFLAGS=$cppflags_save
2368 dnl Checks for typedefs, structures, and compiler characteristics.
2369 AC_PROG_GCC_TRADITIONAL
2378 AC_CHECK_TYPE(ino_t, long)
2379 AC_CHECK_TYPE(dev_t, unsigned)
2381 AC_MSG_CHECKING(for rlim_t)
2382 if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2383 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2386 changequote(<<,>>)dnl
2387 <<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2390 #include <sys/types.h>
2392 # include <stdlib.h>
2393 # include <stddef.h>
2395 #ifdef HAVE_SYS_RESOURCE_H
2396 # include <sys/resource.h>
2398 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2399 AC_MSG_RESULT($ac_cv_type_rlim_t)
2401 if test $ac_cv_type_rlim_t = no; then
2402 cat >> confdefs.h <<\EOF
2403 #define rlim_t unsigned long
2407 AC_MSG_CHECKING(for stack_t)
2408 if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2409 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2411 AC_EGREP_CPP(stack_t,
2413 #include <sys/types.h>
2415 # include <stdlib.h>
2416 # include <stddef.h>
2419 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2420 AC_MSG_RESULT($ac_cv_type_stack_t)
2422 if test $ac_cv_type_stack_t = no; then
2423 cat >> confdefs.h <<\EOF
2424 #define stack_t struct sigaltstack
2428 dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2429 AC_MSG_CHECKING(whether stack_t has an ss_base field)
2431 #include <sys/types.h>
2433 # include <stdlib.h>
2434 # include <stddef.h>
2437 #include "confdefs.h"
2438 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2439 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2443 AC_MSG_CHECKING(--with-tlib argument)
2444 AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2445 if test -n "$with_tlib"; then
2446 AC_MSG_RESULT($with_tlib)
2447 LIBS="$LIBS -l$with_tlib"
2448 AC_MSG_CHECKING(for linking with $with_tlib library)
2449 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2450 dnl Need to check for tgetent() below.
2453 AC_MSG_RESULT([empty: automatic terminal library selection])
2454 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2455 dnl curses, because curses is much slower.
2456 dnl Newer versions of ncurses are preferred over anything.
2457 dnl Older versions of ncurses have bugs, get a new one!
2458 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
2459 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
2460 case "`uname -s 2>/dev/null`" in
2461 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
2462 *) tlibs="ncurses termlib termcap curses";;
2464 for libname in $tlibs; do
2465 AC_CHECK_LIB(${libname}, tgetent,,)
2466 if test "x$olibs" != "x$LIBS"; then
2467 dnl It's possible that a library is found but it doesn't work
2468 dnl e.g., shared library that cannot be found
2469 dnl compile and run a test program to be sure
2471 #ifdef HAVE_TERMCAP_H
2472 # include <termcap.h>
2475 # include <stdlib.h>
2476 # include <stddef.h>
2478 main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2479 res="OK", res="FAIL", res="FAIL")
2480 if test "$res" = "OK"; then
2483 AC_MSG_RESULT($libname library is not usable)
2487 if test "x$olibs" = "x$LIBS"; then
2488 AC_MSG_RESULT(no terminal library found)
2492 if test "x$olibs" = "x$LIBS"; then
2493 AC_MSG_CHECKING([for tgetent()])
2495 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2497 AC_MSG_ERROR([NOT FOUND!
2498 You need to install a terminal library; for example ncurses.
2499 Or specify the name of the library with --with-tlib.]))
2502 AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2505 #include "confdefs.h"
2506 #ifdef HAVE_TERMCAP_H
2507 # include <termcap.h>
2509 #ifdef HAVE_STRING_H
2510 # include <string.h>
2513 # include <stdlib.h>
2514 # include <stddef.h>
2517 {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2523 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2527 if test "x$vim_cv_terminfo" = "xyes" ; then
2531 if test "x$olibs" != "x$LIBS"; then
2532 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2535 #include "confdefs.h"
2536 #ifdef HAVE_TERMCAP_H
2537 # include <termcap.h>
2540 # include <stdlib.h>
2541 # include <stddef.h>
2544 {char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2548 vim_cv_tgent=non-zero
2550 AC_MSG_ERROR(failed to compile test program.)
2554 if test "x$vim_cv_tgent" = "xzero" ; then
2555 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2559 AC_MSG_CHECKING(whether termcap.h contains ospeed)
2561 #ifdef HAVE_TERMCAP_H
2562 # include <termcap.h>
2564 ], [ospeed = 20000],
2565 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2567 AC_MSG_CHECKING(whether ospeed can be extern)
2569 #ifdef HAVE_TERMCAP_H
2570 # include <termcap.h>
2572 extern short ospeed;
2573 ], [ospeed = 20000],
2574 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2578 AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2580 #ifdef HAVE_TERMCAP_H
2581 # include <termcap.h>
2583 ], [if (UP == 0 && BC == 0) PC = 1],
2584 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2586 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2588 #ifdef HAVE_TERMCAP_H
2589 # include <termcap.h>
2591 extern char *UP, *BC, PC;
2592 ], [if (UP == 0 && BC == 0) PC = 1],
2593 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2597 AC_MSG_CHECKING(whether tputs() uses outfuntype)
2599 #ifdef HAVE_TERMCAP_H
2600 # include <termcap.h>
2602 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2603 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2606 dnl On some SCO machines sys/select redefines struct timeval
2607 AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2609 #include <sys/types.h>
2610 #include <sys/time.h>
2611 #include <sys/select.h>], ,
2613 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2616 dnl AC_DECL_SYS_SIGLIST
2618 dnl Checks for pty.c (copied from screen) ==========================
2619 AC_MSG_CHECKING(for /dev/ptc)
2620 if test -r /dev/ptc; then
2621 AC_DEFINE(HAVE_DEV_PTC)
2627 AC_MSG_CHECKING(for SVR4 ptys)
2628 if test -c /dev/ptmx ; then
2629 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2630 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2636 AC_MSG_CHECKING(for ptyranges)
2637 if test -d /dev/ptym ; then
2647 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2648 dnl if test -c /dev/ptyp19; then
2649 dnl ptys=`echo /dev/ptyp??`
2651 dnl ptys=`echo $pdir/pty??`
2653 if test "$ptys" != "$pdir/pty??" ; then
2654 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2655 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2656 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2657 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2658 AC_MSG_RESULT([$p0 / $p1])
2660 AC_MSG_RESULT([don't know])
2663 dnl **** pty mode/group handling ****
2665 dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2667 AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2670 #include "confdefs.h"
2671 #include <sys/types.h>
2673 # include <stdlib.h>
2674 # include <stddef.h>
2676 #ifdef HAVE_UNISTD_H
2679 #include <sys/stat.h>
2688 if (!(x = ttyname(0))) exit(1);
2689 if (stat(x, &sb)) exit(1);
2691 if (om & 002) exit(0);
2692 m = system("mesg y");
2693 if (m == -1 || m == 127) exit(1);
2694 if (stat(x, &sb)) exit(1);
2696 if (chmod(x, om)) exit(1);
2697 if (m & 002) exit(0);
2698 if (sb.st_gid == getgid()) exit(1);
2699 if (!(fp=fopen("conftest_grp", "w")))
2701 fprintf(fp, "%d\n", sb.st_gid);
2706 if test -f conftest_grp; then
2707 vim_cv_tty_group=`cat conftest_grp`
2708 if test "x$vim_cv_tty_mode" = "x" ; then
2709 vim_cv_tty_mode=0620
2711 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2713 vim_cv_tty_group=world
2714 AC_MSG_RESULT([ptys are world accessible])
2717 vim_cv_tty_group=world
2718 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
2720 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2725 if test "x$vim_cv_tty_group" != "xworld" ; then
2726 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2727 if test "x$vim_cv_tty_mode" = "x" ; then
2728 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)])
2730 AC_DEFINE(PTYMODE, 0620)
2734 dnl Checks for library functions. ===================================
2738 dnl find out what to use at the end of a signal function
2739 if test $ac_cv_type_signal = void; then
2740 AC_DEFINE(SIGRETURN, [return])
2742 AC_DEFINE(SIGRETURN, [return 0])
2745 dnl check if struct sigcontext is defined (used for SGI only)
2746 AC_MSG_CHECKING(for struct sigcontext)
2751 struct sigcontext *scont;
2752 scont = (struct sigcontext *)0;
2756 AC_DEFINE(HAVE_SIGCONTEXT),
2759 dnl tricky stuff: try to find out if getcwd() is implemented with
2760 dnl system("sh -c pwd")
2761 AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2764 #include "confdefs.h"
2765 #ifdef HAVE_UNISTD_H
2768 char *dagger[] = { "IFS=pwd", 0 };
2772 extern char **environ;
2774 return getcwd(buffer, 500) ? 0 : 1;
2777 vim_cv_getcwd_broken=no
2779 vim_cv_getcwd_broken=yes
2781 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2785 if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2786 AC_DEFINE(BAD_GETCWD)
2789 dnl Check for functions in one big call, to reduce the size of configure.
2790 dnl Can only be used for functions that do not require any include.
2791 AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
2792 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2793 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
2794 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
2795 sigvec strcasecmp strerror strftime stricmp strncasecmp \
2796 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2797 usleep utime utimes)
2800 dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
2801 dnl appropriate, so that off_t is 64 bits when needed.
2804 dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2805 AC_MSG_CHECKING(for st_blksize)
2807 [#include <sys/types.h>
2808 #include <sys/stat.h>],
2813 n = (int)st.st_blksize;],
2814 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2817 AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2820 #include "confdefs.h"
2822 # include <stdlib.h>
2823 # include <stddef.h>
2825 #include <sys/types.h>
2826 #include <sys/stat.h>
2827 main() {struct stat st; exit(stat("configure/", &st) != 0); }
2829 vim_cv_stat_ignores_slash=yes
2831 vim_cv_stat_ignores_slash=no
2833 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2837 if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2838 AC_DEFINE(STAT_IGNORES_SLASH)
2841 dnl Link with iconv for charset translation, if not found without library.
2842 dnl check for iconv() requires including iconv.h
2843 dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2844 dnl has been installed.
2845 AC_MSG_CHECKING(for iconv_open())
2847 LIBS="$LIBS -liconv"
2852 ], [iconv_open("fr", "to");],
2853 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2859 ], [iconv_open("fr", "to");],
2860 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2864 AC_MSG_CHECKING(for nl_langinfo(CODESET))
2866 #ifdef HAVE_LANGINFO_H
2867 # include <langinfo.h>
2869 ], [char *cs = nl_langinfo(CODESET);],
2870 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2873 dnl Need various functions for floating point support. Only enable
2874 dnl floating point when they are all present.
2875 AC_CHECK_LIB(m, strtod)
2876 AC_MSG_CHECKING([for strtod() and other floating point functions])
2882 # include <stdlib.h>
2883 # include <stddef.h>
2885 ], [char *s; double d;
2886 d = strtod("1.1", &s);
2891 d = pow(1.11, 2.22);
2897 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2900 dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2901 dnl when -lacl works, also try to use -lattr (required for Debian).
2902 AC_MSG_CHECKING(--disable-acl argument)
2904 [ --disable-acl Don't check for ACL support.],
2905 , [enable_acl="yes"])
2906 if test "$enable_acl" = "yes"; then
2908 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2909 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2910 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2912 AC_MSG_CHECKING(for POSIX ACL support)
2914 #include <sys/types.h>
2915 #ifdef HAVE_SYS_ACL_H
2916 # include <sys/acl.h>
2918 acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2919 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2921 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2924 AC_MSG_CHECKING(for Solaris ACL support)
2926 #ifdef HAVE_SYS_ACL_H
2927 # include <sys/acl.h>
2928 #endif], [acl("foo", GETACLCNT, 0, NULL);
2930 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2933 AC_MSG_CHECKING(for AIX ACL support)
2936 # include <stdlib.h>
2937 # include <stddef.h>
2939 #ifdef HAVE_SYS_ACL_H
2940 # include <sys/acl.h>
2942 #ifdef HAVE_SYS_ACCESS_H
2943 # include <sys/access.h>
2947 #include <sys/stat.h>
2950 struct acl *aclent;], [aclsize = sizeof(struct acl);
2951 aclent = (void *)malloc(aclsize);
2952 statacl("foo", STX_NORMAL, aclent, aclsize);
2954 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2960 AC_MSG_CHECKING(--disable-gpm argument)
2962 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2965 if test "$enable_gpm" = "yes"; then
2967 dnl Checking if gpm support can be compiled
2968 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2969 [olibs="$LIBS" ; LIBS="-lgpm"]
2972 #include <linux/keyboard.h>],
2973 [Gpm_GetLibVersion(NULL);],
2974 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2975 dnl FEAT_MOUSE_GPM if mouse support is included
2976 [vi_cv_have_gpm=yes],
2977 [vi_cv_have_gpm=no])
2980 if test $vi_cv_have_gpm = yes; then
2988 AC_MSG_CHECKING(--disable-sysmouse argument)
2989 AC_ARG_ENABLE(sysmouse,
2990 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
2991 [enable_sysmouse="yes"])
2993 if test "$enable_sysmouse" = "yes"; then
2995 dnl Checking if sysmouse support can be compiled
2996 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2997 dnl defines FEAT_SYSMOUSE if mouse support is included
2998 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3000 [#include <sys/consio.h>
3002 #include <sys/fbio.h>],
3003 [struct mouse_info mouse;
3004 mouse.operation = MOUSE_MODE;
3005 mouse.operation = MOUSE_SHOW;
3006 mouse.u.mode.mode = 0;
3007 mouse.u.mode.signal = SIGUSR2;],
3008 [vi_cv_have_sysmouse=yes],
3009 [vi_cv_have_sysmouse=no])
3011 if test $vi_cv_have_sysmouse = yes; then
3012 AC_DEFINE(HAVE_SYSMOUSE)
3018 dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3019 AC_MSG_CHECKING(for FD_CLOEXEC)
3024 [ int flag = FD_CLOEXEC;],
3025 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3026 AC_MSG_RESULT(not usable))
3028 dnl rename needs to be checked separately to work on Nextstep with cc
3029 AC_MSG_CHECKING(for rename)
3030 AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3031 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3034 dnl sysctl() may exist but not the arguments we use
3035 AC_MSG_CHECKING(for sysctl)
3037 [#include <sys/types.h>
3038 #include <sys/sysctl.h>],
3043 mib[1] = HW_USERMEM;
3045 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3047 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3048 AC_MSG_RESULT(not usable))
3050 dnl sysinfo() may exist but not be Linux compatible
3051 AC_MSG_CHECKING(for sysinfo)
3053 [#include <sys/types.h>
3054 #include <sys/sysinfo.h>],
3055 [ struct sysinfo sinfo;
3058 (void)sysinfo(&sinfo);
3061 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3062 AC_MSG_RESULT(not usable))
3064 dnl struct sysinfo may have the mem_unit field or not
3065 AC_MSG_CHECKING(for sysinfo.mem_unit)
3067 [#include <sys/types.h>
3068 #include <sys/sysinfo.h>],
3069 [ struct sysinfo sinfo;
3072 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3075 dnl sysconf() may exist but not support what we want to use
3076 AC_MSG_CHECKING(for sysconf)
3078 [#include <unistd.h>],
3079 [ (void)sysconf(_SC_PAGESIZE);
3080 (void)sysconf(_SC_PHYS_PAGES);
3082 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3083 AC_MSG_RESULT(not usable))
3085 dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
3086 dnl be printed with "%d", and avoids a warning for cross-compiling.
3088 AC_MSG_CHECKING(size of int)
3089 AC_CACHE_VAL(ac_cv_sizeof_int,
3093 # include <stdlib.h>
3094 # include <stddef.h>
3098 FILE *f=fopen("conftestval", "w");
3100 fprintf(f, "%d\n", (int)sizeof(int));
3103 ac_cv_sizeof_int=`cat conftestval`,
3105 AC_MSG_ERROR(failed to compile test program))])
3106 AC_MSG_RESULT($ac_cv_sizeof_int)
3107 AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
3109 dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3110 dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3113 #include "confdefs.h"
3114 #ifdef HAVE_STRING_H
3115 # include <string.h>
3118 # include <stdlib.h>
3119 # include <stddef.h>
3123 strcpy(buf, "abcdefghi");
3124 mch_memmove(buf, buf + 2, 3);
3125 if (strncmp(buf, "ababcf", 6))
3127 strcpy(buf, "abcdefghi");
3128 mch_memmove(buf + 2, buf, 3);
3129 if (strncmp(buf, "cdedef", 6))
3131 exit(0); /* libc version works properly. */
3134 AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3136 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3138 vim_cv_memmove_handles_overlap=yes
3140 vim_cv_memmove_handles_overlap=no
3142 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3146 if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3147 AC_DEFINE(USEMEMMOVE)
3149 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3151 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3153 vim_cv_bcopy_handles_overlap=yes
3155 vim_cv_bcopy_handles_overlap=no
3157 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3161 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3164 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3166 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3168 vim_cv_memcpy_handles_overlap=yes
3170 vim_cv_memcpy_handles_overlap=no
3172 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3176 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3177 AC_DEFINE(USEMEMCPY)
3183 dnl Check for multibyte locale functions
3184 dnl Find out if _Xsetlocale() is supported by libX11.
3185 dnl Check if X_LOCALE should be defined.
3187 if test "$enable_multibyte" = "yes"; then
3189 ldflags_save=$LDFLAGS
3190 if test "x$x_includes" != "xNONE" ; then
3191 CFLAGS="$CFLAGS -I$x_includes"
3192 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3193 AC_MSG_CHECKING(whether X_LOCALE needed)
3194 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3195 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3196 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3200 LDFLAGS=$ldflags_save
3203 dnl Link with xpg4, it is said to make Korean locale working
3204 AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3206 dnl Check how we can run ctags. Default to "ctags" when nothing works.
3207 dnl --version for Exuberant ctags (preferred)
3208 dnl Add --fields=+S to get function signatures for omni completion.
3209 dnl -t for typedefs (many ctags have this)
3210 dnl -s for static functions (Elvis ctags only?)
3211 dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3212 dnl -i+m to test for older Exuberant ctags
3213 AC_MSG_CHECKING(how to create tags)
3214 test -f tags && mv tags tags.save
3215 if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3216 TAGPRG="ctags -I INIT+ --fields=+S"
3219 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3220 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3221 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3222 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3223 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3224 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3225 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3227 test -f tags.save && mv tags.save tags
3228 AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3230 dnl Check how we can run man with a section number
3231 AC_MSG_CHECKING(how to run man with a section nr)
3233 (eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
3234 AC_MSG_RESULT($MANDEF)
3235 if test "$MANDEF" = "man -s"; then
3239 dnl Check if gettext() is working and if it needs -lintl
3240 AC_MSG_CHECKING(--disable-nls argument)
3242 [ --disable-nls Don't support NLS (gettext()).], ,
3245 if test "$enable_nls" = "yes"; then
3248 INSTALL_LANGS=install-languages
3249 AC_SUBST(INSTALL_LANGS)
3250 INSTALL_TOOL_LANGS=install-tool-languages
3251 AC_SUBST(INSTALL_TOOL_LANGS)
3253 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3254 AC_MSG_CHECKING([for NLS])
3255 if test -f po/Makefile; then
3257 if test -n "$MSGFMT"; then
3259 [#include <libintl.h>],
3261 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3265 [#include <libintl.h>],
3267 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3268 AC_MSG_RESULT([gettext() doesn't work]);
3271 AC_MSG_RESULT([msgfmt not found - disabled]);
3273 if test $have_gettext = "yes"; then
3274 AC_DEFINE(HAVE_GETTEXT)
3277 dnl this was added in GNU gettext 0.10.36
3278 AC_CHECK_FUNCS(bind_textdomain_codeset)
3279 dnl _nl_msg_cat_cntr is required for GNU gettext
3280 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3282 [#include <libintl.h>
3283 extern int _nl_msg_cat_cntr;],
3284 [++_nl_msg_cat_cntr;],
3285 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3286 AC_MSG_RESULT([no]))
3289 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3295 dnl Check for dynamic linking loader
3296 AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3297 if test x${DLL} = xdlfcn.h; then
3298 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3299 AC_MSG_CHECKING([for dlopen()])
3301 extern void* dlopen();
3305 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3307 AC_MSG_CHECKING([for dlopen() in -ldl])
3311 extern void* dlopen();
3315 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3318 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3320 AC_MSG_CHECKING([for dlsym()])
3322 extern void* dlsym();
3326 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3328 AC_MSG_CHECKING([for dlsym() in -ldl])
3332 extern void* dlsym();
3336 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3339 elif test x${DLL} = xdl.h; then
3340 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3341 AC_MSG_CHECKING([for shl_load()])
3343 extern void* shl_load();
3347 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3349 AC_MSG_CHECKING([for shl_load() in -ldld])
3353 extern void* shl_load();
3357 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3361 AC_CHECK_HEADERS(setjmp.h)
3363 if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3364 dnl -ldl must come after DynaLoader.a
3365 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3366 LIBS=`echo $LIBS | sed s/-ldl//`
3367 PERL_LIBS="$PERL_LIBS -ldl"
3371 if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3372 && test "x$GUITYPE" != "xCARBONGUI"; then
3373 AC_MSG_CHECKING(whether we need -framework Carbon)
3374 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3375 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
3376 || test "x$features" = "xhuge"; then
3377 LIBS="$LIBS -framework Carbon"
3383 if test "x$MACARCH" = "xboth"; then
3384 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3387 dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3388 dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3389 dnl But only when making dependencies, cproto and lint don't take "-isystem".
3390 dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3391 dnl the number before the version number.
3392 DEPEND_CFLAGS_FILTER=
3393 if test "$GCC" = yes; then
3394 AC_MSG_CHECKING(for GCC 3 or later)
3395 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
3396 if test "$gccmajor" -gt "2"; then
3397 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3402 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3403 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
3404 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
3405 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3406 if test "$gccmajor" -gt "3"; then
3407 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
3413 AC_SUBST(DEPEND_CFLAGS_FILTER)
3415 dnl write output files
3416 AC_OUTPUT(auto/config.mk:config.mk.in)
3418 dnl vim: set sw=2 tw=78 fo+=l: