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