blob: 918c36c1dac0349b80d53f7026f7f32023330480 [file] [log] [blame]
Bram Moolenaar3f7d0902016-11-12 21:13:42 +01001dnl configure.ac: autoconf script for Vim
Bram Moolenaar071d4272004-06-13 20:20:40 +00002
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.
Bram Moolenaarc0394412017-04-20 20:20:23 +020014AC_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_PROG_FGREP dnl finds working grep -F
18AC_ISC_POSIX dnl required by AC_C_CROSS
19AC_PROG_AWK dnl required for "make html" in ../doc
Bram Moolenaar071d4272004-06-13 20:20:40 +000020
21dnl Don't strip if we don't have it
22AC_CHECK_PROG(STRIP, strip, strip, :)
23
Bram Moolenaar325b7a22004-07-05 15:58:32 +000024dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000025AC_EXEEXT
26
Bram Moolenaar446cb832008-06-24 21:56:24 +000027dnl Check for standard headers. We don't use this in Vim but other stuff
28dnl in autoconf needs it, where it uses STDC_HEADERS.
29AC_HEADER_STDC
30AC_HEADER_SYS_WAIT
31
Bram Moolenaarf788a062011-12-14 20:51:25 +010032dnl Check for the flag that fails if stuff are missing.
33
34AC_MSG_CHECKING(--enable-fail-if-missing argument)
35AC_ARG_ENABLE(fail_if_missing,
36 [ --enable-fail-if-missing Fail if dependencies on additional features
37 specified on the command line are missing.],
38 [fail_if_missing="yes"],
39 [fail_if_missing="no"])
40AC_MSG_RESULT($fail_if_missing)
41
Bram Moolenaar071d4272004-06-13 20:20:40 +000042dnl Set default value for CFLAGS if none is defined or it's empty
43if test -z "$CFLAGS"; then
44 CFLAGS="-O"
45 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
46fi
47if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000048 dnl method that should work for nearly all versions
Bram Moolenaarc8836f72014-04-12 13:12:24 +020049 gccversion=`$CC -dumpversion`
Bram Moolenaar910f66f2006-04-05 20:41:53 +000050 if test "x$gccversion" = "x"; then
51 dnl old method; fall-back for when -dumpversion doesn't work
Bram Moolenaarc8836f72014-04-12 13:12:24 +020052 gccversion=`$CC --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
Bram Moolenaar910f66f2006-04-05 20:41:53 +000053 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000054 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
55 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000056 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000057 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
58 else
59 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
60 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
61 CFLAGS="$CFLAGS -fno-strength-reduce"
62 fi
63 fi
64fi
65
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +020066dnl clang-500.2.75 or around has abandoned -f[no-]strength-reduce and issues a
67dnl warning when that flag is passed to. Accordingly, adjust CFLAGS based on
68dnl the version number of the clang in use.
69dnl Note that this does not work to get the version of clang 3.1 or 3.2.
Bram Moolenaar5f69fee2017-03-09 11:58:40 +010070AC_MSG_CHECKING(for clang version)
71CLANG_VERSION_STRING=`$CC --version 2>/dev/null | sed -n -e 's/^.*clang[[^0-9]]*\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\).*$/\1/p'`
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +020072if test x"$CLANG_VERSION_STRING" != x"" ; then
73 CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'`
74 CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'`
75 CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)/\1/p'`
76 CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION`
77 AC_MSG_RESULT($CLANG_VERSION)
78 dnl If you find the same issue with versions earlier than 500.2.75,
79 dnl change the constant 500002075 below appropriately. To get the
80 dnl integer corresponding to a version number, refer to the
81 dnl definition of CLANG_VERSION above.
Bram Moolenaar5f69fee2017-03-09 11:58:40 +010082 AC_MSG_CHECKING(if clang supports -fno-strength-reduce)
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +020083 if test "$CLANG_VERSION" -ge 500002075 ; then
Bram Moolenaar5f69fee2017-03-09 11:58:40 +010084 AC_MSG_RESULT(no)
85 CFLAGS=`echo "$CFLAGS" | sed -e 's/-fno-strength-reduce/ /'`
86 else
87 AC_MSG_RESULT(yes)
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +020088 fi
89else
Bram Moolenaar5f69fee2017-03-09 11:58:40 +010090 AC_MSG_RESULT(N/A)
Bram Moolenaar0c6ccfd2013-10-02 18:23:07 +020091fi
92
Bram Moolenaar446cb832008-06-24 21:56:24 +000093dnl If configure thinks we are cross compiling, there might be something
94dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar839e9542016-04-14 16:46:02 +020095CROSS_COMPILING=
Bram Moolenaar071d4272004-06-13 20:20:40 +000096if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000097 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar839e9542016-04-14 16:46:02 +020098 CROSS_COMPILING=1
Bram Moolenaar071d4272004-06-13 20:20:40 +000099fi
Bram Moolenaar839e9542016-04-14 16:46:02 +0200100AC_SUBST(CROSS_COMPILING)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000101
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +0000102dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
103dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000104test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
105
106if test -f ./toolcheck; then
107 AC_CHECKING(for buggy tools)
108 sh ./toolcheck 1>&AC_FD_MSG
109fi
110
111OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
112
113dnl Check for BeOS, which needs an extra source file
114AC_MSG_CHECKING(for BeOS)
115case `uname` in
116 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
117 BEOS=yes; AC_MSG_RESULT(yes);;
118 *) BEOS=no; AC_MSG_RESULT(no);;
119esac
120
121dnl If QNX is found, assume we don't want to use Xphoton
122dnl unless it was specifically asked for (--with-x)
123AC_MSG_CHECKING(for QNX)
124case `uname` in
125 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
126 test -z "$with_x" && with_x=no
127 QNX=yes; AC_MSG_RESULT(yes);;
128 *) QNX=no; AC_MSG_RESULT(no);;
129esac
130
131dnl Check for Darwin and MacOS X
132dnl We do a check for MacOS X in the very beginning because there
133dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000134AC_MSG_CHECKING([for Darwin (Mac OS X)])
135if test "`(uname) 2>/dev/null`" = Darwin; then
136 AC_MSG_RESULT(yes)
137
138 AC_MSG_CHECKING(--disable-darwin argument)
139 AC_ARG_ENABLE(darwin,
140 [ --disable-darwin Disable Darwin (Mac OS X) support.],
141 , [enable_darwin="yes"])
142 if test "$enable_darwin" = "yes"; then
143 AC_MSG_RESULT(no)
144 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200145 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000146 AC_MSG_RESULT(yes)
147 else
148 AC_MSG_RESULT([no, Darwin support disabled])
149 enable_darwin=no
150 fi
151 else
152 AC_MSG_RESULT([yes, Darwin support excluded])
153 fi
154
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000155 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000156 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000157 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000158 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000159
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100160 AC_MSG_CHECKING(--with-developer-dir argument)
161 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
162 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
Bram Moolenaar32d03b32015-11-19 13:46:48 +0100163 AC_MSG_RESULT(not present))
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100164
165 if test "x$DEVELOPER_DIR" = "x"; then
166 AC_PATH_PROG(XCODE_SELECT, xcode-select)
167 if test "x$XCODE_SELECT" != "x"; then
168 AC_MSG_CHECKING(for developer dir using xcode-select)
169 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
170 AC_MSG_RESULT([$DEVELOPER_DIR])
171 else
172 DEVELOPER_DIR=/Developer
173 fi
174 fi
175
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000176 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000177 AC_MSG_CHECKING(for 10.4 universal SDK)
178 dnl There is a terrible inconsistency (but we appear to get away with it):
179 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
180 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
181 dnl tests using the preprocessor are actually done with the wrong header
182 dnl files. $LDFLAGS is set at the end, because configure uses it together
183 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000184 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000185 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000186 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100187 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000188 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000189 AC_MSG_RESULT(found, will make universal binary),
190
191 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000192 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000193 AC_MSG_CHECKING(if Intel architecture is supported)
194 CPPFLAGS="$CPPFLAGS -arch i386"
195 LDFLAGS="$save_ldflags -arch i386"
196 AC_TRY_LINK([ ], [ ],
197 AC_MSG_RESULT(yes); MACARCH="intel",
198 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000199 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000200 CPPFLAGS="$save_cppflags -arch ppc"
201 LDFLAGS="$save_ldflags -arch ppc"))
202 elif test "x$MACARCH" = "xintel"; then
203 CPPFLAGS="$CPPFLAGS -arch intel"
204 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000205 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000206 CPPFLAGS="$CPPFLAGS -arch ppc"
207 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000208 fi
209
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210 if test "$enable_darwin" = "yes"; then
211 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200212 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000213 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000214 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100215 dnl Removed -no-cpp-precomp, only for very old compilers.
216 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217
218 dnl If Carbon is found, assume we don't want X11
219 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000220 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000221 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
222 if test "x$CARBON" = "xyes"; then
Bram Moolenaar98921892016-02-23 17:14:37 +0100223 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2 -a "X$enable_gui" != Xgtk3; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000224 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000225 fi
226 fi
227 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000228
Bram Moolenaardb552d602006-03-23 22:59:57 +0000229 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000230 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000231 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000232 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
233 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
234 fi
235
Bram Moolenaar071d4272004-06-13 20:20:40 +0000236else
237 AC_MSG_RESULT(no)
238fi
239
Bram Moolenaar39766a72013-11-03 00:41:00 +0100240dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
241dnl so we need to include it to have access to version macros.
Bram Moolenaar18e54692013-11-03 20:26:31 +0100242AC_CHECK_HEADERS(AvailabilityMacros.h)
Bram Moolenaar39766a72013-11-03 00:41:00 +0100243
Bram Moolenaar071d4272004-06-13 20:20:40 +0000244AC_SUBST(OS_EXTRA_SRC)
245AC_SUBST(OS_EXTRA_OBJ)
246
247dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
248dnl Only when the directory exists and it wasn't there yet.
249dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000250dnl Skip all of this when cross-compiling.
251if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000252 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000253 have_local_include=''
254 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000255 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
256 --without-local-dir do not search /usr/local for local libraries.], [
257 local_dir="$withval"
258 case "$withval" in
259 */*) ;;
260 no)
261 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200262 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000263 have_local_lib=yes
264 ;;
265 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
266 esac
267 AC_MSG_RESULT($local_dir)
268 ], [
269 local_dir=/usr/local
270 AC_MSG_RESULT(Defaulting to $local_dir)
271 ])
272 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000273 echo 'void f(){}' > conftest.c
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100274 dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler)
275 have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
Bram Moolenaarc236c162008-07-13 17:41:49 +0000276 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000277 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000278 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000279 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
280 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 +0000281 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000282 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000283 fi
284 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000285 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
286 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 +0000287 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000288 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000289 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000290 fi
291fi
292
293AC_MSG_CHECKING(--with-vim-name argument)
294AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
295 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000296 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000297AC_SUBST(VIMNAME)
298AC_MSG_CHECKING(--with-ex-name argument)
299AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
300 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
301 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
302AC_SUBST(EXNAME)
303AC_MSG_CHECKING(--with-view-name argument)
304AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
305 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
306 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
307AC_SUBST(VIEWNAME)
308
309AC_MSG_CHECKING(--with-global-runtime argument)
310AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
311 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
312 AC_MSG_RESULT(no))
313
314AC_MSG_CHECKING(--with-modified-by argument)
315AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
316 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
317 AC_MSG_RESULT(no))
318
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200319dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000320AC_MSG_CHECKING(if character set is EBCDIC)
321AC_TRY_COMPILE([ ],
322[ /* TryCompile function for CharSet.
323 Treat any failure as ASCII for compatibility with existing art.
324 Use compile-time rather than run-time tests for cross-compiler
325 tolerance. */
326#if '0'!=240
327make an error "Character set is not EBCDIC"
328#endif ],
329[ # TryCompile action if true
330cf_cv_ebcdic=yes ],
331[ # TryCompile action if false
332cf_cv_ebcdic=no])
333# end of TryCompile ])
334# end of CacheVal CvEbcdic
335AC_MSG_RESULT($cf_cv_ebcdic)
336case "$cf_cv_ebcdic" in #(vi
337 yes) AC_DEFINE(EBCDIC)
338 line_break='"\\n"'
339 ;;
340 *) line_break='"\\012"';;
341esac
342AC_SUBST(line_break)
343
344if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200345dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200346AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000347case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200348 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000349 dnl If using cc the environment variable _CC_CCMODE must be
350 dnl set to "1", so that some compiler extensions are enabled.
351 dnl If using c89 the environment variable is named _CC_C89MODE.
352 dnl Note: compile with c89 never tested.
353 if test "$CC" = "cc"; then
354 ccm="$_CC_CCMODE"
355 ccn="CC"
356 else
357 if test "$CC" = "c89"; then
358 ccm="$_CC_C89MODE"
359 ccn="C89"
360 else
361 ccm=1
362 fi
363 fi
364 if test "$ccm" != "1"; then
365 echo ""
366 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200367 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200368 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000369 echo " Do:"
370 echo " export _CC_${ccn}MODE=1"
371 echo " and then call configure again."
372 echo "------------------------------------------"
373 exit 1
374 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200375 # Set CFLAGS for configure process.
376 # This will be reset later for config.mk.
377 # Use haltonmsg to force error for missing H files.
378 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
379 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000380 AC_MSG_RESULT(yes)
381 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200382 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000383 AC_MSG_RESULT(no)
384 ;;
385esac
386fi
387
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200388dnl Set QUOTESED. Needs additional backslashes on zOS
389if test "$zOSUnix" = "yes"; then
390 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
391else
392 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
393fi
394AC_SUBST(QUOTESED)
395
396
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200397dnl Link with -lsmack for Smack stuff; if not found
398AC_MSG_CHECKING(--disable-smack argument)
399AC_ARG_ENABLE(smack,
400 [ --disable-smack Do not check for Smack support.],
401 , enable_smack="yes")
402if test "$enable_smack" = "yes"; then
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200403 AC_MSG_RESULT(no)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200404 AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no")
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200405else
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200406 AC_MSG_RESULT(yes)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200407fi
408if test "$enable_smack" = "yes"; then
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200409 AC_CHECK_HEADER([attr/xattr.h], true, enable_smack="no")
410fi
411if test "$enable_smack" = "yes"; then
412 AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h)
413 AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>],
414 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +0200415 AC_MSG_RESULT(no); enable_smack="no")
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200416fi
417if test "$enable_smack" = "yes"; then
418 AC_CHECK_LIB(attr, setxattr,
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200419 [LIBS="$LIBS -lattr"
420 found_smack="yes"
421 AC_DEFINE(HAVE_SMACK)])
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000422fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000423
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200424dnl When smack was found don't search for SELinux
425if test "x$found_smack" = "x"; then
426 dnl Link with -lselinux for SELinux stuff; if not found
427 AC_MSG_CHECKING(--disable-selinux argument)
428 AC_ARG_ENABLE(selinux,
429 [ --disable-selinux Do not check for SELinux support.],
430 , enable_selinux="yes")
431 if test "$enable_selinux" = "yes"; then
432 AC_MSG_RESULT(no)
433 AC_CHECK_LIB(selinux, is_selinux_enabled,
434 [LIBS="$LIBS -lselinux"
435 AC_DEFINE(HAVE_SELINUX)])
436 else
437 AC_MSG_RESULT(yes)
438 fi
439fi
440
Bram Moolenaar071d4272004-06-13 20:20:40 +0000441dnl Check user requested features.
442
443AC_MSG_CHECKING(--with-features argument)
Bram Moolenaareec29812016-07-26 21:27:36 +0200444AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: huge)],
Bram Moolenaar071d4272004-06-13 20:20:40 +0000445 features="$withval"; AC_MSG_RESULT($features),
Bram Moolenaar23c4f712016-01-20 22:11:59 +0100446 features="huge"; AC_MSG_RESULT(Defaulting to huge))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000447
448dovimdiff=""
449dogvimdiff=""
450case "$features" in
451 tiny) AC_DEFINE(FEAT_TINY) ;;
452 small) AC_DEFINE(FEAT_SMALL) ;;
453 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
454 dogvimdiff="installgvimdiff" ;;
455 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
456 dogvimdiff="installgvimdiff" ;;
457 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
458 dogvimdiff="installgvimdiff" ;;
459 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
460esac
461
462AC_SUBST(dovimdiff)
463AC_SUBST(dogvimdiff)
464
465AC_MSG_CHECKING(--with-compiledby argument)
466AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
467 compiledby="$withval"; AC_MSG_RESULT($withval),
468 compiledby=""; AC_MSG_RESULT(no))
469AC_SUBST(compiledby)
470
471AC_MSG_CHECKING(--disable-xsmp argument)
472AC_ARG_ENABLE(xsmp,
473 [ --disable-xsmp Disable XSMP session management],
474 , enable_xsmp="yes")
475
476if test "$enable_xsmp" = "yes"; then
477 AC_MSG_RESULT(no)
478 AC_MSG_CHECKING(--disable-xsmp-interact argument)
479 AC_ARG_ENABLE(xsmp-interact,
480 [ --disable-xsmp-interact Disable XSMP interaction],
481 , enable_xsmp_interact="yes")
482 if test "$enable_xsmp_interact" = "yes"; then
483 AC_MSG_RESULT(no)
484 AC_DEFINE(USE_XSMP_INTERACT)
485 else
486 AC_MSG_RESULT(yes)
487 fi
488else
489 AC_MSG_RESULT(yes)
490fi
491
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200492dnl Check for Lua feature.
493AC_MSG_CHECKING(--enable-luainterp argument)
494AC_ARG_ENABLE(luainterp,
Bram Moolenaar8008b632017-07-18 21:33:20 +0200495 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200496 [enable_luainterp="no"])
497AC_MSG_RESULT($enable_luainterp)
498
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200499if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +0100500 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
501 AC_MSG_ERROR([cannot use Lua with tiny or small features])
502 fi
503
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200504 dnl -- find the lua executable
505 AC_SUBST(vi_cv_path_lua)
506
507 AC_MSG_CHECKING(--with-lua-prefix argument)
508 AC_ARG_WITH(lua_prefix,
509 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
510 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200511 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200512
513 if test "X$with_lua_prefix" != "X"; then
514 vi_cv_path_lua_pfx="$with_lua_prefix"
515 else
516 AC_MSG_CHECKING(LUA_PREFIX environment var)
517 if test "X$LUA_PREFIX" != "X"; then
518 AC_MSG_RESULT("$LUA_PREFIX")
519 vi_cv_path_lua_pfx="$LUA_PREFIX"
520 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200521 AC_MSG_RESULT([not set, default to /usr])
522 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200523 fi
524 fi
525
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200526 AC_MSG_CHECKING(--with-luajit)
527 AC_ARG_WITH(luajit,
528 [ --with-luajit Link with LuaJIT instead of Lua.],
529 [vi_cv_with_luajit="$withval"],
530 [vi_cv_with_luajit="no"])
531 AC_MSG_RESULT($vi_cv_with_luajit)
532
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200533 LUA_INC=
534 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200535 if test "x$vi_cv_with_luajit" != "xno"; then
536 dnl -- try to find LuaJIT executable
537 AC_PATH_PROG(vi_cv_path_luajit, luajit)
538 if test "X$vi_cv_path_luajit" != "X"; then
539 dnl -- find LuaJIT version
540 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
Bram Moolenaar49b10272013-11-21 12:17:51 +0100541 [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]*\)* .*/\1/'` ])
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200542 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
543 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
544 vi_cv_path_lua="$vi_cv_path_luajit"
545 vi_cv_version_lua="$vi_cv_version_lua_luajit"
546 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200547 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200548 dnl -- try to find Lua executable
549 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
550 if test "X$vi_cv_path_plain_lua" != "X"; then
551 dnl -- find Lua version
552 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
553 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
554 fi
555 vi_cv_path_lua="$vi_cv_path_plain_lua"
556 vi_cv_version_lua="$vi_cv_version_plain_lua"
557 fi
558 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
559 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit)
Bram Moolenaar49222be2015-12-11 18:11:30 +0100560 if test -f "$vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200561 AC_MSG_RESULT(yes)
562 LUA_INC=/luajit-$vi_cv_version_luajit
563 fi
564 fi
565 if test "X$LUA_INC" = "X"; then
566 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
Bram Moolenaar49222be2015-12-11 18:11:30 +0100567 if test -f "$vi_cv_path_lua_pfx/include/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200568 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200569 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200570 AC_MSG_RESULT(no)
571 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
Bram Moolenaar49222be2015-12-11 18:11:30 +0100572 if test -f "$vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200573 AC_MSG_RESULT(yes)
574 LUA_INC=/lua$vi_cv_version_lua
575 else
576 AC_MSG_RESULT(no)
577 vi_cv_path_lua_pfx=
578 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200579 fi
580 fi
581 fi
582
583 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200584 if test "x$vi_cv_with_luajit" != "xno"; then
585 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
586 if test "X$multiarch" != "X"; then
587 lib_multiarch="lib/${multiarch}"
588 else
589 lib_multiarch="lib"
590 fi
591 if test "X$vi_cv_version_lua" = "X"; then
592 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
593 else
594 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
595 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200596 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200597 if test "X$LUA_INC" != "X"; then
598 dnl Test alternate location using version
599 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
600 else
601 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
602 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200603 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200604 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200605 lua_ok="yes"
606 else
607 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
608 libs_save=$LIBS
609 LIBS="$LIBS $LUA_LIBS"
610 AC_TRY_LINK(,[ ],
611 AC_MSG_RESULT(yes); lua_ok="yes",
612 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
613 LIBS=$libs_save
614 fi
615 if test "x$lua_ok" = "xyes"; then
616 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
617 LUA_SRC="if_lua.c"
618 LUA_OBJ="objects/if_lua.o"
619 LUA_PRO="if_lua.pro"
620 AC_DEFINE(FEAT_LUA)
621 fi
622 if test "$enable_luainterp" = "dynamic"; then
623 if test "x$vi_cv_with_luajit" != "xno"; then
624 luajit="jit"
625 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200626 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
627 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
628 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200629 if test "x$MACOSX" = "xyes"; then
630 ext="dylib"
631 indexes=""
632 else
633 ext="so"
634 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
635 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
636 if test "X$multiarch" != "X"; then
637 lib_multiarch="lib/${multiarch}"
638 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200639 fi
640 dnl Determine the sover for the current version, but fallback to
641 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200642 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200643 for subdir in "${lib_multiarch}" lib64 lib; do
644 if test -z "$subdir"; then
645 continue
646 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200647 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
648 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
649 for i in $indexes ""; do
650 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200651 sover2="$i"
652 break 3
653 fi
654 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100655 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200656 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200657 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200658 if test "X$sover" = "X"; then
659 AC_MSG_RESULT(no)
660 lua_ok="no"
661 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
662 else
663 AC_MSG_RESULT(yes)
664 lua_ok="yes"
665 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
666 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200667 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200668 AC_DEFINE(DYNAMIC_LUA)
669 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200670 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200671 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200672 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
673 test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
674 test "`(uname -m) 2>/dev/null`" = "x86_64"; then
675 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
676 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
677 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200678 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200679 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100680 AC_MSG_ERROR([could not configure lua])
681 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200682 AC_SUBST(LUA_SRC)
683 AC_SUBST(LUA_OBJ)
684 AC_SUBST(LUA_PRO)
685 AC_SUBST(LUA_LIBS)
686 AC_SUBST(LUA_CFLAGS)
687fi
688
689
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000690dnl Check for MzScheme feature.
691AC_MSG_CHECKING(--enable-mzschemeinterp argument)
692AC_ARG_ENABLE(mzschemeinterp,
Bram Moolenaar8008b632017-07-18 21:33:20 +0200693 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000694 [enable_mzschemeinterp="no"])
695AC_MSG_RESULT($enable_mzschemeinterp)
696
697if test "$enable_mzschemeinterp" = "yes"; then
698 dnl -- find the mzscheme executable
699 AC_SUBST(vi_cv_path_mzscheme)
700
701 AC_MSG_CHECKING(--with-plthome argument)
702 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000703 [ --with-plthome=PLTHOME Use PLTHOME.],
704 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000705 with_plthome="";AC_MSG_RESULT("no"))
706
707 if test "X$with_plthome" != "X"; then
708 vi_cv_path_mzscheme_pfx="$with_plthome"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100709 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000710 else
711 AC_MSG_CHECKING(PLTHOME environment var)
712 if test "X$PLTHOME" != "X"; then
713 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000714 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100715 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000716 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000717 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000718 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000719 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000720
721 dnl resolve symbolic link, the executable is often elsewhere and there
722 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000723 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000724 lsout=`ls -l $vi_cv_path_mzscheme`
725 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
726 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
727 fi
728 fi
729
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000730 if test "X$vi_cv_path_mzscheme" != "X"; then
731 dnl -- find where MzScheme thinks it was installed
732 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000733 dnl different versions of MzScheme differ in command line processing
734 dnl use universal approach
735 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000736 (build-path (call-with-values \
737 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000738 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
739 dnl Remove a trailing slash
740 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
741 sed -e 's+/$++'` ])
742 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000743 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000744 fi
745 fi
746
747 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100748 AC_MSG_CHECKING(for racket include directory)
749 SCHEME_INC=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-include-dir))) (when (path? p) (display p)))'`
750 if test "X$SCHEME_INC" != "X"; then
751 AC_MSG_RESULT(${SCHEME_INC})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000752 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100753 AC_MSG_RESULT(not found)
754 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
755 if test -f "$vi_cv_path_mzscheme_pfx/include/scheme.h"; then
756 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000757 AC_MSG_RESULT(yes)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000758 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000759 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100760 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
761 if test -f "$vi_cv_path_mzscheme_pfx/include/plt/scheme.h"; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000762 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100763 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000764 else
765 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100766 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
767 if test -f "$vi_cv_path_mzscheme_pfx/include/racket/scheme.h"; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100768 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100769 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100770 else
771 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100772 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
773 if test -f /usr/include/plt/scheme.h; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100774 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100775 SCHEME_INC=/usr/include/plt
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100776 else
777 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100778 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
779 if test -f /usr/include/racket/scheme.h; then
780 AC_MSG_RESULT(yes)
781 SCHEME_INC=/usr/include/racket
782 else
783 AC_MSG_RESULT(no)
784 vi_cv_path_mzscheme_pfx=
785 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100786 fi
787 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000788 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000789 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000790 fi
791 fi
792
793 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100794
795 AC_MSG_CHECKING(for racket lib directory)
796 SCHEME_LIB=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-lib-dir))) (when (path? p) (display p)))'`
797 if test "X$SCHEME_LIB" != "X"; then
798 AC_MSG_RESULT(${SCHEME_LIB})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000799 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100800 AC_MSG_RESULT(not found)
801 fi
802
803 for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do
804 if test "X$path" != "X"; then
805 if test "x$MACOSX" = "xyes"; then
806 MZSCHEME_LIBS="-framework Racket"
807 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
808 elif test -f "${path}/libmzscheme3m.a"; then
809 MZSCHEME_LIBS="${path}/libmzscheme3m.a"
810 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
811 elif test -f "${path}/libracket3m.a"; then
812 MZSCHEME_LIBS="${path}/libracket3m.a"
813 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
814 elif test -f "${path}/libracket.a"; then
815 MZSCHEME_LIBS="${path}/libracket.a ${path}/libmzgc.a"
816 elif test -f "${path}/libmzscheme.a"; then
817 MZSCHEME_LIBS="${path}/libmzscheme.a ${path}/libmzgc.a"
818 else
819 dnl Using shared objects
820 if test -f "${path}/libmzscheme3m.so"; then
821 MZSCHEME_LIBS="-L${path} -lmzscheme3m"
822 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
823 elif test -f "${path}/libracket3m.so"; then
824 MZSCHEME_LIBS="-L${path} -lracket3m"
825 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
826 elif test -f "${path}/libracket.so"; then
827 MZSCHEME_LIBS="-L${path} -lracket -lmzgc"
828 else
829 dnl try next until last
830 if test "$path" != "$SCHEME_LIB"; then
831 continue
832 fi
833 MZSCHEME_LIBS="-L${path} -lmzscheme -lmzgc"
834 fi
835 if test "$GCC" = yes; then
836 dnl Make Vim remember the path to the library. For when it's not in
837 dnl $LD_LIBRARY_PATH.
838 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${path}"
839 elif test "`(uname) 2>/dev/null`" = SunOS &&
840 uname -r | grep '^5' >/dev/null; then
841 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${path}"
842 fi
843 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000844 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100845 if test "X$MZSCHEME_LIBS" != "X"; then
846 break
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000847 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100848 done
849
850 AC_MSG_CHECKING([if racket requires -pthread])
851 if test "X$SCHEME_LIB" != "X" && $FGREP -e -pthread "$SCHEME_LIB/buildinfo" >/dev/null ; then
852 AC_MSG_RESULT(yes)
853 MZSCHEME_LIBS="${MZSCHEME_LIBS} -pthread"
854 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -pthread"
855 else
856 AC_MSG_RESULT(no)
857 fi
858
859 AC_MSG_CHECKING(for racket config directory)
860 SCHEME_CONFIGDIR=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-config-dir))) (when (path? p) (display p)))'`
861 if test "X$SCHEME_CONFIGDIR" != "X"; then
862 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DMZSCHEME_CONFIGDIR='\"${SCHEME_CONFIGDIR}\"'"
863 AC_MSG_RESULT(${SCHEME_CONFIGDIR})
864 else
865 AC_MSG_RESULT(not found)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000866 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100867
868 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100869 SCHEME_COLLECTS=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-collects-dir))) (when (path? p) (let-values (((base _1 _2) (split-path p))) (display base))))'`
870 if test "X$SCHEME_COLLECTS" = "X"; then
871 if test -d "$vi_cv_path_mzscheme_pfx/lib/plt/collects"; then
872 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100873 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100874 if test -d "$vi_cv_path_mzscheme_pfx/lib/racket/collects"; then
875 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100876 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100877 if test -d "$vi_cv_path_mzscheme_pfx/share/racket/collects"; then
878 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
879 else
880 if test -d "$vi_cv_path_mzscheme_pfx/collects"; then
881 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
882 fi
Bram Moolenaar75676462013-01-30 14:55:42 +0100883 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100884 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100885 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000886 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100887 if test "X$SCHEME_COLLECTS" != "X" ; then
888 AC_MSG_RESULT(${SCHEME_COLLECTS})
889 else
890 AC_MSG_RESULT(not found)
891 fi
892
893 AC_MSG_CHECKING(for mzscheme_base.c)
894 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000895 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100896 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
897 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100898 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100899 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100900 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100901 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
902 MZSCHEME_MOD="++lib scheme/base"
903 else
904 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
905 MZSCHEME_EXTRA="mzscheme_base.c"
906 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
907 MZSCHEME_MOD=""
908 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100909 fi
910 fi
911 if test "X$MZSCHEME_EXTRA" != "X" ; then
912 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000913 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100914 AC_MSG_RESULT(needed)
915 else
916 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000917 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100918
Bram Moolenaar9e902192013-07-17 18:58:11 +0200919 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
920 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
921
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000922 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100923 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200924
925 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
926 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
927 cflags_save=$CFLAGS
928 libs_save=$LIBS
929 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
930 LIBS="$LIBS $MZSCHEME_LIBS"
931 AC_TRY_LINK(,[ ],
932 AC_MSG_RESULT(yes); mzs_ok=yes,
933 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
934 CFLAGS=$cflags_save
935 LIBS=$libs_save
936 if test $mzs_ok = yes; then
937 MZSCHEME_SRC="if_mzsch.c"
938 MZSCHEME_OBJ="objects/if_mzsch.o"
939 MZSCHEME_PRO="if_mzsch.pro"
940 AC_DEFINE(FEAT_MZSCHEME)
941 else
942 MZSCHEME_CFLAGS=
943 MZSCHEME_LIBS=
944 MZSCHEME_EXTRA=
945 MZSCHEME_MZC=
946 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000947 fi
948 AC_SUBST(MZSCHEME_SRC)
949 AC_SUBST(MZSCHEME_OBJ)
950 AC_SUBST(MZSCHEME_PRO)
951 AC_SUBST(MZSCHEME_LIBS)
952 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000953 AC_SUBST(MZSCHEME_EXTRA)
954 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000955fi
956
957
Bram Moolenaar071d4272004-06-13 20:20:40 +0000958AC_MSG_CHECKING(--enable-perlinterp argument)
959AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200960 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000961 [enable_perlinterp="no"])
962AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200963if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +0100964 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
965 AC_MSG_ERROR([cannot use Perl with tiny or small features])
966 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000967 AC_SUBST(vi_cv_path_perl)
968 AC_PATH_PROG(vi_cv_path_perl, perl)
969 if test "X$vi_cv_path_perl" != "X"; then
970 AC_MSG_CHECKING(Perl version)
971 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
972 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200973 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000974 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
975 badthreads=no
976 else
977 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
978 eval `$vi_cv_path_perl -V:use5005threads`
979 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
980 badthreads=no
981 else
982 badthreads=yes
983 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
984 fi
985 else
986 badthreads=yes
987 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
988 fi
989 fi
990 if test $badthreads = no; then
991 AC_MSG_RESULT(OK)
992 eval `$vi_cv_path_perl -V:shrpenv`
993 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
994 shrpenv=""
995 fi
996 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
997 AC_SUBST(vi_cv_perllib)
Bram Moolenaard5f62b12014-08-17 17:05:44 +0200998 vi_cv_perl_extutils=unknown_perl_extutils_path
999 for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do
1000 xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp"
1001 if test -f "$xsubpp_path"; then
1002 vi_cv_perl_xsubpp="$xsubpp_path"
1003 fi
1004 done
1005 AC_SUBST(vi_cv_perl_xsubpp)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001006 dnl Remove "-fno-something", it breaks using cproto.
Bram Moolenaar280a8682015-06-21 13:41:08 +02001007 dnl Remove "-fdebug-prefix-map", it isn't supported by clang.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001008 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
Bram Moolenaar280a8682015-06-21 13:41:08 +02001009 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
1010 -e 's/-fdebug-prefix-map[[^ ]]*//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001011 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
1012 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
1013 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
1014 -e 's/-bE:perl.exp//' -e 's/-lc //'`
1015 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
1016 dnl a test in configure may fail because of that.
1017 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
1018 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
1019
1020 dnl check that compiling a simple program still works with the flags
1021 dnl added for Perl.
1022 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
1023 cflags_save=$CFLAGS
1024 libs_save=$LIBS
1025 ldflags_save=$LDFLAGS
1026 CFLAGS="$CFLAGS $perlcppflags"
1027 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001028 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001029 LDFLAGS="$perlldflags $LDFLAGS"
1030 AC_TRY_LINK(,[ ],
1031 AC_MSG_RESULT(yes); perl_ok=yes,
1032 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
1033 CFLAGS=$cflags_save
1034 LIBS=$libs_save
1035 LDFLAGS=$ldflags_save
1036 if test $perl_ok = yes; then
1037 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +00001038 dnl remove -pipe and -Wxxx, it confuses cproto
1039 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001040 fi
1041 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001042 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001043 LDFLAGS="$perlldflags $LDFLAGS"
1044 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001045 fi
1046 PERL_LIBS=$perllibs
1047 PERL_SRC="auto/if_perl.c if_perlsfio.c"
1048 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
1049 PERL_PRO="if_perl.pro if_perlsfio.pro"
1050 AC_DEFINE(FEAT_PERL)
1051 fi
1052 fi
1053 else
1054 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
1055 fi
1056 fi
1057
1058 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +00001059 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +00001060 dir=/System/Library/Perl
1061 darwindir=$dir/darwin
1062 if test -d $darwindir; then
1063 PERL=/usr/bin/perl
1064 else
1065 dnl Mac OS X 10.3
1066 dir=/System/Library/Perl/5.8.1
1067 darwindir=$dir/darwin-thread-multi-2level
1068 if test -d $darwindir; then
1069 PERL=/usr/bin/perl
1070 fi
1071 fi
1072 if test -n "$PERL"; then
1073 PERL_DIR="$dir"
1074 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1075 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1076 PERL_LIBS="-L$darwindir/CORE -lperl"
1077 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001078 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1079 dnl be included if requested by passing --with-mac-arch to
1080 dnl configure, so strip these flags first (if present)
1081 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1082 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 +00001083 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001084 if test "$enable_perlinterp" = "dynamic"; then
1085 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1086 AC_DEFINE(DYNAMIC_PERL)
1087 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
1088 fi
1089 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001090
1091 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1092 AC_MSG_ERROR([could not configure perl])
1093 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001094fi
1095AC_SUBST(shrpenv)
1096AC_SUBST(PERL_SRC)
1097AC_SUBST(PERL_OBJ)
1098AC_SUBST(PERL_PRO)
1099AC_SUBST(PERL_CFLAGS)
1100AC_SUBST(PERL_LIBS)
1101
1102AC_MSG_CHECKING(--enable-pythoninterp argument)
1103AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001104 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001105 [enable_pythoninterp="no"])
1106AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001107if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001108 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1109 AC_MSG_ERROR([cannot use Python with tiny or small features])
1110 fi
1111
Bram Moolenaar071d4272004-06-13 20:20:40 +00001112 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001113 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001114 if test "X$vi_cv_path_python" != "X"; then
1115
1116 dnl -- get its version number
1117 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1118 [[vi_cv_var_python_version=`
1119 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1120 ]])
1121
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001122 dnl -- it must be at least version 2.3
1123 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001124 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001125 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001126 then
1127 AC_MSG_RESULT(yep)
1128
1129 dnl -- find where python thinks it was installed
1130 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1131 [ vi_cv_path_python_pfx=`
1132 ${vi_cv_path_python} -c \
1133 "import sys; print sys.prefix"` ])
1134
1135 dnl -- and where it thinks it runs
1136 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1137 [ vi_cv_path_python_epfx=`
1138 ${vi_cv_path_python} -c \
1139 "import sys; print sys.exec_prefix"` ])
1140
1141 dnl -- python's internal library path
1142
1143 AC_CACHE_VAL(vi_cv_path_pythonpath,
1144 [ vi_cv_path_pythonpath=`
1145 unset PYTHONPATH;
1146 ${vi_cv_path_python} -c \
1147 "import sys, string; print string.join(sys.path,':')"` ])
1148
1149 dnl -- where the Python implementation library archives are
1150
1151 AC_ARG_WITH(python-config-dir,
1152 [ --with-python-config-dir=PATH Python's config directory],
1153 [ vi_cv_path_python_conf="${withval}" ] )
1154
1155 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1156 [
1157 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001158 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1159 if test -d "$d" && test -f "$d/config.c"; then
1160 vi_cv_path_python_conf="$d"
1161 else
1162 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1163 for subdir in lib64 lib share; do
1164 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1165 if test -d "$d" && test -f "$d/config.c"; then
1166 vi_cv_path_python_conf="$d"
1167 fi
1168 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001169 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001170 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001171 ])
1172
1173 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1174
1175 if test "X$PYTHON_CONFDIR" = "X"; then
1176 AC_MSG_RESULT([can't find it!])
1177 else
1178
1179 dnl -- we need to examine Python's config/Makefile too
1180 dnl see what the interpreter is built from
1181 AC_CACHE_VAL(vi_cv_path_python_plibs,
1182 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001183 pwd=`pwd`
1184 tmp_mkf="$pwd/config-PyMake$$"
1185 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001186__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001187 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001188 @echo "python_LIBS='$(LIBS)'"
1189 @echo "python_SYSLIBS='$(SYSLIBS)'"
1190 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001191 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001192 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001193 @echo "python_PYTHONFRAMEWORK='$(PYTHONFRAMEWORK)'"
1194 @echo "python_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
1195 @echo "python_PYTHONFRAMEWORKINSTALLDIR='$(PYTHONFRAMEWORKINSTALLDIR)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001196eof
1197 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001198 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1199 rm -f -- "${tmp_mkf}"
Bram Moolenaarcff50f52016-08-14 17:32:52 +02001200 if test "x$MACOSX" = "xyes" && test -n "${python_PYTHONFRAMEWORK}" && ${vi_cv_path_python} -c \
Bram Moolenaar071d4272004-06-13 20:20:40 +00001201 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1202 vi_cv_path_python_plibs="-framework Python"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001203 if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
1204 vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
1205 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001206 else
1207 if test "${vi_cv_var_python_version}" = "1.4"; then
1208 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1209 else
1210 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1211 fi
Bram Moolenaar6c927552015-03-24 12:21:33 +01001212 dnl -- Check if the path contained in python_LINKFORSHARED is
1213 dnl usable for vim build. If not, make and try other
1214 dnl candidates.
Bram Moolenaara161e262015-03-24 15:14:27 +01001215 if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
Bram Moolenaar6c927552015-03-24 12:21:33 +01001216 python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]].*/\1/'`
1217 python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]][[ \t]]*\(.*\)/\2/'`
1218 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1219 dnl -- The path looks relative. Guess the absolute one using
1220 dnl the prefix and try that.
1221 python_link_path="${python_PYTHONFRAMEWORKPREFIX}/${python_link_path}"
1222 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1223 dnl -- A last resort.
1224 python_link_path="${python_PYTHONFRAMEWORKINSTALLDIR}/Versions/${vi_cv_var_python_version}/${python_PYTHONFRAMEWORK}"
1225 dnl -- No check is done. The last word is left to the
1226 dnl "sanity" test on link flags that follows shortly.
1227 fi
1228 python_LINKFORSHARED="${python_link_symbol} ${python_link_path}"
1229 fi
1230 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001231 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 +00001232 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1233 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1234 fi
1235 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001236 AC_CACHE_CHECK(Python's dll name,vi_cv_dll_name_python,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001237 [
1238 if test "X$python_DLLLIBRARY" != "X"; then
1239 vi_cv_dll_name_python="$python_DLLLIBRARY"
1240 else
1241 vi_cv_dll_name_python="$python_INSTSONAME"
1242 fi
1243 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001244
1245 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1246 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001247 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 +00001248 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001249 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 +00001250 fi
1251 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001252 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001253 if test "${vi_cv_var_python_version}" = "1.4"; then
1254 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1255 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001256 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 +00001257
1258 dnl On FreeBSD linking with "-pthread" is required to use threads.
1259 dnl _THREAD_SAFE must be used for compiling then.
1260 dnl The "-pthread" is added to $LIBS, so that the following check for
1261 dnl sigaltstack() will look in libc_r (it's there in libc!).
1262 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1263 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1264 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1265 AC_MSG_CHECKING([if -pthread should be used])
1266 threadsafe_flag=
1267 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001268 dnl if test "x$MACOSX" != "xyes"; then
1269 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001270 test "$GCC" = yes && threadsafe_flag="-pthread"
1271 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1272 threadsafe_flag="-D_THREAD_SAFE"
1273 thread_lib="-pthread"
1274 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001275 if test "`(uname) 2>/dev/null`" = SunOS; then
1276 threadsafe_flag="-pthreads"
1277 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001278 fi
1279 libs_save_old=$LIBS
1280 if test -n "$threadsafe_flag"; then
1281 cflags_save=$CFLAGS
1282 CFLAGS="$CFLAGS $threadsafe_flag"
1283 LIBS="$LIBS $thread_lib"
1284 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001285 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001286 AC_MSG_RESULT(no); LIBS=$libs_save_old
1287 )
1288 CFLAGS=$cflags_save
1289 else
1290 AC_MSG_RESULT(no)
1291 fi
1292
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001293 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001294 dnl added for Python.
1295 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1296 cflags_save=$CFLAGS
1297 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001298 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001299 LIBS="$LIBS $PYTHON_LIBS"
1300 AC_TRY_LINK(,[ ],
1301 AC_MSG_RESULT(yes); python_ok=yes,
1302 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1303 CFLAGS=$cflags_save
1304 LIBS=$libs_save
1305 if test $python_ok = yes; then
1306 AC_DEFINE(FEAT_PYTHON)
1307 else
1308 LIBS=$libs_save_old
1309 PYTHON_SRC=
1310 PYTHON_OBJ=
1311 PYTHON_LIBS=
1312 PYTHON_CFLAGS=
1313 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001314 fi
1315 else
1316 AC_MSG_RESULT(too old)
1317 fi
1318 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001319
1320 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1321 AC_MSG_ERROR([could not configure python])
1322 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001323fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001324
Bram Moolenaar071d4272004-06-13 20:20:40 +00001325AC_SUBST(PYTHON_CONFDIR)
1326AC_SUBST(PYTHON_LIBS)
1327AC_SUBST(PYTHON_GETPATH_CFLAGS)
1328AC_SUBST(PYTHON_CFLAGS)
1329AC_SUBST(PYTHON_SRC)
1330AC_SUBST(PYTHON_OBJ)
1331
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001332
1333AC_MSG_CHECKING(--enable-python3interp argument)
1334AC_ARG_ENABLE(python3interp,
Bram Moolenaar8008b632017-07-18 21:33:20 +02001335 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001336 [enable_python3interp="no"])
1337AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001338if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001339 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1340 AC_MSG_ERROR([cannot use Python with tiny or small features])
1341 fi
1342
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001343 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001344 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001345 if test "X$vi_cv_path_python3" != "X"; then
1346
1347 dnl -- get its version number
1348 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1349 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001350 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001351 ]])
1352
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001353 dnl -- it must be at least version 3
1354 AC_MSG_CHECKING(Python is 3.0 or better)
1355 if ${vi_cv_path_python3} -c \
1356 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1357 then
1358 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001359
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001360 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1361 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001362 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001363 vi_cv_var_python3_abiflags=
1364 if ${vi_cv_path_python3} -c \
1365 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1366 then
1367 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1368 "import sys; print(sys.abiflags)"`
1369 fi ])
1370
1371 dnl -- find where python3 thinks it was installed
1372 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1373 [ vi_cv_path_python3_pfx=`
1374 ${vi_cv_path_python3} -c \
1375 "import sys; print(sys.prefix)"` ])
1376
1377 dnl -- and where it thinks it runs
1378 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1379 [ vi_cv_path_python3_epfx=`
1380 ${vi_cv_path_python3} -c \
1381 "import sys; print(sys.exec_prefix)"` ])
1382
1383 dnl -- python3's internal library path
1384
1385 AC_CACHE_VAL(vi_cv_path_python3path,
1386 [ vi_cv_path_python3path=`
1387 unset PYTHONPATH;
1388 ${vi_cv_path_python3} -c \
1389 "import sys, string; print(':'.join(sys.path))"` ])
1390
1391 dnl -- where the Python implementation library archives are
1392
1393 AC_ARG_WITH(python3-config-dir,
1394 [ --with-python3-config-dir=PATH Python's config directory],
1395 [ vi_cv_path_python3_conf="${withval}" ] )
1396
1397 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1398 [
1399 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001400 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001401 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1402 if test -d "$d" && test -f "$d/config.c"; then
1403 vi_cv_path_python3_conf="$d"
1404 else
1405 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1406 for subdir in lib64 lib share; do
1407 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1408 if test -d "$d" && test -f "$d/config.c"; then
1409 vi_cv_path_python3_conf="$d"
1410 fi
1411 done
1412 done
1413 fi
1414 ])
1415
1416 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1417
1418 if test "X$PYTHON3_CONFDIR" = "X"; then
1419 AC_MSG_RESULT([can't find it!])
1420 else
1421
1422 dnl -- we need to examine Python's config/Makefile too
1423 dnl see what the interpreter is built from
1424 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1425 [
1426 pwd=`pwd`
1427 tmp_mkf="$pwd/config-PyMake$$"
1428 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001429__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001430 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001431 @echo "python3_LIBS='$(LIBS)'"
1432 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001433 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001434 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001435eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001436 dnl -- delete the lines from make about Entering/Leaving directory
1437 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1438 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001439 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001440 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1441 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1442 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1443 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1444 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001445 AC_CACHE_CHECK(Python3's dll name,vi_cv_dll_name_python3,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001446 [
1447 if test "X$python3_DLLLIBRARY" != "X"; then
1448 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
1449 else
1450 vi_cv_dll_name_python3="$python3_INSTSONAME"
1451 fi
1452 ])
1453
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001454 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1455 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001456 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 Moolenaar3c7ad012013-06-11 19:53:45 +02001457 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001458 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 Moolenaar3c7ad012013-06-11 19:53:45 +02001459 fi
1460 PYTHON3_SRC="if_python3.c"
1461 PYTHON3_OBJ="objects/if_python3.o"
1462
1463 dnl On FreeBSD linking with "-pthread" is required to use threads.
1464 dnl _THREAD_SAFE must be used for compiling then.
1465 dnl The "-pthread" is added to $LIBS, so that the following check for
1466 dnl sigaltstack() will look in libc_r (it's there in libc!).
1467 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1468 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1469 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1470 AC_MSG_CHECKING([if -pthread should be used])
1471 threadsafe_flag=
1472 thread_lib=
1473 dnl if test "x$MACOSX" != "xyes"; then
1474 if test "`(uname) 2>/dev/null`" != Darwin; then
1475 test "$GCC" = yes && threadsafe_flag="-pthread"
1476 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1477 threadsafe_flag="-D_THREAD_SAFE"
1478 thread_lib="-pthread"
1479 fi
1480 if test "`(uname) 2>/dev/null`" = SunOS; then
1481 threadsafe_flag="-pthreads"
1482 fi
1483 fi
1484 libs_save_old=$LIBS
1485 if test -n "$threadsafe_flag"; then
1486 cflags_save=$CFLAGS
1487 CFLAGS="$CFLAGS $threadsafe_flag"
1488 LIBS="$LIBS $thread_lib"
1489 AC_TRY_LINK(,[ ],
1490 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1491 AC_MSG_RESULT(no); LIBS=$libs_save_old
1492 )
1493 CFLAGS=$cflags_save
1494 else
1495 AC_MSG_RESULT(no)
1496 fi
1497
1498 dnl check that compiling a simple program still works with the flags
1499 dnl added for Python.
1500 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1501 cflags_save=$CFLAGS
1502 libs_save=$LIBS
1503 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1504 LIBS="$LIBS $PYTHON3_LIBS"
1505 AC_TRY_LINK(,[ ],
1506 AC_MSG_RESULT(yes); python3_ok=yes,
1507 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1508 CFLAGS=$cflags_save
1509 LIBS=$libs_save
1510 if test "$python3_ok" = yes; then
1511 AC_DEFINE(FEAT_PYTHON3)
1512 else
1513 LIBS=$libs_save_old
1514 PYTHON3_SRC=
1515 PYTHON3_OBJ=
1516 PYTHON3_LIBS=
1517 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001518 fi
1519 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001520 else
1521 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001522 fi
1523 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001524 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1525 AC_MSG_ERROR([could not configure python3])
1526 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001527fi
1528
1529AC_SUBST(PYTHON3_CONFDIR)
1530AC_SUBST(PYTHON3_LIBS)
1531AC_SUBST(PYTHON3_CFLAGS)
1532AC_SUBST(PYTHON3_SRC)
1533AC_SUBST(PYTHON3_OBJ)
1534
1535dnl if python2.x and python3.x are enabled one can only link in code
1536dnl with dlopen(), dlsym(), dlclose()
1537if test "$python_ok" = yes && test "$python3_ok" = yes; then
1538 AC_DEFINE(DYNAMIC_PYTHON)
1539 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001540 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001541 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001542 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001543 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001544 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001545 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001546 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001547 #include <dlfcn.h>
1548 /* If this program fails, then RTLD_GLOBAL is needed.
1549 * RTLD_GLOBAL will be used and then it is not possible to
1550 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001551 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001552 */
1553
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001554 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001555 {
1556 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001557 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001558 if (pylib != 0)
1559 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001560 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001561 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1562 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1563 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001564 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001565 (*init)();
1566 needed = (*simple)("import termios") == -1;
1567 (*final)();
1568 dlclose(pylib);
1569 }
1570 return !needed;
1571 }
1572
1573 int main(int argc, char** argv)
1574 {
1575 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001576 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001577 not_needed = 1;
1578 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001579 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001580 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001581
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001582 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001583 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001584
1585 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1586 cflags_save=$CFLAGS
1587 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001588 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001589 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001590 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001591 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001592 #include <dlfcn.h>
1593 #include <wchar.h>
1594 /* If this program fails, then RTLD_GLOBAL is needed.
1595 * RTLD_GLOBAL will be used and then it is not possible to
1596 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001597 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001598 */
1599
1600 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1601 {
1602 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001603 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001604 if (pylib != 0)
1605 {
1606 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1607 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1608 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1609 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1610 (*pfx)(prefix);
1611 (*init)();
1612 needed = (*simple)("import termios") == -1;
1613 (*final)();
1614 dlclose(pylib);
1615 }
1616 return !needed;
1617 }
1618
1619 int main(int argc, char** argv)
1620 {
1621 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001622 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001623 not_needed = 1;
1624 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001625 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001626 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1627
1628 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001629 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001630
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001631 PYTHON_SRC="if_python.c"
1632 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001633 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001634 PYTHON_LIBS=
1635 PYTHON3_SRC="if_python3.c"
1636 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001637 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001638 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001639elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1640 AC_DEFINE(DYNAMIC_PYTHON)
1641 PYTHON_SRC="if_python.c"
1642 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001643 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001644 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001645elif test "$python_ok" = yes; then
1646 dnl Check that adding -fPIE works. It may be needed when using a static
1647 dnl Python library.
1648 AC_MSG_CHECKING([if -fPIE can be added for Python])
1649 cflags_save=$CFLAGS
1650 libs_save=$LIBS
1651 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1652 LIBS="$LIBS $PYTHON_LIBS"
1653 AC_TRY_LINK(,[ ],
1654 AC_MSG_RESULT(yes); fpie_ok=yes,
1655 AC_MSG_RESULT(no); fpie_ok=no)
1656 CFLAGS=$cflags_save
1657 LIBS=$libs_save
1658 if test $fpie_ok = yes; then
1659 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1660 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001661elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1662 AC_DEFINE(DYNAMIC_PYTHON3)
1663 PYTHON3_SRC="if_python3.c"
1664 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001665 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001666 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001667elif test "$python3_ok" = yes; then
1668 dnl Check that adding -fPIE works. It may be needed when using a static
1669 dnl Python library.
1670 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1671 cflags_save=$CFLAGS
1672 libs_save=$LIBS
1673 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1674 LIBS="$LIBS $PYTHON3_LIBS"
1675 AC_TRY_LINK(,[ ],
1676 AC_MSG_RESULT(yes); fpie_ok=yes,
1677 AC_MSG_RESULT(no); fpie_ok=no)
1678 CFLAGS=$cflags_save
1679 LIBS=$libs_save
1680 if test $fpie_ok = yes; then
1681 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1682 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001683fi
1684
Bram Moolenaar071d4272004-06-13 20:20:40 +00001685AC_MSG_CHECKING(--enable-tclinterp argument)
1686AC_ARG_ENABLE(tclinterp,
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001687 [ --enable-tclinterp[=OPTS] Include Tcl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001688 [enable_tclinterp="no"])
1689AC_MSG_RESULT($enable_tclinterp)
1690
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001691if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001692
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001693 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001694 AC_MSG_CHECKING(--with-tclsh argument)
1695 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1696 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001697 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001698 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1699 AC_SUBST(vi_cv_path_tcl)
1700
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001701 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1702 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1703 tclsh_name="tclsh8.4"
1704 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1705 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001706 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001707 tclsh_name="tclsh8.2"
1708 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1709 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001710 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1711 tclsh_name="tclsh8.0"
1712 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1713 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001714 dnl still didn't find it, try without version number
1715 if test "X$vi_cv_path_tcl" = "X"; then
1716 tclsh_name="tclsh"
1717 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1718 fi
1719 if test "X$vi_cv_path_tcl" != "X"; then
1720 AC_MSG_CHECKING(Tcl version)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001721 if echo 'exit [[expr [info tclversion] < 8.0]]' | "$vi_cv_path_tcl" - ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001722 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1723 AC_MSG_RESULT($tclver - OK);
1724 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 -`
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001725 tcldll=`echo 'puts libtcl[[info tclversion]][[info sharedlibextension]]' | $vi_cv_path_tcl -`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001726
1727 AC_MSG_CHECKING(for location of Tcl include)
1728 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001729 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 +00001730 else
1731 dnl For Mac OS X 10.3, use the OS-provided framework location
1732 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1733 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001734 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001735 for try in $tclinc; do
1736 if test -f "$try/tcl.h"; then
1737 AC_MSG_RESULT($try/tcl.h)
1738 TCL_INC=$try
1739 break
1740 fi
1741 done
1742 if test -z "$TCL_INC"; then
1743 AC_MSG_RESULT(<not found>)
1744 SKIP_TCL=YES
1745 fi
1746 if test -z "$SKIP_TCL"; then
1747 AC_MSG_CHECKING(for location of tclConfig.sh script)
1748 if test "x$MACOSX" != "xyes"; then
1749 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001750 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001751 else
1752 dnl For Mac OS X 10.3, use the OS-provided framework location
1753 tclcnf="/System/Library/Frameworks/Tcl.framework"
1754 fi
1755 for try in $tclcnf; do
Bram Moolenaar49222be2015-12-11 18:11:30 +01001756 if test -f "$try/tclConfig.sh"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001757 AC_MSG_RESULT($try/tclConfig.sh)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001758 . "$try/tclConfig.sh"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001759 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001760 if test "$enable_tclinterp" = "dynamic"; then
1761 TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"`
1762 else
1763 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1764 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001765 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001766 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001767 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 +00001768 break
1769 fi
1770 done
1771 if test -z "$TCL_LIBS"; then
1772 AC_MSG_RESULT(<not found>)
1773 AC_MSG_CHECKING(for Tcl library by myself)
1774 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001775 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001776 for ext in .so .a ; do
1777 for ver in "" $tclver ; do
1778 for try in $tcllib ; do
1779 trylib=tcl$ver$ext
Bram Moolenaar49222be2015-12-11 18:11:30 +01001780 if test -f "$try/lib$trylib" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001781 AC_MSG_RESULT($try/lib$trylib)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001782 TCL_LIBS="-L\"$try\" -ltcl$ver -ldl -lm"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001783 if test "`(uname) 2>/dev/null`" = SunOS &&
1784 uname -r | grep '^5' >/dev/null; then
1785 TCL_LIBS="$TCL_LIBS -R $try"
1786 fi
1787 break 3
1788 fi
1789 done
1790 done
1791 done
1792 if test -z "$TCL_LIBS"; then
1793 AC_MSG_RESULT(<not found>)
1794 SKIP_TCL=YES
1795 fi
1796 fi
1797 if test -z "$SKIP_TCL"; then
1798 AC_DEFINE(FEAT_TCL)
1799 TCL_SRC=if_tcl.c
1800 TCL_OBJ=objects/if_tcl.o
1801 TCL_PRO=if_tcl.pro
1802 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1803 fi
1804 fi
1805 else
1806 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1807 fi
1808 fi
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001809 if test "$enable_tclinterp" = "dynamic"; then
1810 if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then
1811 AC_DEFINE(DYNAMIC_TCL)
1812 TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS"
1813 fi
1814 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001815 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1816 AC_MSG_ERROR([could not configure Tcl])
1817 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001818fi
1819AC_SUBST(TCL_SRC)
1820AC_SUBST(TCL_OBJ)
1821AC_SUBST(TCL_PRO)
1822AC_SUBST(TCL_CFLAGS)
1823AC_SUBST(TCL_LIBS)
1824
1825AC_MSG_CHECKING(--enable-rubyinterp argument)
1826AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001827 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001828 [enable_rubyinterp="no"])
1829AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001830if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001831 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1832 AC_MSG_ERROR([cannot use Ruby with tiny or small features])
1833 fi
1834
Bram Moolenaar165641d2010-02-17 16:23:09 +01001835 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001836 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001837 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1838 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1839 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001840 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001841 if test "X$vi_cv_path_ruby" != "X"; then
1842 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001843 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 +00001844 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001845 AC_MSG_CHECKING(Ruby rbconfig)
1846 ruby_rbconfig="RbConfig"
1847 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1848 ruby_rbconfig="Config"
1849 fi
1850 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001851 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001852 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e "print $ruby_rbconfig::CONFIG[['rubyhdrdir']] || $ruby_rbconfig::CONFIG[['archdir']] || \\$hdrdir" 2>/dev/null`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001853 if test "X$rubyhdrdir" != "X"; then
1854 AC_MSG_RESULT($rubyhdrdir)
1855 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001856 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1857 if test -d "$rubyarchdir"; then
1858 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001859 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001860 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001861 if test "X$rubyversion" = "X"; then
1862 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1863 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001864 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001865 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001866 if test "X$rubylibs" != "X"; then
1867 RUBY_LIBS="$rubylibs"
1868 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001869 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1870 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001871 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001872 if test -f "$rubylibdir/$librubya"; then
1873 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001874 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1875 elif test "$librubyarg" = "libruby.a"; then
1876 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1877 librubyarg="-lruby"
1878 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001879 fi
1880
1881 if test "X$librubyarg" != "X"; then
1882 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1883 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001884 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001885 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001886 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1887 dnl be included if requested by passing --with-mac-arch to
1888 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001889 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001890 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001891 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001892 LDFLAGS="$rubyldflags $LDFLAGS"
1893 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001894 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001895 fi
1896 RUBY_SRC="if_ruby.c"
1897 RUBY_OBJ="objects/if_ruby.o"
1898 RUBY_PRO="if_ruby.pro"
1899 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001900 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001901 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001902 AC_DEFINE(DYNAMIC_RUBY)
1903 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1904 RUBY_LIBS=
1905 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001906 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001907 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001908 fi
1909 else
1910 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1911 fi
1912 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001913
1914 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1915 AC_MSG_ERROR([could not configure Ruby])
1916 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001917fi
1918AC_SUBST(RUBY_SRC)
1919AC_SUBST(RUBY_OBJ)
1920AC_SUBST(RUBY_PRO)
1921AC_SUBST(RUBY_CFLAGS)
1922AC_SUBST(RUBY_LIBS)
1923
1924AC_MSG_CHECKING(--enable-cscope argument)
1925AC_ARG_ENABLE(cscope,
1926 [ --enable-cscope Include cscope interface.], ,
1927 [enable_cscope="no"])
1928AC_MSG_RESULT($enable_cscope)
1929if test "$enable_cscope" = "yes"; then
1930 AC_DEFINE(FEAT_CSCOPE)
1931fi
1932
1933AC_MSG_CHECKING(--enable-workshop argument)
1934AC_ARG_ENABLE(workshop,
1935 [ --enable-workshop Include Sun Visual Workshop support.], ,
1936 [enable_workshop="no"])
1937AC_MSG_RESULT($enable_workshop)
1938if test "$enable_workshop" = "yes"; then
1939 AC_DEFINE(FEAT_SUN_WORKSHOP)
1940 WORKSHOP_SRC="workshop.c integration.c"
1941 AC_SUBST(WORKSHOP_SRC)
1942 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1943 AC_SUBST(WORKSHOP_OBJ)
1944 if test "${enable_gui-xxx}" = xxx; then
1945 enable_gui=motif
1946 fi
1947fi
1948
1949AC_MSG_CHECKING(--disable-netbeans argument)
1950AC_ARG_ENABLE(netbeans,
1951 [ --disable-netbeans Disable NetBeans integration support.],
1952 , [enable_netbeans="yes"])
1953if test "$enable_netbeans" = "yes"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001954 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1955 AC_MSG_RESULT([cannot use NetBeans with tiny or small features])
1956 enable_netbeans="no"
1957 else
1958 AC_MSG_RESULT(no)
1959 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01001960else
1961 AC_MSG_RESULT(yes)
1962fi
1963
1964AC_MSG_CHECKING(--disable-channel argument)
1965AC_ARG_ENABLE(channel,
Bram Moolenaar8008b632017-07-18 21:33:20 +02001966 [ --disable-channel Disable process communication support.],
Bram Moolenaare0874f82016-01-24 20:36:41 +01001967 , [enable_channel="yes"])
1968if test "$enable_channel" = "yes"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001969 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1970 AC_MSG_RESULT([cannot use channels with tiny or small features])
1971 enable_channel="no"
1972 else
1973 AC_MSG_RESULT(no)
1974 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01001975else
1976 if test "$enable_netbeans" = "yes"; then
Bram Moolenaar16435482016-01-24 21:31:54 +01001977 AC_MSG_RESULT([yes, netbeans also disabled])
Bram Moolenaare0874f82016-01-24 20:36:41 +01001978 enable_netbeans="no"
1979 else
1980 AC_MSG_RESULT(yes)
1981 fi
1982fi
1983
Bram Moolenaar16435482016-01-24 21:31:54 +01001984if test "$enable_channel" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001985 dnl On Solaris we need the socket and nsl library.
1986 AC_CHECK_LIB(socket, socket)
1987 AC_CHECK_LIB(nsl, gethostbyname)
Bram Moolenaare0874f82016-01-24 20:36:41 +01001988 AC_MSG_CHECKING(whether compiling with process communication is possible)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001989 AC_TRY_LINK([
1990#include <stdio.h>
1991#include <stdlib.h>
1992#include <stdarg.h>
1993#include <fcntl.h>
1994#include <netdb.h>
1995#include <netinet/in.h>
1996#include <errno.h>
1997#include <sys/types.h>
1998#include <sys/socket.h>
1999 /* Check bitfields */
2000 struct nbbuf {
2001 unsigned int initDone:1;
Bram Moolenaar63de19e2016-12-09 20:11:26 +01002002 unsigned short signmaplen;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002003 };
2004 ], [
2005 /* Check creating a socket. */
2006 struct sockaddr_in server;
2007 (void)socket(AF_INET, SOCK_STREAM, 0);
2008 (void)htons(100);
2009 (void)gethostbyname("microsoft.com");
2010 if (errno == ECONNREFUSED)
2011 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
2012 ],
2013 AC_MSG_RESULT(yes),
Bram Moolenaare0874f82016-01-24 20:36:41 +01002014 AC_MSG_RESULT(no); enable_netbeans="no"; enable_channel="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002015fi
2016if test "$enable_netbeans" = "yes"; then
2017 AC_DEFINE(FEAT_NETBEANS_INTG)
2018 NETBEANS_SRC="netbeans.c"
2019 AC_SUBST(NETBEANS_SRC)
2020 NETBEANS_OBJ="objects/netbeans.o"
2021 AC_SUBST(NETBEANS_OBJ)
2022fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002023if test "$enable_channel" = "yes"; then
Bram Moolenaar509ce2a2016-03-11 22:52:15 +01002024 AC_DEFINE(FEAT_JOB_CHANNEL)
Bram Moolenaare0874f82016-01-24 20:36:41 +01002025 CHANNEL_SRC="channel.c"
2026 AC_SUBST(CHANNEL_SRC)
2027 CHANNEL_OBJ="objects/channel.o"
2028 AC_SUBST(CHANNEL_OBJ)
2029fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002030
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002031AC_MSG_CHECKING(--enable-terminal argument)
2032AC_ARG_ENABLE(terminal,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002033 [ --enable-terminal Enable terminal emulation support.],
Bram Moolenaar595a4022017-09-03 19:15:57 +02002034 [enable_terminal="yes"], [enable_terminal="auto"])
2035if test "$enable_terminal" = "yes" || test "$enable_terminal" = "auto" -a "x$features" = "xhuge" ; then
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002036 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
2037 AC_MSG_RESULT([cannot use terminal emulator with tiny or small features])
2038 enable_terminal="no"
2039 else
Bram Moolenaar595a4022017-09-03 19:15:57 +02002040 if test "$enable_terminal" = "auto"; then
2041 enable_terminal="yes"
2042 AC_MSG_RESULT(defaulting to yes)
2043 else
2044 AC_MSG_RESULT(yes)
2045 fi
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002046 fi
2047else
Bram Moolenaar595a4022017-09-03 19:15:57 +02002048 if test "$enable_terminal" = "auto"; then
2049 enable_terminal="no"
2050 AC_MSG_RESULT(defaulting to no)
2051 else
2052 AC_MSG_RESULT(no)
2053 fi
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002054fi
2055if test "$enable_terminal" = "yes"; then
2056 AC_DEFINE(FEAT_TERMINAL)
2057 TERM_SRC="libvterm/src/encoding.c libvterm/src/keyboard.c libvterm/src/mouse.c libvterm/src/parser.c libvterm/src/pen.c libvterm/src/screen.c libvterm/src/state.c libvterm/src/unicode.c libvterm/src/vterm.c"
2058 AC_SUBST(TERM_SRC)
2059 TERM_OBJ="objects/term_encoding.o objects/term_keyboard.o objects/term_mouse.o objects/term_parser.o objects/term_pen.o objects/term_screen.o objects/term_state.o objects/term_unicode.o objects/term_vterm.o"
2060 AC_SUBST(TERM_OBJ)
2061fi
2062
Bram Moolenaar071d4272004-06-13 20:20:40 +00002063AC_MSG_CHECKING(--enable-multibyte argument)
2064AC_ARG_ENABLE(multibyte,
2065 [ --enable-multibyte Include multibyte editing support.], ,
2066 [enable_multibyte="no"])
2067AC_MSG_RESULT($enable_multibyte)
2068if test "$enable_multibyte" = "yes"; then
2069 AC_DEFINE(FEAT_MBYTE)
2070fi
2071
2072AC_MSG_CHECKING(--enable-hangulinput argument)
2073AC_ARG_ENABLE(hangulinput,
2074 [ --enable-hangulinput Include Hangul input support.], ,
2075 [enable_hangulinput="no"])
2076AC_MSG_RESULT($enable_hangulinput)
2077
2078AC_MSG_CHECKING(--enable-xim argument)
2079AC_ARG_ENABLE(xim,
2080 [ --enable-xim Include XIM input support.],
2081 AC_MSG_RESULT($enable_xim),
2082 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002083
2084AC_MSG_CHECKING(--enable-fontset argument)
2085AC_ARG_ENABLE(fontset,
2086 [ --enable-fontset Include X fontset output support.], ,
2087 [enable_fontset="no"])
2088AC_MSG_RESULT($enable_fontset)
2089dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
2090
2091test -z "$with_x" && with_x=yes
2092test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
2093if test "$with_x" = no; then
2094 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
2095else
2096 dnl Do this check early, so that its failure can override user requests.
2097
2098 AC_PATH_PROG(xmkmfpath, xmkmf)
2099
2100 AC_PATH_XTRA
2101
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002102 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00002103 dnl be compiled with a special option.
2104 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002105 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002106 CFLAGS="$CFLAGS -W c,dll"
2107 LDFLAGS="$LDFLAGS -W l,dll"
2108 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
2109 fi
2110
2111 dnl On my HPUX system the X include dir is found, but the lib dir not.
2112 dnl This is a desparate try to fix this.
2113
2114 if test -d "$x_includes" && test ! -d "$x_libraries"; then
2115 x_libraries=`echo "$x_includes" | sed s/include/lib/`
2116 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
2117 X_LIBS="$X_LIBS -L$x_libraries"
2118 if test "`(uname) 2>/dev/null`" = SunOS &&
2119 uname -r | grep '^5' >/dev/null; then
2120 X_LIBS="$X_LIBS -R $x_libraries"
2121 fi
2122 fi
2123
2124 if test -d "$x_libraries" && test ! -d "$x_includes"; then
2125 x_includes=`echo "$x_libraries" | sed s/lib/include/`
2126 AC_MSG_RESULT(Corrected X includes to $x_includes)
2127 X_CFLAGS="$X_CFLAGS -I$x_includes"
2128 fi
2129
2130 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
2131 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
2132 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
2133 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
2134 dnl Same for "-R/usr/lib ".
2135 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
2136
2137
2138 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002139 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
2140 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002141 AC_MSG_CHECKING(if X11 header files can be found)
2142 cflags_save=$CFLAGS
2143 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002144 AC_TRY_COMPILE([#include <X11/Xlib.h>
2145#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00002146 AC_MSG_RESULT(yes),
2147 AC_MSG_RESULT(no); no_x=yes)
2148 CFLAGS=$cflags_save
2149
2150 if test "${no_x-no}" = yes; then
2151 with_x=no
2152 else
2153 AC_DEFINE(HAVE_X11)
2154 X_LIB="-lXt -lX11";
2155 AC_SUBST(X_LIB)
2156
2157 ac_save_LDFLAGS="$LDFLAGS"
2158 LDFLAGS="-L$x_libraries $LDFLAGS"
2159
2160 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2161 dnl For HP-UX 10.20 it must be before -lSM -lICE
2162 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2163 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2164
2165 dnl Some systems need -lnsl -lsocket when testing for ICE.
2166 dnl The check above doesn't do this, try here (again). Also needed to get
2167 dnl them after Xdmcp. link.sh will remove them when not needed.
2168 dnl Check for other function than above to avoid the cached value
2169 AC_CHECK_LIB(ICE, IceOpenConnection,
2170 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2171
2172 dnl Check for -lXpm (needed for some versions of Motif)
2173 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2174 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2175 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2176
2177 dnl Check that the X11 header files don't use implicit declarations
2178 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2179 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002180 dnl -Werror is GCC only, others like Solaris Studio might not like it
2181 if test "$GCC" = yes; then
2182 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2183 else
2184 CFLAGS="$CFLAGS $X_CFLAGS"
2185 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002186 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2187 AC_MSG_RESULT(no),
2188 CFLAGS="$CFLAGS -Wno-implicit-int"
2189 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2190 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2191 AC_MSG_RESULT(test failed)
2192 )
2193 )
2194 CFLAGS=$cflags_save
2195
2196 LDFLAGS="$ac_save_LDFLAGS"
2197
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002198 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2199 AC_CACHE_VAL(ac_cv_small_wchar_t,
2200 [AC_TRY_RUN([
2201#include <X11/Xlib.h>
2202#if STDC_HEADERS
2203# include <stdlib.h>
2204# include <stddef.h>
2205#endif
2206 main()
2207 {
2208 if (sizeof(wchar_t) <= 2)
2209 exit(1);
2210 exit(0);
2211 }],
2212 ac_cv_small_wchar_t="no",
2213 ac_cv_small_wchar_t="yes",
2214 AC_MSG_ERROR(failed to compile test program))])
2215 AC_MSG_RESULT($ac_cv_small_wchar_t)
2216 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2217 AC_DEFINE(SMALL_WCHAR_T)
2218 fi
2219
Bram Moolenaar071d4272004-06-13 20:20:40 +00002220 fi
2221fi
2222
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002223test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002224
2225AC_MSG_CHECKING(--enable-gui argument)
2226AC_ARG_ENABLE(gui,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002227 [ --enable-gui[=OPTS] X11 GUI. [default=auto] [OPTS=auto/no/gtk2/gnome2/gtk3/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002228
2229dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2230dnl Do not use character classes for portability with old tools.
2231enable_gui_canon=`echo "_$enable_gui" | \
2232 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2233
2234dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002235SKIP_GTK2=YES
Bram Moolenaar1858a842016-02-23 22:30:31 +01002236SKIP_GTK3=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002237SKIP_GNOME=YES
2238SKIP_MOTIF=YES
2239SKIP_ATHENA=YES
2240SKIP_NEXTAW=YES
2241SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002242SKIP_CARBON=YES
2243GUITYPE=NONE
2244
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002245if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002246 SKIP_PHOTON=
2247 case "$enable_gui_canon" in
2248 no) AC_MSG_RESULT(no GUI support)
2249 SKIP_PHOTON=YES ;;
2250 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2251 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2252 photon) AC_MSG_RESULT(Photon GUI support) ;;
2253 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2254 SKIP_PHOTON=YES ;;
2255 esac
2256
2257elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2258 SKIP_CARBON=
2259 case "$enable_gui_canon" in
2260 no) AC_MSG_RESULT(no GUI support)
2261 SKIP_CARBON=YES ;;
2262 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002263 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2264 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002265 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2266 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2267 SKIP_CARBON=YES ;;
2268 esac
2269
2270else
2271
Bram Moolenaar071d4272004-06-13 20:20:40 +00002272 case "$enable_gui_canon" in
2273 no|none) AC_MSG_RESULT(no GUI support) ;;
2274 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002275 SKIP_GTK2=
2276 SKIP_GNOME=
2277 SKIP_MOTIF=
2278 SKIP_ATHENA=
2279 SKIP_NEXTAW=
2280 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002281 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002282 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002283 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2284 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002285 SKIP_GTK2=;;
Bram Moolenaar98921892016-02-23 17:14:37 +01002286 gtk3) AC_MSG_RESULT(GTK+ 3.x GUI support)
2287 SKIP_GTK3=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002288 motif) AC_MSG_RESULT(Motif GUI support)
2289 SKIP_MOTIF=;;
2290 athena) AC_MSG_RESULT(Athena GUI support)
2291 SKIP_ATHENA=;;
2292 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2293 SKIP_NEXTAW=;;
2294 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2295 esac
2296
2297fi
2298
Bram Moolenaar071d4272004-06-13 20:20:40 +00002299if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2300 -a "$enable_gui_canon" != "gnome2"; then
2301 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2302 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002303 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002304 , enable_gtk2_check="yes")
2305 AC_MSG_RESULT($enable_gtk2_check)
2306 if test "x$enable_gtk2_check" = "xno"; then
2307 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002308 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002309 fi
2310fi
2311
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002312if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002313 AC_MSG_CHECKING(whether or not to look for GNOME)
2314 AC_ARG_ENABLE(gnome-check,
2315 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2316 , enable_gnome_check="no")
2317 AC_MSG_RESULT($enable_gnome_check)
2318 if test "x$enable_gnome_check" = "xno"; then
2319 SKIP_GNOME=YES
2320 fi
2321fi
2322
Bram Moolenaar98921892016-02-23 17:14:37 +01002323if test "x$SKIP_GTK3" != "xYES" -a "$enable_gui_canon" != "gtk3"; then
2324 AC_MSG_CHECKING(whether or not to look for GTK+ 3)
2325 AC_ARG_ENABLE(gtk3-check,
2326 [ --enable-gtk3-check If auto-select GUI, check for GTK+ 3 [default=yes]],
2327 , enable_gtk3_check="yes")
2328 AC_MSG_RESULT($enable_gtk3_check)
2329 if test "x$enable_gtk3_check" = "xno"; then
2330 SKIP_GTK3=YES
2331 fi
2332fi
2333
Bram Moolenaar071d4272004-06-13 20:20:40 +00002334if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2335 AC_MSG_CHECKING(whether or not to look for Motif)
2336 AC_ARG_ENABLE(motif-check,
2337 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2338 , enable_motif_check="yes")
2339 AC_MSG_RESULT($enable_motif_check)
2340 if test "x$enable_motif_check" = "xno"; then
2341 SKIP_MOTIF=YES
2342 fi
2343fi
2344
2345if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2346 AC_MSG_CHECKING(whether or not to look for Athena)
2347 AC_ARG_ENABLE(athena-check,
2348 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2349 , enable_athena_check="yes")
2350 AC_MSG_RESULT($enable_athena_check)
2351 if test "x$enable_athena_check" = "xno"; then
2352 SKIP_ATHENA=YES
2353 fi
2354fi
2355
2356if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2357 AC_MSG_CHECKING(whether or not to look for neXtaw)
2358 AC_ARG_ENABLE(nextaw-check,
2359 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2360 , enable_nextaw_check="yes")
2361 AC_MSG_RESULT($enable_nextaw_check);
2362 if test "x$enable_nextaw_check" = "xno"; then
2363 SKIP_NEXTAW=YES
2364 fi
2365fi
2366
2367if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2368 AC_MSG_CHECKING(whether or not to look for Carbon)
2369 AC_ARG_ENABLE(carbon-check,
2370 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2371 , enable_carbon_check="yes")
2372 AC_MSG_RESULT($enable_carbon_check);
2373 if test "x$enable_carbon_check" = "xno"; then
2374 SKIP_CARBON=YES
2375 fi
2376fi
2377
Bram Moolenaar843ee412004-06-30 16:16:41 +00002378
Bram Moolenaar071d4272004-06-13 20:20:40 +00002379if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2380 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002381 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002382 AC_MSG_RESULT(yes);
2383 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002384 if test "$VIMNAME" = "vim"; then
2385 VIMNAME=Vim
2386 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002387
Bram Moolenaar164fca32010-07-14 13:58:07 +02002388 if test "x$MACARCH" = "xboth"; then
2389 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2390 else
2391 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2392 fi
2393
Bram Moolenaar14716812006-05-04 21:54:08 +00002394 dnl Default install directory is not /usr/local
2395 if test x$prefix = xNONE; then
2396 prefix=/Applications
2397 fi
2398
2399 dnl Sorry for the hard coded default
2400 datadir='${prefix}/Vim.app/Contents/Resources'
2401
Bram Moolenaar071d4272004-06-13 20:20:40 +00002402 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002403 SKIP_GTK2=YES;
2404 SKIP_GNOME=YES;
2405 SKIP_MOTIF=YES;
2406 SKIP_ATHENA=YES;
2407 SKIP_NEXTAW=YES;
2408 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002409 SKIP_CARBON=YES
2410fi
2411
Bram Moolenaar071d4272004-06-13 20:20:40 +00002412dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002413dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002414dnl
2415dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002416dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002417dnl
2418AC_DEFUN(AM_PATH_GTK,
2419[
2420 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2421 {
Bram Moolenaar071d4272004-06-13 20:20:40 +00002422 no_gtk=""
2423 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2424 && $PKG_CONFIG --exists gtk+-2.0; then
2425 {
Bram Moolenaar98921892016-02-23 17:14:37 +01002426 min_gtk_version=ifelse([$1], ,2.2.0,$1)
2427 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002428 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2429 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2430 dnl something like that.
2431 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002432 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002433 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2434 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2435 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2436 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2437 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2438 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2439 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2440 }
Bram Moolenaar98921892016-02-23 17:14:37 +01002441 elif (test "X$SKIP_GTK3" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2442 && $PKG_CONFIG --exists gtk+-3.0; then
2443 {
2444 min_gtk_version=ifelse([$1], ,3.0.0,$1)
2445 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2446
2447 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-3.0`
2448 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-3.0`
2449 GTK_LIBS=`$PKG_CONFIG --libs gtk+-3.0`
2450 gtk_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2451 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2452 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2453 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2454 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2455 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2456 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002457 else
2458 no_gtk=yes
2459 fi
2460
2461 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2462 {
2463 ac_save_CFLAGS="$CFLAGS"
2464 ac_save_LIBS="$LIBS"
2465 CFLAGS="$CFLAGS $GTK_CFLAGS"
2466 LIBS="$LIBS $GTK_LIBS"
2467
2468 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002469 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002470 dnl
2471 rm -f conf.gtktest
2472 AC_TRY_RUN([
2473#include <gtk/gtk.h>
2474#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002475#if STDC_HEADERS
2476# include <stdlib.h>
2477# include <stddef.h>
2478#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002479
2480int
2481main ()
2482{
2483int major, minor, micro;
2484char *tmp_version;
2485
2486system ("touch conf.gtktest");
2487
2488/* HP/UX 9 (%@#!) writes to sscanf strings */
2489tmp_version = g_strdup("$min_gtk_version");
2490if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2491 printf("%s, bad version string\n", "$min_gtk_version");
2492 exit(1);
2493 }
2494
2495if ((gtk_major_version > major) ||
2496 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2497 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2498 (gtk_micro_version >= micro)))
2499{
2500 return 0;
2501}
2502return 1;
2503}
2504],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2505 CFLAGS="$ac_save_CFLAGS"
2506 LIBS="$ac_save_LIBS"
2507 }
2508 fi
2509 if test "x$no_gtk" = x ; then
2510 if test "x$enable_gtktest" = "xyes"; then
2511 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2512 else
2513 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2514 fi
2515 ifelse([$2], , :, [$2])
2516 else
2517 {
2518 AC_MSG_RESULT(no)
2519 GTK_CFLAGS=""
2520 GTK_LIBS=""
2521 ifelse([$3], , :, [$3])
2522 }
2523 fi
2524 }
2525 else
2526 GTK_CFLAGS=""
2527 GTK_LIBS=""
2528 ifelse([$3], , :, [$3])
2529 fi
2530 AC_SUBST(GTK_CFLAGS)
2531 AC_SUBST(GTK_LIBS)
2532 rm -f conf.gtktest
2533])
2534
2535dnl ---------------------------------------------------------------------------
2536dnl gnome
2537dnl ---------------------------------------------------------------------------
2538AC_DEFUN([GNOME_INIT_HOOK],
2539[
2540 AC_SUBST(GNOME_LIBS)
2541 AC_SUBST(GNOME_LIBDIR)
2542 AC_SUBST(GNOME_INCLUDEDIR)
2543
2544 AC_ARG_WITH(gnome-includes,
2545 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2546 [CFLAGS="$CFLAGS -I$withval"]
2547 )
2548
2549 AC_ARG_WITH(gnome-libs,
2550 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2551 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2552 )
2553
2554 AC_ARG_WITH(gnome,
2555 [ --with-gnome Specify prefix for GNOME files],
2556 if test x$withval = xyes; then
2557 want_gnome=yes
2558 ifelse([$1], [], :, [$1])
2559 else
2560 if test "x$withval" = xno; then
2561 want_gnome=no
2562 else
2563 want_gnome=yes
2564 LDFLAGS="$LDFLAGS -L$withval/lib"
2565 CFLAGS="$CFLAGS -I$withval/include"
2566 gnome_prefix=$withval/lib
2567 fi
2568 fi,
2569 want_gnome=yes)
2570
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002571 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002572 {
2573 AC_MSG_CHECKING(for libgnomeui-2.0)
2574 if $PKG_CONFIG --exists libgnomeui-2.0; then
2575 AC_MSG_RESULT(yes)
2576 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2577 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2578 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002579
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002580 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2581 dnl This might not be the right way but it works for me...
2582 AC_MSG_CHECKING(for FreeBSD)
2583 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2584 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002585 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002586 GNOME_LIBS="$GNOME_LIBS -pthread"
2587 else
2588 AC_MSG_RESULT(no)
2589 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002590 $1
2591 else
2592 AC_MSG_RESULT(not found)
2593 if test "x$2" = xfail; then
2594 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2595 fi
2596 fi
2597 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002598 fi
2599])
2600
2601AC_DEFUN([GNOME_INIT],[
2602 GNOME_INIT_HOOK([],fail)
2603])
2604
2605
2606dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002607dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002608dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002609if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002610
2611 AC_MSG_CHECKING(--disable-gtktest argument)
2612 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2613 , enable_gtktest=yes)
2614 if test "x$enable_gtktest" = "xyes" ; then
2615 AC_MSG_RESULT(gtk test enabled)
2616 else
2617 AC_MSG_RESULT(gtk test disabled)
2618 fi
2619
Bram Moolenaar071d4272004-06-13 20:20:40 +00002620 if test "X$PKG_CONFIG" = "X"; then
2621 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2622 fi
2623
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002624 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002625 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2626 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002627 AM_PATH_GTK(2.2.0,
2628 [GUI_LIB_LOC="$GTK_LIBDIR"
2629 GTK_LIBNAME="$GTK_LIBS"
2630 GUI_INC_LOC="$GTK_CFLAGS"], )
2631 if test "x$GTK_CFLAGS" != "x"; then
Bram Moolenaar98921892016-02-23 17:14:37 +01002632 SKIP_GTK3=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002633 SKIP_ATHENA=YES
2634 SKIP_NEXTAW=YES
2635 SKIP_MOTIF=YES
2636 GUITYPE=GTK
2637 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002638 fi
2639 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002640 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002641 dnl
2642 dnl if GTK exists, then check for GNOME.
2643 dnl
2644 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002645 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002646 GNOME_INIT_HOOK([have_gnome=yes])
2647 if test "x$have_gnome" = xyes ; then
2648 AC_DEFINE(FEAT_GUI_GNOME)
2649 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2650 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002651 fi
2652 }
2653 fi
2654 fi
2655fi
2656
Bram Moolenaar98921892016-02-23 17:14:37 +01002657
2658dnl ---------------------------------------------------------------------------
2659dnl Check for GTK3.
2660dnl ---------------------------------------------------------------------------
2661if test -z "$SKIP_GTK3"; then
2662
2663 AC_MSG_CHECKING(--disable-gtktest argument)
2664 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2665 , enable_gtktest=yes)
2666 if test "x$enable_gtktest" = "xyes" ; then
2667 AC_MSG_RESULT(gtk test enabled)
2668 else
2669 AC_MSG_RESULT(gtk test disabled)
2670 fi
2671
2672 if test "X$PKG_CONFIG" = "X"; then
2673 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2674 fi
2675
2676 if test "x$PKG_CONFIG" != "xno"; then
2677 AM_PATH_GTK(3.0.0,
2678 [GUI_LIB_LOC="$GTK_LIBDIR"
2679 GTK_LIBNAME="$GTK_LIBS"
2680 GUI_INC_LOC="$GTK_CFLAGS"], )
2681 if test "x$GTK_CFLAGS" != "x"; then
2682 SKIP_GTK2=YES
2683 SKIP_GNOME=YES
2684 SKIP_ATHENA=YES
2685 SKIP_NEXTAW=YES
2686 SKIP_MOTIF=YES
2687 GUITYPE=GTK
2688 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar98921892016-02-23 17:14:37 +01002689 AC_DEFINE(USE_GTK3)
2690 fi
2691 fi
2692fi
2693
Bram Moolenaard2e03f02016-01-02 22:46:36 +01002694dnl Check the version of Gdk-Pixbuf. If the version is 2.31 or later and
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002695dnl glib-compile-resources is found in PATH, use GResource.
2696if test "x$GUITYPE" = "xGTK"; then
2697 AC_MSG_CHECKING([version of Gdk-Pixbuf])
2698 gdk_pixbuf_version=`$PKG_CONFIG --modversion gdk-pixbuf-2.0`
2699 if test "x$gdk_pixbuf_version" != x ; then
2700 gdk_pixbuf_version_minor=`echo $gdk_pixbuf_version | \
2701 sed -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/'`
2702 if test "x$gdk_pixbuf_version_minor" != x -a \
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002703 $gdk_pixbuf_version_minor -ge 31 ; then
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002704 AC_MSG_RESULT([OK.])
2705 AC_PATH_PROG(GLIB_COMPILE_RESOURCES,[glib-compile-resources],no)
2706 AC_MSG_CHECKING([glib-compile-resources])
2707 if test "x$GLIB_COMPILE_RESOURCES" = xno ; then
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002708 GLIB_COMPILE_RESOURCES=""
2709 AC_MSG_RESULT([cannot be found in PATH.])
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002710 else
2711 AC_MSG_RESULT([usable.])
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002712 AC_DEFINE(USE_GRESOURCE)
2713 GRESOURCE_SRC="auto/gui_gtk_gresources.c"
2714 GRESOURCE_OBJ="objects/gui_gtk_gresources.o"
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002715 fi
2716 else
2717 AC_MSG_RESULT([not usable.])
2718 fi
2719 else
2720 AC_MSG_RESULT([cannot obtain from pkg_config.])
2721 fi
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002722
2723 AC_MSG_CHECKING([--disable-icon-cache-update argument])
2724 AC_ARG_ENABLE(icon_cache_update,
2725 [ --disable-icon-cache-update update disabled],
2726 [],
2727 [enable_icon_cache_update="yes"])
2728 if test "$enable_icon_cache_update" = "yes"; then
2729 AC_MSG_RESULT([not set])
2730 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE,[gtk-update-icon-cache],no)
2731 if test "x$GTK_UPDATE_ICON_CACHE" = "xno" ; then
2732 AC_MSG_RESULT([not found in PATH.])
2733 fi
2734 else
2735 AC_MSG_RESULT([update disabled])
2736 fi
2737
2738 AC_MSG_CHECKING([--disable-desktop-database-update argument])
2739 AC_ARG_ENABLE(desktop_database_update,
2740 [ --disable-desktop-database-update update disabled],
2741 [],
2742 [enable_desktop_database_update="yes"])
2743 if test "$enable_desktop_database_update" = "yes"; then
2744 AC_MSG_RESULT([not set])
2745 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE,[update-desktop-database],no)
2746 if test "x$UPDATE_DESKTOP_DATABASE" = "xno" ; then
2747 AC_MSG_RESULT([not found in PATH.])
2748 fi
2749 else
2750 AC_MSG_RESULT([update disabled])
2751 fi
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002752fi
2753AC_SUBST(GLIB_COMPILE_RESOURCES)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002754AC_SUBST(GRESOURCE_SRC)
2755AC_SUBST(GRESOURCE_OBJ)
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002756AC_SUBST(GTK_UPDATE_ICON_CACHE)
2757AC_SUBST(UPDATE_DESKTOP_DATABASE)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002758
Bram Moolenaar071d4272004-06-13 20:20:40 +00002759dnl Check for Motif include files location.
2760dnl The LAST one found is used, this makes the highest version to be used,
2761dnl e.g. when Motif1.2 and Motif2.0 are both present.
2762
2763if test -z "$SKIP_MOTIF"; then
2764 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"
2765 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2766 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2767
2768 AC_MSG_CHECKING(for location of Motif GUI includes)
2769 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2770 GUI_INC_LOC=
2771 for try in $gui_includes; do
2772 if test -f "$try/Xm/Xm.h"; then
2773 GUI_INC_LOC=$try
2774 fi
2775 done
2776 if test -n "$GUI_INC_LOC"; then
2777 if test "$GUI_INC_LOC" = /usr/include; then
2778 GUI_INC_LOC=
2779 AC_MSG_RESULT(in default path)
2780 else
2781 AC_MSG_RESULT($GUI_INC_LOC)
2782 fi
2783 else
2784 AC_MSG_RESULT(<not found>)
2785 SKIP_MOTIF=YES
2786 fi
2787fi
2788
2789dnl Check for Motif library files location. In the same order as the include
2790dnl files, to avoid a mixup if several versions are present
2791
2792if test -z "$SKIP_MOTIF"; then
2793 AC_MSG_CHECKING(--with-motif-lib argument)
2794 AC_ARG_WITH(motif-lib,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002795 [ --with-motif-lib=STRING Library for Motif ],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002796 [ MOTIF_LIBNAME="${withval}" ] )
2797
2798 if test -n "$MOTIF_LIBNAME"; then
2799 AC_MSG_RESULT($MOTIF_LIBNAME)
2800 GUI_LIB_LOC=
2801 else
2802 AC_MSG_RESULT(no)
2803
2804 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2805 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2806
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002807 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2808 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002809 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002810 gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002811 GUI_LIB_LOC=
2812 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002813 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002814 if test -f "$libtry"; then
2815 GUI_LIB_LOC=$try
2816 fi
2817 done
2818 done
2819 if test -n "$GUI_LIB_LOC"; then
2820 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002821 if test "$GUI_LIB_LOC" = /usr/lib \
2822 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2823 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002824 GUI_LIB_LOC=
2825 AC_MSG_RESULT(in default path)
2826 else
2827 if test -n "$GUI_LIB_LOC"; then
2828 AC_MSG_RESULT($GUI_LIB_LOC)
2829 if test "`(uname) 2>/dev/null`" = SunOS &&
2830 uname -r | grep '^5' >/dev/null; then
2831 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2832 fi
2833 fi
2834 fi
2835 MOTIF_LIBNAME=-lXm
2836 else
2837 AC_MSG_RESULT(<not found>)
2838 SKIP_MOTIF=YES
2839 fi
2840 fi
2841fi
2842
2843if test -z "$SKIP_MOTIF"; then
2844 SKIP_ATHENA=YES
2845 SKIP_NEXTAW=YES
2846 GUITYPE=MOTIF
2847 AC_SUBST(MOTIF_LIBNAME)
2848fi
2849
2850dnl Check if the Athena files can be found
2851
2852GUI_X_LIBS=
2853
2854if test -z "$SKIP_ATHENA"; then
2855 AC_MSG_CHECKING(if Athena header files can be found)
2856 cflags_save=$CFLAGS
2857 CFLAGS="$CFLAGS $X_CFLAGS"
2858 AC_TRY_COMPILE([
2859#include <X11/Intrinsic.h>
2860#include <X11/Xaw/Paned.h>], ,
2861 AC_MSG_RESULT(yes),
2862 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2863 CFLAGS=$cflags_save
2864fi
2865
2866if test -z "$SKIP_ATHENA"; then
2867 GUITYPE=ATHENA
2868fi
2869
2870if test -z "$SKIP_NEXTAW"; then
2871 AC_MSG_CHECKING(if neXtaw header files can be found)
2872 cflags_save=$CFLAGS
2873 CFLAGS="$CFLAGS $X_CFLAGS"
2874 AC_TRY_COMPILE([
2875#include <X11/Intrinsic.h>
2876#include <X11/neXtaw/Paned.h>], ,
2877 AC_MSG_RESULT(yes),
2878 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2879 CFLAGS=$cflags_save
2880fi
2881
2882if test -z "$SKIP_NEXTAW"; then
2883 GUITYPE=NEXTAW
2884fi
2885
2886if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2887 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2888 dnl Avoid adding it when it twice
2889 if test -n "$GUI_INC_LOC"; then
2890 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2891 fi
2892 if test -n "$GUI_LIB_LOC"; then
2893 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2894 fi
2895
2896 dnl Check for -lXext and then for -lXmu
2897 ldflags_save=$LDFLAGS
2898 LDFLAGS="$X_LIBS $LDFLAGS"
2899 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2900 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2901 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2902 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2903 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2904 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2905 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2906 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2907 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2908 if test -z "$SKIP_MOTIF"; then
2909 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2910 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2911 fi
2912 LDFLAGS=$ldflags_save
2913
2914 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2915 AC_MSG_CHECKING(for extra X11 defines)
2916 NARROW_PROTO=
2917 rm -fr conftestdir
2918 if mkdir conftestdir; then
2919 cd conftestdir
2920 cat > Imakefile <<'EOF'
2921acfindx:
2922 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2923EOF
2924 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2925 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2926 fi
2927 cd ..
2928 rm -fr conftestdir
2929 fi
2930 if test -z "$NARROW_PROTO"; then
2931 AC_MSG_RESULT(no)
2932 else
2933 AC_MSG_RESULT($NARROW_PROTO)
2934 fi
2935 AC_SUBST(NARROW_PROTO)
2936fi
2937
2938dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2939dnl use the X11 include path
2940if test "$enable_xsmp" = "yes"; then
2941 cppflags_save=$CPPFLAGS
2942 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2943 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2944 CPPFLAGS=$cppflags_save
2945fi
2946
2947
Bram Moolenaar98921892016-02-23 17:14:37 +01002948if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2" -o -z "$SKIP_GTK3"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002949 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2950 cppflags_save=$CPPFLAGS
2951 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2952 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2953
2954 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2955 if test ! "$enable_xim" = "no"; then
2956 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2957 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2958 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002959 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002960 fi
2961 CPPFLAGS=$cppflags_save
2962
2963 dnl automatically enable XIM when hangul input isn't enabled
2964 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2965 -a "x$GUITYPE" != "xNONE" ; then
2966 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2967 enable_xim="yes"
2968 fi
2969fi
2970
2971if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2972 cppflags_save=$CPPFLAGS
2973 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002974dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2975 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2976 AC_TRY_COMPILE([
2977#include <X11/Intrinsic.h>
2978#include <X11/Xmu/Editres.h>],
2979 [int i; i = 0;],
2980 AC_MSG_RESULT(yes)
2981 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2982 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002983 CPPFLAGS=$cppflags_save
2984fi
2985
2986dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2987if test -z "$SKIP_MOTIF"; then
2988 cppflags_save=$CPPFLAGS
2989 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002990 if test "$zOSUnix" = "yes"; then
2991 xmheader="Xm/Xm.h"
2992 else
2993 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002994 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002995 fi
2996 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002997
Bram Moolenaar77c19352012-06-13 19:19:41 +02002998 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002999 dnl Solaris uses XpmAttributes_21, very annoying.
3000 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
3001 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
3002 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
3003 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
3004 )
3005 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00003006 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003007 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003008 CPPFLAGS=$cppflags_save
3009fi
3010
3011if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
3012 AC_MSG_RESULT(no GUI selected; xim has been disabled)
3013 enable_xim="no"
3014fi
3015if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
3016 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
3017 enable_fontset="no"
3018fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02003019if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003020 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
3021 enable_fontset="no"
3022fi
3023
Bram Moolenaar071d4272004-06-13 20:20:40 +00003024if test -z "$SKIP_PHOTON"; then
3025 GUITYPE=PHOTONGUI
3026fi
3027
3028AC_SUBST(GUI_INC_LOC)
3029AC_SUBST(GUI_LIB_LOC)
3030AC_SUBST(GUITYPE)
3031AC_SUBST(GUI_X_LIBS)
3032
3033if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
3034 AC_MSG_ERROR([cannot use workshop without Motif])
3035fi
3036
3037dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
3038if test "$enable_xim" = "yes"; then
3039 AC_DEFINE(FEAT_XIM)
3040fi
3041if test "$enable_fontset" = "yes"; then
3042 AC_DEFINE(FEAT_XFONTSET)
3043fi
3044
3045
3046dnl ---------------------------------------------------------------------------
3047dnl end of GUI-checking
3048dnl ---------------------------------------------------------------------------
3049
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003050AC_MSG_CHECKING([for /proc link to executable])
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003051if test -L "/proc/self/exe"; then
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003052 dnl Linux
3053 AC_MSG_RESULT([/proc/self/exe])
3054 AC_DEFINE(PROC_EXE_LINK, "/proc/self/exe")
3055elif test -L "/proc/self/path/a.out"; then
3056 dnl Solaris
3057 AC_MSG_RESULT([/proc/self/path/a.out])
3058 AC_DEFINE(PROC_EXE_LINK, "/proc/self/path/a.out")
3059elif test -L "/proc/curproc/file"; then
3060 dnl FreeBSD
3061 AC_MSG_RESULT([/proc/curproc/file])
3062 AC_DEFINE(PROC_EXE_LINK, "/proc/curproc/file")
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003063else
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003064 AC_MSG_RESULT(no)
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003065fi
3066
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003067dnl Check for Cygwin, which needs an extra source file if not using X11
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003068AC_MSG_CHECKING(for CYGWIN or MSYS environment)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003069case `uname` in
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003070 CYGWIN*|MSYS*) CYGWIN=yes; AC_MSG_RESULT(yes)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003071 AC_MSG_CHECKING(for CYGWIN clipboard support)
3072 if test "x$with_x" = "xno" ; then
3073 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
3074 AC_MSG_RESULT(yes)
3075 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
3076 else
3077 AC_MSG_RESULT(no - using X11)
3078 fi ;;
3079
3080 *) CYGWIN=no; AC_MSG_RESULT(no);;
3081esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00003082
3083dnl Only really enable hangul input when GUI and XFONTSET are available
3084if test "$enable_hangulinput" = "yes"; then
3085 if test "x$GUITYPE" = "xNONE"; then
3086 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
3087 enable_hangulinput=no
3088 else
3089 AC_DEFINE(FEAT_HANGULIN)
3090 HANGULIN_SRC=hangulin.c
3091 AC_SUBST(HANGULIN_SRC)
3092 HANGULIN_OBJ=objects/hangulin.o
3093 AC_SUBST(HANGULIN_OBJ)
3094 fi
3095fi
3096
3097dnl Checks for libraries and include files.
3098
Bram Moolenaar446cb832008-06-24 21:56:24 +00003099AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
3100 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003101 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003102#include "confdefs.h"
3103#include <ctype.h>
3104#if STDC_HEADERS
3105# include <stdlib.h>
3106# include <stddef.h>
3107#endif
3108main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003109 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003110 vim_cv_toupper_broken=yes
3111 ],[
3112 vim_cv_toupper_broken=no
3113 ],[
3114 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
3115 ])])
3116
3117if test "x$vim_cv_toupper_broken" = "xyes" ; then
3118 AC_DEFINE(BROKEN_TOUPPER)
3119fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003120
3121AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003122AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003123 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
3124 AC_MSG_RESULT(no))
3125
Bram Moolenaar0c094b92009-05-14 20:20:33 +00003126AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
3127AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
3128 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
3129 AC_MSG_RESULT(no))
3130
Bram Moolenaar071d4272004-06-13 20:20:40 +00003131dnl Checks for header files.
3132AC_CHECK_HEADER(elf.h, HAS_ELF=1)
3133dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
3134if test "$HAS_ELF" = 1; then
3135 AC_CHECK_LIB(elf, main)
3136fi
3137
3138AC_HEADER_DIRENT
3139
Bram Moolenaar071d4272004-06-13 20:20:40 +00003140dnl If sys/wait.h is not found it might still exist but not be POSIX
3141dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
3142if test $ac_cv_header_sys_wait_h = no; then
3143 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
3144 AC_TRY_COMPILE([#include <sys/wait.h>],
3145 [union wait xx, yy; xx = yy],
3146 AC_MSG_RESULT(yes)
3147 AC_DEFINE(HAVE_SYS_WAIT_H)
3148 AC_DEFINE(HAVE_UNION_WAIT),
3149 AC_MSG_RESULT(no))
3150fi
3151
Bram Moolenaar779a7752016-01-30 23:26:34 +01003152AC_CHECK_HEADERS(stdint.h stdlib.h string.h \
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003153 sys/select.h sys/utsname.h termcap.h fcntl.h \
3154 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
3155 termio.h iconv.h inttypes.h langinfo.h math.h \
3156 unistd.h stropts.h errno.h sys/resource.h \
3157 sys/systeminfo.h locale.h sys/stream.h termios.h \
3158 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
3159 utime.h sys/param.h libintl.h libgen.h \
3160 util/debug.h util/msg18n.h frame.h sys/acl.h \
3161 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003162
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003163dnl sys/ptem.h depends on sys/stream.h on Solaris
3164AC_CHECK_HEADERS(sys/ptem.h, [], [],
3165[#if defined HAVE_SYS_STREAM_H
3166# include <sys/stream.h>
3167#endif])
3168
Bram Moolenaar32f31b12009-05-21 13:20:59 +00003169dnl sys/sysctl.h depends on sys/param.h on OpenBSD
3170AC_CHECK_HEADERS(sys/sysctl.h, [], [],
3171[#if defined HAVE_SYS_PARAM_H
3172# include <sys/param.h>
3173#endif])
3174
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003175
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003176dnl pthread_np.h may exist but can only be used after including pthread.h
3177AC_MSG_CHECKING([for pthread_np.h])
3178AC_TRY_COMPILE([
3179#include <pthread.h>
3180#include <pthread_np.h>],
3181 [int i; i = 0;],
3182 AC_MSG_RESULT(yes)
3183 AC_DEFINE(HAVE_PTHREAD_NP_H),
3184 AC_MSG_RESULT(no))
3185
Bram Moolenaare344bea2005-09-01 20:46:49 +00003186AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00003187if test "x$MACOSX" = "xyes"; then
3188 dnl The strings.h file on OS/X contains a warning and nothing useful.
3189 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3190else
Bram Moolenaar071d4272004-06-13 20:20:40 +00003191
3192dnl Check if strings.h and string.h can both be included when defined.
3193AC_MSG_CHECKING([if strings.h can be included after string.h])
3194cppflags_save=$CPPFLAGS
3195CPPFLAGS="$CPPFLAGS $X_CFLAGS"
3196AC_TRY_COMPILE([
3197#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
3198# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
3199 /* but don't do it on AIX 5.1 (Uribarri) */
3200#endif
3201#ifdef HAVE_XM_XM_H
3202# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
3203#endif
3204#ifdef HAVE_STRING_H
3205# include <string.h>
3206#endif
3207#if defined(HAVE_STRINGS_H)
3208# include <strings.h>
3209#endif
3210 ], [int i; i = 0;],
3211 AC_MSG_RESULT(yes),
3212 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3213 AC_MSG_RESULT(no))
3214CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00003215fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003216
3217dnl Checks for typedefs, structures, and compiler characteristics.
3218AC_PROG_GCC_TRADITIONAL
3219AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00003220AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003221AC_TYPE_MODE_T
3222AC_TYPE_OFF_T
3223AC_TYPE_PID_T
3224AC_TYPE_SIZE_T
3225AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003226AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003227
Bram Moolenaar071d4272004-06-13 20:20:40 +00003228AC_HEADER_TIME
3229AC_CHECK_TYPE(ino_t, long)
3230AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003231AC_C_BIGENDIAN(,,,)
Bram Moolenaar136f29a2016-02-27 20:14:15 +01003232AC_C_INLINE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003233
3234AC_MSG_CHECKING(for rlim_t)
3235if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
3236 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
3237else
3238 AC_EGREP_CPP(dnl
3239changequote(<<,>>)dnl
3240<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
3241changequote([,]),
3242 [
3243#include <sys/types.h>
3244#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003245# include <stdlib.h>
3246# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003247#endif
3248#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00003249# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003250#endif
3251 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
3252 AC_MSG_RESULT($ac_cv_type_rlim_t)
3253fi
3254if test $ac_cv_type_rlim_t = no; then
3255 cat >> confdefs.h <<\EOF
3256#define rlim_t unsigned long
3257EOF
3258fi
3259
3260AC_MSG_CHECKING(for stack_t)
3261if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
3262 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
3263else
3264 AC_EGREP_CPP(stack_t,
3265 [
3266#include <sys/types.h>
3267#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003268# include <stdlib.h>
3269# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003270#endif
3271#include <signal.h>
3272 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
3273 AC_MSG_RESULT($ac_cv_type_stack_t)
3274fi
3275if test $ac_cv_type_stack_t = no; then
3276 cat >> confdefs.h <<\EOF
3277#define stack_t struct sigaltstack
3278EOF
3279fi
3280
3281dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
3282AC_MSG_CHECKING(whether stack_t has an ss_base field)
3283AC_TRY_COMPILE([
3284#include <sys/types.h>
3285#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003286# include <stdlib.h>
3287# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003288#endif
3289#include <signal.h>
3290#include "confdefs.h"
3291 ], [stack_t sigstk; sigstk.ss_base = 0; ],
3292 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
3293 AC_MSG_RESULT(no))
3294
3295olibs="$LIBS"
3296AC_MSG_CHECKING(--with-tlib argument)
3297AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
3298if test -n "$with_tlib"; then
3299 AC_MSG_RESULT($with_tlib)
3300 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003301 AC_MSG_CHECKING(for linking with $with_tlib library)
3302 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
3303 dnl Need to check for tgetent() below.
3304 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003305else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003306 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003307 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3308 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003309 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003310 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003311 dnl Older versions of ncurses have bugs, get a new one!
3312 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003313 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00003314 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003315 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3316 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003317 esac
3318 for libname in $tlibs; do
3319 AC_CHECK_LIB(${libname}, tgetent,,)
3320 if test "x$olibs" != "x$LIBS"; then
3321 dnl It's possible that a library is found but it doesn't work
3322 dnl e.g., shared library that cannot be found
3323 dnl compile and run a test program to be sure
3324 AC_TRY_RUN([
3325#ifdef HAVE_TERMCAP_H
3326# include <termcap.h>
3327#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003328#if STDC_HEADERS
3329# include <stdlib.h>
3330# include <stddef.h>
3331#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003332main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3333 res="OK", res="FAIL", res="FAIL")
3334 if test "$res" = "OK"; then
3335 break
3336 fi
3337 AC_MSG_RESULT($libname library is not usable)
3338 LIBS="$olibs"
3339 fi
3340 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003341 if test "x$olibs" = "x$LIBS"; then
3342 AC_MSG_RESULT(no terminal library found)
3343 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003344fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003345
3346if test "x$olibs" = "x$LIBS"; then
3347 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003348 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003349 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3350 AC_MSG_RESULT(yes),
3351 AC_MSG_ERROR([NOT FOUND!
3352 You need to install a terminal library; for example ncurses.
3353 Or specify the name of the library with --with-tlib.]))
3354fi
3355
Bram Moolenaar446cb832008-06-24 21:56:24 +00003356AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3357 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003358 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003359#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003360#ifdef HAVE_TERMCAP_H
3361# include <termcap.h>
3362#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003363#ifdef HAVE_STRING_H
3364# include <string.h>
3365#endif
3366#if STDC_HEADERS
3367# include <stdlib.h>
3368# include <stddef.h>
3369#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003370main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003371{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003372 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003373 vim_cv_terminfo=no
3374 ],[
3375 vim_cv_terminfo=yes
3376 ],[
3377 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3378 ])
3379 ])
3380
3381if test "x$vim_cv_terminfo" = "xyes" ; then
3382 AC_DEFINE(TERMINFO)
3383fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003384
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003385AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3386 [
3387 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003388#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003389#ifdef HAVE_TERMCAP_H
3390# include <termcap.h>
3391#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003392#if STDC_HEADERS
3393# include <stdlib.h>
3394# include <stddef.h>
3395#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003396main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003397{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003398 ]])],[
3399 vim_cv_tgent=zero
3400 ],[
3401 vim_cv_tgent=non-zero
3402 ],[
3403 AC_MSG_ERROR(failed to compile test program.)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003404 ])
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003405 ])
3406
3407if test "x$vim_cv_tgent" = "xzero" ; then
3408 AC_DEFINE(TGETENT_ZERO_ERR, 0)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003409fi
3410
3411AC_MSG_CHECKING(whether termcap.h contains ospeed)
3412AC_TRY_LINK([
3413#ifdef HAVE_TERMCAP_H
3414# include <termcap.h>
3415#endif
3416 ], [ospeed = 20000],
3417 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3418 [AC_MSG_RESULT(no)
3419 AC_MSG_CHECKING(whether ospeed can be extern)
3420 AC_TRY_LINK([
3421#ifdef HAVE_TERMCAP_H
3422# include <termcap.h>
3423#endif
3424extern short ospeed;
3425 ], [ospeed = 20000],
3426 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3427 AC_MSG_RESULT(no))]
3428 )
3429
3430AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3431AC_TRY_LINK([
3432#ifdef HAVE_TERMCAP_H
3433# include <termcap.h>
3434#endif
3435 ], [if (UP == 0 && BC == 0) PC = 1],
3436 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3437 [AC_MSG_RESULT(no)
3438 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3439 AC_TRY_LINK([
3440#ifdef HAVE_TERMCAP_H
3441# include <termcap.h>
3442#endif
3443extern char *UP, *BC, PC;
3444 ], [if (UP == 0 && BC == 0) PC = 1],
3445 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3446 AC_MSG_RESULT(no))]
3447 )
3448
3449AC_MSG_CHECKING(whether tputs() uses outfuntype)
3450AC_TRY_COMPILE([
3451#ifdef HAVE_TERMCAP_H
3452# include <termcap.h>
3453#endif
3454 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3455 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3456 AC_MSG_RESULT(no))
3457
3458dnl On some SCO machines sys/select redefines struct timeval
3459AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3460AC_TRY_COMPILE([
3461#include <sys/types.h>
3462#include <sys/time.h>
3463#include <sys/select.h>], ,
3464 AC_MSG_RESULT(yes)
3465 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3466 AC_MSG_RESULT(no))
3467
3468dnl AC_DECL_SYS_SIGLIST
3469
3470dnl Checks for pty.c (copied from screen) ==========================
3471AC_MSG_CHECKING(for /dev/ptc)
3472if test -r /dev/ptc; then
3473 AC_DEFINE(HAVE_DEV_PTC)
3474 AC_MSG_RESULT(yes)
3475else
3476 AC_MSG_RESULT(no)
3477fi
3478
3479AC_MSG_CHECKING(for SVR4 ptys)
3480if test -c /dev/ptmx ; then
3481 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3482 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3483 AC_MSG_RESULT(no))
3484else
3485 AC_MSG_RESULT(no)
3486fi
3487
3488AC_MSG_CHECKING(for ptyranges)
3489if test -d /dev/ptym ; then
3490 pdir='/dev/ptym'
3491else
3492 pdir='/dev'
3493fi
3494dnl SCO uses ptyp%d
3495AC_EGREP_CPP(yes,
3496[#ifdef M_UNIX
3497 yes;
3498#endif
3499 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3500dnl if test -c /dev/ptyp19; then
3501dnl ptys=`echo /dev/ptyp??`
3502dnl else
3503dnl ptys=`echo $pdir/pty??`
3504dnl fi
3505if test "$ptys" != "$pdir/pty??" ; then
3506 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3507 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3508 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3509 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3510 AC_MSG_RESULT([$p0 / $p1])
3511else
3512 AC_MSG_RESULT([don't know])
3513fi
3514
3515dnl **** pty mode/group handling ****
3516dnl
3517dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003518rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003519AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3520 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003521 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003522#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003523#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003524#if STDC_HEADERS
3525# include <stdlib.h>
3526# include <stddef.h>
3527#endif
3528#ifdef HAVE_UNISTD_H
3529#include <unistd.h>
3530#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003531#include <sys/stat.h>
3532#include <stdio.h>
3533main()
3534{
3535 struct stat sb;
3536 char *x,*ttyname();
3537 int om, m;
3538 FILE *fp;
3539
3540 if (!(x = ttyname(0))) exit(1);
3541 if (stat(x, &sb)) exit(1);
3542 om = sb.st_mode;
3543 if (om & 002) exit(0);
3544 m = system("mesg y");
3545 if (m == -1 || m == 127) exit(1);
3546 if (stat(x, &sb)) exit(1);
3547 m = sb.st_mode;
3548 if (chmod(x, om)) exit(1);
3549 if (m & 002) exit(0);
3550 if (sb.st_gid == getgid()) exit(1);
3551 if (!(fp=fopen("conftest_grp", "w")))
3552 exit(1);
3553 fprintf(fp, "%d\n", sb.st_gid);
3554 fclose(fp);
3555 exit(0);
3556}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003557 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003558 if test -f conftest_grp; then
3559 vim_cv_tty_group=`cat conftest_grp`
3560 if test "x$vim_cv_tty_mode" = "x" ; then
3561 vim_cv_tty_mode=0620
3562 fi
3563 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3564 else
3565 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003566 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003567 fi
3568 ],[
3569 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003570 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003571 ],[
3572 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3573 ])
3574 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003575rm -f conftest_grp
3576
Bram Moolenaar446cb832008-06-24 21:56:24 +00003577if test "x$vim_cv_tty_group" != "xworld" ; then
3578 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3579 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003580 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 (probably 0620)])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003581 else
3582 AC_DEFINE(PTYMODE, 0620)
3583 fi
3584fi
3585
Bram Moolenaar071d4272004-06-13 20:20:40 +00003586dnl Checks for library functions. ===================================
3587
3588AC_TYPE_SIGNAL
3589
3590dnl find out what to use at the end of a signal function
3591if test $ac_cv_type_signal = void; then
3592 AC_DEFINE(SIGRETURN, [return])
3593else
3594 AC_DEFINE(SIGRETURN, [return 0])
3595fi
3596
3597dnl check if struct sigcontext is defined (used for SGI only)
3598AC_MSG_CHECKING(for struct sigcontext)
3599AC_TRY_COMPILE([
3600#include <signal.h>
3601test_sig()
3602{
3603 struct sigcontext *scont;
3604 scont = (struct sigcontext *)0;
3605 return 1;
3606} ], ,
3607 AC_MSG_RESULT(yes)
3608 AC_DEFINE(HAVE_SIGCONTEXT),
3609 AC_MSG_RESULT(no))
3610
3611dnl tricky stuff: try to find out if getcwd() is implemented with
3612dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003613AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3614 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003615 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003616#include "confdefs.h"
3617#ifdef HAVE_UNISTD_H
3618#include <unistd.h>
3619#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003620char *dagger[] = { "IFS=pwd", 0 };
3621main()
3622{
3623 char buffer[500];
3624 extern char **environ;
3625 environ = dagger;
3626 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003627}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003628 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003629 vim_cv_getcwd_broken=no
3630 ],[
3631 vim_cv_getcwd_broken=yes
3632 ],[
3633 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3634 ])
3635 ])
3636
3637if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3638 AC_DEFINE(BAD_GETCWD)
3639fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003640
Bram Moolenaar25153e12010-02-24 14:47:08 +01003641dnl Check for functions in one big call, to reduce the size of configure.
3642dnl Can only be used for functions that do not require any include.
Bram Moolenaarb129a442016-12-01 17:25:20 +01003643AC_CHECK_FUNCS(fchdir fchown fsync getcwd getpseudotty \
3644 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003645 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar2fcf6682017-03-11 20:03:42 +01003646 getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaarbb09ceb2016-10-18 16:27:23 +02003647 sigprocmask sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003648 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
Bram Moolenaara6b89762016-02-29 21:38:26 +01003649 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003650AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003651
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003652dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3653dnl appropriate, so that off_t is 64 bits when needed.
3654AC_SYS_LARGEFILE
3655
Bram Moolenaar071d4272004-06-13 20:20:40 +00003656dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3657AC_MSG_CHECKING(for st_blksize)
3658AC_TRY_COMPILE(
3659[#include <sys/types.h>
3660#include <sys/stat.h>],
3661[ struct stat st;
3662 int n;
3663
3664 stat("/", &st);
3665 n = (int)st.st_blksize;],
3666 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3667 AC_MSG_RESULT(no))
3668
Bram Moolenaar446cb832008-06-24 21:56:24 +00003669AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3670 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003671 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003672#include "confdefs.h"
3673#if STDC_HEADERS
3674# include <stdlib.h>
3675# include <stddef.h>
3676#endif
3677#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003678#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003679main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003680 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003681 vim_cv_stat_ignores_slash=yes
3682 ],[
3683 vim_cv_stat_ignores_slash=no
3684 ],[
3685 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3686 ])
3687 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003688
Bram Moolenaar446cb832008-06-24 21:56:24 +00003689if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3690 AC_DEFINE(STAT_IGNORES_SLASH)
3691fi
3692
Bram Moolenaar071d4272004-06-13 20:20:40 +00003693dnl Link with iconv for charset translation, if not found without library.
3694dnl check for iconv() requires including iconv.h
3695dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3696dnl has been installed.
3697AC_MSG_CHECKING(for iconv_open())
3698save_LIBS="$LIBS"
3699LIBS="$LIBS -liconv"
3700AC_TRY_LINK([
3701#ifdef HAVE_ICONV_H
3702# include <iconv.h>
3703#endif
3704 ], [iconv_open("fr", "to");],
3705 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3706 LIBS="$save_LIBS"
3707 AC_TRY_LINK([
3708#ifdef HAVE_ICONV_H
3709# include <iconv.h>
3710#endif
3711 ], [iconv_open("fr", "to");],
3712 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3713 AC_MSG_RESULT(no)))
3714
3715
3716AC_MSG_CHECKING(for nl_langinfo(CODESET))
3717AC_TRY_LINK([
3718#ifdef HAVE_LANGINFO_H
3719# include <langinfo.h>
3720#endif
3721], [char *cs = nl_langinfo(CODESET);],
3722 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3723 AC_MSG_RESULT(no))
3724
Bram Moolenaar446cb832008-06-24 21:56:24 +00003725dnl Need various functions for floating point support. Only enable
3726dnl floating point when they are all present.
3727AC_CHECK_LIB(m, strtod)
3728AC_MSG_CHECKING([for strtod() and other floating point functions])
3729AC_TRY_LINK([
3730#ifdef HAVE_MATH_H
3731# include <math.h>
3732#endif
3733#if STDC_HEADERS
3734# include <stdlib.h>
3735# include <stddef.h>
3736#endif
3737], [char *s; double d;
3738 d = strtod("1.1", &s);
3739 d = fabs(1.11);
3740 d = ceil(1.11);
3741 d = floor(1.11);
3742 d = log10(1.11);
3743 d = pow(1.11, 2.22);
3744 d = sqrt(1.11);
3745 d = sin(1.11);
3746 d = cos(1.11);
3747 d = atan(1.11);
3748 ],
3749 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3750 AC_MSG_RESULT(no))
3751
Bram Moolenaara6b89762016-02-29 21:38:26 +01003752dnl isinf() and isnan() need to include header files and may need -lm.
3753AC_MSG_CHECKING([for isinf()])
3754AC_TRY_LINK([
3755#ifdef HAVE_MATH_H
3756# include <math.h>
3757#endif
3758#if STDC_HEADERS
3759# include <stdlib.h>
3760# include <stddef.h>
3761#endif
3762], [int r = isinf(1.11); ],
3763 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISINF),
3764 AC_MSG_RESULT(no))
3765
3766AC_MSG_CHECKING([for isnan()])
3767AC_TRY_LINK([
3768#ifdef HAVE_MATH_H
3769# include <math.h>
3770#endif
3771#if STDC_HEADERS
3772# include <stdlib.h>
3773# include <stddef.h>
3774#endif
3775], [int r = isnan(1.11); ],
3776 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISNAN),
3777 AC_MSG_RESULT(no))
3778
Bram Moolenaar071d4272004-06-13 20:20:40 +00003779dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3780dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003781dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003782AC_MSG_CHECKING(--disable-acl argument)
3783AC_ARG_ENABLE(acl,
3784 [ --disable-acl Don't check for ACL support.],
3785 , [enable_acl="yes"])
3786if test "$enable_acl" = "yes"; then
3787AC_MSG_RESULT(no)
3788AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3789 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3790 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3791
3792AC_MSG_CHECKING(for POSIX ACL support)
3793AC_TRY_LINK([
3794#include <sys/types.h>
3795#ifdef HAVE_SYS_ACL_H
3796# include <sys/acl.h>
3797#endif
3798acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3799 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3800 acl_free(acl);],
3801 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3802 AC_MSG_RESULT(no))
3803
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003804AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003805AC_MSG_CHECKING(for Solaris ACL support)
3806AC_TRY_LINK([
3807#ifdef HAVE_SYS_ACL_H
3808# include <sys/acl.h>
3809#endif], [acl("foo", GETACLCNT, 0, NULL);
3810 ],
3811 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003812 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003813
3814AC_MSG_CHECKING(for AIX ACL support)
3815AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003816#if STDC_HEADERS
3817# include <stdlib.h>
3818# include <stddef.h>
3819#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003820#ifdef HAVE_SYS_ACL_H
3821# include <sys/acl.h>
3822#endif
3823#ifdef HAVE_SYS_ACCESS_H
3824# include <sys/access.h>
3825#endif
3826#define _ALL_SOURCE
3827
3828#include <sys/stat.h>
3829
3830int aclsize;
3831struct acl *aclent;], [aclsize = sizeof(struct acl);
3832 aclent = (void *)malloc(aclsize);
3833 statacl("foo", STX_NORMAL, aclent, aclsize);
3834 ],
3835 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3836 AC_MSG_RESULT(no))
3837else
3838 AC_MSG_RESULT(yes)
3839fi
3840
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003841if test "x$GTK_CFLAGS" != "x"; then
3842 dnl pango_shape_full() is new, fall back to pango_shape().
3843 AC_MSG_CHECKING(for pango_shape_full)
3844 ac_save_CFLAGS="$CFLAGS"
3845 ac_save_LIBS="$LIBS"
3846 CFLAGS="$CFLAGS $GTK_CFLAGS"
3847 LIBS="$LIBS $GTK_LIBS"
Bram Moolenaar5325b9b2015-09-09 20:27:02 +02003848 AC_TRY_LINK(
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003849 [#include <gtk/gtk.h>],
3850 [ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ],
3851 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL),
3852 AC_MSG_RESULT(no))
3853 CFLAGS="$ac_save_CFLAGS"
3854 LIBS="$ac_save_LIBS"
3855fi
3856
Bram Moolenaar071d4272004-06-13 20:20:40 +00003857AC_MSG_CHECKING(--disable-gpm argument)
3858AC_ARG_ENABLE(gpm,
3859 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3860 [enable_gpm="yes"])
3861
3862if test "$enable_gpm" = "yes"; then
3863 AC_MSG_RESULT(no)
3864 dnl Checking if gpm support can be compiled
3865 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3866 [olibs="$LIBS" ; LIBS="-lgpm"]
3867 AC_TRY_LINK(
3868 [#include <gpm.h>
3869 #include <linux/keyboard.h>],
3870 [Gpm_GetLibVersion(NULL);],
3871 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3872 dnl FEAT_MOUSE_GPM if mouse support is included
3873 [vi_cv_have_gpm=yes],
3874 [vi_cv_have_gpm=no])
3875 [LIBS="$olibs"]
3876 )
3877 if test $vi_cv_have_gpm = yes; then
3878 LIBS="$LIBS -lgpm"
3879 AC_DEFINE(HAVE_GPM)
3880 fi
3881else
3882 AC_MSG_RESULT(yes)
3883fi
3884
Bram Moolenaar446cb832008-06-24 21:56:24 +00003885AC_MSG_CHECKING(--disable-sysmouse argument)
3886AC_ARG_ENABLE(sysmouse,
Bram Moolenaar8008b632017-07-18 21:33:20 +02003887 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
Bram Moolenaar446cb832008-06-24 21:56:24 +00003888 [enable_sysmouse="yes"])
3889
3890if test "$enable_sysmouse" = "yes"; then
3891 AC_MSG_RESULT(no)
3892 dnl Checking if sysmouse support can be compiled
3893 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3894 dnl defines FEAT_SYSMOUSE if mouse support is included
3895 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3896 AC_TRY_LINK(
3897 [#include <sys/consio.h>
3898 #include <signal.h>
3899 #include <sys/fbio.h>],
3900 [struct mouse_info mouse;
3901 mouse.operation = MOUSE_MODE;
3902 mouse.operation = MOUSE_SHOW;
3903 mouse.u.mode.mode = 0;
3904 mouse.u.mode.signal = SIGUSR2;],
3905 [vi_cv_have_sysmouse=yes],
3906 [vi_cv_have_sysmouse=no])
3907 )
3908 if test $vi_cv_have_sysmouse = yes; then
3909 AC_DEFINE(HAVE_SYSMOUSE)
3910 fi
3911else
3912 AC_MSG_RESULT(yes)
3913fi
3914
Bram Moolenaarf05da212009-11-17 16:13:15 +00003915dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3916AC_MSG_CHECKING(for FD_CLOEXEC)
3917AC_TRY_COMPILE(
3918[#if HAVE_FCNTL_H
3919# include <fcntl.h>
3920#endif],
3921[ int flag = FD_CLOEXEC;],
3922 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3923 AC_MSG_RESULT(not usable))
3924
Bram Moolenaar071d4272004-06-13 20:20:40 +00003925dnl rename needs to be checked separately to work on Nextstep with cc
3926AC_MSG_CHECKING(for rename)
3927AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3928 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3929 AC_MSG_RESULT(no))
3930
3931dnl sysctl() may exist but not the arguments we use
3932AC_MSG_CHECKING(for sysctl)
3933AC_TRY_COMPILE(
3934[#include <sys/types.h>
3935#include <sys/sysctl.h>],
3936[ int mib[2], r;
3937 size_t len;
3938
3939 mib[0] = CTL_HW;
3940 mib[1] = HW_USERMEM;
3941 len = sizeof(r);
3942 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3943 ],
3944 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3945 AC_MSG_RESULT(not usable))
3946
3947dnl sysinfo() may exist but not be Linux compatible
3948AC_MSG_CHECKING(for sysinfo)
3949AC_TRY_COMPILE(
3950[#include <sys/types.h>
3951#include <sys/sysinfo.h>],
3952[ struct sysinfo sinfo;
3953 int t;
3954
3955 (void)sysinfo(&sinfo);
3956 t = sinfo.totalram;
3957 ],
3958 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3959 AC_MSG_RESULT(not usable))
3960
Bram Moolenaar914572a2007-05-01 11:37:47 +00003961dnl struct sysinfo may have the mem_unit field or not
3962AC_MSG_CHECKING(for sysinfo.mem_unit)
3963AC_TRY_COMPILE(
3964[#include <sys/types.h>
3965#include <sys/sysinfo.h>],
3966[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003967 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003968 ],
3969 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3970 AC_MSG_RESULT(no))
3971
Bram Moolenaar071d4272004-06-13 20:20:40 +00003972dnl sysconf() may exist but not support what we want to use
3973AC_MSG_CHECKING(for sysconf)
3974AC_TRY_COMPILE(
3975[#include <unistd.h>],
3976[ (void)sysconf(_SC_PAGESIZE);
3977 (void)sysconf(_SC_PHYS_PAGES);
3978 ],
3979 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3980 AC_MSG_RESULT(not usable))
3981
Bram Moolenaar914703b2010-05-31 21:59:46 +02003982AC_CHECK_SIZEOF([int])
3983AC_CHECK_SIZEOF([long])
3984AC_CHECK_SIZEOF([time_t])
3985AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003986
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003987dnl Use different names to avoid clashing with other header files.
3988AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3989AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3990
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003991dnl Make sure that uint32_t is really 32 bits unsigned.
3992AC_MSG_CHECKING([uint32_t is 32 bits])
3993AC_TRY_RUN([
3994#ifdef HAVE_STDINT_H
3995# include <stdint.h>
3996#endif
3997#ifdef HAVE_INTTYPES_H
3998# include <inttypes.h>
3999#endif
4000main() {
4001 uint32_t nr1 = (uint32_t)-1;
4002 uint32_t nr2 = (uint32_t)0xffffffffUL;
4003 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
4004 exit(0);
4005}],
4006AC_MSG_RESULT(ok),
4007AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01004008AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004009
Bram Moolenaar446cb832008-06-24 21:56:24 +00004010dnl Check for memmove() before bcopy(), makes memmove() be used when both are
4011dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
4012
Bram Moolenaar071d4272004-06-13 20:20:40 +00004013[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00004014#include "confdefs.h"
4015#ifdef HAVE_STRING_H
4016# include <string.h>
4017#endif
4018#if STDC_HEADERS
4019# include <stdlib.h>
4020# include <stddef.h>
4021#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00004022main() {
4023 char buf[10];
4024 strcpy(buf, "abcdefghi");
4025 mch_memmove(buf, buf + 2, 3);
4026 if (strncmp(buf, "ababcf", 6))
4027 exit(1);
4028 strcpy(buf, "abcdefghi");
4029 mch_memmove(buf + 2, buf, 3);
4030 if (strncmp(buf, "cdedef", 6))
4031 exit(1);
4032 exit(0); /* libc version works properly. */
4033}']
4034
Bram Moolenaar446cb832008-06-24 21:56:24 +00004035AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
4036 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004037 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00004038 [
4039 vim_cv_memmove_handles_overlap=yes
4040 ],[
4041 vim_cv_memmove_handles_overlap=no
4042 ],[
4043 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
4044 ])
4045 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00004046
Bram Moolenaar446cb832008-06-24 21:56:24 +00004047if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
4048 AC_DEFINE(USEMEMMOVE)
4049else
4050 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
4051 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004052 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00004053 [
4054 vim_cv_bcopy_handles_overlap=yes
4055 ],[
4056 vim_cv_bcopy_handles_overlap=no
4057 ],[
4058 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
4059 ])
4060 ])
4061
4062 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
4063 AC_DEFINE(USEBCOPY)
4064 else
4065 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
4066 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004067 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]])],
Bram Moolenaar446cb832008-06-24 21:56:24 +00004068 [
4069 vim_cv_memcpy_handles_overlap=yes
4070 ],[
4071 vim_cv_memcpy_handles_overlap=no
4072 ],[
4073 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
4074 ])
4075 ])
4076
4077 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
4078 AC_DEFINE(USEMEMCPY)
4079 fi
4080 fi
4081fi
4082
Bram Moolenaar071d4272004-06-13 20:20:40 +00004083
4084dnl Check for multibyte locale functions
4085dnl Find out if _Xsetlocale() is supported by libX11.
4086dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004087if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004088 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004089 libs_save=$LIBS
4090 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
4091 CFLAGS="$CFLAGS $X_CFLAGS"
4092
4093 AC_MSG_CHECKING(whether X_LOCALE needed)
4094 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
4095 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
4096 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
4097 AC_MSG_RESULT(no))
4098
4099 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
4100 AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes)
4101 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
4102
Bram Moolenaar071d4272004-06-13 20:20:40 +00004103 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004104 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00004105fi
4106
4107dnl Link with xpg4, it is said to make Korean locale working
4108AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
4109
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004110dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02004111dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004112dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004113dnl -t for typedefs (many ctags have this)
4114dnl -s for static functions (Elvis ctags only?)
4115dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
4116dnl -i+m to test for older Exuberant ctags
4117AC_MSG_CHECKING(how to create tags)
4118test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02004119if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004120 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02004121elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
4122 TAGPRG="exctags -I INIT+ --fields=+S"
4123elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
4124 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004125else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004126 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004127 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
4128 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
4129 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
4130 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
4131 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
4132 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
4133 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
4134fi
4135test -f tags.save && mv tags.save tags
4136AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
4137
4138dnl Check how we can run man with a section number
4139AC_MSG_CHECKING(how to run man with a section nr)
4140MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00004141(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 +00004142AC_MSG_RESULT($MANDEF)
4143if test "$MANDEF" = "man -s"; then
4144 AC_DEFINE(USEMAN_S)
4145fi
4146
4147dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004148dnl We take care to base this on an empty LIBS: on some systems libelf would be
4149dnl in LIBS and implicitly take along libintl. The final LIBS would then not
4150dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004151AC_MSG_CHECKING(--disable-nls argument)
4152AC_ARG_ENABLE(nls,
4153 [ --disable-nls Don't support NLS (gettext()).], ,
4154 [enable_nls="yes"])
4155
4156if test "$enable_nls" = "yes"; then
4157 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00004158
4159 INSTALL_LANGS=install-languages
4160 AC_SUBST(INSTALL_LANGS)
4161 INSTALL_TOOL_LANGS=install-tool-languages
4162 AC_SUBST(INSTALL_TOOL_LANGS)
4163
Bram Moolenaar071d4272004-06-13 20:20:40 +00004164 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
4165 AC_MSG_CHECKING([for NLS])
4166 if test -f po/Makefile; then
4167 have_gettext="no"
4168 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004169 olibs=$LIBS
4170 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00004171 AC_TRY_LINK(
4172 [#include <libintl.h>],
4173 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004174 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
4175 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004176 AC_TRY_LINK(
4177 [#include <libintl.h>],
4178 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004179 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
4180 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00004181 AC_MSG_RESULT([gettext() doesn't work]);
4182 LIBS=$olibs))
4183 else
4184 AC_MSG_RESULT([msgfmt not found - disabled]);
4185 fi
Bram Moolenaar278eb582014-07-30 13:22:52 +02004186 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004187 AC_DEFINE(HAVE_GETTEXT)
4188 MAKEMO=yes
4189 AC_SUBST(MAKEMO)
4190 dnl this was added in GNU gettext 0.10.36
4191 AC_CHECK_FUNCS(bind_textdomain_codeset)
4192 dnl _nl_msg_cat_cntr is required for GNU gettext
4193 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
4194 AC_TRY_LINK(
4195 [#include <libintl.h>
4196 extern int _nl_msg_cat_cntr;],
4197 [++_nl_msg_cat_cntr;],
4198 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
4199 AC_MSG_RESULT([no]))
4200 fi
4201 else
4202 AC_MSG_RESULT([no "po/Makefile" - disabled]);
4203 fi
4204else
4205 AC_MSG_RESULT(yes)
4206fi
4207
4208dnl Check for dynamic linking loader
4209AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
4210if test x${DLL} = xdlfcn.h; then
4211 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
4212 AC_MSG_CHECKING([for dlopen()])
4213 AC_TRY_LINK(,[
4214 extern void* dlopen();
4215 dlopen();
4216 ],
4217 AC_MSG_RESULT(yes);
4218 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4219 AC_MSG_RESULT(no);
4220 AC_MSG_CHECKING([for dlopen() in -ldl])
4221 olibs=$LIBS
4222 LIBS="$LIBS -ldl"
4223 AC_TRY_LINK(,[
4224 extern void* dlopen();
4225 dlopen();
4226 ],
4227 AC_MSG_RESULT(yes);
4228 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4229 AC_MSG_RESULT(no);
4230 LIBS=$olibs))
4231 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
4232 dnl ick :-)
4233 AC_MSG_CHECKING([for dlsym()])
4234 AC_TRY_LINK(,[
4235 extern void* dlsym();
4236 dlsym();
4237 ],
4238 AC_MSG_RESULT(yes);
4239 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4240 AC_MSG_RESULT(no);
4241 AC_MSG_CHECKING([for dlsym() in -ldl])
4242 olibs=$LIBS
4243 LIBS="$LIBS -ldl"
4244 AC_TRY_LINK(,[
4245 extern void* dlsym();
4246 dlsym();
4247 ],
4248 AC_MSG_RESULT(yes);
4249 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4250 AC_MSG_RESULT(no);
4251 LIBS=$olibs))
4252elif test x${DLL} = xdl.h; then
4253 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
4254 AC_MSG_CHECKING([for shl_load()])
4255 AC_TRY_LINK(,[
4256 extern void* shl_load();
4257 shl_load();
4258 ],
4259 AC_MSG_RESULT(yes);
4260 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4261 AC_MSG_RESULT(no);
4262 AC_MSG_CHECKING([for shl_load() in -ldld])
4263 olibs=$LIBS
4264 LIBS="$LIBS -ldld"
4265 AC_TRY_LINK(,[
4266 extern void* shl_load();
4267 shl_load();
4268 ],
4269 AC_MSG_RESULT(yes);
4270 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4271 AC_MSG_RESULT(no);
4272 LIBS=$olibs))
4273fi
4274AC_CHECK_HEADERS(setjmp.h)
4275
4276if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
4277 dnl -ldl must come after DynaLoader.a
4278 if echo $LIBS | grep -e '-ldl' >/dev/null; then
4279 LIBS=`echo $LIBS | sed s/-ldl//`
4280 PERL_LIBS="$PERL_LIBS -ldl"
4281 fi
4282fi
4283
Bram Moolenaar164fca32010-07-14 13:58:07 +02004284if test "x$MACOSX" = "xyes"; then
4285 AC_MSG_CHECKING(whether we need -framework Cocoa)
4286 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
4287 dnl disabled during tiny build)
4288 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
4289 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004290 AC_MSG_RESULT(yes)
4291 else
4292 AC_MSG_RESULT(no)
4293 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02004294 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
4295 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
4296 dnl missing Objective-C symbols.
4297 if test "x$features" = "xtiny"; then
4298 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
4299 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
4300 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004301fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02004302if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01004303 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00004304fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004305
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004306dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
4307dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
4308dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00004309dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
4310dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004311DEPEND_CFLAGS_FILTER=
4312if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004313 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00004314 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00004315 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004316 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004317 AC_MSG_RESULT(yes)
4318 else
4319 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004320 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004321 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
4322 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00004323 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01004324 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004325 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
4326 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004327 CFLAGS=`echo "$CFLAGS" | sed -e 's/ *-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/ *-D_FORTIFY_SOURCE=.//g' -e 's/ *-U_FORTIFY_SOURCE//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004328 AC_MSG_RESULT(yes)
4329 else
4330 AC_MSG_RESULT(no)
4331 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00004332fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004333AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004334
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004335dnl link.sh tries to avoid overlinking in a hackish way.
4336dnl At least GNU ld supports --as-needed which provides the same functionality
4337dnl at linker level. Let's use it.
4338AC_MSG_CHECKING(linker --as-needed support)
4339LINK_AS_NEEDED=
4340# Check if linker supports --as-needed and --no-as-needed options
4341if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004342 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004343 LINK_AS_NEEDED=yes
4344fi
4345if test "$LINK_AS_NEEDED" = yes; then
4346 AC_MSG_RESULT(yes)
4347else
4348 AC_MSG_RESULT(no)
4349fi
4350AC_SUBST(LINK_AS_NEEDED)
4351
Bram Moolenaar77c19352012-06-13 19:19:41 +02004352# IBM z/OS reset CFLAGS for config.mk
4353if test "$zOSUnix" = "yes"; then
4354 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4355fi
4356
Bram Moolenaar071d4272004-06-13 20:20:40 +00004357dnl write output files
4358AC_OUTPUT(auto/config.mk:config.mk.in)
4359
4360dnl vim: set sw=2 tw=78 fo+=l: