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