blob: 177fa885c9046abcc1ff78c03530a0c05053e2a0 [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
Bram Moolenaar72951072009-12-02 16:58:33 +0000689 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000690 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
Bram Moolenaar165641d2010-02-17 16:23:09 +0100952 AC_MSG_CHECKING(--with-ruby-command argument)
953 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
954 RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
955 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000956 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar165641d2010-02-17 16:23:09 +0100957 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000958 if test "X$vi_cv_path_ruby" != "X"; then
959 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +0000960 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 +0000961 AC_MSG_RESULT(OK)
962 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +0100963 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000964 if test "X$rubyhdrdir" != "X"; then
965 AC_MSG_RESULT($rubyhdrdir)
966 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +0100967 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
968 if test -d "$rubyhdrdir/$rubyarch"; then
969 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
970 fi
971 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
972 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000973 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
974 if test "X$rubylibs" != "X"; then
975 RUBY_LIBS="$rubylibs"
976 fi
977 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
978 if test -f "$rubyhdrdir/$librubyarg"; then
979 librubyarg="$rubyhdrdir/$librubyarg"
980 else
981 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
982 if test -f "$rubylibdir/$librubyarg"; then
983 librubyarg="$rubylibdir/$librubyarg"
984 elif test "$librubyarg" = "libruby.a"; then
985 dnl required on Mac OS 10.3 where libruby.a doesn't exist
986 librubyarg="-lruby"
987 else
988 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
989 fi
990 fi
991
992 if test "X$librubyarg" != "X"; then
993 RUBY_LIBS="$librubyarg $RUBY_LIBS"
994 fi
995 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
996 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +0000997 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
998 dnl be included if requested by passing --with-mac-arch to
999 dnl configure, so strip these flags first (if present)
1000 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
1001 if test "X$rubyldflags" != "X"; then
1002 LDFLAGS="$rubyldflags $LDFLAGS"
1003 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001004 fi
1005 RUBY_SRC="if_ruby.c"
1006 RUBY_OBJ="objects/if_ruby.o"
1007 RUBY_PRO="if_ruby.pro"
1008 AC_DEFINE(FEAT_RUBY)
1009 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001010 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001011 fi
1012 else
1013 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1014 fi
1015 fi
1016fi
1017AC_SUBST(RUBY_SRC)
1018AC_SUBST(RUBY_OBJ)
1019AC_SUBST(RUBY_PRO)
1020AC_SUBST(RUBY_CFLAGS)
1021AC_SUBST(RUBY_LIBS)
1022
1023AC_MSG_CHECKING(--enable-cscope argument)
1024AC_ARG_ENABLE(cscope,
1025 [ --enable-cscope Include cscope interface.], ,
1026 [enable_cscope="no"])
1027AC_MSG_RESULT($enable_cscope)
1028if test "$enable_cscope" = "yes"; then
1029 AC_DEFINE(FEAT_CSCOPE)
1030fi
1031
1032AC_MSG_CHECKING(--enable-workshop argument)
1033AC_ARG_ENABLE(workshop,
1034 [ --enable-workshop Include Sun Visual Workshop support.], ,
1035 [enable_workshop="no"])
1036AC_MSG_RESULT($enable_workshop)
1037if test "$enable_workshop" = "yes"; then
1038 AC_DEFINE(FEAT_SUN_WORKSHOP)
1039 WORKSHOP_SRC="workshop.c integration.c"
1040 AC_SUBST(WORKSHOP_SRC)
1041 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1042 AC_SUBST(WORKSHOP_OBJ)
1043 if test "${enable_gui-xxx}" = xxx; then
1044 enable_gui=motif
1045 fi
1046fi
1047
1048AC_MSG_CHECKING(--disable-netbeans argument)
1049AC_ARG_ENABLE(netbeans,
1050 [ --disable-netbeans Disable NetBeans integration support.],
1051 , [enable_netbeans="yes"])
1052if test "$enable_netbeans" = "yes"; then
1053 AC_MSG_RESULT(no)
1054 dnl On Solaris we need the socket and nsl library.
1055 AC_CHECK_LIB(socket, socket)
1056 AC_CHECK_LIB(nsl, gethostbyname)
1057 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1058 AC_TRY_LINK([
1059#include <stdio.h>
1060#include <stdlib.h>
1061#include <stdarg.h>
1062#include <fcntl.h>
1063#include <netdb.h>
1064#include <netinet/in.h>
1065#include <errno.h>
1066#include <sys/types.h>
1067#include <sys/socket.h>
1068 /* Check bitfields */
1069 struct nbbuf {
1070 unsigned int initDone:1;
1071 ushort signmaplen;
1072 };
1073 ], [
1074 /* Check creating a socket. */
1075 struct sockaddr_in server;
1076 (void)socket(AF_INET, SOCK_STREAM, 0);
1077 (void)htons(100);
1078 (void)gethostbyname("microsoft.com");
1079 if (errno == ECONNREFUSED)
1080 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1081 ],
1082 AC_MSG_RESULT(yes),
1083 AC_MSG_RESULT(no); enable_netbeans="no")
1084else
1085 AC_MSG_RESULT(yes)
1086fi
1087if test "$enable_netbeans" = "yes"; then
1088 AC_DEFINE(FEAT_NETBEANS_INTG)
1089 NETBEANS_SRC="netbeans.c"
1090 AC_SUBST(NETBEANS_SRC)
1091 NETBEANS_OBJ="objects/netbeans.o"
1092 AC_SUBST(NETBEANS_OBJ)
1093fi
1094
1095AC_MSG_CHECKING(--enable-sniff argument)
1096AC_ARG_ENABLE(sniff,
1097 [ --enable-sniff Include Sniff interface.], ,
1098 [enable_sniff="no"])
1099AC_MSG_RESULT($enable_sniff)
1100if test "$enable_sniff" = "yes"; then
1101 AC_DEFINE(FEAT_SNIFF)
1102 SNIFF_SRC="if_sniff.c"
1103 AC_SUBST(SNIFF_SRC)
1104 SNIFF_OBJ="objects/if_sniff.o"
1105 AC_SUBST(SNIFF_OBJ)
1106fi
1107
1108AC_MSG_CHECKING(--enable-multibyte argument)
1109AC_ARG_ENABLE(multibyte,
1110 [ --enable-multibyte Include multibyte editing support.], ,
1111 [enable_multibyte="no"])
1112AC_MSG_RESULT($enable_multibyte)
1113if test "$enable_multibyte" = "yes"; then
1114 AC_DEFINE(FEAT_MBYTE)
1115fi
1116
1117AC_MSG_CHECKING(--enable-hangulinput argument)
1118AC_ARG_ENABLE(hangulinput,
1119 [ --enable-hangulinput Include Hangul input support.], ,
1120 [enable_hangulinput="no"])
1121AC_MSG_RESULT($enable_hangulinput)
1122
1123AC_MSG_CHECKING(--enable-xim argument)
1124AC_ARG_ENABLE(xim,
1125 [ --enable-xim Include XIM input support.],
1126 AC_MSG_RESULT($enable_xim),
1127 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1128dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1129
1130AC_MSG_CHECKING(--enable-fontset argument)
1131AC_ARG_ENABLE(fontset,
1132 [ --enable-fontset Include X fontset output support.], ,
1133 [enable_fontset="no"])
1134AC_MSG_RESULT($enable_fontset)
1135dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1136
1137test -z "$with_x" && with_x=yes
1138test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1139if test "$with_x" = no; then
1140 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1141else
1142 dnl Do this check early, so that its failure can override user requests.
1143
1144 AC_PATH_PROG(xmkmfpath, xmkmf)
1145
1146 AC_PATH_XTRA
1147
1148 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1149 dnl be compiled with a special option.
1150 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1151 if test "$OS390Unix" = "yes"; then
1152 CFLAGS="$CFLAGS -W c,dll"
1153 LDFLAGS="$LDFLAGS -W l,dll"
1154 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1155 fi
1156
1157 dnl On my HPUX system the X include dir is found, but the lib dir not.
1158 dnl This is a desparate try to fix this.
1159
1160 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1161 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1162 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1163 X_LIBS="$X_LIBS -L$x_libraries"
1164 if test "`(uname) 2>/dev/null`" = SunOS &&
1165 uname -r | grep '^5' >/dev/null; then
1166 X_LIBS="$X_LIBS -R $x_libraries"
1167 fi
1168 fi
1169
1170 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1171 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1172 AC_MSG_RESULT(Corrected X includes to $x_includes)
1173 X_CFLAGS="$X_CFLAGS -I$x_includes"
1174 fi
1175
1176 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1177 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1178 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1179 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1180 dnl Same for "-R/usr/lib ".
1181 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1182
1183
1184 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001185 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1186 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001187 AC_MSG_CHECKING(if X11 header files can be found)
1188 cflags_save=$CFLAGS
1189 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001190 AC_TRY_COMPILE([#include <X11/Xlib.h>
1191#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001192 AC_MSG_RESULT(yes),
1193 AC_MSG_RESULT(no); no_x=yes)
1194 CFLAGS=$cflags_save
1195
1196 if test "${no_x-no}" = yes; then
1197 with_x=no
1198 else
1199 AC_DEFINE(HAVE_X11)
1200 X_LIB="-lXt -lX11";
1201 AC_SUBST(X_LIB)
1202
1203 ac_save_LDFLAGS="$LDFLAGS"
1204 LDFLAGS="-L$x_libraries $LDFLAGS"
1205
1206 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1207 dnl For HP-UX 10.20 it must be before -lSM -lICE
1208 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1209 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1210
1211 dnl Some systems need -lnsl -lsocket when testing for ICE.
1212 dnl The check above doesn't do this, try here (again). Also needed to get
1213 dnl them after Xdmcp. link.sh will remove them when not needed.
1214 dnl Check for other function than above to avoid the cached value
1215 AC_CHECK_LIB(ICE, IceOpenConnection,
1216 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1217
1218 dnl Check for -lXpm (needed for some versions of Motif)
1219 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1220 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1221 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1222
1223 dnl Check that the X11 header files don't use implicit declarations
1224 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1225 cflags_save=$CFLAGS
1226 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1227 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1228 AC_MSG_RESULT(no),
1229 CFLAGS="$CFLAGS -Wno-implicit-int"
1230 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1231 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1232 AC_MSG_RESULT(test failed)
1233 )
1234 )
1235 CFLAGS=$cflags_save
1236
1237 LDFLAGS="$ac_save_LDFLAGS"
1238
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001239 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1240 AC_CACHE_VAL(ac_cv_small_wchar_t,
1241 [AC_TRY_RUN([
1242#include <X11/Xlib.h>
1243#if STDC_HEADERS
1244# include <stdlib.h>
1245# include <stddef.h>
1246#endif
1247 main()
1248 {
1249 if (sizeof(wchar_t) <= 2)
1250 exit(1);
1251 exit(0);
1252 }],
1253 ac_cv_small_wchar_t="no",
1254 ac_cv_small_wchar_t="yes",
1255 AC_MSG_ERROR(failed to compile test program))])
1256 AC_MSG_RESULT($ac_cv_small_wchar_t)
1257 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1258 AC_DEFINE(SMALL_WCHAR_T)
1259 fi
1260
Bram Moolenaar071d4272004-06-13 20:20:40 +00001261 fi
1262fi
1263
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001264test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001265
1266AC_MSG_CHECKING(--enable-gui argument)
1267AC_ARG_ENABLE(gui,
Bram Moolenaar9372a112005-12-06 19:59:18 +00001268 [ --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 +00001269
1270dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1271dnl Do not use character classes for portability with old tools.
1272enable_gui_canon=`echo "_$enable_gui" | \
1273 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1274
1275dnl Skip everything by default.
1276SKIP_GTK=YES
1277SKIP_GTK2=YES
1278SKIP_GNOME=YES
1279SKIP_MOTIF=YES
1280SKIP_ATHENA=YES
1281SKIP_NEXTAW=YES
1282SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001283SKIP_CARBON=YES
1284GUITYPE=NONE
1285
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001286if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001287 SKIP_PHOTON=
1288 case "$enable_gui_canon" in
1289 no) AC_MSG_RESULT(no GUI support)
1290 SKIP_PHOTON=YES ;;
1291 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1292 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1293 photon) AC_MSG_RESULT(Photon GUI support) ;;
1294 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1295 SKIP_PHOTON=YES ;;
1296 esac
1297
1298elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1299 SKIP_CARBON=
1300 case "$enable_gui_canon" in
1301 no) AC_MSG_RESULT(no GUI support)
1302 SKIP_CARBON=YES ;;
1303 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1304 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1305 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1306 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1307 SKIP_CARBON=YES ;;
1308 esac
1309
1310else
1311
Bram Moolenaar071d4272004-06-13 20:20:40 +00001312 case "$enable_gui_canon" in
1313 no|none) AC_MSG_RESULT(no GUI support) ;;
1314 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1315 SKIP_GTK=
1316 SKIP_GTK2=
1317 SKIP_GNOME=
1318 SKIP_MOTIF=
1319 SKIP_ATHENA=
1320 SKIP_NEXTAW=
1321 SKIP_CARBON=;;
1322 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1323 SKIP_GTK=;;
1324 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1325 SKIP_GTK=
1326 SKIP_GTK2=;;
1327 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1328 SKIP_GNOME=
1329 SKIP_GTK=;;
1330 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1331 SKIP_GNOME=
1332 SKIP_GTK=
1333 SKIP_GTK2=;;
1334 motif) AC_MSG_RESULT(Motif GUI support)
1335 SKIP_MOTIF=;;
1336 athena) AC_MSG_RESULT(Athena GUI support)
1337 SKIP_ATHENA=;;
1338 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1339 SKIP_NEXTAW=;;
1340 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1341 esac
1342
1343fi
1344
1345if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1346 AC_MSG_CHECKING(whether or not to look for GTK)
1347 AC_ARG_ENABLE(gtk-check,
1348 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1349 , enable_gtk_check="yes")
1350 AC_MSG_RESULT($enable_gtk_check)
1351 if test "x$enable_gtk_check" = "xno"; then
1352 SKIP_GTK=YES
1353 SKIP_GNOME=YES
1354 fi
1355fi
1356
1357if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1358 -a "$enable_gui_canon" != "gnome2"; then
1359 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1360 AC_ARG_ENABLE(gtk2-check,
1361 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1362 , enable_gtk2_check="yes")
1363 AC_MSG_RESULT($enable_gtk2_check)
1364 if test "x$enable_gtk2_check" = "xno"; then
1365 SKIP_GTK2=YES
1366 fi
1367fi
1368
1369if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1370 -a "$enable_gui_canon" != "gnome2"; then
1371 AC_MSG_CHECKING(whether or not to look for GNOME)
1372 AC_ARG_ENABLE(gnome-check,
1373 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1374 , enable_gnome_check="no")
1375 AC_MSG_RESULT($enable_gnome_check)
1376 if test "x$enable_gnome_check" = "xno"; then
1377 SKIP_GNOME=YES
1378 fi
1379fi
1380
1381if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1382 AC_MSG_CHECKING(whether or not to look for Motif)
1383 AC_ARG_ENABLE(motif-check,
1384 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1385 , enable_motif_check="yes")
1386 AC_MSG_RESULT($enable_motif_check)
1387 if test "x$enable_motif_check" = "xno"; then
1388 SKIP_MOTIF=YES
1389 fi
1390fi
1391
1392if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1393 AC_MSG_CHECKING(whether or not to look for Athena)
1394 AC_ARG_ENABLE(athena-check,
1395 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1396 , enable_athena_check="yes")
1397 AC_MSG_RESULT($enable_athena_check)
1398 if test "x$enable_athena_check" = "xno"; then
1399 SKIP_ATHENA=YES
1400 fi
1401fi
1402
1403if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1404 AC_MSG_CHECKING(whether or not to look for neXtaw)
1405 AC_ARG_ENABLE(nextaw-check,
1406 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1407 , enable_nextaw_check="yes")
1408 AC_MSG_RESULT($enable_nextaw_check);
1409 if test "x$enable_nextaw_check" = "xno"; then
1410 SKIP_NEXTAW=YES
1411 fi
1412fi
1413
1414if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1415 AC_MSG_CHECKING(whether or not to look for Carbon)
1416 AC_ARG_ENABLE(carbon-check,
1417 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1418 , enable_carbon_check="yes")
1419 AC_MSG_RESULT($enable_carbon_check);
1420 if test "x$enable_carbon_check" = "xno"; then
1421 SKIP_CARBON=YES
1422 fi
1423fi
1424
Bram Moolenaar843ee412004-06-30 16:16:41 +00001425
Bram Moolenaar071d4272004-06-13 20:20:40 +00001426if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1427 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001428 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001429 AC_MSG_RESULT(yes);
1430 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001431 if test "$VIMNAME" = "vim"; then
1432 VIMNAME=Vim
1433 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001434
1435 dnl Default install directory is not /usr/local
1436 if test x$prefix = xNONE; then
1437 prefix=/Applications
1438 fi
1439
1440 dnl Sorry for the hard coded default
1441 datadir='${prefix}/Vim.app/Contents/Resources'
1442
Bram Moolenaar071d4272004-06-13 20:20:40 +00001443 dnl skip everything else
1444 SKIP_GTK=YES;
1445 SKIP_GTK2=YES;
1446 SKIP_GNOME=YES;
1447 SKIP_MOTIF=YES;
1448 SKIP_ATHENA=YES;
1449 SKIP_NEXTAW=YES;
1450 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001451 SKIP_CARBON=YES
1452fi
1453
Bram Moolenaar071d4272004-06-13 20:20:40 +00001454dnl
1455dnl Get the cflags and libraries from the gtk-config script
1456dnl
1457
1458dnl define an autoconf function to check for a specified version of GTK, and
1459dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1460dnl
1461dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001462dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001463dnl
1464AC_DEFUN(AM_PATH_GTK,
1465[
1466 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1467 {
1468 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1469 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1470 no_gtk=""
1471 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1472 && $PKG_CONFIG --exists gtk+-2.0; then
1473 {
1474 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1475 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1476 dnl something like that.
1477 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001478 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001479 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1480 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1481 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1482 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1483 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1484 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1485 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1486 }
1487 elif test "X$GTK_CONFIG" != "Xno"; then
1488 {
1489 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001490 GTK_LIBDIR=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001491 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1492 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1493 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1494 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1495 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1496 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1497 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1498 }
1499 else
1500 no_gtk=yes
1501 fi
1502
1503 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1504 {
1505 ac_save_CFLAGS="$CFLAGS"
1506 ac_save_LIBS="$LIBS"
1507 CFLAGS="$CFLAGS $GTK_CFLAGS"
1508 LIBS="$LIBS $GTK_LIBS"
1509
1510 dnl
1511 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1512 dnl checks the results of gtk-config to some extent
1513 dnl
1514 rm -f conf.gtktest
1515 AC_TRY_RUN([
1516#include <gtk/gtk.h>
1517#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001518#if STDC_HEADERS
1519# include <stdlib.h>
1520# include <stddef.h>
1521#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001522
1523int
1524main ()
1525{
1526int major, minor, micro;
1527char *tmp_version;
1528
1529system ("touch conf.gtktest");
1530
1531/* HP/UX 9 (%@#!) writes to sscanf strings */
1532tmp_version = g_strdup("$min_gtk_version");
1533if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1534 printf("%s, bad version string\n", "$min_gtk_version");
1535 exit(1);
1536 }
1537
1538if ((gtk_major_version > major) ||
1539 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1540 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1541 (gtk_micro_version >= micro)))
1542{
1543 return 0;
1544}
1545return 1;
1546}
1547],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1548 CFLAGS="$ac_save_CFLAGS"
1549 LIBS="$ac_save_LIBS"
1550 }
1551 fi
1552 if test "x$no_gtk" = x ; then
1553 if test "x$enable_gtktest" = "xyes"; then
1554 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1555 else
1556 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1557 fi
1558 ifelse([$2], , :, [$2])
1559 else
1560 {
1561 AC_MSG_RESULT(no)
1562 GTK_CFLAGS=""
1563 GTK_LIBS=""
1564 ifelse([$3], , :, [$3])
1565 }
1566 fi
1567 }
1568 else
1569 GTK_CFLAGS=""
1570 GTK_LIBS=""
1571 ifelse([$3], , :, [$3])
1572 fi
1573 AC_SUBST(GTK_CFLAGS)
1574 AC_SUBST(GTK_LIBS)
1575 rm -f conf.gtktest
1576])
1577
1578dnl ---------------------------------------------------------------------------
1579dnl gnome
1580dnl ---------------------------------------------------------------------------
1581AC_DEFUN([GNOME_INIT_HOOK],
1582[
1583 AC_SUBST(GNOME_LIBS)
1584 AC_SUBST(GNOME_LIBDIR)
1585 AC_SUBST(GNOME_INCLUDEDIR)
1586
1587 AC_ARG_WITH(gnome-includes,
1588 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1589 [CFLAGS="$CFLAGS -I$withval"]
1590 )
1591
1592 AC_ARG_WITH(gnome-libs,
1593 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1594 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1595 )
1596
1597 AC_ARG_WITH(gnome,
1598 [ --with-gnome Specify prefix for GNOME files],
1599 if test x$withval = xyes; then
1600 want_gnome=yes
1601 ifelse([$1], [], :, [$1])
1602 else
1603 if test "x$withval" = xno; then
1604 want_gnome=no
1605 else
1606 want_gnome=yes
1607 LDFLAGS="$LDFLAGS -L$withval/lib"
1608 CFLAGS="$CFLAGS -I$withval/include"
1609 gnome_prefix=$withval/lib
1610 fi
1611 fi,
1612 want_gnome=yes)
1613
1614 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1615 {
1616 AC_MSG_CHECKING(for libgnomeui-2.0)
1617 if $PKG_CONFIG --exists libgnomeui-2.0; then
1618 AC_MSG_RESULT(yes)
1619 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1620 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1621 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001622
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001623 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1624 dnl This might not be the right way but it works for me...
1625 AC_MSG_CHECKING(for FreeBSD)
1626 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1627 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001628 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001629 GNOME_LIBS="$GNOME_LIBS -pthread"
1630 else
1631 AC_MSG_RESULT(no)
1632 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001633 $1
1634 else
1635 AC_MSG_RESULT(not found)
1636 if test "x$2" = xfail; then
1637 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1638 fi
1639 fi
1640 }
1641 elif test "x$want_gnome" = xyes; then
1642 {
1643 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1644 if test "$GNOME_CONFIG" = "no"; then
1645 no_gnome_config="yes"
1646 else
1647 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1648 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1649 AC_MSG_RESULT(yes)
1650 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1651 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1652 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1653 $1
1654 else
1655 AC_MSG_RESULT(no)
1656 no_gnome_config="yes"
1657 fi
1658 fi
1659
1660 if test x$exec_prefix = xNONE; then
1661 if test x$prefix = xNONE; then
1662 gnome_prefix=$ac_default_prefix/lib
1663 else
1664 gnome_prefix=$prefix/lib
1665 fi
1666 else
1667 gnome_prefix=`eval echo \`echo $libdir\``
1668 fi
1669
1670 if test "$no_gnome_config" = "yes"; then
1671 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1672 if test -f $gnome_prefix/gnomeConf.sh; then
1673 AC_MSG_RESULT(found)
1674 echo "loading gnome configuration from" \
1675 "$gnome_prefix/gnomeConf.sh"
1676 . $gnome_prefix/gnomeConf.sh
1677 $1
1678 else
1679 AC_MSG_RESULT(not found)
1680 if test x$2 = xfail; then
1681 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1682 fi
1683 fi
1684 fi
1685 }
1686 fi
1687])
1688
1689AC_DEFUN([GNOME_INIT],[
1690 GNOME_INIT_HOOK([],fail)
1691])
1692
1693
1694dnl ---------------------------------------------------------------------------
1695dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1696dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1697dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1698dnl ---------------------------------------------------------------------------
1699if test -z "$SKIP_GTK"; then
1700
1701 AC_MSG_CHECKING(--with-gtk-prefix argument)
1702 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1703 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1704 gtk_config_prefix=""; AC_MSG_RESULT(no))
1705
1706 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1707 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1708 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1709 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1710
1711 AC_MSG_CHECKING(--disable-gtktest argument)
1712 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1713 , enable_gtktest=yes)
1714 if test "x$enable_gtktest" = "xyes" ; then
1715 AC_MSG_RESULT(gtk test enabled)
1716 else
1717 AC_MSG_RESULT(gtk test disabled)
1718 fi
1719
1720 if test "x$gtk_config_prefix" != "x" ; then
1721 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1722 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1723 fi
1724 if test "x$gtk_config_exec_prefix" != "x" ; then
1725 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1726 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1727 fi
1728 if test "X$GTK_CONFIG" = "X"; then
1729 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1730 if test "X$GTK_CONFIG" = "Xno"; then
1731 dnl Some distributions call it gtk12-config, annoying!
1732 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1733 GTK_CONFIG="$GTK12_CONFIG"
1734 fi
1735 else
1736 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1737 fi
1738 if test "X$PKG_CONFIG" = "X"; then
1739 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1740 fi
1741
1742 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1743 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1744 dnl problems (bold fonts, --remote doesn't work).
1745 if test "X$SKIP_GTK2" != "XYES"; then
1746 AM_PATH_GTK(2.2.0,
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001747 [GUI_LIB_LOC="$GTK_LIBDIR"
1748 GTK_LIBNAME="$GTK_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001749 GUI_INC_LOC="$GTK_CFLAGS"], )
1750 if test "x$GTK_CFLAGS" != "x"; then
1751 SKIP_ATHENA=YES
1752 SKIP_NEXTAW=YES
1753 SKIP_MOTIF=YES
1754 GUITYPE=GTK
1755 AC_SUBST(GTK_LIBNAME)
1756 fi
1757 fi
1758
1759 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1760 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1761 dnl were test versions.
1762 if test "x$GUITYPE" != "xGTK"; then
1763 SKIP_GTK2=YES
1764 AM_PATH_GTK(1.1.16,
1765 [GTK_LIBNAME="$GTK_LIBS"
1766 GUI_INC_LOC="$GTK_CFLAGS"], )
1767 if test "x$GTK_CFLAGS" != "x"; then
1768 SKIP_ATHENA=YES
1769 SKIP_NEXTAW=YES
1770 SKIP_MOTIF=YES
1771 GUITYPE=GTK
1772 AC_SUBST(GTK_LIBNAME)
1773 fi
1774 fi
1775 fi
1776 dnl Give a warning if GTK is older than 1.2.3
1777 if test "x$GUITYPE" = "xGTK"; then
1778 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1779 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1780 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1781 else
1782 {
1783 if test "0$gtk_major_version" -ge 2; then
1784 AC_DEFINE(HAVE_GTK2)
1785 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1786 || test "0$gtk_minor_version" -ge 2 \
1787 || test "0$gtk_major_version" -gt 2; then
1788 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1789 fi
1790 fi
1791 dnl
1792 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1793 dnl
1794 if test -z "$SKIP_GNOME"; then
1795 {
1796 GNOME_INIT_HOOK([have_gnome=yes])
1797 if test x$have_gnome = xyes ; then
1798 AC_DEFINE(FEAT_GUI_GNOME)
1799 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1800 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1801 fi
1802 }
1803 fi
1804 }
1805 fi
1806 fi
1807fi
1808
1809dnl Check for Motif include files location.
1810dnl The LAST one found is used, this makes the highest version to be used,
1811dnl e.g. when Motif1.2 and Motif2.0 are both present.
1812
1813if test -z "$SKIP_MOTIF"; then
1814 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"
1815 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1816 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1817
1818 AC_MSG_CHECKING(for location of Motif GUI includes)
1819 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1820 GUI_INC_LOC=
1821 for try in $gui_includes; do
1822 if test -f "$try/Xm/Xm.h"; then
1823 GUI_INC_LOC=$try
1824 fi
1825 done
1826 if test -n "$GUI_INC_LOC"; then
1827 if test "$GUI_INC_LOC" = /usr/include; then
1828 GUI_INC_LOC=
1829 AC_MSG_RESULT(in default path)
1830 else
1831 AC_MSG_RESULT($GUI_INC_LOC)
1832 fi
1833 else
1834 AC_MSG_RESULT(<not found>)
1835 SKIP_MOTIF=YES
1836 fi
1837fi
1838
1839dnl Check for Motif library files location. In the same order as the include
1840dnl files, to avoid a mixup if several versions are present
1841
1842if test -z "$SKIP_MOTIF"; then
1843 AC_MSG_CHECKING(--with-motif-lib argument)
1844 AC_ARG_WITH(motif-lib,
1845 [ --with-motif-lib=STRING Library for Motif ],
1846 [ MOTIF_LIBNAME="${withval}" ] )
1847
1848 if test -n "$MOTIF_LIBNAME"; then
1849 AC_MSG_RESULT($MOTIF_LIBNAME)
1850 GUI_LIB_LOC=
1851 else
1852 AC_MSG_RESULT(no)
1853
1854 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1855 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1856
1857 AC_MSG_CHECKING(for location of Motif GUI libs)
1858 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"
1859 GUI_LIB_LOC=
1860 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001861 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00001862 if test -f "$libtry"; then
1863 GUI_LIB_LOC=$try
1864 fi
1865 done
1866 done
1867 if test -n "$GUI_LIB_LOC"; then
1868 dnl Remove /usr/lib, it causes trouble on some systems
1869 if test "$GUI_LIB_LOC" = /usr/lib; then
1870 GUI_LIB_LOC=
1871 AC_MSG_RESULT(in default path)
1872 else
1873 if test -n "$GUI_LIB_LOC"; then
1874 AC_MSG_RESULT($GUI_LIB_LOC)
1875 if test "`(uname) 2>/dev/null`" = SunOS &&
1876 uname -r | grep '^5' >/dev/null; then
1877 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1878 fi
1879 fi
1880 fi
1881 MOTIF_LIBNAME=-lXm
1882 else
1883 AC_MSG_RESULT(<not found>)
1884 SKIP_MOTIF=YES
1885 fi
1886 fi
1887fi
1888
1889if test -z "$SKIP_MOTIF"; then
1890 SKIP_ATHENA=YES
1891 SKIP_NEXTAW=YES
1892 GUITYPE=MOTIF
1893 AC_SUBST(MOTIF_LIBNAME)
1894fi
1895
1896dnl Check if the Athena files can be found
1897
1898GUI_X_LIBS=
1899
1900if test -z "$SKIP_ATHENA"; then
1901 AC_MSG_CHECKING(if Athena header files can be found)
1902 cflags_save=$CFLAGS
1903 CFLAGS="$CFLAGS $X_CFLAGS"
1904 AC_TRY_COMPILE([
1905#include <X11/Intrinsic.h>
1906#include <X11/Xaw/Paned.h>], ,
1907 AC_MSG_RESULT(yes),
1908 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1909 CFLAGS=$cflags_save
1910fi
1911
1912if test -z "$SKIP_ATHENA"; then
1913 GUITYPE=ATHENA
1914fi
1915
1916if test -z "$SKIP_NEXTAW"; then
1917 AC_MSG_CHECKING(if neXtaw header files can be found)
1918 cflags_save=$CFLAGS
1919 CFLAGS="$CFLAGS $X_CFLAGS"
1920 AC_TRY_COMPILE([
1921#include <X11/Intrinsic.h>
1922#include <X11/neXtaw/Paned.h>], ,
1923 AC_MSG_RESULT(yes),
1924 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1925 CFLAGS=$cflags_save
1926fi
1927
1928if test -z "$SKIP_NEXTAW"; then
1929 GUITYPE=NEXTAW
1930fi
1931
1932if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1933 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1934 dnl Avoid adding it when it twice
1935 if test -n "$GUI_INC_LOC"; then
1936 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1937 fi
1938 if test -n "$GUI_LIB_LOC"; then
1939 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1940 fi
1941
1942 dnl Check for -lXext and then for -lXmu
1943 ldflags_save=$LDFLAGS
1944 LDFLAGS="$X_LIBS $LDFLAGS"
1945 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1946 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1947 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1948 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1949 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1950 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1951 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1952 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1953 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1954 if test -z "$SKIP_MOTIF"; then
1955 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1956 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1957 fi
1958 LDFLAGS=$ldflags_save
1959
1960 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1961 AC_MSG_CHECKING(for extra X11 defines)
1962 NARROW_PROTO=
1963 rm -fr conftestdir
1964 if mkdir conftestdir; then
1965 cd conftestdir
1966 cat > Imakefile <<'EOF'
1967acfindx:
1968 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1969EOF
1970 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1971 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1972 fi
1973 cd ..
1974 rm -fr conftestdir
1975 fi
1976 if test -z "$NARROW_PROTO"; then
1977 AC_MSG_RESULT(no)
1978 else
1979 AC_MSG_RESULT($NARROW_PROTO)
1980 fi
1981 AC_SUBST(NARROW_PROTO)
1982fi
1983
1984dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
1985dnl use the X11 include path
1986if test "$enable_xsmp" = "yes"; then
1987 cppflags_save=$CPPFLAGS
1988 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1989 AC_CHECK_HEADERS(X11/SM/SMlib.h)
1990 CPPFLAGS=$cppflags_save
1991fi
1992
1993
1994if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
1995 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
1996 cppflags_save=$CPPFLAGS
1997 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1998 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
1999
2000 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2001 if test ! "$enable_xim" = "no"; then
2002 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2003 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2004 AC_MSG_RESULT(yes),
2005 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2006 fi
2007 CPPFLAGS=$cppflags_save
2008
2009 dnl automatically enable XIM when hangul input isn't enabled
2010 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2011 -a "x$GUITYPE" != "xNONE" ; then
2012 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2013 enable_xim="yes"
2014 fi
2015fi
2016
2017if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2018 cppflags_save=$CPPFLAGS
2019 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002020dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2021 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2022 AC_TRY_COMPILE([
2023#include <X11/Intrinsic.h>
2024#include <X11/Xmu/Editres.h>],
2025 [int i; i = 0;],
2026 AC_MSG_RESULT(yes)
2027 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2028 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002029 CPPFLAGS=$cppflags_save
2030fi
2031
2032dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2033if test -z "$SKIP_MOTIF"; then
2034 cppflags_save=$CPPFLAGS
2035 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002036 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 +00002037 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002038
2039 if test $ac_cv_header_Xm_XpmP_h = yes; then
2040 dnl Solaris uses XpmAttributes_21, very annoying.
2041 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2042 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2043 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2044 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2045 )
2046 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002047 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002048 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002049 CPPFLAGS=$cppflags_save
2050fi
2051
2052if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2053 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2054 enable_xim="no"
2055fi
2056if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2057 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2058 enable_fontset="no"
2059fi
2060if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2061 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2062 enable_fontset="no"
2063fi
2064
Bram Moolenaar071d4272004-06-13 20:20:40 +00002065if test -z "$SKIP_PHOTON"; then
2066 GUITYPE=PHOTONGUI
2067fi
2068
2069AC_SUBST(GUI_INC_LOC)
2070AC_SUBST(GUI_LIB_LOC)
2071AC_SUBST(GUITYPE)
2072AC_SUBST(GUI_X_LIBS)
2073
2074if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2075 AC_MSG_ERROR([cannot use workshop without Motif])
2076fi
2077
2078dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2079if test "$enable_xim" = "yes"; then
2080 AC_DEFINE(FEAT_XIM)
2081fi
2082if test "$enable_fontset" = "yes"; then
2083 AC_DEFINE(FEAT_XFONTSET)
2084fi
2085
2086
2087dnl ---------------------------------------------------------------------------
2088dnl end of GUI-checking
2089dnl ---------------------------------------------------------------------------
2090
2091
2092dnl Only really enable hangul input when GUI and XFONTSET are available
2093if test "$enable_hangulinput" = "yes"; then
2094 if test "x$GUITYPE" = "xNONE"; then
2095 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2096 enable_hangulinput=no
2097 else
2098 AC_DEFINE(FEAT_HANGULIN)
2099 HANGULIN_SRC=hangulin.c
2100 AC_SUBST(HANGULIN_SRC)
2101 HANGULIN_OBJ=objects/hangulin.o
2102 AC_SUBST(HANGULIN_OBJ)
2103 fi
2104fi
2105
2106dnl Checks for libraries and include files.
2107
Bram Moolenaar446cb832008-06-24 21:56:24 +00002108AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2109 [
2110 AC_RUN_IFELSE([[
2111#include "confdefs.h"
2112#include <ctype.h>
2113#if STDC_HEADERS
2114# include <stdlib.h>
2115# include <stddef.h>
2116#endif
2117main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2118 ]],[
2119 vim_cv_toupper_broken=yes
2120 ],[
2121 vim_cv_toupper_broken=no
2122 ],[
2123 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2124 ])])
2125
2126if test "x$vim_cv_toupper_broken" = "xyes" ; then
2127 AC_DEFINE(BROKEN_TOUPPER)
2128fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002129
2130AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002131AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002132 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2133 AC_MSG_RESULT(no))
2134
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002135AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2136AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2137 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2138 AC_MSG_RESULT(no))
2139
Bram Moolenaar071d4272004-06-13 20:20:40 +00002140dnl Checks for header files.
2141AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2142dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2143if test "$HAS_ELF" = 1; then
2144 AC_CHECK_LIB(elf, main)
2145fi
2146
2147AC_HEADER_DIRENT
2148
Bram Moolenaar071d4272004-06-13 20:20:40 +00002149dnl If sys/wait.h is not found it might still exist but not be POSIX
2150dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2151if test $ac_cv_header_sys_wait_h = no; then
2152 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2153 AC_TRY_COMPILE([#include <sys/wait.h>],
2154 [union wait xx, yy; xx = yy],
2155 AC_MSG_RESULT(yes)
2156 AC_DEFINE(HAVE_SYS_WAIT_H)
2157 AC_DEFINE(HAVE_UNION_WAIT),
2158 AC_MSG_RESULT(no))
2159fi
2160
2161AC_CHECK_HEADERS(stdarg.h stdlib.h string.h sys/select.h sys/utsname.h \
Bram Moolenaare74455a2007-11-04 14:36:18 +00002162 termcap.h fcntl.h sgtty.h sys/ioctl.h sys/time.h sys/types.h termio.h \
Bram Moolenaar446cb832008-06-24 21:56:24 +00002163 iconv.h langinfo.h math.h unistd.h stropts.h errno.h \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002164 sys/resource.h sys/systeminfo.h locale.h \
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002165 sys/stream.h termios.h libc.h sys/statfs.h \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002166 poll.h sys/poll.h pwd.h utime.h sys/param.h libintl.h \
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002167 libgen.h util/debug.h util/msg18n.h frame.h \
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002168 sys/acl.h sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002169
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002170dnl sys/ptem.h depends on sys/stream.h on Solaris
2171AC_CHECK_HEADERS(sys/ptem.h, [], [],
2172[#if defined HAVE_SYS_STREAM_H
2173# include <sys/stream.h>
2174#endif])
2175
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002176dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2177AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2178[#if defined HAVE_SYS_PARAM_H
2179# include <sys/param.h>
2180#endif])
2181
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002182
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002183dnl pthread_np.h may exist but can only be used after including pthread.h
2184AC_MSG_CHECKING([for pthread_np.h])
2185AC_TRY_COMPILE([
2186#include <pthread.h>
2187#include <pthread_np.h>],
2188 [int i; i = 0;],
2189 AC_MSG_RESULT(yes)
2190 AC_DEFINE(HAVE_PTHREAD_NP_H),
2191 AC_MSG_RESULT(no))
2192
Bram Moolenaare344bea2005-09-01 20:46:49 +00002193AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002194if test "x$MACOSX" = "xyes"; then
2195 dnl The strings.h file on OS/X contains a warning and nothing useful.
2196 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2197else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002198
2199dnl Check if strings.h and string.h can both be included when defined.
2200AC_MSG_CHECKING([if strings.h can be included after string.h])
2201cppflags_save=$CPPFLAGS
2202CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2203AC_TRY_COMPILE([
2204#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2205# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2206 /* but don't do it on AIX 5.1 (Uribarri) */
2207#endif
2208#ifdef HAVE_XM_XM_H
2209# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2210#endif
2211#ifdef HAVE_STRING_H
2212# include <string.h>
2213#endif
2214#if defined(HAVE_STRINGS_H)
2215# include <strings.h>
2216#endif
2217 ], [int i; i = 0;],
2218 AC_MSG_RESULT(yes),
2219 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2220 AC_MSG_RESULT(no))
2221CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002222fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002223
2224dnl Checks for typedefs, structures, and compiler characteristics.
2225AC_PROG_GCC_TRADITIONAL
2226AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002227AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002228AC_TYPE_MODE_T
2229AC_TYPE_OFF_T
2230AC_TYPE_PID_T
2231AC_TYPE_SIZE_T
2232AC_TYPE_UID_T
2233AC_HEADER_TIME
2234AC_CHECK_TYPE(ino_t, long)
2235AC_CHECK_TYPE(dev_t, unsigned)
2236
2237AC_MSG_CHECKING(for rlim_t)
2238if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2239 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2240else
2241 AC_EGREP_CPP(dnl
2242changequote(<<,>>)dnl
2243<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2244changequote([,]),
2245 [
2246#include <sys/types.h>
2247#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002248# include <stdlib.h>
2249# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002250#endif
2251#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002252# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002253#endif
2254 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2255 AC_MSG_RESULT($ac_cv_type_rlim_t)
2256fi
2257if test $ac_cv_type_rlim_t = no; then
2258 cat >> confdefs.h <<\EOF
2259#define rlim_t unsigned long
2260EOF
2261fi
2262
2263AC_MSG_CHECKING(for stack_t)
2264if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2265 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2266else
2267 AC_EGREP_CPP(stack_t,
2268 [
2269#include <sys/types.h>
2270#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002271# include <stdlib.h>
2272# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002273#endif
2274#include <signal.h>
2275 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2276 AC_MSG_RESULT($ac_cv_type_stack_t)
2277fi
2278if test $ac_cv_type_stack_t = no; then
2279 cat >> confdefs.h <<\EOF
2280#define stack_t struct sigaltstack
2281EOF
2282fi
2283
2284dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2285AC_MSG_CHECKING(whether stack_t has an ss_base field)
2286AC_TRY_COMPILE([
2287#include <sys/types.h>
2288#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002289# include <stdlib.h>
2290# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002291#endif
2292#include <signal.h>
2293#include "confdefs.h"
2294 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2295 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2296 AC_MSG_RESULT(no))
2297
2298olibs="$LIBS"
2299AC_MSG_CHECKING(--with-tlib argument)
2300AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2301if test -n "$with_tlib"; then
2302 AC_MSG_RESULT($with_tlib)
2303 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002304 AC_MSG_CHECKING(for linking with $with_tlib library)
2305 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2306 dnl Need to check for tgetent() below.
2307 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002308else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002309 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002310 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2311 dnl curses, because curses is much slower.
2312 dnl Newer versions of ncurses are preferred over anything.
2313 dnl Older versions of ncurses have bugs, get a new one!
2314 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002315 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002316 case "`uname -s 2>/dev/null`" in
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002317 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002318 *) tlibs="ncurses termlib termcap curses";;
2319 esac
2320 for libname in $tlibs; do
2321 AC_CHECK_LIB(${libname}, tgetent,,)
2322 if test "x$olibs" != "x$LIBS"; then
2323 dnl It's possible that a library is found but it doesn't work
2324 dnl e.g., shared library that cannot be found
2325 dnl compile and run a test program to be sure
2326 AC_TRY_RUN([
2327#ifdef HAVE_TERMCAP_H
2328# include <termcap.h>
2329#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002330#if STDC_HEADERS
2331# include <stdlib.h>
2332# include <stddef.h>
2333#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002334main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2335 res="OK", res="FAIL", res="FAIL")
2336 if test "$res" = "OK"; then
2337 break
2338 fi
2339 AC_MSG_RESULT($libname library is not usable)
2340 LIBS="$olibs"
2341 fi
2342 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002343 if test "x$olibs" = "x$LIBS"; then
2344 AC_MSG_RESULT(no terminal library found)
2345 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002346fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002347
2348if test "x$olibs" = "x$LIBS"; then
2349 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002350 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002351 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2352 AC_MSG_RESULT(yes),
2353 AC_MSG_ERROR([NOT FOUND!
2354 You need to install a terminal library; for example ncurses.
2355 Or specify the name of the library with --with-tlib.]))
2356fi
2357
Bram Moolenaar446cb832008-06-24 21:56:24 +00002358AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2359 [
2360 AC_RUN_IFELSE([[
2361#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002362#ifdef HAVE_TERMCAP_H
2363# include <termcap.h>
2364#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002365#ifdef HAVE_STRING_H
2366# include <string.h>
2367#endif
2368#if STDC_HEADERS
2369# include <stdlib.h>
2370# include <stddef.h>
2371#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002372main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002373{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2374 ]],[
2375 vim_cv_terminfo=no
2376 ],[
2377 vim_cv_terminfo=yes
2378 ],[
2379 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2380 ])
2381 ])
2382
2383if test "x$vim_cv_terminfo" = "xyes" ; then
2384 AC_DEFINE(TERMINFO)
2385fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002386
2387if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002388 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2389 [
2390 AC_RUN_IFELSE([[
2391#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002392#ifdef HAVE_TERMCAP_H
2393# include <termcap.h>
2394#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002395#if STDC_HEADERS
2396# include <stdlib.h>
2397# include <stddef.h>
2398#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002399main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002400{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2401 ]],[
2402 vim_cv_tgent=zero
2403 ],[
2404 vim_cv_tgent=non-zero
2405 ],[
2406 AC_MSG_ERROR(failed to compile test program.)
2407 ])
2408 ])
2409
2410 if test "x$vim_cv_tgent" = "xzero" ; then
2411 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2412 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002413fi
2414
2415AC_MSG_CHECKING(whether termcap.h contains ospeed)
2416AC_TRY_LINK([
2417#ifdef HAVE_TERMCAP_H
2418# include <termcap.h>
2419#endif
2420 ], [ospeed = 20000],
2421 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2422 [AC_MSG_RESULT(no)
2423 AC_MSG_CHECKING(whether ospeed can be extern)
2424 AC_TRY_LINK([
2425#ifdef HAVE_TERMCAP_H
2426# include <termcap.h>
2427#endif
2428extern short ospeed;
2429 ], [ospeed = 20000],
2430 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2431 AC_MSG_RESULT(no))]
2432 )
2433
2434AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2435AC_TRY_LINK([
2436#ifdef HAVE_TERMCAP_H
2437# include <termcap.h>
2438#endif
2439 ], [if (UP == 0 && BC == 0) PC = 1],
2440 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2441 [AC_MSG_RESULT(no)
2442 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2443 AC_TRY_LINK([
2444#ifdef HAVE_TERMCAP_H
2445# include <termcap.h>
2446#endif
2447extern char *UP, *BC, PC;
2448 ], [if (UP == 0 && BC == 0) PC = 1],
2449 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2450 AC_MSG_RESULT(no))]
2451 )
2452
2453AC_MSG_CHECKING(whether tputs() uses outfuntype)
2454AC_TRY_COMPILE([
2455#ifdef HAVE_TERMCAP_H
2456# include <termcap.h>
2457#endif
2458 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2459 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2460 AC_MSG_RESULT(no))
2461
2462dnl On some SCO machines sys/select redefines struct timeval
2463AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2464AC_TRY_COMPILE([
2465#include <sys/types.h>
2466#include <sys/time.h>
2467#include <sys/select.h>], ,
2468 AC_MSG_RESULT(yes)
2469 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2470 AC_MSG_RESULT(no))
2471
2472dnl AC_DECL_SYS_SIGLIST
2473
2474dnl Checks for pty.c (copied from screen) ==========================
2475AC_MSG_CHECKING(for /dev/ptc)
2476if test -r /dev/ptc; then
2477 AC_DEFINE(HAVE_DEV_PTC)
2478 AC_MSG_RESULT(yes)
2479else
2480 AC_MSG_RESULT(no)
2481fi
2482
2483AC_MSG_CHECKING(for SVR4 ptys)
2484if test -c /dev/ptmx ; then
2485 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2486 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2487 AC_MSG_RESULT(no))
2488else
2489 AC_MSG_RESULT(no)
2490fi
2491
2492AC_MSG_CHECKING(for ptyranges)
2493if test -d /dev/ptym ; then
2494 pdir='/dev/ptym'
2495else
2496 pdir='/dev'
2497fi
2498dnl SCO uses ptyp%d
2499AC_EGREP_CPP(yes,
2500[#ifdef M_UNIX
2501 yes;
2502#endif
2503 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2504dnl if test -c /dev/ptyp19; then
2505dnl ptys=`echo /dev/ptyp??`
2506dnl else
2507dnl ptys=`echo $pdir/pty??`
2508dnl fi
2509if test "$ptys" != "$pdir/pty??" ; then
2510 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2511 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2512 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2513 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2514 AC_MSG_RESULT([$p0 / $p1])
2515else
2516 AC_MSG_RESULT([don't know])
2517fi
2518
2519dnl **** pty mode/group handling ****
2520dnl
2521dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002522rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002523AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2524 [
2525 AC_RUN_IFELSE([[
2526#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002527#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002528#if STDC_HEADERS
2529# include <stdlib.h>
2530# include <stddef.h>
2531#endif
2532#ifdef HAVE_UNISTD_H
2533#include <unistd.h>
2534#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002535#include <sys/stat.h>
2536#include <stdio.h>
2537main()
2538{
2539 struct stat sb;
2540 char *x,*ttyname();
2541 int om, m;
2542 FILE *fp;
2543
2544 if (!(x = ttyname(0))) exit(1);
2545 if (stat(x, &sb)) exit(1);
2546 om = sb.st_mode;
2547 if (om & 002) exit(0);
2548 m = system("mesg y");
2549 if (m == -1 || m == 127) exit(1);
2550 if (stat(x, &sb)) exit(1);
2551 m = sb.st_mode;
2552 if (chmod(x, om)) exit(1);
2553 if (m & 002) exit(0);
2554 if (sb.st_gid == getgid()) exit(1);
2555 if (!(fp=fopen("conftest_grp", "w")))
2556 exit(1);
2557 fprintf(fp, "%d\n", sb.st_gid);
2558 fclose(fp);
2559 exit(0);
2560}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002561 ]],[
2562 if test -f conftest_grp; then
2563 vim_cv_tty_group=`cat conftest_grp`
2564 if test "x$vim_cv_tty_mode" = "x" ; then
2565 vim_cv_tty_mode=0620
2566 fi
2567 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2568 else
2569 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002570 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002571 fi
2572 ],[
2573 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002574 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002575 ],[
2576 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2577 ])
2578 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002579rm -f conftest_grp
2580
Bram Moolenaar446cb832008-06-24 21:56:24 +00002581if test "x$vim_cv_tty_group" != "xworld" ; then
2582 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2583 if test "x$vim_cv_tty_mode" = "x" ; then
2584 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)])
2585 else
2586 AC_DEFINE(PTYMODE, 0620)
2587 fi
2588fi
2589
Bram Moolenaar071d4272004-06-13 20:20:40 +00002590dnl Checks for library functions. ===================================
2591
2592AC_TYPE_SIGNAL
2593
2594dnl find out what to use at the end of a signal function
2595if test $ac_cv_type_signal = void; then
2596 AC_DEFINE(SIGRETURN, [return])
2597else
2598 AC_DEFINE(SIGRETURN, [return 0])
2599fi
2600
2601dnl check if struct sigcontext is defined (used for SGI only)
2602AC_MSG_CHECKING(for struct sigcontext)
2603AC_TRY_COMPILE([
2604#include <signal.h>
2605test_sig()
2606{
2607 struct sigcontext *scont;
2608 scont = (struct sigcontext *)0;
2609 return 1;
2610} ], ,
2611 AC_MSG_RESULT(yes)
2612 AC_DEFINE(HAVE_SIGCONTEXT),
2613 AC_MSG_RESULT(no))
2614
2615dnl tricky stuff: try to find out if getcwd() is implemented with
2616dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002617AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2618 [
2619 AC_RUN_IFELSE([[
2620#include "confdefs.h"
2621#ifdef HAVE_UNISTD_H
2622#include <unistd.h>
2623#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002624char *dagger[] = { "IFS=pwd", 0 };
2625main()
2626{
2627 char buffer[500];
2628 extern char **environ;
2629 environ = dagger;
2630 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002631}
2632 ]],[
2633 vim_cv_getcwd_broken=no
2634 ],[
2635 vim_cv_getcwd_broken=yes
2636 ],[
2637 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2638 ])
2639 ])
2640
2641if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2642 AC_DEFINE(BAD_GETCWD)
2643fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002644
Bram Moolenaar25153e12010-02-24 14:47:08 +01002645dnl Check for functions in one big call, to reduce the size of configure.
2646dnl Can only be used for functions that do not require any include.
2647AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002648 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00002649 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002650 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002651 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002652 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2653 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01002654AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00002655
2656dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2657AC_MSG_CHECKING(for st_blksize)
2658AC_TRY_COMPILE(
2659[#include <sys/types.h>
2660#include <sys/stat.h>],
2661[ struct stat st;
2662 int n;
2663
2664 stat("/", &st);
2665 n = (int)st.st_blksize;],
2666 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2667 AC_MSG_RESULT(no))
2668
Bram Moolenaar446cb832008-06-24 21:56:24 +00002669AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2670 [
2671 AC_RUN_IFELSE([[
2672#include "confdefs.h"
2673#if STDC_HEADERS
2674# include <stdlib.h>
2675# include <stddef.h>
2676#endif
2677#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002678#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002679main() {struct stat st; exit(stat("configure/", &st) != 0); }
2680 ]],[
2681 vim_cv_stat_ignores_slash=yes
2682 ],[
2683 vim_cv_stat_ignores_slash=no
2684 ],[
2685 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2686 ])
2687 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002688
Bram Moolenaar446cb832008-06-24 21:56:24 +00002689if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2690 AC_DEFINE(STAT_IGNORES_SLASH)
2691fi
2692
Bram Moolenaar071d4272004-06-13 20:20:40 +00002693dnl Link with iconv for charset translation, if not found without library.
2694dnl check for iconv() requires including iconv.h
2695dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2696dnl has been installed.
2697AC_MSG_CHECKING(for iconv_open())
2698save_LIBS="$LIBS"
2699LIBS="$LIBS -liconv"
2700AC_TRY_LINK([
2701#ifdef HAVE_ICONV_H
2702# include <iconv.h>
2703#endif
2704 ], [iconv_open("fr", "to");],
2705 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2706 LIBS="$save_LIBS"
2707 AC_TRY_LINK([
2708#ifdef HAVE_ICONV_H
2709# include <iconv.h>
2710#endif
2711 ], [iconv_open("fr", "to");],
2712 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2713 AC_MSG_RESULT(no)))
2714
2715
2716AC_MSG_CHECKING(for nl_langinfo(CODESET))
2717AC_TRY_LINK([
2718#ifdef HAVE_LANGINFO_H
2719# include <langinfo.h>
2720#endif
2721], [char *cs = nl_langinfo(CODESET);],
2722 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2723 AC_MSG_RESULT(no))
2724
Bram Moolenaar446cb832008-06-24 21:56:24 +00002725dnl Need various functions for floating point support. Only enable
2726dnl floating point when they are all present.
2727AC_CHECK_LIB(m, strtod)
2728AC_MSG_CHECKING([for strtod() and other floating point functions])
2729AC_TRY_LINK([
2730#ifdef HAVE_MATH_H
2731# include <math.h>
2732#endif
2733#if STDC_HEADERS
2734# include <stdlib.h>
2735# include <stddef.h>
2736#endif
2737], [char *s; double d;
2738 d = strtod("1.1", &s);
2739 d = fabs(1.11);
2740 d = ceil(1.11);
2741 d = floor(1.11);
2742 d = log10(1.11);
2743 d = pow(1.11, 2.22);
2744 d = sqrt(1.11);
2745 d = sin(1.11);
2746 d = cos(1.11);
2747 d = atan(1.11);
2748 ],
2749 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2750 AC_MSG_RESULT(no))
2751
Bram Moolenaar071d4272004-06-13 20:20:40 +00002752dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2753dnl when -lacl works, also try to use -lattr (required for Debian).
2754AC_MSG_CHECKING(--disable-acl argument)
2755AC_ARG_ENABLE(acl,
2756 [ --disable-acl Don't check for ACL support.],
2757 , [enable_acl="yes"])
2758if test "$enable_acl" = "yes"; then
2759AC_MSG_RESULT(no)
2760AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2761 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2762 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2763
2764AC_MSG_CHECKING(for POSIX ACL support)
2765AC_TRY_LINK([
2766#include <sys/types.h>
2767#ifdef HAVE_SYS_ACL_H
2768# include <sys/acl.h>
2769#endif
2770acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2771 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2772 acl_free(acl);],
2773 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2774 AC_MSG_RESULT(no))
2775
2776AC_MSG_CHECKING(for Solaris ACL support)
2777AC_TRY_LINK([
2778#ifdef HAVE_SYS_ACL_H
2779# include <sys/acl.h>
2780#endif], [acl("foo", GETACLCNT, 0, NULL);
2781 ],
2782 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2783 AC_MSG_RESULT(no))
2784
2785AC_MSG_CHECKING(for AIX ACL support)
2786AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00002787#if STDC_HEADERS
2788# include <stdlib.h>
2789# include <stddef.h>
2790#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002791#ifdef HAVE_SYS_ACL_H
2792# include <sys/acl.h>
2793#endif
2794#ifdef HAVE_SYS_ACCESS_H
2795# include <sys/access.h>
2796#endif
2797#define _ALL_SOURCE
2798
2799#include <sys/stat.h>
2800
2801int aclsize;
2802struct acl *aclent;], [aclsize = sizeof(struct acl);
2803 aclent = (void *)malloc(aclsize);
2804 statacl("foo", STX_NORMAL, aclent, aclsize);
2805 ],
2806 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2807 AC_MSG_RESULT(no))
2808else
2809 AC_MSG_RESULT(yes)
2810fi
2811
2812AC_MSG_CHECKING(--disable-gpm argument)
2813AC_ARG_ENABLE(gpm,
2814 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2815 [enable_gpm="yes"])
2816
2817if test "$enable_gpm" = "yes"; then
2818 AC_MSG_RESULT(no)
2819 dnl Checking if gpm support can be compiled
2820 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2821 [olibs="$LIBS" ; LIBS="-lgpm"]
2822 AC_TRY_LINK(
2823 [#include <gpm.h>
2824 #include <linux/keyboard.h>],
2825 [Gpm_GetLibVersion(NULL);],
2826 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2827 dnl FEAT_MOUSE_GPM if mouse support is included
2828 [vi_cv_have_gpm=yes],
2829 [vi_cv_have_gpm=no])
2830 [LIBS="$olibs"]
2831 )
2832 if test $vi_cv_have_gpm = yes; then
2833 LIBS="$LIBS -lgpm"
2834 AC_DEFINE(HAVE_GPM)
2835 fi
2836else
2837 AC_MSG_RESULT(yes)
2838fi
2839
Bram Moolenaar446cb832008-06-24 21:56:24 +00002840AC_MSG_CHECKING(--disable-sysmouse argument)
2841AC_ARG_ENABLE(sysmouse,
2842 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
2843 [enable_sysmouse="yes"])
2844
2845if test "$enable_sysmouse" = "yes"; then
2846 AC_MSG_RESULT(no)
2847 dnl Checking if sysmouse support can be compiled
2848 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2849 dnl defines FEAT_SYSMOUSE if mouse support is included
2850 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2851 AC_TRY_LINK(
2852 [#include <sys/consio.h>
2853 #include <signal.h>
2854 #include <sys/fbio.h>],
2855 [struct mouse_info mouse;
2856 mouse.operation = MOUSE_MODE;
2857 mouse.operation = MOUSE_SHOW;
2858 mouse.u.mode.mode = 0;
2859 mouse.u.mode.signal = SIGUSR2;],
2860 [vi_cv_have_sysmouse=yes],
2861 [vi_cv_have_sysmouse=no])
2862 )
2863 if test $vi_cv_have_sysmouse = yes; then
2864 AC_DEFINE(HAVE_SYSMOUSE)
2865 fi
2866else
2867 AC_MSG_RESULT(yes)
2868fi
2869
Bram Moolenaarf05da212009-11-17 16:13:15 +00002870dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
2871AC_MSG_CHECKING(for FD_CLOEXEC)
2872AC_TRY_COMPILE(
2873[#if HAVE_FCNTL_H
2874# include <fcntl.h>
2875#endif],
2876[ int flag = FD_CLOEXEC;],
2877 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
2878 AC_MSG_RESULT(not usable))
2879
Bram Moolenaar071d4272004-06-13 20:20:40 +00002880dnl rename needs to be checked separately to work on Nextstep with cc
2881AC_MSG_CHECKING(for rename)
2882AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2883 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2884 AC_MSG_RESULT(no))
2885
2886dnl sysctl() may exist but not the arguments we use
2887AC_MSG_CHECKING(for sysctl)
2888AC_TRY_COMPILE(
2889[#include <sys/types.h>
2890#include <sys/sysctl.h>],
2891[ int mib[2], r;
2892 size_t len;
2893
2894 mib[0] = CTL_HW;
2895 mib[1] = HW_USERMEM;
2896 len = sizeof(r);
2897 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2898 ],
2899 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2900 AC_MSG_RESULT(not usable))
2901
2902dnl sysinfo() may exist but not be Linux compatible
2903AC_MSG_CHECKING(for sysinfo)
2904AC_TRY_COMPILE(
2905[#include <sys/types.h>
2906#include <sys/sysinfo.h>],
2907[ struct sysinfo sinfo;
2908 int t;
2909
2910 (void)sysinfo(&sinfo);
2911 t = sinfo.totalram;
2912 ],
2913 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2914 AC_MSG_RESULT(not usable))
2915
Bram Moolenaar914572a2007-05-01 11:37:47 +00002916dnl struct sysinfo may have the mem_unit field or not
2917AC_MSG_CHECKING(for sysinfo.mem_unit)
2918AC_TRY_COMPILE(
2919[#include <sys/types.h>
2920#include <sys/sysinfo.h>],
2921[ struct sysinfo sinfo;
2922 sinfo.mem_unit = 1;
2923 ],
2924 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2925 AC_MSG_RESULT(no))
2926
Bram Moolenaar071d4272004-06-13 20:20:40 +00002927dnl sysconf() may exist but not support what we want to use
2928AC_MSG_CHECKING(for sysconf)
2929AC_TRY_COMPILE(
2930[#include <unistd.h>],
2931[ (void)sysconf(_SC_PAGESIZE);
2932 (void)sysconf(_SC_PHYS_PAGES);
2933 ],
2934 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2935 AC_MSG_RESULT(not usable))
2936
2937dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2938dnl be printed with "%d", and avoids a warning for cross-compiling.
2939
2940AC_MSG_CHECKING(size of int)
2941AC_CACHE_VAL(ac_cv_sizeof_int,
Bram Moolenaar446cb832008-06-24 21:56:24 +00002942 [AC_TRY_RUN([
2943#include <stdio.h>
2944#if STDC_HEADERS
2945# include <stdlib.h>
2946# include <stddef.h>
2947#endif
2948main()
2949{
2950 FILE *f=fopen("conftestval", "w");
2951 if (!f) exit(1);
2952 fprintf(f, "%d\n", (int)sizeof(int));
2953 exit(0);
2954}],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002955 ac_cv_sizeof_int=`cat conftestval`,
2956 ac_cv_sizeof_int=0,
2957 AC_MSG_ERROR(failed to compile test program))])
2958AC_MSG_RESULT($ac_cv_sizeof_int)
2959AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2960
Bram Moolenaar446cb832008-06-24 21:56:24 +00002961dnl Check for memmove() before bcopy(), makes memmove() be used when both are
2962dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
2963
Bram Moolenaar071d4272004-06-13 20:20:40 +00002964[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00002965#include "confdefs.h"
2966#ifdef HAVE_STRING_H
2967# include <string.h>
2968#endif
2969#if STDC_HEADERS
2970# include <stdlib.h>
2971# include <stddef.h>
2972#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002973main() {
2974 char buf[10];
2975 strcpy(buf, "abcdefghi");
2976 mch_memmove(buf, buf + 2, 3);
2977 if (strncmp(buf, "ababcf", 6))
2978 exit(1);
2979 strcpy(buf, "abcdefghi");
2980 mch_memmove(buf + 2, buf, 3);
2981 if (strncmp(buf, "cdedef", 6))
2982 exit(1);
2983 exit(0); /* libc version works properly. */
2984}']
2985
Bram Moolenaar446cb832008-06-24 21:56:24 +00002986AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
2987 [
2988 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
2989 [
2990 vim_cv_memmove_handles_overlap=yes
2991 ],[
2992 vim_cv_memmove_handles_overlap=no
2993 ],[
2994 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
2995 ])
2996 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002997
Bram Moolenaar446cb832008-06-24 21:56:24 +00002998if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
2999 AC_DEFINE(USEMEMMOVE)
3000else
3001 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3002 [
3003 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3004 [
3005 vim_cv_bcopy_handles_overlap=yes
3006 ],[
3007 vim_cv_bcopy_handles_overlap=no
3008 ],[
3009 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3010 ])
3011 ])
3012
3013 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3014 AC_DEFINE(USEBCOPY)
3015 else
3016 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3017 [
3018 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3019 [
3020 vim_cv_memcpy_handles_overlap=yes
3021 ],[
3022 vim_cv_memcpy_handles_overlap=no
3023 ],[
3024 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3025 ])
3026 ])
3027
3028 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3029 AC_DEFINE(USEMEMCPY)
3030 fi
3031 fi
3032fi
3033
Bram Moolenaar071d4272004-06-13 20:20:40 +00003034
3035dnl Check for multibyte locale functions
3036dnl Find out if _Xsetlocale() is supported by libX11.
3037dnl Check if X_LOCALE should be defined.
3038
3039if test "$enable_multibyte" = "yes"; then
3040 cflags_save=$CFLAGS
3041 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003042 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003043 CFLAGS="$CFLAGS -I$x_includes"
3044 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3045 AC_MSG_CHECKING(whether X_LOCALE needed)
3046 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3047 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3048 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3049 AC_MSG_RESULT(no))
3050 fi
3051 CFLAGS=$cflags_save
3052 LDFLAGS=$ldflags_save
3053fi
3054
3055dnl Link with xpg4, it is said to make Korean locale working
3056AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3057
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003058dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003059dnl --version for Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003060dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003061dnl -t for typedefs (many ctags have this)
3062dnl -s for static functions (Elvis ctags only?)
3063dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3064dnl -i+m to test for older Exuberant ctags
3065AC_MSG_CHECKING(how to create tags)
3066test -f tags && mv tags tags.save
3067if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003068 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003069else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003070 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003071 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3072 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3073 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3074 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3075 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3076 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3077 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3078fi
3079test -f tags.save && mv tags.save tags
3080AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3081
3082dnl Check how we can run man with a section number
3083AC_MSG_CHECKING(how to run man with a section nr)
3084MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003085(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 +00003086AC_MSG_RESULT($MANDEF)
3087if test "$MANDEF" = "man -s"; then
3088 AC_DEFINE(USEMAN_S)
3089fi
3090
3091dnl Check if gettext() is working and if it needs -lintl
3092AC_MSG_CHECKING(--disable-nls argument)
3093AC_ARG_ENABLE(nls,
3094 [ --disable-nls Don't support NLS (gettext()).], ,
3095 [enable_nls="yes"])
3096
3097if test "$enable_nls" = "yes"; then
3098 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003099
3100 INSTALL_LANGS=install-languages
3101 AC_SUBST(INSTALL_LANGS)
3102 INSTALL_TOOL_LANGS=install-tool-languages
3103 AC_SUBST(INSTALL_TOOL_LANGS)
3104
Bram Moolenaar071d4272004-06-13 20:20:40 +00003105 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3106 AC_MSG_CHECKING([for NLS])
3107 if test -f po/Makefile; then
3108 have_gettext="no"
3109 if test -n "$MSGFMT"; then
3110 AC_TRY_LINK(
3111 [#include <libintl.h>],
3112 [gettext("Test");],
3113 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3114 olibs=$LIBS
3115 LIBS="$LIBS -lintl"
3116 AC_TRY_LINK(
3117 [#include <libintl.h>],
3118 [gettext("Test");],
3119 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3120 AC_MSG_RESULT([gettext() doesn't work]);
3121 LIBS=$olibs))
3122 else
3123 AC_MSG_RESULT([msgfmt not found - disabled]);
3124 fi
3125 if test $have_gettext = "yes"; then
3126 AC_DEFINE(HAVE_GETTEXT)
3127 MAKEMO=yes
3128 AC_SUBST(MAKEMO)
3129 dnl this was added in GNU gettext 0.10.36
3130 AC_CHECK_FUNCS(bind_textdomain_codeset)
3131 dnl _nl_msg_cat_cntr is required for GNU gettext
3132 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3133 AC_TRY_LINK(
3134 [#include <libintl.h>
3135 extern int _nl_msg_cat_cntr;],
3136 [++_nl_msg_cat_cntr;],
3137 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3138 AC_MSG_RESULT([no]))
3139 fi
3140 else
3141 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3142 fi
3143else
3144 AC_MSG_RESULT(yes)
3145fi
3146
3147dnl Check for dynamic linking loader
3148AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3149if test x${DLL} = xdlfcn.h; then
3150 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3151 AC_MSG_CHECKING([for dlopen()])
3152 AC_TRY_LINK(,[
3153 extern void* dlopen();
3154 dlopen();
3155 ],
3156 AC_MSG_RESULT(yes);
3157 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3158 AC_MSG_RESULT(no);
3159 AC_MSG_CHECKING([for dlopen() in -ldl])
3160 olibs=$LIBS
3161 LIBS="$LIBS -ldl"
3162 AC_TRY_LINK(,[
3163 extern void* dlopen();
3164 dlopen();
3165 ],
3166 AC_MSG_RESULT(yes);
3167 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3168 AC_MSG_RESULT(no);
3169 LIBS=$olibs))
3170 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3171 dnl ick :-)
3172 AC_MSG_CHECKING([for dlsym()])
3173 AC_TRY_LINK(,[
3174 extern void* dlsym();
3175 dlsym();
3176 ],
3177 AC_MSG_RESULT(yes);
3178 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3179 AC_MSG_RESULT(no);
3180 AC_MSG_CHECKING([for dlsym() in -ldl])
3181 olibs=$LIBS
3182 LIBS="$LIBS -ldl"
3183 AC_TRY_LINK(,[
3184 extern void* dlsym();
3185 dlsym();
3186 ],
3187 AC_MSG_RESULT(yes);
3188 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3189 AC_MSG_RESULT(no);
3190 LIBS=$olibs))
3191elif test x${DLL} = xdl.h; then
3192 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3193 AC_MSG_CHECKING([for shl_load()])
3194 AC_TRY_LINK(,[
3195 extern void* shl_load();
3196 shl_load();
3197 ],
3198 AC_MSG_RESULT(yes);
3199 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3200 AC_MSG_RESULT(no);
3201 AC_MSG_CHECKING([for shl_load() in -ldld])
3202 olibs=$LIBS
3203 LIBS="$LIBS -ldld"
3204 AC_TRY_LINK(,[
3205 extern void* shl_load();
3206 shl_load();
3207 ],
3208 AC_MSG_RESULT(yes);
3209 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3210 AC_MSG_RESULT(no);
3211 LIBS=$olibs))
3212fi
3213AC_CHECK_HEADERS(setjmp.h)
3214
3215if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3216 dnl -ldl must come after DynaLoader.a
3217 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3218 LIBS=`echo $LIBS | sed s/-ldl//`
3219 PERL_LIBS="$PERL_LIBS -ldl"
3220 fi
3221fi
3222
3223if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3224 && test "x$GUITYPE" != "xCARBONGUI"; then
3225 AC_MSG_CHECKING(whether we need -framework Carbon)
3226 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
Bram Moolenaarb90daee2006-10-17 09:49:09 +00003227 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003228 || test "x$features" = "xhuge"; then
3229 LIBS="$LIBS -framework Carbon"
3230 AC_MSG_RESULT(yes)
3231 else
3232 AC_MSG_RESULT(no)
3233 fi
3234fi
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003235if test "x$MACARCH" = "xboth"; then
3236 LDFLAGS="$LDFLAGS -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
3237fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003238
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003239dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3240dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3241dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003242dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3243dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003244DEPEND_CFLAGS_FILTER=
3245if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003246 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003247 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003248 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003249 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003250 AC_MSG_RESULT(yes)
3251 else
3252 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003253 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003254 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3255 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003256 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003257 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3258 if test "$gccmajor" -gt "3"; then
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003259 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003260 AC_MSG_RESULT(yes)
3261 else
3262 AC_MSG_RESULT(no)
3263 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003264fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003265AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003266
3267dnl write output files
3268AC_OUTPUT(auto/config.mk:config.mk.in)
3269
3270dnl vim: set sw=2 tw=78 fo+=l: