blob: 404fbafd067affcf053cae13cc4463417b31cc03 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
26dnl Set default value for CFLAGS if none is defined or it's empty
27if test -z "$CFLAGS"; then
28 CFLAGS="-O"
29 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
30fi
31if test "$GCC" = yes; then
32 gccversion=`"$CC" --version | sed -e '2,$d;s/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
Bram Moolenaara5792f52005-11-23 21:25:05 +000033 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
34 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
35 echo 'GCC [34].0.[12] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000036 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
37 else
38 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
39 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
40 CFLAGS="$CFLAGS -fno-strength-reduce"
41 fi
42 fi
43fi
44
45dnl If configure thinks we are cross compiling, there is probably something
46dnl wrong with the CC or CFLAGS settings, give an understandable error message
47if test "$cross_compiling" = yes; then
48 AC_MSG_ERROR([cannot compile a simple program, check CC and CFLAGS
49 (cross compiling doesn't work)])
50fi
51
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000052dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
53dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000054test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
55
56if test -f ./toolcheck; then
57 AC_CHECKING(for buggy tools)
58 sh ./toolcheck 1>&AC_FD_MSG
59fi
60
61OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
62
63dnl Check for BeOS, which needs an extra source file
64AC_MSG_CHECKING(for BeOS)
65case `uname` in
66 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
67 BEOS=yes; AC_MSG_RESULT(yes);;
68 *) BEOS=no; AC_MSG_RESULT(no);;
69esac
70
71dnl If QNX is found, assume we don't want to use Xphoton
72dnl unless it was specifically asked for (--with-x)
73AC_MSG_CHECKING(for QNX)
74case `uname` in
75 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
76 test -z "$with_x" && with_x=no
77 QNX=yes; AC_MSG_RESULT(yes);;
78 *) QNX=no; AC_MSG_RESULT(no);;
79esac
80
81dnl Check for Darwin and MacOS X
82dnl We do a check for MacOS X in the very beginning because there
83dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +000084AC_MSG_CHECKING([for Darwin (Mac OS X)])
85if test "`(uname) 2>/dev/null`" = Darwin; then
86 AC_MSG_RESULT(yes)
87
88 AC_MSG_CHECKING(--disable-darwin argument)
89 AC_ARG_ENABLE(darwin,
90 [ --disable-darwin Disable Darwin (Mac OS X) support.],
91 , [enable_darwin="yes"])
92 if test "$enable_darwin" = "yes"; then
93 AC_MSG_RESULT(no)
94 AC_MSG_CHECKING(if Darwin files are there)
95 if test -f os_macosx.c; then
96 AC_MSG_RESULT(yes)
97 else
98 AC_MSG_RESULT([no, Darwin support disabled])
99 enable_darwin=no
100 fi
101 else
102 AC_MSG_RESULT([yes, Darwin support excluded])
103 fi
104
105 if test "$enable_darwin" = "yes"; then
106 MACOSX=yes
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000107 OS_EXTRA_SCR="os_macosx.c os_mac_conv.c";
108 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000109 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -I/Developer/Headers/FlatCarbon -no-cpp-precomp"
110
111 dnl If Carbon is found, assume we don't want X11
112 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000113 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000114 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
115 if test "x$CARBON" = "xyes"; then
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000116 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
Bram Moolenaar071d4272004-06-13 20:20:40 +0000117 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000118 fi
119 fi
120 fi
121else
122 AC_MSG_RESULT(no)
123fi
124
125AC_SUBST(OS_EXTRA_SRC)
126AC_SUBST(OS_EXTRA_OBJ)
127
128dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
129dnl Only when the directory exists and it wasn't there yet.
130dnl For gcc don't do this when it is already in the default search path.
131have_local_include=''
132have_local_lib=''
133if test "$GCC" = yes; then
134 echo 'void f(){}' > conftest.c
135 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
136 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep '/usr/local/include'`
137 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep '/usr/local/lib'`
138 rm -f conftest.c conftest.o
139fi
140if test -z "$have_local_lib" -a -d /usr/local/lib; then
141 tt=`echo "$LDFLAGS" | sed -e 's+-L/usr/local/lib ++g' -e 's+-L/usr/local/lib$++g'`
142 if test "$tt" = "$LDFLAGS"; then
143 LDFLAGS="$LDFLAGS -L/usr/local/lib"
144 fi
145fi
146if test -z "$have_local_include" -a -d /usr/local/include; then
147 tt=`echo "$CPPFLAGS" | sed -e 's+-I/usr/local/include ++g' -e 's+-I/usr/local/include$++g'`
148 if test "$tt" = "$CPPFLAGS"; then
149 CPPFLAGS="$CPPFLAGS -I/usr/local/include"
150 fi
151fi
152
153AC_MSG_CHECKING(--with-vim-name argument)
154AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
155 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000156 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000157AC_SUBST(VIMNAME)
158AC_MSG_CHECKING(--with-ex-name argument)
159AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
160 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
161 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
162AC_SUBST(EXNAME)
163AC_MSG_CHECKING(--with-view-name argument)
164AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
165 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
166 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
167AC_SUBST(VIEWNAME)
168
169AC_MSG_CHECKING(--with-global-runtime argument)
170AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
171 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
172 AC_MSG_RESULT(no))
173
174AC_MSG_CHECKING(--with-modified-by argument)
175AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
176 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
177 AC_MSG_RESULT(no))
178
179dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
180AC_MSG_CHECKING(if character set is EBCDIC)
181AC_TRY_COMPILE([ ],
182[ /* TryCompile function for CharSet.
183 Treat any failure as ASCII for compatibility with existing art.
184 Use compile-time rather than run-time tests for cross-compiler
185 tolerance. */
186#if '0'!=240
187make an error "Character set is not EBCDIC"
188#endif ],
189[ # TryCompile action if true
190cf_cv_ebcdic=yes ],
191[ # TryCompile action if false
192cf_cv_ebcdic=no])
193# end of TryCompile ])
194# end of CacheVal CvEbcdic
195AC_MSG_RESULT($cf_cv_ebcdic)
196case "$cf_cv_ebcdic" in #(vi
197 yes) AC_DEFINE(EBCDIC)
198 line_break='"\\n"'
199 ;;
200 *) line_break='"\\012"';;
201esac
202AC_SUBST(line_break)
203
204if test "$cf_cv_ebcdic" = "yes"; then
205dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
206AC_MSG_CHECKING(for OS/390 Unix)
207case `uname` in
208 OS/390) OS390Unix="yes";
209 dnl If using cc the environment variable _CC_CCMODE must be
210 dnl set to "1", so that some compiler extensions are enabled.
211 dnl If using c89 the environment variable is named _CC_C89MODE.
212 dnl Note: compile with c89 never tested.
213 if test "$CC" = "cc"; then
214 ccm="$_CC_CCMODE"
215 ccn="CC"
216 else
217 if test "$CC" = "c89"; then
218 ccm="$_CC_C89MODE"
219 ccn="C89"
220 else
221 ccm=1
222 fi
223 fi
224 if test "$ccm" != "1"; then
225 echo ""
226 echo "------------------------------------------"
227 echo " On OS/390 Unix, the environment variable"
228 echo " __CC_${ccn}MODE must be set to \"1\"!"
229 echo " Do:"
230 echo " export _CC_${ccn}MODE=1"
231 echo " and then call configure again."
232 echo "------------------------------------------"
233 exit 1
234 fi
235 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
236 AC_MSG_RESULT(yes)
237 ;;
238 *) OS390Unix="no";
239 AC_MSG_RESULT(no)
240 ;;
241esac
242fi
243
244
245dnl Check user requested features.
246
247AC_MSG_CHECKING(--with-features argument)
248AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
249 features="$withval"; AC_MSG_RESULT($features),
250 features="normal"; AC_MSG_RESULT(Defaulting to normal))
251
252dovimdiff=""
253dogvimdiff=""
254case "$features" in
255 tiny) AC_DEFINE(FEAT_TINY) ;;
256 small) AC_DEFINE(FEAT_SMALL) ;;
257 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
258 dogvimdiff="installgvimdiff" ;;
259 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
260 dogvimdiff="installgvimdiff" ;;
261 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
262 dogvimdiff="installgvimdiff" ;;
263 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
264esac
265
266AC_SUBST(dovimdiff)
267AC_SUBST(dogvimdiff)
268
269AC_MSG_CHECKING(--with-compiledby argument)
270AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
271 compiledby="$withval"; AC_MSG_RESULT($withval),
272 compiledby=""; AC_MSG_RESULT(no))
273AC_SUBST(compiledby)
274
275AC_MSG_CHECKING(--disable-xsmp argument)
276AC_ARG_ENABLE(xsmp,
277 [ --disable-xsmp Disable XSMP session management],
278 , enable_xsmp="yes")
279
280if test "$enable_xsmp" = "yes"; then
281 AC_MSG_RESULT(no)
282 AC_MSG_CHECKING(--disable-xsmp-interact argument)
283 AC_ARG_ENABLE(xsmp-interact,
284 [ --disable-xsmp-interact Disable XSMP interaction],
285 , enable_xsmp_interact="yes")
286 if test "$enable_xsmp_interact" = "yes"; then
287 AC_MSG_RESULT(no)
288 AC_DEFINE(USE_XSMP_INTERACT)
289 else
290 AC_MSG_RESULT(yes)
291 fi
292else
293 AC_MSG_RESULT(yes)
294fi
295
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000296dnl Check for MzScheme feature.
297AC_MSG_CHECKING(--enable-mzschemeinterp argument)
298AC_ARG_ENABLE(mzschemeinterp,
299 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
300 [enable_mzschemeinterp="no"])
301AC_MSG_RESULT($enable_mzschemeinterp)
302
303if test "$enable_mzschemeinterp" = "yes"; then
304 dnl -- find the mzscheme executable
305 AC_SUBST(vi_cv_path_mzscheme)
306
307 AC_MSG_CHECKING(--with-plthome argument)
308 AC_ARG_WITH(plthome,
309 [ --with-plthome=PLTHOME Use PLTHOME.],
310 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
311 with_plthome="";AC_MSG_RESULT("no"))
312
313 if test "X$with_plthome" != "X"; then
314 vi_cv_path_mzscheme_pfx="$with_plthome"
315 else
316 AC_MSG_CHECKING(PLTHOME environment var)
317 if test "X$PLTHOME" != "X"; then
318 AC_MSG_RESULT("$PLTHOME")
319 vi_cv_path_mzscheme_pfx="$PLTHOME"
320 else
321 AC_MSG_RESULT("not set")
322 dnl -- try to find MzScheme executable
323 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
324
325 dnl resolve symbolic link, the executable is often elsewhere and there
326 dnl are no links for the include files.
327 if test "X$vi_cv_path_mzscheme" != "X"; then
328 lsout=`ls -l $vi_cv_path_mzscheme`
329 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
330 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
331 fi
332 fi
333
334 if test "X$vi_cv_path_mzscheme" != "X"; then
335 dnl -- find where MzScheme thinks it was installed
336 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
337 [ vi_cv_path_mzscheme_pfx=`
338 ${vi_cv_path_mzscheme} -evm \
339 "(display (simplify-path \
340 (build-path (call-with-values \
341 (lambda () (split-path (find-system-path (quote exec-file)))) \
342 (lambda (base name must-be-dir?) base)) (quote up))))"` ])
343 dnl Remove a trailing slash.
344 vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
345 fi
346 fi
347 fi
348
349 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
350 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
351 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
352 AC_MSG_RESULT("yes")
353 else
354 AC_MSG_RESULT("no")
355 vi_cv_path_mzscheme_pfx=
356 fi
357 fi
358
359 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
360 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
361 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a ${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"
362 else
363 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzgc -lmzscheme"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000364 if test "$GCC" = yes; then
365 dnl Make Vim remember the path to the library. For when it's not in
366 dnl $LD_LIBRARY_PATH.
367 MZSCHEME_LIBS="$MZSCHEME_LIBS -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000368 elif test "`(uname) 2>/dev/null`" = SunOS &&
369 uname -r | grep '^5' >/dev/null; then
370 MZSCHEME_LIBS="$MZSCHEME_LIBS -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000371 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000372 fi
373 MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include \
374 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/collects\"'"
375 MZSCHEME_SRC="if_mzsch.c"
376 MZSCHEME_OBJ="objects/if_mzsch.o"
377 MZSCHEME_PRO="if_mzsch.pro"
378 AC_DEFINE(FEAT_MZSCHEME)
379 fi
380 AC_SUBST(MZSCHEME_SRC)
381 AC_SUBST(MZSCHEME_OBJ)
382 AC_SUBST(MZSCHEME_PRO)
383 AC_SUBST(MZSCHEME_LIBS)
384 AC_SUBST(MZSCHEME_CFLAGS)
385fi
386
387
Bram Moolenaar071d4272004-06-13 20:20:40 +0000388AC_MSG_CHECKING(--enable-perlinterp argument)
389AC_ARG_ENABLE(perlinterp,
390 [ --enable-perlinterp Include Perl interpreter.], ,
391 [enable_perlinterp="no"])
392AC_MSG_RESULT($enable_perlinterp)
393if test "$enable_perlinterp" = "yes"; then
394 AC_SUBST(vi_cv_path_perl)
395 AC_PATH_PROG(vi_cv_path_perl, perl)
396 if test "X$vi_cv_path_perl" != "X"; then
397 AC_MSG_CHECKING(Perl version)
398 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
399 eval `$vi_cv_path_perl -V:usethreads`
400 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
401 badthreads=no
402 else
403 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
404 eval `$vi_cv_path_perl -V:use5005threads`
405 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
406 badthreads=no
407 else
408 badthreads=yes
409 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
410 fi
411 else
412 badthreads=yes
413 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
414 fi
415 fi
416 if test $badthreads = no; then
417 AC_MSG_RESULT(OK)
418 eval `$vi_cv_path_perl -V:shrpenv`
419 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
420 shrpenv=""
421 fi
422 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
423 AC_SUBST(vi_cv_perllib)
424 dnl Remove "-fno-something", it breaks using cproto.
425 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
426 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
427 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
428 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
429 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
430 -e 's/-bE:perl.exp//' -e 's/-lc //'`
431 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
432 dnl a test in configure may fail because of that.
433 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
434 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
435
436 dnl check that compiling a simple program still works with the flags
437 dnl added for Perl.
438 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
439 cflags_save=$CFLAGS
440 libs_save=$LIBS
441 ldflags_save=$LDFLAGS
442 CFLAGS="$CFLAGS $perlcppflags"
443 LIBS="$LIBS $perllibs"
444 LDFLAGS="$perlldflags $LDFLAGS"
445 AC_TRY_LINK(,[ ],
446 AC_MSG_RESULT(yes); perl_ok=yes,
447 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
448 CFLAGS=$cflags_save
449 LIBS=$libs_save
450 LDFLAGS=$ldflags_save
451 if test $perl_ok = yes; then
452 if test "X$perlcppflags" != "X"; then
453 PERL_CFLAGS="$perlcppflags"
454 fi
455 if test "X$perlldflags" != "X"; then
456 LDFLAGS="$perlldflags $LDFLAGS"
457 fi
458 PERL_LIBS=$perllibs
459 PERL_SRC="auto/if_perl.c if_perlsfio.c"
460 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
461 PERL_PRO="if_perl.pro if_perlsfio.pro"
462 AC_DEFINE(FEAT_PERL)
463 fi
464 fi
465 else
466 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
467 fi
468 fi
469
470 if test "x$MACOSX" = "xyes"; then
471 dnl Mac OS X 10.2 or 10.3
472 dir=/System/Library/Perl
473 darwindir=$dir/darwin
474 if test -d $darwindir; then
475 PERL=/usr/bin/perl
476 else
477 dnl Mac OS X 10.3
478 dir=/System/Library/Perl/5.8.1
479 darwindir=$dir/darwin-thread-multi-2level
480 if test -d $darwindir; then
481 PERL=/usr/bin/perl
482 fi
483 fi
484 if test -n "$PERL"; then
485 PERL_DIR="$dir"
486 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
487 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
488 PERL_LIBS="-L$darwindir/CORE -lperl"
489 fi
490 fi
491fi
492AC_SUBST(shrpenv)
493AC_SUBST(PERL_SRC)
494AC_SUBST(PERL_OBJ)
495AC_SUBST(PERL_PRO)
496AC_SUBST(PERL_CFLAGS)
497AC_SUBST(PERL_LIBS)
498
499AC_MSG_CHECKING(--enable-pythoninterp argument)
500AC_ARG_ENABLE(pythoninterp,
501 [ --enable-pythoninterp Include Python interpreter.], ,
502 [enable_pythoninterp="no"])
503AC_MSG_RESULT($enable_pythoninterp)
504if test "$enable_pythoninterp" = "yes"; then
505 dnl -- find the python executable
506 AC_PATH_PROG(vi_cv_path_python, python)
507 if test "X$vi_cv_path_python" != "X"; then
508
509 dnl -- get its version number
510 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
511 [[vi_cv_var_python_version=`
512 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
513 ]])
514
515 dnl -- it must be at least version 1.4
516 AC_MSG_CHECKING(Python is 1.4 or better)
517 if ${vi_cv_path_python} -c \
518 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
519 then
520 AC_MSG_RESULT(yep)
521
522 dnl -- find where python thinks it was installed
523 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
524 [ vi_cv_path_python_pfx=`
525 ${vi_cv_path_python} -c \
526 "import sys; print sys.prefix"` ])
527
528 dnl -- and where it thinks it runs
529 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
530 [ vi_cv_path_python_epfx=`
531 ${vi_cv_path_python} -c \
532 "import sys; print sys.exec_prefix"` ])
533
534 dnl -- python's internal library path
535
536 AC_CACHE_VAL(vi_cv_path_pythonpath,
537 [ vi_cv_path_pythonpath=`
538 unset PYTHONPATH;
539 ${vi_cv_path_python} -c \
540 "import sys, string; print string.join(sys.path,':')"` ])
541
542 dnl -- where the Python implementation library archives are
543
544 AC_ARG_WITH(python-config-dir,
545 [ --with-python-config-dir=PATH Python's config directory],
546 [ vi_cv_path_python_conf="${withval}" ] )
547
548 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
549 [
550 vi_cv_path_python_conf=
551 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
552 for subdir in lib share; do
553 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
554 if test -d "$d" && test -f "$d/config.c"; then
555 vi_cv_path_python_conf="$d"
556 fi
557 done
558 done
559 ])
560
561 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
562
563 if test "X$PYTHON_CONFDIR" = "X"; then
564 AC_MSG_RESULT([can't find it!])
565 else
566
567 dnl -- we need to examine Python's config/Makefile too
568 dnl see what the interpreter is built from
569 AC_CACHE_VAL(vi_cv_path_python_plibs,
570 [
571 tmp_mkf="/tmp/Makefile-conf$$"
572 cat ${PYTHON_CONFDIR}/Makefile - <<'eof' >${tmp_mkf}
573__:
574 @echo "python_MODLIBS='$(MODLIBS)'"
575 @echo "python_LIBS='$(LIBS)'"
576 @echo "python_SYSLIBS='$(SYSLIBS)'"
577 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
578eof
579 dnl -- delete the lines from make about Entering/Leaving directory
580 eval "`cd ${PYTHON_CONFDIR} && make -f ${tmp_mkf} __ | sed '/ directory /d'`"
581 rm -f ${tmp_mkf}
582 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
583 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
584 vi_cv_path_python_plibs="-framework Python"
585 else
586 if test "${vi_cv_var_python_version}" = "1.4"; then
587 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
588 else
589 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
590 fi
591 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
592 dnl remove -ltermcap, it can conflict with an earlier -lncurses
593 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
594 fi
595 ])
596
597 PYTHON_LIBS="${vi_cv_path_python_plibs}"
598 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
599 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
600 else
601 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}"
602 fi
603 PYTHON_SRC="if_python.c"
604 dnl For Mac OSX 10.2 config.o is included in the Python library.
605 if test "x$MACOSX" = "xyes"; then
606 PYTHON_OBJ="objects/if_python.o"
607 else
608 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
609 fi
610 if test "${vi_cv_var_python_version}" = "1.4"; then
611 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
612 fi
613 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
614
615 dnl On FreeBSD linking with "-pthread" is required to use threads.
616 dnl _THREAD_SAFE must be used for compiling then.
617 dnl The "-pthread" is added to $LIBS, so that the following check for
618 dnl sigaltstack() will look in libc_r (it's there in libc!).
619 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
620 dnl will then define target-specific defines, e.g., -D_REENTRANT.
621 dnl Don't do this for Mac OSX, -pthread will generate a warning.
622 AC_MSG_CHECKING([if -pthread should be used])
623 threadsafe_flag=
624 thread_lib=
625 if test "x$MACOSX" != "xyes"; then
626 test "$GCC" = yes && threadsafe_flag="-pthread"
627 if test "`(uname) 2>/dev/null`" = FreeBSD; then
628 threadsafe_flag="-D_THREAD_SAFE"
629 thread_lib="-pthread"
630 fi
631 fi
632 libs_save_old=$LIBS
633 if test -n "$threadsafe_flag"; then
634 cflags_save=$CFLAGS
635 CFLAGS="$CFLAGS $threadsafe_flag"
636 LIBS="$LIBS $thread_lib"
637 AC_TRY_LINK(,[ ],
638 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
639 AC_MSG_RESULT(no); LIBS=$libs_save_old
640 )
641 CFLAGS=$cflags_save
642 else
643 AC_MSG_RESULT(no)
644 fi
645
646 dnl check that compiling a simple program still works with the flags
647 dnl added for Python.
648 AC_MSG_CHECKING([if compile and link flags for Python are sane])
649 cflags_save=$CFLAGS
650 libs_save=$LIBS
651 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
652 LIBS="$LIBS $PYTHON_LIBS"
653 AC_TRY_LINK(,[ ],
654 AC_MSG_RESULT(yes); python_ok=yes,
655 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
656 CFLAGS=$cflags_save
657 LIBS=$libs_save
658 if test $python_ok = yes; then
659 AC_DEFINE(FEAT_PYTHON)
660 else
661 LIBS=$libs_save_old
662 PYTHON_SRC=
663 PYTHON_OBJ=
664 PYTHON_LIBS=
665 PYTHON_CFLAGS=
666 fi
667
668 fi
669 else
670 AC_MSG_RESULT(too old)
671 fi
672 fi
673fi
674AC_SUBST(PYTHON_CONFDIR)
675AC_SUBST(PYTHON_LIBS)
676AC_SUBST(PYTHON_GETPATH_CFLAGS)
677AC_SUBST(PYTHON_CFLAGS)
678AC_SUBST(PYTHON_SRC)
679AC_SUBST(PYTHON_OBJ)
680
681AC_MSG_CHECKING(--enable-tclinterp argument)
682AC_ARG_ENABLE(tclinterp,
683 [ --enable-tclinterp Include Tcl interpreter.], ,
684 [enable_tclinterp="no"])
685AC_MSG_RESULT($enable_tclinterp)
686
687if test "$enable_tclinterp" = "yes"; then
688
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000689 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[420]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000690 AC_MSG_CHECKING(--with-tclsh argument)
691 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
692 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000693 tclsh_name="tclsh8.4"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000694 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
695 AC_SUBST(vi_cv_path_tcl)
696
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000697 dnl when no specific version specified, also try 8.2 and 8.0
698 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000699 tclsh_name="tclsh8.2"
700 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
701 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000702 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
703 tclsh_name="tclsh8.0"
704 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
705 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000706 dnl still didn't find it, try without version number
707 if test "X$vi_cv_path_tcl" = "X"; then
708 tclsh_name="tclsh"
709 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
710 fi
711 if test "X$vi_cv_path_tcl" != "X"; then
712 AC_MSG_CHECKING(Tcl version)
713 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
714 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
715 AC_MSG_RESULT($tclver - OK);
716 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 -`
717
718 AC_MSG_CHECKING(for location of Tcl include)
719 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar47136d72004-10-12 20:02:24 +0000720 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/include"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000721 else
722 dnl For Mac OS X 10.3, use the OS-provided framework location
723 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
724 fi
725 for try in $tclinc; do
726 if test -f "$try/tcl.h"; then
727 AC_MSG_RESULT($try/tcl.h)
728 TCL_INC=$try
729 break
730 fi
731 done
732 if test -z "$TCL_INC"; then
733 AC_MSG_RESULT(<not found>)
734 SKIP_TCL=YES
735 fi
736 if test -z "$SKIP_TCL"; then
737 AC_MSG_CHECKING(for location of tclConfig.sh script)
738 if test "x$MACOSX" != "xyes"; then
739 tclcnf=`echo $tclinc | sed s/include/lib/g`
740 else
741 dnl For Mac OS X 10.3, use the OS-provided framework location
742 tclcnf="/System/Library/Frameworks/Tcl.framework"
743 fi
744 for try in $tclcnf; do
745 if test -f $try/tclConfig.sh; then
746 AC_MSG_RESULT($try/tclConfig.sh)
747 . $try/tclConfig.sh
748 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
749 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
750 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000751 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaara5792f52005-11-23 21:25:05 +0000752 TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\ /\\X/' | tr ' ' '\012' | sed -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr -d '\012'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000753 break
754 fi
755 done
756 if test -z "$TCL_LIBS"; then
757 AC_MSG_RESULT(<not found>)
758 AC_MSG_CHECKING(for Tcl library by myself)
759 tcllib=`echo $tclinc | sed s/include/lib/g`
760 for ext in .so .a ; do
761 for ver in "" $tclver ; do
762 for try in $tcllib ; do
763 trylib=tcl$ver$ext
764 if test -f $try/lib$trylib ; then
765 AC_MSG_RESULT($try/lib$trylib)
766 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
767 if test "`(uname) 2>/dev/null`" = SunOS &&
768 uname -r | grep '^5' >/dev/null; then
769 TCL_LIBS="$TCL_LIBS -R $try"
770 fi
771 break 3
772 fi
773 done
774 done
775 done
776 if test -z "$TCL_LIBS"; then
777 AC_MSG_RESULT(<not found>)
778 SKIP_TCL=YES
779 fi
780 fi
781 if test -z "$SKIP_TCL"; then
782 AC_DEFINE(FEAT_TCL)
783 TCL_SRC=if_tcl.c
784 TCL_OBJ=objects/if_tcl.o
785 TCL_PRO=if_tcl.pro
786 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
787 fi
788 fi
789 else
790 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
791 fi
792 fi
793fi
794AC_SUBST(TCL_SRC)
795AC_SUBST(TCL_OBJ)
796AC_SUBST(TCL_PRO)
797AC_SUBST(TCL_CFLAGS)
798AC_SUBST(TCL_LIBS)
799
800AC_MSG_CHECKING(--enable-rubyinterp argument)
801AC_ARG_ENABLE(rubyinterp,
802 [ --enable-rubyinterp Include Ruby interpreter.], ,
803 [enable_rubyinterp="no"])
804AC_MSG_RESULT($enable_rubyinterp)
805if test "$enable_rubyinterp" = "yes"; then
806 AC_SUBST(vi_cv_path_ruby)
807 AC_PATH_PROG(vi_cv_path_ruby, ruby)
808 if test "X$vi_cv_path_ruby" != "X"; then
809 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +0000810 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000811 AC_MSG_RESULT(OK)
812 AC_MSG_CHECKING(Ruby header files)
813 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
814 if test "X$rubyhdrdir" != "X"; then
815 AC_MSG_RESULT($rubyhdrdir)
816 RUBY_CFLAGS="-I$rubyhdrdir"
817 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
818 if test "X$rubylibs" != "X"; then
819 RUBY_LIBS="$rubylibs"
820 fi
821 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
822 if test -f "$rubyhdrdir/$librubyarg"; then
823 librubyarg="$rubyhdrdir/$librubyarg"
824 else
825 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
826 if test -f "$rubylibdir/$librubyarg"; then
827 librubyarg="$rubylibdir/$librubyarg"
828 elif test "$librubyarg" = "libruby.a"; then
829 dnl required on Mac OS 10.3 where libruby.a doesn't exist
830 librubyarg="-lruby"
831 else
832 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
833 fi
834 fi
835
836 if test "X$librubyarg" != "X"; then
837 RUBY_LIBS="$librubyarg $RUBY_LIBS"
838 fi
839 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
840 if test "X$rubyldflags" != "X"; then
841 LDFLAGS="$rubyldflags $LDFLAGS"
842 fi
843 RUBY_SRC="if_ruby.c"
844 RUBY_OBJ="objects/if_ruby.o"
845 RUBY_PRO="if_ruby.pro"
846 AC_DEFINE(FEAT_RUBY)
847 else
848 AC_MSG_RESULT(not found, disabling Ruby)
849 fi
850 else
851 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
852 fi
853 fi
854fi
855AC_SUBST(RUBY_SRC)
856AC_SUBST(RUBY_OBJ)
857AC_SUBST(RUBY_PRO)
858AC_SUBST(RUBY_CFLAGS)
859AC_SUBST(RUBY_LIBS)
860
861AC_MSG_CHECKING(--enable-cscope argument)
862AC_ARG_ENABLE(cscope,
863 [ --enable-cscope Include cscope interface.], ,
864 [enable_cscope="no"])
865AC_MSG_RESULT($enable_cscope)
866if test "$enable_cscope" = "yes"; then
867 AC_DEFINE(FEAT_CSCOPE)
868fi
869
870AC_MSG_CHECKING(--enable-workshop argument)
871AC_ARG_ENABLE(workshop,
872 [ --enable-workshop Include Sun Visual Workshop support.], ,
873 [enable_workshop="no"])
874AC_MSG_RESULT($enable_workshop)
875if test "$enable_workshop" = "yes"; then
876 AC_DEFINE(FEAT_SUN_WORKSHOP)
877 WORKSHOP_SRC="workshop.c integration.c"
878 AC_SUBST(WORKSHOP_SRC)
879 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
880 AC_SUBST(WORKSHOP_OBJ)
881 if test "${enable_gui-xxx}" = xxx; then
882 enable_gui=motif
883 fi
884fi
885
886AC_MSG_CHECKING(--disable-netbeans argument)
887AC_ARG_ENABLE(netbeans,
888 [ --disable-netbeans Disable NetBeans integration support.],
889 , [enable_netbeans="yes"])
890if test "$enable_netbeans" = "yes"; then
891 AC_MSG_RESULT(no)
892 dnl On Solaris we need the socket and nsl library.
893 AC_CHECK_LIB(socket, socket)
894 AC_CHECK_LIB(nsl, gethostbyname)
895 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
896 AC_TRY_LINK([
897#include <stdio.h>
898#include <stdlib.h>
899#include <stdarg.h>
900#include <fcntl.h>
901#include <netdb.h>
902#include <netinet/in.h>
903#include <errno.h>
904#include <sys/types.h>
905#include <sys/socket.h>
906 /* Check bitfields */
907 struct nbbuf {
908 unsigned int initDone:1;
909 ushort signmaplen;
910 };
911 ], [
912 /* Check creating a socket. */
913 struct sockaddr_in server;
914 (void)socket(AF_INET, SOCK_STREAM, 0);
915 (void)htons(100);
916 (void)gethostbyname("microsoft.com");
917 if (errno == ECONNREFUSED)
918 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
919 ],
920 AC_MSG_RESULT(yes),
921 AC_MSG_RESULT(no); enable_netbeans="no")
922else
923 AC_MSG_RESULT(yes)
924fi
925if test "$enable_netbeans" = "yes"; then
926 AC_DEFINE(FEAT_NETBEANS_INTG)
927 NETBEANS_SRC="netbeans.c"
928 AC_SUBST(NETBEANS_SRC)
929 NETBEANS_OBJ="objects/netbeans.o"
930 AC_SUBST(NETBEANS_OBJ)
931fi
932
933AC_MSG_CHECKING(--enable-sniff argument)
934AC_ARG_ENABLE(sniff,
935 [ --enable-sniff Include Sniff interface.], ,
936 [enable_sniff="no"])
937AC_MSG_RESULT($enable_sniff)
938if test "$enable_sniff" = "yes"; then
939 AC_DEFINE(FEAT_SNIFF)
940 SNIFF_SRC="if_sniff.c"
941 AC_SUBST(SNIFF_SRC)
942 SNIFF_OBJ="objects/if_sniff.o"
943 AC_SUBST(SNIFF_OBJ)
944fi
945
946AC_MSG_CHECKING(--enable-multibyte argument)
947AC_ARG_ENABLE(multibyte,
948 [ --enable-multibyte Include multibyte editing support.], ,
949 [enable_multibyte="no"])
950AC_MSG_RESULT($enable_multibyte)
951if test "$enable_multibyte" = "yes"; then
952 AC_DEFINE(FEAT_MBYTE)
953fi
954
955AC_MSG_CHECKING(--enable-hangulinput argument)
956AC_ARG_ENABLE(hangulinput,
957 [ --enable-hangulinput Include Hangul input support.], ,
958 [enable_hangulinput="no"])
959AC_MSG_RESULT($enable_hangulinput)
960
961AC_MSG_CHECKING(--enable-xim argument)
962AC_ARG_ENABLE(xim,
963 [ --enable-xim Include XIM input support.],
964 AC_MSG_RESULT($enable_xim),
965 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
966dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
967
968AC_MSG_CHECKING(--enable-fontset argument)
969AC_ARG_ENABLE(fontset,
970 [ --enable-fontset Include X fontset output support.], ,
971 [enable_fontset="no"])
972AC_MSG_RESULT($enable_fontset)
973dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
974
975test -z "$with_x" && with_x=yes
976test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
977if test "$with_x" = no; then
978 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
979else
980 dnl Do this check early, so that its failure can override user requests.
981
982 AC_PATH_PROG(xmkmfpath, xmkmf)
983
984 AC_PATH_XTRA
985
986 dnl On OS390Unix the X libraries are DLLs. To use them the code must
987 dnl be compiled with a special option.
988 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
989 if test "$OS390Unix" = "yes"; then
990 CFLAGS="$CFLAGS -W c,dll"
991 LDFLAGS="$LDFLAGS -W l,dll"
992 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
993 fi
994
995 dnl On my HPUX system the X include dir is found, but the lib dir not.
996 dnl This is a desparate try to fix this.
997
998 if test -d "$x_includes" && test ! -d "$x_libraries"; then
999 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1000 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1001 X_LIBS="$X_LIBS -L$x_libraries"
1002 if test "`(uname) 2>/dev/null`" = SunOS &&
1003 uname -r | grep '^5' >/dev/null; then
1004 X_LIBS="$X_LIBS -R $x_libraries"
1005 fi
1006 fi
1007
1008 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1009 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1010 AC_MSG_RESULT(Corrected X includes to $x_includes)
1011 X_CFLAGS="$X_CFLAGS -I$x_includes"
1012 fi
1013
1014 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1015 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1016 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1017 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1018 dnl Same for "-R/usr/lib ".
1019 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1020
1021
1022 dnl Check if the X11 header files are correctly installed. On some systems
1023 dnl Xlib.h includes files that don't exist
1024 AC_MSG_CHECKING(if X11 header files can be found)
1025 cflags_save=$CFLAGS
1026 CFLAGS="$CFLAGS $X_CFLAGS"
1027 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1028 AC_MSG_RESULT(yes),
1029 AC_MSG_RESULT(no); no_x=yes)
1030 CFLAGS=$cflags_save
1031
1032 if test "${no_x-no}" = yes; then
1033 with_x=no
1034 else
1035 AC_DEFINE(HAVE_X11)
1036 X_LIB="-lXt -lX11";
1037 AC_SUBST(X_LIB)
1038
1039 ac_save_LDFLAGS="$LDFLAGS"
1040 LDFLAGS="-L$x_libraries $LDFLAGS"
1041
1042 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1043 dnl For HP-UX 10.20 it must be before -lSM -lICE
1044 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1045 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1046
1047 dnl Some systems need -lnsl -lsocket when testing for ICE.
1048 dnl The check above doesn't do this, try here (again). Also needed to get
1049 dnl them after Xdmcp. link.sh will remove them when not needed.
1050 dnl Check for other function than above to avoid the cached value
1051 AC_CHECK_LIB(ICE, IceOpenConnection,
1052 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1053
1054 dnl Check for -lXpm (needed for some versions of Motif)
1055 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1056 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1057 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1058
1059 dnl Check that the X11 header files don't use implicit declarations
1060 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1061 cflags_save=$CFLAGS
1062 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1063 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1064 AC_MSG_RESULT(no),
1065 CFLAGS="$CFLAGS -Wno-implicit-int"
1066 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1067 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1068 AC_MSG_RESULT(test failed)
1069 )
1070 )
1071 CFLAGS=$cflags_save
1072
1073 LDFLAGS="$ac_save_LDFLAGS"
1074
1075 fi
1076fi
1077
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001078test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001079
1080AC_MSG_CHECKING(--enable-gui argument)
1081AC_ARG_ENABLE(gui,
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001082 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/kde/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00001083
1084dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1085dnl Do not use character classes for portability with old tools.
1086enable_gui_canon=`echo "_$enable_gui" | \
1087 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1088
1089dnl Skip everything by default.
1090SKIP_GTK=YES
1091SKIP_GTK2=YES
1092SKIP_GNOME=YES
Bram Moolenaar592e0a22004-07-03 16:05:59 +00001093SKIP_KDE=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001094SKIP_MOTIF=YES
1095SKIP_ATHENA=YES
1096SKIP_NEXTAW=YES
1097SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001098SKIP_CARBON=YES
1099GUITYPE=NONE
1100
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001101if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001102 SKIP_PHOTON=
1103 case "$enable_gui_canon" in
1104 no) AC_MSG_RESULT(no GUI support)
1105 SKIP_PHOTON=YES ;;
1106 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1107 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1108 photon) AC_MSG_RESULT(Photon GUI support) ;;
1109 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1110 SKIP_PHOTON=YES ;;
1111 esac
1112
1113elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1114 SKIP_CARBON=
1115 case "$enable_gui_canon" in
1116 no) AC_MSG_RESULT(no GUI support)
1117 SKIP_CARBON=YES ;;
1118 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1119 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1120 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1121 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1122 SKIP_CARBON=YES ;;
1123 esac
1124
1125else
1126
Bram Moolenaar071d4272004-06-13 20:20:40 +00001127 case "$enable_gui_canon" in
1128 no|none) AC_MSG_RESULT(no GUI support) ;;
1129 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1130 SKIP_GTK=
1131 SKIP_GTK2=
1132 SKIP_GNOME=
1133 SKIP_MOTIF=
1134 SKIP_ATHENA=
1135 SKIP_NEXTAW=
1136 SKIP_CARBON=;;
Bram Moolenaar843ee412004-06-30 16:16:41 +00001137 kde|Kde|KDE) AC_MSG_RESULT(KDE 2.x or 3.x GUI support)
1138 SKIP_KDE=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001139 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1140 SKIP_GTK=;;
1141 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1142 SKIP_GTK=
1143 SKIP_GTK2=;;
1144 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1145 SKIP_GNOME=
1146 SKIP_GTK=;;
1147 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1148 SKIP_GNOME=
1149 SKIP_GTK=
1150 SKIP_GTK2=;;
1151 motif) AC_MSG_RESULT(Motif GUI support)
1152 SKIP_MOTIF=;;
1153 athena) AC_MSG_RESULT(Athena GUI support)
1154 SKIP_ATHENA=;;
1155 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1156 SKIP_NEXTAW=;;
1157 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1158 esac
1159
1160fi
1161
Bram Moolenaar843ee412004-06-30 16:16:41 +00001162if test "x$SKIP_KDE" != "xYES" -a "$enable_gui_canon" != "kde"; then
1163 AC_MSG_CHECKING(whether or not to look for KDE)
1164 AC_ARG_ENABLE(kde-check,
1165 [ --enable-kde-check If auto-select GUI, check for KDE [default=no]],
1166 ,enable_kde_check="no")
1167 AC_MSG_RESULT($enable_kde_check);
1168 if test "x$enable_kde_check" = "xno"; then
1169 SKIP_KDE=YES
1170 fi
1171fi
1172
Bram Moolenaar071d4272004-06-13 20:20:40 +00001173if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1174 AC_MSG_CHECKING(whether or not to look for GTK)
1175 AC_ARG_ENABLE(gtk-check,
1176 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1177 , enable_gtk_check="yes")
1178 AC_MSG_RESULT($enable_gtk_check)
1179 if test "x$enable_gtk_check" = "xno"; then
1180 SKIP_GTK=YES
1181 SKIP_GNOME=YES
1182 fi
1183fi
1184
1185if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1186 -a "$enable_gui_canon" != "gnome2"; then
1187 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1188 AC_ARG_ENABLE(gtk2-check,
1189 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1190 , enable_gtk2_check="yes")
1191 AC_MSG_RESULT($enable_gtk2_check)
1192 if test "x$enable_gtk2_check" = "xno"; then
1193 SKIP_GTK2=YES
1194 fi
1195fi
1196
1197if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1198 -a "$enable_gui_canon" != "gnome2"; then
1199 AC_MSG_CHECKING(whether or not to look for GNOME)
1200 AC_ARG_ENABLE(gnome-check,
1201 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1202 , enable_gnome_check="no")
1203 AC_MSG_RESULT($enable_gnome_check)
1204 if test "x$enable_gnome_check" = "xno"; then
1205 SKIP_GNOME=YES
1206 fi
1207fi
1208
1209if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1210 AC_MSG_CHECKING(whether or not to look for Motif)
1211 AC_ARG_ENABLE(motif-check,
1212 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1213 , enable_motif_check="yes")
1214 AC_MSG_RESULT($enable_motif_check)
1215 if test "x$enable_motif_check" = "xno"; then
1216 SKIP_MOTIF=YES
1217 fi
1218fi
1219
1220if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1221 AC_MSG_CHECKING(whether or not to look for Athena)
1222 AC_ARG_ENABLE(athena-check,
1223 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1224 , enable_athena_check="yes")
1225 AC_MSG_RESULT($enable_athena_check)
1226 if test "x$enable_athena_check" = "xno"; then
1227 SKIP_ATHENA=YES
1228 fi
1229fi
1230
1231if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1232 AC_MSG_CHECKING(whether or not to look for neXtaw)
1233 AC_ARG_ENABLE(nextaw-check,
1234 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1235 , enable_nextaw_check="yes")
1236 AC_MSG_RESULT($enable_nextaw_check);
1237 if test "x$enable_nextaw_check" = "xno"; then
1238 SKIP_NEXTAW=YES
1239 fi
1240fi
1241
1242if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1243 AC_MSG_CHECKING(whether or not to look for Carbon)
1244 AC_ARG_ENABLE(carbon-check,
1245 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1246 , enable_carbon_check="yes")
1247 AC_MSG_RESULT($enable_carbon_check);
1248 if test "x$enable_carbon_check" = "xno"; then
1249 SKIP_CARBON=YES
1250 fi
1251fi
1252
Bram Moolenaar843ee412004-06-30 16:16:41 +00001253dnl ---------------------------------------------------------------------------
1254dnl we use the kde-config script included in KDE since 2.x to check which
1255dnl version of KDE, we'll use. We'll use additional args in configure to
1256dnl obtain the QT directory (includes and libs) as qt does not give any
1257dnl config script ! (shame on the trolls ! ;p)
1258dnl ---------------------------------------------------------------------------
1259
1260if test -z "$SKIP_KDE"; then
1261dnl ------------------
1262dnl now, take care of QT
1263dnl -----------------
1264AC_ARG_WITH(qt-dir,
1265 [ --with-qt-dir=DIR Specify prefix of QT files],
1266 [
1267 ROOTQT="$withval"
1268 MOC="$withval"/bin/moc
1269 QT_INCLUDES="$withval"/include
1270 QT_LIBS="$withval"/lib
1271 ])
1272
1273if test "x$ROOTQT" = "x"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001274 if test -z "$QTDIR"; then
1275 dnl Find the Qt directory by looking for the "moc" program.
1276 dnl It's better than nothing.
1277 AC_PATH_PROG(MOC, moc, no)
1278 if test "x$MOC" = "xno"; then
1279 AC_MSG_ERROR(could not find Qt directory)
1280 else
1281 ROOTQT=`echo $MOC | sed 's+/bin/moc++'`
1282 fi
1283 else
1284 ROOTQT="$QTDIR"
1285 fi
Bram Moolenaar843ee412004-06-30 16:16:41 +00001286fi
1287MOC="$ROOTQT"/bin/moc
1288QT_INCLUDES="$ROOTQT"/include
1289QT_LIBS="$ROOTQT"/lib
1290
1291AC_ARG_WITH(qt-includes,
1292 [ --with-qt-includes=DIR Specify location of Qt headers],
1293 [QT_INCLUDES="$withval"]
1294 )
1295
1296AC_ARG_WITH(qt-libraries,
1297 [ --with-qt-libs=DIR Specify location of Qt libraries],
1298 [QT_LIBS="$withval"]
1299 )
1300
1301if test "x$QT_LIBS" = "x" ; then
1302 QT_LIBS="$ROOTQT"/lib
1303fi
1304if test "x$QT_INCLUDES" = "x" ; then
1305 QT_INCLUDES="$ROOTQT"/include
1306fi
1307dnl we should get QT's version from here and compare with what kde-config
1308dnl says
1309
1310AC_MSG_CHECKING(whether or not to use a KDE Toolbar in KVim)
1311AC_ARG_ENABLE(kde-toolbar,
1312 [ --enable-kde-toolbar if KDE GUI is selected, enable a KDE-look toolbar [default=no]],
1313 , enable_kde_toolbar="no")
1314if test "x$enable_kde_toolbar" != "xno"; then
1315 AC_DEFINE(FEAT_KDETOOLBAR)
1316fi
1317AC_MSG_RESULT($enable_kde_toolbar);
1318fi
1319
1320dnl -------------------
1321dnl so, first, look up at the kde-config script
1322dnl ------------------
1323
1324if test -z "$SKIP_KDE"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001325AC_DEFUN([AC_FIND_FILE],
1326[
1327 $3=NO
1328 for i in $2;
1329 do
1330 for j in $1;
1331 do
1332 echo "configure: __oline__: $i/$j" >&AC_FD_CC
1333 if test -r "$i/$j"; then
1334 echo "taking that" >&AC_FD_CC
1335 $3=$i
1336 break 2
1337 fi
1338 done
1339 done
1340])
1341
Bram Moolenaar843ee412004-06-30 16:16:41 +00001342AC_DEFUN(AM_PATH_KDE,
1343[
1344 if test "X$KDE_CONFIG" != "X"; then
1345 min_kde_version=ifelse([$1], ,2.0,[$1])
1346 AC_MSG_CHECKING(for KDE version >= $min_kde_version)
1347 no_kde=""
1348 if test "$KDE_CONFIG" = "no" ; then
1349 no_kde=yes
1350 else
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001351 KDE_PREFIX=`$KDE_CONFIG --prefix`
Bram Moolenaar843ee412004-06-30 16:16:41 +00001352 if test "x$KDE_LIBS" = "x"; then
1353 KDE_LIBS="$KDE_PREFIX/lib"
1354 fi
1355 if test "x$KDE_INCLUDES" = "x"; then
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +00001356 KDE_INCLUDES="$KDE_PREFIX/include"
1357 if test -d "$KDE_INCLUDES/kde"; then
1358 KDE_INCLUDES="$KDE_INCLUDES/kde"
1359 fi
Bram Moolenaar843ee412004-06-30 16:16:41 +00001360 fi
1361 kde_major_version=`$KDE_CONFIG --version | grep KDE | \
1362sed 's/KDE:\ //' | sed 's/\([[0-9]]*\).\([[0-9]]*.*\)/\1/'`
1363 kde_minor_version=`$KDE_CONFIG --version | grep KDE | \
1364sed 's/KDE:\ //' | sed 's/\([[0-9]]*\).\([[0-9]]*.*\)/\2/'`
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001365
Bram Moolenaar843ee412004-06-30 16:16:41 +00001366 qt_major_version=`$KDE_CONFIG --version | grep Qt | sed -e \
1367's/Qt:\ //' | sed 's/\([[0-9]]*\).\([[0-9]]*.*\)/\1/'`
1368 qt_minor_version=`$KDE_CONFIG --version | grep Qt | sed -e \
1369's/Qt:\ //' | sed 's/\([[0-9]]*\).\([[0-9]]*.*\)/\2/'`
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001370
Bram Moolenaar843ee412004-06-30 16:16:41 +00001371 dnl maybe in a near future we'll get these ones : QT_PREFIX, QT_LIBS,
1372 dnl QT_INCLUDES
1373 dnl but for now we need configure options to get them ...
1374 if test "x$enable-kdetest" = "xyes" ; then
1375 ac_save_LIBS="$LIBS"
1376 LIBS="$LIBS $KDE_LIBS"
1377
1378 dnl fake test
1379 AC_TRY_RUN([
1380#include <stdio.h>
1381int
1382main()
1383{ return 0; }
1384 ],, no_kde=yes,[echo $ac_n "cross compiling KDE ? ? how can i remove that ? :)"])
1385 LIBS="$ac_save_LIBS"
1386 fi
1387 fi
1388 if test "x$no_kde" = x ; then
1389 AC_MSG_RESULT(found KDE $kde_major_version.$kde_minor_version)
1390 ifelse([$2], , :, [$2])
1391 else
1392 AC_MSG_RESULT(no)
1393 KDE_LIBS=""
1394 ifelse([$3], , :, [$3])
1395 fi
1396else
1397 AC_MSG_RESULT(no)
1398 KDE_LIBS=""
1399 ifelse([$3], , :, [$3])
1400fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001401
Bram Moolenaar843ee412004-06-30 16:16:41 +00001402AC_SUBST(KDE_LIBS)
1403AC_SUBST(KDE_INCLUDES)
1404AC_SUBST(KDE_PREFIX)
1405])
1406
1407dnl Check all the KDE stuff
1408AC_MSG_CHECKING(--disable-rpath argument)
1409AC_ARG_ENABLE(rpath,
1410 [ --disable-rpath Disable rpath.],
1411 , enable_rpath="yes")
1412if test "$enable_rpath" = "yes"; then
1413 AC_MSG_RESULT(no)
1414else
1415 AC_MSG_RESULT(yes)
1416fi
1417
1418AC_MSG_CHECKING(--with-kde-prefix argument)
1419AC_ARG_WITH(kde-prefix,[ --with-kde-prefix=PFX Prefix where KDE is installed (optional)],kde_config_prefix="$withval";
1420AC_MSG_RESULT($kde_config_prefix), kde_config_prefix="";AC_MSG_RESULT(no))
1421
1422AC_ARG_WITH(kde-includes,
1423 [ --with-kde-includes=DIR Specify location of KDE headers],
1424 [KDE_INCLUDES="$withval"]
1425 )
1426
1427AC_ARG_WITH(kde-libraries,
1428 [ --with-kde-libs=DIR Specify location of KDE libraries],
1429 [KDE_LIBS="$withval"]
1430 )
1431
1432AC_MSG_CHECKING(--disable-kdetest argument)
1433AC_ARG_ENABLE(kdetest,
1434 [ --disable-kdetest Do not try to compile and run a test KDE program],
1435 enable_kdetest=yes)
1436
1437if test "x$enable_kdetest" = "xyes" ; then
1438 AC_MSG_RESULT(kde test enabled)
1439else
1440 AC_MSG_RESULT(kde test disabled)
1441fi
1442
1443if test "x$kde_config_prefix" != "x" ; then
Bram Moolenaar843ee412004-06-30 16:16:41 +00001444 KDE_CONFIG=$kde_config_prefix/bin/kde-config
1445fi
1446
1447if test "X$KDE_CONFIG" = "X"; then
1448 AC_PATH_PROG(KDE_CONFIG, kde-config, no)
1449else
1450 AC_MSG_RESULT(Using KDE configuration program $KDE_CONFIG)
1451fi
1452
1453if test "X$KDE_CONFIG" != "X" ; then
1454 AM_PATH_KDE(2.0.0,
1455 [GUI_LIB_LOC="-L$KDE_LIBS -lkdeui -lkdecore -lDCOP"
1456 GUI_INC_LOC="-I$KDE_INCLUDES"
1457 KDEDIR="$KDE_PREFIX"], )
1458 if test "x$KDE_PREFIX" != "x"; then
1459 AC_MSG_CHECKING(for QT version $qt_major_version.x)
1460 if test "x$ROOTQT" != "x" ; then
1461 GUI_INC_LOC="-I$QT_INCLUDES $GUI_INC_LOC"
1462 if test $qt_major_version -lt 2; then
1463 AC_MSG_ERROR(Your QT version is prior to 2.0; KDE 2.x and 3.x require at least QT 2)
1464 fi
1465 dnl hack for FreeBSD
1466 if test "`(uname) 2>/dev/null`" = "FreeBSD"; then
1467 CFLAGS="$CFLAGS -D_THREAD_SAFE"
1468 CXXFLAGS="$CXXFLAGS -D_THREAD_SAFE"
1469 GUI_LIB_LOC="$GUI_LIB_LOC -pthread"
1470 LIBS="$LIBS -pthread"
1471 fi
1472
1473 dnl check the version
1474 if test "x$enable_rpath" = "xyes"; then
1475 if test $qt_major_version = 2; then
1476 GUI_LIB_LOC="-L$KDE_LIBS -lkfile -L$QT_LIBS -lqt $GUI_LIB_LOC \
1477-Wl,--rpath -Wl,$KDE_LIBS -Wl,--rpath -Wl,$QT_LIBS"
1478 else
1479 GUI_LIB_LOC="-L$KDE_LIBS -lkio -L$QT_LIBS -lqt-mt $GUI_LIB_LOC \
1480-Wl,--rpath -Wl,$KDE_LIBS -Wl,--rpath -Wl,$QT_LIBS"
1481 fi
1482 else
1483 if test $qt_major_version = 2; then
1484 GUI_LIB_LOC="-L$KDE_LIBS -lkfile -L$QT_LIBS -lqt $GUI_LIB_LOC"
1485 else
1486 GUI_LIB_LOC="-L$KDE_LIBS -lkio -L$QT_LIBS -lqt-mt $GUI_LIB_LOC"
1487 fi
1488 fi
1489
1490 dnl Remove "-I/usr/include " from GUI_*
1491 GUI_INC_LOC="`echo $GUI_INC_LOC\ | sed 's%-I/usr/include %%'`"
1492dnl GUI_LIB_LOC="`echo $GUI_LIB_LOC\ | sed 's% -L/usr/lib%%'`"
1493
1494 AC_MSG_RESULT(found $qt_major_version.$qt_minor_version in $ROOTQT)
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001495
1496 dnl now check the results ...
1497 dnl find the Qt's headers ?
1498 AC_FIND_FILE(qstyle.h,$QT_INCLUDES,qt_incdir)
1499 if test "x$qt_incdir" = "xNO"; then
1500 AC_MSG_ERROR(Could not find Qt headers in $QT_INCLUDES)
1501 fi
1502 AC_FIND_FILE(kapplication.h,$KDE_INCLUDES,kde_incdir)
1503 if test "x$kde_incdir" = "xNO"; then
1504 AC_MSG_ERROR(Could not find KDE headers in $KDE_INCLUDES)
1505 fi
1506
1507 AC_LANG_SAVE
1508 AC_LANG_CPLUSPLUS
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001509 AC_PROG_CXX
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001510 ac_save_LIBS="$LIBS"
1511 LIBS="$GUI_LIB_LOC"
1512 ac_save_CXXFLAGS="$CXXFLAGS"
1513 CXXFLAGS="$CXXFLAGS $GUI_INC_LOC"
1514 AC_MSG_CHECKING(whether Qt libraries are usable)
1515 AC_TRY_LINK(
1516 [#include <qapplication.h>],
1517 [
1518 int argc;
1519 char** argv;
1520 QApplication app(argc, argv);]
1521 ,AC_MSG_RESULT(yes),AC_MSG_RESULT(no);AC_MSG_ERROR(Qt fails to link a simple application, check your installation and settings))
1522
1523 AC_MSG_CHECKING(whether KDE libraries are usable)
1524 AC_TRY_LINK(
1525 [#include <kapplication.h>],
1526 [
1527 int argc;
1528 char** argv;
1529 KApplication app(argc, argv);]
1530 ,AC_MSG_RESULT(yes),AC_MSG_RESULT(no);AC_MSG_ERROR(KDE fails to link a simple application, check your installation and settings))
1531
1532 LIBS="$ac_save_LIBS"
1533 CXXFLAGS="$ac_save_CXXFLAGS"
1534 AC_LANG_RESTORE
1535
1536
Bram Moolenaar843ee412004-06-30 16:16:41 +00001537 SKIP_GTK=YES
1538 SKIP_ATHENA=YES
1539 SKIP_MOTIF=YES
1540 GUITYPE=KDE
1541 AC_SUBST(KDE_PREFIX)
1542 AC_SUBST(QT_LIBS)
1543 AC_SUBST(QT_INCLUDES)
1544 AC_SUBST(ROOTQT)
1545 AC_SUBST(MOC)
1546 AC_DEFINE(FEAT_GUI_KDE)
1547 else
1548 AC_MSG_ERROR(Detected QT version mismatched)
1549 fi
1550 else
1551 AC_MSG_ERROR(Could not find KDE installation prefix)
1552 fi
1553fi
1554fi
1555
Bram Moolenaar071d4272004-06-13 20:20:40 +00001556if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1557 AC_MSG_CHECKING(for Carbon GUI)
1558 dnl already did this
1559 AC_MSG_RESULT(yes);
1560 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001561 if test "$VIMNAME" = "vim"; then
1562 VIMNAME=Vim
1563 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001564 dnl skip everything else
1565 SKIP_GTK=YES;
1566 SKIP_GTK2=YES;
1567 SKIP_GNOME=YES;
1568 SKIP_MOTIF=YES;
1569 SKIP_ATHENA=YES;
1570 SKIP_NEXTAW=YES;
1571 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001572 SKIP_CARBON=YES
1573fi
1574
Bram Moolenaar071d4272004-06-13 20:20:40 +00001575dnl
1576dnl Get the cflags and libraries from the gtk-config script
1577dnl
1578
1579dnl define an autoconf function to check for a specified version of GTK, and
1580dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1581dnl
1582dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001583dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001584dnl
1585AC_DEFUN(AM_PATH_GTK,
1586[
1587 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1588 {
1589 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1590 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1591 no_gtk=""
1592 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1593 && $PKG_CONFIG --exists gtk+-2.0; then
1594 {
1595 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1596 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1597 dnl something like that.
1598 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001599 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001600 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1601 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1602 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1603 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1604 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1605 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1606 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1607 }
1608 elif test "X$GTK_CONFIG" != "Xno"; then
1609 {
1610 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001611 GTK_LIBDIR=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001612 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1613 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1614 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1615 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1616 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1617 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1618 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1619 }
1620 else
1621 no_gtk=yes
1622 fi
1623
1624 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1625 {
1626 ac_save_CFLAGS="$CFLAGS"
1627 ac_save_LIBS="$LIBS"
1628 CFLAGS="$CFLAGS $GTK_CFLAGS"
1629 LIBS="$LIBS $GTK_LIBS"
1630
1631 dnl
1632 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1633 dnl checks the results of gtk-config to some extent
1634 dnl
1635 rm -f conf.gtktest
1636 AC_TRY_RUN([
1637#include <gtk/gtk.h>
1638#include <stdio.h>
1639
1640int
1641main ()
1642{
1643int major, minor, micro;
1644char *tmp_version;
1645
1646system ("touch conf.gtktest");
1647
1648/* HP/UX 9 (%@#!) writes to sscanf strings */
1649tmp_version = g_strdup("$min_gtk_version");
1650if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1651 printf("%s, bad version string\n", "$min_gtk_version");
1652 exit(1);
1653 }
1654
1655if ((gtk_major_version > major) ||
1656 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1657 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1658 (gtk_micro_version >= micro)))
1659{
1660 return 0;
1661}
1662return 1;
1663}
1664],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1665 CFLAGS="$ac_save_CFLAGS"
1666 LIBS="$ac_save_LIBS"
1667 }
1668 fi
1669 if test "x$no_gtk" = x ; then
1670 if test "x$enable_gtktest" = "xyes"; then
1671 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1672 else
1673 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1674 fi
1675 ifelse([$2], , :, [$2])
1676 else
1677 {
1678 AC_MSG_RESULT(no)
1679 GTK_CFLAGS=""
1680 GTK_LIBS=""
1681 ifelse([$3], , :, [$3])
1682 }
1683 fi
1684 }
1685 else
1686 GTK_CFLAGS=""
1687 GTK_LIBS=""
1688 ifelse([$3], , :, [$3])
1689 fi
1690 AC_SUBST(GTK_CFLAGS)
1691 AC_SUBST(GTK_LIBS)
1692 rm -f conf.gtktest
1693])
1694
1695dnl ---------------------------------------------------------------------------
1696dnl gnome
1697dnl ---------------------------------------------------------------------------
1698AC_DEFUN([GNOME_INIT_HOOK],
1699[
1700 AC_SUBST(GNOME_LIBS)
1701 AC_SUBST(GNOME_LIBDIR)
1702 AC_SUBST(GNOME_INCLUDEDIR)
1703
1704 AC_ARG_WITH(gnome-includes,
1705 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1706 [CFLAGS="$CFLAGS -I$withval"]
1707 )
1708
1709 AC_ARG_WITH(gnome-libs,
1710 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1711 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1712 )
1713
1714 AC_ARG_WITH(gnome,
1715 [ --with-gnome Specify prefix for GNOME files],
1716 if test x$withval = xyes; then
1717 want_gnome=yes
1718 ifelse([$1], [], :, [$1])
1719 else
1720 if test "x$withval" = xno; then
1721 want_gnome=no
1722 else
1723 want_gnome=yes
1724 LDFLAGS="$LDFLAGS -L$withval/lib"
1725 CFLAGS="$CFLAGS -I$withval/include"
1726 gnome_prefix=$withval/lib
1727 fi
1728 fi,
1729 want_gnome=yes)
1730
1731 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1732 {
1733 AC_MSG_CHECKING(for libgnomeui-2.0)
1734 if $PKG_CONFIG --exists libgnomeui-2.0; then
1735 AC_MSG_RESULT(yes)
1736 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1737 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1738 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
1739 $1
1740 else
1741 AC_MSG_RESULT(not found)
1742 if test "x$2" = xfail; then
1743 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1744 fi
1745 fi
1746 }
1747 elif test "x$want_gnome" = xyes; then
1748 {
1749 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1750 if test "$GNOME_CONFIG" = "no"; then
1751 no_gnome_config="yes"
1752 else
1753 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1754 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1755 AC_MSG_RESULT(yes)
1756 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1757 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1758 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1759 $1
1760 else
1761 AC_MSG_RESULT(no)
1762 no_gnome_config="yes"
1763 fi
1764 fi
1765
1766 if test x$exec_prefix = xNONE; then
1767 if test x$prefix = xNONE; then
1768 gnome_prefix=$ac_default_prefix/lib
1769 else
1770 gnome_prefix=$prefix/lib
1771 fi
1772 else
1773 gnome_prefix=`eval echo \`echo $libdir\``
1774 fi
1775
1776 if test "$no_gnome_config" = "yes"; then
1777 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1778 if test -f $gnome_prefix/gnomeConf.sh; then
1779 AC_MSG_RESULT(found)
1780 echo "loading gnome configuration from" \
1781 "$gnome_prefix/gnomeConf.sh"
1782 . $gnome_prefix/gnomeConf.sh
1783 $1
1784 else
1785 AC_MSG_RESULT(not found)
1786 if test x$2 = xfail; then
1787 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1788 fi
1789 fi
1790 fi
1791 }
1792 fi
1793])
1794
1795AC_DEFUN([GNOME_INIT],[
1796 GNOME_INIT_HOOK([],fail)
1797])
1798
1799
1800dnl ---------------------------------------------------------------------------
1801dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1802dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1803dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1804dnl ---------------------------------------------------------------------------
1805if test -z "$SKIP_GTK"; then
1806
1807 AC_MSG_CHECKING(--with-gtk-prefix argument)
1808 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1809 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1810 gtk_config_prefix=""; AC_MSG_RESULT(no))
1811
1812 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1813 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1814 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1815 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1816
1817 AC_MSG_CHECKING(--disable-gtktest argument)
1818 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1819 , enable_gtktest=yes)
1820 if test "x$enable_gtktest" = "xyes" ; then
1821 AC_MSG_RESULT(gtk test enabled)
1822 else
1823 AC_MSG_RESULT(gtk test disabled)
1824 fi
1825
1826 if test "x$gtk_config_prefix" != "x" ; then
1827 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1828 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1829 fi
1830 if test "x$gtk_config_exec_prefix" != "x" ; then
1831 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1832 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1833 fi
1834 if test "X$GTK_CONFIG" = "X"; then
1835 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1836 if test "X$GTK_CONFIG" = "Xno"; then
1837 dnl Some distributions call it gtk12-config, annoying!
1838 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1839 GTK_CONFIG="$GTK12_CONFIG"
1840 fi
1841 else
1842 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1843 fi
1844 if test "X$PKG_CONFIG" = "X"; then
1845 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1846 fi
1847
1848 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1849 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1850 dnl problems (bold fonts, --remote doesn't work).
1851 if test "X$SKIP_GTK2" != "XYES"; then
1852 AM_PATH_GTK(2.2.0,
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001853 [GUI_LIB_LOC="$GTK_LIBDIR"
1854 GTK_LIBNAME="$GTK_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001855 GUI_INC_LOC="$GTK_CFLAGS"], )
1856 if test "x$GTK_CFLAGS" != "x"; then
1857 SKIP_ATHENA=YES
1858 SKIP_NEXTAW=YES
1859 SKIP_MOTIF=YES
1860 GUITYPE=GTK
1861 AC_SUBST(GTK_LIBNAME)
1862 fi
1863 fi
1864
1865 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1866 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1867 dnl were test versions.
1868 if test "x$GUITYPE" != "xGTK"; then
1869 SKIP_GTK2=YES
1870 AM_PATH_GTK(1.1.16,
1871 [GTK_LIBNAME="$GTK_LIBS"
1872 GUI_INC_LOC="$GTK_CFLAGS"], )
1873 if test "x$GTK_CFLAGS" != "x"; then
1874 SKIP_ATHENA=YES
1875 SKIP_NEXTAW=YES
1876 SKIP_MOTIF=YES
1877 GUITYPE=GTK
1878 AC_SUBST(GTK_LIBNAME)
1879 fi
1880 fi
1881 fi
1882 dnl Give a warning if GTK is older than 1.2.3
1883 if test "x$GUITYPE" = "xGTK"; then
1884 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1885 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1886 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1887 else
1888 {
1889 if test "0$gtk_major_version" -ge 2; then
1890 AC_DEFINE(HAVE_GTK2)
1891 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1892 || test "0$gtk_minor_version" -ge 2 \
1893 || test "0$gtk_major_version" -gt 2; then
1894 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1895 fi
1896 fi
1897 dnl
1898 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1899 dnl
1900 if test -z "$SKIP_GNOME"; then
1901 {
1902 GNOME_INIT_HOOK([have_gnome=yes])
1903 if test x$have_gnome = xyes ; then
1904 AC_DEFINE(FEAT_GUI_GNOME)
1905 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1906 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1907 fi
1908 }
1909 fi
1910 }
1911 fi
1912 fi
1913fi
1914
1915dnl Check for Motif include files location.
1916dnl The LAST one found is used, this makes the highest version to be used,
1917dnl e.g. when Motif1.2 and Motif2.0 are both present.
1918
1919if test -z "$SKIP_MOTIF"; then
1920 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"
1921 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1922 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1923
1924 AC_MSG_CHECKING(for location of Motif GUI includes)
1925 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1926 GUI_INC_LOC=
1927 for try in $gui_includes; do
1928 if test -f "$try/Xm/Xm.h"; then
1929 GUI_INC_LOC=$try
1930 fi
1931 done
1932 if test -n "$GUI_INC_LOC"; then
1933 if test "$GUI_INC_LOC" = /usr/include; then
1934 GUI_INC_LOC=
1935 AC_MSG_RESULT(in default path)
1936 else
1937 AC_MSG_RESULT($GUI_INC_LOC)
1938 fi
1939 else
1940 AC_MSG_RESULT(<not found>)
1941 SKIP_MOTIF=YES
1942 fi
1943fi
1944
1945dnl Check for Motif library files location. In the same order as the include
1946dnl files, to avoid a mixup if several versions are present
1947
1948if test -z "$SKIP_MOTIF"; then
1949 AC_MSG_CHECKING(--with-motif-lib argument)
1950 AC_ARG_WITH(motif-lib,
1951 [ --with-motif-lib=STRING Library for Motif ],
1952 [ MOTIF_LIBNAME="${withval}" ] )
1953
1954 if test -n "$MOTIF_LIBNAME"; then
1955 AC_MSG_RESULT($MOTIF_LIBNAME)
1956 GUI_LIB_LOC=
1957 else
1958 AC_MSG_RESULT(no)
1959
1960 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1961 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1962
1963 AC_MSG_CHECKING(for location of Motif GUI libs)
1964 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"
1965 GUI_LIB_LOC=
1966 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001967 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00001968 if test -f "$libtry"; then
1969 GUI_LIB_LOC=$try
1970 fi
1971 done
1972 done
1973 if test -n "$GUI_LIB_LOC"; then
1974 dnl Remove /usr/lib, it causes trouble on some systems
1975 if test "$GUI_LIB_LOC" = /usr/lib; then
1976 GUI_LIB_LOC=
1977 AC_MSG_RESULT(in default path)
1978 else
1979 if test -n "$GUI_LIB_LOC"; then
1980 AC_MSG_RESULT($GUI_LIB_LOC)
1981 if test "`(uname) 2>/dev/null`" = SunOS &&
1982 uname -r | grep '^5' >/dev/null; then
1983 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1984 fi
1985 fi
1986 fi
1987 MOTIF_LIBNAME=-lXm
1988 else
1989 AC_MSG_RESULT(<not found>)
1990 SKIP_MOTIF=YES
1991 fi
1992 fi
1993fi
1994
1995if test -z "$SKIP_MOTIF"; then
1996 SKIP_ATHENA=YES
1997 SKIP_NEXTAW=YES
1998 GUITYPE=MOTIF
1999 AC_SUBST(MOTIF_LIBNAME)
2000fi
2001
2002dnl Check if the Athena files can be found
2003
2004GUI_X_LIBS=
2005
2006if test -z "$SKIP_ATHENA"; then
2007 AC_MSG_CHECKING(if Athena header files can be found)
2008 cflags_save=$CFLAGS
2009 CFLAGS="$CFLAGS $X_CFLAGS"
2010 AC_TRY_COMPILE([
2011#include <X11/Intrinsic.h>
2012#include <X11/Xaw/Paned.h>], ,
2013 AC_MSG_RESULT(yes),
2014 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2015 CFLAGS=$cflags_save
2016fi
2017
2018if test -z "$SKIP_ATHENA"; then
2019 GUITYPE=ATHENA
2020fi
2021
2022if test -z "$SKIP_NEXTAW"; then
2023 AC_MSG_CHECKING(if neXtaw header files can be found)
2024 cflags_save=$CFLAGS
2025 CFLAGS="$CFLAGS $X_CFLAGS"
2026 AC_TRY_COMPILE([
2027#include <X11/Intrinsic.h>
2028#include <X11/neXtaw/Paned.h>], ,
2029 AC_MSG_RESULT(yes),
2030 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2031 CFLAGS=$cflags_save
2032fi
2033
2034if test -z "$SKIP_NEXTAW"; then
2035 GUITYPE=NEXTAW
2036fi
2037
2038if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2039 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2040 dnl Avoid adding it when it twice
2041 if test -n "$GUI_INC_LOC"; then
2042 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2043 fi
2044 if test -n "$GUI_LIB_LOC"; then
2045 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2046 fi
2047
2048 dnl Check for -lXext and then for -lXmu
2049 ldflags_save=$LDFLAGS
2050 LDFLAGS="$X_LIBS $LDFLAGS"
2051 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2052 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2053 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2054 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2055 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2056 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2057 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2058 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2059 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2060 if test -z "$SKIP_MOTIF"; then
2061 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2062 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2063 fi
2064 LDFLAGS=$ldflags_save
2065
2066 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2067 AC_MSG_CHECKING(for extra X11 defines)
2068 NARROW_PROTO=
2069 rm -fr conftestdir
2070 if mkdir conftestdir; then
2071 cd conftestdir
2072 cat > Imakefile <<'EOF'
2073acfindx:
2074 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2075EOF
2076 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2077 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2078 fi
2079 cd ..
2080 rm -fr conftestdir
2081 fi
2082 if test -z "$NARROW_PROTO"; then
2083 AC_MSG_RESULT(no)
2084 else
2085 AC_MSG_RESULT($NARROW_PROTO)
2086 fi
2087 AC_SUBST(NARROW_PROTO)
2088fi
2089
2090dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2091dnl use the X11 include path
2092if test "$enable_xsmp" = "yes"; then
2093 cppflags_save=$CPPFLAGS
2094 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2095 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2096 CPPFLAGS=$cppflags_save
2097fi
2098
2099
2100if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
2101 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2102 cppflags_save=$CPPFLAGS
2103 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2104 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2105
2106 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2107 if test ! "$enable_xim" = "no"; then
2108 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2109 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2110 AC_MSG_RESULT(yes),
2111 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2112 fi
2113 CPPFLAGS=$cppflags_save
2114
2115 dnl automatically enable XIM when hangul input isn't enabled
2116 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2117 -a "x$GUITYPE" != "xNONE" ; then
2118 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2119 enable_xim="yes"
2120 fi
2121fi
2122
2123if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2124 cppflags_save=$CPPFLAGS
2125 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002126dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2127 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2128 AC_TRY_COMPILE([
2129#include <X11/Intrinsic.h>
2130#include <X11/Xmu/Editres.h>],
2131 [int i; i = 0;],
2132 AC_MSG_RESULT(yes)
2133 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2134 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002135 CPPFLAGS=$cppflags_save
2136fi
2137
2138dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2139if test -z "$SKIP_MOTIF"; then
2140 cppflags_save=$CPPFLAGS
2141 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002142 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
2143 Xm/UnhighlightT.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002144 CPPFLAGS=$cppflags_save
2145fi
2146
2147if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2148 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2149 enable_xim="no"
2150fi
2151if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2152 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2153 enable_fontset="no"
2154fi
2155if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2156 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2157 enable_fontset="no"
2158fi
Bram Moolenaar81695252004-12-29 20:58:21 +00002159if test "x$GUITYPE:$enable_fontset" = "xKDE:yes"; then
2160 AC_MSG_RESULT(KDE GUI selected; fontset has been disabled)
2161 enable_fontset="no"
2162fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002163
Bram Moolenaar071d4272004-06-13 20:20:40 +00002164if test -z "$SKIP_PHOTON"; then
2165 GUITYPE=PHOTONGUI
2166fi
2167
2168AC_SUBST(GUI_INC_LOC)
2169AC_SUBST(GUI_LIB_LOC)
2170AC_SUBST(GUITYPE)
2171AC_SUBST(GUI_X_LIBS)
2172
2173if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2174 AC_MSG_ERROR([cannot use workshop without Motif])
2175fi
2176
2177dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2178if test "$enable_xim" = "yes"; then
2179 AC_DEFINE(FEAT_XIM)
2180fi
2181if test "$enable_fontset" = "yes"; then
2182 AC_DEFINE(FEAT_XFONTSET)
2183fi
2184
2185
2186dnl ---------------------------------------------------------------------------
2187dnl end of GUI-checking
2188dnl ---------------------------------------------------------------------------
2189
2190
2191dnl Only really enable hangul input when GUI and XFONTSET are available
2192if test "$enable_hangulinput" = "yes"; then
2193 if test "x$GUITYPE" = "xNONE"; then
2194 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2195 enable_hangulinput=no
2196 else
2197 AC_DEFINE(FEAT_HANGULIN)
2198 HANGULIN_SRC=hangulin.c
2199 AC_SUBST(HANGULIN_SRC)
2200 HANGULIN_OBJ=objects/hangulin.o
2201 AC_SUBST(HANGULIN_OBJ)
2202 fi
2203fi
2204
2205dnl Checks for libraries and include files.
2206
2207AC_MSG_CHECKING(quality of toupper)
2208AC_TRY_RUN([#include <ctype.h>
2209main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }],
2210 AC_DEFINE(BROKEN_TOUPPER) AC_MSG_RESULT(bad),
2211 AC_MSG_RESULT(good), AC_MSG_ERROR(failed to compile test program))
2212
2213AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
2214AC_TRY_COMPILE(, [printf("(" __DATE__ " " __TIME__ ")");],
2215 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2216 AC_MSG_RESULT(no))
2217
2218dnl Checks for header files.
2219AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2220dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2221if test "$HAS_ELF" = 1; then
2222 AC_CHECK_LIB(elf, main)
2223fi
2224
2225AC_HEADER_DIRENT
2226
2227dnl check for standard headers, we don't use this in Vim but other stuff
2228dnl in autoconf needs it
2229AC_HEADER_STDC
2230AC_HEADER_SYS_WAIT
2231
2232dnl If sys/wait.h is not found it might still exist but not be POSIX
2233dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2234if test $ac_cv_header_sys_wait_h = no; then
2235 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2236 AC_TRY_COMPILE([#include <sys/wait.h>],
2237 [union wait xx, yy; xx = yy],
2238 AC_MSG_RESULT(yes)
2239 AC_DEFINE(HAVE_SYS_WAIT_H)
2240 AC_DEFINE(HAVE_UNION_WAIT),
2241 AC_MSG_RESULT(no))
2242fi
2243
2244AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
2245 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h termio.h \
2246 iconv.h langinfo.h unistd.h stropts.h errno.h \
2247 sys/resource.h sys/systeminfo.h locale.h \
2248 sys/stream.h sys/ptem.h termios.h libc.h sys/statfs.h \
2249 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002250 libgen.h util/debug.h util/msg18n.h frame.h \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002251 sys/acl.h sys/access.h sys/sysctl.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002252
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002253dnl pthread_np.h may exist but can only be used after including pthread.h
2254AC_MSG_CHECKING([for pthread_np.h])
2255AC_TRY_COMPILE([
2256#include <pthread.h>
2257#include <pthread_np.h>],
2258 [int i; i = 0;],
2259 AC_MSG_RESULT(yes)
2260 AC_DEFINE(HAVE_PTHREAD_NP_H),
2261 AC_MSG_RESULT(no))
2262
Bram Moolenaare344bea2005-09-01 20:46:49 +00002263AC_CHECK_HEADERS(strings.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002264
2265dnl Check if strings.h and string.h can both be included when defined.
2266AC_MSG_CHECKING([if strings.h can be included after string.h])
2267cppflags_save=$CPPFLAGS
2268CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2269AC_TRY_COMPILE([
2270#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2271# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2272 /* but don't do it on AIX 5.1 (Uribarri) */
2273#endif
2274#ifdef HAVE_XM_XM_H
2275# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2276#endif
2277#ifdef HAVE_STRING_H
2278# include <string.h>
2279#endif
2280#if defined(HAVE_STRINGS_H)
2281# include <strings.h>
2282#endif
2283 ], [int i; i = 0;],
2284 AC_MSG_RESULT(yes),
2285 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2286 AC_MSG_RESULT(no))
2287CPPFLAGS=$cppflags_save
2288
2289dnl Checks for typedefs, structures, and compiler characteristics.
2290AC_PROG_GCC_TRADITIONAL
2291AC_C_CONST
2292AC_TYPE_MODE_T
2293AC_TYPE_OFF_T
2294AC_TYPE_PID_T
2295AC_TYPE_SIZE_T
2296AC_TYPE_UID_T
2297AC_HEADER_TIME
2298AC_CHECK_TYPE(ino_t, long)
2299AC_CHECK_TYPE(dev_t, unsigned)
2300
2301AC_MSG_CHECKING(for rlim_t)
2302if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2303 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2304else
2305 AC_EGREP_CPP(dnl
2306changequote(<<,>>)dnl
2307<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2308changequote([,]),
2309 [
2310#include <sys/types.h>
2311#if STDC_HEADERS
2312#include <stdlib.h>
2313#include <stddef.h>
2314#endif
2315#ifdef HAVE_SYS_RESOURCE_H
2316#include <sys/resource.h>
2317#endif
2318 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2319 AC_MSG_RESULT($ac_cv_type_rlim_t)
2320fi
2321if test $ac_cv_type_rlim_t = no; then
2322 cat >> confdefs.h <<\EOF
2323#define rlim_t unsigned long
2324EOF
2325fi
2326
2327AC_MSG_CHECKING(for stack_t)
2328if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2329 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2330else
2331 AC_EGREP_CPP(stack_t,
2332 [
2333#include <sys/types.h>
2334#if STDC_HEADERS
2335#include <stdlib.h>
2336#include <stddef.h>
2337#endif
2338#include <signal.h>
2339 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2340 AC_MSG_RESULT($ac_cv_type_stack_t)
2341fi
2342if test $ac_cv_type_stack_t = no; then
2343 cat >> confdefs.h <<\EOF
2344#define stack_t struct sigaltstack
2345EOF
2346fi
2347
2348dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2349AC_MSG_CHECKING(whether stack_t has an ss_base field)
2350AC_TRY_COMPILE([
2351#include <sys/types.h>
2352#if STDC_HEADERS
2353#include <stdlib.h>
2354#include <stddef.h>
2355#endif
2356#include <signal.h>
2357#include "confdefs.h"
2358 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2359 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2360 AC_MSG_RESULT(no))
2361
2362olibs="$LIBS"
2363AC_MSG_CHECKING(--with-tlib argument)
2364AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2365if test -n "$with_tlib"; then
2366 AC_MSG_RESULT($with_tlib)
2367 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002368 AC_MSG_CHECKING(for linking with $with_tlib library)
2369 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2370 dnl Need to check for tgetent() below.
2371 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002372else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002373 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002374 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2375 dnl curses, because curses is much slower.
2376 dnl Newer versions of ncurses are preferred over anything.
2377 dnl Older versions of ncurses have bugs, get a new one!
2378 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
2379 case "`uname -s 2>/dev/null`" in
2380 OSF1) tlibs="ncurses curses termlib termcap";;
2381 *) tlibs="ncurses termlib termcap curses";;
2382 esac
2383 for libname in $tlibs; do
2384 AC_CHECK_LIB(${libname}, tgetent,,)
2385 if test "x$olibs" != "x$LIBS"; then
2386 dnl It's possible that a library is found but it doesn't work
2387 dnl e.g., shared library that cannot be found
2388 dnl compile and run a test program to be sure
2389 AC_TRY_RUN([
2390#ifdef HAVE_TERMCAP_H
2391# include <termcap.h>
2392#endif
2393main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2394 res="OK", res="FAIL", res="FAIL")
2395 if test "$res" = "OK"; then
2396 break
2397 fi
2398 AC_MSG_RESULT($libname library is not usable)
2399 LIBS="$olibs"
2400 fi
2401 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002402 if test "x$olibs" = "x$LIBS"; then
2403 AC_MSG_RESULT(no terminal library found)
2404 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002405fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002406
2407if test "x$olibs" = "x$LIBS"; then
2408 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002409 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002410 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2411 AC_MSG_RESULT(yes),
2412 AC_MSG_ERROR([NOT FOUND!
2413 You need to install a terminal library; for example ncurses.
2414 Or specify the name of the library with --with-tlib.]))
2415fi
2416
2417AC_MSG_CHECKING(whether we talk terminfo)
2418AC_TRY_RUN([
Bram Moolenaar071d4272004-06-13 20:20:40 +00002419#ifdef HAVE_TERMCAP_H
2420# include <termcap.h>
2421#endif
2422main()
2423{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }],
2424 AC_MSG_RESULT([no -- we are in termcap land]),
2425 AC_MSG_RESULT([yes -- terminfo spoken here]); AC_DEFINE(TERMINFO),
2426 AC_MSG_ERROR(failed to compile test program.))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002427
2428if test "x$olibs" != "x$LIBS"; then
2429 AC_MSG_CHECKING(what tgetent() returns for an unknown terminal)
2430 AC_TRY_RUN([
2431#ifdef HAVE_TERMCAP_H
2432# include <termcap.h>
2433#endif
2434main()
2435{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }],
2436 AC_MSG_RESULT(zero); AC_DEFINE(TGETENT_ZERO_ERR, 0),
2437 AC_MSG_RESULT(non-zero),
2438 AC_MSG_ERROR(failed to compile test program.))
2439fi
2440
2441AC_MSG_CHECKING(whether termcap.h contains ospeed)
2442AC_TRY_LINK([
2443#ifdef HAVE_TERMCAP_H
2444# include <termcap.h>
2445#endif
2446 ], [ospeed = 20000],
2447 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2448 [AC_MSG_RESULT(no)
2449 AC_MSG_CHECKING(whether ospeed can be extern)
2450 AC_TRY_LINK([
2451#ifdef HAVE_TERMCAP_H
2452# include <termcap.h>
2453#endif
2454extern short ospeed;
2455 ], [ospeed = 20000],
2456 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2457 AC_MSG_RESULT(no))]
2458 )
2459
2460AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2461AC_TRY_LINK([
2462#ifdef HAVE_TERMCAP_H
2463# include <termcap.h>
2464#endif
2465 ], [if (UP == 0 && BC == 0) PC = 1],
2466 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2467 [AC_MSG_RESULT(no)
2468 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2469 AC_TRY_LINK([
2470#ifdef HAVE_TERMCAP_H
2471# include <termcap.h>
2472#endif
2473extern char *UP, *BC, PC;
2474 ], [if (UP == 0 && BC == 0) PC = 1],
2475 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2476 AC_MSG_RESULT(no))]
2477 )
2478
2479AC_MSG_CHECKING(whether tputs() uses outfuntype)
2480AC_TRY_COMPILE([
2481#ifdef HAVE_TERMCAP_H
2482# include <termcap.h>
2483#endif
2484 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2485 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2486 AC_MSG_RESULT(no))
2487
2488dnl On some SCO machines sys/select redefines struct timeval
2489AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2490AC_TRY_COMPILE([
2491#include <sys/types.h>
2492#include <sys/time.h>
2493#include <sys/select.h>], ,
2494 AC_MSG_RESULT(yes)
2495 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2496 AC_MSG_RESULT(no))
2497
2498dnl AC_DECL_SYS_SIGLIST
2499
2500dnl Checks for pty.c (copied from screen) ==========================
2501AC_MSG_CHECKING(for /dev/ptc)
2502if test -r /dev/ptc; then
2503 AC_DEFINE(HAVE_DEV_PTC)
2504 AC_MSG_RESULT(yes)
2505else
2506 AC_MSG_RESULT(no)
2507fi
2508
2509AC_MSG_CHECKING(for SVR4 ptys)
2510if test -c /dev/ptmx ; then
2511 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2512 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2513 AC_MSG_RESULT(no))
2514else
2515 AC_MSG_RESULT(no)
2516fi
2517
2518AC_MSG_CHECKING(for ptyranges)
2519if test -d /dev/ptym ; then
2520 pdir='/dev/ptym'
2521else
2522 pdir='/dev'
2523fi
2524dnl SCO uses ptyp%d
2525AC_EGREP_CPP(yes,
2526[#ifdef M_UNIX
2527 yes;
2528#endif
2529 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2530dnl if test -c /dev/ptyp19; then
2531dnl ptys=`echo /dev/ptyp??`
2532dnl else
2533dnl ptys=`echo $pdir/pty??`
2534dnl fi
2535if test "$ptys" != "$pdir/pty??" ; then
2536 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2537 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2538 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2539 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2540 AC_MSG_RESULT([$p0 / $p1])
2541else
2542 AC_MSG_RESULT([don't know])
2543fi
2544
2545dnl **** pty mode/group handling ****
2546dnl
2547dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
2548AC_MSG_CHECKING(default tty permissions/group)
2549rm -f conftest_grp
2550AC_TRY_RUN([
2551#include <sys/types.h>
2552#include <sys/stat.h>
2553#include <stdio.h>
2554main()
2555{
2556 struct stat sb;
2557 char *x,*ttyname();
2558 int om, m;
2559 FILE *fp;
2560
2561 if (!(x = ttyname(0))) exit(1);
2562 if (stat(x, &sb)) exit(1);
2563 om = sb.st_mode;
2564 if (om & 002) exit(0);
2565 m = system("mesg y");
2566 if (m == -1 || m == 127) exit(1);
2567 if (stat(x, &sb)) exit(1);
2568 m = sb.st_mode;
2569 if (chmod(x, om)) exit(1);
2570 if (m & 002) exit(0);
2571 if (sb.st_gid == getgid()) exit(1);
2572 if (!(fp=fopen("conftest_grp", "w")))
2573 exit(1);
2574 fprintf(fp, "%d\n", sb.st_gid);
2575 fclose(fp);
2576 exit(0);
2577}
2578],[
2579 if test -f conftest_grp; then
2580 ptygrp=`cat conftest_grp`
2581 AC_MSG_RESULT([pty mode: 0620, group: $ptygrp])
2582 AC_DEFINE(PTYMODE, 0620)
2583 AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
2584 else
2585 AC_MSG_RESULT([ptys are world accessable])
2586 fi
2587],
2588 AC_MSG_RESULT([can't determine - assume ptys are world accessable]),
2589 AC_MSG_ERROR(failed to compile test program))
2590rm -f conftest_grp
2591
2592dnl Checks for library functions. ===================================
2593
2594AC_TYPE_SIGNAL
2595
2596dnl find out what to use at the end of a signal function
2597if test $ac_cv_type_signal = void; then
2598 AC_DEFINE(SIGRETURN, [return])
2599else
2600 AC_DEFINE(SIGRETURN, [return 0])
2601fi
2602
2603dnl check if struct sigcontext is defined (used for SGI only)
2604AC_MSG_CHECKING(for struct sigcontext)
2605AC_TRY_COMPILE([
2606#include <signal.h>
2607test_sig()
2608{
2609 struct sigcontext *scont;
2610 scont = (struct sigcontext *)0;
2611 return 1;
2612} ], ,
2613 AC_MSG_RESULT(yes)
2614 AC_DEFINE(HAVE_SIGCONTEXT),
2615 AC_MSG_RESULT(no))
2616
2617dnl tricky stuff: try to find out if getcwd() is implemented with
2618dnl system("sh -c pwd")
2619AC_MSG_CHECKING(getcwd implementation)
2620AC_TRY_RUN([
2621char *dagger[] = { "IFS=pwd", 0 };
2622main()
2623{
2624 char buffer[500];
2625 extern char **environ;
2626 environ = dagger;
2627 return getcwd(buffer, 500) ? 0 : 1;
2628}],
2629 AC_MSG_RESULT(it is usable),
2630 AC_MSG_RESULT(it stinks)
2631 AC_DEFINE(BAD_GETCWD),
2632 AC_MSG_ERROR(failed to compile test program))
2633
2634dnl Check for functions in one big call, to reduce the size of configure
2635AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2636 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2637 memset nanosleep opendir putenv qsort readlink select setenv \
2638 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002639 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002640 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2641 usleep utime utimes)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002642
2643dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2644AC_MSG_CHECKING(for st_blksize)
2645AC_TRY_COMPILE(
2646[#include <sys/types.h>
2647#include <sys/stat.h>],
2648[ struct stat st;
2649 int n;
2650
2651 stat("/", &st);
2652 n = (int)st.st_blksize;],
2653 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2654 AC_MSG_RESULT(no))
2655
2656AC_MSG_CHECKING(whether stat() ignores a trailing slash)
2657AC_TRY_RUN(
2658[#include <sys/types.h>
2659#include <sys/stat.h>
2660main() {struct stat st; exit(stat("configure/", &st) != 0); }],
2661 AC_MSG_RESULT(yes); AC_DEFINE(STAT_IGNORES_SLASH),
2662 AC_MSG_RESULT(no), AC_MSG_ERROR(failed to compile test program))
2663
2664dnl Link with iconv for charset translation, if not found without library.
2665dnl check for iconv() requires including iconv.h
2666dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2667dnl has been installed.
2668AC_MSG_CHECKING(for iconv_open())
2669save_LIBS="$LIBS"
2670LIBS="$LIBS -liconv"
2671AC_TRY_LINK([
2672#ifdef HAVE_ICONV_H
2673# include <iconv.h>
2674#endif
2675 ], [iconv_open("fr", "to");],
2676 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2677 LIBS="$save_LIBS"
2678 AC_TRY_LINK([
2679#ifdef HAVE_ICONV_H
2680# include <iconv.h>
2681#endif
2682 ], [iconv_open("fr", "to");],
2683 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2684 AC_MSG_RESULT(no)))
2685
2686
2687AC_MSG_CHECKING(for nl_langinfo(CODESET))
2688AC_TRY_LINK([
2689#ifdef HAVE_LANGINFO_H
2690# include <langinfo.h>
2691#endif
2692], [char *cs = nl_langinfo(CODESET);],
2693 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2694 AC_MSG_RESULT(no))
2695
2696dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2697dnl when -lacl works, also try to use -lattr (required for Debian).
2698AC_MSG_CHECKING(--disable-acl argument)
2699AC_ARG_ENABLE(acl,
2700 [ --disable-acl Don't check for ACL support.],
2701 , [enable_acl="yes"])
2702if test "$enable_acl" = "yes"; then
2703AC_MSG_RESULT(no)
2704AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2705 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2706 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2707
2708AC_MSG_CHECKING(for POSIX ACL support)
2709AC_TRY_LINK([
2710#include <sys/types.h>
2711#ifdef HAVE_SYS_ACL_H
2712# include <sys/acl.h>
2713#endif
2714acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2715 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2716 acl_free(acl);],
2717 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2718 AC_MSG_RESULT(no))
2719
2720AC_MSG_CHECKING(for Solaris ACL support)
2721AC_TRY_LINK([
2722#ifdef HAVE_SYS_ACL_H
2723# include <sys/acl.h>
2724#endif], [acl("foo", GETACLCNT, 0, NULL);
2725 ],
2726 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2727 AC_MSG_RESULT(no))
2728
2729AC_MSG_CHECKING(for AIX ACL support)
2730AC_TRY_LINK([
2731#ifdef HAVE_SYS_ACL_H
2732# include <sys/acl.h>
2733#endif
2734#ifdef HAVE_SYS_ACCESS_H
2735# include <sys/access.h>
2736#endif
2737#define _ALL_SOURCE
2738
2739#include <sys/stat.h>
2740
2741int aclsize;
2742struct acl *aclent;], [aclsize = sizeof(struct acl);
2743 aclent = (void *)malloc(aclsize);
2744 statacl("foo", STX_NORMAL, aclent, aclsize);
2745 ],
2746 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2747 AC_MSG_RESULT(no))
2748else
2749 AC_MSG_RESULT(yes)
2750fi
2751
2752AC_MSG_CHECKING(--disable-gpm argument)
2753AC_ARG_ENABLE(gpm,
2754 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2755 [enable_gpm="yes"])
2756
2757if test "$enable_gpm" = "yes"; then
2758 AC_MSG_RESULT(no)
2759 dnl Checking if gpm support can be compiled
2760 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2761 [olibs="$LIBS" ; LIBS="-lgpm"]
2762 AC_TRY_LINK(
2763 [#include <gpm.h>
2764 #include <linux/keyboard.h>],
2765 [Gpm_GetLibVersion(NULL);],
2766 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2767 dnl FEAT_MOUSE_GPM if mouse support is included
2768 [vi_cv_have_gpm=yes],
2769 [vi_cv_have_gpm=no])
2770 [LIBS="$olibs"]
2771 )
2772 if test $vi_cv_have_gpm = yes; then
2773 LIBS="$LIBS -lgpm"
2774 AC_DEFINE(HAVE_GPM)
2775 fi
2776else
2777 AC_MSG_RESULT(yes)
2778fi
2779
Bram Moolenaar071d4272004-06-13 20:20:40 +00002780dnl rename needs to be checked separately to work on Nextstep with cc
2781AC_MSG_CHECKING(for rename)
2782AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2783 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2784 AC_MSG_RESULT(no))
2785
2786dnl sysctl() may exist but not the arguments we use
2787AC_MSG_CHECKING(for sysctl)
2788AC_TRY_COMPILE(
2789[#include <sys/types.h>
2790#include <sys/sysctl.h>],
2791[ int mib[2], r;
2792 size_t len;
2793
2794 mib[0] = CTL_HW;
2795 mib[1] = HW_USERMEM;
2796 len = sizeof(r);
2797 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2798 ],
2799 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2800 AC_MSG_RESULT(not usable))
2801
2802dnl sysinfo() may exist but not be Linux compatible
2803AC_MSG_CHECKING(for sysinfo)
2804AC_TRY_COMPILE(
2805[#include <sys/types.h>
2806#include <sys/sysinfo.h>],
2807[ struct sysinfo sinfo;
2808 int t;
2809
2810 (void)sysinfo(&sinfo);
2811 t = sinfo.totalram;
2812 ],
2813 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2814 AC_MSG_RESULT(not usable))
2815
2816dnl sysconf() may exist but not support what we want to use
2817AC_MSG_CHECKING(for sysconf)
2818AC_TRY_COMPILE(
2819[#include <unistd.h>],
2820[ (void)sysconf(_SC_PAGESIZE);
2821 (void)sysconf(_SC_PHYS_PAGES);
2822 ],
2823 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2824 AC_MSG_RESULT(not usable))
2825
2826dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2827dnl be printed with "%d", and avoids a warning for cross-compiling.
2828
2829AC_MSG_CHECKING(size of int)
2830AC_CACHE_VAL(ac_cv_sizeof_int,
2831 [AC_TRY_RUN([#include <stdio.h>
2832 main()
2833 {
2834 FILE *f=fopen("conftestval", "w");
2835 if (!f) exit(1);
2836 fprintf(f, "%d\n", (int)sizeof(int));
2837 exit(0);
2838 }],
2839 ac_cv_sizeof_int=`cat conftestval`,
2840 ac_cv_sizeof_int=0,
2841 AC_MSG_ERROR(failed to compile test program))])
2842AC_MSG_RESULT($ac_cv_sizeof_int)
2843AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2844
2845AC_MSG_CHECKING(whether memmove/bcopy/memcpy handle overlaps)
2846[bcopy_test_prog='
2847main() {
2848 char buf[10];
2849 strcpy(buf, "abcdefghi");
2850 mch_memmove(buf, buf + 2, 3);
2851 if (strncmp(buf, "ababcf", 6))
2852 exit(1);
2853 strcpy(buf, "abcdefghi");
2854 mch_memmove(buf + 2, buf, 3);
2855 if (strncmp(buf, "cdedef", 6))
2856 exit(1);
2857 exit(0); /* libc version works properly. */
2858}']
2859
2860dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2861dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2862
2863AC_TRY_RUN([#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog],
2864 AC_DEFINE(USEMEMMOVE) AC_MSG_RESULT(memmove does),
2865 AC_TRY_RUN([#define mch_memmove(s,d,l) bcopy(d,s,l) $bcopy_test_prog],
2866 AC_DEFINE(USEBCOPY) AC_MSG_RESULT(bcopy does),
2867 AC_TRY_RUN([#define mch_memmove(s,d,l) memcpy(d,s,l) $bcopy_test_prog],
2868 AC_DEFINE(USEMEMCPY) AC_MSG_RESULT(memcpy does), AC_MSG_RESULT(no),
2869 AC_MSG_ERROR(failed to compile test program)),
2870 AC_MSG_ERROR(failed to compile test program)),
2871 AC_MSG_ERROR(failed to compile test program))
2872
2873dnl Check for multibyte locale functions
2874dnl Find out if _Xsetlocale() is supported by libX11.
2875dnl Check if X_LOCALE should be defined.
2876
2877if test "$enable_multibyte" = "yes"; then
2878 cflags_save=$CFLAGS
2879 ldflags_save=$LDFLAGS
2880 if test -n "$x_includes" ; then
2881 CFLAGS="$CFLAGS -I$x_includes"
2882 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2883 AC_MSG_CHECKING(whether X_LOCALE needed)
2884 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2885 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2886 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2887 AC_MSG_RESULT(no))
2888 fi
2889 CFLAGS=$cflags_save
2890 LDFLAGS=$ldflags_save
2891fi
2892
2893dnl Link with xpg4, it is said to make Korean locale working
2894AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
2895
2896dnl Check how we can run ctags
2897dnl --version for Exuberant ctags (preferred)
2898dnl -t for typedefs (many ctags have this)
2899dnl -s for static functions (Elvis ctags only?)
2900dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
2901dnl -i+m to test for older Exuberant ctags
2902AC_MSG_CHECKING(how to create tags)
2903test -f tags && mv tags tags.save
2904if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaar78984f52005-08-01 07:19:10 +00002905 TAGPRG="ctags -I INIT+"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002906else
2907 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
2908 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
2909 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
2910 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
2911 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
2912 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
2913 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
2914fi
2915test -f tags.save && mv tags.save tags
2916AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
2917
2918dnl Check how we can run man with a section number
2919AC_MSG_CHECKING(how to run man with a section nr)
2920MANDEF="man"
2921(eval man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
2922AC_MSG_RESULT($MANDEF)
2923if test "$MANDEF" = "man -s"; then
2924 AC_DEFINE(USEMAN_S)
2925fi
2926
2927dnl Check if gettext() is working and if it needs -lintl
2928AC_MSG_CHECKING(--disable-nls argument)
2929AC_ARG_ENABLE(nls,
2930 [ --disable-nls Don't support NLS (gettext()).], ,
2931 [enable_nls="yes"])
2932
2933if test "$enable_nls" = "yes"; then
2934 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002935
2936 INSTALL_LANGS=install-languages
2937 AC_SUBST(INSTALL_LANGS)
2938 INSTALL_TOOL_LANGS=install-tool-languages
2939 AC_SUBST(INSTALL_TOOL_LANGS)
2940
Bram Moolenaar071d4272004-06-13 20:20:40 +00002941 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
2942 AC_MSG_CHECKING([for NLS])
2943 if test -f po/Makefile; then
2944 have_gettext="no"
2945 if test -n "$MSGFMT"; then
2946 AC_TRY_LINK(
2947 [#include <libintl.h>],
2948 [gettext("Test");],
2949 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
2950 olibs=$LIBS
2951 LIBS="$LIBS -lintl"
2952 AC_TRY_LINK(
2953 [#include <libintl.h>],
2954 [gettext("Test");],
2955 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
2956 AC_MSG_RESULT([gettext() doesn't work]);
2957 LIBS=$olibs))
2958 else
2959 AC_MSG_RESULT([msgfmt not found - disabled]);
2960 fi
2961 if test $have_gettext = "yes"; then
2962 AC_DEFINE(HAVE_GETTEXT)
2963 MAKEMO=yes
2964 AC_SUBST(MAKEMO)
2965 dnl this was added in GNU gettext 0.10.36
2966 AC_CHECK_FUNCS(bind_textdomain_codeset)
2967 dnl _nl_msg_cat_cntr is required for GNU gettext
2968 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
2969 AC_TRY_LINK(
2970 [#include <libintl.h>
2971 extern int _nl_msg_cat_cntr;],
2972 [++_nl_msg_cat_cntr;],
2973 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
2974 AC_MSG_RESULT([no]))
2975 fi
2976 else
2977 AC_MSG_RESULT([no "po/Makefile" - disabled]);
2978 fi
2979else
2980 AC_MSG_RESULT(yes)
2981fi
2982
2983dnl Check for dynamic linking loader
2984AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
2985if test x${DLL} = xdlfcn.h; then
2986 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
2987 AC_MSG_CHECKING([for dlopen()])
2988 AC_TRY_LINK(,[
2989 extern void* dlopen();
2990 dlopen();
2991 ],
2992 AC_MSG_RESULT(yes);
2993 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
2994 AC_MSG_RESULT(no);
2995 AC_MSG_CHECKING([for dlopen() in -ldl])
2996 olibs=$LIBS
2997 LIBS="$LIBS -ldl"
2998 AC_TRY_LINK(,[
2999 extern void* dlopen();
3000 dlopen();
3001 ],
3002 AC_MSG_RESULT(yes);
3003 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3004 AC_MSG_RESULT(no);
3005 LIBS=$olibs))
3006 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3007 dnl ick :-)
3008 AC_MSG_CHECKING([for dlsym()])
3009 AC_TRY_LINK(,[
3010 extern void* dlsym();
3011 dlsym();
3012 ],
3013 AC_MSG_RESULT(yes);
3014 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3015 AC_MSG_RESULT(no);
3016 AC_MSG_CHECKING([for dlsym() in -ldl])
3017 olibs=$LIBS
3018 LIBS="$LIBS -ldl"
3019 AC_TRY_LINK(,[
3020 extern void* dlsym();
3021 dlsym();
3022 ],
3023 AC_MSG_RESULT(yes);
3024 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3025 AC_MSG_RESULT(no);
3026 LIBS=$olibs))
3027elif test x${DLL} = xdl.h; then
3028 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3029 AC_MSG_CHECKING([for shl_load()])
3030 AC_TRY_LINK(,[
3031 extern void* shl_load();
3032 shl_load();
3033 ],
3034 AC_MSG_RESULT(yes);
3035 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3036 AC_MSG_RESULT(no);
3037 AC_MSG_CHECKING([for shl_load() in -ldld])
3038 olibs=$LIBS
3039 LIBS="$LIBS -ldld"
3040 AC_TRY_LINK(,[
3041 extern void* shl_load();
3042 shl_load();
3043 ],
3044 AC_MSG_RESULT(yes);
3045 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3046 AC_MSG_RESULT(no);
3047 LIBS=$olibs))
3048fi
3049AC_CHECK_HEADERS(setjmp.h)
3050
3051if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3052 dnl -ldl must come after DynaLoader.a
3053 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3054 LIBS=`echo $LIBS | sed s/-ldl//`
3055 PERL_LIBS="$PERL_LIBS -ldl"
3056 fi
3057fi
3058
3059if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3060 && test "x$GUITYPE" != "xCARBONGUI"; then
3061 AC_MSG_CHECKING(whether we need -framework Carbon)
3062 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
3063 if test "x$enable_multibyte" = "xyes" || test "x$features" == "xbig" \
3064 || test "x$features" = "xhuge"; then
3065 LIBS="$LIBS -framework Carbon"
3066 AC_MSG_RESULT(yes)
3067 else
3068 AC_MSG_RESULT(no)
3069 fi
3070fi
3071
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003072dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3073dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3074dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaara5792f52005-11-23 21:25:05 +00003075AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003076DEPEND_CFLAGS_FILTER=
3077if test "$GCC" = yes; then
Bram Moolenaara5792f52005-11-23 21:25:05 +00003078 gccmajor=`"$CC" --version | sed -e '2,$d;s/^[[^0-9]]*\([[1-9]]\)\.[[0-9.]]*.*$/\1/g'`
3079 if test "$gccmajor" > "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003080 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
3081 fi
3082fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003083if test "$DEPEND_CFLAGS_FILTER" = ""; then
3084 AC_MSG_RESULT(no)
3085else
3086 AC_MSG_RESULT(yes)
3087fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003088AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003089
3090dnl write output files
3091AC_OUTPUT(auto/config.mk:config.mk.in)
3092
3093dnl vim: set sw=2 tw=78 fo+=l: