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