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