blob: a644d941fcc654b3aa5eea38eb52b5ce90a200f9 [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 Moolenaar3a025402008-07-24 15:20:50 +0000155 OS_EXTRA_SRC="os_macosx.c os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000156 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
Bram Moolenaarc236c162008-07-13 17:41:49 +0000195 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000196 have_local_include=''
197 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000198 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
199 --without-local-dir do not search /usr/local for local libraries.], [
200 local_dir="$withval"
201 case "$withval" in
202 */*) ;;
203 no)
204 # avoid adding local dir to LDFLAGS and CPPFLAGS
205 have_local_dir=yes
206 have_local_lib=yes
207 ;;
208 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
209 esac
210 AC_MSG_RESULT($local_dir)
211 ], [
212 local_dir=/usr/local
213 AC_MSG_RESULT(Defaulting to $local_dir)
214 ])
215 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000216 echo 'void f(){}' > conftest.c
217 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000218 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
219 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000220 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000221 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000222 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
223 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000224 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000225 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000226 fi
227 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000228 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
229 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000230 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000231 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000232 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000233 fi
234fi
235
236AC_MSG_CHECKING(--with-vim-name argument)
237AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
238 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000239 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000240AC_SUBST(VIMNAME)
241AC_MSG_CHECKING(--with-ex-name argument)
242AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
243 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
244 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
245AC_SUBST(EXNAME)
246AC_MSG_CHECKING(--with-view-name argument)
247AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
248 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
249 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
250AC_SUBST(VIEWNAME)
251
252AC_MSG_CHECKING(--with-global-runtime argument)
253AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
254 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
255 AC_MSG_RESULT(no))
256
257AC_MSG_CHECKING(--with-modified-by argument)
258AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
259 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
260 AC_MSG_RESULT(no))
261
262dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
263AC_MSG_CHECKING(if character set is EBCDIC)
264AC_TRY_COMPILE([ ],
265[ /* TryCompile function for CharSet.
266 Treat any failure as ASCII for compatibility with existing art.
267 Use compile-time rather than run-time tests for cross-compiler
268 tolerance. */
269#if '0'!=240
270make an error "Character set is not EBCDIC"
271#endif ],
272[ # TryCompile action if true
273cf_cv_ebcdic=yes ],
274[ # TryCompile action if false
275cf_cv_ebcdic=no])
276# end of TryCompile ])
277# end of CacheVal CvEbcdic
278AC_MSG_RESULT($cf_cv_ebcdic)
279case "$cf_cv_ebcdic" in #(vi
280 yes) AC_DEFINE(EBCDIC)
281 line_break='"\\n"'
282 ;;
283 *) line_break='"\\012"';;
284esac
285AC_SUBST(line_break)
286
287if test "$cf_cv_ebcdic" = "yes"; then
288dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
289AC_MSG_CHECKING(for OS/390 Unix)
290case `uname` in
291 OS/390) OS390Unix="yes";
292 dnl If using cc the environment variable _CC_CCMODE must be
293 dnl set to "1", so that some compiler extensions are enabled.
294 dnl If using c89 the environment variable is named _CC_C89MODE.
295 dnl Note: compile with c89 never tested.
296 if test "$CC" = "cc"; then
297 ccm="$_CC_CCMODE"
298 ccn="CC"
299 else
300 if test "$CC" = "c89"; then
301 ccm="$_CC_C89MODE"
302 ccn="C89"
303 else
304 ccm=1
305 fi
306 fi
307 if test "$ccm" != "1"; then
308 echo ""
309 echo "------------------------------------------"
310 echo " On OS/390 Unix, the environment variable"
311 echo " __CC_${ccn}MODE must be set to \"1\"!"
312 echo " Do:"
313 echo " export _CC_${ccn}MODE=1"
314 echo " and then call configure again."
315 echo "------------------------------------------"
316 exit 1
317 fi
318 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
319 AC_MSG_RESULT(yes)
320 ;;
321 *) OS390Unix="no";
322 AC_MSG_RESULT(no)
323 ;;
324esac
325fi
326
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000327dnl Link with -lselinux for SELinux stuff; if not found
328AC_MSG_CHECKING(--disable-selinux argument)
329AC_ARG_ENABLE(selinux,
330 [ --disable-selinux Don't check for SELinux support.],
331 , enable_selinux="yes")
332if test "$enable_selinux" = "yes"; then
333 AC_MSG_RESULT(no)
334 AC_CHECK_LIB(selinux, is_selinux_enabled,
335 [LIBS="$LIBS -lselinux"
336 AC_DEFINE(HAVE_SELINUX)])
337else
338 AC_MSG_RESULT(yes)
339fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000340
341dnl Check user requested features.
342
343AC_MSG_CHECKING(--with-features argument)
344AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
345 features="$withval"; AC_MSG_RESULT($features),
346 features="normal"; AC_MSG_RESULT(Defaulting to normal))
347
348dovimdiff=""
349dogvimdiff=""
350case "$features" in
351 tiny) AC_DEFINE(FEAT_TINY) ;;
352 small) AC_DEFINE(FEAT_SMALL) ;;
353 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
354 dogvimdiff="installgvimdiff" ;;
355 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
356 dogvimdiff="installgvimdiff" ;;
357 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
358 dogvimdiff="installgvimdiff" ;;
359 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
360esac
361
362AC_SUBST(dovimdiff)
363AC_SUBST(dogvimdiff)
364
365AC_MSG_CHECKING(--with-compiledby argument)
366AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
367 compiledby="$withval"; AC_MSG_RESULT($withval),
368 compiledby=""; AC_MSG_RESULT(no))
369AC_SUBST(compiledby)
370
371AC_MSG_CHECKING(--disable-xsmp argument)
372AC_ARG_ENABLE(xsmp,
373 [ --disable-xsmp Disable XSMP session management],
374 , enable_xsmp="yes")
375
376if test "$enable_xsmp" = "yes"; then
377 AC_MSG_RESULT(no)
378 AC_MSG_CHECKING(--disable-xsmp-interact argument)
379 AC_ARG_ENABLE(xsmp-interact,
380 [ --disable-xsmp-interact Disable XSMP interaction],
381 , enable_xsmp_interact="yes")
382 if test "$enable_xsmp_interact" = "yes"; then
383 AC_MSG_RESULT(no)
384 AC_DEFINE(USE_XSMP_INTERACT)
385 else
386 AC_MSG_RESULT(yes)
387 fi
388else
389 AC_MSG_RESULT(yes)
390fi
391
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000392dnl Check for MzScheme feature.
393AC_MSG_CHECKING(--enable-mzschemeinterp argument)
394AC_ARG_ENABLE(mzschemeinterp,
395 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
396 [enable_mzschemeinterp="no"])
397AC_MSG_RESULT($enable_mzschemeinterp)
398
399if test "$enable_mzschemeinterp" = "yes"; then
400 dnl -- find the mzscheme executable
401 AC_SUBST(vi_cv_path_mzscheme)
402
403 AC_MSG_CHECKING(--with-plthome argument)
404 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000405 [ --with-plthome=PLTHOME Use PLTHOME.],
406 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000407 with_plthome="";AC_MSG_RESULT("no"))
408
409 if test "X$with_plthome" != "X"; then
410 vi_cv_path_mzscheme_pfx="$with_plthome"
411 else
412 AC_MSG_CHECKING(PLTHOME environment var)
413 if test "X$PLTHOME" != "X"; then
414 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000415 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000416 else
417 AC_MSG_RESULT("not set")
418 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000419 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000420
421 dnl resolve symbolic link, the executable is often elsewhere and there
422 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000423 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000424 lsout=`ls -l $vi_cv_path_mzscheme`
425 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
426 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
427 fi
428 fi
429
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000430 if test "X$vi_cv_path_mzscheme" != "X"; then
431 dnl -- find where MzScheme thinks it was installed
432 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
433 [ vi_cv_path_mzscheme_pfx=`
434 ${vi_cv_path_mzscheme} -evm \
435 "(display (simplify-path \
436 (build-path (call-with-values \
437 (lambda () (split-path (find-system-path (quote exec-file)))) \
438 (lambda (base name must-be-dir?) base)) (quote up))))"` ])
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000439 dnl Remove a trailing slash.
440 vi_cv_path_mzscheme_pfx=`echo "$vi_cv_path_mzscheme_pfx" | sed 's+/$++'`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000441 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000442 fi
443 fi
444
Bram Moolenaard7afed32007-05-06 13:26:41 +0000445 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000446 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
447 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
448 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
449 AC_MSG_RESULT("yes")
450 else
451 AC_MSG_RESULT("no")
Bram Moolenaard7afed32007-05-06 13:26:41 +0000452 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/plt/include)
453 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
454 AC_MSG_RESULT("yes")
455 SCHEME_INC=/plt
456 else
457 AC_MSG_RESULT("no")
458 vi_cv_path_mzscheme_pfx=
459 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000460 fi
461 fi
462
463 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000464 if test "x$MACOSX" = "xyes"; then
465 MZSCHEME_LIBS="-framework PLT_MzScheme"
466 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000467 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 +0000468 else
Bram Moolenaar9048f942007-05-12 14:32:25 +0000469 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000470 if test "$GCC" = yes; then
471 dnl Make Vim remember the path to the library. For when it's not in
472 dnl $LD_LIBRARY_PATH.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000473 MZSCHEME_LIBS="$MZSCHEME_LIBS -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000474 elif test "`(uname) 2>/dev/null`" = SunOS &&
475 uname -r | grep '^5' >/dev/null; then
476 MZSCHEME_LIBS="$MZSCHEME_LIBS -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000477 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000478 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000479 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
480 SCHEME_COLLECTS=lib/plt/
481 fi
482 MZSCHEME_CFLAGS="-I${vi_cv_path_mzscheme_pfx}/include${SCHEME_INC} \
483 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000484 MZSCHEME_SRC="if_mzsch.c"
485 MZSCHEME_OBJ="objects/if_mzsch.o"
486 MZSCHEME_PRO="if_mzsch.pro"
487 AC_DEFINE(FEAT_MZSCHEME)
488 fi
489 AC_SUBST(MZSCHEME_SRC)
490 AC_SUBST(MZSCHEME_OBJ)
491 AC_SUBST(MZSCHEME_PRO)
492 AC_SUBST(MZSCHEME_LIBS)
493 AC_SUBST(MZSCHEME_CFLAGS)
494fi
495
496
Bram Moolenaar071d4272004-06-13 20:20:40 +0000497AC_MSG_CHECKING(--enable-perlinterp argument)
498AC_ARG_ENABLE(perlinterp,
499 [ --enable-perlinterp Include Perl interpreter.], ,
500 [enable_perlinterp="no"])
501AC_MSG_RESULT($enable_perlinterp)
502if test "$enable_perlinterp" = "yes"; then
503 AC_SUBST(vi_cv_path_perl)
504 AC_PATH_PROG(vi_cv_path_perl, perl)
505 if test "X$vi_cv_path_perl" != "X"; then
506 AC_MSG_CHECKING(Perl version)
507 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
508 eval `$vi_cv_path_perl -V:usethreads`
509 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
510 badthreads=no
511 else
512 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
513 eval `$vi_cv_path_perl -V:use5005threads`
514 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
515 badthreads=no
516 else
517 badthreads=yes
518 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
519 fi
520 else
521 badthreads=yes
522 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
523 fi
524 fi
525 if test $badthreads = no; then
526 AC_MSG_RESULT(OK)
527 eval `$vi_cv_path_perl -V:shrpenv`
528 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
529 shrpenv=""
530 fi
531 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
532 AC_SUBST(vi_cv_perllib)
533 dnl Remove "-fno-something", it breaks using cproto.
534 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
535 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
536 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
537 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
538 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
539 -e 's/-bE:perl.exp//' -e 's/-lc //'`
540 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
541 dnl a test in configure may fail because of that.
542 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
543 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
544
545 dnl check that compiling a simple program still works with the flags
546 dnl added for Perl.
547 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
548 cflags_save=$CFLAGS
549 libs_save=$LIBS
550 ldflags_save=$LDFLAGS
551 CFLAGS="$CFLAGS $perlcppflags"
552 LIBS="$LIBS $perllibs"
553 LDFLAGS="$perlldflags $LDFLAGS"
554 AC_TRY_LINK(,[ ],
555 AC_MSG_RESULT(yes); perl_ok=yes,
556 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
557 CFLAGS=$cflags_save
558 LIBS=$libs_save
559 LDFLAGS=$ldflags_save
560 if test $perl_ok = yes; then
561 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000562 dnl remove -pipe and -Wxxx, it confuses cproto
563 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000564 fi
565 if test "X$perlldflags" != "X"; then
566 LDFLAGS="$perlldflags $LDFLAGS"
567 fi
568 PERL_LIBS=$perllibs
569 PERL_SRC="auto/if_perl.c if_perlsfio.c"
570 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
571 PERL_PRO="if_perl.pro if_perlsfio.pro"
572 AC_DEFINE(FEAT_PERL)
573 fi
574 fi
575 else
576 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
577 fi
578 fi
579
580 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000581 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000582 dir=/System/Library/Perl
583 darwindir=$dir/darwin
584 if test -d $darwindir; then
585 PERL=/usr/bin/perl
586 else
587 dnl Mac OS X 10.3
588 dir=/System/Library/Perl/5.8.1
589 darwindir=$dir/darwin-thread-multi-2level
590 if test -d $darwindir; then
591 PERL=/usr/bin/perl
592 fi
593 fi
594 if test -n "$PERL"; then
595 PERL_DIR="$dir"
596 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
597 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
598 PERL_LIBS="-L$darwindir/CORE -lperl"
599 fi
600 fi
601fi
602AC_SUBST(shrpenv)
603AC_SUBST(PERL_SRC)
604AC_SUBST(PERL_OBJ)
605AC_SUBST(PERL_PRO)
606AC_SUBST(PERL_CFLAGS)
607AC_SUBST(PERL_LIBS)
608
609AC_MSG_CHECKING(--enable-pythoninterp argument)
610AC_ARG_ENABLE(pythoninterp,
611 [ --enable-pythoninterp Include Python interpreter.], ,
612 [enable_pythoninterp="no"])
613AC_MSG_RESULT($enable_pythoninterp)
614if test "$enable_pythoninterp" = "yes"; then
615 dnl -- find the python executable
616 AC_PATH_PROG(vi_cv_path_python, python)
617 if test "X$vi_cv_path_python" != "X"; then
618
619 dnl -- get its version number
620 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
621 [[vi_cv_var_python_version=`
622 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
623 ]])
624
625 dnl -- it must be at least version 1.4
626 AC_MSG_CHECKING(Python is 1.4 or better)
627 if ${vi_cv_path_python} -c \
628 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
629 then
630 AC_MSG_RESULT(yep)
631
632 dnl -- find where python thinks it was installed
633 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
634 [ vi_cv_path_python_pfx=`
635 ${vi_cv_path_python} -c \
636 "import sys; print sys.prefix"` ])
637
638 dnl -- and where it thinks it runs
639 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
640 [ vi_cv_path_python_epfx=`
641 ${vi_cv_path_python} -c \
642 "import sys; print sys.exec_prefix"` ])
643
644 dnl -- python's internal library path
645
646 AC_CACHE_VAL(vi_cv_path_pythonpath,
647 [ vi_cv_path_pythonpath=`
648 unset PYTHONPATH;
649 ${vi_cv_path_python} -c \
650 "import sys, string; print string.join(sys.path,':')"` ])
651
652 dnl -- where the Python implementation library archives are
653
654 AC_ARG_WITH(python-config-dir,
655 [ --with-python-config-dir=PATH Python's config directory],
656 [ vi_cv_path_python_conf="${withval}" ] )
657
658 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
659 [
660 vi_cv_path_python_conf=
661 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
662 for subdir in lib share; do
663 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
664 if test -d "$d" && test -f "$d/config.c"; then
665 vi_cv_path_python_conf="$d"
666 fi
667 done
668 done
669 ])
670
671 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
672
673 if test "X$PYTHON_CONFDIR" = "X"; then
674 AC_MSG_RESULT([can't find it!])
675 else
676
677 dnl -- we need to examine Python's config/Makefile too
678 dnl see what the interpreter is built from
679 AC_CACHE_VAL(vi_cv_path_python_plibs,
680 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000681 pwd=`pwd`
682 tmp_mkf="$pwd/config-PyMake$$"
683 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000684__:
685 @echo "python_MODLIBS='$(MODLIBS)'"
686 @echo "python_LIBS='$(LIBS)'"
687 @echo "python_SYSLIBS='$(SYSLIBS)'"
688 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
689eof
690 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000691 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
692 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000693 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
694 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
695 vi_cv_path_python_plibs="-framework Python"
696 else
697 if test "${vi_cv_var_python_version}" = "1.4"; then
698 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
699 else
700 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
701 fi
702 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
703 dnl remove -ltermcap, it can conflict with an earlier -lncurses
704 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
705 fi
706 ])
707
708 PYTHON_LIBS="${vi_cv_path_python_plibs}"
709 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
710 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
711 else
712 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}"
713 fi
714 PYTHON_SRC="if_python.c"
715 dnl For Mac OSX 10.2 config.o is included in the Python library.
716 if test "x$MACOSX" = "xyes"; then
717 PYTHON_OBJ="objects/if_python.o"
718 else
719 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
720 fi
721 if test "${vi_cv_var_python_version}" = "1.4"; then
722 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
723 fi
724 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
725
726 dnl On FreeBSD linking with "-pthread" is required to use threads.
727 dnl _THREAD_SAFE must be used for compiling then.
728 dnl The "-pthread" is added to $LIBS, so that the following check for
729 dnl sigaltstack() will look in libc_r (it's there in libc!).
730 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
731 dnl will then define target-specific defines, e.g., -D_REENTRANT.
732 dnl Don't do this for Mac OSX, -pthread will generate a warning.
733 AC_MSG_CHECKING([if -pthread should be used])
734 threadsafe_flag=
735 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000736 dnl if test "x$MACOSX" != "xyes"; then
737 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000738 test "$GCC" = yes && threadsafe_flag="-pthread"
739 if test "`(uname) 2>/dev/null`" = FreeBSD; then
740 threadsafe_flag="-D_THREAD_SAFE"
741 thread_lib="-pthread"
742 fi
743 fi
744 libs_save_old=$LIBS
745 if test -n "$threadsafe_flag"; then
746 cflags_save=$CFLAGS
747 CFLAGS="$CFLAGS $threadsafe_flag"
748 LIBS="$LIBS $thread_lib"
749 AC_TRY_LINK(,[ ],
750 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
751 AC_MSG_RESULT(no); LIBS=$libs_save_old
752 )
753 CFLAGS=$cflags_save
754 else
755 AC_MSG_RESULT(no)
756 fi
757
758 dnl check that compiling a simple program still works with the flags
759 dnl added for Python.
760 AC_MSG_CHECKING([if compile and link flags for Python are sane])
761 cflags_save=$CFLAGS
762 libs_save=$LIBS
763 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
764 LIBS="$LIBS $PYTHON_LIBS"
765 AC_TRY_LINK(,[ ],
766 AC_MSG_RESULT(yes); python_ok=yes,
767 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
768 CFLAGS=$cflags_save
769 LIBS=$libs_save
770 if test $python_ok = yes; then
771 AC_DEFINE(FEAT_PYTHON)
772 else
773 LIBS=$libs_save_old
774 PYTHON_SRC=
775 PYTHON_OBJ=
776 PYTHON_LIBS=
777 PYTHON_CFLAGS=
778 fi
779
780 fi
781 else
782 AC_MSG_RESULT(too old)
783 fi
784 fi
785fi
786AC_SUBST(PYTHON_CONFDIR)
787AC_SUBST(PYTHON_LIBS)
788AC_SUBST(PYTHON_GETPATH_CFLAGS)
789AC_SUBST(PYTHON_CFLAGS)
790AC_SUBST(PYTHON_SRC)
791AC_SUBST(PYTHON_OBJ)
792
793AC_MSG_CHECKING(--enable-tclinterp argument)
794AC_ARG_ENABLE(tclinterp,
795 [ --enable-tclinterp Include Tcl interpreter.], ,
796 [enable_tclinterp="no"])
797AC_MSG_RESULT($enable_tclinterp)
798
799if test "$enable_tclinterp" = "yes"; then
800
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000801 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000802 AC_MSG_CHECKING(--with-tclsh argument)
803 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
804 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000805 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000806 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
807 AC_SUBST(vi_cv_path_tcl)
808
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000809 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
810 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
811 tclsh_name="tclsh8.4"
812 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
813 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000814 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000815 tclsh_name="tclsh8.2"
816 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
817 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000818 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
819 tclsh_name="tclsh8.0"
820 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
821 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000822 dnl still didn't find it, try without version number
823 if test "X$vi_cv_path_tcl" = "X"; then
824 tclsh_name="tclsh"
825 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
826 fi
827 if test "X$vi_cv_path_tcl" != "X"; then
828 AC_MSG_CHECKING(Tcl version)
829 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
830 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
831 AC_MSG_RESULT($tclver - OK);
832 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 -`
833
834 AC_MSG_CHECKING(for location of Tcl include)
835 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +0000836 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 +0000837 else
838 dnl For Mac OS X 10.3, use the OS-provided framework location
839 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
840 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +0000841 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +0000842 for try in $tclinc; do
843 if test -f "$try/tcl.h"; then
844 AC_MSG_RESULT($try/tcl.h)
845 TCL_INC=$try
846 break
847 fi
848 done
849 if test -z "$TCL_INC"; then
850 AC_MSG_RESULT(<not found>)
851 SKIP_TCL=YES
852 fi
853 if test -z "$SKIP_TCL"; then
854 AC_MSG_CHECKING(for location of tclConfig.sh script)
855 if test "x$MACOSX" != "xyes"; then
856 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000857 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000858 else
859 dnl For Mac OS X 10.3, use the OS-provided framework location
860 tclcnf="/System/Library/Frameworks/Tcl.framework"
861 fi
862 for try in $tclcnf; do
863 if test -f $try/tclConfig.sh; then
864 AC_MSG_RESULT($try/tclConfig.sh)
865 . $try/tclConfig.sh
866 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
867 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
868 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000869 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +0000870 TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^[[^-]]/d' -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000871 break
872 fi
873 done
874 if test -z "$TCL_LIBS"; then
875 AC_MSG_RESULT(<not found>)
876 AC_MSG_CHECKING(for Tcl library by myself)
877 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000878 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000879 for ext in .so .a ; do
880 for ver in "" $tclver ; do
881 for try in $tcllib ; do
882 trylib=tcl$ver$ext
883 if test -f $try/lib$trylib ; then
884 AC_MSG_RESULT($try/lib$trylib)
885 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
886 if test "`(uname) 2>/dev/null`" = SunOS &&
887 uname -r | grep '^5' >/dev/null; then
888 TCL_LIBS="$TCL_LIBS -R $try"
889 fi
890 break 3
891 fi
892 done
893 done
894 done
895 if test -z "$TCL_LIBS"; then
896 AC_MSG_RESULT(<not found>)
897 SKIP_TCL=YES
898 fi
899 fi
900 if test -z "$SKIP_TCL"; then
901 AC_DEFINE(FEAT_TCL)
902 TCL_SRC=if_tcl.c
903 TCL_OBJ=objects/if_tcl.o
904 TCL_PRO=if_tcl.pro
905 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
906 fi
907 fi
908 else
909 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
910 fi
911 fi
912fi
913AC_SUBST(TCL_SRC)
914AC_SUBST(TCL_OBJ)
915AC_SUBST(TCL_PRO)
916AC_SUBST(TCL_CFLAGS)
917AC_SUBST(TCL_LIBS)
918
919AC_MSG_CHECKING(--enable-rubyinterp argument)
920AC_ARG_ENABLE(rubyinterp,
921 [ --enable-rubyinterp Include Ruby interpreter.], ,
922 [enable_rubyinterp="no"])
923AC_MSG_RESULT($enable_rubyinterp)
924if test "$enable_rubyinterp" = "yes"; then
925 AC_SUBST(vi_cv_path_ruby)
926 AC_PATH_PROG(vi_cv_path_ruby, ruby)
927 if test "X$vi_cv_path_ruby" != "X"; then
928 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +0000929 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 +0000930 AC_MSG_RESULT(OK)
931 AC_MSG_CHECKING(Ruby header files)
932 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
933 if test "X$rubyhdrdir" != "X"; then
934 AC_MSG_RESULT($rubyhdrdir)
935 RUBY_CFLAGS="-I$rubyhdrdir"
936 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
937 if test "X$rubylibs" != "X"; then
938 RUBY_LIBS="$rubylibs"
939 fi
940 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
941 if test -f "$rubyhdrdir/$librubyarg"; then
942 librubyarg="$rubyhdrdir/$librubyarg"
943 else
944 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
945 if test -f "$rubylibdir/$librubyarg"; then
946 librubyarg="$rubylibdir/$librubyarg"
947 elif test "$librubyarg" = "libruby.a"; then
948 dnl required on Mac OS 10.3 where libruby.a doesn't exist
949 librubyarg="-lruby"
950 else
951 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
952 fi
953 fi
954
955 if test "X$librubyarg" != "X"; then
956 RUBY_LIBS="$librubyarg $RUBY_LIBS"
957 fi
958 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
959 if test "X$rubyldflags" != "X"; then
960 LDFLAGS="$rubyldflags $LDFLAGS"
961 fi
962 RUBY_SRC="if_ruby.c"
963 RUBY_OBJ="objects/if_ruby.o"
964 RUBY_PRO="if_ruby.pro"
965 AC_DEFINE(FEAT_RUBY)
966 else
967 AC_MSG_RESULT(not found, disabling Ruby)
968 fi
969 else
970 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
971 fi
972 fi
973fi
974AC_SUBST(RUBY_SRC)
975AC_SUBST(RUBY_OBJ)
976AC_SUBST(RUBY_PRO)
977AC_SUBST(RUBY_CFLAGS)
978AC_SUBST(RUBY_LIBS)
979
980AC_MSG_CHECKING(--enable-cscope argument)
981AC_ARG_ENABLE(cscope,
982 [ --enable-cscope Include cscope interface.], ,
983 [enable_cscope="no"])
984AC_MSG_RESULT($enable_cscope)
985if test "$enable_cscope" = "yes"; then
986 AC_DEFINE(FEAT_CSCOPE)
987fi
988
989AC_MSG_CHECKING(--enable-workshop argument)
990AC_ARG_ENABLE(workshop,
991 [ --enable-workshop Include Sun Visual Workshop support.], ,
992 [enable_workshop="no"])
993AC_MSG_RESULT($enable_workshop)
994if test "$enable_workshop" = "yes"; then
995 AC_DEFINE(FEAT_SUN_WORKSHOP)
996 WORKSHOP_SRC="workshop.c integration.c"
997 AC_SUBST(WORKSHOP_SRC)
998 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
999 AC_SUBST(WORKSHOP_OBJ)
1000 if test "${enable_gui-xxx}" = xxx; then
1001 enable_gui=motif
1002 fi
1003fi
1004
1005AC_MSG_CHECKING(--disable-netbeans argument)
1006AC_ARG_ENABLE(netbeans,
1007 [ --disable-netbeans Disable NetBeans integration support.],
1008 , [enable_netbeans="yes"])
1009if test "$enable_netbeans" = "yes"; then
1010 AC_MSG_RESULT(no)
1011 dnl On Solaris we need the socket and nsl library.
1012 AC_CHECK_LIB(socket, socket)
1013 AC_CHECK_LIB(nsl, gethostbyname)
1014 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1015 AC_TRY_LINK([
1016#include <stdio.h>
1017#include <stdlib.h>
1018#include <stdarg.h>
1019#include <fcntl.h>
1020#include <netdb.h>
1021#include <netinet/in.h>
1022#include <errno.h>
1023#include <sys/types.h>
1024#include <sys/socket.h>
1025 /* Check bitfields */
1026 struct nbbuf {
1027 unsigned int initDone:1;
1028 ushort signmaplen;
1029 };
1030 ], [
1031 /* Check creating a socket. */
1032 struct sockaddr_in server;
1033 (void)socket(AF_INET, SOCK_STREAM, 0);
1034 (void)htons(100);
1035 (void)gethostbyname("microsoft.com");
1036 if (errno == ECONNREFUSED)
1037 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1038 ],
1039 AC_MSG_RESULT(yes),
1040 AC_MSG_RESULT(no); enable_netbeans="no")
1041else
1042 AC_MSG_RESULT(yes)
1043fi
1044if test "$enable_netbeans" = "yes"; then
1045 AC_DEFINE(FEAT_NETBEANS_INTG)
1046 NETBEANS_SRC="netbeans.c"
1047 AC_SUBST(NETBEANS_SRC)
1048 NETBEANS_OBJ="objects/netbeans.o"
1049 AC_SUBST(NETBEANS_OBJ)
1050fi
1051
1052AC_MSG_CHECKING(--enable-sniff argument)
1053AC_ARG_ENABLE(sniff,
1054 [ --enable-sniff Include Sniff interface.], ,
1055 [enable_sniff="no"])
1056AC_MSG_RESULT($enable_sniff)
1057if test "$enable_sniff" = "yes"; then
1058 AC_DEFINE(FEAT_SNIFF)
1059 SNIFF_SRC="if_sniff.c"
1060 AC_SUBST(SNIFF_SRC)
1061 SNIFF_OBJ="objects/if_sniff.o"
1062 AC_SUBST(SNIFF_OBJ)
1063fi
1064
1065AC_MSG_CHECKING(--enable-multibyte argument)
1066AC_ARG_ENABLE(multibyte,
1067 [ --enable-multibyte Include multibyte editing support.], ,
1068 [enable_multibyte="no"])
1069AC_MSG_RESULT($enable_multibyte)
1070if test "$enable_multibyte" = "yes"; then
1071 AC_DEFINE(FEAT_MBYTE)
1072fi
1073
1074AC_MSG_CHECKING(--enable-hangulinput argument)
1075AC_ARG_ENABLE(hangulinput,
1076 [ --enable-hangulinput Include Hangul input support.], ,
1077 [enable_hangulinput="no"])
1078AC_MSG_RESULT($enable_hangulinput)
1079
1080AC_MSG_CHECKING(--enable-xim argument)
1081AC_ARG_ENABLE(xim,
1082 [ --enable-xim Include XIM input support.],
1083 AC_MSG_RESULT($enable_xim),
1084 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1085dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1086
1087AC_MSG_CHECKING(--enable-fontset argument)
1088AC_ARG_ENABLE(fontset,
1089 [ --enable-fontset Include X fontset output support.], ,
1090 [enable_fontset="no"])
1091AC_MSG_RESULT($enable_fontset)
1092dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1093
1094test -z "$with_x" && with_x=yes
1095test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1096if test "$with_x" = no; then
1097 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1098else
1099 dnl Do this check early, so that its failure can override user requests.
1100
1101 AC_PATH_PROG(xmkmfpath, xmkmf)
1102
1103 AC_PATH_XTRA
1104
1105 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1106 dnl be compiled with a special option.
1107 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1108 if test "$OS390Unix" = "yes"; then
1109 CFLAGS="$CFLAGS -W c,dll"
1110 LDFLAGS="$LDFLAGS -W l,dll"
1111 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1112 fi
1113
1114 dnl On my HPUX system the X include dir is found, but the lib dir not.
1115 dnl This is a desparate try to fix this.
1116
1117 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1118 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1119 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1120 X_LIBS="$X_LIBS -L$x_libraries"
1121 if test "`(uname) 2>/dev/null`" = SunOS &&
1122 uname -r | grep '^5' >/dev/null; then
1123 X_LIBS="$X_LIBS -R $x_libraries"
1124 fi
1125 fi
1126
1127 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1128 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1129 AC_MSG_RESULT(Corrected X includes to $x_includes)
1130 X_CFLAGS="$X_CFLAGS -I$x_includes"
1131 fi
1132
1133 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1134 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1135 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1136 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1137 dnl Same for "-R/usr/lib ".
1138 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1139
1140
1141 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001142 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1143 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001144 AC_MSG_CHECKING(if X11 header files can be found)
1145 cflags_save=$CFLAGS
1146 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001147 AC_TRY_COMPILE([#include <X11/Xlib.h>
1148#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001149 AC_MSG_RESULT(yes),
1150 AC_MSG_RESULT(no); no_x=yes)
1151 CFLAGS=$cflags_save
1152
1153 if test "${no_x-no}" = yes; then
1154 with_x=no
1155 else
1156 AC_DEFINE(HAVE_X11)
1157 X_LIB="-lXt -lX11";
1158 AC_SUBST(X_LIB)
1159
1160 ac_save_LDFLAGS="$LDFLAGS"
1161 LDFLAGS="-L$x_libraries $LDFLAGS"
1162
1163 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1164 dnl For HP-UX 10.20 it must be before -lSM -lICE
1165 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1166 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1167
1168 dnl Some systems need -lnsl -lsocket when testing for ICE.
1169 dnl The check above doesn't do this, try here (again). Also needed to get
1170 dnl them after Xdmcp. link.sh will remove them when not needed.
1171 dnl Check for other function than above to avoid the cached value
1172 AC_CHECK_LIB(ICE, IceOpenConnection,
1173 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1174
1175 dnl Check for -lXpm (needed for some versions of Motif)
1176 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1177 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1178 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1179
1180 dnl Check that the X11 header files don't use implicit declarations
1181 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1182 cflags_save=$CFLAGS
1183 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1184 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1185 AC_MSG_RESULT(no),
1186 CFLAGS="$CFLAGS -Wno-implicit-int"
1187 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1188 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1189 AC_MSG_RESULT(test failed)
1190 )
1191 )
1192 CFLAGS=$cflags_save
1193
1194 LDFLAGS="$ac_save_LDFLAGS"
1195
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001196 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1197 AC_CACHE_VAL(ac_cv_small_wchar_t,
1198 [AC_TRY_RUN([
1199#include <X11/Xlib.h>
1200#if STDC_HEADERS
1201# include <stdlib.h>
1202# include <stddef.h>
1203#endif
1204 main()
1205 {
1206 if (sizeof(wchar_t) <= 2)
1207 exit(1);
1208 exit(0);
1209 }],
1210 ac_cv_small_wchar_t="no",
1211 ac_cv_small_wchar_t="yes",
1212 AC_MSG_ERROR(failed to compile test program))])
1213 AC_MSG_RESULT($ac_cv_small_wchar_t)
1214 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1215 AC_DEFINE(SMALL_WCHAR_T)
1216 fi
1217
Bram Moolenaar071d4272004-06-13 20:20:40 +00001218 fi
1219fi
1220
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001221test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001222
1223AC_MSG_CHECKING(--enable-gui argument)
1224AC_ARG_ENABLE(gui,
Bram Moolenaar9372a112005-12-06 19:59:18 +00001225 [ --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 +00001226
1227dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1228dnl Do not use character classes for portability with old tools.
1229enable_gui_canon=`echo "_$enable_gui" | \
1230 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1231
1232dnl Skip everything by default.
1233SKIP_GTK=YES
1234SKIP_GTK2=YES
1235SKIP_GNOME=YES
1236SKIP_MOTIF=YES
1237SKIP_ATHENA=YES
1238SKIP_NEXTAW=YES
1239SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001240SKIP_CARBON=YES
1241GUITYPE=NONE
1242
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001243if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001244 SKIP_PHOTON=
1245 case "$enable_gui_canon" in
1246 no) AC_MSG_RESULT(no GUI support)
1247 SKIP_PHOTON=YES ;;
1248 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1249 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1250 photon) AC_MSG_RESULT(Photon GUI support) ;;
1251 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1252 SKIP_PHOTON=YES ;;
1253 esac
1254
1255elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1256 SKIP_CARBON=
1257 case "$enable_gui_canon" in
1258 no) AC_MSG_RESULT(no GUI support)
1259 SKIP_CARBON=YES ;;
1260 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1261 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1262 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1263 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1264 SKIP_CARBON=YES ;;
1265 esac
1266
1267else
1268
Bram Moolenaar071d4272004-06-13 20:20:40 +00001269 case "$enable_gui_canon" in
1270 no|none) AC_MSG_RESULT(no GUI support) ;;
1271 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1272 SKIP_GTK=
1273 SKIP_GTK2=
1274 SKIP_GNOME=
1275 SKIP_MOTIF=
1276 SKIP_ATHENA=
1277 SKIP_NEXTAW=
1278 SKIP_CARBON=;;
1279 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1280 SKIP_GTK=;;
1281 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1282 SKIP_GTK=
1283 SKIP_GTK2=;;
1284 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1285 SKIP_GNOME=
1286 SKIP_GTK=;;
1287 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1288 SKIP_GNOME=
1289 SKIP_GTK=
1290 SKIP_GTK2=;;
1291 motif) AC_MSG_RESULT(Motif GUI support)
1292 SKIP_MOTIF=;;
1293 athena) AC_MSG_RESULT(Athena GUI support)
1294 SKIP_ATHENA=;;
1295 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1296 SKIP_NEXTAW=;;
1297 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1298 esac
1299
1300fi
1301
1302if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1303 AC_MSG_CHECKING(whether or not to look for GTK)
1304 AC_ARG_ENABLE(gtk-check,
1305 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1306 , enable_gtk_check="yes")
1307 AC_MSG_RESULT($enable_gtk_check)
1308 if test "x$enable_gtk_check" = "xno"; then
1309 SKIP_GTK=YES
1310 SKIP_GNOME=YES
1311 fi
1312fi
1313
1314if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1315 -a "$enable_gui_canon" != "gnome2"; then
1316 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1317 AC_ARG_ENABLE(gtk2-check,
1318 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1319 , enable_gtk2_check="yes")
1320 AC_MSG_RESULT($enable_gtk2_check)
1321 if test "x$enable_gtk2_check" = "xno"; then
1322 SKIP_GTK2=YES
1323 fi
1324fi
1325
1326if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1327 -a "$enable_gui_canon" != "gnome2"; then
1328 AC_MSG_CHECKING(whether or not to look for GNOME)
1329 AC_ARG_ENABLE(gnome-check,
1330 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1331 , enable_gnome_check="no")
1332 AC_MSG_RESULT($enable_gnome_check)
1333 if test "x$enable_gnome_check" = "xno"; then
1334 SKIP_GNOME=YES
1335 fi
1336fi
1337
1338if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1339 AC_MSG_CHECKING(whether or not to look for Motif)
1340 AC_ARG_ENABLE(motif-check,
1341 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1342 , enable_motif_check="yes")
1343 AC_MSG_RESULT($enable_motif_check)
1344 if test "x$enable_motif_check" = "xno"; then
1345 SKIP_MOTIF=YES
1346 fi
1347fi
1348
1349if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1350 AC_MSG_CHECKING(whether or not to look for Athena)
1351 AC_ARG_ENABLE(athena-check,
1352 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1353 , enable_athena_check="yes")
1354 AC_MSG_RESULT($enable_athena_check)
1355 if test "x$enable_athena_check" = "xno"; then
1356 SKIP_ATHENA=YES
1357 fi
1358fi
1359
1360if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1361 AC_MSG_CHECKING(whether or not to look for neXtaw)
1362 AC_ARG_ENABLE(nextaw-check,
1363 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1364 , enable_nextaw_check="yes")
1365 AC_MSG_RESULT($enable_nextaw_check);
1366 if test "x$enable_nextaw_check" = "xno"; then
1367 SKIP_NEXTAW=YES
1368 fi
1369fi
1370
1371if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1372 AC_MSG_CHECKING(whether or not to look for Carbon)
1373 AC_ARG_ENABLE(carbon-check,
1374 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1375 , enable_carbon_check="yes")
1376 AC_MSG_RESULT($enable_carbon_check);
1377 if test "x$enable_carbon_check" = "xno"; then
1378 SKIP_CARBON=YES
1379 fi
1380fi
1381
Bram Moolenaar843ee412004-06-30 16:16:41 +00001382
Bram Moolenaar071d4272004-06-13 20:20:40 +00001383if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1384 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001385 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001386 AC_MSG_RESULT(yes);
1387 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001388 if test "$VIMNAME" = "vim"; then
1389 VIMNAME=Vim
1390 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001391
1392 dnl Default install directory is not /usr/local
1393 if test x$prefix = xNONE; then
1394 prefix=/Applications
1395 fi
1396
1397 dnl Sorry for the hard coded default
1398 datadir='${prefix}/Vim.app/Contents/Resources'
1399
Bram Moolenaar071d4272004-06-13 20:20:40 +00001400 dnl skip everything else
1401 SKIP_GTK=YES;
1402 SKIP_GTK2=YES;
1403 SKIP_GNOME=YES;
1404 SKIP_MOTIF=YES;
1405 SKIP_ATHENA=YES;
1406 SKIP_NEXTAW=YES;
1407 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001408 SKIP_CARBON=YES
1409fi
1410
Bram Moolenaar071d4272004-06-13 20:20:40 +00001411dnl
1412dnl Get the cflags and libraries from the gtk-config script
1413dnl
1414
1415dnl define an autoconf function to check for a specified version of GTK, and
1416dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1417dnl
1418dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001419dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001420dnl
1421AC_DEFUN(AM_PATH_GTK,
1422[
1423 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1424 {
1425 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1426 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1427 no_gtk=""
1428 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1429 && $PKG_CONFIG --exists gtk+-2.0; then
1430 {
1431 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1432 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1433 dnl something like that.
1434 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001435 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001436 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1437 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1438 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1439 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1440 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1441 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1442 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1443 }
1444 elif test "X$GTK_CONFIG" != "Xno"; then
1445 {
1446 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001447 GTK_LIBDIR=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001448 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1449 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1450 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1451 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1452 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1453 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1454 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1455 }
1456 else
1457 no_gtk=yes
1458 fi
1459
1460 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1461 {
1462 ac_save_CFLAGS="$CFLAGS"
1463 ac_save_LIBS="$LIBS"
1464 CFLAGS="$CFLAGS $GTK_CFLAGS"
1465 LIBS="$LIBS $GTK_LIBS"
1466
1467 dnl
1468 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1469 dnl checks the results of gtk-config to some extent
1470 dnl
1471 rm -f conf.gtktest
1472 AC_TRY_RUN([
1473#include <gtk/gtk.h>
1474#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001475#if STDC_HEADERS
1476# include <stdlib.h>
1477# include <stddef.h>
1478#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001479
1480int
1481main ()
1482{
1483int major, minor, micro;
1484char *tmp_version;
1485
1486system ("touch conf.gtktest");
1487
1488/* HP/UX 9 (%@#!) writes to sscanf strings */
1489tmp_version = g_strdup("$min_gtk_version");
1490if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1491 printf("%s, bad version string\n", "$min_gtk_version");
1492 exit(1);
1493 }
1494
1495if ((gtk_major_version > major) ||
1496 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1497 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1498 (gtk_micro_version >= micro)))
1499{
1500 return 0;
1501}
1502return 1;
1503}
1504],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1505 CFLAGS="$ac_save_CFLAGS"
1506 LIBS="$ac_save_LIBS"
1507 }
1508 fi
1509 if test "x$no_gtk" = x ; then
1510 if test "x$enable_gtktest" = "xyes"; then
1511 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1512 else
1513 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1514 fi
1515 ifelse([$2], , :, [$2])
1516 else
1517 {
1518 AC_MSG_RESULT(no)
1519 GTK_CFLAGS=""
1520 GTK_LIBS=""
1521 ifelse([$3], , :, [$3])
1522 }
1523 fi
1524 }
1525 else
1526 GTK_CFLAGS=""
1527 GTK_LIBS=""
1528 ifelse([$3], , :, [$3])
1529 fi
1530 AC_SUBST(GTK_CFLAGS)
1531 AC_SUBST(GTK_LIBS)
1532 rm -f conf.gtktest
1533])
1534
1535dnl ---------------------------------------------------------------------------
1536dnl gnome
1537dnl ---------------------------------------------------------------------------
1538AC_DEFUN([GNOME_INIT_HOOK],
1539[
1540 AC_SUBST(GNOME_LIBS)
1541 AC_SUBST(GNOME_LIBDIR)
1542 AC_SUBST(GNOME_INCLUDEDIR)
1543
1544 AC_ARG_WITH(gnome-includes,
1545 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1546 [CFLAGS="$CFLAGS -I$withval"]
1547 )
1548
1549 AC_ARG_WITH(gnome-libs,
1550 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1551 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1552 )
1553
1554 AC_ARG_WITH(gnome,
1555 [ --with-gnome Specify prefix for GNOME files],
1556 if test x$withval = xyes; then
1557 want_gnome=yes
1558 ifelse([$1], [], :, [$1])
1559 else
1560 if test "x$withval" = xno; then
1561 want_gnome=no
1562 else
1563 want_gnome=yes
1564 LDFLAGS="$LDFLAGS -L$withval/lib"
1565 CFLAGS="$CFLAGS -I$withval/include"
1566 gnome_prefix=$withval/lib
1567 fi
1568 fi,
1569 want_gnome=yes)
1570
1571 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1572 {
1573 AC_MSG_CHECKING(for libgnomeui-2.0)
1574 if $PKG_CONFIG --exists libgnomeui-2.0; then
1575 AC_MSG_RESULT(yes)
1576 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1577 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1578 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001579
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001580 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1581 dnl This might not be the right way but it works for me...
1582 AC_MSG_CHECKING(for FreeBSD)
1583 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1584 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001585 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001586 GNOME_LIBS="$GNOME_LIBS -pthread"
1587 else
1588 AC_MSG_RESULT(no)
1589 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001590 $1
1591 else
1592 AC_MSG_RESULT(not found)
1593 if test "x$2" = xfail; then
1594 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1595 fi
1596 fi
1597 }
1598 elif test "x$want_gnome" = xyes; then
1599 {
1600 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1601 if test "$GNOME_CONFIG" = "no"; then
1602 no_gnome_config="yes"
1603 else
1604 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1605 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1606 AC_MSG_RESULT(yes)
1607 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1608 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1609 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1610 $1
1611 else
1612 AC_MSG_RESULT(no)
1613 no_gnome_config="yes"
1614 fi
1615 fi
1616
1617 if test x$exec_prefix = xNONE; then
1618 if test x$prefix = xNONE; then
1619 gnome_prefix=$ac_default_prefix/lib
1620 else
1621 gnome_prefix=$prefix/lib
1622 fi
1623 else
1624 gnome_prefix=`eval echo \`echo $libdir\``
1625 fi
1626
1627 if test "$no_gnome_config" = "yes"; then
1628 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1629 if test -f $gnome_prefix/gnomeConf.sh; then
1630 AC_MSG_RESULT(found)
1631 echo "loading gnome configuration from" \
1632 "$gnome_prefix/gnomeConf.sh"
1633 . $gnome_prefix/gnomeConf.sh
1634 $1
1635 else
1636 AC_MSG_RESULT(not found)
1637 if test x$2 = xfail; then
1638 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1639 fi
1640 fi
1641 fi
1642 }
1643 fi
1644])
1645
1646AC_DEFUN([GNOME_INIT],[
1647 GNOME_INIT_HOOK([],fail)
1648])
1649
1650
1651dnl ---------------------------------------------------------------------------
1652dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1653dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1654dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1655dnl ---------------------------------------------------------------------------
1656if test -z "$SKIP_GTK"; then
1657
1658 AC_MSG_CHECKING(--with-gtk-prefix argument)
1659 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1660 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1661 gtk_config_prefix=""; AC_MSG_RESULT(no))
1662
1663 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1664 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1665 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1666 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1667
1668 AC_MSG_CHECKING(--disable-gtktest argument)
1669 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1670 , enable_gtktest=yes)
1671 if test "x$enable_gtktest" = "xyes" ; then
1672 AC_MSG_RESULT(gtk test enabled)
1673 else
1674 AC_MSG_RESULT(gtk test disabled)
1675 fi
1676
1677 if test "x$gtk_config_prefix" != "x" ; then
1678 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1679 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1680 fi
1681 if test "x$gtk_config_exec_prefix" != "x" ; then
1682 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1683 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1684 fi
1685 if test "X$GTK_CONFIG" = "X"; then
1686 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1687 if test "X$GTK_CONFIG" = "Xno"; then
1688 dnl Some distributions call it gtk12-config, annoying!
1689 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1690 GTK_CONFIG="$GTK12_CONFIG"
1691 fi
1692 else
1693 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1694 fi
1695 if test "X$PKG_CONFIG" = "X"; then
1696 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1697 fi
1698
1699 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1700 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1701 dnl problems (bold fonts, --remote doesn't work).
1702 if test "X$SKIP_GTK2" != "XYES"; then
1703 AM_PATH_GTK(2.2.0,
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001704 [GUI_LIB_LOC="$GTK_LIBDIR"
1705 GTK_LIBNAME="$GTK_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001706 GUI_INC_LOC="$GTK_CFLAGS"], )
1707 if test "x$GTK_CFLAGS" != "x"; then
1708 SKIP_ATHENA=YES
1709 SKIP_NEXTAW=YES
1710 SKIP_MOTIF=YES
1711 GUITYPE=GTK
1712 AC_SUBST(GTK_LIBNAME)
1713 fi
1714 fi
1715
1716 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1717 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1718 dnl were test versions.
1719 if test "x$GUITYPE" != "xGTK"; then
1720 SKIP_GTK2=YES
1721 AM_PATH_GTK(1.1.16,
1722 [GTK_LIBNAME="$GTK_LIBS"
1723 GUI_INC_LOC="$GTK_CFLAGS"], )
1724 if test "x$GTK_CFLAGS" != "x"; then
1725 SKIP_ATHENA=YES
1726 SKIP_NEXTAW=YES
1727 SKIP_MOTIF=YES
1728 GUITYPE=GTK
1729 AC_SUBST(GTK_LIBNAME)
1730 fi
1731 fi
1732 fi
1733 dnl Give a warning if GTK is older than 1.2.3
1734 if test "x$GUITYPE" = "xGTK"; then
1735 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1736 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1737 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1738 else
1739 {
1740 if test "0$gtk_major_version" -ge 2; then
1741 AC_DEFINE(HAVE_GTK2)
1742 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1743 || test "0$gtk_minor_version" -ge 2 \
1744 || test "0$gtk_major_version" -gt 2; then
1745 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1746 fi
1747 fi
1748 dnl
1749 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1750 dnl
1751 if test -z "$SKIP_GNOME"; then
1752 {
1753 GNOME_INIT_HOOK([have_gnome=yes])
1754 if test x$have_gnome = xyes ; then
1755 AC_DEFINE(FEAT_GUI_GNOME)
1756 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1757 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1758 fi
1759 }
1760 fi
1761 }
1762 fi
1763 fi
1764fi
1765
1766dnl Check for Motif include files location.
1767dnl The LAST one found is used, this makes the highest version to be used,
1768dnl e.g. when Motif1.2 and Motif2.0 are both present.
1769
1770if test -z "$SKIP_MOTIF"; then
1771 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"
1772 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1773 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1774
1775 AC_MSG_CHECKING(for location of Motif GUI includes)
1776 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1777 GUI_INC_LOC=
1778 for try in $gui_includes; do
1779 if test -f "$try/Xm/Xm.h"; then
1780 GUI_INC_LOC=$try
1781 fi
1782 done
1783 if test -n "$GUI_INC_LOC"; then
1784 if test "$GUI_INC_LOC" = /usr/include; then
1785 GUI_INC_LOC=
1786 AC_MSG_RESULT(in default path)
1787 else
1788 AC_MSG_RESULT($GUI_INC_LOC)
1789 fi
1790 else
1791 AC_MSG_RESULT(<not found>)
1792 SKIP_MOTIF=YES
1793 fi
1794fi
1795
1796dnl Check for Motif library files location. In the same order as the include
1797dnl files, to avoid a mixup if several versions are present
1798
1799if test -z "$SKIP_MOTIF"; then
1800 AC_MSG_CHECKING(--with-motif-lib argument)
1801 AC_ARG_WITH(motif-lib,
1802 [ --with-motif-lib=STRING Library for Motif ],
1803 [ MOTIF_LIBNAME="${withval}" ] )
1804
1805 if test -n "$MOTIF_LIBNAME"; then
1806 AC_MSG_RESULT($MOTIF_LIBNAME)
1807 GUI_LIB_LOC=
1808 else
1809 AC_MSG_RESULT(no)
1810
1811 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1812 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1813
1814 AC_MSG_CHECKING(for location of Motif GUI libs)
1815 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"
1816 GUI_LIB_LOC=
1817 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001818 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00001819 if test -f "$libtry"; then
1820 GUI_LIB_LOC=$try
1821 fi
1822 done
1823 done
1824 if test -n "$GUI_LIB_LOC"; then
1825 dnl Remove /usr/lib, it causes trouble on some systems
1826 if test "$GUI_LIB_LOC" = /usr/lib; then
1827 GUI_LIB_LOC=
1828 AC_MSG_RESULT(in default path)
1829 else
1830 if test -n "$GUI_LIB_LOC"; then
1831 AC_MSG_RESULT($GUI_LIB_LOC)
1832 if test "`(uname) 2>/dev/null`" = SunOS &&
1833 uname -r | grep '^5' >/dev/null; then
1834 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1835 fi
1836 fi
1837 fi
1838 MOTIF_LIBNAME=-lXm
1839 else
1840 AC_MSG_RESULT(<not found>)
1841 SKIP_MOTIF=YES
1842 fi
1843 fi
1844fi
1845
1846if test -z "$SKIP_MOTIF"; then
1847 SKIP_ATHENA=YES
1848 SKIP_NEXTAW=YES
1849 GUITYPE=MOTIF
1850 AC_SUBST(MOTIF_LIBNAME)
1851fi
1852
1853dnl Check if the Athena files can be found
1854
1855GUI_X_LIBS=
1856
1857if test -z "$SKIP_ATHENA"; then
1858 AC_MSG_CHECKING(if Athena header files can be found)
1859 cflags_save=$CFLAGS
1860 CFLAGS="$CFLAGS $X_CFLAGS"
1861 AC_TRY_COMPILE([
1862#include <X11/Intrinsic.h>
1863#include <X11/Xaw/Paned.h>], ,
1864 AC_MSG_RESULT(yes),
1865 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1866 CFLAGS=$cflags_save
1867fi
1868
1869if test -z "$SKIP_ATHENA"; then
1870 GUITYPE=ATHENA
1871fi
1872
1873if test -z "$SKIP_NEXTAW"; then
1874 AC_MSG_CHECKING(if neXtaw header files can be found)
1875 cflags_save=$CFLAGS
1876 CFLAGS="$CFLAGS $X_CFLAGS"
1877 AC_TRY_COMPILE([
1878#include <X11/Intrinsic.h>
1879#include <X11/neXtaw/Paned.h>], ,
1880 AC_MSG_RESULT(yes),
1881 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1882 CFLAGS=$cflags_save
1883fi
1884
1885if test -z "$SKIP_NEXTAW"; then
1886 GUITYPE=NEXTAW
1887fi
1888
1889if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1890 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1891 dnl Avoid adding it when it twice
1892 if test -n "$GUI_INC_LOC"; then
1893 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1894 fi
1895 if test -n "$GUI_LIB_LOC"; then
1896 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1897 fi
1898
1899 dnl Check for -lXext and then for -lXmu
1900 ldflags_save=$LDFLAGS
1901 LDFLAGS="$X_LIBS $LDFLAGS"
1902 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1903 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1904 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1905 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1906 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1907 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1908 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1909 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1910 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1911 if test -z "$SKIP_MOTIF"; then
1912 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1913 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1914 fi
1915 LDFLAGS=$ldflags_save
1916
1917 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1918 AC_MSG_CHECKING(for extra X11 defines)
1919 NARROW_PROTO=
1920 rm -fr conftestdir
1921 if mkdir conftestdir; then
1922 cd conftestdir
1923 cat > Imakefile <<'EOF'
1924acfindx:
1925 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1926EOF
1927 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1928 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1929 fi
1930 cd ..
1931 rm -fr conftestdir
1932 fi
1933 if test -z "$NARROW_PROTO"; then
1934 AC_MSG_RESULT(no)
1935 else
1936 AC_MSG_RESULT($NARROW_PROTO)
1937 fi
1938 AC_SUBST(NARROW_PROTO)
1939fi
1940
1941dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1942dnl use the X11 include path
1943if test "$enable_xsmp" = "yes"; then
1944 cppflags_save=$CPPFLAGS
1945 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1946 AC_CHECK_HEADERS(X11/SM/SMlib.h)
1947 CPPFLAGS=$cppflags_save
1948fi
1949
1950
1951if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1952 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1953 cppflags_save=$CPPFLAGS
1954 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1955 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1956
1957 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1958 if test ! "$enable_xim" = "no"; then
1959 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1960 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1961 AC_MSG_RESULT(yes),
1962 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1963 fi
1964 CPPFLAGS=$cppflags_save
1965
1966 dnl automatically enable XIM when hangul input isn't enabled
1967 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
1968 -a "x$GUITYPE" != "xNONE" ; then
1969 AC_MSG_RESULT(X GUI selected; xim has been enabled)
1970 enable_xim="yes"
1971 fi
1972fi
1973
1974if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1975 cppflags_save=$CPPFLAGS
1976 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00001977dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
1978 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
1979 AC_TRY_COMPILE([
1980#include <X11/Intrinsic.h>
1981#include <X11/Xmu/Editres.h>],
1982 [int i; i = 0;],
1983 AC_MSG_RESULT(yes)
1984 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
1985 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001986 CPPFLAGS=$cppflags_save
1987fi
1988
1989dnl Only use the Xm directory when compiling Motif, don't use it for Athena
1990if test -z "$SKIP_MOTIF"; then
1991 cppflags_save=$CPPFLAGS
1992 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00001993 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 +00001994 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00001995
1996 if test $ac_cv_header_Xm_XpmP_h = yes; then
1997 dnl Solaris uses XpmAttributes_21, very annoying.
1998 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
1999 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2000 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2001 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2002 )
2003 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002004 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002005 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002006 CPPFLAGS=$cppflags_save
2007fi
2008
2009if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2010 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2011 enable_xim="no"
2012fi
2013if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2014 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2015 enable_fontset="no"
2016fi
2017if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2018 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2019 enable_fontset="no"
2020fi
2021
Bram Moolenaar071d4272004-06-13 20:20:40 +00002022if test -z "$SKIP_PHOTON"; then
2023 GUITYPE=PHOTONGUI
2024fi
2025
2026AC_SUBST(GUI_INC_LOC)
2027AC_SUBST(GUI_LIB_LOC)
2028AC_SUBST(GUITYPE)
2029AC_SUBST(GUI_X_LIBS)
2030
2031if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2032 AC_MSG_ERROR([cannot use workshop without Motif])
2033fi
2034
2035dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2036if test "$enable_xim" = "yes"; then
2037 AC_DEFINE(FEAT_XIM)
2038fi
2039if test "$enable_fontset" = "yes"; then
2040 AC_DEFINE(FEAT_XFONTSET)
2041fi
2042
2043
2044dnl ---------------------------------------------------------------------------
2045dnl end of GUI-checking
2046dnl ---------------------------------------------------------------------------
2047
2048
2049dnl Only really enable hangul input when GUI and XFONTSET are available
2050if test "$enable_hangulinput" = "yes"; then
2051 if test "x$GUITYPE" = "xNONE"; then
2052 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2053 enable_hangulinput=no
2054 else
2055 AC_DEFINE(FEAT_HANGULIN)
2056 HANGULIN_SRC=hangulin.c
2057 AC_SUBST(HANGULIN_SRC)
2058 HANGULIN_OBJ=objects/hangulin.o
2059 AC_SUBST(HANGULIN_OBJ)
2060 fi
2061fi
2062
2063dnl Checks for libraries and include files.
2064
Bram Moolenaar446cb832008-06-24 21:56:24 +00002065AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2066 [
2067 AC_RUN_IFELSE([[
2068#include "confdefs.h"
2069#include <ctype.h>
2070#if STDC_HEADERS
2071# include <stdlib.h>
2072# include <stddef.h>
2073#endif
2074main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2075 ]],[
2076 vim_cv_toupper_broken=yes
2077 ],[
2078 vim_cv_toupper_broken=no
2079 ],[
2080 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2081 ])])
2082
2083if test "x$vim_cv_toupper_broken" = "xyes" ; then
2084 AC_DEFINE(BROKEN_TOUPPER)
2085fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002086
2087AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002088AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002089 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2090 AC_MSG_RESULT(no))
2091
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002092AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2093AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2094 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2095 AC_MSG_RESULT(no))
2096
Bram Moolenaar071d4272004-06-13 20:20:40 +00002097dnl Checks for header files.
2098AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2099dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2100if test "$HAS_ELF" = 1; then
2101 AC_CHECK_LIB(elf, main)
2102fi
2103
2104AC_HEADER_DIRENT
2105
Bram Moolenaar071d4272004-06-13 20:20:40 +00002106dnl If sys/wait.h is not found it might still exist but not be POSIX
2107dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2108if test $ac_cv_header_sys_wait_h = no; then
2109 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2110 AC_TRY_COMPILE([#include <sys/wait.h>],
2111 [union wait xx, yy; xx = yy],
2112 AC_MSG_RESULT(yes)
2113 AC_DEFINE(HAVE_SYS_WAIT_H)
2114 AC_DEFINE(HAVE_UNION_WAIT),
2115 AC_MSG_RESULT(no))
2116fi
2117
2118AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
Bram Moolenaare74455a2007-11-04 14:36:18 +00002119 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
Bram Moolenaar446cb832008-06-24 21:56:24 +00002120 iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002121 sys/resource.h sys/systeminfo.h locale.h \
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002122 sys/stream.h termios.h libc.h sys/statfs.h \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002123 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002124 libgen.h util/debug.h util/msg18n.h frame.h \
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002125 sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002126
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002127dnl sys/ptem.h depends on sys/stream.h on Solaris
2128AC_CHECK_HEADERS(sys/ptem.h, [], [],
2129[#if defined HAVE_SYS_STREAM_H
2130# include <sys/stream.h>
2131#endif])
2132
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002133dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2134AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2135[#if defined HAVE_SYS_PARAM_H
2136# include <sys/param.h>
2137#endif])
2138
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002139
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002140dnl pthread_np.h may exist but can only be used after including pthread.h
2141AC_MSG_CHECKING([for pthread_np.h])
2142AC_TRY_COMPILE([
2143#include <pthread.h>
2144#include <pthread_np.h>],
2145 [int i; i = 0;],
2146 AC_MSG_RESULT(yes)
2147 AC_DEFINE(HAVE_PTHREAD_NP_H),
2148 AC_MSG_RESULT(no))
2149
Bram Moolenaare344bea2005-09-01 20:46:49 +00002150AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002151if test "x$MACOSX" = "xyes"; then
2152 dnl The strings.h file on OS/X contains a warning and nothing useful.
2153 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2154else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002155
2156dnl Check if strings.h and string.h can both be included when defined.
2157AC_MSG_CHECKING([if strings.h can be included after string.h])
2158cppflags_save=$CPPFLAGS
2159CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2160AC_TRY_COMPILE([
2161#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2162# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2163 /* but don't do it on AIX 5.1 (Uribarri) */
2164#endif
2165#ifdef HAVE_XM_XM_H
2166# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2167#endif
2168#ifdef HAVE_STRING_H
2169# include <string.h>
2170#endif
2171#if defined(HAVE_STRINGS_H)
2172# include <strings.h>
2173#endif
2174 ], [int i; i = 0;],
2175 AC_MSG_RESULT(yes),
2176 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2177 AC_MSG_RESULT(no))
2178CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002179fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002180
2181dnl Checks for typedefs, structures, and compiler characteristics.
2182AC_PROG_GCC_TRADITIONAL
2183AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002184AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002185AC_TYPE_MODE_T
2186AC_TYPE_OFF_T
2187AC_TYPE_PID_T
2188AC_TYPE_SIZE_T
2189AC_TYPE_UID_T
2190AC_HEADER_TIME
2191AC_CHECK_TYPE(ino_t, long)
2192AC_CHECK_TYPE(dev_t, unsigned)
2193
2194AC_MSG_CHECKING(for rlim_t)
2195if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2196 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2197else
2198 AC_EGREP_CPP(dnl
2199changequote(<<,>>)dnl
2200<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2201changequote([,]),
2202 [
2203#include <sys/types.h>
2204#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002205# include <stdlib.h>
2206# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002207#endif
2208#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002209# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002210#endif
2211 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2212 AC_MSG_RESULT($ac_cv_type_rlim_t)
2213fi
2214if test $ac_cv_type_rlim_t = no; then
2215 cat >> confdefs.h <<\EOF
2216#define rlim_t unsigned long
2217EOF
2218fi
2219
2220AC_MSG_CHECKING(for stack_t)
2221if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2222 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2223else
2224 AC_EGREP_CPP(stack_t,
2225 [
2226#include <sys/types.h>
2227#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002228# include <stdlib.h>
2229# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002230#endif
2231#include <signal.h>
2232 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2233 AC_MSG_RESULT($ac_cv_type_stack_t)
2234fi
2235if test $ac_cv_type_stack_t = no; then
2236 cat >> confdefs.h <<\EOF
2237#define stack_t struct sigaltstack
2238EOF
2239fi
2240
2241dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2242AC_MSG_CHECKING(whether stack_t has an ss_base field)
2243AC_TRY_COMPILE([
2244#include <sys/types.h>
2245#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002246# include <stdlib.h>
2247# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002248#endif
2249#include <signal.h>
2250#include "confdefs.h"
2251 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2252 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2253 AC_MSG_RESULT(no))
2254
2255olibs="$LIBS"
2256AC_MSG_CHECKING(--with-tlib argument)
2257AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2258if test -n "$with_tlib"; then
2259 AC_MSG_RESULT($with_tlib)
2260 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002261 AC_MSG_CHECKING(for linking with $with_tlib library)
2262 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2263 dnl Need to check for tgetent() below.
2264 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002265else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002266 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002267 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2268 dnl curses, because curses is much slower.
2269 dnl Newer versions of ncurses are preferred over anything.
2270 dnl Older versions of ncurses have bugs, get a new one!
2271 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002272 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002273 case "`uname -s 2>/dev/null`" in
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002274 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002275 *) tlibs="ncurses termlib termcap curses";;
2276 esac
2277 for libname in $tlibs; do
2278 AC_CHECK_LIB(${libname}, tgetent,,)
2279 if test "x$olibs" != "x$LIBS"; then
2280 dnl It's possible that a library is found but it doesn't work
2281 dnl e.g., shared library that cannot be found
2282 dnl compile and run a test program to be sure
2283 AC_TRY_RUN([
2284#ifdef HAVE_TERMCAP_H
2285# include <termcap.h>
2286#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002287#if STDC_HEADERS
2288# include <stdlib.h>
2289# include <stddef.h>
2290#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002291main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2292 res="OK", res="FAIL", res="FAIL")
2293 if test "$res" = "OK"; then
2294 break
2295 fi
2296 AC_MSG_RESULT($libname library is not usable)
2297 LIBS="$olibs"
2298 fi
2299 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002300 if test "x$olibs" = "x$LIBS"; then
2301 AC_MSG_RESULT(no terminal library found)
2302 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002303fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002304
2305if test "x$olibs" = "x$LIBS"; then
2306 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002307 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002308 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2309 AC_MSG_RESULT(yes),
2310 AC_MSG_ERROR([NOT FOUND!
2311 You need to install a terminal library; for example ncurses.
2312 Or specify the name of the library with --with-tlib.]))
2313fi
2314
Bram Moolenaar446cb832008-06-24 21:56:24 +00002315AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2316 [
2317 AC_RUN_IFELSE([[
2318#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002319#ifdef HAVE_TERMCAP_H
2320# include <termcap.h>
2321#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002322#ifdef HAVE_STRING_H
2323# include <string.h>
2324#endif
2325#if STDC_HEADERS
2326# include <stdlib.h>
2327# include <stddef.h>
2328#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002329main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002330{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2331 ]],[
2332 vim_cv_terminfo=no
2333 ],[
2334 vim_cv_terminfo=yes
2335 ],[
2336 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2337 ])
2338 ])
2339
2340if test "x$vim_cv_terminfo" = "xyes" ; then
2341 AC_DEFINE(TERMINFO)
2342fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002343
2344if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002345 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2346 [
2347 AC_RUN_IFELSE([[
2348#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002349#ifdef HAVE_TERMCAP_H
2350# include <termcap.h>
2351#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002352#if STDC_HEADERS
2353# include <stdlib.h>
2354# include <stddef.h>
2355#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002356main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002357{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2358 ]],[
2359 vim_cv_tgent=zero
2360 ],[
2361 vim_cv_tgent=non-zero
2362 ],[
2363 AC_MSG_ERROR(failed to compile test program.)
2364 ])
2365 ])
2366
2367 if test "x$vim_cv_tgent" = "xzero" ; then
2368 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2369 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002370fi
2371
2372AC_MSG_CHECKING(whether termcap.h contains ospeed)
2373AC_TRY_LINK([
2374#ifdef HAVE_TERMCAP_H
2375# include <termcap.h>
2376#endif
2377 ], [ospeed = 20000],
2378 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2379 [AC_MSG_RESULT(no)
2380 AC_MSG_CHECKING(whether ospeed can be extern)
2381 AC_TRY_LINK([
2382#ifdef HAVE_TERMCAP_H
2383# include <termcap.h>
2384#endif
2385extern short ospeed;
2386 ], [ospeed = 20000],
2387 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2388 AC_MSG_RESULT(no))]
2389 )
2390
2391AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2392AC_TRY_LINK([
2393#ifdef HAVE_TERMCAP_H
2394# include <termcap.h>
2395#endif
2396 ], [if (UP == 0 && BC == 0) PC = 1],
2397 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2398 [AC_MSG_RESULT(no)
2399 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2400 AC_TRY_LINK([
2401#ifdef HAVE_TERMCAP_H
2402# include <termcap.h>
2403#endif
2404extern char *UP, *BC, PC;
2405 ], [if (UP == 0 && BC == 0) PC = 1],
2406 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2407 AC_MSG_RESULT(no))]
2408 )
2409
2410AC_MSG_CHECKING(whether tputs() uses outfuntype)
2411AC_TRY_COMPILE([
2412#ifdef HAVE_TERMCAP_H
2413# include <termcap.h>
2414#endif
2415 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2416 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2417 AC_MSG_RESULT(no))
2418
2419dnl On some SCO machines sys/select redefines struct timeval
2420AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2421AC_TRY_COMPILE([
2422#include <sys/types.h>
2423#include <sys/time.h>
2424#include <sys/select.h>], ,
2425 AC_MSG_RESULT(yes)
2426 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2427 AC_MSG_RESULT(no))
2428
2429dnl AC_DECL_SYS_SIGLIST
2430
2431dnl Checks for pty.c (copied from screen) ==========================
2432AC_MSG_CHECKING(for /dev/ptc)
2433if test -r /dev/ptc; then
2434 AC_DEFINE(HAVE_DEV_PTC)
2435 AC_MSG_RESULT(yes)
2436else
2437 AC_MSG_RESULT(no)
2438fi
2439
2440AC_MSG_CHECKING(for SVR4 ptys)
2441if test -c /dev/ptmx ; then
2442 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2443 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2444 AC_MSG_RESULT(no))
2445else
2446 AC_MSG_RESULT(no)
2447fi
2448
2449AC_MSG_CHECKING(for ptyranges)
2450if test -d /dev/ptym ; then
2451 pdir='/dev/ptym'
2452else
2453 pdir='/dev'
2454fi
2455dnl SCO uses ptyp%d
2456AC_EGREP_CPP(yes,
2457[#ifdef M_UNIX
2458 yes;
2459#endif
2460 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2461dnl if test -c /dev/ptyp19; then
2462dnl ptys=`echo /dev/ptyp??`
2463dnl else
2464dnl ptys=`echo $pdir/pty??`
2465dnl fi
2466if test "$ptys" != "$pdir/pty??" ; then
2467 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2468 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2469 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2470 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2471 AC_MSG_RESULT([$p0 / $p1])
2472else
2473 AC_MSG_RESULT([don't know])
2474fi
2475
2476dnl **** pty mode/group handling ****
2477dnl
2478dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002479rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002480AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2481 [
2482 AC_RUN_IFELSE([[
2483#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002484#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002485#if STDC_HEADERS
2486# include <stdlib.h>
2487# include <stddef.h>
2488#endif
2489#ifdef HAVE_UNISTD_H
2490#include <unistd.h>
2491#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002492#include <sys/stat.h>
2493#include <stdio.h>
2494main()
2495{
2496 struct stat sb;
2497 char *x,*ttyname();
2498 int om, m;
2499 FILE *fp;
2500
2501 if (!(x = ttyname(0))) exit(1);
2502 if (stat(x, &sb)) exit(1);
2503 om = sb.st_mode;
2504 if (om & 002) exit(0);
2505 m = system("mesg y");
2506 if (m == -1 || m == 127) exit(1);
2507 if (stat(x, &sb)) exit(1);
2508 m = sb.st_mode;
2509 if (chmod(x, om)) exit(1);
2510 if (m & 002) exit(0);
2511 if (sb.st_gid == getgid()) exit(1);
2512 if (!(fp=fopen("conftest_grp", "w")))
2513 exit(1);
2514 fprintf(fp, "%d\n", sb.st_gid);
2515 fclose(fp);
2516 exit(0);
2517}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002518 ]],[
2519 if test -f conftest_grp; then
2520 vim_cv_tty_group=`cat conftest_grp`
2521 if test "x$vim_cv_tty_mode" = "x" ; then
2522 vim_cv_tty_mode=0620
2523 fi
2524 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2525 else
2526 vim_cv_tty_group=world
Bram Moolenaar071d4272004-06-13 20:20:40 +00002527 AC_MSG_RESULT([ptys are world accessable])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002528 fi
2529 ],[
2530 vim_cv_tty_group=world
2531 AC_MSG_RESULT([can't determine - assume ptys are world accessable])
2532 ],[
2533 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2534 ])
2535 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002536rm -f conftest_grp
2537
Bram Moolenaar446cb832008-06-24 21:56:24 +00002538if test "x$vim_cv_tty_group" != "xworld" ; then
2539 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2540 if test "x$vim_cv_tty_mode" = "x" ; then
2541 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)])
2542 else
2543 AC_DEFINE(PTYMODE, 0620)
2544 fi
2545fi
2546
Bram Moolenaar071d4272004-06-13 20:20:40 +00002547dnl Checks for library functions. ===================================
2548
2549AC_TYPE_SIGNAL
2550
2551dnl find out what to use at the end of a signal function
2552if test $ac_cv_type_signal = void; then
2553 AC_DEFINE(SIGRETURN, [return])
2554else
2555 AC_DEFINE(SIGRETURN, [return 0])
2556fi
2557
2558dnl check if struct sigcontext is defined (used for SGI only)
2559AC_MSG_CHECKING(for struct sigcontext)
2560AC_TRY_COMPILE([
2561#include <signal.h>
2562test_sig()
2563{
2564 struct sigcontext *scont;
2565 scont = (struct sigcontext *)0;
2566 return 1;
2567} ], ,
2568 AC_MSG_RESULT(yes)
2569 AC_DEFINE(HAVE_SIGCONTEXT),
2570 AC_MSG_RESULT(no))
2571
2572dnl tricky stuff: try to find out if getcwd() is implemented with
2573dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002574AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2575 [
2576 AC_RUN_IFELSE([[
2577#include "confdefs.h"
2578#ifdef HAVE_UNISTD_H
2579#include <unistd.h>
2580#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002581char *dagger[] = { "IFS=pwd", 0 };
2582main()
2583{
2584 char buffer[500];
2585 extern char **environ;
2586 environ = dagger;
2587 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002588}
2589 ]],[
2590 vim_cv_getcwd_broken=no
2591 ],[
2592 vim_cv_getcwd_broken=yes
2593 ],[
2594 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2595 ])
2596 ])
2597
2598if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2599 AC_DEFINE(BAD_GETCWD)
2600fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002601
2602dnl Check for functions in one big call, to reduce the size of configure
2603AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2604 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2605 memset nanosleep opendir putenv qsort readlink select setenv \
2606 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002607 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002608 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2609 usleep utime utimes)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002610
2611dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2612AC_MSG_CHECKING(for st_blksize)
2613AC_TRY_COMPILE(
2614[#include <sys/types.h>
2615#include <sys/stat.h>],
2616[ struct stat st;
2617 int n;
2618
2619 stat("/", &st);
2620 n = (int)st.st_blksize;],
2621 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2622 AC_MSG_RESULT(no))
2623
Bram Moolenaar446cb832008-06-24 21:56:24 +00002624AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2625 [
2626 AC_RUN_IFELSE([[
2627#include "confdefs.h"
2628#if STDC_HEADERS
2629# include <stdlib.h>
2630# include <stddef.h>
2631#endif
2632#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002633#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002634main() {struct stat st; exit(stat("configure/", &st) != 0); }
2635 ]],[
2636 vim_cv_stat_ignores_slash=yes
2637 ],[
2638 vim_cv_stat_ignores_slash=no
2639 ],[
2640 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2641 ])
2642 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002643
Bram Moolenaar446cb832008-06-24 21:56:24 +00002644if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2645 AC_DEFINE(STAT_IGNORES_SLASH)
2646fi
2647
Bram Moolenaar071d4272004-06-13 20:20:40 +00002648dnl Link with iconv for charset translation, if not found without library.
2649dnl check for iconv() requires including iconv.h
2650dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2651dnl has been installed.
2652AC_MSG_CHECKING(for iconv_open())
2653save_LIBS="$LIBS"
2654LIBS="$LIBS -liconv"
2655AC_TRY_LINK([
2656#ifdef HAVE_ICONV_H
2657# include <iconv.h>
2658#endif
2659 ], [iconv_open("fr", "to");],
2660 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2661 LIBS="$save_LIBS"
2662 AC_TRY_LINK([
2663#ifdef HAVE_ICONV_H
2664# include <iconv.h>
2665#endif
2666 ], [iconv_open("fr", "to");],
2667 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2668 AC_MSG_RESULT(no)))
2669
2670
2671AC_MSG_CHECKING(for nl_langinfo(CODESET))
2672AC_TRY_LINK([
2673#ifdef HAVE_LANGINFO_H
2674# include <langinfo.h>
2675#endif
2676], [char *cs = nl_langinfo(CODESET);],
2677 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2678 AC_MSG_RESULT(no))
2679
Bram Moolenaar446cb832008-06-24 21:56:24 +00002680dnl Need various functions for floating point support. Only enable
2681dnl floating point when they are all present.
2682AC_CHECK_LIB(m, strtod)
2683AC_MSG_CHECKING([for strtod() and other floating point functions])
2684AC_TRY_LINK([
2685#ifdef HAVE_MATH_H
2686# include <math.h>
2687#endif
2688#if STDC_HEADERS
2689# include <stdlib.h>
2690# include <stddef.h>
2691#endif
2692], [char *s; double d;
2693 d = strtod("1.1", &s);
2694 d = fabs(1.11);
2695 d = ceil(1.11);
2696 d = floor(1.11);
2697 d = log10(1.11);
2698 d = pow(1.11, 2.22);
2699 d = sqrt(1.11);
2700 d = sin(1.11);
2701 d = cos(1.11);
2702 d = atan(1.11);
2703 ],
2704 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2705 AC_MSG_RESULT(no))
2706
Bram Moolenaar071d4272004-06-13 20:20:40 +00002707dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2708dnl when -lacl works, also try to use -lattr (required for Debian).
2709AC_MSG_CHECKING(--disable-acl argument)
2710AC_ARG_ENABLE(acl,
2711 [ --disable-acl Don't check for ACL support.],
2712 , [enable_acl="yes"])
2713if test "$enable_acl" = "yes"; then
2714AC_MSG_RESULT(no)
2715AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2716 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2717 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2718
2719AC_MSG_CHECKING(for POSIX ACL support)
2720AC_TRY_LINK([
2721#include <sys/types.h>
2722#ifdef HAVE_SYS_ACL_H
2723# include <sys/acl.h>
2724#endif
2725acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2726 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2727 acl_free(acl);],
2728 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2729 AC_MSG_RESULT(no))
2730
2731AC_MSG_CHECKING(for Solaris ACL support)
2732AC_TRY_LINK([
2733#ifdef HAVE_SYS_ACL_H
2734# include <sys/acl.h>
2735#endif], [acl("foo", GETACLCNT, 0, NULL);
2736 ],
2737 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2738 AC_MSG_RESULT(no))
2739
2740AC_MSG_CHECKING(for AIX ACL support)
2741AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00002742#if STDC_HEADERS
2743# include <stdlib.h>
2744# include <stddef.h>
2745#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002746#ifdef HAVE_SYS_ACL_H
2747# include <sys/acl.h>
2748#endif
2749#ifdef HAVE_SYS_ACCESS_H
2750# include <sys/access.h>
2751#endif
2752#define _ALL_SOURCE
2753
2754#include <sys/stat.h>
2755
2756int aclsize;
2757struct acl *aclent;], [aclsize = sizeof(struct acl);
2758 aclent = (void *)malloc(aclsize);
2759 statacl("foo", STX_NORMAL, aclent, aclsize);
2760 ],
2761 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2762 AC_MSG_RESULT(no))
2763else
2764 AC_MSG_RESULT(yes)
2765fi
2766
2767AC_MSG_CHECKING(--disable-gpm argument)
2768AC_ARG_ENABLE(gpm,
2769 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2770 [enable_gpm="yes"])
2771
2772if test "$enable_gpm" = "yes"; then
2773 AC_MSG_RESULT(no)
2774 dnl Checking if gpm support can be compiled
2775 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2776 [olibs="$LIBS" ; LIBS="-lgpm"]
2777 AC_TRY_LINK(
2778 [#include <gpm.h>
2779 #include <linux/keyboard.h>],
2780 [Gpm_GetLibVersion(NULL);],
2781 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2782 dnl FEAT_MOUSE_GPM if mouse support is included
2783 [vi_cv_have_gpm=yes],
2784 [vi_cv_have_gpm=no])
2785 [LIBS="$olibs"]
2786 )
2787 if test $vi_cv_have_gpm = yes; then
2788 LIBS="$LIBS -lgpm"
2789 AC_DEFINE(HAVE_GPM)
2790 fi
2791else
2792 AC_MSG_RESULT(yes)
2793fi
2794
Bram Moolenaar446cb832008-06-24 21:56:24 +00002795AC_MSG_CHECKING(--disable-sysmouse argument)
2796AC_ARG_ENABLE(sysmouse,
2797 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
2798 [enable_sysmouse="yes"])
2799
2800if test "$enable_sysmouse" = "yes"; then
2801 AC_MSG_RESULT(no)
2802 dnl Checking if sysmouse support can be compiled
2803 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2804 dnl defines FEAT_SYSMOUSE if mouse support is included
2805 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2806 AC_TRY_LINK(
2807 [#include <sys/consio.h>
2808 #include <signal.h>
2809 #include <sys/fbio.h>],
2810 [struct mouse_info mouse;
2811 mouse.operation = MOUSE_MODE;
2812 mouse.operation = MOUSE_SHOW;
2813 mouse.u.mode.mode = 0;
2814 mouse.u.mode.signal = SIGUSR2;],
2815 [vi_cv_have_sysmouse=yes],
2816 [vi_cv_have_sysmouse=no])
2817 )
2818 if test $vi_cv_have_sysmouse = yes; then
2819 AC_DEFINE(HAVE_SYSMOUSE)
2820 fi
2821else
2822 AC_MSG_RESULT(yes)
2823fi
2824
Bram Moolenaar071d4272004-06-13 20:20:40 +00002825dnl rename needs to be checked separately to work on Nextstep with cc
2826AC_MSG_CHECKING(for rename)
2827AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2828 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2829 AC_MSG_RESULT(no))
2830
2831dnl sysctl() may exist but not the arguments we use
2832AC_MSG_CHECKING(for sysctl)
2833AC_TRY_COMPILE(
2834[#include <sys/types.h>
2835#include <sys/sysctl.h>],
2836[ int mib[2], r;
2837 size_t len;
2838
2839 mib[0] = CTL_HW;
2840 mib[1] = HW_USERMEM;
2841 len = sizeof(r);
2842 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2843 ],
2844 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2845 AC_MSG_RESULT(not usable))
2846
2847dnl sysinfo() may exist but not be Linux compatible
2848AC_MSG_CHECKING(for sysinfo)
2849AC_TRY_COMPILE(
2850[#include <sys/types.h>
2851#include <sys/sysinfo.h>],
2852[ struct sysinfo sinfo;
2853 int t;
2854
2855 (void)sysinfo(&sinfo);
2856 t = sinfo.totalram;
2857 ],
2858 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2859 AC_MSG_RESULT(not usable))
2860
Bram Moolenaar914572a2007-05-01 11:37:47 +00002861dnl struct sysinfo may have the mem_unit field or not
2862AC_MSG_CHECKING(for sysinfo.mem_unit)
2863AC_TRY_COMPILE(
2864[#include <sys/types.h>
2865#include <sys/sysinfo.h>],
2866[ struct sysinfo sinfo;
2867 sinfo.mem_unit = 1;
2868 ],
2869 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2870 AC_MSG_RESULT(no))
2871
Bram Moolenaar071d4272004-06-13 20:20:40 +00002872dnl sysconf() may exist but not support what we want to use
2873AC_MSG_CHECKING(for sysconf)
2874AC_TRY_COMPILE(
2875[#include <unistd.h>],
2876[ (void)sysconf(_SC_PAGESIZE);
2877 (void)sysconf(_SC_PHYS_PAGES);
2878 ],
2879 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2880 AC_MSG_RESULT(not usable))
2881
2882dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2883dnl be printed with "%d", and avoids a warning for cross-compiling.
2884
2885AC_MSG_CHECKING(size of int)
2886AC_CACHE_VAL(ac_cv_sizeof_int,
Bram Moolenaar446cb832008-06-24 21:56:24 +00002887 [AC_TRY_RUN([
2888#include <stdio.h>
2889#if STDC_HEADERS
2890# include <stdlib.h>
2891# include <stddef.h>
2892#endif
2893main()
2894{
2895 FILE *f=fopen("conftestval", "w");
2896 if (!f) exit(1);
2897 fprintf(f, "%d\n", (int)sizeof(int));
2898 exit(0);
2899}],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002900 ac_cv_sizeof_int=`cat conftestval`,
2901 ac_cv_sizeof_int=0,
2902 AC_MSG_ERROR(failed to compile test program))])
2903AC_MSG_RESULT($ac_cv_sizeof_int)
2904AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2905
Bram Moolenaar446cb832008-06-24 21:56:24 +00002906dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2907dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2908
Bram Moolenaar071d4272004-06-13 20:20:40 +00002909[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00002910#include "confdefs.h"
2911#ifdef HAVE_STRING_H
2912# include <string.h>
2913#endif
2914#if STDC_HEADERS
2915# include <stdlib.h>
2916# include <stddef.h>
2917#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002918main() {
2919 char buf[10];
2920 strcpy(buf, "abcdefghi");
2921 mch_memmove(buf, buf + 2, 3);
2922 if (strncmp(buf, "ababcf", 6))
2923 exit(1);
2924 strcpy(buf, "abcdefghi");
2925 mch_memmove(buf + 2, buf, 3);
2926 if (strncmp(buf, "cdedef", 6))
2927 exit(1);
2928 exit(0); /* libc version works properly. */
2929}']
2930
Bram Moolenaar446cb832008-06-24 21:56:24 +00002931AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
2932 [
2933 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
2934 [
2935 vim_cv_memmove_handles_overlap=yes
2936 ],[
2937 vim_cv_memmove_handles_overlap=no
2938 ],[
2939 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
2940 ])
2941 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002942
Bram Moolenaar446cb832008-06-24 21:56:24 +00002943if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
2944 AC_DEFINE(USEMEMMOVE)
2945else
2946 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
2947 [
2948 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
2949 [
2950 vim_cv_bcopy_handles_overlap=yes
2951 ],[
2952 vim_cv_bcopy_handles_overlap=no
2953 ],[
2954 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
2955 ])
2956 ])
2957
2958 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
2959 AC_DEFINE(USEBCOPY)
2960 else
2961 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
2962 [
2963 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
2964 [
2965 vim_cv_memcpy_handles_overlap=yes
2966 ],[
2967 vim_cv_memcpy_handles_overlap=no
2968 ],[
2969 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
2970 ])
2971 ])
2972
2973 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
2974 AC_DEFINE(USEMEMCPY)
2975 fi
2976 fi
2977fi
2978
Bram Moolenaar071d4272004-06-13 20:20:40 +00002979
2980dnl Check for multibyte locale functions
2981dnl Find out if _Xsetlocale() is supported by libX11.
2982dnl Check if X_LOCALE should be defined.
2983
2984if test "$enable_multibyte" = "yes"; then
2985 cflags_save=$CFLAGS
2986 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00002987 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002988 CFLAGS="$CFLAGS -I$x_includes"
2989 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
2990 AC_MSG_CHECKING(whether X_LOCALE needed)
2991 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
2992 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
2993 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
2994 AC_MSG_RESULT(no))
2995 fi
2996 CFLAGS=$cflags_save
2997 LDFLAGS=$ldflags_save
2998fi
2999
3000dnl Link with xpg4, it is said to make Korean locale working
3001AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3002
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003003dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003004dnl --version for Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003005dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003006dnl -t for typedefs (many ctags have this)
3007dnl -s for static functions (Elvis ctags only?)
3008dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3009dnl -i+m to test for older Exuberant ctags
3010AC_MSG_CHECKING(how to create tags)
3011test -f tags && mv tags tags.save
3012if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003013 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003014else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003015 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003016 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3017 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3018 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3019 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3020 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3021 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3022 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3023fi
3024test -f tags.save && mv tags.save tags
3025AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3026
3027dnl Check how we can run man with a section number
3028AC_MSG_CHECKING(how to run man with a section nr)
3029MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003030(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 +00003031AC_MSG_RESULT($MANDEF)
3032if test "$MANDEF" = "man -s"; then
3033 AC_DEFINE(USEMAN_S)
3034fi
3035
3036dnl Check if gettext() is working and if it needs -lintl
3037AC_MSG_CHECKING(--disable-nls argument)
3038AC_ARG_ENABLE(nls,
3039 [ --disable-nls Don't support NLS (gettext()).], ,
3040 [enable_nls="yes"])
3041
3042if test "$enable_nls" = "yes"; then
3043 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003044
3045 INSTALL_LANGS=install-languages
3046 AC_SUBST(INSTALL_LANGS)
3047 INSTALL_TOOL_LANGS=install-tool-languages
3048 AC_SUBST(INSTALL_TOOL_LANGS)
3049
Bram Moolenaar071d4272004-06-13 20:20:40 +00003050 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3051 AC_MSG_CHECKING([for NLS])
3052 if test -f po/Makefile; then
3053 have_gettext="no"
3054 if test -n "$MSGFMT"; then
3055 AC_TRY_LINK(
3056 [#include <libintl.h>],
3057 [gettext("Test");],
3058 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3059 olibs=$LIBS
3060 LIBS="$LIBS -lintl"
3061 AC_TRY_LINK(
3062 [#include <libintl.h>],
3063 [gettext("Test");],
3064 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3065 AC_MSG_RESULT([gettext() doesn't work]);
3066 LIBS=$olibs))
3067 else
3068 AC_MSG_RESULT([msgfmt not found - disabled]);
3069 fi
3070 if test $have_gettext = "yes"; then
3071 AC_DEFINE(HAVE_GETTEXT)
3072 MAKEMO=yes
3073 AC_SUBST(MAKEMO)
3074 dnl this was added in GNU gettext 0.10.36
3075 AC_CHECK_FUNCS(bind_textdomain_codeset)
3076 dnl _nl_msg_cat_cntr is required for GNU gettext
3077 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3078 AC_TRY_LINK(
3079 [#include <libintl.h>
3080 extern int _nl_msg_cat_cntr;],
3081 [++_nl_msg_cat_cntr;],
3082 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3083 AC_MSG_RESULT([no]))
3084 fi
3085 else
3086 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3087 fi
3088else
3089 AC_MSG_RESULT(yes)
3090fi
3091
3092dnl Check for dynamic linking loader
3093AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3094if test x${DLL} = xdlfcn.h; then
3095 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3096 AC_MSG_CHECKING([for dlopen()])
3097 AC_TRY_LINK(,[
3098 extern void* dlopen();
3099 dlopen();
3100 ],
3101 AC_MSG_RESULT(yes);
3102 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3103 AC_MSG_RESULT(no);
3104 AC_MSG_CHECKING([for dlopen() in -ldl])
3105 olibs=$LIBS
3106 LIBS="$LIBS -ldl"
3107 AC_TRY_LINK(,[
3108 extern void* dlopen();
3109 dlopen();
3110 ],
3111 AC_MSG_RESULT(yes);
3112 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3113 AC_MSG_RESULT(no);
3114 LIBS=$olibs))
3115 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3116 dnl ick :-)
3117 AC_MSG_CHECKING([for dlsym()])
3118 AC_TRY_LINK(,[
3119 extern void* dlsym();
3120 dlsym();
3121 ],
3122 AC_MSG_RESULT(yes);
3123 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3124 AC_MSG_RESULT(no);
3125 AC_MSG_CHECKING([for dlsym() in -ldl])
3126 olibs=$LIBS
3127 LIBS="$LIBS -ldl"
3128 AC_TRY_LINK(,[
3129 extern void* dlsym();
3130 dlsym();
3131 ],
3132 AC_MSG_RESULT(yes);
3133 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3134 AC_MSG_RESULT(no);
3135 LIBS=$olibs))
3136elif test x${DLL} = xdl.h; then
3137 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3138 AC_MSG_CHECKING([for shl_load()])
3139 AC_TRY_LINK(,[
3140 extern void* shl_load();
3141 shl_load();
3142 ],
3143 AC_MSG_RESULT(yes);
3144 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3145 AC_MSG_RESULT(no);
3146 AC_MSG_CHECKING([for shl_load() in -ldld])
3147 olibs=$LIBS
3148 LIBS="$LIBS -ldld"
3149 AC_TRY_LINK(,[
3150 extern void* shl_load();
3151 shl_load();
3152 ],
3153 AC_MSG_RESULT(yes);
3154 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3155 AC_MSG_RESULT(no);
3156 LIBS=$olibs))
3157fi
3158AC_CHECK_HEADERS(setjmp.h)
3159
3160if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3161 dnl -ldl must come after DynaLoader.a
3162 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3163 LIBS=`echo $LIBS | sed s/-ldl//`
3164 PERL_LIBS="$PERL_LIBS -ldl"
3165 fi
3166fi
3167
3168if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3169 && test "x$GUITYPE" != "xCARBONGUI"; then
3170 AC_MSG_CHECKING(whether we need -framework Carbon)
3171 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
Bram Moolenaarb90daee2006-10-17 09:49:09 +00003172 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003173 || test "x$features" = "xhuge"; then
3174 LIBS="$LIBS -framework Carbon"
3175 AC_MSG_RESULT(yes)
3176 else
3177 AC_MSG_RESULT(no)
3178 fi
3179fi
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003180if test "x$MACARCH" = "xboth"; then
3181 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3182fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003183
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003184dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3185dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3186dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003187dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3188dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003189DEPEND_CFLAGS_FILTER=
3190if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003191 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003192 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003193 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003194 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003195 AC_MSG_RESULT(yes)
3196 else
3197 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003198 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003199 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3200 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
3201 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3202 if test "$gccmajor" -gt "3"; then
3203 CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=1"
3204 AC_MSG_RESULT(yes)
3205 else
3206 AC_MSG_RESULT(no)
3207 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003208fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003209AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003210
3211dnl write output files
3212AC_OUTPUT(auto/config.mk:config.mk.in)
3213
3214dnl vim: set sw=2 tw=78 fo+=l: