blob: 6ffc675d955f1467db7b1398fc1f85e134c23911 [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)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200104 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000105 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
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100119 AC_MSG_CHECKING(--with-developer-dir argument)
120 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
121 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
122 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
123
124 if test "x$DEVELOPER_DIR" = "x"; then
125 AC_PATH_PROG(XCODE_SELECT, xcode-select)
126 if test "x$XCODE_SELECT" != "x"; then
127 AC_MSG_CHECKING(for developer dir using xcode-select)
128 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
129 AC_MSG_RESULT([$DEVELOPER_DIR])
130 else
131 DEVELOPER_DIR=/Developer
132 fi
133 fi
134
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000135 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000136 AC_MSG_CHECKING(for 10.4 universal SDK)
137 dnl There is a terrible inconsistency (but we appear to get away with it):
138 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
139 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
140 dnl tests using the preprocessor are actually done with the wrong header
141 dnl files. $LDFLAGS is set at the end, because configure uses it together
142 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000143 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000144 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100146 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000147 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000148 AC_MSG_RESULT(found, will make universal binary),
149
150 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000151 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000152 AC_MSG_CHECKING(if Intel architecture is supported)
153 CPPFLAGS="$CPPFLAGS -arch i386"
154 LDFLAGS="$save_ldflags -arch i386"
155 AC_TRY_LINK([ ], [ ],
156 AC_MSG_RESULT(yes); MACARCH="intel",
157 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000158 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000159 CPPFLAGS="$save_cppflags -arch ppc"
160 LDFLAGS="$save_ldflags -arch ppc"))
161 elif test "x$MACARCH" = "xintel"; then
162 CPPFLAGS="$CPPFLAGS -arch intel"
163 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000164 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000165 CPPFLAGS="$CPPFLAGS -arch ppc"
166 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000167 fi
168
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169 if test "$enable_darwin" = "yes"; then
170 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200171 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000172 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000173 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000174 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000175
176 dnl If Carbon is found, assume we don't want X11
177 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000178 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
180 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200181 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000182 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000183 fi
184 fi
185 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000186
Bram Moolenaardb552d602006-03-23 22:59:57 +0000187 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000188 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000189 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000190 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
191 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
192 fi
193
Bram Moolenaar071d4272004-06-13 20:20:40 +0000194else
195 AC_MSG_RESULT(no)
196fi
197
198AC_SUBST(OS_EXTRA_SRC)
199AC_SUBST(OS_EXTRA_OBJ)
200
201dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
202dnl Only when the directory exists and it wasn't there yet.
203dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000204dnl Skip all of this when cross-compiling.
205if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000206 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000207 have_local_include=''
208 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000209 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
210 --without-local-dir do not search /usr/local for local libraries.], [
211 local_dir="$withval"
212 case "$withval" in
213 */*) ;;
214 no)
215 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200216 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000217 have_local_lib=yes
218 ;;
219 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
220 esac
221 AC_MSG_RESULT($local_dir)
222 ], [
223 local_dir=/usr/local
224 AC_MSG_RESULT(Defaulting to $local_dir)
225 ])
226 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000227 echo 'void f(){}' > conftest.c
228 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000229 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
230 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000231 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000232 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000233 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
234 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 +0000235 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000236 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 fi
238 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
240 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 +0000241 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000242 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000243 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000244 fi
245fi
246
247AC_MSG_CHECKING(--with-vim-name argument)
248AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
249 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000250 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000251AC_SUBST(VIMNAME)
252AC_MSG_CHECKING(--with-ex-name argument)
253AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
254 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
255 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
256AC_SUBST(EXNAME)
257AC_MSG_CHECKING(--with-view-name argument)
258AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
259 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
260 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
261AC_SUBST(VIEWNAME)
262
263AC_MSG_CHECKING(--with-global-runtime argument)
264AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
265 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
266 AC_MSG_RESULT(no))
267
268AC_MSG_CHECKING(--with-modified-by argument)
269AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
270 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
271 AC_MSG_RESULT(no))
272
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200273dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274AC_MSG_CHECKING(if character set is EBCDIC)
275AC_TRY_COMPILE([ ],
276[ /* TryCompile function for CharSet.
277 Treat any failure as ASCII for compatibility with existing art.
278 Use compile-time rather than run-time tests for cross-compiler
279 tolerance. */
280#if '0'!=240
281make an error "Character set is not EBCDIC"
282#endif ],
283[ # TryCompile action if true
284cf_cv_ebcdic=yes ],
285[ # TryCompile action if false
286cf_cv_ebcdic=no])
287# end of TryCompile ])
288# end of CacheVal CvEbcdic
289AC_MSG_RESULT($cf_cv_ebcdic)
290case "$cf_cv_ebcdic" in #(vi
291 yes) AC_DEFINE(EBCDIC)
292 line_break='"\\n"'
293 ;;
294 *) line_break='"\\012"';;
295esac
296AC_SUBST(line_break)
297
298if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200299dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
300AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000301case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200302 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000303 dnl If using cc the environment variable _CC_CCMODE must be
304 dnl set to "1", so that some compiler extensions are enabled.
305 dnl If using c89 the environment variable is named _CC_C89MODE.
306 dnl Note: compile with c89 never tested.
307 if test "$CC" = "cc"; then
308 ccm="$_CC_CCMODE"
309 ccn="CC"
310 else
311 if test "$CC" = "c89"; then
312 ccm="$_CC_C89MODE"
313 ccn="C89"
314 else
315 ccm=1
316 fi
317 fi
318 if test "$ccm" != "1"; then
319 echo ""
320 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200321 echo " On z/OS Unix, the environment variable"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000322 echo " __CC_${ccn}MODE must be set to \"1\"!"
323 echo " Do:"
324 echo " export _CC_${ccn}MODE=1"
325 echo " and then call configure again."
326 echo "------------------------------------------"
327 exit 1
328 fi
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200329 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)";
330 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000331 AC_MSG_RESULT(yes)
332 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200333 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000334 AC_MSG_RESULT(no)
335 ;;
336esac
337fi
338
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200339dnl Set QUOTESED. Needs additional backslashes on zOS
340if test "$zOSUnix" = "yes"; then
341 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
342else
343 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
344fi
345AC_SUBST(QUOTESED)
346
347
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000348dnl Link with -lselinux for SELinux stuff; if not found
349AC_MSG_CHECKING(--disable-selinux argument)
350AC_ARG_ENABLE(selinux,
351 [ --disable-selinux Don't check for SELinux support.],
352 , enable_selinux="yes")
353if test "$enable_selinux" = "yes"; then
354 AC_MSG_RESULT(no)
355 AC_CHECK_LIB(selinux, is_selinux_enabled,
356 [LIBS="$LIBS -lselinux"
357 AC_DEFINE(HAVE_SELINUX)])
358else
359 AC_MSG_RESULT(yes)
360fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000361
362dnl Check user requested features.
363
364AC_MSG_CHECKING(--with-features argument)
365AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
366 features="$withval"; AC_MSG_RESULT($features),
367 features="normal"; AC_MSG_RESULT(Defaulting to normal))
368
369dovimdiff=""
370dogvimdiff=""
371case "$features" in
372 tiny) AC_DEFINE(FEAT_TINY) ;;
373 small) AC_DEFINE(FEAT_SMALL) ;;
374 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
375 dogvimdiff="installgvimdiff" ;;
376 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
377 dogvimdiff="installgvimdiff" ;;
378 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
379 dogvimdiff="installgvimdiff" ;;
380 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
381esac
382
383AC_SUBST(dovimdiff)
384AC_SUBST(dogvimdiff)
385
386AC_MSG_CHECKING(--with-compiledby argument)
387AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
388 compiledby="$withval"; AC_MSG_RESULT($withval),
389 compiledby=""; AC_MSG_RESULT(no))
390AC_SUBST(compiledby)
391
392AC_MSG_CHECKING(--disable-xsmp argument)
393AC_ARG_ENABLE(xsmp,
394 [ --disable-xsmp Disable XSMP session management],
395 , enable_xsmp="yes")
396
397if test "$enable_xsmp" = "yes"; then
398 AC_MSG_RESULT(no)
399 AC_MSG_CHECKING(--disable-xsmp-interact argument)
400 AC_ARG_ENABLE(xsmp-interact,
401 [ --disable-xsmp-interact Disable XSMP interaction],
402 , enable_xsmp_interact="yes")
403 if test "$enable_xsmp_interact" = "yes"; then
404 AC_MSG_RESULT(no)
405 AC_DEFINE(USE_XSMP_INTERACT)
406 else
407 AC_MSG_RESULT(yes)
408 fi
409else
410 AC_MSG_RESULT(yes)
411fi
412
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200413dnl Check for Lua feature.
414AC_MSG_CHECKING(--enable-luainterp argument)
415AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200416 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200417 [enable_luainterp="no"])
418AC_MSG_RESULT($enable_luainterp)
419
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200420if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200421 dnl -- find the lua executable
422 AC_SUBST(vi_cv_path_lua)
423
424 AC_MSG_CHECKING(--with-lua-prefix argument)
425 AC_ARG_WITH(lua_prefix,
426 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
427 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200428 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200429
430 if test "X$with_lua_prefix" != "X"; then
431 vi_cv_path_lua_pfx="$with_lua_prefix"
432 else
433 AC_MSG_CHECKING(LUA_PREFIX environment var)
434 if test "X$LUA_PREFIX" != "X"; then
435 AC_MSG_RESULT("$LUA_PREFIX")
436 vi_cv_path_lua_pfx="$LUA_PREFIX"
437 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200438 AC_MSG_RESULT([not set, default to /usr])
439 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200440 fi
441 fi
442
443 LUA_INC=
444 if test "X$vi_cv_path_lua_pfx" != "X"; then
445 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
446 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200447 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200448 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200449 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200450 dnl -- try to find Lua executable
451 AC_PATH_PROG(vi_cv_path_lua, lua)
452 if test "X$vi_cv_path_lua" != "X"; then
453 dnl -- find Lua version
454 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
Bram Moolenaar8220a682010-07-25 13:12:49 +0200455 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200456 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
457 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200458 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200459 LUA_INC=/lua$vi_cv_version_lua
460 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200461 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200462 vi_cv_path_lua_pfx=
463 fi
464 fi
465 fi
466 fi
467
468 if test "X$vi_cv_path_lua_pfx" != "X"; then
469 if test "X$vi_cv_version_lua" != "X"; then
470 dnl Test alternate location using version
471 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
472 else
473 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
474 fi
475 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
476 LUA_SRC="if_lua.c"
477 LUA_OBJ="objects/if_lua.o"
478 LUA_PRO="if_lua.pro"
479 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200480 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar8220a682010-07-25 13:12:49 +0200481 dnl Determine the SONAME for the current version, but fallback to
482 dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
483 for i in 0 1 2 3 4 5 6 7 8 9; do
484 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then
485 LUA_SONAME=".$i"
486 break
487 fi
488 done
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200489 AC_DEFINE(DYNAMIC_LUA)
490 LUA_LIBS=""
Bram Moolenaar8220a682010-07-25 13:12:49 +0200491 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200492 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200493 fi
494 AC_SUBST(LUA_SRC)
495 AC_SUBST(LUA_OBJ)
496 AC_SUBST(LUA_PRO)
497 AC_SUBST(LUA_LIBS)
498 AC_SUBST(LUA_CFLAGS)
499fi
500
501
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000502dnl Check for MzScheme feature.
503AC_MSG_CHECKING(--enable-mzschemeinterp argument)
504AC_ARG_ENABLE(mzschemeinterp,
505 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
506 [enable_mzschemeinterp="no"])
507AC_MSG_RESULT($enable_mzschemeinterp)
508
509if test "$enable_mzschemeinterp" = "yes"; then
510 dnl -- find the mzscheme executable
511 AC_SUBST(vi_cv_path_mzscheme)
512
513 AC_MSG_CHECKING(--with-plthome argument)
514 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000515 [ --with-plthome=PLTHOME Use PLTHOME.],
516 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000517 with_plthome="";AC_MSG_RESULT("no"))
518
519 if test "X$with_plthome" != "X"; then
520 vi_cv_path_mzscheme_pfx="$with_plthome"
521 else
522 AC_MSG_CHECKING(PLTHOME environment var)
523 if test "X$PLTHOME" != "X"; then
524 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000525 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000526 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000527 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000528 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000529 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000530
531 dnl resolve symbolic link, the executable is often elsewhere and there
532 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000533 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000534 lsout=`ls -l $vi_cv_path_mzscheme`
535 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
536 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
537 fi
538 fi
539
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000540 if test "X$vi_cv_path_mzscheme" != "X"; then
541 dnl -- find where MzScheme thinks it was installed
542 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000543 dnl different versions of MzScheme differ in command line processing
544 dnl use universal approach
545 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000546 (build-path (call-with-values \
547 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000548 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
549 dnl Remove a trailing slash
550 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
551 sed -e 's+/$++'` ])
552 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000553 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000554 fi
555 fi
556
Bram Moolenaard7afed32007-05-06 13:26:41 +0000557 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000558 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
559 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
560 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000561 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
562 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000563 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000564 AC_MSG_RESULT(no)
565 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000566 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000567 AC_MSG_RESULT(yes)
568 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000569 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000570 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100571 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
572 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000573 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100574 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000575 else
576 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100577 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
578 if test -f /usr/include/plt/scheme.h; then
579 AC_MSG_RESULT(yes)
580 SCHEME_INC=/usr/include/plt
581 else
582 AC_MSG_RESULT(no)
583 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
584 if test -f /usr/include/racket/scheme.h; then
585 AC_MSG_RESULT(yes)
586 SCHEME_INC=/usr/include/racket
587 else
588 AC_MSG_RESULT(no)
589 vi_cv_path_mzscheme_pfx=
590 fi
591 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000592 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000593 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000594 fi
595 fi
596
597 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000598 if test "x$MACOSX" = "xyes"; then
599 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000600 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
601 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
602 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100603 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
604 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
605 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
606 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
607 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
608 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000609 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 +0000610 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000611 dnl Using shared objects
612 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
613 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
614 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100615 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
616 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
617 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
618 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
619 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000620 else
621 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
622 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000623 if test "$GCC" = yes; then
624 dnl Make Vim remember the path to the library. For when it's not in
625 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000626 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000627 elif test "`(uname) 2>/dev/null`" = SunOS &&
628 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000629 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000630 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000631 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000632 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
633 SCHEME_COLLECTS=lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100634 else
635 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
636 SCHEME_COLLECTS=lib/racket/
637 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000638 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000639 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000640 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100641 else
642 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
643 MZSCHEME_EXTRA="mzscheme_base.c"
644 fi
645 fi
646 if test "X$MZSCHEME_EXTRA" != "X" ; then
647 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000648 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
649 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
650 fi
651 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000652 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000653 MZSCHEME_SRC="if_mzsch.c"
654 MZSCHEME_OBJ="objects/if_mzsch.o"
655 MZSCHEME_PRO="if_mzsch.pro"
656 AC_DEFINE(FEAT_MZSCHEME)
657 fi
658 AC_SUBST(MZSCHEME_SRC)
659 AC_SUBST(MZSCHEME_OBJ)
660 AC_SUBST(MZSCHEME_PRO)
661 AC_SUBST(MZSCHEME_LIBS)
662 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000663 AC_SUBST(MZSCHEME_EXTRA)
664 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000665fi
666
667
Bram Moolenaar071d4272004-06-13 20:20:40 +0000668AC_MSG_CHECKING(--enable-perlinterp argument)
669AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200670 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000671 [enable_perlinterp="no"])
672AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200673if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000674 AC_SUBST(vi_cv_path_perl)
675 AC_PATH_PROG(vi_cv_path_perl, perl)
676 if test "X$vi_cv_path_perl" != "X"; then
677 AC_MSG_CHECKING(Perl version)
678 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
679 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200680 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000681 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
682 badthreads=no
683 else
684 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
685 eval `$vi_cv_path_perl -V:use5005threads`
686 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
687 badthreads=no
688 else
689 badthreads=yes
690 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
691 fi
692 else
693 badthreads=yes
694 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
695 fi
696 fi
697 if test $badthreads = no; then
698 AC_MSG_RESULT(OK)
699 eval `$vi_cv_path_perl -V:shrpenv`
700 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
701 shrpenv=""
702 fi
703 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
704 AC_SUBST(vi_cv_perllib)
705 dnl Remove "-fno-something", it breaks using cproto.
706 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
707 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
708 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
709 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
710 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
711 -e 's/-bE:perl.exp//' -e 's/-lc //'`
712 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
713 dnl a test in configure may fail because of that.
714 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
715 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
716
717 dnl check that compiling a simple program still works with the flags
718 dnl added for Perl.
719 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
720 cflags_save=$CFLAGS
721 libs_save=$LIBS
722 ldflags_save=$LDFLAGS
723 CFLAGS="$CFLAGS $perlcppflags"
724 LIBS="$LIBS $perllibs"
725 LDFLAGS="$perlldflags $LDFLAGS"
726 AC_TRY_LINK(,[ ],
727 AC_MSG_RESULT(yes); perl_ok=yes,
728 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
729 CFLAGS=$cflags_save
730 LIBS=$libs_save
731 LDFLAGS=$ldflags_save
732 if test $perl_ok = yes; then
733 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000734 dnl remove -pipe and -Wxxx, it confuses cproto
735 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000736 fi
737 if test "X$perlldflags" != "X"; then
738 LDFLAGS="$perlldflags $LDFLAGS"
739 fi
740 PERL_LIBS=$perllibs
741 PERL_SRC="auto/if_perl.c if_perlsfio.c"
742 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
743 PERL_PRO="if_perl.pro if_perlsfio.pro"
744 AC_DEFINE(FEAT_PERL)
745 fi
746 fi
747 else
748 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
749 fi
750 fi
751
752 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000753 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000754 dir=/System/Library/Perl
755 darwindir=$dir/darwin
756 if test -d $darwindir; then
757 PERL=/usr/bin/perl
758 else
759 dnl Mac OS X 10.3
760 dir=/System/Library/Perl/5.8.1
761 darwindir=$dir/darwin-thread-multi-2level
762 if test -d $darwindir; then
763 PERL=/usr/bin/perl
764 fi
765 fi
766 if test -n "$PERL"; then
767 PERL_DIR="$dir"
768 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
769 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
770 PERL_LIBS="-L$darwindir/CORE -lperl"
771 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200772 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
773 dnl be included if requested by passing --with-mac-arch to
774 dnl configure, so strip these flags first (if present)
775 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
776 PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000777 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200778 if test "$enable_perlinterp" = "dynamic"; then
779 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
780 AC_DEFINE(DYNAMIC_PERL)
781 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
782 fi
783 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000784fi
785AC_SUBST(shrpenv)
786AC_SUBST(PERL_SRC)
787AC_SUBST(PERL_OBJ)
788AC_SUBST(PERL_PRO)
789AC_SUBST(PERL_CFLAGS)
790AC_SUBST(PERL_LIBS)
791
792AC_MSG_CHECKING(--enable-pythoninterp argument)
793AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200794 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000795 [enable_pythoninterp="no"])
796AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200797if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000798 dnl -- find the python executable
799 AC_PATH_PROG(vi_cv_path_python, python)
800 if test "X$vi_cv_path_python" != "X"; then
801
802 dnl -- get its version number
803 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
804 [[vi_cv_var_python_version=`
805 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
806 ]])
807
808 dnl -- it must be at least version 1.4
809 AC_MSG_CHECKING(Python is 1.4 or better)
810 if ${vi_cv_path_python} -c \
811 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
812 then
813 AC_MSG_RESULT(yep)
814
815 dnl -- find where python thinks it was installed
816 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
817 [ vi_cv_path_python_pfx=`
818 ${vi_cv_path_python} -c \
819 "import sys; print sys.prefix"` ])
820
821 dnl -- and where it thinks it runs
822 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
823 [ vi_cv_path_python_epfx=`
824 ${vi_cv_path_python} -c \
825 "import sys; print sys.exec_prefix"` ])
826
827 dnl -- python's internal library path
828
829 AC_CACHE_VAL(vi_cv_path_pythonpath,
830 [ vi_cv_path_pythonpath=`
831 unset PYTHONPATH;
832 ${vi_cv_path_python} -c \
833 "import sys, string; print string.join(sys.path,':')"` ])
834
835 dnl -- where the Python implementation library archives are
836
837 AC_ARG_WITH(python-config-dir,
838 [ --with-python-config-dir=PATH Python's config directory],
839 [ vi_cv_path_python_conf="${withval}" ] )
840
841 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
842 [
843 vi_cv_path_python_conf=
844 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000845 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000846 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
847 if test -d "$d" && test -f "$d/config.c"; then
848 vi_cv_path_python_conf="$d"
849 fi
850 done
851 done
852 ])
853
854 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
855
856 if test "X$PYTHON_CONFDIR" = "X"; then
857 AC_MSG_RESULT([can't find it!])
858 else
859
860 dnl -- we need to examine Python's config/Makefile too
861 dnl see what the interpreter is built from
862 AC_CACHE_VAL(vi_cv_path_python_plibs,
863 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000864 pwd=`pwd`
865 tmp_mkf="$pwd/config-PyMake$$"
866 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000867__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200868 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000869 @echo "python_LIBS='$(LIBS)'"
870 @echo "python_SYSLIBS='$(SYSLIBS)'"
871 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200872 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000873eof
874 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000875 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
876 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000877 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
878 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
879 vi_cv_path_python_plibs="-framework Python"
880 else
881 if test "${vi_cv_var_python_version}" = "1.4"; then
882 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
883 else
884 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
885 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200886 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_BASEMODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000887 dnl remove -ltermcap, it can conflict with an earlier -lncurses
888 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
889 fi
890 ])
891
892 PYTHON_LIBS="${vi_cv_path_python_plibs}"
893 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
894 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
895 else
896 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}"
897 fi
898 PYTHON_SRC="if_python.c"
899 dnl For Mac OSX 10.2 config.o is included in the Python library.
900 if test "x$MACOSX" = "xyes"; then
901 PYTHON_OBJ="objects/if_python.o"
902 else
903 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
904 fi
905 if test "${vi_cv_var_python_version}" = "1.4"; then
906 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
907 fi
908 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
909
910 dnl On FreeBSD linking with "-pthread" is required to use threads.
911 dnl _THREAD_SAFE must be used for compiling then.
912 dnl The "-pthread" is added to $LIBS, so that the following check for
913 dnl sigaltstack() will look in libc_r (it's there in libc!).
914 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
915 dnl will then define target-specific defines, e.g., -D_REENTRANT.
916 dnl Don't do this for Mac OSX, -pthread will generate a warning.
917 AC_MSG_CHECKING([if -pthread should be used])
918 threadsafe_flag=
919 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000920 dnl if test "x$MACOSX" != "xyes"; then
921 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000922 test "$GCC" = yes && threadsafe_flag="-pthread"
923 if test "`(uname) 2>/dev/null`" = FreeBSD; then
924 threadsafe_flag="-D_THREAD_SAFE"
925 thread_lib="-pthread"
926 fi
927 fi
928 libs_save_old=$LIBS
929 if test -n "$threadsafe_flag"; then
930 cflags_save=$CFLAGS
931 CFLAGS="$CFLAGS $threadsafe_flag"
932 LIBS="$LIBS $thread_lib"
933 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200934 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000935 AC_MSG_RESULT(no); LIBS=$libs_save_old
936 )
937 CFLAGS=$cflags_save
938 else
939 AC_MSG_RESULT(no)
940 fi
941
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200942 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000943 dnl added for Python.
944 AC_MSG_CHECKING([if compile and link flags for Python are sane])
945 cflags_save=$CFLAGS
946 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200947 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000948 LIBS="$LIBS $PYTHON_LIBS"
949 AC_TRY_LINK(,[ ],
950 AC_MSG_RESULT(yes); python_ok=yes,
951 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
952 CFLAGS=$cflags_save
953 LIBS=$libs_save
954 if test $python_ok = yes; then
955 AC_DEFINE(FEAT_PYTHON)
956 else
957 LIBS=$libs_save_old
958 PYTHON_SRC=
959 PYTHON_OBJ=
960 PYTHON_LIBS=
961 PYTHON_CFLAGS=
962 fi
963
964 fi
965 else
966 AC_MSG_RESULT(too old)
967 fi
968 fi
969fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200970
Bram Moolenaar071d4272004-06-13 20:20:40 +0000971AC_SUBST(PYTHON_CONFDIR)
972AC_SUBST(PYTHON_LIBS)
973AC_SUBST(PYTHON_GETPATH_CFLAGS)
974AC_SUBST(PYTHON_CFLAGS)
975AC_SUBST(PYTHON_SRC)
976AC_SUBST(PYTHON_OBJ)
977
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200978
979AC_MSG_CHECKING(--enable-python3interp argument)
980AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200981 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200982 [enable_python3interp="no"])
983AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200984if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200985 dnl -- find the python3 executable
986 AC_PATH_PROG(vi_cv_path_python3, python3)
987 if test "X$vi_cv_path_python3" != "X"; then
988
989 dnl -- get its version number
990 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
991 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +0200992 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200993 ]])
994
995 dnl -- find where python3 thinks it was installed
996 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
997 [ vi_cv_path_python3_pfx=`
998 ${vi_cv_path_python3} -c \
999 "import sys; print(sys.prefix)"` ])
1000
1001 dnl -- and where it thinks it runs
1002 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1003 [ vi_cv_path_python3_epfx=`
1004 ${vi_cv_path_python3} -c \
1005 "import sys; print(sys.exec_prefix)"` ])
1006
1007 dnl -- python3's internal library path
1008
1009 AC_CACHE_VAL(vi_cv_path_python3path,
1010 [ vi_cv_path_python3path=`
1011 unset PYTHONPATH;
1012 ${vi_cv_path_python3} -c \
1013 "import sys, string; print(':'.join(sys.path))"` ])
1014
1015 dnl -- where the Python implementation library archives are
1016
1017 AC_ARG_WITH(python3-config-dir,
1018 [ --with-python3-config-dir=PATH Python's config directory],
1019 [ vi_cv_path_python3_conf="${withval}" ] )
1020
1021 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1022 [
1023 vi_cv_path_python3_conf=
1024 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001025 for subdir in lib64 lib share; do
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001026 d="${path}/${subdir}/python${vi_cv_var_python3_version}/config"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001027 if test -d "$d" && test -f "$d/config.c"; then
1028 vi_cv_path_python3_conf="$d"
1029 fi
1030 done
1031 done
1032 ])
1033
1034 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1035
1036 if test "X$PYTHON3_CONFDIR" = "X"; then
1037 AC_MSG_RESULT([can't find it!])
1038 else
1039
1040 dnl -- we need to examine Python's config/Makefile too
1041 dnl see what the interpreter is built from
1042 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1043 [
1044 pwd=`pwd`
1045 tmp_mkf="$pwd/config-PyMake$$"
1046 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1047__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001048 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001049 @echo "python3_LIBS='$(LIBS)'"
1050 @echo "python3_SYSLIBS='$(SYSLIBS)'"
1051 @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001052 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001053eof
1054 dnl -- delete the lines from make about Entering/Leaving directory
1055 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1056 rm -f -- "${tmp_mkf}"
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001057 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
1058 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001059 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1060 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1061 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1062 ])
1063
1064 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1065 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001066 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001067 else
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001068 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001069 fi
1070 PYTHON3_SRC="if_python3.c"
1071 dnl For Mac OSX 10.2 config.o is included in the Python library.
1072 if test "x$MACOSX" = "xyes"; then
1073 PYTHON3_OBJ="objects/if_python3.o"
1074 else
1075 PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
1076 fi
1077
1078 dnl On FreeBSD linking with "-pthread" is required to use threads.
1079 dnl _THREAD_SAFE must be used for compiling then.
1080 dnl The "-pthread" is added to $LIBS, so that the following check for
1081 dnl sigaltstack() will look in libc_r (it's there in libc!).
1082 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1083 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1084 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1085 AC_MSG_CHECKING([if -pthread should be used])
1086 threadsafe_flag=
1087 thread_lib=
1088 dnl if test "x$MACOSX" != "xyes"; then
1089 if test "`(uname) 2>/dev/null`" != Darwin; then
1090 test "$GCC" = yes && threadsafe_flag="-pthread"
1091 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1092 threadsafe_flag="-D_THREAD_SAFE"
1093 thread_lib="-pthread"
1094 fi
1095 fi
1096 libs_save_old=$LIBS
1097 if test -n "$threadsafe_flag"; then
1098 cflags_save=$CFLAGS
1099 CFLAGS="$CFLAGS $threadsafe_flag"
1100 LIBS="$LIBS $thread_lib"
1101 AC_TRY_LINK(,[ ],
1102 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1103 AC_MSG_RESULT(no); LIBS=$libs_save_old
1104 )
1105 CFLAGS=$cflags_save
1106 else
1107 AC_MSG_RESULT(no)
1108 fi
1109
1110 dnl check that compiling a simple program still works with the flags
1111 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001112 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001113 cflags_save=$CFLAGS
1114 libs_save=$LIBS
1115 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1116 LIBS="$LIBS $PYTHON3_LIBS"
1117 AC_TRY_LINK(,[ ],
1118 AC_MSG_RESULT(yes); python3_ok=yes,
1119 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1120 CFLAGS=$cflags_save
1121 LIBS=$libs_save
1122 if test "$python3_ok" = yes; then
1123 AC_DEFINE(FEAT_PYTHON3)
1124 else
1125 LIBS=$libs_save_old
1126 PYTHON3_SRC=
1127 PYTHON3_OBJ=
1128 PYTHON3_LIBS=
1129 PYTHON3_CFLAGS=
1130 fi
1131 fi
1132 fi
1133fi
1134
1135AC_SUBST(PYTHON3_CONFDIR)
1136AC_SUBST(PYTHON3_LIBS)
1137AC_SUBST(PYTHON3_CFLAGS)
1138AC_SUBST(PYTHON3_SRC)
1139AC_SUBST(PYTHON3_OBJ)
1140
1141dnl if python2.x and python3.x are enabled one can only link in code
1142dnl with dlopen(), dlsym(), dlclose()
1143if test "$python_ok" = yes && test "$python3_ok" = yes; then
1144 AC_DEFINE(DYNAMIC_PYTHON)
1145 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001146 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL)
1147 cflags_save=$CFLAGS
1148 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1149 ldflags_save=$LDFLAGS
1150 LDFLAGS="$LDFLAGS -ldl"
1151 AC_RUN_IFELSE([
1152 #include <dlfcn.h>
1153 /* If this program fails, then RTLD_GLOBAL is needed.
1154 * RTLD_GLOBAL will be used and then it is not possible to
1155 * have both python versions enabled in the same vim instance.
1156 * Only the first pyhton version used will be switched on.
1157 */
1158
1159 int no_rtl_global_needed_for(char *python_instsoname)
1160 {
1161 int needed = 0;
1162 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1163 if (pylib != 0)
1164 {
1165 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1166 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1167 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1168 (*init)();
1169 needed = (*simple)("import termios") == -1;
1170 (*final)();
1171 dlclose(pylib);
1172 }
1173 return !needed;
1174 }
1175
1176 int main(int argc, char** argv)
1177 {
1178 int not_needed = 0;
1179 if (no_rtl_global_needed_for("libpython2.7.so.1.0") && no_rtl_global_needed_for("libpython3.1.so.1.0"))
1180 not_needed = 1;
1181 return !not_needed;
1182 }],
1183 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1184 CFLAGS=$cflags_save
1185 LDFLAGS=$ldflags_save
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001186 PYTHON_SRC="if_python.c"
1187 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001188 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001189 PYTHON_LIBS=
1190 PYTHON3_SRC="if_python3.c"
1191 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001192 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001193 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001194elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1195 AC_DEFINE(DYNAMIC_PYTHON)
1196 PYTHON_SRC="if_python.c"
1197 PYTHON_OBJ="objects/if_python.o"
1198 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1199 PYTHON_LIBS=
1200elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1201 AC_DEFINE(DYNAMIC_PYTHON3)
1202 PYTHON3_SRC="if_python3.c"
1203 PYTHON3_OBJ="objects/if_python3.o"
1204 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1205 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001206fi
1207
Bram Moolenaar071d4272004-06-13 20:20:40 +00001208AC_MSG_CHECKING(--enable-tclinterp argument)
1209AC_ARG_ENABLE(tclinterp,
1210 [ --enable-tclinterp Include Tcl interpreter.], ,
1211 [enable_tclinterp="no"])
1212AC_MSG_RESULT($enable_tclinterp)
1213
1214if test "$enable_tclinterp" = "yes"; then
1215
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001216 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001217 AC_MSG_CHECKING(--with-tclsh argument)
1218 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1219 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001220 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001221 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1222 AC_SUBST(vi_cv_path_tcl)
1223
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001224 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1225 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1226 tclsh_name="tclsh8.4"
1227 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1228 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001229 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001230 tclsh_name="tclsh8.2"
1231 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1232 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001233 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1234 tclsh_name="tclsh8.0"
1235 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1236 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001237 dnl still didn't find it, try without version number
1238 if test "X$vi_cv_path_tcl" = "X"; then
1239 tclsh_name="tclsh"
1240 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1241 fi
1242 if test "X$vi_cv_path_tcl" != "X"; then
1243 AC_MSG_CHECKING(Tcl version)
1244 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1245 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1246 AC_MSG_RESULT($tclver - OK);
1247 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 -`
1248
1249 AC_MSG_CHECKING(for location of Tcl include)
1250 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001251 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 +00001252 else
1253 dnl For Mac OS X 10.3, use the OS-provided framework location
1254 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1255 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001256 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001257 for try in $tclinc; do
1258 if test -f "$try/tcl.h"; then
1259 AC_MSG_RESULT($try/tcl.h)
1260 TCL_INC=$try
1261 break
1262 fi
1263 done
1264 if test -z "$TCL_INC"; then
1265 AC_MSG_RESULT(<not found>)
1266 SKIP_TCL=YES
1267 fi
1268 if test -z "$SKIP_TCL"; then
1269 AC_MSG_CHECKING(for location of tclConfig.sh script)
1270 if test "x$MACOSX" != "xyes"; then
1271 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001272 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001273 else
1274 dnl For Mac OS X 10.3, use the OS-provided framework location
1275 tclcnf="/System/Library/Frameworks/Tcl.framework"
1276 fi
1277 for try in $tclcnf; do
1278 if test -f $try/tclConfig.sh; then
1279 AC_MSG_RESULT($try/tclConfig.sh)
1280 . $try/tclConfig.sh
1281 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1282 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1283 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001284 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001285 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 +00001286 break
1287 fi
1288 done
1289 if test -z "$TCL_LIBS"; then
1290 AC_MSG_RESULT(<not found>)
1291 AC_MSG_CHECKING(for Tcl library by myself)
1292 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001293 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001294 for ext in .so .a ; do
1295 for ver in "" $tclver ; do
1296 for try in $tcllib ; do
1297 trylib=tcl$ver$ext
1298 if test -f $try/lib$trylib ; then
1299 AC_MSG_RESULT($try/lib$trylib)
1300 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1301 if test "`(uname) 2>/dev/null`" = SunOS &&
1302 uname -r | grep '^5' >/dev/null; then
1303 TCL_LIBS="$TCL_LIBS -R $try"
1304 fi
1305 break 3
1306 fi
1307 done
1308 done
1309 done
1310 if test -z "$TCL_LIBS"; then
1311 AC_MSG_RESULT(<not found>)
1312 SKIP_TCL=YES
1313 fi
1314 fi
1315 if test -z "$SKIP_TCL"; then
1316 AC_DEFINE(FEAT_TCL)
1317 TCL_SRC=if_tcl.c
1318 TCL_OBJ=objects/if_tcl.o
1319 TCL_PRO=if_tcl.pro
1320 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1321 fi
1322 fi
1323 else
1324 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1325 fi
1326 fi
1327fi
1328AC_SUBST(TCL_SRC)
1329AC_SUBST(TCL_OBJ)
1330AC_SUBST(TCL_PRO)
1331AC_SUBST(TCL_CFLAGS)
1332AC_SUBST(TCL_LIBS)
1333
1334AC_MSG_CHECKING(--enable-rubyinterp argument)
1335AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001336 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001337 [enable_rubyinterp="no"])
1338AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001339if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001340 AC_MSG_CHECKING(--with-ruby-command argument)
1341 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1342 RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
1343 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001344 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001345 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001346 if test "X$vi_cv_path_ruby" != "X"; then
1347 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001348 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 +00001349 AC_MSG_RESULT(OK)
1350 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001351 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001352 if test "X$rubyhdrdir" != "X"; then
1353 AC_MSG_RESULT($rubyhdrdir)
1354 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001355 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1356 if test -d "$rubyhdrdir/$rubyarch"; then
1357 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1358 fi
1359 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1360 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001361 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1362 if test "X$rubylibs" != "X"; then
1363 RUBY_LIBS="$rubylibs"
1364 fi
1365 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
1366 if test -f "$rubyhdrdir/$librubyarg"; then
1367 librubyarg="$rubyhdrdir/$librubyarg"
1368 else
1369 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1370 if test -f "$rubylibdir/$librubyarg"; then
1371 librubyarg="$rubylibdir/$librubyarg"
1372 elif test "$librubyarg" = "libruby.a"; then
1373 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1374 librubyarg="-lruby"
1375 else
1376 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
1377 fi
1378 fi
1379
1380 if test "X$librubyarg" != "X"; then
1381 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1382 fi
1383 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1384 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001385 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1386 dnl be included if requested by passing --with-mac-arch to
1387 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001388 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001389 if test "X$rubyldflags" != "X"; then
1390 LDFLAGS="$rubyldflags $LDFLAGS"
1391 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001392 fi
1393 RUBY_SRC="if_ruby.c"
1394 RUBY_OBJ="objects/if_ruby.o"
1395 RUBY_PRO="if_ruby.pro"
1396 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001397 if test "$enable_rubyinterp" = "dynamic"; then
1398 libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
1399 AC_DEFINE(DYNAMIC_RUBY)
1400 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1401 RUBY_LIBS=
1402 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001403 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001404 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001405 fi
1406 else
1407 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1408 fi
1409 fi
1410fi
1411AC_SUBST(RUBY_SRC)
1412AC_SUBST(RUBY_OBJ)
1413AC_SUBST(RUBY_PRO)
1414AC_SUBST(RUBY_CFLAGS)
1415AC_SUBST(RUBY_LIBS)
1416
1417AC_MSG_CHECKING(--enable-cscope argument)
1418AC_ARG_ENABLE(cscope,
1419 [ --enable-cscope Include cscope interface.], ,
1420 [enable_cscope="no"])
1421AC_MSG_RESULT($enable_cscope)
1422if test "$enable_cscope" = "yes"; then
1423 AC_DEFINE(FEAT_CSCOPE)
1424fi
1425
1426AC_MSG_CHECKING(--enable-workshop argument)
1427AC_ARG_ENABLE(workshop,
1428 [ --enable-workshop Include Sun Visual Workshop support.], ,
1429 [enable_workshop="no"])
1430AC_MSG_RESULT($enable_workshop)
1431if test "$enable_workshop" = "yes"; then
1432 AC_DEFINE(FEAT_SUN_WORKSHOP)
1433 WORKSHOP_SRC="workshop.c integration.c"
1434 AC_SUBST(WORKSHOP_SRC)
1435 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1436 AC_SUBST(WORKSHOP_OBJ)
1437 if test "${enable_gui-xxx}" = xxx; then
1438 enable_gui=motif
1439 fi
1440fi
1441
1442AC_MSG_CHECKING(--disable-netbeans argument)
1443AC_ARG_ENABLE(netbeans,
1444 [ --disable-netbeans Disable NetBeans integration support.],
1445 , [enable_netbeans="yes"])
1446if test "$enable_netbeans" = "yes"; then
1447 AC_MSG_RESULT(no)
1448 dnl On Solaris we need the socket and nsl library.
1449 AC_CHECK_LIB(socket, socket)
1450 AC_CHECK_LIB(nsl, gethostbyname)
1451 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1452 AC_TRY_LINK([
1453#include <stdio.h>
1454#include <stdlib.h>
1455#include <stdarg.h>
1456#include <fcntl.h>
1457#include <netdb.h>
1458#include <netinet/in.h>
1459#include <errno.h>
1460#include <sys/types.h>
1461#include <sys/socket.h>
1462 /* Check bitfields */
1463 struct nbbuf {
1464 unsigned int initDone:1;
1465 ushort signmaplen;
1466 };
1467 ], [
1468 /* Check creating a socket. */
1469 struct sockaddr_in server;
1470 (void)socket(AF_INET, SOCK_STREAM, 0);
1471 (void)htons(100);
1472 (void)gethostbyname("microsoft.com");
1473 if (errno == ECONNREFUSED)
1474 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1475 ],
1476 AC_MSG_RESULT(yes),
1477 AC_MSG_RESULT(no); enable_netbeans="no")
1478else
1479 AC_MSG_RESULT(yes)
1480fi
1481if test "$enable_netbeans" = "yes"; then
1482 AC_DEFINE(FEAT_NETBEANS_INTG)
1483 NETBEANS_SRC="netbeans.c"
1484 AC_SUBST(NETBEANS_SRC)
1485 NETBEANS_OBJ="objects/netbeans.o"
1486 AC_SUBST(NETBEANS_OBJ)
1487fi
1488
1489AC_MSG_CHECKING(--enable-sniff argument)
1490AC_ARG_ENABLE(sniff,
1491 [ --enable-sniff Include Sniff interface.], ,
1492 [enable_sniff="no"])
1493AC_MSG_RESULT($enable_sniff)
1494if test "$enable_sniff" = "yes"; then
1495 AC_DEFINE(FEAT_SNIFF)
1496 SNIFF_SRC="if_sniff.c"
1497 AC_SUBST(SNIFF_SRC)
1498 SNIFF_OBJ="objects/if_sniff.o"
1499 AC_SUBST(SNIFF_OBJ)
1500fi
1501
1502AC_MSG_CHECKING(--enable-multibyte argument)
1503AC_ARG_ENABLE(multibyte,
1504 [ --enable-multibyte Include multibyte editing support.], ,
1505 [enable_multibyte="no"])
1506AC_MSG_RESULT($enable_multibyte)
1507if test "$enable_multibyte" = "yes"; then
1508 AC_DEFINE(FEAT_MBYTE)
1509fi
1510
1511AC_MSG_CHECKING(--enable-hangulinput argument)
1512AC_ARG_ENABLE(hangulinput,
1513 [ --enable-hangulinput Include Hangul input support.], ,
1514 [enable_hangulinput="no"])
1515AC_MSG_RESULT($enable_hangulinput)
1516
1517AC_MSG_CHECKING(--enable-xim argument)
1518AC_ARG_ENABLE(xim,
1519 [ --enable-xim Include XIM input support.],
1520 AC_MSG_RESULT($enable_xim),
1521 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001522
1523AC_MSG_CHECKING(--enable-fontset argument)
1524AC_ARG_ENABLE(fontset,
1525 [ --enable-fontset Include X fontset output support.], ,
1526 [enable_fontset="no"])
1527AC_MSG_RESULT($enable_fontset)
1528dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1529
1530test -z "$with_x" && with_x=yes
1531test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1532if test "$with_x" = no; then
1533 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1534else
1535 dnl Do this check early, so that its failure can override user requests.
1536
1537 AC_PATH_PROG(xmkmfpath, xmkmf)
1538
1539 AC_PATH_XTRA
1540
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001541 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001542 dnl be compiled with a special option.
1543 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001544 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001545 CFLAGS="$CFLAGS -W c,dll"
1546 LDFLAGS="$LDFLAGS -W l,dll"
1547 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1548 fi
1549
1550 dnl On my HPUX system the X include dir is found, but the lib dir not.
1551 dnl This is a desparate try to fix this.
1552
1553 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1554 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1555 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1556 X_LIBS="$X_LIBS -L$x_libraries"
1557 if test "`(uname) 2>/dev/null`" = SunOS &&
1558 uname -r | grep '^5' >/dev/null; then
1559 X_LIBS="$X_LIBS -R $x_libraries"
1560 fi
1561 fi
1562
1563 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1564 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1565 AC_MSG_RESULT(Corrected X includes to $x_includes)
1566 X_CFLAGS="$X_CFLAGS -I$x_includes"
1567 fi
1568
1569 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1570 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1571 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1572 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1573 dnl Same for "-R/usr/lib ".
1574 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1575
1576
1577 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001578 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1579 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001580 AC_MSG_CHECKING(if X11 header files can be found)
1581 cflags_save=$CFLAGS
1582 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001583 AC_TRY_COMPILE([#include <X11/Xlib.h>
1584#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001585 AC_MSG_RESULT(yes),
1586 AC_MSG_RESULT(no); no_x=yes)
1587 CFLAGS=$cflags_save
1588
1589 if test "${no_x-no}" = yes; then
1590 with_x=no
1591 else
1592 AC_DEFINE(HAVE_X11)
1593 X_LIB="-lXt -lX11";
1594 AC_SUBST(X_LIB)
1595
1596 ac_save_LDFLAGS="$LDFLAGS"
1597 LDFLAGS="-L$x_libraries $LDFLAGS"
1598
1599 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1600 dnl For HP-UX 10.20 it must be before -lSM -lICE
1601 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1602 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1603
1604 dnl Some systems need -lnsl -lsocket when testing for ICE.
1605 dnl The check above doesn't do this, try here (again). Also needed to get
1606 dnl them after Xdmcp. link.sh will remove them when not needed.
1607 dnl Check for other function than above to avoid the cached value
1608 AC_CHECK_LIB(ICE, IceOpenConnection,
1609 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1610
1611 dnl Check for -lXpm (needed for some versions of Motif)
1612 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1613 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1614 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1615
1616 dnl Check that the X11 header files don't use implicit declarations
1617 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1618 cflags_save=$CFLAGS
1619 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1620 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1621 AC_MSG_RESULT(no),
1622 CFLAGS="$CFLAGS -Wno-implicit-int"
1623 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1624 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1625 AC_MSG_RESULT(test failed)
1626 )
1627 )
1628 CFLAGS=$cflags_save
1629
1630 LDFLAGS="$ac_save_LDFLAGS"
1631
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001632 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1633 AC_CACHE_VAL(ac_cv_small_wchar_t,
1634 [AC_TRY_RUN([
1635#include <X11/Xlib.h>
1636#if STDC_HEADERS
1637# include <stdlib.h>
1638# include <stddef.h>
1639#endif
1640 main()
1641 {
1642 if (sizeof(wchar_t) <= 2)
1643 exit(1);
1644 exit(0);
1645 }],
1646 ac_cv_small_wchar_t="no",
1647 ac_cv_small_wchar_t="yes",
1648 AC_MSG_ERROR(failed to compile test program))])
1649 AC_MSG_RESULT($ac_cv_small_wchar_t)
1650 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1651 AC_DEFINE(SMALL_WCHAR_T)
1652 fi
1653
Bram Moolenaar071d4272004-06-13 20:20:40 +00001654 fi
1655fi
1656
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001657test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001658
1659AC_MSG_CHECKING(--enable-gui argument)
1660AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001661 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk2/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00001662
1663dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1664dnl Do not use character classes for portability with old tools.
1665enable_gui_canon=`echo "_$enable_gui" | \
1666 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1667
1668dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001669SKIP_GTK2=YES
1670SKIP_GNOME=YES
1671SKIP_MOTIF=YES
1672SKIP_ATHENA=YES
1673SKIP_NEXTAW=YES
1674SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001675SKIP_CARBON=YES
1676GUITYPE=NONE
1677
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001678if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001679 SKIP_PHOTON=
1680 case "$enable_gui_canon" in
1681 no) AC_MSG_RESULT(no GUI support)
1682 SKIP_PHOTON=YES ;;
1683 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1684 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1685 photon) AC_MSG_RESULT(Photon GUI support) ;;
1686 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1687 SKIP_PHOTON=YES ;;
1688 esac
1689
1690elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1691 SKIP_CARBON=
1692 case "$enable_gui_canon" in
1693 no) AC_MSG_RESULT(no GUI support)
1694 SKIP_CARBON=YES ;;
1695 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001696 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1697 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001698 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1699 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1700 SKIP_CARBON=YES ;;
1701 esac
1702
1703else
1704
Bram Moolenaar071d4272004-06-13 20:20:40 +00001705 case "$enable_gui_canon" in
1706 no|none) AC_MSG_RESULT(no GUI support) ;;
1707 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001708 SKIP_GTK2=
1709 SKIP_GNOME=
1710 SKIP_MOTIF=
1711 SKIP_ATHENA=
1712 SKIP_NEXTAW=
1713 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001714 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001715 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001716 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1717 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001718 SKIP_GTK2=;;
1719 motif) AC_MSG_RESULT(Motif GUI support)
1720 SKIP_MOTIF=;;
1721 athena) AC_MSG_RESULT(Athena GUI support)
1722 SKIP_ATHENA=;;
1723 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1724 SKIP_NEXTAW=;;
1725 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1726 esac
1727
1728fi
1729
Bram Moolenaar071d4272004-06-13 20:20:40 +00001730if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1731 -a "$enable_gui_canon" != "gnome2"; then
1732 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1733 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001734 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001735 , enable_gtk2_check="yes")
1736 AC_MSG_RESULT($enable_gtk2_check)
1737 if test "x$enable_gtk2_check" = "xno"; then
1738 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001739 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001740 fi
1741fi
1742
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001743if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001744 AC_MSG_CHECKING(whether or not to look for GNOME)
1745 AC_ARG_ENABLE(gnome-check,
1746 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1747 , enable_gnome_check="no")
1748 AC_MSG_RESULT($enable_gnome_check)
1749 if test "x$enable_gnome_check" = "xno"; then
1750 SKIP_GNOME=YES
1751 fi
1752fi
1753
1754if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1755 AC_MSG_CHECKING(whether or not to look for Motif)
1756 AC_ARG_ENABLE(motif-check,
1757 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1758 , enable_motif_check="yes")
1759 AC_MSG_RESULT($enable_motif_check)
1760 if test "x$enable_motif_check" = "xno"; then
1761 SKIP_MOTIF=YES
1762 fi
1763fi
1764
1765if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1766 AC_MSG_CHECKING(whether or not to look for Athena)
1767 AC_ARG_ENABLE(athena-check,
1768 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1769 , enable_athena_check="yes")
1770 AC_MSG_RESULT($enable_athena_check)
1771 if test "x$enable_athena_check" = "xno"; then
1772 SKIP_ATHENA=YES
1773 fi
1774fi
1775
1776if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1777 AC_MSG_CHECKING(whether or not to look for neXtaw)
1778 AC_ARG_ENABLE(nextaw-check,
1779 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1780 , enable_nextaw_check="yes")
1781 AC_MSG_RESULT($enable_nextaw_check);
1782 if test "x$enable_nextaw_check" = "xno"; then
1783 SKIP_NEXTAW=YES
1784 fi
1785fi
1786
1787if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1788 AC_MSG_CHECKING(whether or not to look for Carbon)
1789 AC_ARG_ENABLE(carbon-check,
1790 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1791 , enable_carbon_check="yes")
1792 AC_MSG_RESULT($enable_carbon_check);
1793 if test "x$enable_carbon_check" = "xno"; then
1794 SKIP_CARBON=YES
1795 fi
1796fi
1797
Bram Moolenaar843ee412004-06-30 16:16:41 +00001798
Bram Moolenaar071d4272004-06-13 20:20:40 +00001799if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1800 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001801 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001802 AC_MSG_RESULT(yes);
1803 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001804 if test "$VIMNAME" = "vim"; then
1805 VIMNAME=Vim
1806 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001807
Bram Moolenaar164fca32010-07-14 13:58:07 +02001808 if test "x$MACARCH" = "xboth"; then
1809 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1810 else
1811 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1812 fi
1813
Bram Moolenaar14716812006-05-04 21:54:08 +00001814 dnl Default install directory is not /usr/local
1815 if test x$prefix = xNONE; then
1816 prefix=/Applications
1817 fi
1818
1819 dnl Sorry for the hard coded default
1820 datadir='${prefix}/Vim.app/Contents/Resources'
1821
Bram Moolenaar071d4272004-06-13 20:20:40 +00001822 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001823 SKIP_GTK2=YES;
1824 SKIP_GNOME=YES;
1825 SKIP_MOTIF=YES;
1826 SKIP_ATHENA=YES;
1827 SKIP_NEXTAW=YES;
1828 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001829 SKIP_CARBON=YES
1830fi
1831
Bram Moolenaar071d4272004-06-13 20:20:40 +00001832dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001833dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001834dnl
1835dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001836dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001837dnl
1838AC_DEFUN(AM_PATH_GTK,
1839[
1840 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1841 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001842 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001843 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1844 no_gtk=""
1845 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1846 && $PKG_CONFIG --exists gtk+-2.0; then
1847 {
1848 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1849 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1850 dnl something like that.
1851 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001852 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001853 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1854 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1855 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1856 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1857 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1858 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1859 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1860 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001861 else
1862 no_gtk=yes
1863 fi
1864
1865 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1866 {
1867 ac_save_CFLAGS="$CFLAGS"
1868 ac_save_LIBS="$LIBS"
1869 CFLAGS="$CFLAGS $GTK_CFLAGS"
1870 LIBS="$LIBS $GTK_LIBS"
1871
1872 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001873 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001874 dnl
1875 rm -f conf.gtktest
1876 AC_TRY_RUN([
1877#include <gtk/gtk.h>
1878#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001879#if STDC_HEADERS
1880# include <stdlib.h>
1881# include <stddef.h>
1882#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001883
1884int
1885main ()
1886{
1887int major, minor, micro;
1888char *tmp_version;
1889
1890system ("touch conf.gtktest");
1891
1892/* HP/UX 9 (%@#!) writes to sscanf strings */
1893tmp_version = g_strdup("$min_gtk_version");
1894if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1895 printf("%s, bad version string\n", "$min_gtk_version");
1896 exit(1);
1897 }
1898
1899if ((gtk_major_version > major) ||
1900 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1901 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1902 (gtk_micro_version >= micro)))
1903{
1904 return 0;
1905}
1906return 1;
1907}
1908],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1909 CFLAGS="$ac_save_CFLAGS"
1910 LIBS="$ac_save_LIBS"
1911 }
1912 fi
1913 if test "x$no_gtk" = x ; then
1914 if test "x$enable_gtktest" = "xyes"; then
1915 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1916 else
1917 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1918 fi
1919 ifelse([$2], , :, [$2])
1920 else
1921 {
1922 AC_MSG_RESULT(no)
1923 GTK_CFLAGS=""
1924 GTK_LIBS=""
1925 ifelse([$3], , :, [$3])
1926 }
1927 fi
1928 }
1929 else
1930 GTK_CFLAGS=""
1931 GTK_LIBS=""
1932 ifelse([$3], , :, [$3])
1933 fi
1934 AC_SUBST(GTK_CFLAGS)
1935 AC_SUBST(GTK_LIBS)
1936 rm -f conf.gtktest
1937])
1938
1939dnl ---------------------------------------------------------------------------
1940dnl gnome
1941dnl ---------------------------------------------------------------------------
1942AC_DEFUN([GNOME_INIT_HOOK],
1943[
1944 AC_SUBST(GNOME_LIBS)
1945 AC_SUBST(GNOME_LIBDIR)
1946 AC_SUBST(GNOME_INCLUDEDIR)
1947
1948 AC_ARG_WITH(gnome-includes,
1949 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1950 [CFLAGS="$CFLAGS -I$withval"]
1951 )
1952
1953 AC_ARG_WITH(gnome-libs,
1954 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1955 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1956 )
1957
1958 AC_ARG_WITH(gnome,
1959 [ --with-gnome Specify prefix for GNOME files],
1960 if test x$withval = xyes; then
1961 want_gnome=yes
1962 ifelse([$1], [], :, [$1])
1963 else
1964 if test "x$withval" = xno; then
1965 want_gnome=no
1966 else
1967 want_gnome=yes
1968 LDFLAGS="$LDFLAGS -L$withval/lib"
1969 CFLAGS="$CFLAGS -I$withval/include"
1970 gnome_prefix=$withval/lib
1971 fi
1972 fi,
1973 want_gnome=yes)
1974
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001975 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001976 {
1977 AC_MSG_CHECKING(for libgnomeui-2.0)
1978 if $PKG_CONFIG --exists libgnomeui-2.0; then
1979 AC_MSG_RESULT(yes)
1980 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1981 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1982 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001983
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001984 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1985 dnl This might not be the right way but it works for me...
1986 AC_MSG_CHECKING(for FreeBSD)
1987 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1988 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001989 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001990 GNOME_LIBS="$GNOME_LIBS -pthread"
1991 else
1992 AC_MSG_RESULT(no)
1993 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001994 $1
1995 else
1996 AC_MSG_RESULT(not found)
1997 if test "x$2" = xfail; then
1998 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1999 fi
2000 fi
2001 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002002 fi
2003])
2004
2005AC_DEFUN([GNOME_INIT],[
2006 GNOME_INIT_HOOK([],fail)
2007])
2008
2009
2010dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002011dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002012dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002013if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002014
2015 AC_MSG_CHECKING(--disable-gtktest argument)
2016 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2017 , enable_gtktest=yes)
2018 if test "x$enable_gtktest" = "xyes" ; then
2019 AC_MSG_RESULT(gtk test enabled)
2020 else
2021 AC_MSG_RESULT(gtk test disabled)
2022 fi
2023
Bram Moolenaar071d4272004-06-13 20:20:40 +00002024 if test "X$PKG_CONFIG" = "X"; then
2025 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2026 fi
2027
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002028 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002029 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2030 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002031 AM_PATH_GTK(2.2.0,
2032 [GUI_LIB_LOC="$GTK_LIBDIR"
2033 GTK_LIBNAME="$GTK_LIBS"
2034 GUI_INC_LOC="$GTK_CFLAGS"], )
2035 if test "x$GTK_CFLAGS" != "x"; then
2036 SKIP_ATHENA=YES
2037 SKIP_NEXTAW=YES
2038 SKIP_MOTIF=YES
2039 GUITYPE=GTK
2040 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002041 fi
2042 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002043 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002044 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2045 || test "0$gtk_minor_version" -ge 2; then
2046 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2047 fi
2048 dnl
2049 dnl if GTK exists, then check for GNOME.
2050 dnl
2051 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002052 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002053 GNOME_INIT_HOOK([have_gnome=yes])
2054 if test "x$have_gnome" = xyes ; then
2055 AC_DEFINE(FEAT_GUI_GNOME)
2056 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2057 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002058 fi
2059 }
2060 fi
2061 fi
2062fi
2063
2064dnl Check for Motif include files location.
2065dnl The LAST one found is used, this makes the highest version to be used,
2066dnl e.g. when Motif1.2 and Motif2.0 are both present.
2067
2068if test -z "$SKIP_MOTIF"; then
2069 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"
2070 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2071 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2072
2073 AC_MSG_CHECKING(for location of Motif GUI includes)
2074 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2075 GUI_INC_LOC=
2076 for try in $gui_includes; do
2077 if test -f "$try/Xm/Xm.h"; then
2078 GUI_INC_LOC=$try
2079 fi
2080 done
2081 if test -n "$GUI_INC_LOC"; then
2082 if test "$GUI_INC_LOC" = /usr/include; then
2083 GUI_INC_LOC=
2084 AC_MSG_RESULT(in default path)
2085 else
2086 AC_MSG_RESULT($GUI_INC_LOC)
2087 fi
2088 else
2089 AC_MSG_RESULT(<not found>)
2090 SKIP_MOTIF=YES
2091 fi
2092fi
2093
2094dnl Check for Motif library files location. In the same order as the include
2095dnl files, to avoid a mixup if several versions are present
2096
2097if test -z "$SKIP_MOTIF"; then
2098 AC_MSG_CHECKING(--with-motif-lib argument)
2099 AC_ARG_WITH(motif-lib,
2100 [ --with-motif-lib=STRING Library for Motif ],
2101 [ MOTIF_LIBNAME="${withval}" ] )
2102
2103 if test -n "$MOTIF_LIBNAME"; then
2104 AC_MSG_RESULT($MOTIF_LIBNAME)
2105 GUI_LIB_LOC=
2106 else
2107 AC_MSG_RESULT(no)
2108
2109 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2110 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2111
2112 AC_MSG_CHECKING(for location of Motif GUI libs)
2113 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"
2114 GUI_LIB_LOC=
2115 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002116 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002117 if test -f "$libtry"; then
2118 GUI_LIB_LOC=$try
2119 fi
2120 done
2121 done
2122 if test -n "$GUI_LIB_LOC"; then
2123 dnl Remove /usr/lib, it causes trouble on some systems
2124 if test "$GUI_LIB_LOC" = /usr/lib; then
2125 GUI_LIB_LOC=
2126 AC_MSG_RESULT(in default path)
2127 else
2128 if test -n "$GUI_LIB_LOC"; then
2129 AC_MSG_RESULT($GUI_LIB_LOC)
2130 if test "`(uname) 2>/dev/null`" = SunOS &&
2131 uname -r | grep '^5' >/dev/null; then
2132 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2133 fi
2134 fi
2135 fi
2136 MOTIF_LIBNAME=-lXm
2137 else
2138 AC_MSG_RESULT(<not found>)
2139 SKIP_MOTIF=YES
2140 fi
2141 fi
2142fi
2143
2144if test -z "$SKIP_MOTIF"; then
2145 SKIP_ATHENA=YES
2146 SKIP_NEXTAW=YES
2147 GUITYPE=MOTIF
2148 AC_SUBST(MOTIF_LIBNAME)
2149fi
2150
2151dnl Check if the Athena files can be found
2152
2153GUI_X_LIBS=
2154
2155if test -z "$SKIP_ATHENA"; then
2156 AC_MSG_CHECKING(if Athena header files can be found)
2157 cflags_save=$CFLAGS
2158 CFLAGS="$CFLAGS $X_CFLAGS"
2159 AC_TRY_COMPILE([
2160#include <X11/Intrinsic.h>
2161#include <X11/Xaw/Paned.h>], ,
2162 AC_MSG_RESULT(yes),
2163 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2164 CFLAGS=$cflags_save
2165fi
2166
2167if test -z "$SKIP_ATHENA"; then
2168 GUITYPE=ATHENA
2169fi
2170
2171if test -z "$SKIP_NEXTAW"; then
2172 AC_MSG_CHECKING(if neXtaw header files can be found)
2173 cflags_save=$CFLAGS
2174 CFLAGS="$CFLAGS $X_CFLAGS"
2175 AC_TRY_COMPILE([
2176#include <X11/Intrinsic.h>
2177#include <X11/neXtaw/Paned.h>], ,
2178 AC_MSG_RESULT(yes),
2179 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2180 CFLAGS=$cflags_save
2181fi
2182
2183if test -z "$SKIP_NEXTAW"; then
2184 GUITYPE=NEXTAW
2185fi
2186
2187if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2188 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2189 dnl Avoid adding it when it twice
2190 if test -n "$GUI_INC_LOC"; then
2191 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2192 fi
2193 if test -n "$GUI_LIB_LOC"; then
2194 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2195 fi
2196
2197 dnl Check for -lXext and then for -lXmu
2198 ldflags_save=$LDFLAGS
2199 LDFLAGS="$X_LIBS $LDFLAGS"
2200 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2201 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2202 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2203 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2204 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2205 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2206 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2207 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2208 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2209 if test -z "$SKIP_MOTIF"; then
2210 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2211 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2212 fi
2213 LDFLAGS=$ldflags_save
2214
2215 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2216 AC_MSG_CHECKING(for extra X11 defines)
2217 NARROW_PROTO=
2218 rm -fr conftestdir
2219 if mkdir conftestdir; then
2220 cd conftestdir
2221 cat > Imakefile <<'EOF'
2222acfindx:
2223 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2224EOF
2225 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2226 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2227 fi
2228 cd ..
2229 rm -fr conftestdir
2230 fi
2231 if test -z "$NARROW_PROTO"; then
2232 AC_MSG_RESULT(no)
2233 else
2234 AC_MSG_RESULT($NARROW_PROTO)
2235 fi
2236 AC_SUBST(NARROW_PROTO)
2237fi
2238
2239dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2240dnl use the X11 include path
2241if test "$enable_xsmp" = "yes"; then
2242 cppflags_save=$CPPFLAGS
2243 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2244 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2245 CPPFLAGS=$cppflags_save
2246fi
2247
2248
Bram Moolenaare667c952010-07-05 22:57:59 +02002249if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002250 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2251 cppflags_save=$CPPFLAGS
2252 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2253 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2254
2255 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2256 if test ! "$enable_xim" = "no"; then
2257 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2258 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2259 AC_MSG_RESULT(yes),
2260 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2261 fi
2262 CPPFLAGS=$cppflags_save
2263
2264 dnl automatically enable XIM when hangul input isn't enabled
2265 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2266 -a "x$GUITYPE" != "xNONE" ; then
2267 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2268 enable_xim="yes"
2269 fi
2270fi
2271
2272if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2273 cppflags_save=$CPPFLAGS
2274 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002275dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2276 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2277 AC_TRY_COMPILE([
2278#include <X11/Intrinsic.h>
2279#include <X11/Xmu/Editres.h>],
2280 [int i; i = 0;],
2281 AC_MSG_RESULT(yes)
2282 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2283 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002284 CPPFLAGS=$cppflags_save
2285fi
2286
2287dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2288if test -z "$SKIP_MOTIF"; then
2289 cppflags_save=$CPPFLAGS
2290 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002291 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 +00002292 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002293
2294 if test $ac_cv_header_Xm_XpmP_h = yes; then
2295 dnl Solaris uses XpmAttributes_21, very annoying.
2296 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2297 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2298 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2299 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2300 )
2301 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002302 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002303 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002304 CPPFLAGS=$cppflags_save
2305fi
2306
2307if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2308 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2309 enable_xim="no"
2310fi
2311if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2312 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2313 enable_fontset="no"
2314fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002315if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002316 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2317 enable_fontset="no"
2318fi
2319
Bram Moolenaar071d4272004-06-13 20:20:40 +00002320if test -z "$SKIP_PHOTON"; then
2321 GUITYPE=PHOTONGUI
2322fi
2323
2324AC_SUBST(GUI_INC_LOC)
2325AC_SUBST(GUI_LIB_LOC)
2326AC_SUBST(GUITYPE)
2327AC_SUBST(GUI_X_LIBS)
2328
2329if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2330 AC_MSG_ERROR([cannot use workshop without Motif])
2331fi
2332
2333dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2334if test "$enable_xim" = "yes"; then
2335 AC_DEFINE(FEAT_XIM)
2336fi
2337if test "$enable_fontset" = "yes"; then
2338 AC_DEFINE(FEAT_XFONTSET)
2339fi
2340
2341
2342dnl ---------------------------------------------------------------------------
2343dnl end of GUI-checking
2344dnl ---------------------------------------------------------------------------
2345
2346
2347dnl Only really enable hangul input when GUI and XFONTSET are available
2348if test "$enable_hangulinput" = "yes"; then
2349 if test "x$GUITYPE" = "xNONE"; then
2350 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2351 enable_hangulinput=no
2352 else
2353 AC_DEFINE(FEAT_HANGULIN)
2354 HANGULIN_SRC=hangulin.c
2355 AC_SUBST(HANGULIN_SRC)
2356 HANGULIN_OBJ=objects/hangulin.o
2357 AC_SUBST(HANGULIN_OBJ)
2358 fi
2359fi
2360
2361dnl Checks for libraries and include files.
2362
Bram Moolenaar446cb832008-06-24 21:56:24 +00002363AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2364 [
2365 AC_RUN_IFELSE([[
2366#include "confdefs.h"
2367#include <ctype.h>
2368#if STDC_HEADERS
2369# include <stdlib.h>
2370# include <stddef.h>
2371#endif
2372main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2373 ]],[
2374 vim_cv_toupper_broken=yes
2375 ],[
2376 vim_cv_toupper_broken=no
2377 ],[
2378 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2379 ])])
2380
2381if test "x$vim_cv_toupper_broken" = "xyes" ; then
2382 AC_DEFINE(BROKEN_TOUPPER)
2383fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002384
2385AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002386AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002387 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2388 AC_MSG_RESULT(no))
2389
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002390AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2391AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2392 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2393 AC_MSG_RESULT(no))
2394
Bram Moolenaar071d4272004-06-13 20:20:40 +00002395dnl Checks for header files.
2396AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2397dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2398if test "$HAS_ELF" = 1; then
2399 AC_CHECK_LIB(elf, main)
2400fi
2401
2402AC_HEADER_DIRENT
2403
Bram Moolenaar071d4272004-06-13 20:20:40 +00002404dnl If sys/wait.h is not found it might still exist but not be POSIX
2405dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2406if test $ac_cv_header_sys_wait_h = no; then
2407 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2408 AC_TRY_COMPILE([#include <sys/wait.h>],
2409 [union wait xx, yy; xx = yy],
2410 AC_MSG_RESULT(yes)
2411 AC_DEFINE(HAVE_SYS_WAIT_H)
2412 AC_DEFINE(HAVE_UNION_WAIT),
2413 AC_MSG_RESULT(no))
2414fi
2415
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002416AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2417 sys/select.h sys/utsname.h termcap.h fcntl.h \
2418 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2419 termio.h iconv.h inttypes.h langinfo.h math.h \
2420 unistd.h stropts.h errno.h sys/resource.h \
2421 sys/systeminfo.h locale.h sys/stream.h termios.h \
2422 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2423 utime.h sys/param.h libintl.h libgen.h \
2424 util/debug.h util/msg18n.h frame.h sys/acl.h \
2425 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002426
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002427dnl sys/ptem.h depends on sys/stream.h on Solaris
2428AC_CHECK_HEADERS(sys/ptem.h, [], [],
2429[#if defined HAVE_SYS_STREAM_H
2430# include <sys/stream.h>
2431#endif])
2432
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002433dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2434AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2435[#if defined HAVE_SYS_PARAM_H
2436# include <sys/param.h>
2437#endif])
2438
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002439
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002440dnl pthread_np.h may exist but can only be used after including pthread.h
2441AC_MSG_CHECKING([for pthread_np.h])
2442AC_TRY_COMPILE([
2443#include <pthread.h>
2444#include <pthread_np.h>],
2445 [int i; i = 0;],
2446 AC_MSG_RESULT(yes)
2447 AC_DEFINE(HAVE_PTHREAD_NP_H),
2448 AC_MSG_RESULT(no))
2449
Bram Moolenaare344bea2005-09-01 20:46:49 +00002450AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002451if test "x$MACOSX" = "xyes"; then
2452 dnl The strings.h file on OS/X contains a warning and nothing useful.
2453 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2454else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002455
2456dnl Check if strings.h and string.h can both be included when defined.
2457AC_MSG_CHECKING([if strings.h can be included after string.h])
2458cppflags_save=$CPPFLAGS
2459CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2460AC_TRY_COMPILE([
2461#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2462# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2463 /* but don't do it on AIX 5.1 (Uribarri) */
2464#endif
2465#ifdef HAVE_XM_XM_H
2466# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2467#endif
2468#ifdef HAVE_STRING_H
2469# include <string.h>
2470#endif
2471#if defined(HAVE_STRINGS_H)
2472# include <strings.h>
2473#endif
2474 ], [int i; i = 0;],
2475 AC_MSG_RESULT(yes),
2476 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2477 AC_MSG_RESULT(no))
2478CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002479fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002480
2481dnl Checks for typedefs, structures, and compiler characteristics.
2482AC_PROG_GCC_TRADITIONAL
2483AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002484AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002485AC_TYPE_MODE_T
2486AC_TYPE_OFF_T
2487AC_TYPE_PID_T
2488AC_TYPE_SIZE_T
2489AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002490AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002491
Bram Moolenaar071d4272004-06-13 20:20:40 +00002492AC_HEADER_TIME
2493AC_CHECK_TYPE(ino_t, long)
2494AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002495AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002496
2497AC_MSG_CHECKING(for rlim_t)
2498if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2499 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2500else
2501 AC_EGREP_CPP(dnl
2502changequote(<<,>>)dnl
2503<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2504changequote([,]),
2505 [
2506#include <sys/types.h>
2507#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002508# include <stdlib.h>
2509# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002510#endif
2511#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002512# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002513#endif
2514 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2515 AC_MSG_RESULT($ac_cv_type_rlim_t)
2516fi
2517if test $ac_cv_type_rlim_t = no; then
2518 cat >> confdefs.h <<\EOF
2519#define rlim_t unsigned long
2520EOF
2521fi
2522
2523AC_MSG_CHECKING(for stack_t)
2524if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2525 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2526else
2527 AC_EGREP_CPP(stack_t,
2528 [
2529#include <sys/types.h>
2530#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002531# include <stdlib.h>
2532# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002533#endif
2534#include <signal.h>
2535 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2536 AC_MSG_RESULT($ac_cv_type_stack_t)
2537fi
2538if test $ac_cv_type_stack_t = no; then
2539 cat >> confdefs.h <<\EOF
2540#define stack_t struct sigaltstack
2541EOF
2542fi
2543
2544dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2545AC_MSG_CHECKING(whether stack_t has an ss_base field)
2546AC_TRY_COMPILE([
2547#include <sys/types.h>
2548#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002549# include <stdlib.h>
2550# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002551#endif
2552#include <signal.h>
2553#include "confdefs.h"
2554 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2555 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2556 AC_MSG_RESULT(no))
2557
2558olibs="$LIBS"
2559AC_MSG_CHECKING(--with-tlib argument)
2560AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2561if test -n "$with_tlib"; then
2562 AC_MSG_RESULT($with_tlib)
2563 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002564 AC_MSG_CHECKING(for linking with $with_tlib library)
2565 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2566 dnl Need to check for tgetent() below.
2567 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002568else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002569 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002570 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2571 dnl curses, because curses is much slower.
2572 dnl Newer versions of ncurses are preferred over anything.
2573 dnl Older versions of ncurses have bugs, get a new one!
2574 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002575 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002576 case "`uname -s 2>/dev/null`" in
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002577 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002578 *) tlibs="ncurses termlib termcap curses";;
2579 esac
2580 for libname in $tlibs; do
2581 AC_CHECK_LIB(${libname}, tgetent,,)
2582 if test "x$olibs" != "x$LIBS"; then
2583 dnl It's possible that a library is found but it doesn't work
2584 dnl e.g., shared library that cannot be found
2585 dnl compile and run a test program to be sure
2586 AC_TRY_RUN([
2587#ifdef HAVE_TERMCAP_H
2588# include <termcap.h>
2589#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002590#if STDC_HEADERS
2591# include <stdlib.h>
2592# include <stddef.h>
2593#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002594main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2595 res="OK", res="FAIL", res="FAIL")
2596 if test "$res" = "OK"; then
2597 break
2598 fi
2599 AC_MSG_RESULT($libname library is not usable)
2600 LIBS="$olibs"
2601 fi
2602 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002603 if test "x$olibs" = "x$LIBS"; then
2604 AC_MSG_RESULT(no terminal library found)
2605 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002606fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002607
2608if test "x$olibs" = "x$LIBS"; then
2609 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002610 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002611 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2612 AC_MSG_RESULT(yes),
2613 AC_MSG_ERROR([NOT FOUND!
2614 You need to install a terminal library; for example ncurses.
2615 Or specify the name of the library with --with-tlib.]))
2616fi
2617
Bram Moolenaar446cb832008-06-24 21:56:24 +00002618AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2619 [
2620 AC_RUN_IFELSE([[
2621#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002622#ifdef HAVE_TERMCAP_H
2623# include <termcap.h>
2624#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002625#ifdef HAVE_STRING_H
2626# include <string.h>
2627#endif
2628#if STDC_HEADERS
2629# include <stdlib.h>
2630# include <stddef.h>
2631#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002632main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002633{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2634 ]],[
2635 vim_cv_terminfo=no
2636 ],[
2637 vim_cv_terminfo=yes
2638 ],[
2639 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2640 ])
2641 ])
2642
2643if test "x$vim_cv_terminfo" = "xyes" ; then
2644 AC_DEFINE(TERMINFO)
2645fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002646
2647if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002648 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2649 [
2650 AC_RUN_IFELSE([[
2651#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002652#ifdef HAVE_TERMCAP_H
2653# include <termcap.h>
2654#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002655#if STDC_HEADERS
2656# include <stdlib.h>
2657# include <stddef.h>
2658#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002659main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002660{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2661 ]],[
2662 vim_cv_tgent=zero
2663 ],[
2664 vim_cv_tgent=non-zero
2665 ],[
2666 AC_MSG_ERROR(failed to compile test program.)
2667 ])
2668 ])
2669
2670 if test "x$vim_cv_tgent" = "xzero" ; then
2671 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2672 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002673fi
2674
2675AC_MSG_CHECKING(whether termcap.h contains ospeed)
2676AC_TRY_LINK([
2677#ifdef HAVE_TERMCAP_H
2678# include <termcap.h>
2679#endif
2680 ], [ospeed = 20000],
2681 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2682 [AC_MSG_RESULT(no)
2683 AC_MSG_CHECKING(whether ospeed can be extern)
2684 AC_TRY_LINK([
2685#ifdef HAVE_TERMCAP_H
2686# include <termcap.h>
2687#endif
2688extern short ospeed;
2689 ], [ospeed = 20000],
2690 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2691 AC_MSG_RESULT(no))]
2692 )
2693
2694AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2695AC_TRY_LINK([
2696#ifdef HAVE_TERMCAP_H
2697# include <termcap.h>
2698#endif
2699 ], [if (UP == 0 && BC == 0) PC = 1],
2700 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2701 [AC_MSG_RESULT(no)
2702 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2703 AC_TRY_LINK([
2704#ifdef HAVE_TERMCAP_H
2705# include <termcap.h>
2706#endif
2707extern char *UP, *BC, PC;
2708 ], [if (UP == 0 && BC == 0) PC = 1],
2709 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2710 AC_MSG_RESULT(no))]
2711 )
2712
2713AC_MSG_CHECKING(whether tputs() uses outfuntype)
2714AC_TRY_COMPILE([
2715#ifdef HAVE_TERMCAP_H
2716# include <termcap.h>
2717#endif
2718 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2719 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2720 AC_MSG_RESULT(no))
2721
2722dnl On some SCO machines sys/select redefines struct timeval
2723AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2724AC_TRY_COMPILE([
2725#include <sys/types.h>
2726#include <sys/time.h>
2727#include <sys/select.h>], ,
2728 AC_MSG_RESULT(yes)
2729 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2730 AC_MSG_RESULT(no))
2731
2732dnl AC_DECL_SYS_SIGLIST
2733
2734dnl Checks for pty.c (copied from screen) ==========================
2735AC_MSG_CHECKING(for /dev/ptc)
2736if test -r /dev/ptc; then
2737 AC_DEFINE(HAVE_DEV_PTC)
2738 AC_MSG_RESULT(yes)
2739else
2740 AC_MSG_RESULT(no)
2741fi
2742
2743AC_MSG_CHECKING(for SVR4 ptys)
2744if test -c /dev/ptmx ; then
2745 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2746 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2747 AC_MSG_RESULT(no))
2748else
2749 AC_MSG_RESULT(no)
2750fi
2751
2752AC_MSG_CHECKING(for ptyranges)
2753if test -d /dev/ptym ; then
2754 pdir='/dev/ptym'
2755else
2756 pdir='/dev'
2757fi
2758dnl SCO uses ptyp%d
2759AC_EGREP_CPP(yes,
2760[#ifdef M_UNIX
2761 yes;
2762#endif
2763 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2764dnl if test -c /dev/ptyp19; then
2765dnl ptys=`echo /dev/ptyp??`
2766dnl else
2767dnl ptys=`echo $pdir/pty??`
2768dnl fi
2769if test "$ptys" != "$pdir/pty??" ; then
2770 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2771 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2772 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2773 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2774 AC_MSG_RESULT([$p0 / $p1])
2775else
2776 AC_MSG_RESULT([don't know])
2777fi
2778
2779dnl **** pty mode/group handling ****
2780dnl
2781dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002782rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002783AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2784 [
2785 AC_RUN_IFELSE([[
2786#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002787#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002788#if STDC_HEADERS
2789# include <stdlib.h>
2790# include <stddef.h>
2791#endif
2792#ifdef HAVE_UNISTD_H
2793#include <unistd.h>
2794#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002795#include <sys/stat.h>
2796#include <stdio.h>
2797main()
2798{
2799 struct stat sb;
2800 char *x,*ttyname();
2801 int om, m;
2802 FILE *fp;
2803
2804 if (!(x = ttyname(0))) exit(1);
2805 if (stat(x, &sb)) exit(1);
2806 om = sb.st_mode;
2807 if (om & 002) exit(0);
2808 m = system("mesg y");
2809 if (m == -1 || m == 127) exit(1);
2810 if (stat(x, &sb)) exit(1);
2811 m = sb.st_mode;
2812 if (chmod(x, om)) exit(1);
2813 if (m & 002) exit(0);
2814 if (sb.st_gid == getgid()) exit(1);
2815 if (!(fp=fopen("conftest_grp", "w")))
2816 exit(1);
2817 fprintf(fp, "%d\n", sb.st_gid);
2818 fclose(fp);
2819 exit(0);
2820}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002821 ]],[
2822 if test -f conftest_grp; then
2823 vim_cv_tty_group=`cat conftest_grp`
2824 if test "x$vim_cv_tty_mode" = "x" ; then
2825 vim_cv_tty_mode=0620
2826 fi
2827 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2828 else
2829 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002830 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002831 fi
2832 ],[
2833 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002834 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002835 ],[
2836 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2837 ])
2838 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002839rm -f conftest_grp
2840
Bram Moolenaar446cb832008-06-24 21:56:24 +00002841if test "x$vim_cv_tty_group" != "xworld" ; then
2842 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2843 if test "x$vim_cv_tty_mode" = "x" ; then
2844 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)])
2845 else
2846 AC_DEFINE(PTYMODE, 0620)
2847 fi
2848fi
2849
Bram Moolenaar071d4272004-06-13 20:20:40 +00002850dnl Checks for library functions. ===================================
2851
2852AC_TYPE_SIGNAL
2853
2854dnl find out what to use at the end of a signal function
2855if test $ac_cv_type_signal = void; then
2856 AC_DEFINE(SIGRETURN, [return])
2857else
2858 AC_DEFINE(SIGRETURN, [return 0])
2859fi
2860
2861dnl check if struct sigcontext is defined (used for SGI only)
2862AC_MSG_CHECKING(for struct sigcontext)
2863AC_TRY_COMPILE([
2864#include <signal.h>
2865test_sig()
2866{
2867 struct sigcontext *scont;
2868 scont = (struct sigcontext *)0;
2869 return 1;
2870} ], ,
2871 AC_MSG_RESULT(yes)
2872 AC_DEFINE(HAVE_SIGCONTEXT),
2873 AC_MSG_RESULT(no))
2874
2875dnl tricky stuff: try to find out if getcwd() is implemented with
2876dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002877AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2878 [
2879 AC_RUN_IFELSE([[
2880#include "confdefs.h"
2881#ifdef HAVE_UNISTD_H
2882#include <unistd.h>
2883#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002884char *dagger[] = { "IFS=pwd", 0 };
2885main()
2886{
2887 char buffer[500];
2888 extern char **environ;
2889 environ = dagger;
2890 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002891}
2892 ]],[
2893 vim_cv_getcwd_broken=no
2894 ],[
2895 vim_cv_getcwd_broken=yes
2896 ],[
2897 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2898 ])
2899 ])
2900
2901if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2902 AC_DEFINE(BAD_GETCWD)
2903fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002904
Bram Moolenaar25153e12010-02-24 14:47:08 +01002905dnl Check for functions in one big call, to reduce the size of configure.
2906dnl Can only be used for functions that do not require any include.
2907AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002908 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00002909 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002910 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002911 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002912 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2913 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01002914AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00002915
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02002916dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
2917dnl appropriate, so that off_t is 64 bits when needed.
2918AC_SYS_LARGEFILE
2919
Bram Moolenaar071d4272004-06-13 20:20:40 +00002920dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2921AC_MSG_CHECKING(for st_blksize)
2922AC_TRY_COMPILE(
2923[#include <sys/types.h>
2924#include <sys/stat.h>],
2925[ struct stat st;
2926 int n;
2927
2928 stat("/", &st);
2929 n = (int)st.st_blksize;],
2930 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2931 AC_MSG_RESULT(no))
2932
Bram Moolenaar446cb832008-06-24 21:56:24 +00002933AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2934 [
2935 AC_RUN_IFELSE([[
2936#include "confdefs.h"
2937#if STDC_HEADERS
2938# include <stdlib.h>
2939# include <stddef.h>
2940#endif
2941#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002942#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002943main() {struct stat st; exit(stat("configure/", &st) != 0); }
2944 ]],[
2945 vim_cv_stat_ignores_slash=yes
2946 ],[
2947 vim_cv_stat_ignores_slash=no
2948 ],[
2949 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2950 ])
2951 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002952
Bram Moolenaar446cb832008-06-24 21:56:24 +00002953if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2954 AC_DEFINE(STAT_IGNORES_SLASH)
2955fi
2956
Bram Moolenaar071d4272004-06-13 20:20:40 +00002957dnl Link with iconv for charset translation, if not found without library.
2958dnl check for iconv() requires including iconv.h
2959dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2960dnl has been installed.
2961AC_MSG_CHECKING(for iconv_open())
2962save_LIBS="$LIBS"
2963LIBS="$LIBS -liconv"
2964AC_TRY_LINK([
2965#ifdef HAVE_ICONV_H
2966# include <iconv.h>
2967#endif
2968 ], [iconv_open("fr", "to");],
2969 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2970 LIBS="$save_LIBS"
2971 AC_TRY_LINK([
2972#ifdef HAVE_ICONV_H
2973# include <iconv.h>
2974#endif
2975 ], [iconv_open("fr", "to");],
2976 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2977 AC_MSG_RESULT(no)))
2978
2979
2980AC_MSG_CHECKING(for nl_langinfo(CODESET))
2981AC_TRY_LINK([
2982#ifdef HAVE_LANGINFO_H
2983# include <langinfo.h>
2984#endif
2985], [char *cs = nl_langinfo(CODESET);],
2986 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2987 AC_MSG_RESULT(no))
2988
Bram Moolenaar446cb832008-06-24 21:56:24 +00002989dnl Need various functions for floating point support. Only enable
2990dnl floating point when they are all present.
2991AC_CHECK_LIB(m, strtod)
2992AC_MSG_CHECKING([for strtod() and other floating point functions])
2993AC_TRY_LINK([
2994#ifdef HAVE_MATH_H
2995# include <math.h>
2996#endif
2997#if STDC_HEADERS
2998# include <stdlib.h>
2999# include <stddef.h>
3000#endif
3001], [char *s; double d;
3002 d = strtod("1.1", &s);
3003 d = fabs(1.11);
3004 d = ceil(1.11);
3005 d = floor(1.11);
3006 d = log10(1.11);
3007 d = pow(1.11, 2.22);
3008 d = sqrt(1.11);
3009 d = sin(1.11);
3010 d = cos(1.11);
3011 d = atan(1.11);
3012 ],
3013 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3014 AC_MSG_RESULT(no))
3015
Bram Moolenaar071d4272004-06-13 20:20:40 +00003016dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3017dnl when -lacl works, also try to use -lattr (required for Debian).
3018AC_MSG_CHECKING(--disable-acl argument)
3019AC_ARG_ENABLE(acl,
3020 [ --disable-acl Don't check for ACL support.],
3021 , [enable_acl="yes"])
3022if test "$enable_acl" = "yes"; then
3023AC_MSG_RESULT(no)
3024AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3025 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3026 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3027
3028AC_MSG_CHECKING(for POSIX ACL support)
3029AC_TRY_LINK([
3030#include <sys/types.h>
3031#ifdef HAVE_SYS_ACL_H
3032# include <sys/acl.h>
3033#endif
3034acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3035 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3036 acl_free(acl);],
3037 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3038 AC_MSG_RESULT(no))
3039
3040AC_MSG_CHECKING(for Solaris ACL support)
3041AC_TRY_LINK([
3042#ifdef HAVE_SYS_ACL_H
3043# include <sys/acl.h>
3044#endif], [acl("foo", GETACLCNT, 0, NULL);
3045 ],
3046 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
3047 AC_MSG_RESULT(no))
3048
3049AC_MSG_CHECKING(for AIX ACL support)
3050AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003051#if STDC_HEADERS
3052# include <stdlib.h>
3053# include <stddef.h>
3054#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003055#ifdef HAVE_SYS_ACL_H
3056# include <sys/acl.h>
3057#endif
3058#ifdef HAVE_SYS_ACCESS_H
3059# include <sys/access.h>
3060#endif
3061#define _ALL_SOURCE
3062
3063#include <sys/stat.h>
3064
3065int aclsize;
3066struct acl *aclent;], [aclsize = sizeof(struct acl);
3067 aclent = (void *)malloc(aclsize);
3068 statacl("foo", STX_NORMAL, aclent, aclsize);
3069 ],
3070 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3071 AC_MSG_RESULT(no))
3072else
3073 AC_MSG_RESULT(yes)
3074fi
3075
3076AC_MSG_CHECKING(--disable-gpm argument)
3077AC_ARG_ENABLE(gpm,
3078 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3079 [enable_gpm="yes"])
3080
3081if test "$enable_gpm" = "yes"; then
3082 AC_MSG_RESULT(no)
3083 dnl Checking if gpm support can be compiled
3084 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3085 [olibs="$LIBS" ; LIBS="-lgpm"]
3086 AC_TRY_LINK(
3087 [#include <gpm.h>
3088 #include <linux/keyboard.h>],
3089 [Gpm_GetLibVersion(NULL);],
3090 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3091 dnl FEAT_MOUSE_GPM if mouse support is included
3092 [vi_cv_have_gpm=yes],
3093 [vi_cv_have_gpm=no])
3094 [LIBS="$olibs"]
3095 )
3096 if test $vi_cv_have_gpm = yes; then
3097 LIBS="$LIBS -lgpm"
3098 AC_DEFINE(HAVE_GPM)
3099 fi
3100else
3101 AC_MSG_RESULT(yes)
3102fi
3103
Bram Moolenaar446cb832008-06-24 21:56:24 +00003104AC_MSG_CHECKING(--disable-sysmouse argument)
3105AC_ARG_ENABLE(sysmouse,
3106 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3107 [enable_sysmouse="yes"])
3108
3109if test "$enable_sysmouse" = "yes"; then
3110 AC_MSG_RESULT(no)
3111 dnl Checking if sysmouse support can be compiled
3112 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3113 dnl defines FEAT_SYSMOUSE if mouse support is included
3114 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3115 AC_TRY_LINK(
3116 [#include <sys/consio.h>
3117 #include <signal.h>
3118 #include <sys/fbio.h>],
3119 [struct mouse_info mouse;
3120 mouse.operation = MOUSE_MODE;
3121 mouse.operation = MOUSE_SHOW;
3122 mouse.u.mode.mode = 0;
3123 mouse.u.mode.signal = SIGUSR2;],
3124 [vi_cv_have_sysmouse=yes],
3125 [vi_cv_have_sysmouse=no])
3126 )
3127 if test $vi_cv_have_sysmouse = yes; then
3128 AC_DEFINE(HAVE_SYSMOUSE)
3129 fi
3130else
3131 AC_MSG_RESULT(yes)
3132fi
3133
Bram Moolenaarf05da212009-11-17 16:13:15 +00003134dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3135AC_MSG_CHECKING(for FD_CLOEXEC)
3136AC_TRY_COMPILE(
3137[#if HAVE_FCNTL_H
3138# include <fcntl.h>
3139#endif],
3140[ int flag = FD_CLOEXEC;],
3141 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3142 AC_MSG_RESULT(not usable))
3143
Bram Moolenaar071d4272004-06-13 20:20:40 +00003144dnl rename needs to be checked separately to work on Nextstep with cc
3145AC_MSG_CHECKING(for rename)
3146AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3147 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3148 AC_MSG_RESULT(no))
3149
3150dnl sysctl() may exist but not the arguments we use
3151AC_MSG_CHECKING(for sysctl)
3152AC_TRY_COMPILE(
3153[#include <sys/types.h>
3154#include <sys/sysctl.h>],
3155[ int mib[2], r;
3156 size_t len;
3157
3158 mib[0] = CTL_HW;
3159 mib[1] = HW_USERMEM;
3160 len = sizeof(r);
3161 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3162 ],
3163 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3164 AC_MSG_RESULT(not usable))
3165
3166dnl sysinfo() may exist but not be Linux compatible
3167AC_MSG_CHECKING(for sysinfo)
3168AC_TRY_COMPILE(
3169[#include <sys/types.h>
3170#include <sys/sysinfo.h>],
3171[ struct sysinfo sinfo;
3172 int t;
3173
3174 (void)sysinfo(&sinfo);
3175 t = sinfo.totalram;
3176 ],
3177 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3178 AC_MSG_RESULT(not usable))
3179
Bram Moolenaar914572a2007-05-01 11:37:47 +00003180dnl struct sysinfo may have the mem_unit field or not
3181AC_MSG_CHECKING(for sysinfo.mem_unit)
3182AC_TRY_COMPILE(
3183[#include <sys/types.h>
3184#include <sys/sysinfo.h>],
3185[ struct sysinfo sinfo;
3186 sinfo.mem_unit = 1;
3187 ],
3188 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3189 AC_MSG_RESULT(no))
3190
Bram Moolenaar071d4272004-06-13 20:20:40 +00003191dnl sysconf() may exist but not support what we want to use
3192AC_MSG_CHECKING(for sysconf)
3193AC_TRY_COMPILE(
3194[#include <unistd.h>],
3195[ (void)sysconf(_SC_PAGESIZE);
3196 (void)sysconf(_SC_PHYS_PAGES);
3197 ],
3198 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3199 AC_MSG_RESULT(not usable))
3200
Bram Moolenaar914703b2010-05-31 21:59:46 +02003201AC_CHECK_SIZEOF([int])
3202AC_CHECK_SIZEOF([long])
3203AC_CHECK_SIZEOF([time_t])
3204AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003205
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003206dnl Make sure that uint32_t is really 32 bits unsigned.
3207AC_MSG_CHECKING([uint32_t is 32 bits])
3208AC_TRY_RUN([
3209#ifdef HAVE_STDINT_H
3210# include <stdint.h>
3211#endif
3212#ifdef HAVE_INTTYPES_H
3213# include <inttypes.h>
3214#endif
3215main() {
3216 uint32_t nr1 = (uint32_t)-1;
3217 uint32_t nr2 = (uint32_t)0xffffffffUL;
3218 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3219 exit(0);
3220}],
3221AC_MSG_RESULT(ok),
3222AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
3223AC_MSG_ERROR([could not compile program using uint32_t.]))
3224
Bram Moolenaar446cb832008-06-24 21:56:24 +00003225dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3226dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3227
Bram Moolenaar071d4272004-06-13 20:20:40 +00003228[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003229#include "confdefs.h"
3230#ifdef HAVE_STRING_H
3231# include <string.h>
3232#endif
3233#if STDC_HEADERS
3234# include <stdlib.h>
3235# include <stddef.h>
3236#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003237main() {
3238 char buf[10];
3239 strcpy(buf, "abcdefghi");
3240 mch_memmove(buf, buf + 2, 3);
3241 if (strncmp(buf, "ababcf", 6))
3242 exit(1);
3243 strcpy(buf, "abcdefghi");
3244 mch_memmove(buf + 2, buf, 3);
3245 if (strncmp(buf, "cdedef", 6))
3246 exit(1);
3247 exit(0); /* libc version works properly. */
3248}']
3249
Bram Moolenaar446cb832008-06-24 21:56:24 +00003250AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3251 [
3252 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3253 [
3254 vim_cv_memmove_handles_overlap=yes
3255 ],[
3256 vim_cv_memmove_handles_overlap=no
3257 ],[
3258 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3259 ])
3260 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003261
Bram Moolenaar446cb832008-06-24 21:56:24 +00003262if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3263 AC_DEFINE(USEMEMMOVE)
3264else
3265 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3266 [
3267 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3268 [
3269 vim_cv_bcopy_handles_overlap=yes
3270 ],[
3271 vim_cv_bcopy_handles_overlap=no
3272 ],[
3273 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3274 ])
3275 ])
3276
3277 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3278 AC_DEFINE(USEBCOPY)
3279 else
3280 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3281 [
3282 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3283 [
3284 vim_cv_memcpy_handles_overlap=yes
3285 ],[
3286 vim_cv_memcpy_handles_overlap=no
3287 ],[
3288 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3289 ])
3290 ])
3291
3292 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3293 AC_DEFINE(USEMEMCPY)
3294 fi
3295 fi
3296fi
3297
Bram Moolenaar071d4272004-06-13 20:20:40 +00003298
3299dnl Check for multibyte locale functions
3300dnl Find out if _Xsetlocale() is supported by libX11.
3301dnl Check if X_LOCALE should be defined.
3302
3303if test "$enable_multibyte" = "yes"; then
3304 cflags_save=$CFLAGS
3305 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003306 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003307 CFLAGS="$CFLAGS -I$x_includes"
3308 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3309 AC_MSG_CHECKING(whether X_LOCALE needed)
3310 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3311 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3312 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3313 AC_MSG_RESULT(no))
3314 fi
3315 CFLAGS=$cflags_save
3316 LDFLAGS=$ldflags_save
3317fi
3318
3319dnl Link with xpg4, it is said to make Korean locale working
3320AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3321
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003322dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003323dnl --version for Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003324dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003325dnl -t for typedefs (many ctags have this)
3326dnl -s for static functions (Elvis ctags only?)
3327dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3328dnl -i+m to test for older Exuberant ctags
3329AC_MSG_CHECKING(how to create tags)
3330test -f tags && mv tags tags.save
3331if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003332 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003333else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003334 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003335 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3336 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3337 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3338 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3339 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3340 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3341 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3342fi
3343test -f tags.save && mv tags.save tags
3344AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3345
3346dnl Check how we can run man with a section number
3347AC_MSG_CHECKING(how to run man with a section nr)
3348MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003349(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 +00003350AC_MSG_RESULT($MANDEF)
3351if test "$MANDEF" = "man -s"; then
3352 AC_DEFINE(USEMAN_S)
3353fi
3354
3355dnl Check if gettext() is working and if it needs -lintl
3356AC_MSG_CHECKING(--disable-nls argument)
3357AC_ARG_ENABLE(nls,
3358 [ --disable-nls Don't support NLS (gettext()).], ,
3359 [enable_nls="yes"])
3360
3361if test "$enable_nls" = "yes"; then
3362 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003363
3364 INSTALL_LANGS=install-languages
3365 AC_SUBST(INSTALL_LANGS)
3366 INSTALL_TOOL_LANGS=install-tool-languages
3367 AC_SUBST(INSTALL_TOOL_LANGS)
3368
Bram Moolenaar071d4272004-06-13 20:20:40 +00003369 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3370 AC_MSG_CHECKING([for NLS])
3371 if test -f po/Makefile; then
3372 have_gettext="no"
3373 if test -n "$MSGFMT"; then
3374 AC_TRY_LINK(
3375 [#include <libintl.h>],
3376 [gettext("Test");],
3377 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3378 olibs=$LIBS
3379 LIBS="$LIBS -lintl"
3380 AC_TRY_LINK(
3381 [#include <libintl.h>],
3382 [gettext("Test");],
3383 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3384 AC_MSG_RESULT([gettext() doesn't work]);
3385 LIBS=$olibs))
3386 else
3387 AC_MSG_RESULT([msgfmt not found - disabled]);
3388 fi
3389 if test $have_gettext = "yes"; then
3390 AC_DEFINE(HAVE_GETTEXT)
3391 MAKEMO=yes
3392 AC_SUBST(MAKEMO)
3393 dnl this was added in GNU gettext 0.10.36
3394 AC_CHECK_FUNCS(bind_textdomain_codeset)
3395 dnl _nl_msg_cat_cntr is required for GNU gettext
3396 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3397 AC_TRY_LINK(
3398 [#include <libintl.h>
3399 extern int _nl_msg_cat_cntr;],
3400 [++_nl_msg_cat_cntr;],
3401 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3402 AC_MSG_RESULT([no]))
3403 fi
3404 else
3405 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3406 fi
3407else
3408 AC_MSG_RESULT(yes)
3409fi
3410
3411dnl Check for dynamic linking loader
3412AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3413if test x${DLL} = xdlfcn.h; then
3414 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3415 AC_MSG_CHECKING([for dlopen()])
3416 AC_TRY_LINK(,[
3417 extern void* dlopen();
3418 dlopen();
3419 ],
3420 AC_MSG_RESULT(yes);
3421 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3422 AC_MSG_RESULT(no);
3423 AC_MSG_CHECKING([for dlopen() in -ldl])
3424 olibs=$LIBS
3425 LIBS="$LIBS -ldl"
3426 AC_TRY_LINK(,[
3427 extern void* dlopen();
3428 dlopen();
3429 ],
3430 AC_MSG_RESULT(yes);
3431 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3432 AC_MSG_RESULT(no);
3433 LIBS=$olibs))
3434 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3435 dnl ick :-)
3436 AC_MSG_CHECKING([for dlsym()])
3437 AC_TRY_LINK(,[
3438 extern void* dlsym();
3439 dlsym();
3440 ],
3441 AC_MSG_RESULT(yes);
3442 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3443 AC_MSG_RESULT(no);
3444 AC_MSG_CHECKING([for dlsym() in -ldl])
3445 olibs=$LIBS
3446 LIBS="$LIBS -ldl"
3447 AC_TRY_LINK(,[
3448 extern void* dlsym();
3449 dlsym();
3450 ],
3451 AC_MSG_RESULT(yes);
3452 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3453 AC_MSG_RESULT(no);
3454 LIBS=$olibs))
3455elif test x${DLL} = xdl.h; then
3456 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3457 AC_MSG_CHECKING([for shl_load()])
3458 AC_TRY_LINK(,[
3459 extern void* shl_load();
3460 shl_load();
3461 ],
3462 AC_MSG_RESULT(yes);
3463 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3464 AC_MSG_RESULT(no);
3465 AC_MSG_CHECKING([for shl_load() in -ldld])
3466 olibs=$LIBS
3467 LIBS="$LIBS -ldld"
3468 AC_TRY_LINK(,[
3469 extern void* shl_load();
3470 shl_load();
3471 ],
3472 AC_MSG_RESULT(yes);
3473 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3474 AC_MSG_RESULT(no);
3475 LIBS=$olibs))
3476fi
3477AC_CHECK_HEADERS(setjmp.h)
3478
3479if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3480 dnl -ldl must come after DynaLoader.a
3481 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3482 LIBS=`echo $LIBS | sed s/-ldl//`
3483 PERL_LIBS="$PERL_LIBS -ldl"
3484 fi
3485fi
3486
Bram Moolenaar164fca32010-07-14 13:58:07 +02003487if test "x$MACOSX" = "xyes"; then
3488 AC_MSG_CHECKING(whether we need -framework Cocoa)
3489 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3490 dnl disabled during tiny build)
3491 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3492 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003493 AC_MSG_RESULT(yes)
3494 else
3495 AC_MSG_RESULT(no)
3496 fi
3497fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003498if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003499 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003500fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003501
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003502dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3503dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3504dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003505dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3506dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003507DEPEND_CFLAGS_FILTER=
3508if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003509 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003510 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003511 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003512 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003513 AC_MSG_RESULT(yes)
3514 else
3515 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003516 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003517 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3518 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003519 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003520 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3521 if test "$gccmajor" -gt "3"; then
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003522 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003523 AC_MSG_RESULT(yes)
3524 else
3525 AC_MSG_RESULT(no)
3526 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003527fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003528AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003529
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003530dnl link.sh tries to avoid overlinking in a hackish way.
3531dnl At least GNU ld supports --as-needed which provides the same functionality
3532dnl at linker level. Let's use it.
3533AC_MSG_CHECKING(linker --as-needed support)
3534LINK_AS_NEEDED=
3535# Check if linker supports --as-needed and --no-as-needed options
3536if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3537 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3538 LINK_AS_NEEDED=yes
3539fi
3540if test "$LINK_AS_NEEDED" = yes; then
3541 AC_MSG_RESULT(yes)
3542else
3543 AC_MSG_RESULT(no)
3544fi
3545AC_SUBST(LINK_AS_NEEDED)
3546
Bram Moolenaar071d4272004-06-13 20:20:40 +00003547dnl write output files
3548AC_OUTPUT(auto/config.mk:config.mk.in)
3549
3550dnl vim: set sw=2 tw=78 fo+=l: