blob: 743990437b6a43eef7390f7fc8a2db740b8a95af [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 Moolenaarf788a062011-12-14 20:51:25 +010031dnl Check for the flag that fails if stuff are missing.
32
33AC_MSG_CHECKING(--enable-fail-if-missing argument)
34AC_ARG_ENABLE(fail_if_missing,
35 [ --enable-fail-if-missing Fail if dependencies on additional features
36 specified on the command line are missing.],
37 [fail_if_missing="yes"],
38 [fail_if_missing="no"])
39AC_MSG_RESULT($fail_if_missing)
40
Bram Moolenaar071d4272004-06-13 20:20:40 +000041dnl Set default value for CFLAGS if none is defined or it's empty
42if test -z "$CFLAGS"; then
43 CFLAGS="-O"
44 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
45fi
46if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000047 dnl method that should work for nearly all versions
48 gccversion=`"$CC" -dumpversion`
49 if test "x$gccversion" = "x"; then
50 dnl old method; fall-back for when -dumpversion doesn't work
51 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
52 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000053 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
54 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000055 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000056 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
57 else
58 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
59 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
60 CFLAGS="$CFLAGS -fno-strength-reduce"
61 fi
62 fi
63fi
64
Bram Moolenaar446cb832008-06-24 21:56:24 +000065dnl If configure thinks we are cross compiling, there might be something
66dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000067if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000068 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000069fi
70
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000071dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
72dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000073test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
74
75if test -f ./toolcheck; then
76 AC_CHECKING(for buggy tools)
77 sh ./toolcheck 1>&AC_FD_MSG
78fi
79
80OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
81
82dnl Check for BeOS, which needs an extra source file
83AC_MSG_CHECKING(for BeOS)
84case `uname` in
85 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
86 BEOS=yes; AC_MSG_RESULT(yes);;
87 *) BEOS=no; AC_MSG_RESULT(no);;
88esac
89
90dnl If QNX is found, assume we don't want to use Xphoton
91dnl unless it was specifically asked for (--with-x)
92AC_MSG_CHECKING(for QNX)
93case `uname` in
94 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
95 test -z "$with_x" && with_x=no
96 QNX=yes; AC_MSG_RESULT(yes);;
97 *) QNX=no; AC_MSG_RESULT(no);;
98esac
99
100dnl Check for Darwin and MacOS X
101dnl We do a check for MacOS X in the very beginning because there
102dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000103AC_MSG_CHECKING([for Darwin (Mac OS X)])
104if test "`(uname) 2>/dev/null`" = Darwin; then
105 AC_MSG_RESULT(yes)
106
107 AC_MSG_CHECKING(--disable-darwin argument)
108 AC_ARG_ENABLE(darwin,
109 [ --disable-darwin Disable Darwin (Mac OS X) support.],
110 , [enable_darwin="yes"])
111 if test "$enable_darwin" = "yes"; then
112 AC_MSG_RESULT(no)
113 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200114 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000115 AC_MSG_RESULT(yes)
116 else
117 AC_MSG_RESULT([no, Darwin support disabled])
118 enable_darwin=no
119 fi
120 else
121 AC_MSG_RESULT([yes, Darwin support excluded])
122 fi
123
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000124 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000125 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000126 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000127 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000128
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100129 AC_MSG_CHECKING(--with-developer-dir argument)
130 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
131 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
132 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
133
134 if test "x$DEVELOPER_DIR" = "x"; then
135 AC_PATH_PROG(XCODE_SELECT, xcode-select)
136 if test "x$XCODE_SELECT" != "x"; then
137 AC_MSG_CHECKING(for developer dir using xcode-select)
138 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
139 AC_MSG_RESULT([$DEVELOPER_DIR])
140 else
141 DEVELOPER_DIR=/Developer
142 fi
143 fi
144
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000146 AC_MSG_CHECKING(for 10.4 universal SDK)
147 dnl There is a terrible inconsistency (but we appear to get away with it):
148 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
149 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
150 dnl tests using the preprocessor are actually done with the wrong header
151 dnl files. $LDFLAGS is set at the end, because configure uses it together
152 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000153 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000154 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100156 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000158 AC_MSG_RESULT(found, will make universal binary),
159
160 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000161 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000162 AC_MSG_CHECKING(if Intel architecture is supported)
163 CPPFLAGS="$CPPFLAGS -arch i386"
164 LDFLAGS="$save_ldflags -arch i386"
165 AC_TRY_LINK([ ], [ ],
166 AC_MSG_RESULT(yes); MACARCH="intel",
167 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000168 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000169 CPPFLAGS="$save_cppflags -arch ppc"
170 LDFLAGS="$save_ldflags -arch ppc"))
171 elif test "x$MACARCH" = "xintel"; then
172 CPPFLAGS="$CPPFLAGS -arch intel"
173 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000174 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000175 CPPFLAGS="$CPPFLAGS -arch ppc"
176 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 fi
178
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 if test "$enable_darwin" = "yes"; then
180 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200181 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000182 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000183 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000184 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000185
186 dnl If Carbon is found, assume we don't want X11
187 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000188 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000189 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
190 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200191 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 +0000192 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000193 fi
194 fi
195 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000196
Bram Moolenaardb552d602006-03-23 22:59:57 +0000197 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000198 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000199 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
201 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
202 fi
203
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204else
205 AC_MSG_RESULT(no)
206fi
207
208AC_SUBST(OS_EXTRA_SRC)
209AC_SUBST(OS_EXTRA_OBJ)
210
211dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
212dnl Only when the directory exists and it wasn't there yet.
213dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000214dnl Skip all of this when cross-compiling.
215if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000216 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000217 have_local_include=''
218 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000219 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
220 --without-local-dir do not search /usr/local for local libraries.], [
221 local_dir="$withval"
222 case "$withval" in
223 */*) ;;
224 no)
225 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200226 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000227 have_local_lib=yes
228 ;;
229 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
230 esac
231 AC_MSG_RESULT($local_dir)
232 ], [
233 local_dir=/usr/local
234 AC_MSG_RESULT(Defaulting to $local_dir)
235 ])
236 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 echo 'void f(){}' > conftest.c
238 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
240 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000242 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000243 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
244 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 +0000245 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000246 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000247 fi
248 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000249 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
250 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 +0000251 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000254 fi
255fi
256
257AC_MSG_CHECKING(--with-vim-name argument)
258AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
259 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000260 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000261AC_SUBST(VIMNAME)
262AC_MSG_CHECKING(--with-ex-name argument)
263AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
264 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
265 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
266AC_SUBST(EXNAME)
267AC_MSG_CHECKING(--with-view-name argument)
268AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
269 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
270 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
271AC_SUBST(VIEWNAME)
272
273AC_MSG_CHECKING(--with-global-runtime argument)
274AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
276 AC_MSG_RESULT(no))
277
278AC_MSG_CHECKING(--with-modified-by argument)
279AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
280 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
281 AC_MSG_RESULT(no))
282
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200283dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000284AC_MSG_CHECKING(if character set is EBCDIC)
285AC_TRY_COMPILE([ ],
286[ /* TryCompile function for CharSet.
287 Treat any failure as ASCII for compatibility with existing art.
288 Use compile-time rather than run-time tests for cross-compiler
289 tolerance. */
290#if '0'!=240
291make an error "Character set is not EBCDIC"
292#endif ],
293[ # TryCompile action if true
294cf_cv_ebcdic=yes ],
295[ # TryCompile action if false
296cf_cv_ebcdic=no])
297# end of TryCompile ])
298# end of CacheVal CvEbcdic
299AC_MSG_RESULT($cf_cv_ebcdic)
300case "$cf_cv_ebcdic" in #(vi
301 yes) AC_DEFINE(EBCDIC)
302 line_break='"\\n"'
303 ;;
304 *) line_break='"\\012"';;
305esac
306AC_SUBST(line_break)
307
308if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200309dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
310AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313 dnl If using cc the environment variable _CC_CCMODE must be
314 dnl set to "1", so that some compiler extensions are enabled.
315 dnl If using c89 the environment variable is named _CC_C89MODE.
316 dnl Note: compile with c89 never tested.
317 if test "$CC" = "cc"; then
318 ccm="$_CC_CCMODE"
319 ccn="CC"
320 else
321 if test "$CC" = "c89"; then
322 ccm="$_CC_C89MODE"
323 ccn="C89"
324 else
325 ccm=1
326 fi
327 fi
328 if test "$ccm" != "1"; then
329 echo ""
330 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200331 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200332 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000333 echo " Do:"
334 echo " export _CC_${ccn}MODE=1"
335 echo " and then call configure again."
336 echo "------------------------------------------"
337 exit 1
338 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200339 # Set CFLAGS for configure process.
340 # This will be reset later for config.mk.
341 # Use haltonmsg to force error for missing H files.
342 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
343 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000344 AC_MSG_RESULT(yes)
345 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347 AC_MSG_RESULT(no)
348 ;;
349esac
350fi
351
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200352dnl Set QUOTESED. Needs additional backslashes on zOS
353if test "$zOSUnix" = "yes"; then
354 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
355else
356 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
357fi
358AC_SUBST(QUOTESED)
359
360
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000361dnl Link with -lselinux for SELinux stuff; if not found
362AC_MSG_CHECKING(--disable-selinux argument)
363AC_ARG_ENABLE(selinux,
364 [ --disable-selinux Don't check for SELinux support.],
365 , enable_selinux="yes")
366if test "$enable_selinux" = "yes"; then
367 AC_MSG_RESULT(no)
368 AC_CHECK_LIB(selinux, is_selinux_enabled,
369 [LIBS="$LIBS -lselinux"
370 AC_DEFINE(HAVE_SELINUX)])
371else
372 AC_MSG_RESULT(yes)
373fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000374
375dnl Check user requested features.
376
377AC_MSG_CHECKING(--with-features argument)
378AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
379 features="$withval"; AC_MSG_RESULT($features),
380 features="normal"; AC_MSG_RESULT(Defaulting to normal))
381
382dovimdiff=""
383dogvimdiff=""
384case "$features" in
385 tiny) AC_DEFINE(FEAT_TINY) ;;
386 small) AC_DEFINE(FEAT_SMALL) ;;
387 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
388 dogvimdiff="installgvimdiff" ;;
389 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
390 dogvimdiff="installgvimdiff" ;;
391 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
392 dogvimdiff="installgvimdiff" ;;
393 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
394esac
395
396AC_SUBST(dovimdiff)
397AC_SUBST(dogvimdiff)
398
399AC_MSG_CHECKING(--with-compiledby argument)
400AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
401 compiledby="$withval"; AC_MSG_RESULT($withval),
402 compiledby=""; AC_MSG_RESULT(no))
403AC_SUBST(compiledby)
404
405AC_MSG_CHECKING(--disable-xsmp argument)
406AC_ARG_ENABLE(xsmp,
407 [ --disable-xsmp Disable XSMP session management],
408 , enable_xsmp="yes")
409
410if test "$enable_xsmp" = "yes"; then
411 AC_MSG_RESULT(no)
412 AC_MSG_CHECKING(--disable-xsmp-interact argument)
413 AC_ARG_ENABLE(xsmp-interact,
414 [ --disable-xsmp-interact Disable XSMP interaction],
415 , enable_xsmp_interact="yes")
416 if test "$enable_xsmp_interact" = "yes"; then
417 AC_MSG_RESULT(no)
418 AC_DEFINE(USE_XSMP_INTERACT)
419 else
420 AC_MSG_RESULT(yes)
421 fi
422else
423 AC_MSG_RESULT(yes)
424fi
425
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200426dnl Check for Lua feature.
427AC_MSG_CHECKING(--enable-luainterp argument)
428AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200429 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200430 [enable_luainterp="no"])
431AC_MSG_RESULT($enable_luainterp)
432
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200433if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200434 dnl -- find the lua executable
435 AC_SUBST(vi_cv_path_lua)
436
437 AC_MSG_CHECKING(--with-lua-prefix argument)
438 AC_ARG_WITH(lua_prefix,
439 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
440 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200441 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200442
443 if test "X$with_lua_prefix" != "X"; then
444 vi_cv_path_lua_pfx="$with_lua_prefix"
445 else
446 AC_MSG_CHECKING(LUA_PREFIX environment var)
447 if test "X$LUA_PREFIX" != "X"; then
448 AC_MSG_RESULT("$LUA_PREFIX")
449 vi_cv_path_lua_pfx="$LUA_PREFIX"
450 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200451 AC_MSG_RESULT([not set, default to /usr])
452 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200453 fi
454 fi
455
456 LUA_INC=
457 if test "X$vi_cv_path_lua_pfx" != "X"; then
458 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
459 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200460 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200461 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200462 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200463 dnl -- try to find Lua executable
464 AC_PATH_PROG(vi_cv_path_lua, lua)
465 if test "X$vi_cv_path_lua" != "X"; then
466 dnl -- find Lua version
467 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
Bram Moolenaar8220a682010-07-25 13:12:49 +0200468 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200469 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
470 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200471 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200472 LUA_INC=/lua$vi_cv_version_lua
473 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200474 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200475 vi_cv_path_lua_pfx=
476 fi
477 fi
478 fi
479 fi
480
481 if test "X$vi_cv_path_lua_pfx" != "X"; then
482 if test "X$vi_cv_version_lua" != "X"; then
483 dnl Test alternate location using version
484 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
485 else
486 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
487 fi
488 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
489 LUA_SRC="if_lua.c"
490 LUA_OBJ="objects/if_lua.o"
491 LUA_PRO="if_lua.pro"
492 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200493 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar8220a682010-07-25 13:12:49 +0200494 dnl Determine the SONAME for the current version, but fallback to
495 dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
496 for i in 0 1 2 3 4 5 6 7 8 9; do
497 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then
498 LUA_SONAME=".$i"
499 break
500 fi
501 done
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200502 AC_DEFINE(DYNAMIC_LUA)
503 LUA_LIBS=""
Bram Moolenaar8220a682010-07-25 13:12:49 +0200504 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200505 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200506 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100507 if test "$fail_if_missing" = "yes" -a -z "$LUA_SRC"; then
508 AC_MSG_ERROR([could not configure lua])
509 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200510 AC_SUBST(LUA_SRC)
511 AC_SUBST(LUA_OBJ)
512 AC_SUBST(LUA_PRO)
513 AC_SUBST(LUA_LIBS)
514 AC_SUBST(LUA_CFLAGS)
515fi
516
517
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000518dnl Check for MzScheme feature.
519AC_MSG_CHECKING(--enable-mzschemeinterp argument)
520AC_ARG_ENABLE(mzschemeinterp,
521 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
522 [enable_mzschemeinterp="no"])
523AC_MSG_RESULT($enable_mzschemeinterp)
524
525if test "$enable_mzschemeinterp" = "yes"; then
526 dnl -- find the mzscheme executable
527 AC_SUBST(vi_cv_path_mzscheme)
528
529 AC_MSG_CHECKING(--with-plthome argument)
530 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000531 [ --with-plthome=PLTHOME Use PLTHOME.],
532 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000533 with_plthome="";AC_MSG_RESULT("no"))
534
535 if test "X$with_plthome" != "X"; then
536 vi_cv_path_mzscheme_pfx="$with_plthome"
537 else
538 AC_MSG_CHECKING(PLTHOME environment var)
539 if test "X$PLTHOME" != "X"; then
540 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000541 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000542 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000543 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000544 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000545 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000546
547 dnl resolve symbolic link, the executable is often elsewhere and there
548 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000549 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000550 lsout=`ls -l $vi_cv_path_mzscheme`
551 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
552 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
553 fi
554 fi
555
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000556 if test "X$vi_cv_path_mzscheme" != "X"; then
557 dnl -- find where MzScheme thinks it was installed
558 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000559 dnl different versions of MzScheme differ in command line processing
560 dnl use universal approach
561 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000562 (build-path (call-with-values \
563 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000564 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
565 dnl Remove a trailing slash
566 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
567 sed -e 's+/$++'` ])
568 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000569 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000570 fi
571 fi
572
Bram Moolenaard7afed32007-05-06 13:26:41 +0000573 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000574 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
575 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
576 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000577 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
578 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000579 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000580 AC_MSG_RESULT(no)
581 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000582 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000583 AC_MSG_RESULT(yes)
584 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000585 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000586 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100587 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
588 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000589 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100590 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000591 else
592 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100593 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
594 if test -f /usr/include/plt/scheme.h; then
595 AC_MSG_RESULT(yes)
596 SCHEME_INC=/usr/include/plt
597 else
598 AC_MSG_RESULT(no)
599 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
600 if test -f /usr/include/racket/scheme.h; then
601 AC_MSG_RESULT(yes)
602 SCHEME_INC=/usr/include/racket
603 else
604 AC_MSG_RESULT(no)
605 vi_cv_path_mzscheme_pfx=
606 fi
607 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000608 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000609 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000610 fi
611 fi
612
613 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000614 if test "x$MACOSX" = "xyes"; then
615 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000616 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
617 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
618 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100619 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
620 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
621 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
622 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
623 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
624 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000625 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 +0000626 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000627 dnl Using shared objects
628 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
629 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
630 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100631 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
632 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
633 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
634 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
635 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000636 else
637 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
638 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000639 if test "$GCC" = yes; then
640 dnl Make Vim remember the path to the library. For when it's not in
641 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000642 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000643 elif test "`(uname) 2>/dev/null`" = SunOS &&
644 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000645 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000646 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000647 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000648 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
649 SCHEME_COLLECTS=lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100650 else
651 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
652 SCHEME_COLLECTS=lib/racket/
653 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000654 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000655 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000656 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100657 else
658 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
659 MZSCHEME_EXTRA="mzscheme_base.c"
660 fi
661 fi
662 if test "X$MZSCHEME_EXTRA" != "X" ; then
663 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000664 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
665 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
666 fi
667 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000668 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000669 MZSCHEME_SRC="if_mzsch.c"
670 MZSCHEME_OBJ="objects/if_mzsch.o"
671 MZSCHEME_PRO="if_mzsch.pro"
672 AC_DEFINE(FEAT_MZSCHEME)
673 fi
674 AC_SUBST(MZSCHEME_SRC)
675 AC_SUBST(MZSCHEME_OBJ)
676 AC_SUBST(MZSCHEME_PRO)
677 AC_SUBST(MZSCHEME_LIBS)
678 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000679 AC_SUBST(MZSCHEME_EXTRA)
680 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000681fi
682
683
Bram Moolenaar071d4272004-06-13 20:20:40 +0000684AC_MSG_CHECKING(--enable-perlinterp argument)
685AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200686 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000687 [enable_perlinterp="no"])
688AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200689if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000690 AC_SUBST(vi_cv_path_perl)
691 AC_PATH_PROG(vi_cv_path_perl, perl)
692 if test "X$vi_cv_path_perl" != "X"; then
693 AC_MSG_CHECKING(Perl version)
694 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
695 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200696 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000697 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
698 badthreads=no
699 else
700 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
701 eval `$vi_cv_path_perl -V:use5005threads`
702 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
703 badthreads=no
704 else
705 badthreads=yes
706 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
707 fi
708 else
709 badthreads=yes
710 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
711 fi
712 fi
713 if test $badthreads = no; then
714 AC_MSG_RESULT(OK)
715 eval `$vi_cv_path_perl -V:shrpenv`
716 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
717 shrpenv=""
718 fi
719 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
720 AC_SUBST(vi_cv_perllib)
721 dnl Remove "-fno-something", it breaks using cproto.
722 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
723 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
724 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
725 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
726 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
727 -e 's/-bE:perl.exp//' -e 's/-lc //'`
728 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
729 dnl a test in configure may fail because of that.
730 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
731 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
732
733 dnl check that compiling a simple program still works with the flags
734 dnl added for Perl.
735 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
736 cflags_save=$CFLAGS
737 libs_save=$LIBS
738 ldflags_save=$LDFLAGS
739 CFLAGS="$CFLAGS $perlcppflags"
740 LIBS="$LIBS $perllibs"
741 LDFLAGS="$perlldflags $LDFLAGS"
742 AC_TRY_LINK(,[ ],
743 AC_MSG_RESULT(yes); perl_ok=yes,
744 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
745 CFLAGS=$cflags_save
746 LIBS=$libs_save
747 LDFLAGS=$ldflags_save
748 if test $perl_ok = yes; then
749 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000750 dnl remove -pipe and -Wxxx, it confuses cproto
751 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000752 fi
753 if test "X$perlldflags" != "X"; then
754 LDFLAGS="$perlldflags $LDFLAGS"
755 fi
756 PERL_LIBS=$perllibs
757 PERL_SRC="auto/if_perl.c if_perlsfio.c"
758 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
759 PERL_PRO="if_perl.pro if_perlsfio.pro"
760 AC_DEFINE(FEAT_PERL)
761 fi
762 fi
763 else
764 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
765 fi
766 fi
767
768 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000769 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000770 dir=/System/Library/Perl
771 darwindir=$dir/darwin
772 if test -d $darwindir; then
773 PERL=/usr/bin/perl
774 else
775 dnl Mac OS X 10.3
776 dir=/System/Library/Perl/5.8.1
777 darwindir=$dir/darwin-thread-multi-2level
778 if test -d $darwindir; then
779 PERL=/usr/bin/perl
780 fi
781 fi
782 if test -n "$PERL"; then
783 PERL_DIR="$dir"
784 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
785 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
786 PERL_LIBS="-L$darwindir/CORE -lperl"
787 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200788 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
789 dnl be included if requested by passing --with-mac-arch to
790 dnl configure, so strip these flags first (if present)
791 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
792 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 +0000793 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200794 if test "$enable_perlinterp" = "dynamic"; then
795 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
796 AC_DEFINE(DYNAMIC_PERL)
797 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
798 fi
799 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100800
801 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
802 AC_MSG_ERROR([could not configure perl])
803 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000804fi
805AC_SUBST(shrpenv)
806AC_SUBST(PERL_SRC)
807AC_SUBST(PERL_OBJ)
808AC_SUBST(PERL_PRO)
809AC_SUBST(PERL_CFLAGS)
810AC_SUBST(PERL_LIBS)
811
812AC_MSG_CHECKING(--enable-pythoninterp argument)
813AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200814 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000815 [enable_pythoninterp="no"])
816AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200817if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000818 dnl -- find the python executable
819 AC_PATH_PROG(vi_cv_path_python, python)
820 if test "X$vi_cv_path_python" != "X"; then
821
822 dnl -- get its version number
823 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
824 [[vi_cv_var_python_version=`
825 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
826 ]])
827
828 dnl -- it must be at least version 1.4
829 AC_MSG_CHECKING(Python is 1.4 or better)
830 if ${vi_cv_path_python} -c \
831 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
832 then
833 AC_MSG_RESULT(yep)
834
835 dnl -- find where python thinks it was installed
836 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
837 [ vi_cv_path_python_pfx=`
838 ${vi_cv_path_python} -c \
839 "import sys; print sys.prefix"` ])
840
841 dnl -- and where it thinks it runs
842 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
843 [ vi_cv_path_python_epfx=`
844 ${vi_cv_path_python} -c \
845 "import sys; print sys.exec_prefix"` ])
846
847 dnl -- python's internal library path
848
849 AC_CACHE_VAL(vi_cv_path_pythonpath,
850 [ vi_cv_path_pythonpath=`
851 unset PYTHONPATH;
852 ${vi_cv_path_python} -c \
853 "import sys, string; print string.join(sys.path,':')"` ])
854
855 dnl -- where the Python implementation library archives are
856
857 AC_ARG_WITH(python-config-dir,
858 [ --with-python-config-dir=PATH Python's config directory],
859 [ vi_cv_path_python_conf="${withval}" ] )
860
861 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
862 [
863 vi_cv_path_python_conf=
864 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000865 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000866 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
867 if test -d "$d" && test -f "$d/config.c"; then
868 vi_cv_path_python_conf="$d"
869 fi
870 done
871 done
872 ])
873
874 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
875
876 if test "X$PYTHON_CONFDIR" = "X"; then
877 AC_MSG_RESULT([can't find it!])
878 else
879
880 dnl -- we need to examine Python's config/Makefile too
881 dnl see what the interpreter is built from
882 AC_CACHE_VAL(vi_cv_path_python_plibs,
883 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000884 pwd=`pwd`
885 tmp_mkf="$pwd/config-PyMake$$"
886 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000887__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200888 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000889 @echo "python_LIBS='$(LIBS)'"
890 @echo "python_SYSLIBS='$(SYSLIBS)'"
891 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200892 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000893eof
894 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000895 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
896 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000897 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
898 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
899 vi_cv_path_python_plibs="-framework Python"
900 else
901 if test "${vi_cv_var_python_version}" = "1.4"; then
902 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
903 else
904 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
905 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200906 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 +0000907 dnl remove -ltermcap, it can conflict with an earlier -lncurses
908 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
909 fi
910 ])
911
912 PYTHON_LIBS="${vi_cv_path_python_plibs}"
913 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100914 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
Bram Moolenaar071d4272004-06-13 20:20:40 +0000915 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100916 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} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
Bram Moolenaar071d4272004-06-13 20:20:40 +0000917 fi
918 PYTHON_SRC="if_python.c"
919 dnl For Mac OSX 10.2 config.o is included in the Python library.
920 if test "x$MACOSX" = "xyes"; then
921 PYTHON_OBJ="objects/if_python.o"
922 else
923 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
924 fi
925 if test "${vi_cv_var_python_version}" = "1.4"; then
926 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
927 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100928 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000929
930 dnl On FreeBSD linking with "-pthread" is required to use threads.
931 dnl _THREAD_SAFE must be used for compiling then.
932 dnl The "-pthread" is added to $LIBS, so that the following check for
933 dnl sigaltstack() will look in libc_r (it's there in libc!).
934 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
935 dnl will then define target-specific defines, e.g., -D_REENTRANT.
936 dnl Don't do this for Mac OSX, -pthread will generate a warning.
937 AC_MSG_CHECKING([if -pthread should be used])
938 threadsafe_flag=
939 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000940 dnl if test "x$MACOSX" != "xyes"; then
941 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000942 test "$GCC" = yes && threadsafe_flag="-pthread"
943 if test "`(uname) 2>/dev/null`" = FreeBSD; then
944 threadsafe_flag="-D_THREAD_SAFE"
945 thread_lib="-pthread"
946 fi
947 fi
948 libs_save_old=$LIBS
949 if test -n "$threadsafe_flag"; then
950 cflags_save=$CFLAGS
951 CFLAGS="$CFLAGS $threadsafe_flag"
952 LIBS="$LIBS $thread_lib"
953 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200954 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000955 AC_MSG_RESULT(no); LIBS=$libs_save_old
956 )
957 CFLAGS=$cflags_save
958 else
959 AC_MSG_RESULT(no)
960 fi
961
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200962 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000963 dnl added for Python.
964 AC_MSG_CHECKING([if compile and link flags for Python are sane])
965 cflags_save=$CFLAGS
966 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200967 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000968 LIBS="$LIBS $PYTHON_LIBS"
969 AC_TRY_LINK(,[ ],
970 AC_MSG_RESULT(yes); python_ok=yes,
971 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
972 CFLAGS=$cflags_save
973 LIBS=$libs_save
974 if test $python_ok = yes; then
975 AC_DEFINE(FEAT_PYTHON)
976 else
977 LIBS=$libs_save_old
978 PYTHON_SRC=
979 PYTHON_OBJ=
980 PYTHON_LIBS=
981 PYTHON_CFLAGS=
982 fi
983
984 fi
985 else
986 AC_MSG_RESULT(too old)
987 fi
988 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +0100989
990 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
991 AC_MSG_ERROR([could not configure python])
992 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000993fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200994
Bram Moolenaar071d4272004-06-13 20:20:40 +0000995AC_SUBST(PYTHON_CONFDIR)
996AC_SUBST(PYTHON_LIBS)
997AC_SUBST(PYTHON_GETPATH_CFLAGS)
998AC_SUBST(PYTHON_CFLAGS)
999AC_SUBST(PYTHON_SRC)
1000AC_SUBST(PYTHON_OBJ)
1001
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001002
1003AC_MSG_CHECKING(--enable-python3interp argument)
1004AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001005 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001006 [enable_python3interp="no"])
1007AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001008if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001009 dnl -- find the python3 executable
1010 AC_PATH_PROG(vi_cv_path_python3, python3)
1011 if test "X$vi_cv_path_python3" != "X"; then
1012
1013 dnl -- get its version number
1014 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1015 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001016 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001017 ]])
1018
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001019 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1020 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
1021 [
1022 vi_cv_var_python3_abiflags=
1023 if ${vi_cv_path_python3} -c \
1024 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1025 then
1026 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1027 "import sys; print(sys.abiflags)"`
1028 fi ])
1029
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001030 dnl -- find where python3 thinks it was installed
1031 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1032 [ vi_cv_path_python3_pfx=`
1033 ${vi_cv_path_python3} -c \
1034 "import sys; print(sys.prefix)"` ])
1035
1036 dnl -- and where it thinks it runs
1037 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1038 [ vi_cv_path_python3_epfx=`
1039 ${vi_cv_path_python3} -c \
1040 "import sys; print(sys.exec_prefix)"` ])
1041
1042 dnl -- python3's internal library path
1043
1044 AC_CACHE_VAL(vi_cv_path_python3path,
1045 [ vi_cv_path_python3path=`
1046 unset PYTHONPATH;
1047 ${vi_cv_path_python3} -c \
1048 "import sys, string; print(':'.join(sys.path))"` ])
1049
1050 dnl -- where the Python implementation library archives are
1051
1052 AC_ARG_WITH(python3-config-dir,
1053 [ --with-python3-config-dir=PATH Python's config directory],
1054 [ vi_cv_path_python3_conf="${withval}" ] )
1055
1056 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1057 [
1058 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001059 config_dir="config"
1060 if test "${vi_cv_var_python3_abiflags}" != ""; then
1061 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1062 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001063 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001064 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001065 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001066 if test -d "$d" && test -f "$d/config.c"; then
1067 vi_cv_path_python3_conf="$d"
1068 fi
1069 done
1070 done
1071 ])
1072
1073 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1074
1075 if test "X$PYTHON3_CONFDIR" = "X"; then
1076 AC_MSG_RESULT([can't find it!])
1077 else
1078
1079 dnl -- we need to examine Python's config/Makefile too
1080 dnl see what the interpreter is built from
1081 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1082 [
1083 pwd=`pwd`
1084 tmp_mkf="$pwd/config-PyMake$$"
1085 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1086__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001087 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001088 @echo "python3_LIBS='$(LIBS)'"
1089 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001090 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001091eof
1092 dnl -- delete the lines from make about Entering/Leaving directory
1093 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1094 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001095 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001096 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001097 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1098 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1099 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1100 ])
1101
1102 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1103 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001104 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001105 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001106 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001107 fi
1108 PYTHON3_SRC="if_python3.c"
1109 dnl For Mac OSX 10.2 config.o is included in the Python library.
1110 if test "x$MACOSX" = "xyes"; then
1111 PYTHON3_OBJ="objects/if_python3.o"
1112 else
1113 PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
1114 fi
1115
1116 dnl On FreeBSD linking with "-pthread" is required to use threads.
1117 dnl _THREAD_SAFE must be used for compiling then.
1118 dnl The "-pthread" is added to $LIBS, so that the following check for
1119 dnl sigaltstack() will look in libc_r (it's there in libc!).
1120 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1121 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1122 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1123 AC_MSG_CHECKING([if -pthread should be used])
1124 threadsafe_flag=
1125 thread_lib=
1126 dnl if test "x$MACOSX" != "xyes"; then
1127 if test "`(uname) 2>/dev/null`" != Darwin; then
1128 test "$GCC" = yes && threadsafe_flag="-pthread"
1129 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1130 threadsafe_flag="-D_THREAD_SAFE"
1131 thread_lib="-pthread"
1132 fi
1133 fi
1134 libs_save_old=$LIBS
1135 if test -n "$threadsafe_flag"; then
1136 cflags_save=$CFLAGS
1137 CFLAGS="$CFLAGS $threadsafe_flag"
1138 LIBS="$LIBS $thread_lib"
1139 AC_TRY_LINK(,[ ],
1140 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1141 AC_MSG_RESULT(no); LIBS=$libs_save_old
1142 )
1143 CFLAGS=$cflags_save
1144 else
1145 AC_MSG_RESULT(no)
1146 fi
1147
1148 dnl check that compiling a simple program still works with the flags
1149 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001150 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001151 cflags_save=$CFLAGS
1152 libs_save=$LIBS
1153 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1154 LIBS="$LIBS $PYTHON3_LIBS"
1155 AC_TRY_LINK(,[ ],
1156 AC_MSG_RESULT(yes); python3_ok=yes,
1157 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1158 CFLAGS=$cflags_save
1159 LIBS=$libs_save
1160 if test "$python3_ok" = yes; then
1161 AC_DEFINE(FEAT_PYTHON3)
1162 else
1163 LIBS=$libs_save_old
1164 PYTHON3_SRC=
1165 PYTHON3_OBJ=
1166 PYTHON3_LIBS=
1167 PYTHON3_CFLAGS=
1168 fi
1169 fi
1170 fi
1171fi
1172
1173AC_SUBST(PYTHON3_CONFDIR)
1174AC_SUBST(PYTHON3_LIBS)
1175AC_SUBST(PYTHON3_CFLAGS)
1176AC_SUBST(PYTHON3_SRC)
1177AC_SUBST(PYTHON3_OBJ)
1178
1179dnl if python2.x and python3.x are enabled one can only link in code
1180dnl with dlopen(), dlsym(), dlclose()
1181if test "$python_ok" = yes && test "$python3_ok" = yes; then
1182 AC_DEFINE(DYNAMIC_PYTHON)
1183 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001184 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001185 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001186 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001187 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001188 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1189 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001190 AC_RUN_IFELSE([
1191 #include <dlfcn.h>
1192 /* If this program fails, then RTLD_GLOBAL is needed.
1193 * RTLD_GLOBAL will be used and then it is not possible to
1194 * have both python versions enabled in the same vim instance.
1195 * Only the first pyhton version used will be switched on.
1196 */
1197
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001198 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001199 {
1200 int needed = 0;
1201 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1202 if (pylib != 0)
1203 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001204 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001205 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1206 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1207 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001208 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001209 (*init)();
1210 needed = (*simple)("import termios") == -1;
1211 (*final)();
1212 dlclose(pylib);
1213 }
1214 return !needed;
1215 }
1216
1217 int main(int argc, char** argv)
1218 {
1219 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001220 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001221 not_needed = 1;
1222 return !not_needed;
1223 }],
1224 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001225
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001226 CFLAGS=$cflags_save
1227 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001228
1229 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1230 cflags_save=$CFLAGS
1231 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1232 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001233 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1234 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001235 AC_RUN_IFELSE([
1236 #include <dlfcn.h>
1237 #include <wchar.h>
1238 /* If this program fails, then RTLD_GLOBAL is needed.
1239 * RTLD_GLOBAL will be used and then it is not possible to
1240 * have both python versions enabled in the same vim instance.
1241 * Only the first pyhton version used will be switched on.
1242 */
1243
1244 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1245 {
1246 int needed = 0;
1247 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1248 if (pylib != 0)
1249 {
1250 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1251 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1252 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1253 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1254 (*pfx)(prefix);
1255 (*init)();
1256 needed = (*simple)("import termios") == -1;
1257 (*final)();
1258 dlclose(pylib);
1259 }
1260 return !needed;
1261 }
1262
1263 int main(int argc, char** argv)
1264 {
1265 int not_needed = 0;
1266 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1267 not_needed = 1;
1268 return !not_needed;
1269 }],
1270 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1271
1272 CFLAGS=$cflags_save
1273 LDFLAGS=$ldflags_save
1274
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001275 PYTHON_SRC="if_python.c"
1276 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001277 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001278 PYTHON_LIBS=
1279 PYTHON3_SRC="if_python3.c"
1280 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001281 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001282 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001283elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1284 AC_DEFINE(DYNAMIC_PYTHON)
1285 PYTHON_SRC="if_python.c"
1286 PYTHON_OBJ="objects/if_python.o"
1287 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1288 PYTHON_LIBS=
1289elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1290 AC_DEFINE(DYNAMIC_PYTHON3)
1291 PYTHON3_SRC="if_python3.c"
1292 PYTHON3_OBJ="objects/if_python3.o"
1293 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1294 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001295fi
1296
Bram Moolenaar071d4272004-06-13 20:20:40 +00001297AC_MSG_CHECKING(--enable-tclinterp argument)
1298AC_ARG_ENABLE(tclinterp,
1299 [ --enable-tclinterp Include Tcl interpreter.], ,
1300 [enable_tclinterp="no"])
1301AC_MSG_RESULT($enable_tclinterp)
1302
1303if test "$enable_tclinterp" = "yes"; then
1304
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001305 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001306 AC_MSG_CHECKING(--with-tclsh argument)
1307 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1308 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001309 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001310 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1311 AC_SUBST(vi_cv_path_tcl)
1312
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001313 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1314 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1315 tclsh_name="tclsh8.4"
1316 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1317 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001318 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001319 tclsh_name="tclsh8.2"
1320 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1321 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001322 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1323 tclsh_name="tclsh8.0"
1324 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1325 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001326 dnl still didn't find it, try without version number
1327 if test "X$vi_cv_path_tcl" = "X"; then
1328 tclsh_name="tclsh"
1329 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1330 fi
1331 if test "X$vi_cv_path_tcl" != "X"; then
1332 AC_MSG_CHECKING(Tcl version)
1333 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1334 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1335 AC_MSG_RESULT($tclver - OK);
1336 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 -`
1337
1338 AC_MSG_CHECKING(for location of Tcl include)
1339 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001340 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 +00001341 else
1342 dnl For Mac OS X 10.3, use the OS-provided framework location
1343 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1344 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001345 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001346 for try in $tclinc; do
1347 if test -f "$try/tcl.h"; then
1348 AC_MSG_RESULT($try/tcl.h)
1349 TCL_INC=$try
1350 break
1351 fi
1352 done
1353 if test -z "$TCL_INC"; then
1354 AC_MSG_RESULT(<not found>)
1355 SKIP_TCL=YES
1356 fi
1357 if test -z "$SKIP_TCL"; then
1358 AC_MSG_CHECKING(for location of tclConfig.sh script)
1359 if test "x$MACOSX" != "xyes"; then
1360 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001361 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001362 else
1363 dnl For Mac OS X 10.3, use the OS-provided framework location
1364 tclcnf="/System/Library/Frameworks/Tcl.framework"
1365 fi
1366 for try in $tclcnf; do
1367 if test -f $try/tclConfig.sh; then
1368 AC_MSG_RESULT($try/tclConfig.sh)
1369 . $try/tclConfig.sh
1370 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1371 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1372 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001373 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001374 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 +00001375 break
1376 fi
1377 done
1378 if test -z "$TCL_LIBS"; then
1379 AC_MSG_RESULT(<not found>)
1380 AC_MSG_CHECKING(for Tcl library by myself)
1381 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001382 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001383 for ext in .so .a ; do
1384 for ver in "" $tclver ; do
1385 for try in $tcllib ; do
1386 trylib=tcl$ver$ext
1387 if test -f $try/lib$trylib ; then
1388 AC_MSG_RESULT($try/lib$trylib)
1389 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1390 if test "`(uname) 2>/dev/null`" = SunOS &&
1391 uname -r | grep '^5' >/dev/null; then
1392 TCL_LIBS="$TCL_LIBS -R $try"
1393 fi
1394 break 3
1395 fi
1396 done
1397 done
1398 done
1399 if test -z "$TCL_LIBS"; then
1400 AC_MSG_RESULT(<not found>)
1401 SKIP_TCL=YES
1402 fi
1403 fi
1404 if test -z "$SKIP_TCL"; then
1405 AC_DEFINE(FEAT_TCL)
1406 TCL_SRC=if_tcl.c
1407 TCL_OBJ=objects/if_tcl.o
1408 TCL_PRO=if_tcl.pro
1409 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1410 fi
1411 fi
1412 else
1413 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1414 fi
1415 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001416 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1417 AC_MSG_ERROR([could not configure Tcl])
1418 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001419fi
1420AC_SUBST(TCL_SRC)
1421AC_SUBST(TCL_OBJ)
1422AC_SUBST(TCL_PRO)
1423AC_SUBST(TCL_CFLAGS)
1424AC_SUBST(TCL_LIBS)
1425
1426AC_MSG_CHECKING(--enable-rubyinterp argument)
1427AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001428 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001429 [enable_rubyinterp="no"])
1430AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001431if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001432 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001433 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001434 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1435 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1436 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001437 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001438 if test "X$vi_cv_path_ruby" != "X"; then
1439 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001440 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 +00001441 AC_MSG_RESULT(OK)
1442 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001443 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 +00001444 if test "X$rubyhdrdir" != "X"; then
1445 AC_MSG_RESULT($rubyhdrdir)
1446 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001447 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1448 if test -d "$rubyhdrdir/$rubyarch"; then
1449 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1450 fi
1451 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1452 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001453 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1454 if test "X$rubylibs" != "X"; then
1455 RUBY_LIBS="$rubylibs"
1456 fi
1457 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001458 librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'`
1459 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1460 if test -f "$rubylibdir/$librubya"; then
1461 librubyarg="$librubyarg"
1462 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1463 elif test "$librubyarg" = "libruby.a"; then
1464 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1465 librubyarg="-lruby"
1466 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001467 fi
1468
1469 if test "X$librubyarg" != "X"; then
1470 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1471 fi
1472 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1473 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001474 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1475 dnl be included if requested by passing --with-mac-arch to
1476 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001477 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001478 if test "X$rubyldflags" != "X"; then
1479 LDFLAGS="$rubyldflags $LDFLAGS"
1480 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001481 fi
1482 RUBY_SRC="if_ruby.c"
1483 RUBY_OBJ="objects/if_ruby.o"
1484 RUBY_PRO="if_ruby.pro"
1485 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001486 if test "$enable_rubyinterp" = "dynamic"; then
1487 libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
1488 AC_DEFINE(DYNAMIC_RUBY)
1489 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1490 RUBY_LIBS=
1491 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001492 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001493 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001494 fi
1495 else
1496 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1497 fi
1498 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001499
1500 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1501 AC_MSG_ERROR([could not configure Ruby])
1502 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001503fi
1504AC_SUBST(RUBY_SRC)
1505AC_SUBST(RUBY_OBJ)
1506AC_SUBST(RUBY_PRO)
1507AC_SUBST(RUBY_CFLAGS)
1508AC_SUBST(RUBY_LIBS)
1509
1510AC_MSG_CHECKING(--enable-cscope argument)
1511AC_ARG_ENABLE(cscope,
1512 [ --enable-cscope Include cscope interface.], ,
1513 [enable_cscope="no"])
1514AC_MSG_RESULT($enable_cscope)
1515if test "$enable_cscope" = "yes"; then
1516 AC_DEFINE(FEAT_CSCOPE)
1517fi
1518
1519AC_MSG_CHECKING(--enable-workshop argument)
1520AC_ARG_ENABLE(workshop,
1521 [ --enable-workshop Include Sun Visual Workshop support.], ,
1522 [enable_workshop="no"])
1523AC_MSG_RESULT($enable_workshop)
1524if test "$enable_workshop" = "yes"; then
1525 AC_DEFINE(FEAT_SUN_WORKSHOP)
1526 WORKSHOP_SRC="workshop.c integration.c"
1527 AC_SUBST(WORKSHOP_SRC)
1528 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1529 AC_SUBST(WORKSHOP_OBJ)
1530 if test "${enable_gui-xxx}" = xxx; then
1531 enable_gui=motif
1532 fi
1533fi
1534
1535AC_MSG_CHECKING(--disable-netbeans argument)
1536AC_ARG_ENABLE(netbeans,
1537 [ --disable-netbeans Disable NetBeans integration support.],
1538 , [enable_netbeans="yes"])
1539if test "$enable_netbeans" = "yes"; then
1540 AC_MSG_RESULT(no)
1541 dnl On Solaris we need the socket and nsl library.
1542 AC_CHECK_LIB(socket, socket)
1543 AC_CHECK_LIB(nsl, gethostbyname)
1544 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1545 AC_TRY_LINK([
1546#include <stdio.h>
1547#include <stdlib.h>
1548#include <stdarg.h>
1549#include <fcntl.h>
1550#include <netdb.h>
1551#include <netinet/in.h>
1552#include <errno.h>
1553#include <sys/types.h>
1554#include <sys/socket.h>
1555 /* Check bitfields */
1556 struct nbbuf {
1557 unsigned int initDone:1;
1558 ushort signmaplen;
1559 };
1560 ], [
1561 /* Check creating a socket. */
1562 struct sockaddr_in server;
1563 (void)socket(AF_INET, SOCK_STREAM, 0);
1564 (void)htons(100);
1565 (void)gethostbyname("microsoft.com");
1566 if (errno == ECONNREFUSED)
1567 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1568 ],
1569 AC_MSG_RESULT(yes),
1570 AC_MSG_RESULT(no); enable_netbeans="no")
1571else
1572 AC_MSG_RESULT(yes)
1573fi
1574if test "$enable_netbeans" = "yes"; then
1575 AC_DEFINE(FEAT_NETBEANS_INTG)
1576 NETBEANS_SRC="netbeans.c"
1577 AC_SUBST(NETBEANS_SRC)
1578 NETBEANS_OBJ="objects/netbeans.o"
1579 AC_SUBST(NETBEANS_OBJ)
1580fi
1581
1582AC_MSG_CHECKING(--enable-sniff argument)
1583AC_ARG_ENABLE(sniff,
1584 [ --enable-sniff Include Sniff interface.], ,
1585 [enable_sniff="no"])
1586AC_MSG_RESULT($enable_sniff)
1587if test "$enable_sniff" = "yes"; then
1588 AC_DEFINE(FEAT_SNIFF)
1589 SNIFF_SRC="if_sniff.c"
1590 AC_SUBST(SNIFF_SRC)
1591 SNIFF_OBJ="objects/if_sniff.o"
1592 AC_SUBST(SNIFF_OBJ)
1593fi
1594
1595AC_MSG_CHECKING(--enable-multibyte argument)
1596AC_ARG_ENABLE(multibyte,
1597 [ --enable-multibyte Include multibyte editing support.], ,
1598 [enable_multibyte="no"])
1599AC_MSG_RESULT($enable_multibyte)
1600if test "$enable_multibyte" = "yes"; then
1601 AC_DEFINE(FEAT_MBYTE)
1602fi
1603
1604AC_MSG_CHECKING(--enable-hangulinput argument)
1605AC_ARG_ENABLE(hangulinput,
1606 [ --enable-hangulinput Include Hangul input support.], ,
1607 [enable_hangulinput="no"])
1608AC_MSG_RESULT($enable_hangulinput)
1609
1610AC_MSG_CHECKING(--enable-xim argument)
1611AC_ARG_ENABLE(xim,
1612 [ --enable-xim Include XIM input support.],
1613 AC_MSG_RESULT($enable_xim),
1614 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001615
1616AC_MSG_CHECKING(--enable-fontset argument)
1617AC_ARG_ENABLE(fontset,
1618 [ --enable-fontset Include X fontset output support.], ,
1619 [enable_fontset="no"])
1620AC_MSG_RESULT($enable_fontset)
1621dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1622
1623test -z "$with_x" && with_x=yes
1624test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1625if test "$with_x" = no; then
1626 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1627else
1628 dnl Do this check early, so that its failure can override user requests.
1629
1630 AC_PATH_PROG(xmkmfpath, xmkmf)
1631
1632 AC_PATH_XTRA
1633
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001634 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001635 dnl be compiled with a special option.
1636 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001637 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001638 CFLAGS="$CFLAGS -W c,dll"
1639 LDFLAGS="$LDFLAGS -W l,dll"
1640 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1641 fi
1642
1643 dnl On my HPUX system the X include dir is found, but the lib dir not.
1644 dnl This is a desparate try to fix this.
1645
1646 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1647 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1648 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1649 X_LIBS="$X_LIBS -L$x_libraries"
1650 if test "`(uname) 2>/dev/null`" = SunOS &&
1651 uname -r | grep '^5' >/dev/null; then
1652 X_LIBS="$X_LIBS -R $x_libraries"
1653 fi
1654 fi
1655
1656 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1657 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1658 AC_MSG_RESULT(Corrected X includes to $x_includes)
1659 X_CFLAGS="$X_CFLAGS -I$x_includes"
1660 fi
1661
1662 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1663 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1664 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1665 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1666 dnl Same for "-R/usr/lib ".
1667 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1668
1669
1670 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001671 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1672 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001673 AC_MSG_CHECKING(if X11 header files can be found)
1674 cflags_save=$CFLAGS
1675 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001676 AC_TRY_COMPILE([#include <X11/Xlib.h>
1677#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001678 AC_MSG_RESULT(yes),
1679 AC_MSG_RESULT(no); no_x=yes)
1680 CFLAGS=$cflags_save
1681
1682 if test "${no_x-no}" = yes; then
1683 with_x=no
1684 else
1685 AC_DEFINE(HAVE_X11)
1686 X_LIB="-lXt -lX11";
1687 AC_SUBST(X_LIB)
1688
1689 ac_save_LDFLAGS="$LDFLAGS"
1690 LDFLAGS="-L$x_libraries $LDFLAGS"
1691
1692 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1693 dnl For HP-UX 10.20 it must be before -lSM -lICE
1694 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1695 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1696
1697 dnl Some systems need -lnsl -lsocket when testing for ICE.
1698 dnl The check above doesn't do this, try here (again). Also needed to get
1699 dnl them after Xdmcp. link.sh will remove them when not needed.
1700 dnl Check for other function than above to avoid the cached value
1701 AC_CHECK_LIB(ICE, IceOpenConnection,
1702 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1703
1704 dnl Check for -lXpm (needed for some versions of Motif)
1705 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1706 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1707 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1708
1709 dnl Check that the X11 header files don't use implicit declarations
1710 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1711 cflags_save=$CFLAGS
1712 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1713 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1714 AC_MSG_RESULT(no),
1715 CFLAGS="$CFLAGS -Wno-implicit-int"
1716 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1717 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1718 AC_MSG_RESULT(test failed)
1719 )
1720 )
1721 CFLAGS=$cflags_save
1722
1723 LDFLAGS="$ac_save_LDFLAGS"
1724
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001725 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1726 AC_CACHE_VAL(ac_cv_small_wchar_t,
1727 [AC_TRY_RUN([
1728#include <X11/Xlib.h>
1729#if STDC_HEADERS
1730# include <stdlib.h>
1731# include <stddef.h>
1732#endif
1733 main()
1734 {
1735 if (sizeof(wchar_t) <= 2)
1736 exit(1);
1737 exit(0);
1738 }],
1739 ac_cv_small_wchar_t="no",
1740 ac_cv_small_wchar_t="yes",
1741 AC_MSG_ERROR(failed to compile test program))])
1742 AC_MSG_RESULT($ac_cv_small_wchar_t)
1743 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1744 AC_DEFINE(SMALL_WCHAR_T)
1745 fi
1746
Bram Moolenaar071d4272004-06-13 20:20:40 +00001747 fi
1748fi
1749
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001750test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001751
1752AC_MSG_CHECKING(--enable-gui argument)
1753AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001754 [ --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 +00001755
1756dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1757dnl Do not use character classes for portability with old tools.
1758enable_gui_canon=`echo "_$enable_gui" | \
1759 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1760
1761dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001762SKIP_GTK2=YES
1763SKIP_GNOME=YES
1764SKIP_MOTIF=YES
1765SKIP_ATHENA=YES
1766SKIP_NEXTAW=YES
1767SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001768SKIP_CARBON=YES
1769GUITYPE=NONE
1770
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001771if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001772 SKIP_PHOTON=
1773 case "$enable_gui_canon" in
1774 no) AC_MSG_RESULT(no GUI support)
1775 SKIP_PHOTON=YES ;;
1776 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1777 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1778 photon) AC_MSG_RESULT(Photon GUI support) ;;
1779 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1780 SKIP_PHOTON=YES ;;
1781 esac
1782
1783elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1784 SKIP_CARBON=
1785 case "$enable_gui_canon" in
1786 no) AC_MSG_RESULT(no GUI support)
1787 SKIP_CARBON=YES ;;
1788 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001789 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1790 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001791 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1792 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1793 SKIP_CARBON=YES ;;
1794 esac
1795
1796else
1797
Bram Moolenaar071d4272004-06-13 20:20:40 +00001798 case "$enable_gui_canon" in
1799 no|none) AC_MSG_RESULT(no GUI support) ;;
1800 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001801 SKIP_GTK2=
1802 SKIP_GNOME=
1803 SKIP_MOTIF=
1804 SKIP_ATHENA=
1805 SKIP_NEXTAW=
1806 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001807 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001808 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001809 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1810 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001811 SKIP_GTK2=;;
1812 motif) AC_MSG_RESULT(Motif GUI support)
1813 SKIP_MOTIF=;;
1814 athena) AC_MSG_RESULT(Athena GUI support)
1815 SKIP_ATHENA=;;
1816 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1817 SKIP_NEXTAW=;;
1818 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1819 esac
1820
1821fi
1822
Bram Moolenaar071d4272004-06-13 20:20:40 +00001823if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1824 -a "$enable_gui_canon" != "gnome2"; then
1825 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1826 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001827 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001828 , enable_gtk2_check="yes")
1829 AC_MSG_RESULT($enable_gtk2_check)
1830 if test "x$enable_gtk2_check" = "xno"; then
1831 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001832 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001833 fi
1834fi
1835
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001836if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001837 AC_MSG_CHECKING(whether or not to look for GNOME)
1838 AC_ARG_ENABLE(gnome-check,
1839 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1840 , enable_gnome_check="no")
1841 AC_MSG_RESULT($enable_gnome_check)
1842 if test "x$enable_gnome_check" = "xno"; then
1843 SKIP_GNOME=YES
1844 fi
1845fi
1846
1847if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1848 AC_MSG_CHECKING(whether or not to look for Motif)
1849 AC_ARG_ENABLE(motif-check,
1850 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1851 , enable_motif_check="yes")
1852 AC_MSG_RESULT($enable_motif_check)
1853 if test "x$enable_motif_check" = "xno"; then
1854 SKIP_MOTIF=YES
1855 fi
1856fi
1857
1858if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1859 AC_MSG_CHECKING(whether or not to look for Athena)
1860 AC_ARG_ENABLE(athena-check,
1861 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1862 , enable_athena_check="yes")
1863 AC_MSG_RESULT($enable_athena_check)
1864 if test "x$enable_athena_check" = "xno"; then
1865 SKIP_ATHENA=YES
1866 fi
1867fi
1868
1869if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1870 AC_MSG_CHECKING(whether or not to look for neXtaw)
1871 AC_ARG_ENABLE(nextaw-check,
1872 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1873 , enable_nextaw_check="yes")
1874 AC_MSG_RESULT($enable_nextaw_check);
1875 if test "x$enable_nextaw_check" = "xno"; then
1876 SKIP_NEXTAW=YES
1877 fi
1878fi
1879
1880if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1881 AC_MSG_CHECKING(whether or not to look for Carbon)
1882 AC_ARG_ENABLE(carbon-check,
1883 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1884 , enable_carbon_check="yes")
1885 AC_MSG_RESULT($enable_carbon_check);
1886 if test "x$enable_carbon_check" = "xno"; then
1887 SKIP_CARBON=YES
1888 fi
1889fi
1890
Bram Moolenaar843ee412004-06-30 16:16:41 +00001891
Bram Moolenaar071d4272004-06-13 20:20:40 +00001892if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1893 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001894 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001895 AC_MSG_RESULT(yes);
1896 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001897 if test "$VIMNAME" = "vim"; then
1898 VIMNAME=Vim
1899 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001900
Bram Moolenaar164fca32010-07-14 13:58:07 +02001901 if test "x$MACARCH" = "xboth"; then
1902 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1903 else
1904 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1905 fi
1906
Bram Moolenaar14716812006-05-04 21:54:08 +00001907 dnl Default install directory is not /usr/local
1908 if test x$prefix = xNONE; then
1909 prefix=/Applications
1910 fi
1911
1912 dnl Sorry for the hard coded default
1913 datadir='${prefix}/Vim.app/Contents/Resources'
1914
Bram Moolenaar071d4272004-06-13 20:20:40 +00001915 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001916 SKIP_GTK2=YES;
1917 SKIP_GNOME=YES;
1918 SKIP_MOTIF=YES;
1919 SKIP_ATHENA=YES;
1920 SKIP_NEXTAW=YES;
1921 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001922 SKIP_CARBON=YES
1923fi
1924
Bram Moolenaar071d4272004-06-13 20:20:40 +00001925dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001926dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001927dnl
1928dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001929dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001930dnl
1931AC_DEFUN(AM_PATH_GTK,
1932[
1933 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1934 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001935 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001936 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1937 no_gtk=""
1938 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1939 && $PKG_CONFIG --exists gtk+-2.0; then
1940 {
1941 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1942 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1943 dnl something like that.
1944 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001945 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001946 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1947 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1948 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1949 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1950 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1951 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1952 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1953 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001954 else
1955 no_gtk=yes
1956 fi
1957
1958 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1959 {
1960 ac_save_CFLAGS="$CFLAGS"
1961 ac_save_LIBS="$LIBS"
1962 CFLAGS="$CFLAGS $GTK_CFLAGS"
1963 LIBS="$LIBS $GTK_LIBS"
1964
1965 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001966 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001967 dnl
1968 rm -f conf.gtktest
1969 AC_TRY_RUN([
1970#include <gtk/gtk.h>
1971#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001972#if STDC_HEADERS
1973# include <stdlib.h>
1974# include <stddef.h>
1975#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001976
1977int
1978main ()
1979{
1980int major, minor, micro;
1981char *tmp_version;
1982
1983system ("touch conf.gtktest");
1984
1985/* HP/UX 9 (%@#!) writes to sscanf strings */
1986tmp_version = g_strdup("$min_gtk_version");
1987if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1988 printf("%s, bad version string\n", "$min_gtk_version");
1989 exit(1);
1990 }
1991
1992if ((gtk_major_version > major) ||
1993 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1994 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1995 (gtk_micro_version >= micro)))
1996{
1997 return 0;
1998}
1999return 1;
2000}
2001],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2002 CFLAGS="$ac_save_CFLAGS"
2003 LIBS="$ac_save_LIBS"
2004 }
2005 fi
2006 if test "x$no_gtk" = x ; then
2007 if test "x$enable_gtktest" = "xyes"; then
2008 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2009 else
2010 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2011 fi
2012 ifelse([$2], , :, [$2])
2013 else
2014 {
2015 AC_MSG_RESULT(no)
2016 GTK_CFLAGS=""
2017 GTK_LIBS=""
2018 ifelse([$3], , :, [$3])
2019 }
2020 fi
2021 }
2022 else
2023 GTK_CFLAGS=""
2024 GTK_LIBS=""
2025 ifelse([$3], , :, [$3])
2026 fi
2027 AC_SUBST(GTK_CFLAGS)
2028 AC_SUBST(GTK_LIBS)
2029 rm -f conf.gtktest
2030])
2031
2032dnl ---------------------------------------------------------------------------
2033dnl gnome
2034dnl ---------------------------------------------------------------------------
2035AC_DEFUN([GNOME_INIT_HOOK],
2036[
2037 AC_SUBST(GNOME_LIBS)
2038 AC_SUBST(GNOME_LIBDIR)
2039 AC_SUBST(GNOME_INCLUDEDIR)
2040
2041 AC_ARG_WITH(gnome-includes,
2042 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2043 [CFLAGS="$CFLAGS -I$withval"]
2044 )
2045
2046 AC_ARG_WITH(gnome-libs,
2047 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2048 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2049 )
2050
2051 AC_ARG_WITH(gnome,
2052 [ --with-gnome Specify prefix for GNOME files],
2053 if test x$withval = xyes; then
2054 want_gnome=yes
2055 ifelse([$1], [], :, [$1])
2056 else
2057 if test "x$withval" = xno; then
2058 want_gnome=no
2059 else
2060 want_gnome=yes
2061 LDFLAGS="$LDFLAGS -L$withval/lib"
2062 CFLAGS="$CFLAGS -I$withval/include"
2063 gnome_prefix=$withval/lib
2064 fi
2065 fi,
2066 want_gnome=yes)
2067
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002068 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002069 {
2070 AC_MSG_CHECKING(for libgnomeui-2.0)
2071 if $PKG_CONFIG --exists libgnomeui-2.0; then
2072 AC_MSG_RESULT(yes)
2073 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2074 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2075 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002076
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002077 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2078 dnl This might not be the right way but it works for me...
2079 AC_MSG_CHECKING(for FreeBSD)
2080 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2081 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002082 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002083 GNOME_LIBS="$GNOME_LIBS -pthread"
2084 else
2085 AC_MSG_RESULT(no)
2086 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002087 $1
2088 else
2089 AC_MSG_RESULT(not found)
2090 if test "x$2" = xfail; then
2091 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2092 fi
2093 fi
2094 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002095 fi
2096])
2097
2098AC_DEFUN([GNOME_INIT],[
2099 GNOME_INIT_HOOK([],fail)
2100])
2101
2102
2103dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002104dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002105dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002106if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002107
2108 AC_MSG_CHECKING(--disable-gtktest argument)
2109 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2110 , enable_gtktest=yes)
2111 if test "x$enable_gtktest" = "xyes" ; then
2112 AC_MSG_RESULT(gtk test enabled)
2113 else
2114 AC_MSG_RESULT(gtk test disabled)
2115 fi
2116
Bram Moolenaar071d4272004-06-13 20:20:40 +00002117 if test "X$PKG_CONFIG" = "X"; then
2118 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2119 fi
2120
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002121 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002122 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2123 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002124 AM_PATH_GTK(2.2.0,
2125 [GUI_LIB_LOC="$GTK_LIBDIR"
2126 GTK_LIBNAME="$GTK_LIBS"
2127 GUI_INC_LOC="$GTK_CFLAGS"], )
2128 if test "x$GTK_CFLAGS" != "x"; then
2129 SKIP_ATHENA=YES
2130 SKIP_NEXTAW=YES
2131 SKIP_MOTIF=YES
2132 GUITYPE=GTK
2133 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002134 fi
2135 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002136 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002137 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2138 || test "0$gtk_minor_version" -ge 2; then
2139 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2140 fi
2141 dnl
2142 dnl if GTK exists, then check for GNOME.
2143 dnl
2144 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002145 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002146 GNOME_INIT_HOOK([have_gnome=yes])
2147 if test "x$have_gnome" = xyes ; then
2148 AC_DEFINE(FEAT_GUI_GNOME)
2149 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2150 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002151 fi
2152 }
2153 fi
2154 fi
2155fi
2156
2157dnl Check for Motif include files location.
2158dnl The LAST one found is used, this makes the highest version to be used,
2159dnl e.g. when Motif1.2 and Motif2.0 are both present.
2160
2161if test -z "$SKIP_MOTIF"; then
2162 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"
2163 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2164 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2165
2166 AC_MSG_CHECKING(for location of Motif GUI includes)
2167 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2168 GUI_INC_LOC=
2169 for try in $gui_includes; do
2170 if test -f "$try/Xm/Xm.h"; then
2171 GUI_INC_LOC=$try
2172 fi
2173 done
2174 if test -n "$GUI_INC_LOC"; then
2175 if test "$GUI_INC_LOC" = /usr/include; then
2176 GUI_INC_LOC=
2177 AC_MSG_RESULT(in default path)
2178 else
2179 AC_MSG_RESULT($GUI_INC_LOC)
2180 fi
2181 else
2182 AC_MSG_RESULT(<not found>)
2183 SKIP_MOTIF=YES
2184 fi
2185fi
2186
2187dnl Check for Motif library files location. In the same order as the include
2188dnl files, to avoid a mixup if several versions are present
2189
2190if test -z "$SKIP_MOTIF"; then
2191 AC_MSG_CHECKING(--with-motif-lib argument)
2192 AC_ARG_WITH(motif-lib,
2193 [ --with-motif-lib=STRING Library for Motif ],
2194 [ MOTIF_LIBNAME="${withval}" ] )
2195
2196 if test -n "$MOTIF_LIBNAME"; then
2197 AC_MSG_RESULT($MOTIF_LIBNAME)
2198 GUI_LIB_LOC=
2199 else
2200 AC_MSG_RESULT(no)
2201
2202 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2203 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2204
2205 AC_MSG_CHECKING(for location of Motif GUI libs)
2206 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"
2207 GUI_LIB_LOC=
2208 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002209 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002210 if test -f "$libtry"; then
2211 GUI_LIB_LOC=$try
2212 fi
2213 done
2214 done
2215 if test -n "$GUI_LIB_LOC"; then
2216 dnl Remove /usr/lib, it causes trouble on some systems
2217 if test "$GUI_LIB_LOC" = /usr/lib; then
2218 GUI_LIB_LOC=
2219 AC_MSG_RESULT(in default path)
2220 else
2221 if test -n "$GUI_LIB_LOC"; then
2222 AC_MSG_RESULT($GUI_LIB_LOC)
2223 if test "`(uname) 2>/dev/null`" = SunOS &&
2224 uname -r | grep '^5' >/dev/null; then
2225 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2226 fi
2227 fi
2228 fi
2229 MOTIF_LIBNAME=-lXm
2230 else
2231 AC_MSG_RESULT(<not found>)
2232 SKIP_MOTIF=YES
2233 fi
2234 fi
2235fi
2236
2237if test -z "$SKIP_MOTIF"; then
2238 SKIP_ATHENA=YES
2239 SKIP_NEXTAW=YES
2240 GUITYPE=MOTIF
2241 AC_SUBST(MOTIF_LIBNAME)
2242fi
2243
2244dnl Check if the Athena files can be found
2245
2246GUI_X_LIBS=
2247
2248if test -z "$SKIP_ATHENA"; then
2249 AC_MSG_CHECKING(if Athena header files can be found)
2250 cflags_save=$CFLAGS
2251 CFLAGS="$CFLAGS $X_CFLAGS"
2252 AC_TRY_COMPILE([
2253#include <X11/Intrinsic.h>
2254#include <X11/Xaw/Paned.h>], ,
2255 AC_MSG_RESULT(yes),
2256 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2257 CFLAGS=$cflags_save
2258fi
2259
2260if test -z "$SKIP_ATHENA"; then
2261 GUITYPE=ATHENA
2262fi
2263
2264if test -z "$SKIP_NEXTAW"; then
2265 AC_MSG_CHECKING(if neXtaw header files can be found)
2266 cflags_save=$CFLAGS
2267 CFLAGS="$CFLAGS $X_CFLAGS"
2268 AC_TRY_COMPILE([
2269#include <X11/Intrinsic.h>
2270#include <X11/neXtaw/Paned.h>], ,
2271 AC_MSG_RESULT(yes),
2272 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2273 CFLAGS=$cflags_save
2274fi
2275
2276if test -z "$SKIP_NEXTAW"; then
2277 GUITYPE=NEXTAW
2278fi
2279
2280if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2281 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2282 dnl Avoid adding it when it twice
2283 if test -n "$GUI_INC_LOC"; then
2284 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2285 fi
2286 if test -n "$GUI_LIB_LOC"; then
2287 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2288 fi
2289
2290 dnl Check for -lXext and then for -lXmu
2291 ldflags_save=$LDFLAGS
2292 LDFLAGS="$X_LIBS $LDFLAGS"
2293 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2294 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2295 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2296 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2297 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2298 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2299 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2300 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2301 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2302 if test -z "$SKIP_MOTIF"; then
2303 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2304 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2305 fi
2306 LDFLAGS=$ldflags_save
2307
2308 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2309 AC_MSG_CHECKING(for extra X11 defines)
2310 NARROW_PROTO=
2311 rm -fr conftestdir
2312 if mkdir conftestdir; then
2313 cd conftestdir
2314 cat > Imakefile <<'EOF'
2315acfindx:
2316 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2317EOF
2318 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2319 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2320 fi
2321 cd ..
2322 rm -fr conftestdir
2323 fi
2324 if test -z "$NARROW_PROTO"; then
2325 AC_MSG_RESULT(no)
2326 else
2327 AC_MSG_RESULT($NARROW_PROTO)
2328 fi
2329 AC_SUBST(NARROW_PROTO)
2330fi
2331
2332dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2333dnl use the X11 include path
2334if test "$enable_xsmp" = "yes"; then
2335 cppflags_save=$CPPFLAGS
2336 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2337 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2338 CPPFLAGS=$cppflags_save
2339fi
2340
2341
Bram Moolenaare667c952010-07-05 22:57:59 +02002342if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002343 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2344 cppflags_save=$CPPFLAGS
2345 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2346 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2347
2348 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2349 if test ! "$enable_xim" = "no"; then
2350 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2351 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2352 AC_MSG_RESULT(yes),
2353 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2354 fi
2355 CPPFLAGS=$cppflags_save
2356
2357 dnl automatically enable XIM when hangul input isn't enabled
2358 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2359 -a "x$GUITYPE" != "xNONE" ; then
2360 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2361 enable_xim="yes"
2362 fi
2363fi
2364
2365if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2366 cppflags_save=$CPPFLAGS
2367 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002368dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2369 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2370 AC_TRY_COMPILE([
2371#include <X11/Intrinsic.h>
2372#include <X11/Xmu/Editres.h>],
2373 [int i; i = 0;],
2374 AC_MSG_RESULT(yes)
2375 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2376 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002377 CPPFLAGS=$cppflags_save
2378fi
2379
2380dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2381if test -z "$SKIP_MOTIF"; then
2382 cppflags_save=$CPPFLAGS
2383 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002384 if test "$zOSUnix" = "yes"; then
2385 xmheader="Xm/Xm.h"
2386 else
2387 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
2388 Xm/UnhighlightT.h Xm/Notebook.h"
2389 fi
2390 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002391
Bram Moolenaar77c19352012-06-13 19:19:41 +02002392 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002393 dnl Solaris uses XpmAttributes_21, very annoying.
2394 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2395 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2396 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2397 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2398 )
2399 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002400 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002401 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002402 CPPFLAGS=$cppflags_save
2403fi
2404
2405if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2406 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2407 enable_xim="no"
2408fi
2409if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2410 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2411 enable_fontset="no"
2412fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002413if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002414 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2415 enable_fontset="no"
2416fi
2417
Bram Moolenaar071d4272004-06-13 20:20:40 +00002418if test -z "$SKIP_PHOTON"; then
2419 GUITYPE=PHOTONGUI
2420fi
2421
2422AC_SUBST(GUI_INC_LOC)
2423AC_SUBST(GUI_LIB_LOC)
2424AC_SUBST(GUITYPE)
2425AC_SUBST(GUI_X_LIBS)
2426
2427if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2428 AC_MSG_ERROR([cannot use workshop without Motif])
2429fi
2430
2431dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2432if test "$enable_xim" = "yes"; then
2433 AC_DEFINE(FEAT_XIM)
2434fi
2435if test "$enable_fontset" = "yes"; then
2436 AC_DEFINE(FEAT_XFONTSET)
2437fi
2438
2439
2440dnl ---------------------------------------------------------------------------
2441dnl end of GUI-checking
2442dnl ---------------------------------------------------------------------------
2443
2444
2445dnl Only really enable hangul input when GUI and XFONTSET are available
2446if test "$enable_hangulinput" = "yes"; then
2447 if test "x$GUITYPE" = "xNONE"; then
2448 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2449 enable_hangulinput=no
2450 else
2451 AC_DEFINE(FEAT_HANGULIN)
2452 HANGULIN_SRC=hangulin.c
2453 AC_SUBST(HANGULIN_SRC)
2454 HANGULIN_OBJ=objects/hangulin.o
2455 AC_SUBST(HANGULIN_OBJ)
2456 fi
2457fi
2458
2459dnl Checks for libraries and include files.
2460
Bram Moolenaar446cb832008-06-24 21:56:24 +00002461AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2462 [
2463 AC_RUN_IFELSE([[
2464#include "confdefs.h"
2465#include <ctype.h>
2466#if STDC_HEADERS
2467# include <stdlib.h>
2468# include <stddef.h>
2469#endif
2470main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2471 ]],[
2472 vim_cv_toupper_broken=yes
2473 ],[
2474 vim_cv_toupper_broken=no
2475 ],[
2476 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2477 ])])
2478
2479if test "x$vim_cv_toupper_broken" = "xyes" ; then
2480 AC_DEFINE(BROKEN_TOUPPER)
2481fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002482
2483AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002484AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002485 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2486 AC_MSG_RESULT(no))
2487
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002488AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2489AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2490 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2491 AC_MSG_RESULT(no))
2492
Bram Moolenaar071d4272004-06-13 20:20:40 +00002493dnl Checks for header files.
2494AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2495dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2496if test "$HAS_ELF" = 1; then
2497 AC_CHECK_LIB(elf, main)
2498fi
2499
2500AC_HEADER_DIRENT
2501
Bram Moolenaar071d4272004-06-13 20:20:40 +00002502dnl If sys/wait.h is not found it might still exist but not be POSIX
2503dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2504if test $ac_cv_header_sys_wait_h = no; then
2505 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2506 AC_TRY_COMPILE([#include <sys/wait.h>],
2507 [union wait xx, yy; xx = yy],
2508 AC_MSG_RESULT(yes)
2509 AC_DEFINE(HAVE_SYS_WAIT_H)
2510 AC_DEFINE(HAVE_UNION_WAIT),
2511 AC_MSG_RESULT(no))
2512fi
2513
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002514AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2515 sys/select.h sys/utsname.h termcap.h fcntl.h \
2516 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2517 termio.h iconv.h inttypes.h langinfo.h math.h \
2518 unistd.h stropts.h errno.h sys/resource.h \
2519 sys/systeminfo.h locale.h sys/stream.h termios.h \
2520 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2521 utime.h sys/param.h libintl.h libgen.h \
2522 util/debug.h util/msg18n.h frame.h sys/acl.h \
2523 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002524
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002525dnl sys/ptem.h depends on sys/stream.h on Solaris
2526AC_CHECK_HEADERS(sys/ptem.h, [], [],
2527[#if defined HAVE_SYS_STREAM_H
2528# include <sys/stream.h>
2529#endif])
2530
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002531dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2532AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2533[#if defined HAVE_SYS_PARAM_H
2534# include <sys/param.h>
2535#endif])
2536
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002537
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002538dnl pthread_np.h may exist but can only be used after including pthread.h
2539AC_MSG_CHECKING([for pthread_np.h])
2540AC_TRY_COMPILE([
2541#include <pthread.h>
2542#include <pthread_np.h>],
2543 [int i; i = 0;],
2544 AC_MSG_RESULT(yes)
2545 AC_DEFINE(HAVE_PTHREAD_NP_H),
2546 AC_MSG_RESULT(no))
2547
Bram Moolenaare344bea2005-09-01 20:46:49 +00002548AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002549if test "x$MACOSX" = "xyes"; then
2550 dnl The strings.h file on OS/X contains a warning and nothing useful.
2551 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2552else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002553
2554dnl Check if strings.h and string.h can both be included when defined.
2555AC_MSG_CHECKING([if strings.h can be included after string.h])
2556cppflags_save=$CPPFLAGS
2557CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2558AC_TRY_COMPILE([
2559#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2560# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2561 /* but don't do it on AIX 5.1 (Uribarri) */
2562#endif
2563#ifdef HAVE_XM_XM_H
2564# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2565#endif
2566#ifdef HAVE_STRING_H
2567# include <string.h>
2568#endif
2569#if defined(HAVE_STRINGS_H)
2570# include <strings.h>
2571#endif
2572 ], [int i; i = 0;],
2573 AC_MSG_RESULT(yes),
2574 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2575 AC_MSG_RESULT(no))
2576CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002577fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002578
2579dnl Checks for typedefs, structures, and compiler characteristics.
2580AC_PROG_GCC_TRADITIONAL
2581AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002582AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002583AC_TYPE_MODE_T
2584AC_TYPE_OFF_T
2585AC_TYPE_PID_T
2586AC_TYPE_SIZE_T
2587AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002588AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002589
Bram Moolenaar071d4272004-06-13 20:20:40 +00002590AC_HEADER_TIME
2591AC_CHECK_TYPE(ino_t, long)
2592AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002593AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002594
2595AC_MSG_CHECKING(for rlim_t)
2596if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2597 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2598else
2599 AC_EGREP_CPP(dnl
2600changequote(<<,>>)dnl
2601<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2602changequote([,]),
2603 [
2604#include <sys/types.h>
2605#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002606# include <stdlib.h>
2607# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002608#endif
2609#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002610# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002611#endif
2612 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2613 AC_MSG_RESULT($ac_cv_type_rlim_t)
2614fi
2615if test $ac_cv_type_rlim_t = no; then
2616 cat >> confdefs.h <<\EOF
2617#define rlim_t unsigned long
2618EOF
2619fi
2620
2621AC_MSG_CHECKING(for stack_t)
2622if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2623 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2624else
2625 AC_EGREP_CPP(stack_t,
2626 [
2627#include <sys/types.h>
2628#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002629# include <stdlib.h>
2630# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002631#endif
2632#include <signal.h>
2633 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2634 AC_MSG_RESULT($ac_cv_type_stack_t)
2635fi
2636if test $ac_cv_type_stack_t = no; then
2637 cat >> confdefs.h <<\EOF
2638#define stack_t struct sigaltstack
2639EOF
2640fi
2641
2642dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2643AC_MSG_CHECKING(whether stack_t has an ss_base field)
2644AC_TRY_COMPILE([
2645#include <sys/types.h>
2646#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002647# include <stdlib.h>
2648# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002649#endif
2650#include <signal.h>
2651#include "confdefs.h"
2652 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2653 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2654 AC_MSG_RESULT(no))
2655
2656olibs="$LIBS"
2657AC_MSG_CHECKING(--with-tlib argument)
2658AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2659if test -n "$with_tlib"; then
2660 AC_MSG_RESULT($with_tlib)
2661 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002662 AC_MSG_CHECKING(for linking with $with_tlib library)
2663 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2664 dnl Need to check for tgetent() below.
2665 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002666else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002667 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002668 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2669 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002670 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002671 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002672 dnl Older versions of ncurses have bugs, get a new one!
2673 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002674 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002675 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002676 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2677 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002678 esac
2679 for libname in $tlibs; do
2680 AC_CHECK_LIB(${libname}, tgetent,,)
2681 if test "x$olibs" != "x$LIBS"; then
2682 dnl It's possible that a library is found but it doesn't work
2683 dnl e.g., shared library that cannot be found
2684 dnl compile and run a test program to be sure
2685 AC_TRY_RUN([
2686#ifdef HAVE_TERMCAP_H
2687# include <termcap.h>
2688#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002689#if STDC_HEADERS
2690# include <stdlib.h>
2691# include <stddef.h>
2692#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002693main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2694 res="OK", res="FAIL", res="FAIL")
2695 if test "$res" = "OK"; then
2696 break
2697 fi
2698 AC_MSG_RESULT($libname library is not usable)
2699 LIBS="$olibs"
2700 fi
2701 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002702 if test "x$olibs" = "x$LIBS"; then
2703 AC_MSG_RESULT(no terminal library found)
2704 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002705fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002706
2707if test "x$olibs" = "x$LIBS"; then
2708 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002709 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002710 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2711 AC_MSG_RESULT(yes),
2712 AC_MSG_ERROR([NOT FOUND!
2713 You need to install a terminal library; for example ncurses.
2714 Or specify the name of the library with --with-tlib.]))
2715fi
2716
Bram Moolenaar446cb832008-06-24 21:56:24 +00002717AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2718 [
2719 AC_RUN_IFELSE([[
2720#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002721#ifdef HAVE_TERMCAP_H
2722# include <termcap.h>
2723#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002724#ifdef HAVE_STRING_H
2725# include <string.h>
2726#endif
2727#if STDC_HEADERS
2728# include <stdlib.h>
2729# include <stddef.h>
2730#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002731main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002732{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2733 ]],[
2734 vim_cv_terminfo=no
2735 ],[
2736 vim_cv_terminfo=yes
2737 ],[
2738 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2739 ])
2740 ])
2741
2742if test "x$vim_cv_terminfo" = "xyes" ; then
2743 AC_DEFINE(TERMINFO)
2744fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002745
2746if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002747 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2748 [
2749 AC_RUN_IFELSE([[
2750#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002751#ifdef HAVE_TERMCAP_H
2752# include <termcap.h>
2753#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002754#if STDC_HEADERS
2755# include <stdlib.h>
2756# include <stddef.h>
2757#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002758main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002759{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2760 ]],[
2761 vim_cv_tgent=zero
2762 ],[
2763 vim_cv_tgent=non-zero
2764 ],[
2765 AC_MSG_ERROR(failed to compile test program.)
2766 ])
2767 ])
2768
2769 if test "x$vim_cv_tgent" = "xzero" ; then
2770 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2771 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002772fi
2773
2774AC_MSG_CHECKING(whether termcap.h contains ospeed)
2775AC_TRY_LINK([
2776#ifdef HAVE_TERMCAP_H
2777# include <termcap.h>
2778#endif
2779 ], [ospeed = 20000],
2780 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2781 [AC_MSG_RESULT(no)
2782 AC_MSG_CHECKING(whether ospeed can be extern)
2783 AC_TRY_LINK([
2784#ifdef HAVE_TERMCAP_H
2785# include <termcap.h>
2786#endif
2787extern short ospeed;
2788 ], [ospeed = 20000],
2789 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2790 AC_MSG_RESULT(no))]
2791 )
2792
2793AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2794AC_TRY_LINK([
2795#ifdef HAVE_TERMCAP_H
2796# include <termcap.h>
2797#endif
2798 ], [if (UP == 0 && BC == 0) PC = 1],
2799 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2800 [AC_MSG_RESULT(no)
2801 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2802 AC_TRY_LINK([
2803#ifdef HAVE_TERMCAP_H
2804# include <termcap.h>
2805#endif
2806extern char *UP, *BC, PC;
2807 ], [if (UP == 0 && BC == 0) PC = 1],
2808 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2809 AC_MSG_RESULT(no))]
2810 )
2811
2812AC_MSG_CHECKING(whether tputs() uses outfuntype)
2813AC_TRY_COMPILE([
2814#ifdef HAVE_TERMCAP_H
2815# include <termcap.h>
2816#endif
2817 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2818 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2819 AC_MSG_RESULT(no))
2820
2821dnl On some SCO machines sys/select redefines struct timeval
2822AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2823AC_TRY_COMPILE([
2824#include <sys/types.h>
2825#include <sys/time.h>
2826#include <sys/select.h>], ,
2827 AC_MSG_RESULT(yes)
2828 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2829 AC_MSG_RESULT(no))
2830
2831dnl AC_DECL_SYS_SIGLIST
2832
2833dnl Checks for pty.c (copied from screen) ==========================
2834AC_MSG_CHECKING(for /dev/ptc)
2835if test -r /dev/ptc; then
2836 AC_DEFINE(HAVE_DEV_PTC)
2837 AC_MSG_RESULT(yes)
2838else
2839 AC_MSG_RESULT(no)
2840fi
2841
2842AC_MSG_CHECKING(for SVR4 ptys)
2843if test -c /dev/ptmx ; then
2844 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2845 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2846 AC_MSG_RESULT(no))
2847else
2848 AC_MSG_RESULT(no)
2849fi
2850
2851AC_MSG_CHECKING(for ptyranges)
2852if test -d /dev/ptym ; then
2853 pdir='/dev/ptym'
2854else
2855 pdir='/dev'
2856fi
2857dnl SCO uses ptyp%d
2858AC_EGREP_CPP(yes,
2859[#ifdef M_UNIX
2860 yes;
2861#endif
2862 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2863dnl if test -c /dev/ptyp19; then
2864dnl ptys=`echo /dev/ptyp??`
2865dnl else
2866dnl ptys=`echo $pdir/pty??`
2867dnl fi
2868if test "$ptys" != "$pdir/pty??" ; then
2869 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2870 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2871 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2872 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2873 AC_MSG_RESULT([$p0 / $p1])
2874else
2875 AC_MSG_RESULT([don't know])
2876fi
2877
2878dnl **** pty mode/group handling ****
2879dnl
2880dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002881rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002882AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2883 [
2884 AC_RUN_IFELSE([[
2885#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002886#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002887#if STDC_HEADERS
2888# include <stdlib.h>
2889# include <stddef.h>
2890#endif
2891#ifdef HAVE_UNISTD_H
2892#include <unistd.h>
2893#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002894#include <sys/stat.h>
2895#include <stdio.h>
2896main()
2897{
2898 struct stat sb;
2899 char *x,*ttyname();
2900 int om, m;
2901 FILE *fp;
2902
2903 if (!(x = ttyname(0))) exit(1);
2904 if (stat(x, &sb)) exit(1);
2905 om = sb.st_mode;
2906 if (om & 002) exit(0);
2907 m = system("mesg y");
2908 if (m == -1 || m == 127) exit(1);
2909 if (stat(x, &sb)) exit(1);
2910 m = sb.st_mode;
2911 if (chmod(x, om)) exit(1);
2912 if (m & 002) exit(0);
2913 if (sb.st_gid == getgid()) exit(1);
2914 if (!(fp=fopen("conftest_grp", "w")))
2915 exit(1);
2916 fprintf(fp, "%d\n", sb.st_gid);
2917 fclose(fp);
2918 exit(0);
2919}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002920 ]],[
2921 if test -f conftest_grp; then
2922 vim_cv_tty_group=`cat conftest_grp`
2923 if test "x$vim_cv_tty_mode" = "x" ; then
2924 vim_cv_tty_mode=0620
2925 fi
2926 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2927 else
2928 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002929 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002930 fi
2931 ],[
2932 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002933 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002934 ],[
2935 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2936 ])
2937 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002938rm -f conftest_grp
2939
Bram Moolenaar446cb832008-06-24 21:56:24 +00002940if test "x$vim_cv_tty_group" != "xworld" ; then
2941 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2942 if test "x$vim_cv_tty_mode" = "x" ; then
2943 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)])
2944 else
2945 AC_DEFINE(PTYMODE, 0620)
2946 fi
2947fi
2948
Bram Moolenaar071d4272004-06-13 20:20:40 +00002949dnl Checks for library functions. ===================================
2950
2951AC_TYPE_SIGNAL
2952
2953dnl find out what to use at the end of a signal function
2954if test $ac_cv_type_signal = void; then
2955 AC_DEFINE(SIGRETURN, [return])
2956else
2957 AC_DEFINE(SIGRETURN, [return 0])
2958fi
2959
2960dnl check if struct sigcontext is defined (used for SGI only)
2961AC_MSG_CHECKING(for struct sigcontext)
2962AC_TRY_COMPILE([
2963#include <signal.h>
2964test_sig()
2965{
2966 struct sigcontext *scont;
2967 scont = (struct sigcontext *)0;
2968 return 1;
2969} ], ,
2970 AC_MSG_RESULT(yes)
2971 AC_DEFINE(HAVE_SIGCONTEXT),
2972 AC_MSG_RESULT(no))
2973
2974dnl tricky stuff: try to find out if getcwd() is implemented with
2975dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002976AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2977 [
2978 AC_RUN_IFELSE([[
2979#include "confdefs.h"
2980#ifdef HAVE_UNISTD_H
2981#include <unistd.h>
2982#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002983char *dagger[] = { "IFS=pwd", 0 };
2984main()
2985{
2986 char buffer[500];
2987 extern char **environ;
2988 environ = dagger;
2989 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002990}
2991 ]],[
2992 vim_cv_getcwd_broken=no
2993 ],[
2994 vim_cv_getcwd_broken=yes
2995 ],[
2996 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2997 ])
2998 ])
2999
3000if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3001 AC_DEFINE(BAD_GETCWD)
3002fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003003
Bram Moolenaar25153e12010-02-24 14:47:08 +01003004dnl Check for functions in one big call, to reduce the size of configure.
3005dnl Can only be used for functions that do not require any include.
3006AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003007 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003008 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003009 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003010 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003011 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3012 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003013AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003014
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003015dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3016dnl appropriate, so that off_t is 64 bits when needed.
3017AC_SYS_LARGEFILE
3018
Bram Moolenaar071d4272004-06-13 20:20:40 +00003019dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3020AC_MSG_CHECKING(for st_blksize)
3021AC_TRY_COMPILE(
3022[#include <sys/types.h>
3023#include <sys/stat.h>],
3024[ struct stat st;
3025 int n;
3026
3027 stat("/", &st);
3028 n = (int)st.st_blksize;],
3029 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3030 AC_MSG_RESULT(no))
3031
Bram Moolenaar446cb832008-06-24 21:56:24 +00003032AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3033 [
3034 AC_RUN_IFELSE([[
3035#include "confdefs.h"
3036#if STDC_HEADERS
3037# include <stdlib.h>
3038# include <stddef.h>
3039#endif
3040#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003041#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003042main() {struct stat st; exit(stat("configure/", &st) != 0); }
3043 ]],[
3044 vim_cv_stat_ignores_slash=yes
3045 ],[
3046 vim_cv_stat_ignores_slash=no
3047 ],[
3048 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3049 ])
3050 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003051
Bram Moolenaar446cb832008-06-24 21:56:24 +00003052if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3053 AC_DEFINE(STAT_IGNORES_SLASH)
3054fi
3055
Bram Moolenaar071d4272004-06-13 20:20:40 +00003056dnl Link with iconv for charset translation, if not found without library.
3057dnl check for iconv() requires including iconv.h
3058dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3059dnl has been installed.
3060AC_MSG_CHECKING(for iconv_open())
3061save_LIBS="$LIBS"
3062LIBS="$LIBS -liconv"
3063AC_TRY_LINK([
3064#ifdef HAVE_ICONV_H
3065# include <iconv.h>
3066#endif
3067 ], [iconv_open("fr", "to");],
3068 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3069 LIBS="$save_LIBS"
3070 AC_TRY_LINK([
3071#ifdef HAVE_ICONV_H
3072# include <iconv.h>
3073#endif
3074 ], [iconv_open("fr", "to");],
3075 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3076 AC_MSG_RESULT(no)))
3077
3078
3079AC_MSG_CHECKING(for nl_langinfo(CODESET))
3080AC_TRY_LINK([
3081#ifdef HAVE_LANGINFO_H
3082# include <langinfo.h>
3083#endif
3084], [char *cs = nl_langinfo(CODESET);],
3085 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3086 AC_MSG_RESULT(no))
3087
Bram Moolenaar446cb832008-06-24 21:56:24 +00003088dnl Need various functions for floating point support. Only enable
3089dnl floating point when they are all present.
3090AC_CHECK_LIB(m, strtod)
3091AC_MSG_CHECKING([for strtod() and other floating point functions])
3092AC_TRY_LINK([
3093#ifdef HAVE_MATH_H
3094# include <math.h>
3095#endif
3096#if STDC_HEADERS
3097# include <stdlib.h>
3098# include <stddef.h>
3099#endif
3100], [char *s; double d;
3101 d = strtod("1.1", &s);
3102 d = fabs(1.11);
3103 d = ceil(1.11);
3104 d = floor(1.11);
3105 d = log10(1.11);
3106 d = pow(1.11, 2.22);
3107 d = sqrt(1.11);
3108 d = sin(1.11);
3109 d = cos(1.11);
3110 d = atan(1.11);
3111 ],
3112 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3113 AC_MSG_RESULT(no))
3114
Bram Moolenaar071d4272004-06-13 20:20:40 +00003115dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3116dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003117dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003118AC_MSG_CHECKING(--disable-acl argument)
3119AC_ARG_ENABLE(acl,
3120 [ --disable-acl Don't check for ACL support.],
3121 , [enable_acl="yes"])
3122if test "$enable_acl" = "yes"; then
3123AC_MSG_RESULT(no)
3124AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3125 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3126 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3127
3128AC_MSG_CHECKING(for POSIX ACL support)
3129AC_TRY_LINK([
3130#include <sys/types.h>
3131#ifdef HAVE_SYS_ACL_H
3132# include <sys/acl.h>
3133#endif
3134acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3135 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3136 acl_free(acl);],
3137 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3138 AC_MSG_RESULT(no))
3139
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003140AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003141AC_MSG_CHECKING(for Solaris ACL support)
3142AC_TRY_LINK([
3143#ifdef HAVE_SYS_ACL_H
3144# include <sys/acl.h>
3145#endif], [acl("foo", GETACLCNT, 0, NULL);
3146 ],
3147 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003148 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003149
3150AC_MSG_CHECKING(for AIX ACL support)
3151AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003152#if STDC_HEADERS
3153# include <stdlib.h>
3154# include <stddef.h>
3155#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003156#ifdef HAVE_SYS_ACL_H
3157# include <sys/acl.h>
3158#endif
3159#ifdef HAVE_SYS_ACCESS_H
3160# include <sys/access.h>
3161#endif
3162#define _ALL_SOURCE
3163
3164#include <sys/stat.h>
3165
3166int aclsize;
3167struct acl *aclent;], [aclsize = sizeof(struct acl);
3168 aclent = (void *)malloc(aclsize);
3169 statacl("foo", STX_NORMAL, aclent, aclsize);
3170 ],
3171 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3172 AC_MSG_RESULT(no))
3173else
3174 AC_MSG_RESULT(yes)
3175fi
3176
3177AC_MSG_CHECKING(--disable-gpm argument)
3178AC_ARG_ENABLE(gpm,
3179 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3180 [enable_gpm="yes"])
3181
3182if test "$enable_gpm" = "yes"; then
3183 AC_MSG_RESULT(no)
3184 dnl Checking if gpm support can be compiled
3185 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3186 [olibs="$LIBS" ; LIBS="-lgpm"]
3187 AC_TRY_LINK(
3188 [#include <gpm.h>
3189 #include <linux/keyboard.h>],
3190 [Gpm_GetLibVersion(NULL);],
3191 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3192 dnl FEAT_MOUSE_GPM if mouse support is included
3193 [vi_cv_have_gpm=yes],
3194 [vi_cv_have_gpm=no])
3195 [LIBS="$olibs"]
3196 )
3197 if test $vi_cv_have_gpm = yes; then
3198 LIBS="$LIBS -lgpm"
3199 AC_DEFINE(HAVE_GPM)
3200 fi
3201else
3202 AC_MSG_RESULT(yes)
3203fi
3204
Bram Moolenaar446cb832008-06-24 21:56:24 +00003205AC_MSG_CHECKING(--disable-sysmouse argument)
3206AC_ARG_ENABLE(sysmouse,
3207 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3208 [enable_sysmouse="yes"])
3209
3210if test "$enable_sysmouse" = "yes"; then
3211 AC_MSG_RESULT(no)
3212 dnl Checking if sysmouse support can be compiled
3213 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3214 dnl defines FEAT_SYSMOUSE if mouse support is included
3215 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3216 AC_TRY_LINK(
3217 [#include <sys/consio.h>
3218 #include <signal.h>
3219 #include <sys/fbio.h>],
3220 [struct mouse_info mouse;
3221 mouse.operation = MOUSE_MODE;
3222 mouse.operation = MOUSE_SHOW;
3223 mouse.u.mode.mode = 0;
3224 mouse.u.mode.signal = SIGUSR2;],
3225 [vi_cv_have_sysmouse=yes],
3226 [vi_cv_have_sysmouse=no])
3227 )
3228 if test $vi_cv_have_sysmouse = yes; then
3229 AC_DEFINE(HAVE_SYSMOUSE)
3230 fi
3231else
3232 AC_MSG_RESULT(yes)
3233fi
3234
Bram Moolenaarf05da212009-11-17 16:13:15 +00003235dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3236AC_MSG_CHECKING(for FD_CLOEXEC)
3237AC_TRY_COMPILE(
3238[#if HAVE_FCNTL_H
3239# include <fcntl.h>
3240#endif],
3241[ int flag = FD_CLOEXEC;],
3242 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3243 AC_MSG_RESULT(not usable))
3244
Bram Moolenaar071d4272004-06-13 20:20:40 +00003245dnl rename needs to be checked separately to work on Nextstep with cc
3246AC_MSG_CHECKING(for rename)
3247AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3248 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3249 AC_MSG_RESULT(no))
3250
3251dnl sysctl() may exist but not the arguments we use
3252AC_MSG_CHECKING(for sysctl)
3253AC_TRY_COMPILE(
3254[#include <sys/types.h>
3255#include <sys/sysctl.h>],
3256[ int mib[2], r;
3257 size_t len;
3258
3259 mib[0] = CTL_HW;
3260 mib[1] = HW_USERMEM;
3261 len = sizeof(r);
3262 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3263 ],
3264 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3265 AC_MSG_RESULT(not usable))
3266
3267dnl sysinfo() may exist but not be Linux compatible
3268AC_MSG_CHECKING(for sysinfo)
3269AC_TRY_COMPILE(
3270[#include <sys/types.h>
3271#include <sys/sysinfo.h>],
3272[ struct sysinfo sinfo;
3273 int t;
3274
3275 (void)sysinfo(&sinfo);
3276 t = sinfo.totalram;
3277 ],
3278 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3279 AC_MSG_RESULT(not usable))
3280
Bram Moolenaar914572a2007-05-01 11:37:47 +00003281dnl struct sysinfo may have the mem_unit field or not
3282AC_MSG_CHECKING(for sysinfo.mem_unit)
3283AC_TRY_COMPILE(
3284[#include <sys/types.h>
3285#include <sys/sysinfo.h>],
3286[ struct sysinfo sinfo;
3287 sinfo.mem_unit = 1;
3288 ],
3289 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3290 AC_MSG_RESULT(no))
3291
Bram Moolenaar071d4272004-06-13 20:20:40 +00003292dnl sysconf() may exist but not support what we want to use
3293AC_MSG_CHECKING(for sysconf)
3294AC_TRY_COMPILE(
3295[#include <unistd.h>],
3296[ (void)sysconf(_SC_PAGESIZE);
3297 (void)sysconf(_SC_PHYS_PAGES);
3298 ],
3299 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3300 AC_MSG_RESULT(not usable))
3301
Bram Moolenaar914703b2010-05-31 21:59:46 +02003302AC_CHECK_SIZEOF([int])
3303AC_CHECK_SIZEOF([long])
3304AC_CHECK_SIZEOF([time_t])
3305AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003306
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003307dnl Make sure that uint32_t is really 32 bits unsigned.
3308AC_MSG_CHECKING([uint32_t is 32 bits])
3309AC_TRY_RUN([
3310#ifdef HAVE_STDINT_H
3311# include <stdint.h>
3312#endif
3313#ifdef HAVE_INTTYPES_H
3314# include <inttypes.h>
3315#endif
3316main() {
3317 uint32_t nr1 = (uint32_t)-1;
3318 uint32_t nr2 = (uint32_t)0xffffffffUL;
3319 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3320 exit(0);
3321}],
3322AC_MSG_RESULT(ok),
3323AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003324AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003325
Bram Moolenaar446cb832008-06-24 21:56:24 +00003326dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3327dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3328
Bram Moolenaar071d4272004-06-13 20:20:40 +00003329[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003330#include "confdefs.h"
3331#ifdef HAVE_STRING_H
3332# include <string.h>
3333#endif
3334#if STDC_HEADERS
3335# include <stdlib.h>
3336# include <stddef.h>
3337#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003338main() {
3339 char buf[10];
3340 strcpy(buf, "abcdefghi");
3341 mch_memmove(buf, buf + 2, 3);
3342 if (strncmp(buf, "ababcf", 6))
3343 exit(1);
3344 strcpy(buf, "abcdefghi");
3345 mch_memmove(buf + 2, buf, 3);
3346 if (strncmp(buf, "cdedef", 6))
3347 exit(1);
3348 exit(0); /* libc version works properly. */
3349}']
3350
Bram Moolenaar446cb832008-06-24 21:56:24 +00003351AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3352 [
3353 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3354 [
3355 vim_cv_memmove_handles_overlap=yes
3356 ],[
3357 vim_cv_memmove_handles_overlap=no
3358 ],[
3359 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3360 ])
3361 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003362
Bram Moolenaar446cb832008-06-24 21:56:24 +00003363if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3364 AC_DEFINE(USEMEMMOVE)
3365else
3366 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3367 [
3368 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3369 [
3370 vim_cv_bcopy_handles_overlap=yes
3371 ],[
3372 vim_cv_bcopy_handles_overlap=no
3373 ],[
3374 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3375 ])
3376 ])
3377
3378 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3379 AC_DEFINE(USEBCOPY)
3380 else
3381 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3382 [
3383 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3384 [
3385 vim_cv_memcpy_handles_overlap=yes
3386 ],[
3387 vim_cv_memcpy_handles_overlap=no
3388 ],[
3389 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3390 ])
3391 ])
3392
3393 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3394 AC_DEFINE(USEMEMCPY)
3395 fi
3396 fi
3397fi
3398
Bram Moolenaar071d4272004-06-13 20:20:40 +00003399
3400dnl Check for multibyte locale functions
3401dnl Find out if _Xsetlocale() is supported by libX11.
3402dnl Check if X_LOCALE should be defined.
3403
3404if test "$enable_multibyte" = "yes"; then
3405 cflags_save=$CFLAGS
3406 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003407 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003408 CFLAGS="$CFLAGS -I$x_includes"
3409 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3410 AC_MSG_CHECKING(whether X_LOCALE needed)
3411 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3412 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3413 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3414 AC_MSG_RESULT(no))
3415 fi
3416 CFLAGS=$cflags_save
3417 LDFLAGS=$ldflags_save
3418fi
3419
3420dnl Link with xpg4, it is said to make Korean locale working
3421AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3422
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003423dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003424dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003425dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003426dnl -t for typedefs (many ctags have this)
3427dnl -s for static functions (Elvis ctags only?)
3428dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3429dnl -i+m to test for older Exuberant ctags
3430AC_MSG_CHECKING(how to create tags)
3431test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003432if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003433 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003434elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3435 TAGPRG="exctags -I INIT+ --fields=+S"
3436elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3437 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003438else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003439 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003440 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3441 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3442 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3443 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3444 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3445 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3446 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3447fi
3448test -f tags.save && mv tags.save tags
3449AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3450
3451dnl Check how we can run man with a section number
3452AC_MSG_CHECKING(how to run man with a section nr)
3453MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003454(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 +00003455AC_MSG_RESULT($MANDEF)
3456if test "$MANDEF" = "man -s"; then
3457 AC_DEFINE(USEMAN_S)
3458fi
3459
3460dnl Check if gettext() is working and if it needs -lintl
3461AC_MSG_CHECKING(--disable-nls argument)
3462AC_ARG_ENABLE(nls,
3463 [ --disable-nls Don't support NLS (gettext()).], ,
3464 [enable_nls="yes"])
3465
3466if test "$enable_nls" = "yes"; then
3467 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003468
3469 INSTALL_LANGS=install-languages
3470 AC_SUBST(INSTALL_LANGS)
3471 INSTALL_TOOL_LANGS=install-tool-languages
3472 AC_SUBST(INSTALL_TOOL_LANGS)
3473
Bram Moolenaar071d4272004-06-13 20:20:40 +00003474 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3475 AC_MSG_CHECKING([for NLS])
3476 if test -f po/Makefile; then
3477 have_gettext="no"
3478 if test -n "$MSGFMT"; then
3479 AC_TRY_LINK(
3480 [#include <libintl.h>],
3481 [gettext("Test");],
3482 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3483 olibs=$LIBS
3484 LIBS="$LIBS -lintl"
3485 AC_TRY_LINK(
3486 [#include <libintl.h>],
3487 [gettext("Test");],
3488 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3489 AC_MSG_RESULT([gettext() doesn't work]);
3490 LIBS=$olibs))
3491 else
3492 AC_MSG_RESULT([msgfmt not found - disabled]);
3493 fi
3494 if test $have_gettext = "yes"; then
3495 AC_DEFINE(HAVE_GETTEXT)
3496 MAKEMO=yes
3497 AC_SUBST(MAKEMO)
3498 dnl this was added in GNU gettext 0.10.36
3499 AC_CHECK_FUNCS(bind_textdomain_codeset)
3500 dnl _nl_msg_cat_cntr is required for GNU gettext
3501 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3502 AC_TRY_LINK(
3503 [#include <libintl.h>
3504 extern int _nl_msg_cat_cntr;],
3505 [++_nl_msg_cat_cntr;],
3506 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3507 AC_MSG_RESULT([no]))
3508 fi
3509 else
3510 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3511 fi
3512else
3513 AC_MSG_RESULT(yes)
3514fi
3515
3516dnl Check for dynamic linking loader
3517AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3518if test x${DLL} = xdlfcn.h; then
3519 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3520 AC_MSG_CHECKING([for dlopen()])
3521 AC_TRY_LINK(,[
3522 extern void* dlopen();
3523 dlopen();
3524 ],
3525 AC_MSG_RESULT(yes);
3526 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3527 AC_MSG_RESULT(no);
3528 AC_MSG_CHECKING([for dlopen() in -ldl])
3529 olibs=$LIBS
3530 LIBS="$LIBS -ldl"
3531 AC_TRY_LINK(,[
3532 extern void* dlopen();
3533 dlopen();
3534 ],
3535 AC_MSG_RESULT(yes);
3536 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3537 AC_MSG_RESULT(no);
3538 LIBS=$olibs))
3539 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3540 dnl ick :-)
3541 AC_MSG_CHECKING([for dlsym()])
3542 AC_TRY_LINK(,[
3543 extern void* dlsym();
3544 dlsym();
3545 ],
3546 AC_MSG_RESULT(yes);
3547 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3548 AC_MSG_RESULT(no);
3549 AC_MSG_CHECKING([for dlsym() in -ldl])
3550 olibs=$LIBS
3551 LIBS="$LIBS -ldl"
3552 AC_TRY_LINK(,[
3553 extern void* dlsym();
3554 dlsym();
3555 ],
3556 AC_MSG_RESULT(yes);
3557 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3558 AC_MSG_RESULT(no);
3559 LIBS=$olibs))
3560elif test x${DLL} = xdl.h; then
3561 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3562 AC_MSG_CHECKING([for shl_load()])
3563 AC_TRY_LINK(,[
3564 extern void* shl_load();
3565 shl_load();
3566 ],
3567 AC_MSG_RESULT(yes);
3568 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3569 AC_MSG_RESULT(no);
3570 AC_MSG_CHECKING([for shl_load() in -ldld])
3571 olibs=$LIBS
3572 LIBS="$LIBS -ldld"
3573 AC_TRY_LINK(,[
3574 extern void* shl_load();
3575 shl_load();
3576 ],
3577 AC_MSG_RESULT(yes);
3578 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3579 AC_MSG_RESULT(no);
3580 LIBS=$olibs))
3581fi
3582AC_CHECK_HEADERS(setjmp.h)
3583
3584if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3585 dnl -ldl must come after DynaLoader.a
3586 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3587 LIBS=`echo $LIBS | sed s/-ldl//`
3588 PERL_LIBS="$PERL_LIBS -ldl"
3589 fi
3590fi
3591
Bram Moolenaar164fca32010-07-14 13:58:07 +02003592if test "x$MACOSX" = "xyes"; then
3593 AC_MSG_CHECKING(whether we need -framework Cocoa)
3594 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3595 dnl disabled during tiny build)
3596 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3597 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003598 AC_MSG_RESULT(yes)
3599 else
3600 AC_MSG_RESULT(no)
3601 fi
3602fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003603if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003604 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003605fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003606
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003607dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3608dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3609dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003610dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3611dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003612DEPEND_CFLAGS_FILTER=
3613if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003614 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003615 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003616 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003617 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003618 AC_MSG_RESULT(yes)
3619 else
3620 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003621 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003622 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3623 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003624 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003625 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003626 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3627 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003628 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003629 AC_MSG_RESULT(yes)
3630 else
3631 AC_MSG_RESULT(no)
3632 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003633fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003634AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003635
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003636dnl link.sh tries to avoid overlinking in a hackish way.
3637dnl At least GNU ld supports --as-needed which provides the same functionality
3638dnl at linker level. Let's use it.
3639AC_MSG_CHECKING(linker --as-needed support)
3640LINK_AS_NEEDED=
3641# Check if linker supports --as-needed and --no-as-needed options
3642if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3643 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3644 LINK_AS_NEEDED=yes
3645fi
3646if test "$LINK_AS_NEEDED" = yes; then
3647 AC_MSG_RESULT(yes)
3648else
3649 AC_MSG_RESULT(no)
3650fi
3651AC_SUBST(LINK_AS_NEEDED)
3652
Bram Moolenaar77c19352012-06-13 19:19:41 +02003653# IBM z/OS reset CFLAGS for config.mk
3654if test "$zOSUnix" = "yes"; then
3655 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3656fi
3657
Bram Moolenaar071d4272004-06-13 20:20:40 +00003658dnl write output files
3659AC_OUTPUT(auto/config.mk:config.mk.in)
3660
3661dnl vim: set sw=2 tw=78 fo+=l: