blob: 1183ab44b66a70285179faa232a554b7f01c07f6 [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 Moolenaare8ff56b2017-09-14 23:06:23 +02001008 dnl Remove "FORTIFY_SOURCE", it will be defined twice.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001009 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
Bram Moolenaare8ff56b2017-09-14 23:06:23 +02001010 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
1011 -e 's/-fdebug-prefix-map[[^ ]]*//g' \
Bram Moolenaarb5e79ef2017-09-15 12:40:53 +02001012 -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=.//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001013 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
1014 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
1015 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
1016 -e 's/-bE:perl.exp//' -e 's/-lc //'`
1017 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
1018 dnl a test in configure may fail because of that.
1019 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
1020 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
1021
1022 dnl check that compiling a simple program still works with the flags
1023 dnl added for Perl.
1024 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
1025 cflags_save=$CFLAGS
1026 libs_save=$LIBS
1027 ldflags_save=$LDFLAGS
1028 CFLAGS="$CFLAGS $perlcppflags"
1029 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001030 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001031 LDFLAGS="$perlldflags $LDFLAGS"
1032 AC_TRY_LINK(,[ ],
1033 AC_MSG_RESULT(yes); perl_ok=yes,
1034 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
1035 CFLAGS=$cflags_save
1036 LIBS=$libs_save
1037 LDFLAGS=$ldflags_save
1038 if test $perl_ok = yes; then
1039 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +00001040 dnl remove -pipe and -Wxxx, it confuses cproto
1041 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001042 fi
1043 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001044 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001045 LDFLAGS="$perlldflags $LDFLAGS"
1046 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001047 fi
1048 PERL_LIBS=$perllibs
1049 PERL_SRC="auto/if_perl.c if_perlsfio.c"
1050 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
1051 PERL_PRO="if_perl.pro if_perlsfio.pro"
1052 AC_DEFINE(FEAT_PERL)
1053 fi
1054 fi
1055 else
1056 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
1057 fi
1058 fi
1059
1060 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +00001061 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +00001062 dir=/System/Library/Perl
1063 darwindir=$dir/darwin
1064 if test -d $darwindir; then
1065 PERL=/usr/bin/perl
1066 else
1067 dnl Mac OS X 10.3
1068 dir=/System/Library/Perl/5.8.1
1069 darwindir=$dir/darwin-thread-multi-2level
1070 if test -d $darwindir; then
1071 PERL=/usr/bin/perl
1072 fi
1073 fi
1074 if test -n "$PERL"; then
1075 PERL_DIR="$dir"
1076 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1077 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1078 PERL_LIBS="-L$darwindir/CORE -lperl"
1079 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001080 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1081 dnl be included if requested by passing --with-mac-arch to
1082 dnl configure, so strip these flags first (if present)
1083 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1084 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 +00001085 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001086 if test "$enable_perlinterp" = "dynamic"; then
1087 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1088 AC_DEFINE(DYNAMIC_PERL)
1089 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
1090 fi
1091 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001092
1093 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1094 AC_MSG_ERROR([could not configure perl])
1095 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001096fi
1097AC_SUBST(shrpenv)
1098AC_SUBST(PERL_SRC)
1099AC_SUBST(PERL_OBJ)
1100AC_SUBST(PERL_PRO)
1101AC_SUBST(PERL_CFLAGS)
1102AC_SUBST(PERL_LIBS)
1103
1104AC_MSG_CHECKING(--enable-pythoninterp argument)
1105AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001106 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001107 [enable_pythoninterp="no"])
1108AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001109if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001110 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1111 AC_MSG_ERROR([cannot use Python with tiny or small features])
1112 fi
1113
Bram Moolenaar071d4272004-06-13 20:20:40 +00001114 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001115 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001116 if test "X$vi_cv_path_python" != "X"; then
1117
1118 dnl -- get its version number
1119 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1120 [[vi_cv_var_python_version=`
1121 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1122 ]])
1123
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001124 dnl -- it must be at least version 2.3
1125 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001126 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001127 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001128 then
1129 AC_MSG_RESULT(yep)
1130
1131 dnl -- find where python thinks it was installed
1132 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1133 [ vi_cv_path_python_pfx=`
1134 ${vi_cv_path_python} -c \
1135 "import sys; print sys.prefix"` ])
1136
1137 dnl -- and where it thinks it runs
1138 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1139 [ vi_cv_path_python_epfx=`
1140 ${vi_cv_path_python} -c \
1141 "import sys; print sys.exec_prefix"` ])
1142
1143 dnl -- python's internal library path
1144
1145 AC_CACHE_VAL(vi_cv_path_pythonpath,
1146 [ vi_cv_path_pythonpath=`
1147 unset PYTHONPATH;
1148 ${vi_cv_path_python} -c \
1149 "import sys, string; print string.join(sys.path,':')"` ])
1150
1151 dnl -- where the Python implementation library archives are
1152
1153 AC_ARG_WITH(python-config-dir,
1154 [ --with-python-config-dir=PATH Python's config directory],
1155 [ vi_cv_path_python_conf="${withval}" ] )
1156
1157 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1158 [
1159 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001160 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1161 if test -d "$d" && test -f "$d/config.c"; then
1162 vi_cv_path_python_conf="$d"
1163 else
1164 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1165 for subdir in lib64 lib share; do
1166 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1167 if test -d "$d" && test -f "$d/config.c"; then
1168 vi_cv_path_python_conf="$d"
1169 fi
1170 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001171 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001172 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001173 ])
1174
1175 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1176
1177 if test "X$PYTHON_CONFDIR" = "X"; then
1178 AC_MSG_RESULT([can't find it!])
1179 else
1180
1181 dnl -- we need to examine Python's config/Makefile too
1182 dnl see what the interpreter is built from
1183 AC_CACHE_VAL(vi_cv_path_python_plibs,
1184 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001185 pwd=`pwd`
1186 tmp_mkf="$pwd/config-PyMake$$"
1187 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001188__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001189 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001190 @echo "python_LIBS='$(LIBS)'"
1191 @echo "python_SYSLIBS='$(SYSLIBS)'"
1192 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001193 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001194 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001195 @echo "python_PYTHONFRAMEWORK='$(PYTHONFRAMEWORK)'"
1196 @echo "python_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
1197 @echo "python_PYTHONFRAMEWORKINSTALLDIR='$(PYTHONFRAMEWORKINSTALLDIR)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001198eof
1199 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001200 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1201 rm -f -- "${tmp_mkf}"
Bram Moolenaarcff50f52016-08-14 17:32:52 +02001202 if test "x$MACOSX" = "xyes" && test -n "${python_PYTHONFRAMEWORK}" && ${vi_cv_path_python} -c \
Bram Moolenaar071d4272004-06-13 20:20:40 +00001203 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1204 vi_cv_path_python_plibs="-framework Python"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001205 if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
1206 vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
1207 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001208 else
1209 if test "${vi_cv_var_python_version}" = "1.4"; then
1210 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1211 else
1212 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1213 fi
Bram Moolenaar6c927552015-03-24 12:21:33 +01001214 dnl -- Check if the path contained in python_LINKFORSHARED is
1215 dnl usable for vim build. If not, make and try other
1216 dnl candidates.
Bram Moolenaara161e262015-03-24 15:14:27 +01001217 if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
Bram Moolenaar6c927552015-03-24 12:21:33 +01001218 python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]].*/\1/'`
1219 python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]][[ \t]]*\(.*\)/\2/'`
1220 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1221 dnl -- The path looks relative. Guess the absolute one using
1222 dnl the prefix and try that.
1223 python_link_path="${python_PYTHONFRAMEWORKPREFIX}/${python_link_path}"
1224 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1225 dnl -- A last resort.
1226 python_link_path="${python_PYTHONFRAMEWORKINSTALLDIR}/Versions/${vi_cv_var_python_version}/${python_PYTHONFRAMEWORK}"
1227 dnl -- No check is done. The last word is left to the
1228 dnl "sanity" test on link flags that follows shortly.
1229 fi
1230 python_LINKFORSHARED="${python_link_symbol} ${python_link_path}"
1231 fi
1232 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001233 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 +00001234 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1235 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1236 fi
1237 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001238 AC_CACHE_CHECK(Python's dll name,vi_cv_dll_name_python,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001239 [
1240 if test "X$python_DLLLIBRARY" != "X"; then
1241 vi_cv_dll_name_python="$python_DLLLIBRARY"
1242 else
1243 vi_cv_dll_name_python="$python_INSTSONAME"
1244 fi
1245 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001246
1247 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1248 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001249 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 +00001250 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001251 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 +00001252 fi
1253 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001254 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001255 if test "${vi_cv_var_python_version}" = "1.4"; then
1256 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1257 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001258 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 +00001259
1260 dnl On FreeBSD linking with "-pthread" is required to use threads.
1261 dnl _THREAD_SAFE must be used for compiling then.
1262 dnl The "-pthread" is added to $LIBS, so that the following check for
1263 dnl sigaltstack() will look in libc_r (it's there in libc!).
1264 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1265 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1266 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1267 AC_MSG_CHECKING([if -pthread should be used])
1268 threadsafe_flag=
1269 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001270 dnl if test "x$MACOSX" != "xyes"; then
1271 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001272 test "$GCC" = yes && threadsafe_flag="-pthread"
1273 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1274 threadsafe_flag="-D_THREAD_SAFE"
1275 thread_lib="-pthread"
1276 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001277 if test "`(uname) 2>/dev/null`" = SunOS; then
1278 threadsafe_flag="-pthreads"
1279 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001280 fi
1281 libs_save_old=$LIBS
1282 if test -n "$threadsafe_flag"; then
1283 cflags_save=$CFLAGS
1284 CFLAGS="$CFLAGS $threadsafe_flag"
1285 LIBS="$LIBS $thread_lib"
1286 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001287 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001288 AC_MSG_RESULT(no); LIBS=$libs_save_old
1289 )
1290 CFLAGS=$cflags_save
1291 else
1292 AC_MSG_RESULT(no)
1293 fi
1294
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001295 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001296 dnl added for Python.
1297 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1298 cflags_save=$CFLAGS
1299 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001300 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001301 LIBS="$LIBS $PYTHON_LIBS"
1302 AC_TRY_LINK(,[ ],
1303 AC_MSG_RESULT(yes); python_ok=yes,
1304 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1305 CFLAGS=$cflags_save
1306 LIBS=$libs_save
1307 if test $python_ok = yes; then
1308 AC_DEFINE(FEAT_PYTHON)
1309 else
1310 LIBS=$libs_save_old
1311 PYTHON_SRC=
1312 PYTHON_OBJ=
1313 PYTHON_LIBS=
1314 PYTHON_CFLAGS=
1315 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001316 fi
1317 else
1318 AC_MSG_RESULT(too old)
1319 fi
1320 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001321
1322 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1323 AC_MSG_ERROR([could not configure python])
1324 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001325fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001326
Bram Moolenaar071d4272004-06-13 20:20:40 +00001327AC_SUBST(PYTHON_CONFDIR)
1328AC_SUBST(PYTHON_LIBS)
1329AC_SUBST(PYTHON_GETPATH_CFLAGS)
1330AC_SUBST(PYTHON_CFLAGS)
1331AC_SUBST(PYTHON_SRC)
1332AC_SUBST(PYTHON_OBJ)
1333
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001334
1335AC_MSG_CHECKING(--enable-python3interp argument)
1336AC_ARG_ENABLE(python3interp,
Bram Moolenaar8008b632017-07-18 21:33:20 +02001337 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001338 [enable_python3interp="no"])
1339AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001340if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001341 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1342 AC_MSG_ERROR([cannot use Python with tiny or small features])
1343 fi
1344
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001345 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001346 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001347 if test "X$vi_cv_path_python3" != "X"; then
1348
1349 dnl -- get its version number
1350 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1351 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001352 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001353 ]])
1354
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001355 dnl -- it must be at least version 3
1356 AC_MSG_CHECKING(Python is 3.0 or better)
1357 if ${vi_cv_path_python3} -c \
1358 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1359 then
1360 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001361
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001362 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1363 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001364 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001365 vi_cv_var_python3_abiflags=
1366 if ${vi_cv_path_python3} -c \
1367 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1368 then
1369 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1370 "import sys; print(sys.abiflags)"`
1371 fi ])
1372
1373 dnl -- find where python3 thinks it was installed
1374 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1375 [ vi_cv_path_python3_pfx=`
1376 ${vi_cv_path_python3} -c \
1377 "import sys; print(sys.prefix)"` ])
1378
1379 dnl -- and where it thinks it runs
1380 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1381 [ vi_cv_path_python3_epfx=`
1382 ${vi_cv_path_python3} -c \
1383 "import sys; print(sys.exec_prefix)"` ])
1384
1385 dnl -- python3's internal library path
1386
1387 AC_CACHE_VAL(vi_cv_path_python3path,
1388 [ vi_cv_path_python3path=`
1389 unset PYTHONPATH;
1390 ${vi_cv_path_python3} -c \
1391 "import sys, string; print(':'.join(sys.path))"` ])
1392
1393 dnl -- where the Python implementation library archives are
1394
1395 AC_ARG_WITH(python3-config-dir,
1396 [ --with-python3-config-dir=PATH Python's config directory],
1397 [ vi_cv_path_python3_conf="${withval}" ] )
1398
1399 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1400 [
1401 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001402 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001403 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1404 if test -d "$d" && test -f "$d/config.c"; then
1405 vi_cv_path_python3_conf="$d"
1406 else
1407 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1408 for subdir in lib64 lib share; do
1409 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1410 if test -d "$d" && test -f "$d/config.c"; then
1411 vi_cv_path_python3_conf="$d"
1412 fi
1413 done
1414 done
1415 fi
1416 ])
1417
1418 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1419
1420 if test "X$PYTHON3_CONFDIR" = "X"; then
1421 AC_MSG_RESULT([can't find it!])
1422 else
1423
1424 dnl -- we need to examine Python's config/Makefile too
1425 dnl see what the interpreter is built from
1426 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1427 [
1428 pwd=`pwd`
1429 tmp_mkf="$pwd/config-PyMake$$"
1430 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001431__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001432 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001433 @echo "python3_LIBS='$(LIBS)'"
1434 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001435 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001436 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001437eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001438 dnl -- delete the lines from make about Entering/Leaving directory
1439 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1440 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001441 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 +02001442 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1443 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1444 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1445 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1446 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001447 AC_CACHE_CHECK(Python3's dll name,vi_cv_dll_name_python3,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001448 [
1449 if test "X$python3_DLLLIBRARY" != "X"; then
1450 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
1451 else
1452 vi_cv_dll_name_python3="$python3_INSTSONAME"
1453 fi
1454 ])
1455
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001456 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1457 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
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} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001459 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001460 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 +02001461 fi
1462 PYTHON3_SRC="if_python3.c"
1463 PYTHON3_OBJ="objects/if_python3.o"
1464
1465 dnl On FreeBSD linking with "-pthread" is required to use threads.
1466 dnl _THREAD_SAFE must be used for compiling then.
1467 dnl The "-pthread" is added to $LIBS, so that the following check for
1468 dnl sigaltstack() will look in libc_r (it's there in libc!).
1469 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1470 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1471 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1472 AC_MSG_CHECKING([if -pthread should be used])
1473 threadsafe_flag=
1474 thread_lib=
1475 dnl if test "x$MACOSX" != "xyes"; then
1476 if test "`(uname) 2>/dev/null`" != Darwin; then
1477 test "$GCC" = yes && threadsafe_flag="-pthread"
1478 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1479 threadsafe_flag="-D_THREAD_SAFE"
1480 thread_lib="-pthread"
1481 fi
1482 if test "`(uname) 2>/dev/null`" = SunOS; then
1483 threadsafe_flag="-pthreads"
1484 fi
1485 fi
1486 libs_save_old=$LIBS
1487 if test -n "$threadsafe_flag"; then
1488 cflags_save=$CFLAGS
1489 CFLAGS="$CFLAGS $threadsafe_flag"
1490 LIBS="$LIBS $thread_lib"
1491 AC_TRY_LINK(,[ ],
1492 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1493 AC_MSG_RESULT(no); LIBS=$libs_save_old
1494 )
1495 CFLAGS=$cflags_save
1496 else
1497 AC_MSG_RESULT(no)
1498 fi
1499
1500 dnl check that compiling a simple program still works with the flags
1501 dnl added for Python.
1502 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1503 cflags_save=$CFLAGS
1504 libs_save=$LIBS
1505 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1506 LIBS="$LIBS $PYTHON3_LIBS"
1507 AC_TRY_LINK(,[ ],
1508 AC_MSG_RESULT(yes); python3_ok=yes,
1509 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1510 CFLAGS=$cflags_save
1511 LIBS=$libs_save
1512 if test "$python3_ok" = yes; then
1513 AC_DEFINE(FEAT_PYTHON3)
1514 else
1515 LIBS=$libs_save_old
1516 PYTHON3_SRC=
1517 PYTHON3_OBJ=
1518 PYTHON3_LIBS=
1519 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001520 fi
1521 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001522 else
1523 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001524 fi
1525 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001526 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1527 AC_MSG_ERROR([could not configure python3])
1528 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001529fi
1530
1531AC_SUBST(PYTHON3_CONFDIR)
1532AC_SUBST(PYTHON3_LIBS)
1533AC_SUBST(PYTHON3_CFLAGS)
1534AC_SUBST(PYTHON3_SRC)
1535AC_SUBST(PYTHON3_OBJ)
1536
1537dnl if python2.x and python3.x are enabled one can only link in code
1538dnl with dlopen(), dlsym(), dlclose()
1539if test "$python_ok" = yes && test "$python3_ok" = yes; then
1540 AC_DEFINE(DYNAMIC_PYTHON)
1541 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001542 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001543 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001544 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001545 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001546 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001547 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001548 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001549 #include <dlfcn.h>
1550 /* If this program fails, then RTLD_GLOBAL is needed.
1551 * RTLD_GLOBAL will be used and then it is not possible to
1552 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001553 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001554 */
1555
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001556 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001557 {
1558 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001559 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001560 if (pylib != 0)
1561 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001562 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001563 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1564 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1565 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001566 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001567 (*init)();
1568 needed = (*simple)("import termios") == -1;
1569 (*final)();
1570 dlclose(pylib);
1571 }
1572 return !needed;
1573 }
1574
1575 int main(int argc, char** argv)
1576 {
1577 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001578 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001579 not_needed = 1;
1580 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001581 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001582 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001583
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001584 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001585 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001586
1587 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1588 cflags_save=$CFLAGS
1589 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001590 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001591 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001592 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001593 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001594 #include <dlfcn.h>
1595 #include <wchar.h>
1596 /* If this program fails, then RTLD_GLOBAL is needed.
1597 * RTLD_GLOBAL will be used and then it is not possible to
1598 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001599 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001600 */
1601
1602 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1603 {
1604 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001605 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001606 if (pylib != 0)
1607 {
1608 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1609 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1610 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1611 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1612 (*pfx)(prefix);
1613 (*init)();
1614 needed = (*simple)("import termios") == -1;
1615 (*final)();
1616 dlclose(pylib);
1617 }
1618 return !needed;
1619 }
1620
1621 int main(int argc, char** argv)
1622 {
1623 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001624 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001625 not_needed = 1;
1626 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001627 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001628 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1629
1630 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001631 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001632
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001633 PYTHON_SRC="if_python.c"
1634 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001635 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001636 PYTHON_LIBS=
1637 PYTHON3_SRC="if_python3.c"
1638 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001639 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001640 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001641elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1642 AC_DEFINE(DYNAMIC_PYTHON)
1643 PYTHON_SRC="if_python.c"
1644 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001645 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001646 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001647elif test "$python_ok" = yes; then
1648 dnl Check that adding -fPIE works. It may be needed when using a static
1649 dnl Python library.
1650 AC_MSG_CHECKING([if -fPIE can be added for Python])
1651 cflags_save=$CFLAGS
1652 libs_save=$LIBS
1653 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1654 LIBS="$LIBS $PYTHON_LIBS"
1655 AC_TRY_LINK(,[ ],
1656 AC_MSG_RESULT(yes); fpie_ok=yes,
1657 AC_MSG_RESULT(no); fpie_ok=no)
1658 CFLAGS=$cflags_save
1659 LIBS=$libs_save
1660 if test $fpie_ok = yes; then
1661 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1662 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001663elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1664 AC_DEFINE(DYNAMIC_PYTHON3)
1665 PYTHON3_SRC="if_python3.c"
1666 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001667 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001668 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001669elif test "$python3_ok" = yes; then
1670 dnl Check that adding -fPIE works. It may be needed when using a static
1671 dnl Python library.
1672 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1673 cflags_save=$CFLAGS
1674 libs_save=$LIBS
1675 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1676 LIBS="$LIBS $PYTHON3_LIBS"
1677 AC_TRY_LINK(,[ ],
1678 AC_MSG_RESULT(yes); fpie_ok=yes,
1679 AC_MSG_RESULT(no); fpie_ok=no)
1680 CFLAGS=$cflags_save
1681 LIBS=$libs_save
1682 if test $fpie_ok = yes; then
1683 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1684 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001685fi
1686
Bram Moolenaar071d4272004-06-13 20:20:40 +00001687AC_MSG_CHECKING(--enable-tclinterp argument)
1688AC_ARG_ENABLE(tclinterp,
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001689 [ --enable-tclinterp[=OPTS] Include Tcl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001690 [enable_tclinterp="no"])
1691AC_MSG_RESULT($enable_tclinterp)
1692
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001693if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001694
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001695 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001696 AC_MSG_CHECKING(--with-tclsh argument)
1697 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1698 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001699 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001700 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1701 AC_SUBST(vi_cv_path_tcl)
1702
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001703 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1704 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1705 tclsh_name="tclsh8.4"
1706 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1707 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001708 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001709 tclsh_name="tclsh8.2"
1710 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1711 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001712 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1713 tclsh_name="tclsh8.0"
1714 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1715 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001716 dnl still didn't find it, try without version number
1717 if test "X$vi_cv_path_tcl" = "X"; then
1718 tclsh_name="tclsh"
1719 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1720 fi
1721 if test "X$vi_cv_path_tcl" != "X"; then
1722 AC_MSG_CHECKING(Tcl version)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001723 if echo 'exit [[expr [info tclversion] < 8.0]]' | "$vi_cv_path_tcl" - ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001724 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1725 AC_MSG_RESULT($tclver - OK);
1726 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 +01001727 tcldll=`echo 'puts libtcl[[info tclversion]][[info sharedlibextension]]' | $vi_cv_path_tcl -`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001728
1729 AC_MSG_CHECKING(for location of Tcl include)
1730 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001731 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 +00001732 else
1733 dnl For Mac OS X 10.3, use the OS-provided framework location
1734 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1735 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001736 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001737 for try in $tclinc; do
1738 if test -f "$try/tcl.h"; then
1739 AC_MSG_RESULT($try/tcl.h)
1740 TCL_INC=$try
1741 break
1742 fi
1743 done
1744 if test -z "$TCL_INC"; then
1745 AC_MSG_RESULT(<not found>)
1746 SKIP_TCL=YES
1747 fi
1748 if test -z "$SKIP_TCL"; then
1749 AC_MSG_CHECKING(for location of tclConfig.sh script)
1750 if test "x$MACOSX" != "xyes"; then
1751 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001752 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001753 else
1754 dnl For Mac OS X 10.3, use the OS-provided framework location
1755 tclcnf="/System/Library/Frameworks/Tcl.framework"
1756 fi
1757 for try in $tclcnf; do
Bram Moolenaar49222be2015-12-11 18:11:30 +01001758 if test -f "$try/tclConfig.sh"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001759 AC_MSG_RESULT($try/tclConfig.sh)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001760 . "$try/tclConfig.sh"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001761 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001762 if test "$enable_tclinterp" = "dynamic"; then
1763 TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"`
1764 else
1765 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1766 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001767 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001768 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001769 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 +00001770 break
1771 fi
1772 done
1773 if test -z "$TCL_LIBS"; then
1774 AC_MSG_RESULT(<not found>)
1775 AC_MSG_CHECKING(for Tcl library by myself)
1776 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001777 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001778 for ext in .so .a ; do
1779 for ver in "" $tclver ; do
1780 for try in $tcllib ; do
1781 trylib=tcl$ver$ext
Bram Moolenaar49222be2015-12-11 18:11:30 +01001782 if test -f "$try/lib$trylib" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001783 AC_MSG_RESULT($try/lib$trylib)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001784 TCL_LIBS="-L\"$try\" -ltcl$ver -ldl -lm"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001785 if test "`(uname) 2>/dev/null`" = SunOS &&
1786 uname -r | grep '^5' >/dev/null; then
1787 TCL_LIBS="$TCL_LIBS -R $try"
1788 fi
1789 break 3
1790 fi
1791 done
1792 done
1793 done
1794 if test -z "$TCL_LIBS"; then
1795 AC_MSG_RESULT(<not found>)
1796 SKIP_TCL=YES
1797 fi
1798 fi
1799 if test -z "$SKIP_TCL"; then
1800 AC_DEFINE(FEAT_TCL)
1801 TCL_SRC=if_tcl.c
1802 TCL_OBJ=objects/if_tcl.o
1803 TCL_PRO=if_tcl.pro
1804 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1805 fi
1806 fi
1807 else
1808 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1809 fi
1810 fi
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001811 if test "$enable_tclinterp" = "dynamic"; then
1812 if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then
1813 AC_DEFINE(DYNAMIC_TCL)
1814 TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS"
1815 fi
1816 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001817 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1818 AC_MSG_ERROR([could not configure Tcl])
1819 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001820fi
1821AC_SUBST(TCL_SRC)
1822AC_SUBST(TCL_OBJ)
1823AC_SUBST(TCL_PRO)
1824AC_SUBST(TCL_CFLAGS)
1825AC_SUBST(TCL_LIBS)
1826
1827AC_MSG_CHECKING(--enable-rubyinterp argument)
1828AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001829 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001830 [enable_rubyinterp="no"])
1831AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001832if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001833 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1834 AC_MSG_ERROR([cannot use Ruby with tiny or small features])
1835 fi
1836
Bram Moolenaar165641d2010-02-17 16:23:09 +01001837 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001838 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001839 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1840 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1841 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001842 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001843 if test "X$vi_cv_path_ruby" != "X"; then
1844 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001845 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 +00001846 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001847 AC_MSG_CHECKING(Ruby rbconfig)
1848 ruby_rbconfig="RbConfig"
1849 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1850 ruby_rbconfig="Config"
1851 fi
1852 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001853 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001854 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 +00001855 if test "X$rubyhdrdir" != "X"; then
1856 AC_MSG_RESULT($rubyhdrdir)
1857 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001858 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1859 if test -d "$rubyarchdir"; then
1860 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001861 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001862 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001863 if test "X$rubyversion" = "X"; then
1864 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1865 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001866 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001867 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001868 if test "X$rubylibs" != "X"; then
1869 RUBY_LIBS="$rubylibs"
1870 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001871 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1872 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001873 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001874 if test -f "$rubylibdir/$librubya"; then
1875 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001876 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1877 elif test "$librubyarg" = "libruby.a"; then
1878 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1879 librubyarg="-lruby"
1880 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001881 fi
1882
1883 if test "X$librubyarg" != "X"; then
1884 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1885 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001886 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001887 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001888 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1889 dnl be included if requested by passing --with-mac-arch to
1890 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001891 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001892 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001893 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001894 LDFLAGS="$rubyldflags $LDFLAGS"
1895 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001896 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001897 fi
1898 RUBY_SRC="if_ruby.c"
1899 RUBY_OBJ="objects/if_ruby.o"
1900 RUBY_PRO="if_ruby.pro"
1901 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001902 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001903 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001904 AC_DEFINE(DYNAMIC_RUBY)
1905 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1906 RUBY_LIBS=
1907 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001908 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001909 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001910 fi
1911 else
1912 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1913 fi
1914 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001915
1916 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1917 AC_MSG_ERROR([could not configure Ruby])
1918 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001919fi
1920AC_SUBST(RUBY_SRC)
1921AC_SUBST(RUBY_OBJ)
1922AC_SUBST(RUBY_PRO)
1923AC_SUBST(RUBY_CFLAGS)
1924AC_SUBST(RUBY_LIBS)
1925
1926AC_MSG_CHECKING(--enable-cscope argument)
1927AC_ARG_ENABLE(cscope,
1928 [ --enable-cscope Include cscope interface.], ,
1929 [enable_cscope="no"])
1930AC_MSG_RESULT($enable_cscope)
1931if test "$enable_cscope" = "yes"; then
1932 AC_DEFINE(FEAT_CSCOPE)
1933fi
1934
1935AC_MSG_CHECKING(--enable-workshop argument)
1936AC_ARG_ENABLE(workshop,
1937 [ --enable-workshop Include Sun Visual Workshop support.], ,
1938 [enable_workshop="no"])
1939AC_MSG_RESULT($enable_workshop)
1940if test "$enable_workshop" = "yes"; then
1941 AC_DEFINE(FEAT_SUN_WORKSHOP)
1942 WORKSHOP_SRC="workshop.c integration.c"
1943 AC_SUBST(WORKSHOP_SRC)
1944 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1945 AC_SUBST(WORKSHOP_OBJ)
1946 if test "${enable_gui-xxx}" = xxx; then
1947 enable_gui=motif
1948 fi
1949fi
1950
1951AC_MSG_CHECKING(--disable-netbeans argument)
1952AC_ARG_ENABLE(netbeans,
1953 [ --disable-netbeans Disable NetBeans integration support.],
1954 , [enable_netbeans="yes"])
1955if test "$enable_netbeans" = "yes"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001956 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1957 AC_MSG_RESULT([cannot use NetBeans with tiny or small features])
1958 enable_netbeans="no"
1959 else
1960 AC_MSG_RESULT(no)
1961 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01001962else
1963 AC_MSG_RESULT(yes)
1964fi
1965
1966AC_MSG_CHECKING(--disable-channel argument)
1967AC_ARG_ENABLE(channel,
Bram Moolenaar8008b632017-07-18 21:33:20 +02001968 [ --disable-channel Disable process communication support.],
Bram Moolenaare0874f82016-01-24 20:36:41 +01001969 , [enable_channel="yes"])
1970if test "$enable_channel" = "yes"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001971 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1972 AC_MSG_RESULT([cannot use channels with tiny or small features])
1973 enable_channel="no"
1974 else
1975 AC_MSG_RESULT(no)
1976 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01001977else
1978 if test "$enable_netbeans" = "yes"; then
Bram Moolenaar16435482016-01-24 21:31:54 +01001979 AC_MSG_RESULT([yes, netbeans also disabled])
Bram Moolenaare0874f82016-01-24 20:36:41 +01001980 enable_netbeans="no"
1981 else
1982 AC_MSG_RESULT(yes)
1983 fi
1984fi
1985
Bram Moolenaar16435482016-01-24 21:31:54 +01001986if test "$enable_channel" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001987 dnl On Solaris we need the socket and nsl library.
1988 AC_CHECK_LIB(socket, socket)
1989 AC_CHECK_LIB(nsl, gethostbyname)
Bram Moolenaare0874f82016-01-24 20:36:41 +01001990 AC_MSG_CHECKING(whether compiling with process communication is possible)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001991 AC_TRY_LINK([
1992#include <stdio.h>
1993#include <stdlib.h>
1994#include <stdarg.h>
1995#include <fcntl.h>
1996#include <netdb.h>
1997#include <netinet/in.h>
1998#include <errno.h>
1999#include <sys/types.h>
2000#include <sys/socket.h>
2001 /* Check bitfields */
2002 struct nbbuf {
2003 unsigned int initDone:1;
Bram Moolenaar63de19e2016-12-09 20:11:26 +01002004 unsigned short signmaplen;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002005 };
2006 ], [
2007 /* Check creating a socket. */
2008 struct sockaddr_in server;
2009 (void)socket(AF_INET, SOCK_STREAM, 0);
2010 (void)htons(100);
2011 (void)gethostbyname("microsoft.com");
2012 if (errno == ECONNREFUSED)
2013 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
2014 ],
2015 AC_MSG_RESULT(yes),
Bram Moolenaare0874f82016-01-24 20:36:41 +01002016 AC_MSG_RESULT(no); enable_netbeans="no"; enable_channel="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002017fi
2018if test "$enable_netbeans" = "yes"; then
2019 AC_DEFINE(FEAT_NETBEANS_INTG)
2020 NETBEANS_SRC="netbeans.c"
2021 AC_SUBST(NETBEANS_SRC)
2022 NETBEANS_OBJ="objects/netbeans.o"
2023 AC_SUBST(NETBEANS_OBJ)
2024fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002025if test "$enable_channel" = "yes"; then
Bram Moolenaar509ce2a2016-03-11 22:52:15 +01002026 AC_DEFINE(FEAT_JOB_CHANNEL)
Bram Moolenaare0874f82016-01-24 20:36:41 +01002027 CHANNEL_SRC="channel.c"
2028 AC_SUBST(CHANNEL_SRC)
2029 CHANNEL_OBJ="objects/channel.o"
2030 AC_SUBST(CHANNEL_OBJ)
2031fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002032
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002033AC_MSG_CHECKING(--enable-terminal argument)
2034AC_ARG_ENABLE(terminal,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002035 [ --enable-terminal Enable terminal emulation support.],
Bram Moolenaar595a4022017-09-03 19:15:57 +02002036 [enable_terminal="yes"], [enable_terminal="auto"])
2037if test "$enable_terminal" = "yes" || test "$enable_terminal" = "auto" -a "x$features" = "xhuge" ; then
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002038 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
2039 AC_MSG_RESULT([cannot use terminal emulator with tiny or small features])
2040 enable_terminal="no"
2041 else
Bram Moolenaar595a4022017-09-03 19:15:57 +02002042 if test "$enable_terminal" = "auto"; then
2043 enable_terminal="yes"
2044 AC_MSG_RESULT(defaulting to yes)
2045 else
2046 AC_MSG_RESULT(yes)
2047 fi
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002048 fi
2049else
Bram Moolenaar595a4022017-09-03 19:15:57 +02002050 if test "$enable_terminal" = "auto"; then
2051 enable_terminal="no"
2052 AC_MSG_RESULT(defaulting to no)
2053 else
2054 AC_MSG_RESULT(no)
2055 fi
Bram Moolenaare4f25e42017-07-07 11:54:15 +02002056fi
2057if test "$enable_terminal" = "yes"; then
2058 AC_DEFINE(FEAT_TERMINAL)
2059 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"
2060 AC_SUBST(TERM_SRC)
2061 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"
2062 AC_SUBST(TERM_OBJ)
2063fi
2064
Bram Moolenaar071d4272004-06-13 20:20:40 +00002065AC_MSG_CHECKING(--enable-multibyte argument)
2066AC_ARG_ENABLE(multibyte,
2067 [ --enable-multibyte Include multibyte editing support.], ,
2068 [enable_multibyte="no"])
2069AC_MSG_RESULT($enable_multibyte)
2070if test "$enable_multibyte" = "yes"; then
2071 AC_DEFINE(FEAT_MBYTE)
2072fi
2073
2074AC_MSG_CHECKING(--enable-hangulinput argument)
2075AC_ARG_ENABLE(hangulinput,
2076 [ --enable-hangulinput Include Hangul input support.], ,
2077 [enable_hangulinput="no"])
2078AC_MSG_RESULT($enable_hangulinput)
2079
2080AC_MSG_CHECKING(--enable-xim argument)
2081AC_ARG_ENABLE(xim,
2082 [ --enable-xim Include XIM input support.],
2083 AC_MSG_RESULT($enable_xim),
2084 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002085
2086AC_MSG_CHECKING(--enable-fontset argument)
2087AC_ARG_ENABLE(fontset,
2088 [ --enable-fontset Include X fontset output support.], ,
2089 [enable_fontset="no"])
2090AC_MSG_RESULT($enable_fontset)
2091dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
2092
2093test -z "$with_x" && with_x=yes
2094test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
2095if test "$with_x" = no; then
2096 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
2097else
2098 dnl Do this check early, so that its failure can override user requests.
2099
2100 AC_PATH_PROG(xmkmfpath, xmkmf)
2101
2102 AC_PATH_XTRA
2103
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002104 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00002105 dnl be compiled with a special option.
2106 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002107 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002108 CFLAGS="$CFLAGS -W c,dll"
2109 LDFLAGS="$LDFLAGS -W l,dll"
2110 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
2111 fi
2112
2113 dnl On my HPUX system the X include dir is found, but the lib dir not.
2114 dnl This is a desparate try to fix this.
2115
2116 if test -d "$x_includes" && test ! -d "$x_libraries"; then
2117 x_libraries=`echo "$x_includes" | sed s/include/lib/`
2118 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
2119 X_LIBS="$X_LIBS -L$x_libraries"
2120 if test "`(uname) 2>/dev/null`" = SunOS &&
2121 uname -r | grep '^5' >/dev/null; then
2122 X_LIBS="$X_LIBS -R $x_libraries"
2123 fi
2124 fi
2125
2126 if test -d "$x_libraries" && test ! -d "$x_includes"; then
2127 x_includes=`echo "$x_libraries" | sed s/lib/include/`
2128 AC_MSG_RESULT(Corrected X includes to $x_includes)
2129 X_CFLAGS="$X_CFLAGS -I$x_includes"
2130 fi
2131
2132 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
2133 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
2134 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
2135 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
2136 dnl Same for "-R/usr/lib ".
2137 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
2138
2139
2140 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002141 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
2142 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002143 AC_MSG_CHECKING(if X11 header files can be found)
2144 cflags_save=$CFLAGS
2145 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002146 AC_TRY_COMPILE([#include <X11/Xlib.h>
2147#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00002148 AC_MSG_RESULT(yes),
2149 AC_MSG_RESULT(no); no_x=yes)
2150 CFLAGS=$cflags_save
2151
2152 if test "${no_x-no}" = yes; then
2153 with_x=no
2154 else
2155 AC_DEFINE(HAVE_X11)
2156 X_LIB="-lXt -lX11";
2157 AC_SUBST(X_LIB)
2158
2159 ac_save_LDFLAGS="$LDFLAGS"
2160 LDFLAGS="-L$x_libraries $LDFLAGS"
2161
2162 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2163 dnl For HP-UX 10.20 it must be before -lSM -lICE
2164 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2165 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2166
2167 dnl Some systems need -lnsl -lsocket when testing for ICE.
2168 dnl The check above doesn't do this, try here (again). Also needed to get
2169 dnl them after Xdmcp. link.sh will remove them when not needed.
2170 dnl Check for other function than above to avoid the cached value
2171 AC_CHECK_LIB(ICE, IceOpenConnection,
2172 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2173
2174 dnl Check for -lXpm (needed for some versions of Motif)
2175 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2176 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2177 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2178
2179 dnl Check that the X11 header files don't use implicit declarations
2180 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2181 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002182 dnl -Werror is GCC only, others like Solaris Studio might not like it
2183 if test "$GCC" = yes; then
2184 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2185 else
2186 CFLAGS="$CFLAGS $X_CFLAGS"
2187 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002188 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2189 AC_MSG_RESULT(no),
2190 CFLAGS="$CFLAGS -Wno-implicit-int"
2191 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2192 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2193 AC_MSG_RESULT(test failed)
2194 )
2195 )
2196 CFLAGS=$cflags_save
2197
2198 LDFLAGS="$ac_save_LDFLAGS"
2199
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002200 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2201 AC_CACHE_VAL(ac_cv_small_wchar_t,
2202 [AC_TRY_RUN([
2203#include <X11/Xlib.h>
2204#if STDC_HEADERS
2205# include <stdlib.h>
2206# include <stddef.h>
2207#endif
2208 main()
2209 {
2210 if (sizeof(wchar_t) <= 2)
2211 exit(1);
2212 exit(0);
2213 }],
2214 ac_cv_small_wchar_t="no",
2215 ac_cv_small_wchar_t="yes",
2216 AC_MSG_ERROR(failed to compile test program))])
2217 AC_MSG_RESULT($ac_cv_small_wchar_t)
2218 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2219 AC_DEFINE(SMALL_WCHAR_T)
2220 fi
2221
Bram Moolenaar071d4272004-06-13 20:20:40 +00002222 fi
2223fi
2224
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002225test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002226
2227AC_MSG_CHECKING(--enable-gui argument)
2228AC_ARG_ENABLE(gui,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002229 [ --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 +00002230
2231dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2232dnl Do not use character classes for portability with old tools.
2233enable_gui_canon=`echo "_$enable_gui" | \
2234 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2235
2236dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002237SKIP_GTK2=YES
Bram Moolenaar1858a842016-02-23 22:30:31 +01002238SKIP_GTK3=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002239SKIP_GNOME=YES
2240SKIP_MOTIF=YES
2241SKIP_ATHENA=YES
2242SKIP_NEXTAW=YES
2243SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002244SKIP_CARBON=YES
2245GUITYPE=NONE
2246
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002247if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002248 SKIP_PHOTON=
2249 case "$enable_gui_canon" in
2250 no) AC_MSG_RESULT(no GUI support)
2251 SKIP_PHOTON=YES ;;
2252 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2253 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2254 photon) AC_MSG_RESULT(Photon GUI support) ;;
2255 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2256 SKIP_PHOTON=YES ;;
2257 esac
2258
2259elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2260 SKIP_CARBON=
2261 case "$enable_gui_canon" in
2262 no) AC_MSG_RESULT(no GUI support)
2263 SKIP_CARBON=YES ;;
2264 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002265 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2266 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002267 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2268 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2269 SKIP_CARBON=YES ;;
2270 esac
2271
2272else
2273
Bram Moolenaar071d4272004-06-13 20:20:40 +00002274 case "$enable_gui_canon" in
2275 no|none) AC_MSG_RESULT(no GUI support) ;;
2276 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002277 SKIP_GTK2=
2278 SKIP_GNOME=
2279 SKIP_MOTIF=
2280 SKIP_ATHENA=
2281 SKIP_NEXTAW=
2282 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002283 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002284 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002285 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2286 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002287 SKIP_GTK2=;;
Bram Moolenaar98921892016-02-23 17:14:37 +01002288 gtk3) AC_MSG_RESULT(GTK+ 3.x GUI support)
2289 SKIP_GTK3=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002290 motif) AC_MSG_RESULT(Motif GUI support)
2291 SKIP_MOTIF=;;
2292 athena) AC_MSG_RESULT(Athena GUI support)
2293 SKIP_ATHENA=;;
2294 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2295 SKIP_NEXTAW=;;
2296 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2297 esac
2298
2299fi
2300
Bram Moolenaar071d4272004-06-13 20:20:40 +00002301if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2302 -a "$enable_gui_canon" != "gnome2"; then
2303 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2304 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002305 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002306 , enable_gtk2_check="yes")
2307 AC_MSG_RESULT($enable_gtk2_check)
2308 if test "x$enable_gtk2_check" = "xno"; then
2309 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002310 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002311 fi
2312fi
2313
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002314if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002315 AC_MSG_CHECKING(whether or not to look for GNOME)
2316 AC_ARG_ENABLE(gnome-check,
2317 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2318 , enable_gnome_check="no")
2319 AC_MSG_RESULT($enable_gnome_check)
2320 if test "x$enable_gnome_check" = "xno"; then
2321 SKIP_GNOME=YES
2322 fi
2323fi
2324
Bram Moolenaar98921892016-02-23 17:14:37 +01002325if test "x$SKIP_GTK3" != "xYES" -a "$enable_gui_canon" != "gtk3"; then
2326 AC_MSG_CHECKING(whether or not to look for GTK+ 3)
2327 AC_ARG_ENABLE(gtk3-check,
2328 [ --enable-gtk3-check If auto-select GUI, check for GTK+ 3 [default=yes]],
2329 , enable_gtk3_check="yes")
2330 AC_MSG_RESULT($enable_gtk3_check)
2331 if test "x$enable_gtk3_check" = "xno"; then
2332 SKIP_GTK3=YES
2333 fi
2334fi
2335
Bram Moolenaar071d4272004-06-13 20:20:40 +00002336if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2337 AC_MSG_CHECKING(whether or not to look for Motif)
2338 AC_ARG_ENABLE(motif-check,
2339 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2340 , enable_motif_check="yes")
2341 AC_MSG_RESULT($enable_motif_check)
2342 if test "x$enable_motif_check" = "xno"; then
2343 SKIP_MOTIF=YES
2344 fi
2345fi
2346
2347if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2348 AC_MSG_CHECKING(whether or not to look for Athena)
2349 AC_ARG_ENABLE(athena-check,
2350 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2351 , enable_athena_check="yes")
2352 AC_MSG_RESULT($enable_athena_check)
2353 if test "x$enable_athena_check" = "xno"; then
2354 SKIP_ATHENA=YES
2355 fi
2356fi
2357
2358if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2359 AC_MSG_CHECKING(whether or not to look for neXtaw)
2360 AC_ARG_ENABLE(nextaw-check,
2361 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2362 , enable_nextaw_check="yes")
2363 AC_MSG_RESULT($enable_nextaw_check);
2364 if test "x$enable_nextaw_check" = "xno"; then
2365 SKIP_NEXTAW=YES
2366 fi
2367fi
2368
2369if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2370 AC_MSG_CHECKING(whether or not to look for Carbon)
2371 AC_ARG_ENABLE(carbon-check,
2372 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2373 , enable_carbon_check="yes")
2374 AC_MSG_RESULT($enable_carbon_check);
2375 if test "x$enable_carbon_check" = "xno"; then
2376 SKIP_CARBON=YES
2377 fi
2378fi
2379
Bram Moolenaar843ee412004-06-30 16:16:41 +00002380
Bram Moolenaar071d4272004-06-13 20:20:40 +00002381if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2382 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002383 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002384 AC_MSG_RESULT(yes);
2385 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002386 if test "$VIMNAME" = "vim"; then
2387 VIMNAME=Vim
2388 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002389
Bram Moolenaar164fca32010-07-14 13:58:07 +02002390 if test "x$MACARCH" = "xboth"; then
2391 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2392 else
2393 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2394 fi
2395
Bram Moolenaar14716812006-05-04 21:54:08 +00002396 dnl Default install directory is not /usr/local
2397 if test x$prefix = xNONE; then
2398 prefix=/Applications
2399 fi
2400
2401 dnl Sorry for the hard coded default
2402 datadir='${prefix}/Vim.app/Contents/Resources'
2403
Bram Moolenaar071d4272004-06-13 20:20:40 +00002404 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002405 SKIP_GTK2=YES;
2406 SKIP_GNOME=YES;
2407 SKIP_MOTIF=YES;
2408 SKIP_ATHENA=YES;
2409 SKIP_NEXTAW=YES;
2410 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002411 SKIP_CARBON=YES
2412fi
2413
Bram Moolenaar071d4272004-06-13 20:20:40 +00002414dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002415dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002416dnl
2417dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002418dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002419dnl
2420AC_DEFUN(AM_PATH_GTK,
2421[
2422 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2423 {
Bram Moolenaar071d4272004-06-13 20:20:40 +00002424 no_gtk=""
2425 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2426 && $PKG_CONFIG --exists gtk+-2.0; then
2427 {
Bram Moolenaar98921892016-02-23 17:14:37 +01002428 min_gtk_version=ifelse([$1], ,2.2.0,$1)
2429 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002430 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2431 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2432 dnl something like that.
2433 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002434 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002435 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2436 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2437 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2438 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2439 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2440 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2441 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2442 }
Bram Moolenaar98921892016-02-23 17:14:37 +01002443 elif (test "X$SKIP_GTK3" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2444 && $PKG_CONFIG --exists gtk+-3.0; then
2445 {
2446 min_gtk_version=ifelse([$1], ,3.0.0,$1)
2447 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2448
2449 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-3.0`
2450 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-3.0`
2451 GTK_LIBS=`$PKG_CONFIG --libs gtk+-3.0`
2452 gtk_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2453 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2454 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2455 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2456 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2457 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2458 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002459 else
2460 no_gtk=yes
2461 fi
2462
2463 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2464 {
2465 ac_save_CFLAGS="$CFLAGS"
2466 ac_save_LIBS="$LIBS"
2467 CFLAGS="$CFLAGS $GTK_CFLAGS"
2468 LIBS="$LIBS $GTK_LIBS"
2469
2470 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002471 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002472 dnl
2473 rm -f conf.gtktest
2474 AC_TRY_RUN([
2475#include <gtk/gtk.h>
2476#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002477#if STDC_HEADERS
2478# include <stdlib.h>
2479# include <stddef.h>
2480#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002481
2482int
2483main ()
2484{
2485int major, minor, micro;
2486char *tmp_version;
2487
2488system ("touch conf.gtktest");
2489
2490/* HP/UX 9 (%@#!) writes to sscanf strings */
2491tmp_version = g_strdup("$min_gtk_version");
2492if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2493 printf("%s, bad version string\n", "$min_gtk_version");
2494 exit(1);
2495 }
2496
2497if ((gtk_major_version > major) ||
2498 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2499 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2500 (gtk_micro_version >= micro)))
2501{
2502 return 0;
2503}
2504return 1;
2505}
2506],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2507 CFLAGS="$ac_save_CFLAGS"
2508 LIBS="$ac_save_LIBS"
2509 }
2510 fi
2511 if test "x$no_gtk" = x ; then
2512 if test "x$enable_gtktest" = "xyes"; then
2513 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2514 else
2515 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2516 fi
2517 ifelse([$2], , :, [$2])
2518 else
2519 {
2520 AC_MSG_RESULT(no)
2521 GTK_CFLAGS=""
2522 GTK_LIBS=""
2523 ifelse([$3], , :, [$3])
2524 }
2525 fi
2526 }
2527 else
2528 GTK_CFLAGS=""
2529 GTK_LIBS=""
2530 ifelse([$3], , :, [$3])
2531 fi
2532 AC_SUBST(GTK_CFLAGS)
2533 AC_SUBST(GTK_LIBS)
2534 rm -f conf.gtktest
2535])
2536
2537dnl ---------------------------------------------------------------------------
2538dnl gnome
2539dnl ---------------------------------------------------------------------------
2540AC_DEFUN([GNOME_INIT_HOOK],
2541[
2542 AC_SUBST(GNOME_LIBS)
2543 AC_SUBST(GNOME_LIBDIR)
2544 AC_SUBST(GNOME_INCLUDEDIR)
2545
2546 AC_ARG_WITH(gnome-includes,
2547 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2548 [CFLAGS="$CFLAGS -I$withval"]
2549 )
2550
2551 AC_ARG_WITH(gnome-libs,
2552 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2553 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2554 )
2555
2556 AC_ARG_WITH(gnome,
2557 [ --with-gnome Specify prefix for GNOME files],
2558 if test x$withval = xyes; then
2559 want_gnome=yes
2560 ifelse([$1], [], :, [$1])
2561 else
2562 if test "x$withval" = xno; then
2563 want_gnome=no
2564 else
2565 want_gnome=yes
2566 LDFLAGS="$LDFLAGS -L$withval/lib"
2567 CFLAGS="$CFLAGS -I$withval/include"
2568 gnome_prefix=$withval/lib
2569 fi
2570 fi,
2571 want_gnome=yes)
2572
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002573 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002574 {
2575 AC_MSG_CHECKING(for libgnomeui-2.0)
2576 if $PKG_CONFIG --exists libgnomeui-2.0; then
2577 AC_MSG_RESULT(yes)
2578 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2579 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2580 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002581
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002582 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2583 dnl This might not be the right way but it works for me...
2584 AC_MSG_CHECKING(for FreeBSD)
2585 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2586 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002587 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002588 GNOME_LIBS="$GNOME_LIBS -pthread"
2589 else
2590 AC_MSG_RESULT(no)
2591 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002592 $1
2593 else
2594 AC_MSG_RESULT(not found)
2595 if test "x$2" = xfail; then
2596 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2597 fi
2598 fi
2599 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002600 fi
2601])
2602
2603AC_DEFUN([GNOME_INIT],[
2604 GNOME_INIT_HOOK([],fail)
2605])
2606
2607
2608dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002609dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002610dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002611if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002612
2613 AC_MSG_CHECKING(--disable-gtktest argument)
2614 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2615 , enable_gtktest=yes)
2616 if test "x$enable_gtktest" = "xyes" ; then
2617 AC_MSG_RESULT(gtk test enabled)
2618 else
2619 AC_MSG_RESULT(gtk test disabled)
2620 fi
2621
Bram Moolenaar071d4272004-06-13 20:20:40 +00002622 if test "X$PKG_CONFIG" = "X"; then
2623 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2624 fi
2625
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002626 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002627 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2628 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002629 AM_PATH_GTK(2.2.0,
2630 [GUI_LIB_LOC="$GTK_LIBDIR"
2631 GTK_LIBNAME="$GTK_LIBS"
2632 GUI_INC_LOC="$GTK_CFLAGS"], )
2633 if test "x$GTK_CFLAGS" != "x"; then
Bram Moolenaar98921892016-02-23 17:14:37 +01002634 SKIP_GTK3=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002635 SKIP_ATHENA=YES
2636 SKIP_NEXTAW=YES
2637 SKIP_MOTIF=YES
2638 GUITYPE=GTK
2639 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002640 fi
2641 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002642 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002643 dnl
2644 dnl if GTK exists, then check for GNOME.
2645 dnl
2646 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002647 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002648 GNOME_INIT_HOOK([have_gnome=yes])
2649 if test "x$have_gnome" = xyes ; then
2650 AC_DEFINE(FEAT_GUI_GNOME)
2651 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2652 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002653 fi
2654 }
2655 fi
2656 fi
2657fi
2658
Bram Moolenaar98921892016-02-23 17:14:37 +01002659
2660dnl ---------------------------------------------------------------------------
2661dnl Check for GTK3.
2662dnl ---------------------------------------------------------------------------
2663if test -z "$SKIP_GTK3"; then
2664
2665 AC_MSG_CHECKING(--disable-gtktest argument)
2666 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2667 , enable_gtktest=yes)
2668 if test "x$enable_gtktest" = "xyes" ; then
2669 AC_MSG_RESULT(gtk test enabled)
2670 else
2671 AC_MSG_RESULT(gtk test disabled)
2672 fi
2673
2674 if test "X$PKG_CONFIG" = "X"; then
2675 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2676 fi
2677
2678 if test "x$PKG_CONFIG" != "xno"; then
2679 AM_PATH_GTK(3.0.0,
2680 [GUI_LIB_LOC="$GTK_LIBDIR"
2681 GTK_LIBNAME="$GTK_LIBS"
2682 GUI_INC_LOC="$GTK_CFLAGS"], )
2683 if test "x$GTK_CFLAGS" != "x"; then
2684 SKIP_GTK2=YES
2685 SKIP_GNOME=YES
2686 SKIP_ATHENA=YES
2687 SKIP_NEXTAW=YES
2688 SKIP_MOTIF=YES
2689 GUITYPE=GTK
2690 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar98921892016-02-23 17:14:37 +01002691 AC_DEFINE(USE_GTK3)
2692 fi
2693 fi
2694fi
2695
Bram Moolenaard2e03f02016-01-02 22:46:36 +01002696dnl Check the version of Gdk-Pixbuf. If the version is 2.31 or later and
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002697dnl glib-compile-resources is found in PATH, use GResource.
2698if test "x$GUITYPE" = "xGTK"; then
2699 AC_MSG_CHECKING([version of Gdk-Pixbuf])
2700 gdk_pixbuf_version=`$PKG_CONFIG --modversion gdk-pixbuf-2.0`
2701 if test "x$gdk_pixbuf_version" != x ; then
2702 gdk_pixbuf_version_minor=`echo $gdk_pixbuf_version | \
2703 sed -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/'`
2704 if test "x$gdk_pixbuf_version_minor" != x -a \
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002705 $gdk_pixbuf_version_minor -ge 31 ; then
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002706 AC_MSG_RESULT([OK.])
2707 AC_PATH_PROG(GLIB_COMPILE_RESOURCES,[glib-compile-resources],no)
2708 AC_MSG_CHECKING([glib-compile-resources])
2709 if test "x$GLIB_COMPILE_RESOURCES" = xno ; then
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002710 GLIB_COMPILE_RESOURCES=""
2711 AC_MSG_RESULT([cannot be found in PATH.])
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002712 else
2713 AC_MSG_RESULT([usable.])
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002714 AC_DEFINE(USE_GRESOURCE)
2715 GRESOURCE_SRC="auto/gui_gtk_gresources.c"
2716 GRESOURCE_OBJ="objects/gui_gtk_gresources.o"
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002717 fi
2718 else
2719 AC_MSG_RESULT([not usable.])
2720 fi
2721 else
2722 AC_MSG_RESULT([cannot obtain from pkg_config.])
2723 fi
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002724
2725 AC_MSG_CHECKING([--disable-icon-cache-update argument])
2726 AC_ARG_ENABLE(icon_cache_update,
2727 [ --disable-icon-cache-update update disabled],
2728 [],
2729 [enable_icon_cache_update="yes"])
2730 if test "$enable_icon_cache_update" = "yes"; then
2731 AC_MSG_RESULT([not set])
2732 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE,[gtk-update-icon-cache],no)
2733 if test "x$GTK_UPDATE_ICON_CACHE" = "xno" ; then
2734 AC_MSG_RESULT([not found in PATH.])
2735 fi
2736 else
2737 AC_MSG_RESULT([update disabled])
2738 fi
2739
2740 AC_MSG_CHECKING([--disable-desktop-database-update argument])
2741 AC_ARG_ENABLE(desktop_database_update,
2742 [ --disable-desktop-database-update update disabled],
2743 [],
2744 [enable_desktop_database_update="yes"])
2745 if test "$enable_desktop_database_update" = "yes"; then
2746 AC_MSG_RESULT([not set])
2747 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE,[update-desktop-database],no)
2748 if test "x$UPDATE_DESKTOP_DATABASE" = "xno" ; then
2749 AC_MSG_RESULT([not found in PATH.])
2750 fi
2751 else
2752 AC_MSG_RESULT([update disabled])
2753 fi
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002754fi
2755AC_SUBST(GLIB_COMPILE_RESOURCES)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002756AC_SUBST(GRESOURCE_SRC)
2757AC_SUBST(GRESOURCE_OBJ)
Bram Moolenaar4adfaab2016-04-21 18:20:11 +02002758AC_SUBST(GTK_UPDATE_ICON_CACHE)
2759AC_SUBST(UPDATE_DESKTOP_DATABASE)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002760
Bram Moolenaar071d4272004-06-13 20:20:40 +00002761dnl Check for Motif include files location.
2762dnl The LAST one found is used, this makes the highest version to be used,
2763dnl e.g. when Motif1.2 and Motif2.0 are both present.
2764
2765if test -z "$SKIP_MOTIF"; then
2766 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"
2767 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2768 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2769
2770 AC_MSG_CHECKING(for location of Motif GUI includes)
2771 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2772 GUI_INC_LOC=
2773 for try in $gui_includes; do
2774 if test -f "$try/Xm/Xm.h"; then
2775 GUI_INC_LOC=$try
2776 fi
2777 done
2778 if test -n "$GUI_INC_LOC"; then
2779 if test "$GUI_INC_LOC" = /usr/include; then
2780 GUI_INC_LOC=
2781 AC_MSG_RESULT(in default path)
2782 else
2783 AC_MSG_RESULT($GUI_INC_LOC)
2784 fi
2785 else
2786 AC_MSG_RESULT(<not found>)
2787 SKIP_MOTIF=YES
2788 fi
2789fi
2790
2791dnl Check for Motif library files location. In the same order as the include
2792dnl files, to avoid a mixup if several versions are present
2793
2794if test -z "$SKIP_MOTIF"; then
2795 AC_MSG_CHECKING(--with-motif-lib argument)
2796 AC_ARG_WITH(motif-lib,
Bram Moolenaar8008b632017-07-18 21:33:20 +02002797 [ --with-motif-lib=STRING Library for Motif ],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002798 [ MOTIF_LIBNAME="${withval}" ] )
2799
2800 if test -n "$MOTIF_LIBNAME"; then
2801 AC_MSG_RESULT($MOTIF_LIBNAME)
2802 GUI_LIB_LOC=
2803 else
2804 AC_MSG_RESULT(no)
2805
2806 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2807 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2808
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002809 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2810 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002811 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002812 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 +00002813 GUI_LIB_LOC=
2814 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002815 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002816 if test -f "$libtry"; then
2817 GUI_LIB_LOC=$try
2818 fi
2819 done
2820 done
2821 if test -n "$GUI_LIB_LOC"; then
2822 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002823 if test "$GUI_LIB_LOC" = /usr/lib \
2824 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2825 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002826 GUI_LIB_LOC=
2827 AC_MSG_RESULT(in default path)
2828 else
2829 if test -n "$GUI_LIB_LOC"; then
2830 AC_MSG_RESULT($GUI_LIB_LOC)
2831 if test "`(uname) 2>/dev/null`" = SunOS &&
2832 uname -r | grep '^5' >/dev/null; then
2833 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2834 fi
2835 fi
2836 fi
2837 MOTIF_LIBNAME=-lXm
2838 else
2839 AC_MSG_RESULT(<not found>)
2840 SKIP_MOTIF=YES
2841 fi
2842 fi
2843fi
2844
2845if test -z "$SKIP_MOTIF"; then
2846 SKIP_ATHENA=YES
2847 SKIP_NEXTAW=YES
2848 GUITYPE=MOTIF
2849 AC_SUBST(MOTIF_LIBNAME)
2850fi
2851
2852dnl Check if the Athena files can be found
2853
2854GUI_X_LIBS=
2855
2856if test -z "$SKIP_ATHENA"; then
2857 AC_MSG_CHECKING(if Athena header files can be found)
2858 cflags_save=$CFLAGS
2859 CFLAGS="$CFLAGS $X_CFLAGS"
2860 AC_TRY_COMPILE([
2861#include <X11/Intrinsic.h>
2862#include <X11/Xaw/Paned.h>], ,
2863 AC_MSG_RESULT(yes),
2864 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2865 CFLAGS=$cflags_save
2866fi
2867
2868if test -z "$SKIP_ATHENA"; then
2869 GUITYPE=ATHENA
2870fi
2871
2872if test -z "$SKIP_NEXTAW"; then
2873 AC_MSG_CHECKING(if neXtaw header files can be found)
2874 cflags_save=$CFLAGS
2875 CFLAGS="$CFLAGS $X_CFLAGS"
2876 AC_TRY_COMPILE([
2877#include <X11/Intrinsic.h>
2878#include <X11/neXtaw/Paned.h>], ,
2879 AC_MSG_RESULT(yes),
2880 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2881 CFLAGS=$cflags_save
2882fi
2883
2884if test -z "$SKIP_NEXTAW"; then
2885 GUITYPE=NEXTAW
2886fi
2887
2888if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2889 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2890 dnl Avoid adding it when it twice
2891 if test -n "$GUI_INC_LOC"; then
2892 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2893 fi
2894 if test -n "$GUI_LIB_LOC"; then
2895 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2896 fi
2897
2898 dnl Check for -lXext and then for -lXmu
2899 ldflags_save=$LDFLAGS
2900 LDFLAGS="$X_LIBS $LDFLAGS"
2901 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2902 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2903 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2904 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2905 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2906 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2907 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2908 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2909 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2910 if test -z "$SKIP_MOTIF"; then
2911 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2912 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2913 fi
2914 LDFLAGS=$ldflags_save
2915
2916 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2917 AC_MSG_CHECKING(for extra X11 defines)
2918 NARROW_PROTO=
2919 rm -fr conftestdir
2920 if mkdir conftestdir; then
2921 cd conftestdir
2922 cat > Imakefile <<'EOF'
2923acfindx:
2924 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2925EOF
2926 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2927 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2928 fi
2929 cd ..
2930 rm -fr conftestdir
2931 fi
2932 if test -z "$NARROW_PROTO"; then
2933 AC_MSG_RESULT(no)
2934 else
2935 AC_MSG_RESULT($NARROW_PROTO)
2936 fi
2937 AC_SUBST(NARROW_PROTO)
2938fi
2939
2940dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2941dnl use the X11 include path
2942if test "$enable_xsmp" = "yes"; then
2943 cppflags_save=$CPPFLAGS
2944 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2945 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2946 CPPFLAGS=$cppflags_save
2947fi
2948
2949
Bram Moolenaar98921892016-02-23 17:14:37 +01002950if 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 +00002951 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2952 cppflags_save=$CPPFLAGS
2953 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2954 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2955
2956 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2957 if test ! "$enable_xim" = "no"; then
2958 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2959 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2960 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002961 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002962 fi
2963 CPPFLAGS=$cppflags_save
2964
2965 dnl automatically enable XIM when hangul input isn't enabled
2966 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2967 -a "x$GUITYPE" != "xNONE" ; then
2968 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2969 enable_xim="yes"
2970 fi
2971fi
2972
2973if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2974 cppflags_save=$CPPFLAGS
2975 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002976dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2977 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2978 AC_TRY_COMPILE([
2979#include <X11/Intrinsic.h>
2980#include <X11/Xmu/Editres.h>],
2981 [int i; i = 0;],
2982 AC_MSG_RESULT(yes)
2983 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2984 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002985 CPPFLAGS=$cppflags_save
2986fi
2987
2988dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2989if test -z "$SKIP_MOTIF"; then
2990 cppflags_save=$CPPFLAGS
2991 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002992 if test "$zOSUnix" = "yes"; then
2993 xmheader="Xm/Xm.h"
2994 else
2995 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002996 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002997 fi
2998 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002999
Bram Moolenaar77c19352012-06-13 19:19:41 +02003000 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003001 dnl Solaris uses XpmAttributes_21, very annoying.
3002 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
3003 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
3004 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
3005 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
3006 )
3007 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00003008 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00003009 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003010 CPPFLAGS=$cppflags_save
3011fi
3012
3013if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
3014 AC_MSG_RESULT(no GUI selected; xim has been disabled)
3015 enable_xim="no"
3016fi
3017if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
3018 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
3019 enable_fontset="no"
3020fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02003021if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003022 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
3023 enable_fontset="no"
3024fi
3025
Bram Moolenaar071d4272004-06-13 20:20:40 +00003026if test -z "$SKIP_PHOTON"; then
3027 GUITYPE=PHOTONGUI
3028fi
3029
3030AC_SUBST(GUI_INC_LOC)
3031AC_SUBST(GUI_LIB_LOC)
3032AC_SUBST(GUITYPE)
3033AC_SUBST(GUI_X_LIBS)
3034
3035if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
3036 AC_MSG_ERROR([cannot use workshop without Motif])
3037fi
3038
3039dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
3040if test "$enable_xim" = "yes"; then
3041 AC_DEFINE(FEAT_XIM)
3042fi
3043if test "$enable_fontset" = "yes"; then
3044 AC_DEFINE(FEAT_XFONTSET)
3045fi
3046
3047
3048dnl ---------------------------------------------------------------------------
3049dnl end of GUI-checking
3050dnl ---------------------------------------------------------------------------
3051
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003052AC_MSG_CHECKING([for /proc link to executable])
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003053if test -L "/proc/self/exe"; then
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003054 dnl Linux
3055 AC_MSG_RESULT([/proc/self/exe])
3056 AC_DEFINE(PROC_EXE_LINK, "/proc/self/exe")
3057elif test -L "/proc/self/path/a.out"; then
3058 dnl Solaris
3059 AC_MSG_RESULT([/proc/self/path/a.out])
3060 AC_DEFINE(PROC_EXE_LINK, "/proc/self/path/a.out")
3061elif test -L "/proc/curproc/file"; then
3062 dnl FreeBSD
3063 AC_MSG_RESULT([/proc/curproc/file])
3064 AC_DEFINE(PROC_EXE_LINK, "/proc/curproc/file")
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003065else
Bram Moolenaarf3757f02017-03-16 15:13:45 +01003066 AC_MSG_RESULT(no)
Bram Moolenaar5f69fee2017-03-09 11:58:40 +01003067fi
3068
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003069dnl Check for Cygwin, which needs an extra source file if not using X11
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003070AC_MSG_CHECKING(for CYGWIN or MSYS environment)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003071case `uname` in
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003072 CYGWIN*|MSYS*) CYGWIN=yes; AC_MSG_RESULT(yes)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003073 AC_MSG_CHECKING(for CYGWIN clipboard support)
3074 if test "x$with_x" = "xno" ; then
3075 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
3076 AC_MSG_RESULT(yes)
3077 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
3078 else
3079 AC_MSG_RESULT(no - using X11)
3080 fi ;;
3081
3082 *) CYGWIN=no; AC_MSG_RESULT(no);;
3083esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00003084
3085dnl Only really enable hangul input when GUI and XFONTSET are available
3086if test "$enable_hangulinput" = "yes"; then
3087 if test "x$GUITYPE" = "xNONE"; then
3088 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
3089 enable_hangulinput=no
3090 else
3091 AC_DEFINE(FEAT_HANGULIN)
3092 HANGULIN_SRC=hangulin.c
3093 AC_SUBST(HANGULIN_SRC)
3094 HANGULIN_OBJ=objects/hangulin.o
3095 AC_SUBST(HANGULIN_OBJ)
3096 fi
3097fi
3098
3099dnl Checks for libraries and include files.
3100
Bram Moolenaar446cb832008-06-24 21:56:24 +00003101AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
3102 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003103 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003104#include "confdefs.h"
3105#include <ctype.h>
3106#if STDC_HEADERS
3107# include <stdlib.h>
3108# include <stddef.h>
3109#endif
3110main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003111 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003112 vim_cv_toupper_broken=yes
3113 ],[
3114 vim_cv_toupper_broken=no
3115 ],[
3116 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
3117 ])])
3118
3119if test "x$vim_cv_toupper_broken" = "xyes" ; then
3120 AC_DEFINE(BROKEN_TOUPPER)
3121fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003122
3123AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003124AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003125 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
3126 AC_MSG_RESULT(no))
3127
Bram Moolenaar0c094b92009-05-14 20:20:33 +00003128AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
3129AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
3130 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
3131 AC_MSG_RESULT(no))
3132
Bram Moolenaar071d4272004-06-13 20:20:40 +00003133dnl Checks for header files.
3134AC_CHECK_HEADER(elf.h, HAS_ELF=1)
3135dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
3136if test "$HAS_ELF" = 1; then
3137 AC_CHECK_LIB(elf, main)
3138fi
3139
3140AC_HEADER_DIRENT
3141
Bram Moolenaar071d4272004-06-13 20:20:40 +00003142dnl If sys/wait.h is not found it might still exist but not be POSIX
3143dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
3144if test $ac_cv_header_sys_wait_h = no; then
3145 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
3146 AC_TRY_COMPILE([#include <sys/wait.h>],
3147 [union wait xx, yy; xx = yy],
3148 AC_MSG_RESULT(yes)
3149 AC_DEFINE(HAVE_SYS_WAIT_H)
3150 AC_DEFINE(HAVE_UNION_WAIT),
3151 AC_MSG_RESULT(no))
3152fi
3153
Bram Moolenaar779a7752016-01-30 23:26:34 +01003154AC_CHECK_HEADERS(stdint.h stdlib.h string.h \
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003155 sys/select.h sys/utsname.h termcap.h fcntl.h \
3156 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
3157 termio.h iconv.h inttypes.h langinfo.h math.h \
3158 unistd.h stropts.h errno.h sys/resource.h \
3159 sys/systeminfo.h locale.h sys/stream.h termios.h \
3160 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
3161 utime.h sys/param.h libintl.h libgen.h \
3162 util/debug.h util/msg18n.h frame.h sys/acl.h \
3163 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003164
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003165dnl sys/ptem.h depends on sys/stream.h on Solaris
3166AC_CHECK_HEADERS(sys/ptem.h, [], [],
3167[#if defined HAVE_SYS_STREAM_H
3168# include <sys/stream.h>
3169#endif])
3170
Bram Moolenaar32f31b12009-05-21 13:20:59 +00003171dnl sys/sysctl.h depends on sys/param.h on OpenBSD
3172AC_CHECK_HEADERS(sys/sysctl.h, [], [],
3173[#if defined HAVE_SYS_PARAM_H
3174# include <sys/param.h>
3175#endif])
3176
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003177
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003178dnl pthread_np.h may exist but can only be used after including pthread.h
3179AC_MSG_CHECKING([for pthread_np.h])
3180AC_TRY_COMPILE([
3181#include <pthread.h>
3182#include <pthread_np.h>],
3183 [int i; i = 0;],
3184 AC_MSG_RESULT(yes)
3185 AC_DEFINE(HAVE_PTHREAD_NP_H),
3186 AC_MSG_RESULT(no))
3187
Bram Moolenaare344bea2005-09-01 20:46:49 +00003188AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00003189if test "x$MACOSX" = "xyes"; then
3190 dnl The strings.h file on OS/X contains a warning and nothing useful.
3191 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3192else
Bram Moolenaar071d4272004-06-13 20:20:40 +00003193
3194dnl Check if strings.h and string.h can both be included when defined.
3195AC_MSG_CHECKING([if strings.h can be included after string.h])
3196cppflags_save=$CPPFLAGS
3197CPPFLAGS="$CPPFLAGS $X_CFLAGS"
3198AC_TRY_COMPILE([
3199#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
3200# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
3201 /* but don't do it on AIX 5.1 (Uribarri) */
3202#endif
3203#ifdef HAVE_XM_XM_H
3204# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
3205#endif
3206#ifdef HAVE_STRING_H
3207# include <string.h>
3208#endif
3209#if defined(HAVE_STRINGS_H)
3210# include <strings.h>
3211#endif
3212 ], [int i; i = 0;],
3213 AC_MSG_RESULT(yes),
3214 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3215 AC_MSG_RESULT(no))
3216CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00003217fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003218
3219dnl Checks for typedefs, structures, and compiler characteristics.
3220AC_PROG_GCC_TRADITIONAL
3221AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00003222AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003223AC_TYPE_MODE_T
3224AC_TYPE_OFF_T
3225AC_TYPE_PID_T
3226AC_TYPE_SIZE_T
3227AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003228AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003229
Bram Moolenaar071d4272004-06-13 20:20:40 +00003230AC_HEADER_TIME
3231AC_CHECK_TYPE(ino_t, long)
3232AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003233AC_C_BIGENDIAN(,,,)
Bram Moolenaar136f29a2016-02-27 20:14:15 +01003234AC_C_INLINE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003235
3236AC_MSG_CHECKING(for rlim_t)
3237if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
3238 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
3239else
3240 AC_EGREP_CPP(dnl
3241changequote(<<,>>)dnl
3242<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
3243changequote([,]),
3244 [
3245#include <sys/types.h>
3246#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003247# include <stdlib.h>
3248# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003249#endif
3250#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00003251# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003252#endif
3253 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
3254 AC_MSG_RESULT($ac_cv_type_rlim_t)
3255fi
3256if test $ac_cv_type_rlim_t = no; then
3257 cat >> confdefs.h <<\EOF
3258#define rlim_t unsigned long
3259EOF
3260fi
3261
3262AC_MSG_CHECKING(for stack_t)
3263if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
3264 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
3265else
3266 AC_EGREP_CPP(stack_t,
3267 [
3268#include <sys/types.h>
3269#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003270# include <stdlib.h>
3271# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003272#endif
3273#include <signal.h>
3274 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
3275 AC_MSG_RESULT($ac_cv_type_stack_t)
3276fi
3277if test $ac_cv_type_stack_t = no; then
3278 cat >> confdefs.h <<\EOF
3279#define stack_t struct sigaltstack
3280EOF
3281fi
3282
3283dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
3284AC_MSG_CHECKING(whether stack_t has an ss_base field)
3285AC_TRY_COMPILE([
3286#include <sys/types.h>
3287#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003288# include <stdlib.h>
3289# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003290#endif
3291#include <signal.h>
3292#include "confdefs.h"
3293 ], [stack_t sigstk; sigstk.ss_base = 0; ],
3294 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
3295 AC_MSG_RESULT(no))
3296
3297olibs="$LIBS"
3298AC_MSG_CHECKING(--with-tlib argument)
3299AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
3300if test -n "$with_tlib"; then
3301 AC_MSG_RESULT($with_tlib)
3302 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003303 AC_MSG_CHECKING(for linking with $with_tlib library)
3304 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
3305 dnl Need to check for tgetent() below.
3306 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003307else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003308 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003309 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3310 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003311 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003312 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003313 dnl Older versions of ncurses have bugs, get a new one!
3314 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003315 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00003316 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003317 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3318 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003319 esac
3320 for libname in $tlibs; do
3321 AC_CHECK_LIB(${libname}, tgetent,,)
3322 if test "x$olibs" != "x$LIBS"; then
3323 dnl It's possible that a library is found but it doesn't work
3324 dnl e.g., shared library that cannot be found
3325 dnl compile and run a test program to be sure
3326 AC_TRY_RUN([
3327#ifdef HAVE_TERMCAP_H
3328# include <termcap.h>
3329#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003330#if STDC_HEADERS
3331# include <stdlib.h>
3332# include <stddef.h>
3333#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003334main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3335 res="OK", res="FAIL", res="FAIL")
3336 if test "$res" = "OK"; then
3337 break
3338 fi
3339 AC_MSG_RESULT($libname library is not usable)
3340 LIBS="$olibs"
3341 fi
3342 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003343 if test "x$olibs" = "x$LIBS"; then
3344 AC_MSG_RESULT(no terminal library found)
3345 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003346fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003347
3348if test "x$olibs" = "x$LIBS"; then
3349 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003350 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003351 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3352 AC_MSG_RESULT(yes),
3353 AC_MSG_ERROR([NOT FOUND!
3354 You need to install a terminal library; for example ncurses.
3355 Or specify the name of the library with --with-tlib.]))
3356fi
3357
Bram Moolenaar446cb832008-06-24 21:56:24 +00003358AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3359 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003360 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003361#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003362#ifdef HAVE_TERMCAP_H
3363# include <termcap.h>
3364#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003365#ifdef HAVE_STRING_H
3366# include <string.h>
3367#endif
3368#if STDC_HEADERS
3369# include <stdlib.h>
3370# include <stddef.h>
3371#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003372main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003373{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003374 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003375 vim_cv_terminfo=no
3376 ],[
3377 vim_cv_terminfo=yes
3378 ],[
3379 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3380 ])
3381 ])
3382
3383if test "x$vim_cv_terminfo" = "xyes" ; then
3384 AC_DEFINE(TERMINFO)
3385fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003386
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003387AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3388 [
3389 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003390#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003391#ifdef HAVE_TERMCAP_H
3392# include <termcap.h>
3393#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003394#if STDC_HEADERS
3395# include <stdlib.h>
3396# include <stddef.h>
3397#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003398main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003399{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003400 ]])],[
3401 vim_cv_tgent=zero
3402 ],[
3403 vim_cv_tgent=non-zero
3404 ],[
3405 AC_MSG_ERROR(failed to compile test program.)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003406 ])
Bram Moolenaar696cbd22017-04-28 15:45:46 +02003407 ])
3408
3409if test "x$vim_cv_tgent" = "xzero" ; then
3410 AC_DEFINE(TGETENT_ZERO_ERR, 0)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003411fi
3412
3413AC_MSG_CHECKING(whether termcap.h contains ospeed)
3414AC_TRY_LINK([
3415#ifdef HAVE_TERMCAP_H
3416# include <termcap.h>
3417#endif
3418 ], [ospeed = 20000],
3419 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3420 [AC_MSG_RESULT(no)
3421 AC_MSG_CHECKING(whether ospeed can be extern)
3422 AC_TRY_LINK([
3423#ifdef HAVE_TERMCAP_H
3424# include <termcap.h>
3425#endif
3426extern short ospeed;
3427 ], [ospeed = 20000],
3428 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3429 AC_MSG_RESULT(no))]
3430 )
3431
3432AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3433AC_TRY_LINK([
3434#ifdef HAVE_TERMCAP_H
3435# include <termcap.h>
3436#endif
3437 ], [if (UP == 0 && BC == 0) PC = 1],
3438 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3439 [AC_MSG_RESULT(no)
3440 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3441 AC_TRY_LINK([
3442#ifdef HAVE_TERMCAP_H
3443# include <termcap.h>
3444#endif
3445extern char *UP, *BC, PC;
3446 ], [if (UP == 0 && BC == 0) PC = 1],
3447 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3448 AC_MSG_RESULT(no))]
3449 )
3450
3451AC_MSG_CHECKING(whether tputs() uses outfuntype)
3452AC_TRY_COMPILE([
3453#ifdef HAVE_TERMCAP_H
3454# include <termcap.h>
3455#endif
3456 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3457 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3458 AC_MSG_RESULT(no))
3459
3460dnl On some SCO machines sys/select redefines struct timeval
3461AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3462AC_TRY_COMPILE([
3463#include <sys/types.h>
3464#include <sys/time.h>
3465#include <sys/select.h>], ,
3466 AC_MSG_RESULT(yes)
3467 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3468 AC_MSG_RESULT(no))
3469
3470dnl AC_DECL_SYS_SIGLIST
3471
3472dnl Checks for pty.c (copied from screen) ==========================
3473AC_MSG_CHECKING(for /dev/ptc)
3474if test -r /dev/ptc; then
3475 AC_DEFINE(HAVE_DEV_PTC)
3476 AC_MSG_RESULT(yes)
3477else
3478 AC_MSG_RESULT(no)
3479fi
3480
3481AC_MSG_CHECKING(for SVR4 ptys)
3482if test -c /dev/ptmx ; then
3483 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3484 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3485 AC_MSG_RESULT(no))
3486else
3487 AC_MSG_RESULT(no)
3488fi
3489
3490AC_MSG_CHECKING(for ptyranges)
3491if test -d /dev/ptym ; then
3492 pdir='/dev/ptym'
3493else
3494 pdir='/dev'
3495fi
3496dnl SCO uses ptyp%d
3497AC_EGREP_CPP(yes,
3498[#ifdef M_UNIX
3499 yes;
3500#endif
3501 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3502dnl if test -c /dev/ptyp19; then
3503dnl ptys=`echo /dev/ptyp??`
3504dnl else
3505dnl ptys=`echo $pdir/pty??`
3506dnl fi
3507if test "$ptys" != "$pdir/pty??" ; then
3508 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3509 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3510 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3511 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3512 AC_MSG_RESULT([$p0 / $p1])
3513else
3514 AC_MSG_RESULT([don't know])
3515fi
3516
3517dnl **** pty mode/group handling ****
3518dnl
3519dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003520rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003521AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3522 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003523 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003524#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003525#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003526#if STDC_HEADERS
3527# include <stdlib.h>
3528# include <stddef.h>
3529#endif
3530#ifdef HAVE_UNISTD_H
3531#include <unistd.h>
3532#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003533#include <sys/stat.h>
3534#include <stdio.h>
3535main()
3536{
3537 struct stat sb;
3538 char *x,*ttyname();
3539 int om, m;
3540 FILE *fp;
3541
3542 if (!(x = ttyname(0))) exit(1);
3543 if (stat(x, &sb)) exit(1);
3544 om = sb.st_mode;
3545 if (om & 002) exit(0);
3546 m = system("mesg y");
3547 if (m == -1 || m == 127) exit(1);
3548 if (stat(x, &sb)) exit(1);
3549 m = sb.st_mode;
3550 if (chmod(x, om)) exit(1);
3551 if (m & 002) exit(0);
3552 if (sb.st_gid == getgid()) exit(1);
3553 if (!(fp=fopen("conftest_grp", "w")))
3554 exit(1);
3555 fprintf(fp, "%d\n", sb.st_gid);
3556 fclose(fp);
3557 exit(0);
3558}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003559 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003560 if test -f conftest_grp; then
3561 vim_cv_tty_group=`cat conftest_grp`
3562 if test "x$vim_cv_tty_mode" = "x" ; then
3563 vim_cv_tty_mode=0620
3564 fi
3565 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3566 else
3567 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003568 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003569 fi
3570 ],[
3571 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003572 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003573 ],[
3574 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3575 ])
3576 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003577rm -f conftest_grp
3578
Bram Moolenaar446cb832008-06-24 21:56:24 +00003579if test "x$vim_cv_tty_group" != "xworld" ; then
3580 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3581 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003582 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 +00003583 else
3584 AC_DEFINE(PTYMODE, 0620)
3585 fi
3586fi
3587
Bram Moolenaar071d4272004-06-13 20:20:40 +00003588dnl Checks for library functions. ===================================
3589
3590AC_TYPE_SIGNAL
3591
3592dnl find out what to use at the end of a signal function
3593if test $ac_cv_type_signal = void; then
3594 AC_DEFINE(SIGRETURN, [return])
3595else
3596 AC_DEFINE(SIGRETURN, [return 0])
3597fi
3598
3599dnl check if struct sigcontext is defined (used for SGI only)
3600AC_MSG_CHECKING(for struct sigcontext)
3601AC_TRY_COMPILE([
3602#include <signal.h>
3603test_sig()
3604{
3605 struct sigcontext *scont;
3606 scont = (struct sigcontext *)0;
3607 return 1;
3608} ], ,
3609 AC_MSG_RESULT(yes)
3610 AC_DEFINE(HAVE_SIGCONTEXT),
3611 AC_MSG_RESULT(no))
3612
3613dnl tricky stuff: try to find out if getcwd() is implemented with
3614dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003615AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3616 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003617 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003618#include "confdefs.h"
3619#ifdef HAVE_UNISTD_H
3620#include <unistd.h>
3621#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003622char *dagger[] = { "IFS=pwd", 0 };
3623main()
3624{
3625 char buffer[500];
3626 extern char **environ;
3627 environ = dagger;
3628 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003629}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003630 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003631 vim_cv_getcwd_broken=no
3632 ],[
3633 vim_cv_getcwd_broken=yes
3634 ],[
3635 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3636 ])
3637 ])
3638
3639if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3640 AC_DEFINE(BAD_GETCWD)
3641fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003642
Bram Moolenaar25153e12010-02-24 14:47:08 +01003643dnl Check for functions in one big call, to reduce the size of configure.
3644dnl Can only be used for functions that do not require any include.
Bram Moolenaarb129a442016-12-01 17:25:20 +01003645AC_CHECK_FUNCS(fchdir fchown fsync getcwd getpseudotty \
3646 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003647 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar2fcf6682017-03-11 20:03:42 +01003648 getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaarbb09ceb2016-10-18 16:27:23 +02003649 sigprocmask sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003650 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
Bram Moolenaara6b89762016-02-29 21:38:26 +01003651 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003652AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003653
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003654dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3655dnl appropriate, so that off_t is 64 bits when needed.
3656AC_SYS_LARGEFILE
3657
Bram Moolenaar071d4272004-06-13 20:20:40 +00003658dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3659AC_MSG_CHECKING(for st_blksize)
3660AC_TRY_COMPILE(
3661[#include <sys/types.h>
3662#include <sys/stat.h>],
3663[ struct stat st;
3664 int n;
3665
3666 stat("/", &st);
3667 n = (int)st.st_blksize;],
3668 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3669 AC_MSG_RESULT(no))
3670
Bram Moolenaar446cb832008-06-24 21:56:24 +00003671AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3672 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003673 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003674#include "confdefs.h"
3675#if STDC_HEADERS
3676# include <stdlib.h>
3677# include <stddef.h>
3678#endif
3679#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003680#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003681main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003682 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003683 vim_cv_stat_ignores_slash=yes
3684 ],[
3685 vim_cv_stat_ignores_slash=no
3686 ],[
3687 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3688 ])
3689 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003690
Bram Moolenaar446cb832008-06-24 21:56:24 +00003691if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3692 AC_DEFINE(STAT_IGNORES_SLASH)
3693fi
3694
Bram Moolenaar071d4272004-06-13 20:20:40 +00003695dnl Link with iconv for charset translation, if not found without library.
3696dnl check for iconv() requires including iconv.h
3697dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3698dnl has been installed.
3699AC_MSG_CHECKING(for iconv_open())
3700save_LIBS="$LIBS"
3701LIBS="$LIBS -liconv"
3702AC_TRY_LINK([
3703#ifdef HAVE_ICONV_H
3704# include <iconv.h>
3705#endif
3706 ], [iconv_open("fr", "to");],
3707 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3708 LIBS="$save_LIBS"
3709 AC_TRY_LINK([
3710#ifdef HAVE_ICONV_H
3711# include <iconv.h>
3712#endif
3713 ], [iconv_open("fr", "to");],
3714 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3715 AC_MSG_RESULT(no)))
3716
3717
3718AC_MSG_CHECKING(for nl_langinfo(CODESET))
3719AC_TRY_LINK([
3720#ifdef HAVE_LANGINFO_H
3721# include <langinfo.h>
3722#endif
3723], [char *cs = nl_langinfo(CODESET);],
3724 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3725 AC_MSG_RESULT(no))
3726
Bram Moolenaar446cb832008-06-24 21:56:24 +00003727dnl Need various functions for floating point support. Only enable
3728dnl floating point when they are all present.
3729AC_CHECK_LIB(m, strtod)
3730AC_MSG_CHECKING([for strtod() and other floating point functions])
3731AC_TRY_LINK([
3732#ifdef HAVE_MATH_H
3733# include <math.h>
3734#endif
3735#if STDC_HEADERS
3736# include <stdlib.h>
3737# include <stddef.h>
3738#endif
3739], [char *s; double d;
3740 d = strtod("1.1", &s);
3741 d = fabs(1.11);
3742 d = ceil(1.11);
3743 d = floor(1.11);
3744 d = log10(1.11);
3745 d = pow(1.11, 2.22);
3746 d = sqrt(1.11);
3747 d = sin(1.11);
3748 d = cos(1.11);
3749 d = atan(1.11);
3750 ],
3751 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3752 AC_MSG_RESULT(no))
3753
Bram Moolenaara6b89762016-02-29 21:38:26 +01003754dnl isinf() and isnan() need to include header files and may need -lm.
3755AC_MSG_CHECKING([for isinf()])
3756AC_TRY_LINK([
3757#ifdef HAVE_MATH_H
3758# include <math.h>
3759#endif
3760#if STDC_HEADERS
3761# include <stdlib.h>
3762# include <stddef.h>
3763#endif
3764], [int r = isinf(1.11); ],
3765 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISINF),
3766 AC_MSG_RESULT(no))
3767
3768AC_MSG_CHECKING([for isnan()])
3769AC_TRY_LINK([
3770#ifdef HAVE_MATH_H
3771# include <math.h>
3772#endif
3773#if STDC_HEADERS
3774# include <stdlib.h>
3775# include <stddef.h>
3776#endif
3777], [int r = isnan(1.11); ],
3778 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISNAN),
3779 AC_MSG_RESULT(no))
3780
Bram Moolenaar071d4272004-06-13 20:20:40 +00003781dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3782dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003783dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003784AC_MSG_CHECKING(--disable-acl argument)
3785AC_ARG_ENABLE(acl,
3786 [ --disable-acl Don't check for ACL support.],
3787 , [enable_acl="yes"])
3788if test "$enable_acl" = "yes"; then
3789AC_MSG_RESULT(no)
3790AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3791 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3792 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3793
3794AC_MSG_CHECKING(for POSIX ACL support)
3795AC_TRY_LINK([
3796#include <sys/types.h>
3797#ifdef HAVE_SYS_ACL_H
3798# include <sys/acl.h>
3799#endif
3800acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3801 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3802 acl_free(acl);],
3803 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3804 AC_MSG_RESULT(no))
3805
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003806AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003807AC_MSG_CHECKING(for Solaris ACL support)
3808AC_TRY_LINK([
3809#ifdef HAVE_SYS_ACL_H
3810# include <sys/acl.h>
3811#endif], [acl("foo", GETACLCNT, 0, NULL);
3812 ],
3813 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003814 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003815
3816AC_MSG_CHECKING(for AIX ACL support)
3817AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003818#if STDC_HEADERS
3819# include <stdlib.h>
3820# include <stddef.h>
3821#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003822#ifdef HAVE_SYS_ACL_H
3823# include <sys/acl.h>
3824#endif
3825#ifdef HAVE_SYS_ACCESS_H
3826# include <sys/access.h>
3827#endif
3828#define _ALL_SOURCE
3829
3830#include <sys/stat.h>
3831
3832int aclsize;
3833struct acl *aclent;], [aclsize = sizeof(struct acl);
3834 aclent = (void *)malloc(aclsize);
3835 statacl("foo", STX_NORMAL, aclent, aclsize);
3836 ],
3837 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3838 AC_MSG_RESULT(no))
3839else
3840 AC_MSG_RESULT(yes)
3841fi
3842
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003843if test "x$GTK_CFLAGS" != "x"; then
3844 dnl pango_shape_full() is new, fall back to pango_shape().
3845 AC_MSG_CHECKING(for pango_shape_full)
3846 ac_save_CFLAGS="$CFLAGS"
3847 ac_save_LIBS="$LIBS"
3848 CFLAGS="$CFLAGS $GTK_CFLAGS"
3849 LIBS="$LIBS $GTK_LIBS"
Bram Moolenaar5325b9b2015-09-09 20:27:02 +02003850 AC_TRY_LINK(
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003851 [#include <gtk/gtk.h>],
3852 [ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ],
3853 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL),
3854 AC_MSG_RESULT(no))
3855 CFLAGS="$ac_save_CFLAGS"
3856 LIBS="$ac_save_LIBS"
3857fi
3858
Bram Moolenaar071d4272004-06-13 20:20:40 +00003859AC_MSG_CHECKING(--disable-gpm argument)
3860AC_ARG_ENABLE(gpm,
3861 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3862 [enable_gpm="yes"])
3863
3864if test "$enable_gpm" = "yes"; then
3865 AC_MSG_RESULT(no)
3866 dnl Checking if gpm support can be compiled
3867 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3868 [olibs="$LIBS" ; LIBS="-lgpm"]
3869 AC_TRY_LINK(
3870 [#include <gpm.h>
3871 #include <linux/keyboard.h>],
3872 [Gpm_GetLibVersion(NULL);],
3873 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3874 dnl FEAT_MOUSE_GPM if mouse support is included
3875 [vi_cv_have_gpm=yes],
3876 [vi_cv_have_gpm=no])
3877 [LIBS="$olibs"]
3878 )
3879 if test $vi_cv_have_gpm = yes; then
3880 LIBS="$LIBS -lgpm"
3881 AC_DEFINE(HAVE_GPM)
3882 fi
3883else
3884 AC_MSG_RESULT(yes)
3885fi
3886
Bram Moolenaar446cb832008-06-24 21:56:24 +00003887AC_MSG_CHECKING(--disable-sysmouse argument)
3888AC_ARG_ENABLE(sysmouse,
Bram Moolenaar8008b632017-07-18 21:33:20 +02003889 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
Bram Moolenaar446cb832008-06-24 21:56:24 +00003890 [enable_sysmouse="yes"])
3891
3892if test "$enable_sysmouse" = "yes"; then
3893 AC_MSG_RESULT(no)
3894 dnl Checking if sysmouse support can be compiled
3895 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3896 dnl defines FEAT_SYSMOUSE if mouse support is included
3897 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3898 AC_TRY_LINK(
3899 [#include <sys/consio.h>
3900 #include <signal.h>
3901 #include <sys/fbio.h>],
3902 [struct mouse_info mouse;
3903 mouse.operation = MOUSE_MODE;
3904 mouse.operation = MOUSE_SHOW;
3905 mouse.u.mode.mode = 0;
3906 mouse.u.mode.signal = SIGUSR2;],
3907 [vi_cv_have_sysmouse=yes],
3908 [vi_cv_have_sysmouse=no])
3909 )
3910 if test $vi_cv_have_sysmouse = yes; then
3911 AC_DEFINE(HAVE_SYSMOUSE)
3912 fi
3913else
3914 AC_MSG_RESULT(yes)
3915fi
3916
Bram Moolenaarf05da212009-11-17 16:13:15 +00003917dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3918AC_MSG_CHECKING(for FD_CLOEXEC)
3919AC_TRY_COMPILE(
3920[#if HAVE_FCNTL_H
3921# include <fcntl.h>
3922#endif],
3923[ int flag = FD_CLOEXEC;],
3924 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3925 AC_MSG_RESULT(not usable))
3926
Bram Moolenaar071d4272004-06-13 20:20:40 +00003927dnl rename needs to be checked separately to work on Nextstep with cc
3928AC_MSG_CHECKING(for rename)
3929AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3930 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3931 AC_MSG_RESULT(no))
3932
3933dnl sysctl() may exist but not the arguments we use
3934AC_MSG_CHECKING(for sysctl)
3935AC_TRY_COMPILE(
3936[#include <sys/types.h>
3937#include <sys/sysctl.h>],
3938[ int mib[2], r;
3939 size_t len;
3940
3941 mib[0] = CTL_HW;
3942 mib[1] = HW_USERMEM;
3943 len = sizeof(r);
3944 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3945 ],
3946 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3947 AC_MSG_RESULT(not usable))
3948
3949dnl sysinfo() may exist but not be Linux compatible
3950AC_MSG_CHECKING(for sysinfo)
3951AC_TRY_COMPILE(
3952[#include <sys/types.h>
3953#include <sys/sysinfo.h>],
3954[ struct sysinfo sinfo;
3955 int t;
3956
3957 (void)sysinfo(&sinfo);
3958 t = sinfo.totalram;
3959 ],
3960 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3961 AC_MSG_RESULT(not usable))
3962
Bram Moolenaar914572a2007-05-01 11:37:47 +00003963dnl struct sysinfo may have the mem_unit field or not
3964AC_MSG_CHECKING(for sysinfo.mem_unit)
3965AC_TRY_COMPILE(
3966[#include <sys/types.h>
3967#include <sys/sysinfo.h>],
3968[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003969 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003970 ],
3971 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3972 AC_MSG_RESULT(no))
3973
Bram Moolenaar071d4272004-06-13 20:20:40 +00003974dnl sysconf() may exist but not support what we want to use
3975AC_MSG_CHECKING(for sysconf)
3976AC_TRY_COMPILE(
3977[#include <unistd.h>],
3978[ (void)sysconf(_SC_PAGESIZE);
3979 (void)sysconf(_SC_PHYS_PAGES);
3980 ],
3981 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3982 AC_MSG_RESULT(not usable))
3983
Bram Moolenaar914703b2010-05-31 21:59:46 +02003984AC_CHECK_SIZEOF([int])
3985AC_CHECK_SIZEOF([long])
3986AC_CHECK_SIZEOF([time_t])
3987AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003988
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003989dnl Use different names to avoid clashing with other header files.
3990AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3991AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3992
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003993dnl Make sure that uint32_t is really 32 bits unsigned.
3994AC_MSG_CHECKING([uint32_t is 32 bits])
3995AC_TRY_RUN([
3996#ifdef HAVE_STDINT_H
3997# include <stdint.h>
3998#endif
3999#ifdef HAVE_INTTYPES_H
4000# include <inttypes.h>
4001#endif
4002main() {
4003 uint32_t nr1 = (uint32_t)-1;
4004 uint32_t nr2 = (uint32_t)0xffffffffUL;
4005 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
4006 exit(0);
4007}],
4008AC_MSG_RESULT(ok),
4009AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01004010AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02004011
Bram Moolenaar446cb832008-06-24 21:56:24 +00004012dnl Check for memmove() before bcopy(), makes memmove() be used when both are
4013dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
4014
Bram Moolenaar071d4272004-06-13 20:20:40 +00004015[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00004016#include "confdefs.h"
4017#ifdef HAVE_STRING_H
4018# include <string.h>
4019#endif
4020#if STDC_HEADERS
4021# include <stdlib.h>
4022# include <stddef.h>
4023#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00004024main() {
4025 char buf[10];
4026 strcpy(buf, "abcdefghi");
4027 mch_memmove(buf, buf + 2, 3);
4028 if (strncmp(buf, "ababcf", 6))
4029 exit(1);
4030 strcpy(buf, "abcdefghi");
4031 mch_memmove(buf + 2, buf, 3);
4032 if (strncmp(buf, "cdedef", 6))
4033 exit(1);
4034 exit(0); /* libc version works properly. */
4035}']
4036
Bram Moolenaar446cb832008-06-24 21:56:24 +00004037AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
4038 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004039 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 +00004040 [
4041 vim_cv_memmove_handles_overlap=yes
4042 ],[
4043 vim_cv_memmove_handles_overlap=no
4044 ],[
4045 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
4046 ])
4047 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00004048
Bram Moolenaar446cb832008-06-24 21:56:24 +00004049if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
4050 AC_DEFINE(USEMEMMOVE)
4051else
4052 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
4053 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004054 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 +00004055 [
4056 vim_cv_bcopy_handles_overlap=yes
4057 ],[
4058 vim_cv_bcopy_handles_overlap=no
4059 ],[
4060 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
4061 ])
4062 ])
4063
4064 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
4065 AC_DEFINE(USEBCOPY)
4066 else
4067 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
4068 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01004069 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 +00004070 [
4071 vim_cv_memcpy_handles_overlap=yes
4072 ],[
4073 vim_cv_memcpy_handles_overlap=no
4074 ],[
4075 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
4076 ])
4077 ])
4078
4079 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
4080 AC_DEFINE(USEMEMCPY)
4081 fi
4082 fi
4083fi
4084
Bram Moolenaar071d4272004-06-13 20:20:40 +00004085
4086dnl Check for multibyte locale functions
4087dnl Find out if _Xsetlocale() is supported by libX11.
4088dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004089if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004090 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004091 libs_save=$LIBS
4092 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
4093 CFLAGS="$CFLAGS $X_CFLAGS"
4094
4095 AC_MSG_CHECKING(whether X_LOCALE needed)
4096 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
4097 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
4098 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
4099 AC_MSG_RESULT(no))
4100
4101 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
4102 AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes)
4103 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
4104
Bram Moolenaar071d4272004-06-13 20:20:40 +00004105 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004106 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00004107fi
4108
4109dnl Link with xpg4, it is said to make Korean locale working
4110AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
4111
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004112dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02004113dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004114dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004115dnl -t for typedefs (many ctags have this)
4116dnl -s for static functions (Elvis ctags only?)
4117dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
4118dnl -i+m to test for older Exuberant ctags
4119AC_MSG_CHECKING(how to create tags)
4120test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02004121if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004122 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02004123elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
4124 TAGPRG="exctags -I INIT+ --fields=+S"
4125elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
4126 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004127else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004128 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004129 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
4130 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
4131 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
4132 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
4133 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
4134 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
4135 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
4136fi
4137test -f tags.save && mv tags.save tags
4138AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
4139
4140dnl Check how we can run man with a section number
4141AC_MSG_CHECKING(how to run man with a section nr)
4142MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00004143(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 +00004144AC_MSG_RESULT($MANDEF)
4145if test "$MANDEF" = "man -s"; then
4146 AC_DEFINE(USEMAN_S)
4147fi
4148
4149dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004150dnl We take care to base this on an empty LIBS: on some systems libelf would be
4151dnl in LIBS and implicitly take along libintl. The final LIBS would then not
4152dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004153AC_MSG_CHECKING(--disable-nls argument)
4154AC_ARG_ENABLE(nls,
4155 [ --disable-nls Don't support NLS (gettext()).], ,
4156 [enable_nls="yes"])
4157
4158if test "$enable_nls" = "yes"; then
4159 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00004160
4161 INSTALL_LANGS=install-languages
4162 AC_SUBST(INSTALL_LANGS)
4163 INSTALL_TOOL_LANGS=install-tool-languages
4164 AC_SUBST(INSTALL_TOOL_LANGS)
4165
Bram Moolenaar071d4272004-06-13 20:20:40 +00004166 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
4167 AC_MSG_CHECKING([for NLS])
4168 if test -f po/Makefile; then
4169 have_gettext="no"
4170 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004171 olibs=$LIBS
4172 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00004173 AC_TRY_LINK(
4174 [#include <libintl.h>],
4175 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004176 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
4177 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004178 AC_TRY_LINK(
4179 [#include <libintl.h>],
4180 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004181 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
4182 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00004183 AC_MSG_RESULT([gettext() doesn't work]);
4184 LIBS=$olibs))
4185 else
4186 AC_MSG_RESULT([msgfmt not found - disabled]);
4187 fi
Bram Moolenaar278eb582014-07-30 13:22:52 +02004188 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004189 AC_DEFINE(HAVE_GETTEXT)
4190 MAKEMO=yes
4191 AC_SUBST(MAKEMO)
4192 dnl this was added in GNU gettext 0.10.36
4193 AC_CHECK_FUNCS(bind_textdomain_codeset)
4194 dnl _nl_msg_cat_cntr is required for GNU gettext
4195 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
4196 AC_TRY_LINK(
4197 [#include <libintl.h>
4198 extern int _nl_msg_cat_cntr;],
4199 [++_nl_msg_cat_cntr;],
4200 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
4201 AC_MSG_RESULT([no]))
4202 fi
4203 else
4204 AC_MSG_RESULT([no "po/Makefile" - disabled]);
4205 fi
4206else
4207 AC_MSG_RESULT(yes)
4208fi
4209
4210dnl Check for dynamic linking loader
4211AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
4212if test x${DLL} = xdlfcn.h; then
4213 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
4214 AC_MSG_CHECKING([for dlopen()])
4215 AC_TRY_LINK(,[
4216 extern void* dlopen();
4217 dlopen();
4218 ],
4219 AC_MSG_RESULT(yes);
4220 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4221 AC_MSG_RESULT(no);
4222 AC_MSG_CHECKING([for dlopen() in -ldl])
4223 olibs=$LIBS
4224 LIBS="$LIBS -ldl"
4225 AC_TRY_LINK(,[
4226 extern void* dlopen();
4227 dlopen();
4228 ],
4229 AC_MSG_RESULT(yes);
4230 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4231 AC_MSG_RESULT(no);
4232 LIBS=$olibs))
4233 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
4234 dnl ick :-)
4235 AC_MSG_CHECKING([for dlsym()])
4236 AC_TRY_LINK(,[
4237 extern void* dlsym();
4238 dlsym();
4239 ],
4240 AC_MSG_RESULT(yes);
4241 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4242 AC_MSG_RESULT(no);
4243 AC_MSG_CHECKING([for dlsym() in -ldl])
4244 olibs=$LIBS
4245 LIBS="$LIBS -ldl"
4246 AC_TRY_LINK(,[
4247 extern void* dlsym();
4248 dlsym();
4249 ],
4250 AC_MSG_RESULT(yes);
4251 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4252 AC_MSG_RESULT(no);
4253 LIBS=$olibs))
4254elif test x${DLL} = xdl.h; then
4255 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
4256 AC_MSG_CHECKING([for shl_load()])
4257 AC_TRY_LINK(,[
4258 extern void* shl_load();
4259 shl_load();
4260 ],
4261 AC_MSG_RESULT(yes);
4262 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4263 AC_MSG_RESULT(no);
4264 AC_MSG_CHECKING([for shl_load() in -ldld])
4265 olibs=$LIBS
4266 LIBS="$LIBS -ldld"
4267 AC_TRY_LINK(,[
4268 extern void* shl_load();
4269 shl_load();
4270 ],
4271 AC_MSG_RESULT(yes);
4272 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4273 AC_MSG_RESULT(no);
4274 LIBS=$olibs))
4275fi
4276AC_CHECK_HEADERS(setjmp.h)
4277
4278if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
4279 dnl -ldl must come after DynaLoader.a
4280 if echo $LIBS | grep -e '-ldl' >/dev/null; then
4281 LIBS=`echo $LIBS | sed s/-ldl//`
4282 PERL_LIBS="$PERL_LIBS -ldl"
4283 fi
4284fi
4285
Bram Moolenaar164fca32010-07-14 13:58:07 +02004286if test "x$MACOSX" = "xyes"; then
4287 AC_MSG_CHECKING(whether we need -framework Cocoa)
4288 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
4289 dnl disabled during tiny build)
4290 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
4291 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004292 AC_MSG_RESULT(yes)
4293 else
4294 AC_MSG_RESULT(no)
4295 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02004296 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
4297 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
4298 dnl missing Objective-C symbols.
4299 if test "x$features" = "xtiny"; then
4300 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
4301 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
4302 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004303fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02004304if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01004305 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00004306fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004307
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004308dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
4309dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
4310dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00004311dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
4312dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004313DEPEND_CFLAGS_FILTER=
4314if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004315 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00004316 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00004317 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004318 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004319 AC_MSG_RESULT(yes)
4320 else
4321 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004322 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004323 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
4324 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00004325 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01004326 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004327 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
4328 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004329 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 +00004330 AC_MSG_RESULT(yes)
4331 else
4332 AC_MSG_RESULT(no)
4333 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00004334fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004335AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004336
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004337dnl link.sh tries to avoid overlinking in a hackish way.
4338dnl At least GNU ld supports --as-needed which provides the same functionality
4339dnl at linker level. Let's use it.
4340AC_MSG_CHECKING(linker --as-needed support)
4341LINK_AS_NEEDED=
4342# Check if linker supports --as-needed and --no-as-needed options
4343if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004344 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004345 LINK_AS_NEEDED=yes
4346fi
4347if test "$LINK_AS_NEEDED" = yes; then
4348 AC_MSG_RESULT(yes)
4349else
4350 AC_MSG_RESULT(no)
4351fi
4352AC_SUBST(LINK_AS_NEEDED)
4353
Bram Moolenaar77c19352012-06-13 19:19:41 +02004354# IBM z/OS reset CFLAGS for config.mk
4355if test "$zOSUnix" = "yes"; then
4356 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4357fi
4358
Bram Moolenaar071d4272004-06-13 20:20:40 +00004359dnl write output files
4360AC_OUTPUT(auto/config.mk:config.mk.in)
4361
4362dnl vim: set sw=2 tw=78 fo+=l: