blob: fa58c6e75014df07a4ae96249aa76314f63a0e9b [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
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000417 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000418 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,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000433 dnl different versions of MzScheme differ in command line processing
434 dnl use universal approach
435 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000436 (build-path (call-with-values \
437 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000438 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
439 dnl Remove a trailing slash
440 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
441 sed -e 's+/$++'` ])
442 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000443 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000444 fi
445 fi
446
Bram Moolenaard7afed32007-05-06 13:26:41 +0000447 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000448 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
449 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
450 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000451 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
452 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000453 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000454 AC_MSG_RESULT(no)
455 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000456 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000457 AC_MSG_RESULT(yes)
458 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000459 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000460 AC_MSG_RESULT(no)
461 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
462 if test -f /usr/include/plt/scheme.h; then
463 AC_MSG_RESULT(yes)
464 SCHEME_INC=/usr/include/plt
465 else
466 AC_MSG_RESULT(no)
467 vi_cv_path_mzscheme_pfx=
468 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000469 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000470 fi
471 fi
472
473 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000474 if test "x$MACOSX" = "xyes"; then
475 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000476 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
477 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
478 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000479 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000480 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 +0000481 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000482 dnl Using shared objects
483 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
484 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
485 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
486 else
487 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
488 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000489 if test "$GCC" = yes; then
490 dnl Make Vim remember the path to the library. For when it's not in
491 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000492 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000493 elif test "`(uname) 2>/dev/null`" = SunOS &&
494 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000495 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000496 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000497 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000498 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
499 SCHEME_COLLECTS=lib/plt/
500 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000501 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
502 dnl need to generate bytecode for MzScheme base
503 MZSCHEME_EXTRA="mzscheme_base.c"
504 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
505 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
506 fi
507 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000508 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000509 MZSCHEME_SRC="if_mzsch.c"
510 MZSCHEME_OBJ="objects/if_mzsch.o"
511 MZSCHEME_PRO="if_mzsch.pro"
512 AC_DEFINE(FEAT_MZSCHEME)
513 fi
514 AC_SUBST(MZSCHEME_SRC)
515 AC_SUBST(MZSCHEME_OBJ)
516 AC_SUBST(MZSCHEME_PRO)
517 AC_SUBST(MZSCHEME_LIBS)
518 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000519 AC_SUBST(MZSCHEME_EXTRA)
520 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000521fi
522
523
Bram Moolenaar071d4272004-06-13 20:20:40 +0000524AC_MSG_CHECKING(--enable-perlinterp argument)
525AC_ARG_ENABLE(perlinterp,
526 [ --enable-perlinterp Include Perl interpreter.], ,
527 [enable_perlinterp="no"])
528AC_MSG_RESULT($enable_perlinterp)
529if test "$enable_perlinterp" = "yes"; then
530 AC_SUBST(vi_cv_path_perl)
531 AC_PATH_PROG(vi_cv_path_perl, perl)
532 if test "X$vi_cv_path_perl" != "X"; then
533 AC_MSG_CHECKING(Perl version)
534 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
535 eval `$vi_cv_path_perl -V:usethreads`
536 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
537 badthreads=no
538 else
539 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
540 eval `$vi_cv_path_perl -V:use5005threads`
541 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
542 badthreads=no
543 else
544 badthreads=yes
545 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
546 fi
547 else
548 badthreads=yes
549 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
550 fi
551 fi
552 if test $badthreads = no; then
553 AC_MSG_RESULT(OK)
554 eval `$vi_cv_path_perl -V:shrpenv`
555 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
556 shrpenv=""
557 fi
558 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
559 AC_SUBST(vi_cv_perllib)
560 dnl Remove "-fno-something", it breaks using cproto.
561 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
562 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
563 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
564 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
565 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
566 -e 's/-bE:perl.exp//' -e 's/-lc //'`
567 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
568 dnl a test in configure may fail because of that.
569 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
570 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
571
572 dnl check that compiling a simple program still works with the flags
573 dnl added for Perl.
574 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
575 cflags_save=$CFLAGS
576 libs_save=$LIBS
577 ldflags_save=$LDFLAGS
578 CFLAGS="$CFLAGS $perlcppflags"
579 LIBS="$LIBS $perllibs"
580 LDFLAGS="$perlldflags $LDFLAGS"
581 AC_TRY_LINK(,[ ],
582 AC_MSG_RESULT(yes); perl_ok=yes,
583 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
584 CFLAGS=$cflags_save
585 LIBS=$libs_save
586 LDFLAGS=$ldflags_save
587 if test $perl_ok = yes; then
588 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000589 dnl remove -pipe and -Wxxx, it confuses cproto
590 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000591 fi
592 if test "X$perlldflags" != "X"; then
593 LDFLAGS="$perlldflags $LDFLAGS"
594 fi
595 PERL_LIBS=$perllibs
596 PERL_SRC="auto/if_perl.c if_perlsfio.c"
597 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
598 PERL_PRO="if_perl.pro if_perlsfio.pro"
599 AC_DEFINE(FEAT_PERL)
600 fi
601 fi
602 else
603 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
604 fi
605 fi
606
607 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000608 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000609 dir=/System/Library/Perl
610 darwindir=$dir/darwin
611 if test -d $darwindir; then
612 PERL=/usr/bin/perl
613 else
614 dnl Mac OS X 10.3
615 dir=/System/Library/Perl/5.8.1
616 darwindir=$dir/darwin-thread-multi-2level
617 if test -d $darwindir; then
618 PERL=/usr/bin/perl
619 fi
620 fi
621 if test -n "$PERL"; then
622 PERL_DIR="$dir"
623 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
624 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
625 PERL_LIBS="-L$darwindir/CORE -lperl"
626 fi
627 fi
628fi
629AC_SUBST(shrpenv)
630AC_SUBST(PERL_SRC)
631AC_SUBST(PERL_OBJ)
632AC_SUBST(PERL_PRO)
633AC_SUBST(PERL_CFLAGS)
634AC_SUBST(PERL_LIBS)
635
636AC_MSG_CHECKING(--enable-pythoninterp argument)
637AC_ARG_ENABLE(pythoninterp,
638 [ --enable-pythoninterp Include Python interpreter.], ,
639 [enable_pythoninterp="no"])
640AC_MSG_RESULT($enable_pythoninterp)
641if test "$enable_pythoninterp" = "yes"; then
642 dnl -- find the python executable
643 AC_PATH_PROG(vi_cv_path_python, python)
644 if test "X$vi_cv_path_python" != "X"; then
645
646 dnl -- get its version number
647 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
648 [[vi_cv_var_python_version=`
649 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
650 ]])
651
652 dnl -- it must be at least version 1.4
653 AC_MSG_CHECKING(Python is 1.4 or better)
654 if ${vi_cv_path_python} -c \
655 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
656 then
657 AC_MSG_RESULT(yep)
658
659 dnl -- find where python thinks it was installed
660 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
661 [ vi_cv_path_python_pfx=`
662 ${vi_cv_path_python} -c \
663 "import sys; print sys.prefix"` ])
664
665 dnl -- and where it thinks it runs
666 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
667 [ vi_cv_path_python_epfx=`
668 ${vi_cv_path_python} -c \
669 "import sys; print sys.exec_prefix"` ])
670
671 dnl -- python's internal library path
672
673 AC_CACHE_VAL(vi_cv_path_pythonpath,
674 [ vi_cv_path_pythonpath=`
675 unset PYTHONPATH;
676 ${vi_cv_path_python} -c \
677 "import sys, string; print string.join(sys.path,':')"` ])
678
679 dnl -- where the Python implementation library archives are
680
681 AC_ARG_WITH(python-config-dir,
682 [ --with-python-config-dir=PATH Python's config directory],
683 [ vi_cv_path_python_conf="${withval}" ] )
684
685 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
686 [
687 vi_cv_path_python_conf=
688 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
689 for subdir in lib share; do
690 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
691 if test -d "$d" && test -f "$d/config.c"; then
692 vi_cv_path_python_conf="$d"
693 fi
694 done
695 done
696 ])
697
698 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
699
700 if test "X$PYTHON_CONFDIR" = "X"; then
701 AC_MSG_RESULT([can't find it!])
702 else
703
704 dnl -- we need to examine Python's config/Makefile too
705 dnl see what the interpreter is built from
706 AC_CACHE_VAL(vi_cv_path_python_plibs,
707 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000708 pwd=`pwd`
709 tmp_mkf="$pwd/config-PyMake$$"
710 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000711__:
712 @echo "python_MODLIBS='$(MODLIBS)'"
713 @echo "python_LIBS='$(LIBS)'"
714 @echo "python_SYSLIBS='$(SYSLIBS)'"
715 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
716eof
717 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000718 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
719 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000720 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
721 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
722 vi_cv_path_python_plibs="-framework Python"
723 else
724 if test "${vi_cv_var_python_version}" = "1.4"; then
725 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
726 else
727 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
728 fi
729 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_MODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
730 dnl remove -ltermcap, it can conflict with an earlier -lncurses
731 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
732 fi
733 ])
734
735 PYTHON_LIBS="${vi_cv_path_python_plibs}"
736 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
737 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
738 else
739 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}"
740 fi
741 PYTHON_SRC="if_python.c"
742 dnl For Mac OSX 10.2 config.o is included in the Python library.
743 if test "x$MACOSX" = "xyes"; then
744 PYTHON_OBJ="objects/if_python.o"
745 else
746 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
747 fi
748 if test "${vi_cv_var_python_version}" = "1.4"; then
749 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
750 fi
751 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
752
753 dnl On FreeBSD linking with "-pthread" is required to use threads.
754 dnl _THREAD_SAFE must be used for compiling then.
755 dnl The "-pthread" is added to $LIBS, so that the following check for
756 dnl sigaltstack() will look in libc_r (it's there in libc!).
757 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
758 dnl will then define target-specific defines, e.g., -D_REENTRANT.
759 dnl Don't do this for Mac OSX, -pthread will generate a warning.
760 AC_MSG_CHECKING([if -pthread should be used])
761 threadsafe_flag=
762 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000763 dnl if test "x$MACOSX" != "xyes"; then
764 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000765 test "$GCC" = yes && threadsafe_flag="-pthread"
766 if test "`(uname) 2>/dev/null`" = FreeBSD; then
767 threadsafe_flag="-D_THREAD_SAFE"
768 thread_lib="-pthread"
769 fi
770 fi
771 libs_save_old=$LIBS
772 if test -n "$threadsafe_flag"; then
773 cflags_save=$CFLAGS
774 CFLAGS="$CFLAGS $threadsafe_flag"
775 LIBS="$LIBS $thread_lib"
776 AC_TRY_LINK(,[ ],
777 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
778 AC_MSG_RESULT(no); LIBS=$libs_save_old
779 )
780 CFLAGS=$cflags_save
781 else
782 AC_MSG_RESULT(no)
783 fi
784
785 dnl check that compiling a simple program still works with the flags
786 dnl added for Python.
787 AC_MSG_CHECKING([if compile and link flags for Python are sane])
788 cflags_save=$CFLAGS
789 libs_save=$LIBS
790 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
791 LIBS="$LIBS $PYTHON_LIBS"
792 AC_TRY_LINK(,[ ],
793 AC_MSG_RESULT(yes); python_ok=yes,
794 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
795 CFLAGS=$cflags_save
796 LIBS=$libs_save
797 if test $python_ok = yes; then
798 AC_DEFINE(FEAT_PYTHON)
799 else
800 LIBS=$libs_save_old
801 PYTHON_SRC=
802 PYTHON_OBJ=
803 PYTHON_LIBS=
804 PYTHON_CFLAGS=
805 fi
806
807 fi
808 else
809 AC_MSG_RESULT(too old)
810 fi
811 fi
812fi
813AC_SUBST(PYTHON_CONFDIR)
814AC_SUBST(PYTHON_LIBS)
815AC_SUBST(PYTHON_GETPATH_CFLAGS)
816AC_SUBST(PYTHON_CFLAGS)
817AC_SUBST(PYTHON_SRC)
818AC_SUBST(PYTHON_OBJ)
819
820AC_MSG_CHECKING(--enable-tclinterp argument)
821AC_ARG_ENABLE(tclinterp,
822 [ --enable-tclinterp Include Tcl interpreter.], ,
823 [enable_tclinterp="no"])
824AC_MSG_RESULT($enable_tclinterp)
825
826if test "$enable_tclinterp" = "yes"; then
827
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000828 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000829 AC_MSG_CHECKING(--with-tclsh argument)
830 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
831 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000832 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000833 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
834 AC_SUBST(vi_cv_path_tcl)
835
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000836 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
837 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
838 tclsh_name="tclsh8.4"
839 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
840 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000841 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000842 tclsh_name="tclsh8.2"
843 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
844 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000845 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
846 tclsh_name="tclsh8.0"
847 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
848 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000849 dnl still didn't find it, try without version number
850 if test "X$vi_cv_path_tcl" = "X"; then
851 tclsh_name="tclsh"
852 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
853 fi
854 if test "X$vi_cv_path_tcl" != "X"; then
855 AC_MSG_CHECKING(Tcl version)
856 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
857 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
858 AC_MSG_RESULT($tclver - OK);
859 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 -`
860
861 AC_MSG_CHECKING(for location of Tcl include)
862 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +0000863 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 +0000864 else
865 dnl For Mac OS X 10.3, use the OS-provided framework location
866 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
867 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +0000868 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +0000869 for try in $tclinc; do
870 if test -f "$try/tcl.h"; then
871 AC_MSG_RESULT($try/tcl.h)
872 TCL_INC=$try
873 break
874 fi
875 done
876 if test -z "$TCL_INC"; then
877 AC_MSG_RESULT(<not found>)
878 SKIP_TCL=YES
879 fi
880 if test -z "$SKIP_TCL"; then
881 AC_MSG_CHECKING(for location of tclConfig.sh script)
882 if test "x$MACOSX" != "xyes"; then
883 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000884 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000885 else
886 dnl For Mac OS X 10.3, use the OS-provided framework location
887 tclcnf="/System/Library/Frameworks/Tcl.framework"
888 fi
889 for try in $tclcnf; do
890 if test -f $try/tclConfig.sh; then
891 AC_MSG_RESULT($try/tclConfig.sh)
892 . $try/tclConfig.sh
893 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
894 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
895 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000896 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +0000897 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 +0000898 break
899 fi
900 done
901 if test -z "$TCL_LIBS"; then
902 AC_MSG_RESULT(<not found>)
903 AC_MSG_CHECKING(for Tcl library by myself)
904 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000905 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000906 for ext in .so .a ; do
907 for ver in "" $tclver ; do
908 for try in $tcllib ; do
909 trylib=tcl$ver$ext
910 if test -f $try/lib$trylib ; then
911 AC_MSG_RESULT($try/lib$trylib)
912 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
913 if test "`(uname) 2>/dev/null`" = SunOS &&
914 uname -r | grep '^5' >/dev/null; then
915 TCL_LIBS="$TCL_LIBS -R $try"
916 fi
917 break 3
918 fi
919 done
920 done
921 done
922 if test -z "$TCL_LIBS"; then
923 AC_MSG_RESULT(<not found>)
924 SKIP_TCL=YES
925 fi
926 fi
927 if test -z "$SKIP_TCL"; then
928 AC_DEFINE(FEAT_TCL)
929 TCL_SRC=if_tcl.c
930 TCL_OBJ=objects/if_tcl.o
931 TCL_PRO=if_tcl.pro
932 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
933 fi
934 fi
935 else
936 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
937 fi
938 fi
939fi
940AC_SUBST(TCL_SRC)
941AC_SUBST(TCL_OBJ)
942AC_SUBST(TCL_PRO)
943AC_SUBST(TCL_CFLAGS)
944AC_SUBST(TCL_LIBS)
945
946AC_MSG_CHECKING(--enable-rubyinterp argument)
947AC_ARG_ENABLE(rubyinterp,
948 [ --enable-rubyinterp Include Ruby interpreter.], ,
949 [enable_rubyinterp="no"])
950AC_MSG_RESULT($enable_rubyinterp)
951if test "$enable_rubyinterp" = "yes"; then
952 AC_SUBST(vi_cv_path_ruby)
953 AC_PATH_PROG(vi_cv_path_ruby, ruby)
954 if test "X$vi_cv_path_ruby" != "X"; then
955 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +0000956 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 +0000957 AC_MSG_RESULT(OK)
958 AC_MSG_CHECKING(Ruby header files)
959 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
960 if test "X$rubyhdrdir" != "X"; then
961 AC_MSG_RESULT($rubyhdrdir)
962 RUBY_CFLAGS="-I$rubyhdrdir"
963 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
964 if test "X$rubylibs" != "X"; then
965 RUBY_LIBS="$rubylibs"
966 fi
967 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
968 if test -f "$rubyhdrdir/$librubyarg"; then
969 librubyarg="$rubyhdrdir/$librubyarg"
970 else
971 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
972 if test -f "$rubylibdir/$librubyarg"; then
973 librubyarg="$rubylibdir/$librubyarg"
974 elif test "$librubyarg" = "libruby.a"; then
975 dnl required on Mac OS 10.3 where libruby.a doesn't exist
976 librubyarg="-lruby"
977 else
978 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
979 fi
980 fi
981
982 if test "X$librubyarg" != "X"; then
983 RUBY_LIBS="$librubyarg $RUBY_LIBS"
984 fi
985 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
986 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +0000987 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
988 dnl be included if requested by passing --with-mac-arch to
989 dnl configure, so strip these flags first (if present)
990 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
991 if test "X$rubyldflags" != "X"; then
992 LDFLAGS="$rubyldflags $LDFLAGS"
993 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000994 fi
995 RUBY_SRC="if_ruby.c"
996 RUBY_OBJ="objects/if_ruby.o"
997 RUBY_PRO="if_ruby.pro"
998 AC_DEFINE(FEAT_RUBY)
999 else
1000 AC_MSG_RESULT(not found, disabling Ruby)
1001 fi
1002 else
1003 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1004 fi
1005 fi
1006fi
1007AC_SUBST(RUBY_SRC)
1008AC_SUBST(RUBY_OBJ)
1009AC_SUBST(RUBY_PRO)
1010AC_SUBST(RUBY_CFLAGS)
1011AC_SUBST(RUBY_LIBS)
1012
1013AC_MSG_CHECKING(--enable-cscope argument)
1014AC_ARG_ENABLE(cscope,
1015 [ --enable-cscope Include cscope interface.], ,
1016 [enable_cscope="no"])
1017AC_MSG_RESULT($enable_cscope)
1018if test "$enable_cscope" = "yes"; then
1019 AC_DEFINE(FEAT_CSCOPE)
1020fi
1021
1022AC_MSG_CHECKING(--enable-workshop argument)
1023AC_ARG_ENABLE(workshop,
1024 [ --enable-workshop Include Sun Visual Workshop support.], ,
1025 [enable_workshop="no"])
1026AC_MSG_RESULT($enable_workshop)
1027if test "$enable_workshop" = "yes"; then
1028 AC_DEFINE(FEAT_SUN_WORKSHOP)
1029 WORKSHOP_SRC="workshop.c integration.c"
1030 AC_SUBST(WORKSHOP_SRC)
1031 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1032 AC_SUBST(WORKSHOP_OBJ)
1033 if test "${enable_gui-xxx}" = xxx; then
1034 enable_gui=motif
1035 fi
1036fi
1037
1038AC_MSG_CHECKING(--disable-netbeans argument)
1039AC_ARG_ENABLE(netbeans,
1040 [ --disable-netbeans Disable NetBeans integration support.],
1041 , [enable_netbeans="yes"])
1042if test "$enable_netbeans" = "yes"; then
1043 AC_MSG_RESULT(no)
1044 dnl On Solaris we need the socket and nsl library.
1045 AC_CHECK_LIB(socket, socket)
1046 AC_CHECK_LIB(nsl, gethostbyname)
1047 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1048 AC_TRY_LINK([
1049#include <stdio.h>
1050#include <stdlib.h>
1051#include <stdarg.h>
1052#include <fcntl.h>
1053#include <netdb.h>
1054#include <netinet/in.h>
1055#include <errno.h>
1056#include <sys/types.h>
1057#include <sys/socket.h>
1058 /* Check bitfields */
1059 struct nbbuf {
1060 unsigned int initDone:1;
1061 ushort signmaplen;
1062 };
1063 ], [
1064 /* Check creating a socket. */
1065 struct sockaddr_in server;
1066 (void)socket(AF_INET, SOCK_STREAM, 0);
1067 (void)htons(100);
1068 (void)gethostbyname("microsoft.com");
1069 if (errno == ECONNREFUSED)
1070 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1071 ],
1072 AC_MSG_RESULT(yes),
1073 AC_MSG_RESULT(no); enable_netbeans="no")
1074else
1075 AC_MSG_RESULT(yes)
1076fi
1077if test "$enable_netbeans" = "yes"; then
1078 AC_DEFINE(FEAT_NETBEANS_INTG)
1079 NETBEANS_SRC="netbeans.c"
1080 AC_SUBST(NETBEANS_SRC)
1081 NETBEANS_OBJ="objects/netbeans.o"
1082 AC_SUBST(NETBEANS_OBJ)
1083fi
1084
1085AC_MSG_CHECKING(--enable-sniff argument)
1086AC_ARG_ENABLE(sniff,
1087 [ --enable-sniff Include Sniff interface.], ,
1088 [enable_sniff="no"])
1089AC_MSG_RESULT($enable_sniff)
1090if test "$enable_sniff" = "yes"; then
1091 AC_DEFINE(FEAT_SNIFF)
1092 SNIFF_SRC="if_sniff.c"
1093 AC_SUBST(SNIFF_SRC)
1094 SNIFF_OBJ="objects/if_sniff.o"
1095 AC_SUBST(SNIFF_OBJ)
1096fi
1097
1098AC_MSG_CHECKING(--enable-multibyte argument)
1099AC_ARG_ENABLE(multibyte,
1100 [ --enable-multibyte Include multibyte editing support.], ,
1101 [enable_multibyte="no"])
1102AC_MSG_RESULT($enable_multibyte)
1103if test "$enable_multibyte" = "yes"; then
1104 AC_DEFINE(FEAT_MBYTE)
1105fi
1106
1107AC_MSG_CHECKING(--enable-hangulinput argument)
1108AC_ARG_ENABLE(hangulinput,
1109 [ --enable-hangulinput Include Hangul input support.], ,
1110 [enable_hangulinput="no"])
1111AC_MSG_RESULT($enable_hangulinput)
1112
1113AC_MSG_CHECKING(--enable-xim argument)
1114AC_ARG_ENABLE(xim,
1115 [ --enable-xim Include XIM input support.],
1116 AC_MSG_RESULT($enable_xim),
1117 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1118dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1119
1120AC_MSG_CHECKING(--enable-fontset argument)
1121AC_ARG_ENABLE(fontset,
1122 [ --enable-fontset Include X fontset output support.], ,
1123 [enable_fontset="no"])
1124AC_MSG_RESULT($enable_fontset)
1125dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1126
1127test -z "$with_x" && with_x=yes
1128test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1129if test "$with_x" = no; then
1130 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1131else
1132 dnl Do this check early, so that its failure can override user requests.
1133
1134 AC_PATH_PROG(xmkmfpath, xmkmf)
1135
1136 AC_PATH_XTRA
1137
1138 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1139 dnl be compiled with a special option.
1140 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1141 if test "$OS390Unix" = "yes"; then
1142 CFLAGS="$CFLAGS -W c,dll"
1143 LDFLAGS="$LDFLAGS -W l,dll"
1144 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1145 fi
1146
1147 dnl On my HPUX system the X include dir is found, but the lib dir not.
1148 dnl This is a desparate try to fix this.
1149
1150 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1151 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1152 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1153 X_LIBS="$X_LIBS -L$x_libraries"
1154 if test "`(uname) 2>/dev/null`" = SunOS &&
1155 uname -r | grep '^5' >/dev/null; then
1156 X_LIBS="$X_LIBS -R $x_libraries"
1157 fi
1158 fi
1159
1160 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1161 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1162 AC_MSG_RESULT(Corrected X includes to $x_includes)
1163 X_CFLAGS="$X_CFLAGS -I$x_includes"
1164 fi
1165
1166 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1167 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1168 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1169 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1170 dnl Same for "-R/usr/lib ".
1171 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1172
1173
1174 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001175 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1176 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001177 AC_MSG_CHECKING(if X11 header files can be found)
1178 cflags_save=$CFLAGS
1179 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001180 AC_TRY_COMPILE([#include <X11/Xlib.h>
1181#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001182 AC_MSG_RESULT(yes),
1183 AC_MSG_RESULT(no); no_x=yes)
1184 CFLAGS=$cflags_save
1185
1186 if test "${no_x-no}" = yes; then
1187 with_x=no
1188 else
1189 AC_DEFINE(HAVE_X11)
1190 X_LIB="-lXt -lX11";
1191 AC_SUBST(X_LIB)
1192
1193 ac_save_LDFLAGS="$LDFLAGS"
1194 LDFLAGS="-L$x_libraries $LDFLAGS"
1195
1196 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1197 dnl For HP-UX 10.20 it must be before -lSM -lICE
1198 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1199 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1200
1201 dnl Some systems need -lnsl -lsocket when testing for ICE.
1202 dnl The check above doesn't do this, try here (again). Also needed to get
1203 dnl them after Xdmcp. link.sh will remove them when not needed.
1204 dnl Check for other function than above to avoid the cached value
1205 AC_CHECK_LIB(ICE, IceOpenConnection,
1206 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1207
1208 dnl Check for -lXpm (needed for some versions of Motif)
1209 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1210 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1211 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1212
1213 dnl Check that the X11 header files don't use implicit declarations
1214 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1215 cflags_save=$CFLAGS
1216 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1217 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1218 AC_MSG_RESULT(no),
1219 CFLAGS="$CFLAGS -Wno-implicit-int"
1220 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1221 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1222 AC_MSG_RESULT(test failed)
1223 )
1224 )
1225 CFLAGS=$cflags_save
1226
1227 LDFLAGS="$ac_save_LDFLAGS"
1228
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001229 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1230 AC_CACHE_VAL(ac_cv_small_wchar_t,
1231 [AC_TRY_RUN([
1232#include <X11/Xlib.h>
1233#if STDC_HEADERS
1234# include <stdlib.h>
1235# include <stddef.h>
1236#endif
1237 main()
1238 {
1239 if (sizeof(wchar_t) <= 2)
1240 exit(1);
1241 exit(0);
1242 }],
1243 ac_cv_small_wchar_t="no",
1244 ac_cv_small_wchar_t="yes",
1245 AC_MSG_ERROR(failed to compile test program))])
1246 AC_MSG_RESULT($ac_cv_small_wchar_t)
1247 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1248 AC_DEFINE(SMALL_WCHAR_T)
1249 fi
1250
Bram Moolenaar071d4272004-06-13 20:20:40 +00001251 fi
1252fi
1253
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001254test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001255
1256AC_MSG_CHECKING(--enable-gui argument)
1257AC_ARG_ENABLE(gui,
Bram Moolenaar9372a112005-12-06 19:59:18 +00001258 [ --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 +00001259
1260dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1261dnl Do not use character classes for portability with old tools.
1262enable_gui_canon=`echo "_$enable_gui" | \
1263 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1264
1265dnl Skip everything by default.
1266SKIP_GTK=YES
1267SKIP_GTK2=YES
1268SKIP_GNOME=YES
1269SKIP_MOTIF=YES
1270SKIP_ATHENA=YES
1271SKIP_NEXTAW=YES
1272SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001273SKIP_CARBON=YES
1274GUITYPE=NONE
1275
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001276if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001277 SKIP_PHOTON=
1278 case "$enable_gui_canon" in
1279 no) AC_MSG_RESULT(no GUI support)
1280 SKIP_PHOTON=YES ;;
1281 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1282 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1283 photon) AC_MSG_RESULT(Photon GUI support) ;;
1284 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1285 SKIP_PHOTON=YES ;;
1286 esac
1287
1288elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1289 SKIP_CARBON=
1290 case "$enable_gui_canon" in
1291 no) AC_MSG_RESULT(no GUI support)
1292 SKIP_CARBON=YES ;;
1293 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1294 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1295 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1296 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1297 SKIP_CARBON=YES ;;
1298 esac
1299
1300else
1301
Bram Moolenaar071d4272004-06-13 20:20:40 +00001302 case "$enable_gui_canon" in
1303 no|none) AC_MSG_RESULT(no GUI support) ;;
1304 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1305 SKIP_GTK=
1306 SKIP_GTK2=
1307 SKIP_GNOME=
1308 SKIP_MOTIF=
1309 SKIP_ATHENA=
1310 SKIP_NEXTAW=
1311 SKIP_CARBON=;;
1312 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1313 SKIP_GTK=;;
1314 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1315 SKIP_GTK=
1316 SKIP_GTK2=;;
1317 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1318 SKIP_GNOME=
1319 SKIP_GTK=;;
1320 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1321 SKIP_GNOME=
1322 SKIP_GTK=
1323 SKIP_GTK2=;;
1324 motif) AC_MSG_RESULT(Motif GUI support)
1325 SKIP_MOTIF=;;
1326 athena) AC_MSG_RESULT(Athena GUI support)
1327 SKIP_ATHENA=;;
1328 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1329 SKIP_NEXTAW=;;
1330 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1331 esac
1332
1333fi
1334
1335if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1336 AC_MSG_CHECKING(whether or not to look for GTK)
1337 AC_ARG_ENABLE(gtk-check,
1338 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1339 , enable_gtk_check="yes")
1340 AC_MSG_RESULT($enable_gtk_check)
1341 if test "x$enable_gtk_check" = "xno"; then
1342 SKIP_GTK=YES
1343 SKIP_GNOME=YES
1344 fi
1345fi
1346
1347if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1348 -a "$enable_gui_canon" != "gnome2"; then
1349 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1350 AC_ARG_ENABLE(gtk2-check,
1351 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1352 , enable_gtk2_check="yes")
1353 AC_MSG_RESULT($enable_gtk2_check)
1354 if test "x$enable_gtk2_check" = "xno"; then
1355 SKIP_GTK2=YES
1356 fi
1357fi
1358
1359if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1360 -a "$enable_gui_canon" != "gnome2"; then
1361 AC_MSG_CHECKING(whether or not to look for GNOME)
1362 AC_ARG_ENABLE(gnome-check,
1363 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1364 , enable_gnome_check="no")
1365 AC_MSG_RESULT($enable_gnome_check)
1366 if test "x$enable_gnome_check" = "xno"; then
1367 SKIP_GNOME=YES
1368 fi
1369fi
1370
1371if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1372 AC_MSG_CHECKING(whether or not to look for Motif)
1373 AC_ARG_ENABLE(motif-check,
1374 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1375 , enable_motif_check="yes")
1376 AC_MSG_RESULT($enable_motif_check)
1377 if test "x$enable_motif_check" = "xno"; then
1378 SKIP_MOTIF=YES
1379 fi
1380fi
1381
1382if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1383 AC_MSG_CHECKING(whether or not to look for Athena)
1384 AC_ARG_ENABLE(athena-check,
1385 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1386 , enable_athena_check="yes")
1387 AC_MSG_RESULT($enable_athena_check)
1388 if test "x$enable_athena_check" = "xno"; then
1389 SKIP_ATHENA=YES
1390 fi
1391fi
1392
1393if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1394 AC_MSG_CHECKING(whether or not to look for neXtaw)
1395 AC_ARG_ENABLE(nextaw-check,
1396 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1397 , enable_nextaw_check="yes")
1398 AC_MSG_RESULT($enable_nextaw_check);
1399 if test "x$enable_nextaw_check" = "xno"; then
1400 SKIP_NEXTAW=YES
1401 fi
1402fi
1403
1404if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1405 AC_MSG_CHECKING(whether or not to look for Carbon)
1406 AC_ARG_ENABLE(carbon-check,
1407 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1408 , enable_carbon_check="yes")
1409 AC_MSG_RESULT($enable_carbon_check);
1410 if test "x$enable_carbon_check" = "xno"; then
1411 SKIP_CARBON=YES
1412 fi
1413fi
1414
Bram Moolenaar843ee412004-06-30 16:16:41 +00001415
Bram Moolenaar071d4272004-06-13 20:20:40 +00001416if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1417 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001418 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001419 AC_MSG_RESULT(yes);
1420 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001421 if test "$VIMNAME" = "vim"; then
1422 VIMNAME=Vim
1423 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001424
1425 dnl Default install directory is not /usr/local
1426 if test x$prefix = xNONE; then
1427 prefix=/Applications
1428 fi
1429
1430 dnl Sorry for the hard coded default
1431 datadir='${prefix}/Vim.app/Contents/Resources'
1432
Bram Moolenaar071d4272004-06-13 20:20:40 +00001433 dnl skip everything else
1434 SKIP_GTK=YES;
1435 SKIP_GTK2=YES;
1436 SKIP_GNOME=YES;
1437 SKIP_MOTIF=YES;
1438 SKIP_ATHENA=YES;
1439 SKIP_NEXTAW=YES;
1440 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001441 SKIP_CARBON=YES
1442fi
1443
Bram Moolenaar071d4272004-06-13 20:20:40 +00001444dnl
1445dnl Get the cflags and libraries from the gtk-config script
1446dnl
1447
1448dnl define an autoconf function to check for a specified version of GTK, and
1449dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1450dnl
1451dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001452dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001453dnl
1454AC_DEFUN(AM_PATH_GTK,
1455[
1456 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1457 {
1458 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1459 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1460 no_gtk=""
1461 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1462 && $PKG_CONFIG --exists gtk+-2.0; then
1463 {
1464 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1465 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1466 dnl something like that.
1467 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001468 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001469 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1470 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1471 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1472 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1473 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1474 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1475 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1476 }
1477 elif test "X$GTK_CONFIG" != "Xno"; then
1478 {
1479 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001480 GTK_LIBDIR=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001481 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1482 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1483 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1484 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1485 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1486 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1487 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1488 }
1489 else
1490 no_gtk=yes
1491 fi
1492
1493 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1494 {
1495 ac_save_CFLAGS="$CFLAGS"
1496 ac_save_LIBS="$LIBS"
1497 CFLAGS="$CFLAGS $GTK_CFLAGS"
1498 LIBS="$LIBS $GTK_LIBS"
1499
1500 dnl
1501 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1502 dnl checks the results of gtk-config to some extent
1503 dnl
1504 rm -f conf.gtktest
1505 AC_TRY_RUN([
1506#include <gtk/gtk.h>
1507#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001508#if STDC_HEADERS
1509# include <stdlib.h>
1510# include <stddef.h>
1511#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001512
1513int
1514main ()
1515{
1516int major, minor, micro;
1517char *tmp_version;
1518
1519system ("touch conf.gtktest");
1520
1521/* HP/UX 9 (%@#!) writes to sscanf strings */
1522tmp_version = g_strdup("$min_gtk_version");
1523if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1524 printf("%s, bad version string\n", "$min_gtk_version");
1525 exit(1);
1526 }
1527
1528if ((gtk_major_version > major) ||
1529 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1530 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1531 (gtk_micro_version >= micro)))
1532{
1533 return 0;
1534}
1535return 1;
1536}
1537],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1538 CFLAGS="$ac_save_CFLAGS"
1539 LIBS="$ac_save_LIBS"
1540 }
1541 fi
1542 if test "x$no_gtk" = x ; then
1543 if test "x$enable_gtktest" = "xyes"; then
1544 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1545 else
1546 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1547 fi
1548 ifelse([$2], , :, [$2])
1549 else
1550 {
1551 AC_MSG_RESULT(no)
1552 GTK_CFLAGS=""
1553 GTK_LIBS=""
1554 ifelse([$3], , :, [$3])
1555 }
1556 fi
1557 }
1558 else
1559 GTK_CFLAGS=""
1560 GTK_LIBS=""
1561 ifelse([$3], , :, [$3])
1562 fi
1563 AC_SUBST(GTK_CFLAGS)
1564 AC_SUBST(GTK_LIBS)
1565 rm -f conf.gtktest
1566])
1567
1568dnl ---------------------------------------------------------------------------
1569dnl gnome
1570dnl ---------------------------------------------------------------------------
1571AC_DEFUN([GNOME_INIT_HOOK],
1572[
1573 AC_SUBST(GNOME_LIBS)
1574 AC_SUBST(GNOME_LIBDIR)
1575 AC_SUBST(GNOME_INCLUDEDIR)
1576
1577 AC_ARG_WITH(gnome-includes,
1578 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1579 [CFLAGS="$CFLAGS -I$withval"]
1580 )
1581
1582 AC_ARG_WITH(gnome-libs,
1583 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1584 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1585 )
1586
1587 AC_ARG_WITH(gnome,
1588 [ --with-gnome Specify prefix for GNOME files],
1589 if test x$withval = xyes; then
1590 want_gnome=yes
1591 ifelse([$1], [], :, [$1])
1592 else
1593 if test "x$withval" = xno; then
1594 want_gnome=no
1595 else
1596 want_gnome=yes
1597 LDFLAGS="$LDFLAGS -L$withval/lib"
1598 CFLAGS="$CFLAGS -I$withval/include"
1599 gnome_prefix=$withval/lib
1600 fi
1601 fi,
1602 want_gnome=yes)
1603
1604 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1605 {
1606 AC_MSG_CHECKING(for libgnomeui-2.0)
1607 if $PKG_CONFIG --exists libgnomeui-2.0; then
1608 AC_MSG_RESULT(yes)
1609 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1610 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1611 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001612
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001613 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1614 dnl This might not be the right way but it works for me...
1615 AC_MSG_CHECKING(for FreeBSD)
1616 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1617 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001618 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001619 GNOME_LIBS="$GNOME_LIBS -pthread"
1620 else
1621 AC_MSG_RESULT(no)
1622 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001623 $1
1624 else
1625 AC_MSG_RESULT(not found)
1626 if test "x$2" = xfail; then
1627 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1628 fi
1629 fi
1630 }
1631 elif test "x$want_gnome" = xyes; then
1632 {
1633 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1634 if test "$GNOME_CONFIG" = "no"; then
1635 no_gnome_config="yes"
1636 else
1637 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1638 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1639 AC_MSG_RESULT(yes)
1640 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1641 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1642 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1643 $1
1644 else
1645 AC_MSG_RESULT(no)
1646 no_gnome_config="yes"
1647 fi
1648 fi
1649
1650 if test x$exec_prefix = xNONE; then
1651 if test x$prefix = xNONE; then
1652 gnome_prefix=$ac_default_prefix/lib
1653 else
1654 gnome_prefix=$prefix/lib
1655 fi
1656 else
1657 gnome_prefix=`eval echo \`echo $libdir\``
1658 fi
1659
1660 if test "$no_gnome_config" = "yes"; then
1661 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1662 if test -f $gnome_prefix/gnomeConf.sh; then
1663 AC_MSG_RESULT(found)
1664 echo "loading gnome configuration from" \
1665 "$gnome_prefix/gnomeConf.sh"
1666 . $gnome_prefix/gnomeConf.sh
1667 $1
1668 else
1669 AC_MSG_RESULT(not found)
1670 if test x$2 = xfail; then
1671 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1672 fi
1673 fi
1674 fi
1675 }
1676 fi
1677])
1678
1679AC_DEFUN([GNOME_INIT],[
1680 GNOME_INIT_HOOK([],fail)
1681])
1682
1683
1684dnl ---------------------------------------------------------------------------
1685dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1686dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1687dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1688dnl ---------------------------------------------------------------------------
1689if test -z "$SKIP_GTK"; then
1690
1691 AC_MSG_CHECKING(--with-gtk-prefix argument)
1692 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1693 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1694 gtk_config_prefix=""; AC_MSG_RESULT(no))
1695
1696 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1697 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1698 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1699 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1700
1701 AC_MSG_CHECKING(--disable-gtktest argument)
1702 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1703 , enable_gtktest=yes)
1704 if test "x$enable_gtktest" = "xyes" ; then
1705 AC_MSG_RESULT(gtk test enabled)
1706 else
1707 AC_MSG_RESULT(gtk test disabled)
1708 fi
1709
1710 if test "x$gtk_config_prefix" != "x" ; then
1711 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1712 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1713 fi
1714 if test "x$gtk_config_exec_prefix" != "x" ; then
1715 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1716 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1717 fi
1718 if test "X$GTK_CONFIG" = "X"; then
1719 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1720 if test "X$GTK_CONFIG" = "Xno"; then
1721 dnl Some distributions call it gtk12-config, annoying!
1722 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1723 GTK_CONFIG="$GTK12_CONFIG"
1724 fi
1725 else
1726 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1727 fi
1728 if test "X$PKG_CONFIG" = "X"; then
1729 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1730 fi
1731
1732 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1733 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1734 dnl problems (bold fonts, --remote doesn't work).
1735 if test "X$SKIP_GTK2" != "XYES"; then
1736 AM_PATH_GTK(2.2.0,
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001737 [GUI_LIB_LOC="$GTK_LIBDIR"
1738 GTK_LIBNAME="$GTK_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001739 GUI_INC_LOC="$GTK_CFLAGS"], )
1740 if test "x$GTK_CFLAGS" != "x"; then
1741 SKIP_ATHENA=YES
1742 SKIP_NEXTAW=YES
1743 SKIP_MOTIF=YES
1744 GUITYPE=GTK
1745 AC_SUBST(GTK_LIBNAME)
1746 fi
1747 fi
1748
1749 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1750 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1751 dnl were test versions.
1752 if test "x$GUITYPE" != "xGTK"; then
1753 SKIP_GTK2=YES
1754 AM_PATH_GTK(1.1.16,
1755 [GTK_LIBNAME="$GTK_LIBS"
1756 GUI_INC_LOC="$GTK_CFLAGS"], )
1757 if test "x$GTK_CFLAGS" != "x"; then
1758 SKIP_ATHENA=YES
1759 SKIP_NEXTAW=YES
1760 SKIP_MOTIF=YES
1761 GUITYPE=GTK
1762 AC_SUBST(GTK_LIBNAME)
1763 fi
1764 fi
1765 fi
1766 dnl Give a warning if GTK is older than 1.2.3
1767 if test "x$GUITYPE" = "xGTK"; then
1768 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1769 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1770 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1771 else
1772 {
1773 if test "0$gtk_major_version" -ge 2; then
1774 AC_DEFINE(HAVE_GTK2)
1775 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1776 || test "0$gtk_minor_version" -ge 2 \
1777 || test "0$gtk_major_version" -gt 2; then
1778 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1779 fi
1780 fi
1781 dnl
1782 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1783 dnl
1784 if test -z "$SKIP_GNOME"; then
1785 {
1786 GNOME_INIT_HOOK([have_gnome=yes])
1787 if test x$have_gnome = xyes ; then
1788 AC_DEFINE(FEAT_GUI_GNOME)
1789 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1790 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1791 fi
1792 }
1793 fi
1794 }
1795 fi
1796 fi
1797fi
1798
1799dnl Check for Motif include files location.
1800dnl The LAST one found is used, this makes the highest version to be used,
1801dnl e.g. when Motif1.2 and Motif2.0 are both present.
1802
1803if test -z "$SKIP_MOTIF"; then
1804 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"
1805 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1806 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1807
1808 AC_MSG_CHECKING(for location of Motif GUI includes)
1809 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1810 GUI_INC_LOC=
1811 for try in $gui_includes; do
1812 if test -f "$try/Xm/Xm.h"; then
1813 GUI_INC_LOC=$try
1814 fi
1815 done
1816 if test -n "$GUI_INC_LOC"; then
1817 if test "$GUI_INC_LOC" = /usr/include; then
1818 GUI_INC_LOC=
1819 AC_MSG_RESULT(in default path)
1820 else
1821 AC_MSG_RESULT($GUI_INC_LOC)
1822 fi
1823 else
1824 AC_MSG_RESULT(<not found>)
1825 SKIP_MOTIF=YES
1826 fi
1827fi
1828
1829dnl Check for Motif library files location. In the same order as the include
1830dnl files, to avoid a mixup if several versions are present
1831
1832if test -z "$SKIP_MOTIF"; then
1833 AC_MSG_CHECKING(--with-motif-lib argument)
1834 AC_ARG_WITH(motif-lib,
1835 [ --with-motif-lib=STRING Library for Motif ],
1836 [ MOTIF_LIBNAME="${withval}" ] )
1837
1838 if test -n "$MOTIF_LIBNAME"; then
1839 AC_MSG_RESULT($MOTIF_LIBNAME)
1840 GUI_LIB_LOC=
1841 else
1842 AC_MSG_RESULT(no)
1843
1844 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1845 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1846
1847 AC_MSG_CHECKING(for location of Motif GUI libs)
1848 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"
1849 GUI_LIB_LOC=
1850 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001851 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00001852 if test -f "$libtry"; then
1853 GUI_LIB_LOC=$try
1854 fi
1855 done
1856 done
1857 if test -n "$GUI_LIB_LOC"; then
1858 dnl Remove /usr/lib, it causes trouble on some systems
1859 if test "$GUI_LIB_LOC" = /usr/lib; then
1860 GUI_LIB_LOC=
1861 AC_MSG_RESULT(in default path)
1862 else
1863 if test -n "$GUI_LIB_LOC"; then
1864 AC_MSG_RESULT($GUI_LIB_LOC)
1865 if test "`(uname) 2>/dev/null`" = SunOS &&
1866 uname -r | grep '^5' >/dev/null; then
1867 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1868 fi
1869 fi
1870 fi
1871 MOTIF_LIBNAME=-lXm
1872 else
1873 AC_MSG_RESULT(<not found>)
1874 SKIP_MOTIF=YES
1875 fi
1876 fi
1877fi
1878
1879if test -z "$SKIP_MOTIF"; then
1880 SKIP_ATHENA=YES
1881 SKIP_NEXTAW=YES
1882 GUITYPE=MOTIF
1883 AC_SUBST(MOTIF_LIBNAME)
1884fi
1885
1886dnl Check if the Athena files can be found
1887
1888GUI_X_LIBS=
1889
1890if test -z "$SKIP_ATHENA"; then
1891 AC_MSG_CHECKING(if Athena header files can be found)
1892 cflags_save=$CFLAGS
1893 CFLAGS="$CFLAGS $X_CFLAGS"
1894 AC_TRY_COMPILE([
1895#include <X11/Intrinsic.h>
1896#include <X11/Xaw/Paned.h>], ,
1897 AC_MSG_RESULT(yes),
1898 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1899 CFLAGS=$cflags_save
1900fi
1901
1902if test -z "$SKIP_ATHENA"; then
1903 GUITYPE=ATHENA
1904fi
1905
1906if test -z "$SKIP_NEXTAW"; then
1907 AC_MSG_CHECKING(if neXtaw header files can be found)
1908 cflags_save=$CFLAGS
1909 CFLAGS="$CFLAGS $X_CFLAGS"
1910 AC_TRY_COMPILE([
1911#include <X11/Intrinsic.h>
1912#include <X11/neXtaw/Paned.h>], ,
1913 AC_MSG_RESULT(yes),
1914 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1915 CFLAGS=$cflags_save
1916fi
1917
1918if test -z "$SKIP_NEXTAW"; then
1919 GUITYPE=NEXTAW
1920fi
1921
1922if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1923 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1924 dnl Avoid adding it when it twice
1925 if test -n "$GUI_INC_LOC"; then
1926 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1927 fi
1928 if test -n "$GUI_LIB_LOC"; then
1929 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1930 fi
1931
1932 dnl Check for -lXext and then for -lXmu
1933 ldflags_save=$LDFLAGS
1934 LDFLAGS="$X_LIBS $LDFLAGS"
1935 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1936 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1937 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1938 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1939 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1940 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1941 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1942 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1943 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1944 if test -z "$SKIP_MOTIF"; then
1945 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1946 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1947 fi
1948 LDFLAGS=$ldflags_save
1949
1950 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1951 AC_MSG_CHECKING(for extra X11 defines)
1952 NARROW_PROTO=
1953 rm -fr conftestdir
1954 if mkdir conftestdir; then
1955 cd conftestdir
1956 cat > Imakefile <<'EOF'
1957acfindx:
1958 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1959EOF
1960 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1961 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1962 fi
1963 cd ..
1964 rm -fr conftestdir
1965 fi
1966 if test -z "$NARROW_PROTO"; then
1967 AC_MSG_RESULT(no)
1968 else
1969 AC_MSG_RESULT($NARROW_PROTO)
1970 fi
1971 AC_SUBST(NARROW_PROTO)
1972fi
1973
1974dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1975dnl use the X11 include path
1976if test "$enable_xsmp" = "yes"; then
1977 cppflags_save=$CPPFLAGS
1978 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1979 AC_CHECK_HEADERS(X11/SM/SMlib.h)
1980 CPPFLAGS=$cppflags_save
1981fi
1982
1983
1984if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1985 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1986 cppflags_save=$CPPFLAGS
1987 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1988 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1989
1990 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
1991 if test ! "$enable_xim" = "no"; then
1992 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
1993 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
1994 AC_MSG_RESULT(yes),
1995 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
1996 fi
1997 CPPFLAGS=$cppflags_save
1998
1999 dnl automatically enable XIM when hangul input isn't enabled
2000 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2001 -a "x$GUITYPE" != "xNONE" ; then
2002 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2003 enable_xim="yes"
2004 fi
2005fi
2006
2007if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2008 cppflags_save=$CPPFLAGS
2009 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002010dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2011 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2012 AC_TRY_COMPILE([
2013#include <X11/Intrinsic.h>
2014#include <X11/Xmu/Editres.h>],
2015 [int i; i = 0;],
2016 AC_MSG_RESULT(yes)
2017 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2018 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002019 CPPFLAGS=$cppflags_save
2020fi
2021
2022dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2023if test -z "$SKIP_MOTIF"; then
2024 cppflags_save=$CPPFLAGS
2025 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002026 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 +00002027 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002028
2029 if test $ac_cv_header_Xm_XpmP_h = yes; then
2030 dnl Solaris uses XpmAttributes_21, very annoying.
2031 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2032 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2033 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2034 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2035 )
2036 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002037 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002038 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002039 CPPFLAGS=$cppflags_save
2040fi
2041
2042if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2043 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2044 enable_xim="no"
2045fi
2046if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2047 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2048 enable_fontset="no"
2049fi
2050if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2051 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2052 enable_fontset="no"
2053fi
2054
Bram Moolenaar071d4272004-06-13 20:20:40 +00002055if test -z "$SKIP_PHOTON"; then
2056 GUITYPE=PHOTONGUI
2057fi
2058
2059AC_SUBST(GUI_INC_LOC)
2060AC_SUBST(GUI_LIB_LOC)
2061AC_SUBST(GUITYPE)
2062AC_SUBST(GUI_X_LIBS)
2063
2064if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2065 AC_MSG_ERROR([cannot use workshop without Motif])
2066fi
2067
2068dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2069if test "$enable_xim" = "yes"; then
2070 AC_DEFINE(FEAT_XIM)
2071fi
2072if test "$enable_fontset" = "yes"; then
2073 AC_DEFINE(FEAT_XFONTSET)
2074fi
2075
2076
2077dnl ---------------------------------------------------------------------------
2078dnl end of GUI-checking
2079dnl ---------------------------------------------------------------------------
2080
2081
2082dnl Only really enable hangul input when GUI and XFONTSET are available
2083if test "$enable_hangulinput" = "yes"; then
2084 if test "x$GUITYPE" = "xNONE"; then
2085 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2086 enable_hangulinput=no
2087 else
2088 AC_DEFINE(FEAT_HANGULIN)
2089 HANGULIN_SRC=hangulin.c
2090 AC_SUBST(HANGULIN_SRC)
2091 HANGULIN_OBJ=objects/hangulin.o
2092 AC_SUBST(HANGULIN_OBJ)
2093 fi
2094fi
2095
2096dnl Checks for libraries and include files.
2097
Bram Moolenaar446cb832008-06-24 21:56:24 +00002098AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2099 [
2100 AC_RUN_IFELSE([[
2101#include "confdefs.h"
2102#include <ctype.h>
2103#if STDC_HEADERS
2104# include <stdlib.h>
2105# include <stddef.h>
2106#endif
2107main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2108 ]],[
2109 vim_cv_toupper_broken=yes
2110 ],[
2111 vim_cv_toupper_broken=no
2112 ],[
2113 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2114 ])])
2115
2116if test "x$vim_cv_toupper_broken" = "xyes" ; then
2117 AC_DEFINE(BROKEN_TOUPPER)
2118fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002119
2120AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002121AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002122 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2123 AC_MSG_RESULT(no))
2124
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002125AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2126AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2127 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2128 AC_MSG_RESULT(no))
2129
Bram Moolenaar071d4272004-06-13 20:20:40 +00002130dnl Checks for header files.
2131AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2132dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2133if test "$HAS_ELF" = 1; then
2134 AC_CHECK_LIB(elf, main)
2135fi
2136
2137AC_HEADER_DIRENT
2138
Bram Moolenaar071d4272004-06-13 20:20:40 +00002139dnl If sys/wait.h is not found it might still exist but not be POSIX
2140dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2141if test $ac_cv_header_sys_wait_h = no; then
2142 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2143 AC_TRY_COMPILE([#include <sys/wait.h>],
2144 [union wait xx, yy; xx = yy],
2145 AC_MSG_RESULT(yes)
2146 AC_DEFINE(HAVE_SYS_WAIT_H)
2147 AC_DEFINE(HAVE_UNION_WAIT),
2148 AC_MSG_RESULT(no))
2149fi
2150
2151AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
Bram Moolenaare74455a2007-11-04 14:36:18 +00002152 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
Bram Moolenaar446cb832008-06-24 21:56:24 +00002153 iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002154 sys/resource.h sys/systeminfo.h locale.h \
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002155 sys/stream.h termios.h libc.h sys/statfs.h \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002156 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002157 libgen.h util/debug.h util/msg18n.h frame.h \
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002158 sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002159
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002160dnl sys/ptem.h depends on sys/stream.h on Solaris
2161AC_CHECK_HEADERS(sys/ptem.h, [], [],
2162[#if defined HAVE_SYS_STREAM_H
2163# include <sys/stream.h>
2164#endif])
2165
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002166dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2167AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2168[#if defined HAVE_SYS_PARAM_H
2169# include <sys/param.h>
2170#endif])
2171
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002172
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002173dnl pthread_np.h may exist but can only be used after including pthread.h
2174AC_MSG_CHECKING([for pthread_np.h])
2175AC_TRY_COMPILE([
2176#include <pthread.h>
2177#include <pthread_np.h>],
2178 [int i; i = 0;],
2179 AC_MSG_RESULT(yes)
2180 AC_DEFINE(HAVE_PTHREAD_NP_H),
2181 AC_MSG_RESULT(no))
2182
Bram Moolenaare344bea2005-09-01 20:46:49 +00002183AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002184if test "x$MACOSX" = "xyes"; then
2185 dnl The strings.h file on OS/X contains a warning and nothing useful.
2186 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2187else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002188
2189dnl Check if strings.h and string.h can both be included when defined.
2190AC_MSG_CHECKING([if strings.h can be included after string.h])
2191cppflags_save=$CPPFLAGS
2192CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2193AC_TRY_COMPILE([
2194#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2195# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2196 /* but don't do it on AIX 5.1 (Uribarri) */
2197#endif
2198#ifdef HAVE_XM_XM_H
2199# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2200#endif
2201#ifdef HAVE_STRING_H
2202# include <string.h>
2203#endif
2204#if defined(HAVE_STRINGS_H)
2205# include <strings.h>
2206#endif
2207 ], [int i; i = 0;],
2208 AC_MSG_RESULT(yes),
2209 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2210 AC_MSG_RESULT(no))
2211CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002212fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002213
2214dnl Checks for typedefs, structures, and compiler characteristics.
2215AC_PROG_GCC_TRADITIONAL
2216AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002217AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002218AC_TYPE_MODE_T
2219AC_TYPE_OFF_T
2220AC_TYPE_PID_T
2221AC_TYPE_SIZE_T
2222AC_TYPE_UID_T
2223AC_HEADER_TIME
2224AC_CHECK_TYPE(ino_t, long)
2225AC_CHECK_TYPE(dev_t, unsigned)
2226
2227AC_MSG_CHECKING(for rlim_t)
2228if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2229 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2230else
2231 AC_EGREP_CPP(dnl
2232changequote(<<,>>)dnl
2233<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2234changequote([,]),
2235 [
2236#include <sys/types.h>
2237#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002238# include <stdlib.h>
2239# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002240#endif
2241#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002242# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002243#endif
2244 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2245 AC_MSG_RESULT($ac_cv_type_rlim_t)
2246fi
2247if test $ac_cv_type_rlim_t = no; then
2248 cat >> confdefs.h <<\EOF
2249#define rlim_t unsigned long
2250EOF
2251fi
2252
2253AC_MSG_CHECKING(for stack_t)
2254if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2255 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2256else
2257 AC_EGREP_CPP(stack_t,
2258 [
2259#include <sys/types.h>
2260#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002261# include <stdlib.h>
2262# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002263#endif
2264#include <signal.h>
2265 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2266 AC_MSG_RESULT($ac_cv_type_stack_t)
2267fi
2268if test $ac_cv_type_stack_t = no; then
2269 cat >> confdefs.h <<\EOF
2270#define stack_t struct sigaltstack
2271EOF
2272fi
2273
2274dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2275AC_MSG_CHECKING(whether stack_t has an ss_base field)
2276AC_TRY_COMPILE([
2277#include <sys/types.h>
2278#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002279# include <stdlib.h>
2280# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002281#endif
2282#include <signal.h>
2283#include "confdefs.h"
2284 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2285 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2286 AC_MSG_RESULT(no))
2287
2288olibs="$LIBS"
2289AC_MSG_CHECKING(--with-tlib argument)
2290AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2291if test -n "$with_tlib"; then
2292 AC_MSG_RESULT($with_tlib)
2293 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002294 AC_MSG_CHECKING(for linking with $with_tlib library)
2295 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2296 dnl Need to check for tgetent() below.
2297 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002298else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002299 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002300 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2301 dnl curses, because curses is much slower.
2302 dnl Newer versions of ncurses are preferred over anything.
2303 dnl Older versions of ncurses have bugs, get a new one!
2304 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002305 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002306 case "`uname -s 2>/dev/null`" in
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002307 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002308 *) tlibs="ncurses termlib termcap curses";;
2309 esac
2310 for libname in $tlibs; do
2311 AC_CHECK_LIB(${libname}, tgetent,,)
2312 if test "x$olibs" != "x$LIBS"; then
2313 dnl It's possible that a library is found but it doesn't work
2314 dnl e.g., shared library that cannot be found
2315 dnl compile and run a test program to be sure
2316 AC_TRY_RUN([
2317#ifdef HAVE_TERMCAP_H
2318# include <termcap.h>
2319#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002320#if STDC_HEADERS
2321# include <stdlib.h>
2322# include <stddef.h>
2323#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002324main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2325 res="OK", res="FAIL", res="FAIL")
2326 if test "$res" = "OK"; then
2327 break
2328 fi
2329 AC_MSG_RESULT($libname library is not usable)
2330 LIBS="$olibs"
2331 fi
2332 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002333 if test "x$olibs" = "x$LIBS"; then
2334 AC_MSG_RESULT(no terminal library found)
2335 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002336fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002337
2338if test "x$olibs" = "x$LIBS"; then
2339 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002340 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002341 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2342 AC_MSG_RESULT(yes),
2343 AC_MSG_ERROR([NOT FOUND!
2344 You need to install a terminal library; for example ncurses.
2345 Or specify the name of the library with --with-tlib.]))
2346fi
2347
Bram Moolenaar446cb832008-06-24 21:56:24 +00002348AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2349 [
2350 AC_RUN_IFELSE([[
2351#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002352#ifdef HAVE_TERMCAP_H
2353# include <termcap.h>
2354#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002355#ifdef HAVE_STRING_H
2356# include <string.h>
2357#endif
2358#if STDC_HEADERS
2359# include <stdlib.h>
2360# include <stddef.h>
2361#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002362main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002363{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2364 ]],[
2365 vim_cv_terminfo=no
2366 ],[
2367 vim_cv_terminfo=yes
2368 ],[
2369 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2370 ])
2371 ])
2372
2373if test "x$vim_cv_terminfo" = "xyes" ; then
2374 AC_DEFINE(TERMINFO)
2375fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002376
2377if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002378 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2379 [
2380 AC_RUN_IFELSE([[
2381#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002382#ifdef HAVE_TERMCAP_H
2383# include <termcap.h>
2384#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002385#if STDC_HEADERS
2386# include <stdlib.h>
2387# include <stddef.h>
2388#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002389main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002390{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2391 ]],[
2392 vim_cv_tgent=zero
2393 ],[
2394 vim_cv_tgent=non-zero
2395 ],[
2396 AC_MSG_ERROR(failed to compile test program.)
2397 ])
2398 ])
2399
2400 if test "x$vim_cv_tgent" = "xzero" ; then
2401 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2402 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002403fi
2404
2405AC_MSG_CHECKING(whether termcap.h contains ospeed)
2406AC_TRY_LINK([
2407#ifdef HAVE_TERMCAP_H
2408# include <termcap.h>
2409#endif
2410 ], [ospeed = 20000],
2411 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2412 [AC_MSG_RESULT(no)
2413 AC_MSG_CHECKING(whether ospeed can be extern)
2414 AC_TRY_LINK([
2415#ifdef HAVE_TERMCAP_H
2416# include <termcap.h>
2417#endif
2418extern short ospeed;
2419 ], [ospeed = 20000],
2420 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2421 AC_MSG_RESULT(no))]
2422 )
2423
2424AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2425AC_TRY_LINK([
2426#ifdef HAVE_TERMCAP_H
2427# include <termcap.h>
2428#endif
2429 ], [if (UP == 0 && BC == 0) PC = 1],
2430 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2431 [AC_MSG_RESULT(no)
2432 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2433 AC_TRY_LINK([
2434#ifdef HAVE_TERMCAP_H
2435# include <termcap.h>
2436#endif
2437extern char *UP, *BC, PC;
2438 ], [if (UP == 0 && BC == 0) PC = 1],
2439 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2440 AC_MSG_RESULT(no))]
2441 )
2442
2443AC_MSG_CHECKING(whether tputs() uses outfuntype)
2444AC_TRY_COMPILE([
2445#ifdef HAVE_TERMCAP_H
2446# include <termcap.h>
2447#endif
2448 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2449 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2450 AC_MSG_RESULT(no))
2451
2452dnl On some SCO machines sys/select redefines struct timeval
2453AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2454AC_TRY_COMPILE([
2455#include <sys/types.h>
2456#include <sys/time.h>
2457#include <sys/select.h>], ,
2458 AC_MSG_RESULT(yes)
2459 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2460 AC_MSG_RESULT(no))
2461
2462dnl AC_DECL_SYS_SIGLIST
2463
2464dnl Checks for pty.c (copied from screen) ==========================
2465AC_MSG_CHECKING(for /dev/ptc)
2466if test -r /dev/ptc; then
2467 AC_DEFINE(HAVE_DEV_PTC)
2468 AC_MSG_RESULT(yes)
2469else
2470 AC_MSG_RESULT(no)
2471fi
2472
2473AC_MSG_CHECKING(for SVR4 ptys)
2474if test -c /dev/ptmx ; then
2475 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2476 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2477 AC_MSG_RESULT(no))
2478else
2479 AC_MSG_RESULT(no)
2480fi
2481
2482AC_MSG_CHECKING(for ptyranges)
2483if test -d /dev/ptym ; then
2484 pdir='/dev/ptym'
2485else
2486 pdir='/dev'
2487fi
2488dnl SCO uses ptyp%d
2489AC_EGREP_CPP(yes,
2490[#ifdef M_UNIX
2491 yes;
2492#endif
2493 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2494dnl if test -c /dev/ptyp19; then
2495dnl ptys=`echo /dev/ptyp??`
2496dnl else
2497dnl ptys=`echo $pdir/pty??`
2498dnl fi
2499if test "$ptys" != "$pdir/pty??" ; then
2500 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2501 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2502 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2503 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2504 AC_MSG_RESULT([$p0 / $p1])
2505else
2506 AC_MSG_RESULT([don't know])
2507fi
2508
2509dnl **** pty mode/group handling ****
2510dnl
2511dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002512rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002513AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2514 [
2515 AC_RUN_IFELSE([[
2516#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002517#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002518#if STDC_HEADERS
2519# include <stdlib.h>
2520# include <stddef.h>
2521#endif
2522#ifdef HAVE_UNISTD_H
2523#include <unistd.h>
2524#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002525#include <sys/stat.h>
2526#include <stdio.h>
2527main()
2528{
2529 struct stat sb;
2530 char *x,*ttyname();
2531 int om, m;
2532 FILE *fp;
2533
2534 if (!(x = ttyname(0))) exit(1);
2535 if (stat(x, &sb)) exit(1);
2536 om = sb.st_mode;
2537 if (om & 002) exit(0);
2538 m = system("mesg y");
2539 if (m == -1 || m == 127) exit(1);
2540 if (stat(x, &sb)) exit(1);
2541 m = sb.st_mode;
2542 if (chmod(x, om)) exit(1);
2543 if (m & 002) exit(0);
2544 if (sb.st_gid == getgid()) exit(1);
2545 if (!(fp=fopen("conftest_grp", "w")))
2546 exit(1);
2547 fprintf(fp, "%d\n", sb.st_gid);
2548 fclose(fp);
2549 exit(0);
2550}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002551 ]],[
2552 if test -f conftest_grp; then
2553 vim_cv_tty_group=`cat conftest_grp`
2554 if test "x$vim_cv_tty_mode" = "x" ; then
2555 vim_cv_tty_mode=0620
2556 fi
2557 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2558 else
2559 vim_cv_tty_group=world
Bram Moolenaar071d4272004-06-13 20:20:40 +00002560 AC_MSG_RESULT([ptys are world accessable])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002561 fi
2562 ],[
2563 vim_cv_tty_group=world
2564 AC_MSG_RESULT([can't determine - assume ptys are world accessable])
2565 ],[
2566 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2567 ])
2568 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002569rm -f conftest_grp
2570
Bram Moolenaar446cb832008-06-24 21:56:24 +00002571if test "x$vim_cv_tty_group" != "xworld" ; then
2572 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2573 if test "x$vim_cv_tty_mode" = "x" ; then
2574 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)])
2575 else
2576 AC_DEFINE(PTYMODE, 0620)
2577 fi
2578fi
2579
Bram Moolenaar071d4272004-06-13 20:20:40 +00002580dnl Checks for library functions. ===================================
2581
2582AC_TYPE_SIGNAL
2583
2584dnl find out what to use at the end of a signal function
2585if test $ac_cv_type_signal = void; then
2586 AC_DEFINE(SIGRETURN, [return])
2587else
2588 AC_DEFINE(SIGRETURN, [return 0])
2589fi
2590
2591dnl check if struct sigcontext is defined (used for SGI only)
2592AC_MSG_CHECKING(for struct sigcontext)
2593AC_TRY_COMPILE([
2594#include <signal.h>
2595test_sig()
2596{
2597 struct sigcontext *scont;
2598 scont = (struct sigcontext *)0;
2599 return 1;
2600} ], ,
2601 AC_MSG_RESULT(yes)
2602 AC_DEFINE(HAVE_SIGCONTEXT),
2603 AC_MSG_RESULT(no))
2604
2605dnl tricky stuff: try to find out if getcwd() is implemented with
2606dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002607AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2608 [
2609 AC_RUN_IFELSE([[
2610#include "confdefs.h"
2611#ifdef HAVE_UNISTD_H
2612#include <unistd.h>
2613#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002614char *dagger[] = { "IFS=pwd", 0 };
2615main()
2616{
2617 char buffer[500];
2618 extern char **environ;
2619 environ = dagger;
2620 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002621}
2622 ]],[
2623 vim_cv_getcwd_broken=no
2624 ],[
2625 vim_cv_getcwd_broken=yes
2626 ],[
2627 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2628 ])
2629 ])
2630
2631if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2632 AC_DEFINE(BAD_GETCWD)
2633fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002634
2635dnl Check for functions in one big call, to reduce the size of configure
2636AC_CHECK_FUNCS(bcmp fchdir fchown fseeko fsync ftello getcwd getpseudotty \
2637 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
2638 memset nanosleep opendir putenv qsort readlink select setenv \
2639 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002640 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002641 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2642 usleep utime utimes)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002643
2644dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2645AC_MSG_CHECKING(for st_blksize)
2646AC_TRY_COMPILE(
2647[#include <sys/types.h>
2648#include <sys/stat.h>],
2649[ struct stat st;
2650 int n;
2651
2652 stat("/", &st);
2653 n = (int)st.st_blksize;],
2654 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2655 AC_MSG_RESULT(no))
2656
Bram Moolenaar446cb832008-06-24 21:56:24 +00002657AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2658 [
2659 AC_RUN_IFELSE([[
2660#include "confdefs.h"
2661#if STDC_HEADERS
2662# include <stdlib.h>
2663# include <stddef.h>
2664#endif
2665#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002666#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002667main() {struct stat st; exit(stat("configure/", &st) != 0); }
2668 ]],[
2669 vim_cv_stat_ignores_slash=yes
2670 ],[
2671 vim_cv_stat_ignores_slash=no
2672 ],[
2673 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2674 ])
2675 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002676
Bram Moolenaar446cb832008-06-24 21:56:24 +00002677if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2678 AC_DEFINE(STAT_IGNORES_SLASH)
2679fi
2680
Bram Moolenaar071d4272004-06-13 20:20:40 +00002681dnl Link with iconv for charset translation, if not found without library.
2682dnl check for iconv() requires including iconv.h
2683dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2684dnl has been installed.
2685AC_MSG_CHECKING(for iconv_open())
2686save_LIBS="$LIBS"
2687LIBS="$LIBS -liconv"
2688AC_TRY_LINK([
2689#ifdef HAVE_ICONV_H
2690# include <iconv.h>
2691#endif
2692 ], [iconv_open("fr", "to");],
2693 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2694 LIBS="$save_LIBS"
2695 AC_TRY_LINK([
2696#ifdef HAVE_ICONV_H
2697# include <iconv.h>
2698#endif
2699 ], [iconv_open("fr", "to");],
2700 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2701 AC_MSG_RESULT(no)))
2702
2703
2704AC_MSG_CHECKING(for nl_langinfo(CODESET))
2705AC_TRY_LINK([
2706#ifdef HAVE_LANGINFO_H
2707# include <langinfo.h>
2708#endif
2709], [char *cs = nl_langinfo(CODESET);],
2710 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2711 AC_MSG_RESULT(no))
2712
Bram Moolenaar446cb832008-06-24 21:56:24 +00002713dnl Need various functions for floating point support. Only enable
2714dnl floating point when they are all present.
2715AC_CHECK_LIB(m, strtod)
2716AC_MSG_CHECKING([for strtod() and other floating point functions])
2717AC_TRY_LINK([
2718#ifdef HAVE_MATH_H
2719# include <math.h>
2720#endif
2721#if STDC_HEADERS
2722# include <stdlib.h>
2723# include <stddef.h>
2724#endif
2725], [char *s; double d;
2726 d = strtod("1.1", &s);
2727 d = fabs(1.11);
2728 d = ceil(1.11);
2729 d = floor(1.11);
2730 d = log10(1.11);
2731 d = pow(1.11, 2.22);
2732 d = sqrt(1.11);
2733 d = sin(1.11);
2734 d = cos(1.11);
2735 d = atan(1.11);
2736 ],
2737 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2738 AC_MSG_RESULT(no))
2739
Bram Moolenaar071d4272004-06-13 20:20:40 +00002740dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2741dnl when -lacl works, also try to use -lattr (required for Debian).
2742AC_MSG_CHECKING(--disable-acl argument)
2743AC_ARG_ENABLE(acl,
2744 [ --disable-acl Don't check for ACL support.],
2745 , [enable_acl="yes"])
2746if test "$enable_acl" = "yes"; then
2747AC_MSG_RESULT(no)
2748AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2749 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2750 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2751
2752AC_MSG_CHECKING(for POSIX ACL support)
2753AC_TRY_LINK([
2754#include <sys/types.h>
2755#ifdef HAVE_SYS_ACL_H
2756# include <sys/acl.h>
2757#endif
2758acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2759 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2760 acl_free(acl);],
2761 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2762 AC_MSG_RESULT(no))
2763
2764AC_MSG_CHECKING(for Solaris ACL support)
2765AC_TRY_LINK([
2766#ifdef HAVE_SYS_ACL_H
2767# include <sys/acl.h>
2768#endif], [acl("foo", GETACLCNT, 0, NULL);
2769 ],
2770 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2771 AC_MSG_RESULT(no))
2772
2773AC_MSG_CHECKING(for AIX ACL support)
2774AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00002775#if STDC_HEADERS
2776# include <stdlib.h>
2777# include <stddef.h>
2778#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002779#ifdef HAVE_SYS_ACL_H
2780# include <sys/acl.h>
2781#endif
2782#ifdef HAVE_SYS_ACCESS_H
2783# include <sys/access.h>
2784#endif
2785#define _ALL_SOURCE
2786
2787#include <sys/stat.h>
2788
2789int aclsize;
2790struct acl *aclent;], [aclsize = sizeof(struct acl);
2791 aclent = (void *)malloc(aclsize);
2792 statacl("foo", STX_NORMAL, aclent, aclsize);
2793 ],
2794 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2795 AC_MSG_RESULT(no))
2796else
2797 AC_MSG_RESULT(yes)
2798fi
2799
2800AC_MSG_CHECKING(--disable-gpm argument)
2801AC_ARG_ENABLE(gpm,
2802 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2803 [enable_gpm="yes"])
2804
2805if test "$enable_gpm" = "yes"; then
2806 AC_MSG_RESULT(no)
2807 dnl Checking if gpm support can be compiled
2808 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2809 [olibs="$LIBS" ; LIBS="-lgpm"]
2810 AC_TRY_LINK(
2811 [#include <gpm.h>
2812 #include <linux/keyboard.h>],
2813 [Gpm_GetLibVersion(NULL);],
2814 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2815 dnl FEAT_MOUSE_GPM if mouse support is included
2816 [vi_cv_have_gpm=yes],
2817 [vi_cv_have_gpm=no])
2818 [LIBS="$olibs"]
2819 )
2820 if test $vi_cv_have_gpm = yes; then
2821 LIBS="$LIBS -lgpm"
2822 AC_DEFINE(HAVE_GPM)
2823 fi
2824else
2825 AC_MSG_RESULT(yes)
2826fi
2827
Bram Moolenaar446cb832008-06-24 21:56:24 +00002828AC_MSG_CHECKING(--disable-sysmouse argument)
2829AC_ARG_ENABLE(sysmouse,
2830 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
2831 [enable_sysmouse="yes"])
2832
2833if test "$enable_sysmouse" = "yes"; then
2834 AC_MSG_RESULT(no)
2835 dnl Checking if sysmouse support can be compiled
2836 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2837 dnl defines FEAT_SYSMOUSE if mouse support is included
2838 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2839 AC_TRY_LINK(
2840 [#include <sys/consio.h>
2841 #include <signal.h>
2842 #include <sys/fbio.h>],
2843 [struct mouse_info mouse;
2844 mouse.operation = MOUSE_MODE;
2845 mouse.operation = MOUSE_SHOW;
2846 mouse.u.mode.mode = 0;
2847 mouse.u.mode.signal = SIGUSR2;],
2848 [vi_cv_have_sysmouse=yes],
2849 [vi_cv_have_sysmouse=no])
2850 )
2851 if test $vi_cv_have_sysmouse = yes; then
2852 AC_DEFINE(HAVE_SYSMOUSE)
2853 fi
2854else
2855 AC_MSG_RESULT(yes)
2856fi
2857
Bram Moolenaar071d4272004-06-13 20:20:40 +00002858dnl rename needs to be checked separately to work on Nextstep with cc
2859AC_MSG_CHECKING(for rename)
2860AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2861 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2862 AC_MSG_RESULT(no))
2863
2864dnl sysctl() may exist but not the arguments we use
2865AC_MSG_CHECKING(for sysctl)
2866AC_TRY_COMPILE(
2867[#include <sys/types.h>
2868#include <sys/sysctl.h>],
2869[ int mib[2], r;
2870 size_t len;
2871
2872 mib[0] = CTL_HW;
2873 mib[1] = HW_USERMEM;
2874 len = sizeof(r);
2875 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2876 ],
2877 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2878 AC_MSG_RESULT(not usable))
2879
2880dnl sysinfo() may exist but not be Linux compatible
2881AC_MSG_CHECKING(for sysinfo)
2882AC_TRY_COMPILE(
2883[#include <sys/types.h>
2884#include <sys/sysinfo.h>],
2885[ struct sysinfo sinfo;
2886 int t;
2887
2888 (void)sysinfo(&sinfo);
2889 t = sinfo.totalram;
2890 ],
2891 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2892 AC_MSG_RESULT(not usable))
2893
Bram Moolenaar914572a2007-05-01 11:37:47 +00002894dnl struct sysinfo may have the mem_unit field or not
2895AC_MSG_CHECKING(for sysinfo.mem_unit)
2896AC_TRY_COMPILE(
2897[#include <sys/types.h>
2898#include <sys/sysinfo.h>],
2899[ struct sysinfo sinfo;
2900 sinfo.mem_unit = 1;
2901 ],
2902 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2903 AC_MSG_RESULT(no))
2904
Bram Moolenaar071d4272004-06-13 20:20:40 +00002905dnl sysconf() may exist but not support what we want to use
2906AC_MSG_CHECKING(for sysconf)
2907AC_TRY_COMPILE(
2908[#include <unistd.h>],
2909[ (void)sysconf(_SC_PAGESIZE);
2910 (void)sysconf(_SC_PHYS_PAGES);
2911 ],
2912 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2913 AC_MSG_RESULT(not usable))
2914
2915dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2916dnl be printed with "%d", and avoids a warning for cross-compiling.
2917
2918AC_MSG_CHECKING(size of int)
2919AC_CACHE_VAL(ac_cv_sizeof_int,
Bram Moolenaar446cb832008-06-24 21:56:24 +00002920 [AC_TRY_RUN([
2921#include <stdio.h>
2922#if STDC_HEADERS
2923# include <stdlib.h>
2924# include <stddef.h>
2925#endif
2926main()
2927{
2928 FILE *f=fopen("conftestval", "w");
2929 if (!f) exit(1);
2930 fprintf(f, "%d\n", (int)sizeof(int));
2931 exit(0);
2932}],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002933 ac_cv_sizeof_int=`cat conftestval`,
2934 ac_cv_sizeof_int=0,
2935 AC_MSG_ERROR(failed to compile test program))])
2936AC_MSG_RESULT($ac_cv_sizeof_int)
2937AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2938
Bram Moolenaar446cb832008-06-24 21:56:24 +00002939dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2940dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2941
Bram Moolenaar071d4272004-06-13 20:20:40 +00002942[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00002943#include "confdefs.h"
2944#ifdef HAVE_STRING_H
2945# include <string.h>
2946#endif
2947#if STDC_HEADERS
2948# include <stdlib.h>
2949# include <stddef.h>
2950#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002951main() {
2952 char buf[10];
2953 strcpy(buf, "abcdefghi");
2954 mch_memmove(buf, buf + 2, 3);
2955 if (strncmp(buf, "ababcf", 6))
2956 exit(1);
2957 strcpy(buf, "abcdefghi");
2958 mch_memmove(buf + 2, buf, 3);
2959 if (strncmp(buf, "cdedef", 6))
2960 exit(1);
2961 exit(0); /* libc version works properly. */
2962}']
2963
Bram Moolenaar446cb832008-06-24 21:56:24 +00002964AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
2965 [
2966 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
2967 [
2968 vim_cv_memmove_handles_overlap=yes
2969 ],[
2970 vim_cv_memmove_handles_overlap=no
2971 ],[
2972 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
2973 ])
2974 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002975
Bram Moolenaar446cb832008-06-24 21:56:24 +00002976if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
2977 AC_DEFINE(USEMEMMOVE)
2978else
2979 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
2980 [
2981 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
2982 [
2983 vim_cv_bcopy_handles_overlap=yes
2984 ],[
2985 vim_cv_bcopy_handles_overlap=no
2986 ],[
2987 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
2988 ])
2989 ])
2990
2991 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
2992 AC_DEFINE(USEBCOPY)
2993 else
2994 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
2995 [
2996 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
2997 [
2998 vim_cv_memcpy_handles_overlap=yes
2999 ],[
3000 vim_cv_memcpy_handles_overlap=no
3001 ],[
3002 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3003 ])
3004 ])
3005
3006 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3007 AC_DEFINE(USEMEMCPY)
3008 fi
3009 fi
3010fi
3011
Bram Moolenaar071d4272004-06-13 20:20:40 +00003012
3013dnl Check for multibyte locale functions
3014dnl Find out if _Xsetlocale() is supported by libX11.
3015dnl Check if X_LOCALE should be defined.
3016
3017if test "$enable_multibyte" = "yes"; then
3018 cflags_save=$CFLAGS
3019 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003020 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003021 CFLAGS="$CFLAGS -I$x_includes"
3022 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3023 AC_MSG_CHECKING(whether X_LOCALE needed)
3024 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3025 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3026 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3027 AC_MSG_RESULT(no))
3028 fi
3029 CFLAGS=$cflags_save
3030 LDFLAGS=$ldflags_save
3031fi
3032
3033dnl Link with xpg4, it is said to make Korean locale working
3034AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3035
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003036dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003037dnl --version for Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003038dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003039dnl -t for typedefs (many ctags have this)
3040dnl -s for static functions (Elvis ctags only?)
3041dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3042dnl -i+m to test for older Exuberant ctags
3043AC_MSG_CHECKING(how to create tags)
3044test -f tags && mv tags tags.save
3045if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003046 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003047else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003048 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003049 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3050 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3051 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3052 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3053 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3054 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3055 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3056fi
3057test -f tags.save && mv tags.save tags
3058AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3059
3060dnl Check how we can run man with a section number
3061AC_MSG_CHECKING(how to run man with a section nr)
3062MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003063(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 +00003064AC_MSG_RESULT($MANDEF)
3065if test "$MANDEF" = "man -s"; then
3066 AC_DEFINE(USEMAN_S)
3067fi
3068
3069dnl Check if gettext() is working and if it needs -lintl
3070AC_MSG_CHECKING(--disable-nls argument)
3071AC_ARG_ENABLE(nls,
3072 [ --disable-nls Don't support NLS (gettext()).], ,
3073 [enable_nls="yes"])
3074
3075if test "$enable_nls" = "yes"; then
3076 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003077
3078 INSTALL_LANGS=install-languages
3079 AC_SUBST(INSTALL_LANGS)
3080 INSTALL_TOOL_LANGS=install-tool-languages
3081 AC_SUBST(INSTALL_TOOL_LANGS)
3082
Bram Moolenaar071d4272004-06-13 20:20:40 +00003083 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3084 AC_MSG_CHECKING([for NLS])
3085 if test -f po/Makefile; then
3086 have_gettext="no"
3087 if test -n "$MSGFMT"; then
3088 AC_TRY_LINK(
3089 [#include <libintl.h>],
3090 [gettext("Test");],
3091 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3092 olibs=$LIBS
3093 LIBS="$LIBS -lintl"
3094 AC_TRY_LINK(
3095 [#include <libintl.h>],
3096 [gettext("Test");],
3097 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3098 AC_MSG_RESULT([gettext() doesn't work]);
3099 LIBS=$olibs))
3100 else
3101 AC_MSG_RESULT([msgfmt not found - disabled]);
3102 fi
3103 if test $have_gettext = "yes"; then
3104 AC_DEFINE(HAVE_GETTEXT)
3105 MAKEMO=yes
3106 AC_SUBST(MAKEMO)
3107 dnl this was added in GNU gettext 0.10.36
3108 AC_CHECK_FUNCS(bind_textdomain_codeset)
3109 dnl _nl_msg_cat_cntr is required for GNU gettext
3110 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3111 AC_TRY_LINK(
3112 [#include <libintl.h>
3113 extern int _nl_msg_cat_cntr;],
3114 [++_nl_msg_cat_cntr;],
3115 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3116 AC_MSG_RESULT([no]))
3117 fi
3118 else
3119 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3120 fi
3121else
3122 AC_MSG_RESULT(yes)
3123fi
3124
3125dnl Check for dynamic linking loader
3126AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3127if test x${DLL} = xdlfcn.h; then
3128 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3129 AC_MSG_CHECKING([for dlopen()])
3130 AC_TRY_LINK(,[
3131 extern void* dlopen();
3132 dlopen();
3133 ],
3134 AC_MSG_RESULT(yes);
3135 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3136 AC_MSG_RESULT(no);
3137 AC_MSG_CHECKING([for dlopen() in -ldl])
3138 olibs=$LIBS
3139 LIBS="$LIBS -ldl"
3140 AC_TRY_LINK(,[
3141 extern void* dlopen();
3142 dlopen();
3143 ],
3144 AC_MSG_RESULT(yes);
3145 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3146 AC_MSG_RESULT(no);
3147 LIBS=$olibs))
3148 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3149 dnl ick :-)
3150 AC_MSG_CHECKING([for dlsym()])
3151 AC_TRY_LINK(,[
3152 extern void* dlsym();
3153 dlsym();
3154 ],
3155 AC_MSG_RESULT(yes);
3156 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3157 AC_MSG_RESULT(no);
3158 AC_MSG_CHECKING([for dlsym() in -ldl])
3159 olibs=$LIBS
3160 LIBS="$LIBS -ldl"
3161 AC_TRY_LINK(,[
3162 extern void* dlsym();
3163 dlsym();
3164 ],
3165 AC_MSG_RESULT(yes);
3166 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3167 AC_MSG_RESULT(no);
3168 LIBS=$olibs))
3169elif test x${DLL} = xdl.h; then
3170 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3171 AC_MSG_CHECKING([for shl_load()])
3172 AC_TRY_LINK(,[
3173 extern void* shl_load();
3174 shl_load();
3175 ],
3176 AC_MSG_RESULT(yes);
3177 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3178 AC_MSG_RESULT(no);
3179 AC_MSG_CHECKING([for shl_load() in -ldld])
3180 olibs=$LIBS
3181 LIBS="$LIBS -ldld"
3182 AC_TRY_LINK(,[
3183 extern void* shl_load();
3184 shl_load();
3185 ],
3186 AC_MSG_RESULT(yes);
3187 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3188 AC_MSG_RESULT(no);
3189 LIBS=$olibs))
3190fi
3191AC_CHECK_HEADERS(setjmp.h)
3192
3193if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3194 dnl -ldl must come after DynaLoader.a
3195 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3196 LIBS=`echo $LIBS | sed s/-ldl//`
3197 PERL_LIBS="$PERL_LIBS -ldl"
3198 fi
3199fi
3200
3201if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3202 && test "x$GUITYPE" != "xCARBONGUI"; then
3203 AC_MSG_CHECKING(whether we need -framework Carbon)
3204 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
Bram Moolenaarb90daee2006-10-17 09:49:09 +00003205 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003206 || test "x$features" = "xhuge"; then
3207 LIBS="$LIBS -framework Carbon"
3208 AC_MSG_RESULT(yes)
3209 else
3210 AC_MSG_RESULT(no)
3211 fi
3212fi
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003213if test "x$MACARCH" = "xboth"; then
3214 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3215fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003216
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003217dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3218dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3219dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003220dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3221dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003222DEPEND_CFLAGS_FILTER=
3223if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003224 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003225 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003226 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003227 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003228 AC_MSG_RESULT(yes)
3229 else
3230 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003231 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003232 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3233 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
3234 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3235 if test "$gccmajor" -gt "3"; then
Bram Moolenaar1d7ad732009-09-11 11:44:54 +00003236 CFLAGS=`echo "$CFLAGS -D_FORTIFY_SOURCE=1" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//g' -e 's/-D_FORTIFY_SOURCE=2//g'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003237 AC_MSG_RESULT(yes)
3238 else
3239 AC_MSG_RESULT(no)
3240 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003241fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003242AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003243
3244dnl write output files
3245AC_OUTPUT(auto/config.mk:config.mk.in)
3246
3247dnl vim: set sw=2 tw=78 fo+=l: