blob: adb30c42997e14e715190ce7fd38b094cf1a7a9c [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
Bram Moolenaar2bcaec32014-03-27 18:51:11 +010017AC_PROG_FGREP dnl finds working grep -F
Bram Moolenaar071d4272004-06-13 20:20:40 +000018AC_ISC_POSIX dnl required by AC_C_CROSS
19AC_PROG_AWK dnl required for "make html" in ../doc
20
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.
70AC_MSG_CHECKING(for recent clang version)
Bram Moolenaarc8836f72014-04-12 13:12:24 +020071CLANG_VERSION_STRING=`$CC --version 2>/dev/null | sed -n -e 's/^.*clang.*\([[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.
82 if test "$CLANG_VERSION" -ge 500002075 ; then
83 CFLAGS=`echo "$CFLAGS" | sed -n -e 's/-fno-strength-reduce/ /p'`
84 fi
85else
86 AC_MSG_RESULT(no)
87fi
88
Bram Moolenaar446cb832008-06-24 21:56:24 +000089dnl If configure thinks we are cross compiling, there might be something
90dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000091if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000092 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000093fi
94
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000095dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
96dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000097test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
98
99if test -f ./toolcheck; then
100 AC_CHECKING(for buggy tools)
101 sh ./toolcheck 1>&AC_FD_MSG
102fi
103
104OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
105
106dnl Check for BeOS, which needs an extra source file
107AC_MSG_CHECKING(for BeOS)
108case `uname` in
109 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
110 BEOS=yes; AC_MSG_RESULT(yes);;
111 *) BEOS=no; AC_MSG_RESULT(no);;
112esac
113
114dnl If QNX is found, assume we don't want to use Xphoton
115dnl unless it was specifically asked for (--with-x)
116AC_MSG_CHECKING(for QNX)
117case `uname` in
118 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
119 test -z "$with_x" && with_x=no
120 QNX=yes; AC_MSG_RESULT(yes);;
121 *) QNX=no; AC_MSG_RESULT(no);;
122esac
123
124dnl Check for Darwin and MacOS X
125dnl We do a check for MacOS X in the very beginning because there
126dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +0000127AC_MSG_CHECKING([for Darwin (Mac OS X)])
128if test "`(uname) 2>/dev/null`" = Darwin; then
129 AC_MSG_RESULT(yes)
130
131 AC_MSG_CHECKING(--disable-darwin argument)
132 AC_ARG_ENABLE(darwin,
133 [ --disable-darwin Disable Darwin (Mac OS X) support.],
134 , [enable_darwin="yes"])
135 if test "$enable_darwin" = "yes"; then
136 AC_MSG_RESULT(no)
137 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200138 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000139 AC_MSG_RESULT(yes)
140 else
141 AC_MSG_RESULT([no, Darwin support disabled])
142 enable_darwin=no
143 fi
144 else
145 AC_MSG_RESULT([yes, Darwin support excluded])
146 fi
147
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000148 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000149 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000150 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000151 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000152
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100153 AC_MSG_CHECKING(--with-developer-dir argument)
154 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
155 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
Bram Moolenaar32d03b32015-11-19 13:46:48 +0100156 AC_MSG_RESULT(not present))
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100157
158 if test "x$DEVELOPER_DIR" = "x"; then
159 AC_PATH_PROG(XCODE_SELECT, xcode-select)
160 if test "x$XCODE_SELECT" != "x"; then
161 AC_MSG_CHECKING(for developer dir using xcode-select)
162 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
163 AC_MSG_RESULT([$DEVELOPER_DIR])
164 else
165 DEVELOPER_DIR=/Developer
166 fi
167 fi
168
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000169 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000170 AC_MSG_CHECKING(for 10.4 universal SDK)
171 dnl There is a terrible inconsistency (but we appear to get away with it):
172 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
173 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
174 dnl tests using the preprocessor are actually done with the wrong header
175 dnl files. $LDFLAGS is set at the end, because configure uses it together
176 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000178 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000179 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100180 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000181 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000182 AC_MSG_RESULT(found, will make universal binary),
183
184 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000185 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000186 AC_MSG_CHECKING(if Intel architecture is supported)
187 CPPFLAGS="$CPPFLAGS -arch i386"
188 LDFLAGS="$save_ldflags -arch i386"
189 AC_TRY_LINK([ ], [ ],
190 AC_MSG_RESULT(yes); MACARCH="intel",
191 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000192 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000193 CPPFLAGS="$save_cppflags -arch ppc"
194 LDFLAGS="$save_ldflags -arch ppc"))
195 elif test "x$MACARCH" = "xintel"; then
196 CPPFLAGS="$CPPFLAGS -arch intel"
197 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000198 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000199 CPPFLAGS="$CPPFLAGS -arch ppc"
200 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000201 fi
202
Bram Moolenaar071d4272004-06-13 20:20:40 +0000203 if test "$enable_darwin" = "yes"; then
204 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200205 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000206 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000207 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100208 dnl Removed -no-cpp-precomp, only for very old compilers.
209 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210
211 dnl If Carbon is found, assume we don't want X11
212 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000213 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000214 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
215 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200216 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000218 fi
219 fi
220 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000221
Bram Moolenaardb552d602006-03-23 22:59:57 +0000222 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000223 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000224 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000225 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
226 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
227 fi
228
Bram Moolenaar071d4272004-06-13 20:20:40 +0000229else
230 AC_MSG_RESULT(no)
231fi
232
Bram Moolenaar39766a72013-11-03 00:41:00 +0100233dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
234dnl so we need to include it to have access to version macros.
Bram Moolenaar18e54692013-11-03 20:26:31 +0100235AC_CHECK_HEADERS(AvailabilityMacros.h)
Bram Moolenaar39766a72013-11-03 00:41:00 +0100236
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237AC_SUBST(OS_EXTRA_SRC)
238AC_SUBST(OS_EXTRA_OBJ)
239
240dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
241dnl Only when the directory exists and it wasn't there yet.
242dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000243dnl Skip all of this when cross-compiling.
244if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000245 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000246 have_local_include=''
247 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000248 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
249 --without-local-dir do not search /usr/local for local libraries.], [
250 local_dir="$withval"
251 case "$withval" in
252 */*) ;;
253 no)
254 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200255 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000256 have_local_lib=yes
257 ;;
258 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
259 esac
260 AC_MSG_RESULT($local_dir)
261 ], [
262 local_dir=/usr/local
263 AC_MSG_RESULT(Defaulting to $local_dir)
264 ])
265 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000266 echo 'void f(){}' > conftest.c
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100267 dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler)
268 have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
Bram Moolenaarc236c162008-07-13 17:41:49 +0000269 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000270 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000272 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
273 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 +0000274 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000275 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000276 fi
277 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000278 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
279 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 +0000280 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000281 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000282 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000283 fi
284fi
285
286AC_MSG_CHECKING(--with-vim-name argument)
287AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
288 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000289 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000290AC_SUBST(VIMNAME)
291AC_MSG_CHECKING(--with-ex-name argument)
292AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
293 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
294 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
295AC_SUBST(EXNAME)
296AC_MSG_CHECKING(--with-view-name argument)
297AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
298 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
299 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
300AC_SUBST(VIEWNAME)
301
302AC_MSG_CHECKING(--with-global-runtime argument)
303AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
304 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
305 AC_MSG_RESULT(no))
306
307AC_MSG_CHECKING(--with-modified-by argument)
308AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
309 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
310 AC_MSG_RESULT(no))
311
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313AC_MSG_CHECKING(if character set is EBCDIC)
314AC_TRY_COMPILE([ ],
315[ /* TryCompile function for CharSet.
316 Treat any failure as ASCII for compatibility with existing art.
317 Use compile-time rather than run-time tests for cross-compiler
318 tolerance. */
319#if '0'!=240
320make an error "Character set is not EBCDIC"
321#endif ],
322[ # TryCompile action if true
323cf_cv_ebcdic=yes ],
324[ # TryCompile action if false
325cf_cv_ebcdic=no])
326# end of TryCompile ])
327# end of CacheVal CvEbcdic
328AC_MSG_RESULT($cf_cv_ebcdic)
329case "$cf_cv_ebcdic" in #(vi
330 yes) AC_DEFINE(EBCDIC)
331 line_break='"\\n"'
332 ;;
333 *) line_break='"\\012"';;
334esac
335AC_SUBST(line_break)
336
337if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200338dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200339AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000340case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200341 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000342 dnl If using cc the environment variable _CC_CCMODE must be
343 dnl set to "1", so that some compiler extensions are enabled.
344 dnl If using c89 the environment variable is named _CC_C89MODE.
345 dnl Note: compile with c89 never tested.
346 if test "$CC" = "cc"; then
347 ccm="$_CC_CCMODE"
348 ccn="CC"
349 else
350 if test "$CC" = "c89"; then
351 ccm="$_CC_C89MODE"
352 ccn="C89"
353 else
354 ccm=1
355 fi
356 fi
357 if test "$ccm" != "1"; then
358 echo ""
359 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200360 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200361 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000362 echo " Do:"
363 echo " export _CC_${ccn}MODE=1"
364 echo " and then call configure again."
365 echo "------------------------------------------"
366 exit 1
367 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200368 # Set CFLAGS for configure process.
369 # This will be reset later for config.mk.
370 # Use haltonmsg to force error for missing H files.
371 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
372 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000373 AC_MSG_RESULT(yes)
374 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200375 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000376 AC_MSG_RESULT(no)
377 ;;
378esac
379fi
380
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200381dnl Set QUOTESED. Needs additional backslashes on zOS
382if test "$zOSUnix" = "yes"; then
383 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
384else
385 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
386fi
387AC_SUBST(QUOTESED)
388
389
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200390dnl Link with -lsmack for Smack stuff; if not found
391AC_MSG_CHECKING(--disable-smack argument)
392AC_ARG_ENABLE(smack,
393 [ --disable-smack Do not check for Smack support.],
394 , enable_smack="yes")
395if test "$enable_smack" = "yes"; then
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200396 AC_MSG_RESULT(no)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200397 AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no")
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200398else
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200399 AC_MSG_RESULT(yes)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200400fi
401if test "$enable_smack" = "yes"; then
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200402 AC_CHECK_HEADER([attr/xattr.h], true, enable_smack="no")
403fi
404if test "$enable_smack" = "yes"; then
405 AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h)
406 AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>],
407 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +0200408 AC_MSG_RESULT(no); enable_smack="no")
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200409fi
410if test "$enable_smack" = "yes"; then
411 AC_CHECK_LIB(attr, setxattr,
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200412 [LIBS="$LIBS -lattr"
413 found_smack="yes"
414 AC_DEFINE(HAVE_SMACK)])
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000415fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000416
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200417dnl When smack was found don't search for SELinux
418if test "x$found_smack" = "x"; then
419 dnl Link with -lselinux for SELinux stuff; if not found
420 AC_MSG_CHECKING(--disable-selinux argument)
421 AC_ARG_ENABLE(selinux,
422 [ --disable-selinux Do not check for SELinux support.],
423 , enable_selinux="yes")
424 if test "$enable_selinux" = "yes"; then
425 AC_MSG_RESULT(no)
426 AC_CHECK_LIB(selinux, is_selinux_enabled,
427 [LIBS="$LIBS -lselinux"
428 AC_DEFINE(HAVE_SELINUX)])
429 else
430 AC_MSG_RESULT(yes)
431 fi
432fi
433
Bram Moolenaar071d4272004-06-13 20:20:40 +0000434dnl Check user requested features.
435
436AC_MSG_CHECKING(--with-features argument)
437AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
438 features="$withval"; AC_MSG_RESULT($features),
439 features="normal"; AC_MSG_RESULT(Defaulting to normal))
440
441dovimdiff=""
442dogvimdiff=""
443case "$features" in
444 tiny) AC_DEFINE(FEAT_TINY) ;;
445 small) AC_DEFINE(FEAT_SMALL) ;;
446 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
447 dogvimdiff="installgvimdiff" ;;
448 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
449 dogvimdiff="installgvimdiff" ;;
450 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
451 dogvimdiff="installgvimdiff" ;;
452 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
453esac
454
455AC_SUBST(dovimdiff)
456AC_SUBST(dogvimdiff)
457
458AC_MSG_CHECKING(--with-compiledby argument)
459AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
460 compiledby="$withval"; AC_MSG_RESULT($withval),
461 compiledby=""; AC_MSG_RESULT(no))
462AC_SUBST(compiledby)
463
464AC_MSG_CHECKING(--disable-xsmp argument)
465AC_ARG_ENABLE(xsmp,
466 [ --disable-xsmp Disable XSMP session management],
467 , enable_xsmp="yes")
468
469if test "$enable_xsmp" = "yes"; then
470 AC_MSG_RESULT(no)
471 AC_MSG_CHECKING(--disable-xsmp-interact argument)
472 AC_ARG_ENABLE(xsmp-interact,
473 [ --disable-xsmp-interact Disable XSMP interaction],
474 , enable_xsmp_interact="yes")
475 if test "$enable_xsmp_interact" = "yes"; then
476 AC_MSG_RESULT(no)
477 AC_DEFINE(USE_XSMP_INTERACT)
478 else
479 AC_MSG_RESULT(yes)
480 fi
481else
482 AC_MSG_RESULT(yes)
483fi
484
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200485dnl Check for Lua feature.
486AC_MSG_CHECKING(--enable-luainterp argument)
487AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200488 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200489 [enable_luainterp="no"])
490AC_MSG_RESULT($enable_luainterp)
491
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200492if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200493 dnl -- find the lua executable
494 AC_SUBST(vi_cv_path_lua)
495
496 AC_MSG_CHECKING(--with-lua-prefix argument)
497 AC_ARG_WITH(lua_prefix,
498 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
499 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200500 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200501
502 if test "X$with_lua_prefix" != "X"; then
503 vi_cv_path_lua_pfx="$with_lua_prefix"
504 else
505 AC_MSG_CHECKING(LUA_PREFIX environment var)
506 if test "X$LUA_PREFIX" != "X"; then
507 AC_MSG_RESULT("$LUA_PREFIX")
508 vi_cv_path_lua_pfx="$LUA_PREFIX"
509 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200510 AC_MSG_RESULT([not set, default to /usr])
511 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200512 fi
513 fi
514
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200515 AC_MSG_CHECKING(--with-luajit)
516 AC_ARG_WITH(luajit,
517 [ --with-luajit Link with LuaJIT instead of Lua.],
518 [vi_cv_with_luajit="$withval"],
519 [vi_cv_with_luajit="no"])
520 AC_MSG_RESULT($vi_cv_with_luajit)
521
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200522 LUA_INC=
523 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200524 if test "x$vi_cv_with_luajit" != "xno"; then
525 dnl -- try to find LuaJIT executable
526 AC_PATH_PROG(vi_cv_path_luajit, luajit)
527 if test "X$vi_cv_path_luajit" != "X"; then
528 dnl -- find LuaJIT version
529 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
Bram Moolenaar49b10272013-11-21 12:17:51 +0100530 [ 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 +0200531 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
532 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
533 vi_cv_path_lua="$vi_cv_path_luajit"
534 vi_cv_version_lua="$vi_cv_version_lua_luajit"
535 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200536 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200537 dnl -- try to find Lua executable
538 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
539 if test "X$vi_cv_path_plain_lua" != "X"; then
540 dnl -- find Lua version
541 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
542 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
543 fi
544 vi_cv_path_lua="$vi_cv_path_plain_lua"
545 vi_cv_version_lua="$vi_cv_version_plain_lua"
546 fi
547 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
548 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 +0100549 if test -f "$vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200550 AC_MSG_RESULT(yes)
551 LUA_INC=/luajit-$vi_cv_version_luajit
552 fi
553 fi
554 if test "X$LUA_INC" = "X"; then
555 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
Bram Moolenaar49222be2015-12-11 18:11:30 +0100556 if test -f "$vi_cv_path_lua_pfx/include/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200557 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200558 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200559 AC_MSG_RESULT(no)
560 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 +0100561 if test -f "$vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200562 AC_MSG_RESULT(yes)
563 LUA_INC=/lua$vi_cv_version_lua
564 else
565 AC_MSG_RESULT(no)
566 vi_cv_path_lua_pfx=
567 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200568 fi
569 fi
570 fi
571
572 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200573 if test "x$vi_cv_with_luajit" != "xno"; then
574 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
575 if test "X$multiarch" != "X"; then
576 lib_multiarch="lib/${multiarch}"
577 else
578 lib_multiarch="lib"
579 fi
580 if test "X$vi_cv_version_lua" = "X"; then
581 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
582 else
583 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
584 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200585 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200586 if test "X$LUA_INC" != "X"; then
587 dnl Test alternate location using version
588 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
589 else
590 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
591 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200592 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200593 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200594 lua_ok="yes"
595 else
596 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
597 libs_save=$LIBS
598 LIBS="$LIBS $LUA_LIBS"
599 AC_TRY_LINK(,[ ],
600 AC_MSG_RESULT(yes); lua_ok="yes",
601 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
602 LIBS=$libs_save
603 fi
604 if test "x$lua_ok" = "xyes"; then
605 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
606 LUA_SRC="if_lua.c"
607 LUA_OBJ="objects/if_lua.o"
608 LUA_PRO="if_lua.pro"
609 AC_DEFINE(FEAT_LUA)
610 fi
611 if test "$enable_luainterp" = "dynamic"; then
612 if test "x$vi_cv_with_luajit" != "xno"; then
613 luajit="jit"
614 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200615 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
616 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
617 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200618 if test "x$MACOSX" = "xyes"; then
619 ext="dylib"
620 indexes=""
621 else
622 ext="so"
623 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
624 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
625 if test "X$multiarch" != "X"; then
626 lib_multiarch="lib/${multiarch}"
627 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200628 fi
629 dnl Determine the sover for the current version, but fallback to
630 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200631 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200632 for subdir in "${lib_multiarch}" lib64 lib; do
633 if test -z "$subdir"; then
634 continue
635 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200636 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
637 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
638 for i in $indexes ""; do
639 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200640 sover2="$i"
641 break 3
642 fi
643 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100644 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200645 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200646 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200647 if test "X$sover" = "X"; then
648 AC_MSG_RESULT(no)
649 lua_ok="no"
650 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
651 else
652 AC_MSG_RESULT(yes)
653 lua_ok="yes"
654 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
655 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200656 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200657 AC_DEFINE(DYNAMIC_LUA)
658 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200659 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200660 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200661 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
662 test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
663 test "`(uname -m) 2>/dev/null`" = "x86_64"; then
664 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
665 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
666 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200667 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200668 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100669 AC_MSG_ERROR([could not configure lua])
670 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200671 AC_SUBST(LUA_SRC)
672 AC_SUBST(LUA_OBJ)
673 AC_SUBST(LUA_PRO)
674 AC_SUBST(LUA_LIBS)
675 AC_SUBST(LUA_CFLAGS)
676fi
677
678
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000679dnl Check for MzScheme feature.
680AC_MSG_CHECKING(--enable-mzschemeinterp argument)
681AC_ARG_ENABLE(mzschemeinterp,
682 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
683 [enable_mzschemeinterp="no"])
684AC_MSG_RESULT($enable_mzschemeinterp)
685
686if test "$enable_mzschemeinterp" = "yes"; then
687 dnl -- find the mzscheme executable
688 AC_SUBST(vi_cv_path_mzscheme)
689
690 AC_MSG_CHECKING(--with-plthome argument)
691 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000692 [ --with-plthome=PLTHOME Use PLTHOME.],
693 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000694 with_plthome="";AC_MSG_RESULT("no"))
695
696 if test "X$with_plthome" != "X"; then
697 vi_cv_path_mzscheme_pfx="$with_plthome"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100698 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000699 else
700 AC_MSG_CHECKING(PLTHOME environment var)
701 if test "X$PLTHOME" != "X"; then
702 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000703 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100704 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000705 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000706 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000707 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000708 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000709
710 dnl resolve symbolic link, the executable is often elsewhere and there
711 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000712 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000713 lsout=`ls -l $vi_cv_path_mzscheme`
714 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
715 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
716 fi
717 fi
718
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000719 if test "X$vi_cv_path_mzscheme" != "X"; then
720 dnl -- find where MzScheme thinks it was installed
721 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000722 dnl different versions of MzScheme differ in command line processing
723 dnl use universal approach
724 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000725 (build-path (call-with-values \
726 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000727 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
728 dnl Remove a trailing slash
729 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
730 sed -e 's+/$++'` ])
731 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000732 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000733 fi
734 fi
735
736 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100737 AC_MSG_CHECKING(for racket include directory)
738 SCHEME_INC=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-include-dir))) (when (path? p) (display p)))'`
739 if test "X$SCHEME_INC" != "X"; then
740 AC_MSG_RESULT(${SCHEME_INC})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000741 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100742 AC_MSG_RESULT(not found)
743 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
744 if test -f "$vi_cv_path_mzscheme_pfx/include/scheme.h"; then
745 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000746 AC_MSG_RESULT(yes)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000747 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000748 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100749 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
750 if test -f "$vi_cv_path_mzscheme_pfx/include/plt/scheme.h"; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000751 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100752 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000753 else
754 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100755 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
756 if test -f "$vi_cv_path_mzscheme_pfx/include/racket/scheme.h"; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100757 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100758 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100759 else
760 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100761 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
762 if test -f /usr/include/plt/scheme.h; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100763 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100764 SCHEME_INC=/usr/include/plt
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100765 else
766 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100767 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
768 if test -f /usr/include/racket/scheme.h; then
769 AC_MSG_RESULT(yes)
770 SCHEME_INC=/usr/include/racket
771 else
772 AC_MSG_RESULT(no)
773 vi_cv_path_mzscheme_pfx=
774 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100775 fi
776 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000777 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000778 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000779 fi
780 fi
781
782 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100783
784 AC_MSG_CHECKING(for racket lib directory)
785 SCHEME_LIB=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-lib-dir))) (when (path? p) (display p)))'`
786 if test "X$SCHEME_LIB" != "X"; then
787 AC_MSG_RESULT(${SCHEME_LIB})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000788 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100789 AC_MSG_RESULT(not found)
790 fi
791
792 for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do
793 if test "X$path" != "X"; then
794 if test "x$MACOSX" = "xyes"; then
795 MZSCHEME_LIBS="-framework Racket"
796 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
797 elif test -f "${path}/libmzscheme3m.a"; then
798 MZSCHEME_LIBS="${path}/libmzscheme3m.a"
799 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
800 elif test -f "${path}/libracket3m.a"; then
801 MZSCHEME_LIBS="${path}/libracket3m.a"
802 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
803 elif test -f "${path}/libracket.a"; then
804 MZSCHEME_LIBS="${path}/libracket.a ${path}/libmzgc.a"
805 elif test -f "${path}/libmzscheme.a"; then
806 MZSCHEME_LIBS="${path}/libmzscheme.a ${path}/libmzgc.a"
807 else
808 dnl Using shared objects
809 if test -f "${path}/libmzscheme3m.so"; then
810 MZSCHEME_LIBS="-L${path} -lmzscheme3m"
811 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
812 elif test -f "${path}/libracket3m.so"; then
813 MZSCHEME_LIBS="-L${path} -lracket3m"
814 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
815 elif test -f "${path}/libracket.so"; then
816 MZSCHEME_LIBS="-L${path} -lracket -lmzgc"
817 else
818 dnl try next until last
819 if test "$path" != "$SCHEME_LIB"; then
820 continue
821 fi
822 MZSCHEME_LIBS="-L${path} -lmzscheme -lmzgc"
823 fi
824 if test "$GCC" = yes; then
825 dnl Make Vim remember the path to the library. For when it's not in
826 dnl $LD_LIBRARY_PATH.
827 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${path}"
828 elif test "`(uname) 2>/dev/null`" = SunOS &&
829 uname -r | grep '^5' >/dev/null; then
830 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${path}"
831 fi
832 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000833 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100834 if test "X$MZSCHEME_LIBS" != "X"; then
835 break
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000836 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100837 done
838
839 AC_MSG_CHECKING([if racket requires -pthread])
840 if test "X$SCHEME_LIB" != "X" && $FGREP -e -pthread "$SCHEME_LIB/buildinfo" >/dev/null ; then
841 AC_MSG_RESULT(yes)
842 MZSCHEME_LIBS="${MZSCHEME_LIBS} -pthread"
843 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -pthread"
844 else
845 AC_MSG_RESULT(no)
846 fi
847
848 AC_MSG_CHECKING(for racket config directory)
849 SCHEME_CONFIGDIR=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-config-dir))) (when (path? p) (display p)))'`
850 if test "X$SCHEME_CONFIGDIR" != "X"; then
851 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DMZSCHEME_CONFIGDIR='\"${SCHEME_CONFIGDIR}\"'"
852 AC_MSG_RESULT(${SCHEME_CONFIGDIR})
853 else
854 AC_MSG_RESULT(not found)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000855 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100856
857 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100858 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))))'`
859 if test "X$SCHEME_COLLECTS" = "X"; then
860 if test -d "$vi_cv_path_mzscheme_pfx/lib/plt/collects"; then
861 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100862 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100863 if test -d "$vi_cv_path_mzscheme_pfx/lib/racket/collects"; then
864 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100865 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100866 if test -d "$vi_cv_path_mzscheme_pfx/share/racket/collects"; then
867 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
868 else
869 if test -d "$vi_cv_path_mzscheme_pfx/collects"; then
870 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
871 fi
Bram Moolenaar75676462013-01-30 14:55:42 +0100872 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100873 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100874 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000875 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100876 if test "X$SCHEME_COLLECTS" != "X" ; then
877 AC_MSG_RESULT(${SCHEME_COLLECTS})
878 else
879 AC_MSG_RESULT(not found)
880 fi
881
882 AC_MSG_CHECKING(for mzscheme_base.c)
883 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000884 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100885 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
886 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100887 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100888 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100889 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100890 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
891 MZSCHEME_MOD="++lib scheme/base"
892 else
893 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
894 MZSCHEME_EXTRA="mzscheme_base.c"
895 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
896 MZSCHEME_MOD=""
897 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100898 fi
899 fi
900 if test "X$MZSCHEME_EXTRA" != "X" ; then
901 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000902 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100903 AC_MSG_RESULT(needed)
904 else
905 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000906 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100907
Bram Moolenaar9e902192013-07-17 18:58:11 +0200908 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
909 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
910
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000911 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100912 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200913
914 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
915 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
916 cflags_save=$CFLAGS
917 libs_save=$LIBS
918 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
919 LIBS="$LIBS $MZSCHEME_LIBS"
920 AC_TRY_LINK(,[ ],
921 AC_MSG_RESULT(yes); mzs_ok=yes,
922 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
923 CFLAGS=$cflags_save
924 LIBS=$libs_save
925 if test $mzs_ok = yes; then
926 MZSCHEME_SRC="if_mzsch.c"
927 MZSCHEME_OBJ="objects/if_mzsch.o"
928 MZSCHEME_PRO="if_mzsch.pro"
929 AC_DEFINE(FEAT_MZSCHEME)
930 else
931 MZSCHEME_CFLAGS=
932 MZSCHEME_LIBS=
933 MZSCHEME_EXTRA=
934 MZSCHEME_MZC=
935 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000936 fi
937 AC_SUBST(MZSCHEME_SRC)
938 AC_SUBST(MZSCHEME_OBJ)
939 AC_SUBST(MZSCHEME_PRO)
940 AC_SUBST(MZSCHEME_LIBS)
941 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000942 AC_SUBST(MZSCHEME_EXTRA)
943 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000944fi
945
946
Bram Moolenaar071d4272004-06-13 20:20:40 +0000947AC_MSG_CHECKING(--enable-perlinterp argument)
948AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200949 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000950 [enable_perlinterp="no"])
951AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200952if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000953 AC_SUBST(vi_cv_path_perl)
954 AC_PATH_PROG(vi_cv_path_perl, perl)
955 if test "X$vi_cv_path_perl" != "X"; then
956 AC_MSG_CHECKING(Perl version)
957 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
958 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200959 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000960 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
961 badthreads=no
962 else
963 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
964 eval `$vi_cv_path_perl -V:use5005threads`
965 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
966 badthreads=no
967 else
968 badthreads=yes
969 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
970 fi
971 else
972 badthreads=yes
973 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
974 fi
975 fi
976 if test $badthreads = no; then
977 AC_MSG_RESULT(OK)
978 eval `$vi_cv_path_perl -V:shrpenv`
979 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
980 shrpenv=""
981 fi
982 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
983 AC_SUBST(vi_cv_perllib)
Bram Moolenaard5f62b12014-08-17 17:05:44 +0200984 vi_cv_perl_extutils=unknown_perl_extutils_path
985 for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do
986 xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp"
987 if test -f "$xsubpp_path"; then
988 vi_cv_perl_xsubpp="$xsubpp_path"
989 fi
990 done
991 AC_SUBST(vi_cv_perl_xsubpp)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000992 dnl Remove "-fno-something", it breaks using cproto.
Bram Moolenaar280a8682015-06-21 13:41:08 +0200993 dnl Remove "-fdebug-prefix-map", it isn't supported by clang.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000994 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
Bram Moolenaar280a8682015-06-21 13:41:08 +0200995 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
996 -e 's/-fdebug-prefix-map[[^ ]]*//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000997 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
998 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
999 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
1000 -e 's/-bE:perl.exp//' -e 's/-lc //'`
1001 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
1002 dnl a test in configure may fail because of that.
1003 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
1004 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
1005
1006 dnl check that compiling a simple program still works with the flags
1007 dnl added for Perl.
1008 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
1009 cflags_save=$CFLAGS
1010 libs_save=$LIBS
1011 ldflags_save=$LDFLAGS
1012 CFLAGS="$CFLAGS $perlcppflags"
1013 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001014 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001015 LDFLAGS="$perlldflags $LDFLAGS"
1016 AC_TRY_LINK(,[ ],
1017 AC_MSG_RESULT(yes); perl_ok=yes,
1018 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
1019 CFLAGS=$cflags_save
1020 LIBS=$libs_save
1021 LDFLAGS=$ldflags_save
1022 if test $perl_ok = yes; then
1023 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +00001024 dnl remove -pipe and -Wxxx, it confuses cproto
1025 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001026 fi
1027 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001028 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001029 LDFLAGS="$perlldflags $LDFLAGS"
1030 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001031 fi
1032 PERL_LIBS=$perllibs
1033 PERL_SRC="auto/if_perl.c if_perlsfio.c"
1034 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
1035 PERL_PRO="if_perl.pro if_perlsfio.pro"
1036 AC_DEFINE(FEAT_PERL)
1037 fi
1038 fi
1039 else
1040 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
1041 fi
1042 fi
1043
1044 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +00001045 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +00001046 dir=/System/Library/Perl
1047 darwindir=$dir/darwin
1048 if test -d $darwindir; then
1049 PERL=/usr/bin/perl
1050 else
1051 dnl Mac OS X 10.3
1052 dir=/System/Library/Perl/5.8.1
1053 darwindir=$dir/darwin-thread-multi-2level
1054 if test -d $darwindir; then
1055 PERL=/usr/bin/perl
1056 fi
1057 fi
1058 if test -n "$PERL"; then
1059 PERL_DIR="$dir"
1060 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1061 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1062 PERL_LIBS="-L$darwindir/CORE -lperl"
1063 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001064 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1065 dnl be included if requested by passing --with-mac-arch to
1066 dnl configure, so strip these flags first (if present)
1067 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1068 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 +00001069 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001070 if test "$enable_perlinterp" = "dynamic"; then
1071 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1072 AC_DEFINE(DYNAMIC_PERL)
1073 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
1074 fi
1075 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001076
1077 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1078 AC_MSG_ERROR([could not configure perl])
1079 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001080fi
1081AC_SUBST(shrpenv)
1082AC_SUBST(PERL_SRC)
1083AC_SUBST(PERL_OBJ)
1084AC_SUBST(PERL_PRO)
1085AC_SUBST(PERL_CFLAGS)
1086AC_SUBST(PERL_LIBS)
1087
1088AC_MSG_CHECKING(--enable-pythoninterp argument)
1089AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001090 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001091 [enable_pythoninterp="no"])
1092AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001093if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001094 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1095 AC_MSG_ERROR([cannot use Python with tiny or small features])
1096 fi
1097
Bram Moolenaar071d4272004-06-13 20:20:40 +00001098 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001099 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001100 if test "X$vi_cv_path_python" != "X"; then
1101
1102 dnl -- get its version number
1103 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1104 [[vi_cv_var_python_version=`
1105 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1106 ]])
1107
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001108 dnl -- it must be at least version 2.3
1109 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001110 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001111 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001112 then
1113 AC_MSG_RESULT(yep)
1114
1115 dnl -- find where python thinks it was installed
1116 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1117 [ vi_cv_path_python_pfx=`
1118 ${vi_cv_path_python} -c \
1119 "import sys; print sys.prefix"` ])
1120
1121 dnl -- and where it thinks it runs
1122 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1123 [ vi_cv_path_python_epfx=`
1124 ${vi_cv_path_python} -c \
1125 "import sys; print sys.exec_prefix"` ])
1126
1127 dnl -- python's internal library path
1128
1129 AC_CACHE_VAL(vi_cv_path_pythonpath,
1130 [ vi_cv_path_pythonpath=`
1131 unset PYTHONPATH;
1132 ${vi_cv_path_python} -c \
1133 "import sys, string; print string.join(sys.path,':')"` ])
1134
1135 dnl -- where the Python implementation library archives are
1136
1137 AC_ARG_WITH(python-config-dir,
1138 [ --with-python-config-dir=PATH Python's config directory],
1139 [ vi_cv_path_python_conf="${withval}" ] )
1140
1141 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1142 [
1143 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001144 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1145 if test -d "$d" && test -f "$d/config.c"; then
1146 vi_cv_path_python_conf="$d"
1147 else
1148 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1149 for subdir in lib64 lib share; do
1150 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1151 if test -d "$d" && test -f "$d/config.c"; then
1152 vi_cv_path_python_conf="$d"
1153 fi
1154 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001155 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001156 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001157 ])
1158
1159 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1160
1161 if test "X$PYTHON_CONFDIR" = "X"; then
1162 AC_MSG_RESULT([can't find it!])
1163 else
1164
1165 dnl -- we need to examine Python's config/Makefile too
1166 dnl see what the interpreter is built from
1167 AC_CACHE_VAL(vi_cv_path_python_plibs,
1168 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001169 pwd=`pwd`
1170 tmp_mkf="$pwd/config-PyMake$$"
1171 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001172__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001173 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001174 @echo "python_LIBS='$(LIBS)'"
1175 @echo "python_SYSLIBS='$(SYSLIBS)'"
1176 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001177 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001178 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001179 @echo "python_PYTHONFRAMEWORK='$(PYTHONFRAMEWORK)'"
1180 @echo "python_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
1181 @echo "python_PYTHONFRAMEWORKINSTALLDIR='$(PYTHONFRAMEWORKINSTALLDIR)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001182eof
1183 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001184 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1185 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001186 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1187 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1188 vi_cv_path_python_plibs="-framework Python"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001189 if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
1190 vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
1191 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001192 else
1193 if test "${vi_cv_var_python_version}" = "1.4"; then
1194 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1195 else
1196 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1197 fi
Bram Moolenaar6c927552015-03-24 12:21:33 +01001198 dnl -- Check if the path contained in python_LINKFORSHARED is
1199 dnl usable for vim build. If not, make and try other
1200 dnl candidates.
Bram Moolenaara161e262015-03-24 15:14:27 +01001201 if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
Bram Moolenaar6c927552015-03-24 12:21:33 +01001202 python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]].*/\1/'`
1203 python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]][[ \t]]*\(.*\)/\2/'`
1204 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1205 dnl -- The path looks relative. Guess the absolute one using
1206 dnl the prefix and try that.
1207 python_link_path="${python_PYTHONFRAMEWORKPREFIX}/${python_link_path}"
1208 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1209 dnl -- A last resort.
1210 python_link_path="${python_PYTHONFRAMEWORKINSTALLDIR}/Versions/${vi_cv_var_python_version}/${python_PYTHONFRAMEWORK}"
1211 dnl -- No check is done. The last word is left to the
1212 dnl "sanity" test on link flags that follows shortly.
1213 fi
1214 python_LINKFORSHARED="${python_link_symbol} ${python_link_path}"
1215 fi
1216 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001217 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 +00001218 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1219 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1220 fi
1221 ])
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001222 AC_CACHE_VAL(vi_cv_dll_name_python,
1223 [
1224 if test "X$python_DLLLIBRARY" != "X"; then
1225 vi_cv_dll_name_python="$python_DLLLIBRARY"
1226 else
1227 vi_cv_dll_name_python="$python_INSTSONAME"
1228 fi
1229 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001230
1231 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1232 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001233 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 +00001234 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001235 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 +00001236 fi
1237 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001238 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001239 if test "${vi_cv_var_python_version}" = "1.4"; then
1240 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1241 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001242 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 +00001243
1244 dnl On FreeBSD linking with "-pthread" is required to use threads.
1245 dnl _THREAD_SAFE must be used for compiling then.
1246 dnl The "-pthread" is added to $LIBS, so that the following check for
1247 dnl sigaltstack() will look in libc_r (it's there in libc!).
1248 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1249 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1250 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1251 AC_MSG_CHECKING([if -pthread should be used])
1252 threadsafe_flag=
1253 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001254 dnl if test "x$MACOSX" != "xyes"; then
1255 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001256 test "$GCC" = yes && threadsafe_flag="-pthread"
1257 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1258 threadsafe_flag="-D_THREAD_SAFE"
1259 thread_lib="-pthread"
1260 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001261 if test "`(uname) 2>/dev/null`" = SunOS; then
1262 threadsafe_flag="-pthreads"
1263 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001264 fi
1265 libs_save_old=$LIBS
1266 if test -n "$threadsafe_flag"; then
1267 cflags_save=$CFLAGS
1268 CFLAGS="$CFLAGS $threadsafe_flag"
1269 LIBS="$LIBS $thread_lib"
1270 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001271 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001272 AC_MSG_RESULT(no); LIBS=$libs_save_old
1273 )
1274 CFLAGS=$cflags_save
1275 else
1276 AC_MSG_RESULT(no)
1277 fi
1278
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001279 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001280 dnl added for Python.
1281 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1282 cflags_save=$CFLAGS
1283 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001284 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001285 LIBS="$LIBS $PYTHON_LIBS"
1286 AC_TRY_LINK(,[ ],
1287 AC_MSG_RESULT(yes); python_ok=yes,
1288 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1289 CFLAGS=$cflags_save
1290 LIBS=$libs_save
1291 if test $python_ok = yes; then
1292 AC_DEFINE(FEAT_PYTHON)
1293 else
1294 LIBS=$libs_save_old
1295 PYTHON_SRC=
1296 PYTHON_OBJ=
1297 PYTHON_LIBS=
1298 PYTHON_CFLAGS=
1299 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001300 fi
1301 else
1302 AC_MSG_RESULT(too old)
1303 fi
1304 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001305
1306 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1307 AC_MSG_ERROR([could not configure python])
1308 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001309fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001310
Bram Moolenaar071d4272004-06-13 20:20:40 +00001311AC_SUBST(PYTHON_CONFDIR)
1312AC_SUBST(PYTHON_LIBS)
1313AC_SUBST(PYTHON_GETPATH_CFLAGS)
1314AC_SUBST(PYTHON_CFLAGS)
1315AC_SUBST(PYTHON_SRC)
1316AC_SUBST(PYTHON_OBJ)
1317
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001318
1319AC_MSG_CHECKING(--enable-python3interp argument)
1320AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001321 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001322 [enable_python3interp="no"])
1323AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001324if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001325 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1326 AC_MSG_ERROR([cannot use Python with tiny or small features])
1327 fi
1328
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001329 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001330 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001331 if test "X$vi_cv_path_python3" != "X"; then
1332
1333 dnl -- get its version number
1334 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1335 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001336 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001337 ]])
1338
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001339 dnl -- it must be at least version 3
1340 AC_MSG_CHECKING(Python is 3.0 or better)
1341 if ${vi_cv_path_python3} -c \
1342 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1343 then
1344 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001345
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001346 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1347 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001348 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001349 vi_cv_var_python3_abiflags=
1350 if ${vi_cv_path_python3} -c \
1351 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1352 then
1353 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1354 "import sys; print(sys.abiflags)"`
1355 fi ])
1356
1357 dnl -- find where python3 thinks it was installed
1358 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1359 [ vi_cv_path_python3_pfx=`
1360 ${vi_cv_path_python3} -c \
1361 "import sys; print(sys.prefix)"` ])
1362
1363 dnl -- and where it thinks it runs
1364 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1365 [ vi_cv_path_python3_epfx=`
1366 ${vi_cv_path_python3} -c \
1367 "import sys; print(sys.exec_prefix)"` ])
1368
1369 dnl -- python3's internal library path
1370
1371 AC_CACHE_VAL(vi_cv_path_python3path,
1372 [ vi_cv_path_python3path=`
1373 unset PYTHONPATH;
1374 ${vi_cv_path_python3} -c \
1375 "import sys, string; print(':'.join(sys.path))"` ])
1376
1377 dnl -- where the Python implementation library archives are
1378
1379 AC_ARG_WITH(python3-config-dir,
1380 [ --with-python3-config-dir=PATH Python's config directory],
1381 [ vi_cv_path_python3_conf="${withval}" ] )
1382
1383 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1384 [
1385 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001386 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001387 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1388 if test -d "$d" && test -f "$d/config.c"; then
1389 vi_cv_path_python3_conf="$d"
1390 else
1391 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1392 for subdir in lib64 lib share; do
1393 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1394 if test -d "$d" && test -f "$d/config.c"; then
1395 vi_cv_path_python3_conf="$d"
1396 fi
1397 done
1398 done
1399 fi
1400 ])
1401
1402 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1403
1404 if test "X$PYTHON3_CONFDIR" = "X"; then
1405 AC_MSG_RESULT([can't find it!])
1406 else
1407
1408 dnl -- we need to examine Python's config/Makefile too
1409 dnl see what the interpreter is built from
1410 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1411 [
1412 pwd=`pwd`
1413 tmp_mkf="$pwd/config-PyMake$$"
1414 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001415__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001416 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001417 @echo "python3_LIBS='$(LIBS)'"
1418 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001419 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001420 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001421eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001422 dnl -- delete the lines from make about Entering/Leaving directory
1423 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1424 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001425 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 +02001426 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1427 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1428 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1429 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1430 ])
1431 AC_CACHE_VAL(vi_cv_dll_name_python3,
1432 [
1433 if test "X$python3_DLLLIBRARY" != "X"; then
1434 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
1435 else
1436 vi_cv_dll_name_python3="$python3_INSTSONAME"
1437 fi
1438 ])
1439
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001440 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1441 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001442 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 +02001443 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001444 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 +02001445 fi
1446 PYTHON3_SRC="if_python3.c"
1447 PYTHON3_OBJ="objects/if_python3.o"
1448
1449 dnl On FreeBSD linking with "-pthread" is required to use threads.
1450 dnl _THREAD_SAFE must be used for compiling then.
1451 dnl The "-pthread" is added to $LIBS, so that the following check for
1452 dnl sigaltstack() will look in libc_r (it's there in libc!).
1453 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1454 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1455 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1456 AC_MSG_CHECKING([if -pthread should be used])
1457 threadsafe_flag=
1458 thread_lib=
1459 dnl if test "x$MACOSX" != "xyes"; then
1460 if test "`(uname) 2>/dev/null`" != Darwin; then
1461 test "$GCC" = yes && threadsafe_flag="-pthread"
1462 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1463 threadsafe_flag="-D_THREAD_SAFE"
1464 thread_lib="-pthread"
1465 fi
1466 if test "`(uname) 2>/dev/null`" = SunOS; then
1467 threadsafe_flag="-pthreads"
1468 fi
1469 fi
1470 libs_save_old=$LIBS
1471 if test -n "$threadsafe_flag"; then
1472 cflags_save=$CFLAGS
1473 CFLAGS="$CFLAGS $threadsafe_flag"
1474 LIBS="$LIBS $thread_lib"
1475 AC_TRY_LINK(,[ ],
1476 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1477 AC_MSG_RESULT(no); LIBS=$libs_save_old
1478 )
1479 CFLAGS=$cflags_save
1480 else
1481 AC_MSG_RESULT(no)
1482 fi
1483
1484 dnl check that compiling a simple program still works with the flags
1485 dnl added for Python.
1486 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1487 cflags_save=$CFLAGS
1488 libs_save=$LIBS
1489 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1490 LIBS="$LIBS $PYTHON3_LIBS"
1491 AC_TRY_LINK(,[ ],
1492 AC_MSG_RESULT(yes); python3_ok=yes,
1493 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1494 CFLAGS=$cflags_save
1495 LIBS=$libs_save
1496 if test "$python3_ok" = yes; then
1497 AC_DEFINE(FEAT_PYTHON3)
1498 else
1499 LIBS=$libs_save_old
1500 PYTHON3_SRC=
1501 PYTHON3_OBJ=
1502 PYTHON3_LIBS=
1503 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001504 fi
1505 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001506 else
1507 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001508 fi
1509 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001510 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1511 AC_MSG_ERROR([could not configure python3])
1512 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001513fi
1514
1515AC_SUBST(PYTHON3_CONFDIR)
1516AC_SUBST(PYTHON3_LIBS)
1517AC_SUBST(PYTHON3_CFLAGS)
1518AC_SUBST(PYTHON3_SRC)
1519AC_SUBST(PYTHON3_OBJ)
1520
1521dnl if python2.x and python3.x are enabled one can only link in code
1522dnl with dlopen(), dlsym(), dlclose()
1523if test "$python_ok" = yes && test "$python3_ok" = yes; then
1524 AC_DEFINE(DYNAMIC_PYTHON)
1525 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001526 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001527 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001528 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001529 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001530 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001531 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001532 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001533 #include <dlfcn.h>
1534 /* If this program fails, then RTLD_GLOBAL is needed.
1535 * RTLD_GLOBAL will be used and then it is not possible to
1536 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001537 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001538 */
1539
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001540 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001541 {
1542 int needed = 0;
1543 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1544 if (pylib != 0)
1545 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001546 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001547 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1548 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1549 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001550 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001551 (*init)();
1552 needed = (*simple)("import termios") == -1;
1553 (*final)();
1554 dlclose(pylib);
1555 }
1556 return !needed;
1557 }
1558
1559 int main(int argc, char** argv)
1560 {
1561 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001562 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001563 not_needed = 1;
1564 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001565 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001566 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001567
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001568 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001569 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001570
1571 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1572 cflags_save=$CFLAGS
1573 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001574 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001575 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001576 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001577 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001578 #include <dlfcn.h>
1579 #include <wchar.h>
1580 /* If this program fails, then RTLD_GLOBAL is needed.
1581 * RTLD_GLOBAL will be used and then it is not possible to
1582 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001583 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001584 */
1585
1586 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1587 {
1588 int needed = 0;
1589 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1590 if (pylib != 0)
1591 {
1592 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1593 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1594 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1595 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1596 (*pfx)(prefix);
1597 (*init)();
1598 needed = (*simple)("import termios") == -1;
1599 (*final)();
1600 dlclose(pylib);
1601 }
1602 return !needed;
1603 }
1604
1605 int main(int argc, char** argv)
1606 {
1607 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001608 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001609 not_needed = 1;
1610 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001611 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001612 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1613
1614 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001615 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001616
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001617 PYTHON_SRC="if_python.c"
1618 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001619 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001620 PYTHON_LIBS=
1621 PYTHON3_SRC="if_python3.c"
1622 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001623 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001624 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001625elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1626 AC_DEFINE(DYNAMIC_PYTHON)
1627 PYTHON_SRC="if_python.c"
1628 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001629 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001630 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001631elif test "$python_ok" = yes; then
1632 dnl Check that adding -fPIE works. It may be needed when using a static
1633 dnl Python library.
1634 AC_MSG_CHECKING([if -fPIE can be added for Python])
1635 cflags_save=$CFLAGS
1636 libs_save=$LIBS
1637 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1638 LIBS="$LIBS $PYTHON_LIBS"
1639 AC_TRY_LINK(,[ ],
1640 AC_MSG_RESULT(yes); fpie_ok=yes,
1641 AC_MSG_RESULT(no); fpie_ok=no)
1642 CFLAGS=$cflags_save
1643 LIBS=$libs_save
1644 if test $fpie_ok = yes; then
1645 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1646 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001647elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1648 AC_DEFINE(DYNAMIC_PYTHON3)
1649 PYTHON3_SRC="if_python3.c"
1650 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001651 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001652 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001653elif test "$python3_ok" = yes; then
1654 dnl Check that adding -fPIE works. It may be needed when using a static
1655 dnl Python library.
1656 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1657 cflags_save=$CFLAGS
1658 libs_save=$LIBS
1659 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1660 LIBS="$LIBS $PYTHON3_LIBS"
1661 AC_TRY_LINK(,[ ],
1662 AC_MSG_RESULT(yes); fpie_ok=yes,
1663 AC_MSG_RESULT(no); fpie_ok=no)
1664 CFLAGS=$cflags_save
1665 LIBS=$libs_save
1666 if test $fpie_ok = yes; then
1667 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1668 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001669fi
1670
Bram Moolenaar071d4272004-06-13 20:20:40 +00001671AC_MSG_CHECKING(--enable-tclinterp argument)
1672AC_ARG_ENABLE(tclinterp,
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001673 [ --enable-tclinterp[=OPTS] Include Tcl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001674 [enable_tclinterp="no"])
1675AC_MSG_RESULT($enable_tclinterp)
1676
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001677if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001678
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001679 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001680 AC_MSG_CHECKING(--with-tclsh argument)
1681 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1682 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001683 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001684 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1685 AC_SUBST(vi_cv_path_tcl)
1686
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001687 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1688 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1689 tclsh_name="tclsh8.4"
1690 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1691 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001692 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001693 tclsh_name="tclsh8.2"
1694 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1695 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001696 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1697 tclsh_name="tclsh8.0"
1698 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1699 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001700 dnl still didn't find it, try without version number
1701 if test "X$vi_cv_path_tcl" = "X"; then
1702 tclsh_name="tclsh"
1703 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1704 fi
1705 if test "X$vi_cv_path_tcl" != "X"; then
1706 AC_MSG_CHECKING(Tcl version)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001707 if echo 'exit [[expr [info tclversion] < 8.0]]' | "$vi_cv_path_tcl" - ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001708 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1709 AC_MSG_RESULT($tclver - OK);
1710 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 +01001711 tcldll=`echo 'puts libtcl[[info tclversion]][[info sharedlibextension]]' | $vi_cv_path_tcl -`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001712
1713 AC_MSG_CHECKING(for location of Tcl include)
1714 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001715 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 +00001716 else
1717 dnl For Mac OS X 10.3, use the OS-provided framework location
1718 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1719 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001720 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001721 for try in $tclinc; do
1722 if test -f "$try/tcl.h"; then
1723 AC_MSG_RESULT($try/tcl.h)
1724 TCL_INC=$try
1725 break
1726 fi
1727 done
1728 if test -z "$TCL_INC"; then
1729 AC_MSG_RESULT(<not found>)
1730 SKIP_TCL=YES
1731 fi
1732 if test -z "$SKIP_TCL"; then
1733 AC_MSG_CHECKING(for location of tclConfig.sh script)
1734 if test "x$MACOSX" != "xyes"; then
1735 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001736 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001737 else
1738 dnl For Mac OS X 10.3, use the OS-provided framework location
1739 tclcnf="/System/Library/Frameworks/Tcl.framework"
1740 fi
1741 for try in $tclcnf; do
Bram Moolenaar49222be2015-12-11 18:11:30 +01001742 if test -f "$try/tclConfig.sh"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001743 AC_MSG_RESULT($try/tclConfig.sh)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001744 . "$try/tclConfig.sh"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001745 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001746 if test "$enable_tclinterp" = "dynamic"; then
1747 TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"`
1748 else
1749 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1750 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001751 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001752 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001753 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 +00001754 break
1755 fi
1756 done
1757 if test -z "$TCL_LIBS"; then
1758 AC_MSG_RESULT(<not found>)
1759 AC_MSG_CHECKING(for Tcl library by myself)
1760 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001761 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001762 for ext in .so .a ; do
1763 for ver in "" $tclver ; do
1764 for try in $tcllib ; do
1765 trylib=tcl$ver$ext
Bram Moolenaar49222be2015-12-11 18:11:30 +01001766 if test -f "$try/lib$trylib" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001767 AC_MSG_RESULT($try/lib$trylib)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001768 TCL_LIBS="-L\"$try\" -ltcl$ver -ldl -lm"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001769 if test "`(uname) 2>/dev/null`" = SunOS &&
1770 uname -r | grep '^5' >/dev/null; then
1771 TCL_LIBS="$TCL_LIBS -R $try"
1772 fi
1773 break 3
1774 fi
1775 done
1776 done
1777 done
1778 if test -z "$TCL_LIBS"; then
1779 AC_MSG_RESULT(<not found>)
1780 SKIP_TCL=YES
1781 fi
1782 fi
1783 if test -z "$SKIP_TCL"; then
1784 AC_DEFINE(FEAT_TCL)
1785 TCL_SRC=if_tcl.c
1786 TCL_OBJ=objects/if_tcl.o
1787 TCL_PRO=if_tcl.pro
1788 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1789 fi
1790 fi
1791 else
1792 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1793 fi
1794 fi
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001795 if test "$enable_tclinterp" = "dynamic"; then
1796 if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then
1797 AC_DEFINE(DYNAMIC_TCL)
1798 TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS"
1799 fi
1800 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001801 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1802 AC_MSG_ERROR([could not configure Tcl])
1803 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001804fi
1805AC_SUBST(TCL_SRC)
1806AC_SUBST(TCL_OBJ)
1807AC_SUBST(TCL_PRO)
1808AC_SUBST(TCL_CFLAGS)
1809AC_SUBST(TCL_LIBS)
1810
1811AC_MSG_CHECKING(--enable-rubyinterp argument)
1812AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001813 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001814 [enable_rubyinterp="no"])
1815AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001816if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001817 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1818 AC_MSG_ERROR([cannot use Ruby with tiny or small features])
1819 fi
1820
Bram Moolenaar165641d2010-02-17 16:23:09 +01001821 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001822 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001823 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1824 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1825 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001826 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001827 if test "X$vi_cv_path_ruby" != "X"; then
1828 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001829 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 +00001830 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001831 AC_MSG_CHECKING(Ruby rbconfig)
1832 ruby_rbconfig="RbConfig"
1833 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1834 ruby_rbconfig="Config"
1835 fi
1836 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001837 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001838 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 +00001839 if test "X$rubyhdrdir" != "X"; then
1840 AC_MSG_RESULT($rubyhdrdir)
1841 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001842 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1843 if test -d "$rubyarchdir"; then
1844 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001845 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001846 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001847 if test "X$rubyversion" = "X"; then
1848 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1849 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001850 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001851 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001852 if test "X$rubylibs" != "X"; then
1853 RUBY_LIBS="$rubylibs"
1854 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001855 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1856 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001857 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001858 if test -f "$rubylibdir/$librubya"; then
1859 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001860 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1861 elif test "$librubyarg" = "libruby.a"; then
1862 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1863 librubyarg="-lruby"
1864 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001865 fi
1866
1867 if test "X$librubyarg" != "X"; then
1868 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1869 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001870 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001871 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001872 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1873 dnl be included if requested by passing --with-mac-arch to
1874 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001875 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001876 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001877 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001878 LDFLAGS="$rubyldflags $LDFLAGS"
1879 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001880 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001881 fi
1882 RUBY_SRC="if_ruby.c"
1883 RUBY_OBJ="objects/if_ruby.o"
1884 RUBY_PRO="if_ruby.pro"
1885 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001886 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001887 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001888 AC_DEFINE(DYNAMIC_RUBY)
1889 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1890 RUBY_LIBS=
1891 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001892 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001893 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001894 fi
1895 else
1896 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1897 fi
1898 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001899
1900 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1901 AC_MSG_ERROR([could not configure Ruby])
1902 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001903fi
1904AC_SUBST(RUBY_SRC)
1905AC_SUBST(RUBY_OBJ)
1906AC_SUBST(RUBY_PRO)
1907AC_SUBST(RUBY_CFLAGS)
1908AC_SUBST(RUBY_LIBS)
1909
1910AC_MSG_CHECKING(--enable-cscope argument)
1911AC_ARG_ENABLE(cscope,
1912 [ --enable-cscope Include cscope interface.], ,
1913 [enable_cscope="no"])
1914AC_MSG_RESULT($enable_cscope)
1915if test "$enable_cscope" = "yes"; then
1916 AC_DEFINE(FEAT_CSCOPE)
1917fi
1918
1919AC_MSG_CHECKING(--enable-workshop argument)
1920AC_ARG_ENABLE(workshop,
1921 [ --enable-workshop Include Sun Visual Workshop support.], ,
1922 [enable_workshop="no"])
1923AC_MSG_RESULT($enable_workshop)
1924if test "$enable_workshop" = "yes"; then
1925 AC_DEFINE(FEAT_SUN_WORKSHOP)
1926 WORKSHOP_SRC="workshop.c integration.c"
1927 AC_SUBST(WORKSHOP_SRC)
1928 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1929 AC_SUBST(WORKSHOP_OBJ)
1930 if test "${enable_gui-xxx}" = xxx; then
1931 enable_gui=motif
1932 fi
1933fi
1934
1935AC_MSG_CHECKING(--disable-netbeans argument)
1936AC_ARG_ENABLE(netbeans,
1937 [ --disable-netbeans Disable NetBeans integration support.],
1938 , [enable_netbeans="yes"])
1939if test "$enable_netbeans" = "yes"; then
1940 AC_MSG_RESULT(no)
1941 dnl On Solaris we need the socket and nsl library.
1942 AC_CHECK_LIB(socket, socket)
1943 AC_CHECK_LIB(nsl, gethostbyname)
1944 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1945 AC_TRY_LINK([
1946#include <stdio.h>
1947#include <stdlib.h>
1948#include <stdarg.h>
1949#include <fcntl.h>
1950#include <netdb.h>
1951#include <netinet/in.h>
1952#include <errno.h>
1953#include <sys/types.h>
1954#include <sys/socket.h>
1955 /* Check bitfields */
1956 struct nbbuf {
1957 unsigned int initDone:1;
1958 ushort signmaplen;
1959 };
1960 ], [
1961 /* Check creating a socket. */
1962 struct sockaddr_in server;
1963 (void)socket(AF_INET, SOCK_STREAM, 0);
1964 (void)htons(100);
1965 (void)gethostbyname("microsoft.com");
1966 if (errno == ECONNREFUSED)
1967 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1968 ],
1969 AC_MSG_RESULT(yes),
1970 AC_MSG_RESULT(no); enable_netbeans="no")
1971else
1972 AC_MSG_RESULT(yes)
1973fi
1974if test "$enable_netbeans" = "yes"; then
1975 AC_DEFINE(FEAT_NETBEANS_INTG)
1976 NETBEANS_SRC="netbeans.c"
1977 AC_SUBST(NETBEANS_SRC)
1978 NETBEANS_OBJ="objects/netbeans.o"
1979 AC_SUBST(NETBEANS_OBJ)
1980fi
1981
1982AC_MSG_CHECKING(--enable-sniff argument)
1983AC_ARG_ENABLE(sniff,
1984 [ --enable-sniff Include Sniff interface.], ,
1985 [enable_sniff="no"])
1986AC_MSG_RESULT($enable_sniff)
1987if test "$enable_sniff" = "yes"; then
1988 AC_DEFINE(FEAT_SNIFF)
1989 SNIFF_SRC="if_sniff.c"
1990 AC_SUBST(SNIFF_SRC)
1991 SNIFF_OBJ="objects/if_sniff.o"
1992 AC_SUBST(SNIFF_OBJ)
1993fi
1994
1995AC_MSG_CHECKING(--enable-multibyte argument)
1996AC_ARG_ENABLE(multibyte,
1997 [ --enable-multibyte Include multibyte editing support.], ,
1998 [enable_multibyte="no"])
1999AC_MSG_RESULT($enable_multibyte)
2000if test "$enable_multibyte" = "yes"; then
2001 AC_DEFINE(FEAT_MBYTE)
2002fi
2003
2004AC_MSG_CHECKING(--enable-hangulinput argument)
2005AC_ARG_ENABLE(hangulinput,
2006 [ --enable-hangulinput Include Hangul input support.], ,
2007 [enable_hangulinput="no"])
2008AC_MSG_RESULT($enable_hangulinput)
2009
2010AC_MSG_CHECKING(--enable-xim argument)
2011AC_ARG_ENABLE(xim,
2012 [ --enable-xim Include XIM input support.],
2013 AC_MSG_RESULT($enable_xim),
2014 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002015
2016AC_MSG_CHECKING(--enable-fontset argument)
2017AC_ARG_ENABLE(fontset,
2018 [ --enable-fontset Include X fontset output support.], ,
2019 [enable_fontset="no"])
2020AC_MSG_RESULT($enable_fontset)
2021dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
2022
2023test -z "$with_x" && with_x=yes
2024test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
2025if test "$with_x" = no; then
2026 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
2027else
2028 dnl Do this check early, so that its failure can override user requests.
2029
2030 AC_PATH_PROG(xmkmfpath, xmkmf)
2031
2032 AC_PATH_XTRA
2033
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002034 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00002035 dnl be compiled with a special option.
2036 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002037 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002038 CFLAGS="$CFLAGS -W c,dll"
2039 LDFLAGS="$LDFLAGS -W l,dll"
2040 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
2041 fi
2042
2043 dnl On my HPUX system the X include dir is found, but the lib dir not.
2044 dnl This is a desparate try to fix this.
2045
2046 if test -d "$x_includes" && test ! -d "$x_libraries"; then
2047 x_libraries=`echo "$x_includes" | sed s/include/lib/`
2048 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
2049 X_LIBS="$X_LIBS -L$x_libraries"
2050 if test "`(uname) 2>/dev/null`" = SunOS &&
2051 uname -r | grep '^5' >/dev/null; then
2052 X_LIBS="$X_LIBS -R $x_libraries"
2053 fi
2054 fi
2055
2056 if test -d "$x_libraries" && test ! -d "$x_includes"; then
2057 x_includes=`echo "$x_libraries" | sed s/lib/include/`
2058 AC_MSG_RESULT(Corrected X includes to $x_includes)
2059 X_CFLAGS="$X_CFLAGS -I$x_includes"
2060 fi
2061
2062 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
2063 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
2064 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
2065 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
2066 dnl Same for "-R/usr/lib ".
2067 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
2068
2069
2070 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002071 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
2072 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002073 AC_MSG_CHECKING(if X11 header files can be found)
2074 cflags_save=$CFLAGS
2075 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002076 AC_TRY_COMPILE([#include <X11/Xlib.h>
2077#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00002078 AC_MSG_RESULT(yes),
2079 AC_MSG_RESULT(no); no_x=yes)
2080 CFLAGS=$cflags_save
2081
2082 if test "${no_x-no}" = yes; then
2083 with_x=no
2084 else
2085 AC_DEFINE(HAVE_X11)
2086 X_LIB="-lXt -lX11";
2087 AC_SUBST(X_LIB)
2088
2089 ac_save_LDFLAGS="$LDFLAGS"
2090 LDFLAGS="-L$x_libraries $LDFLAGS"
2091
2092 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2093 dnl For HP-UX 10.20 it must be before -lSM -lICE
2094 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2095 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2096
2097 dnl Some systems need -lnsl -lsocket when testing for ICE.
2098 dnl The check above doesn't do this, try here (again). Also needed to get
2099 dnl them after Xdmcp. link.sh will remove them when not needed.
2100 dnl Check for other function than above to avoid the cached value
2101 AC_CHECK_LIB(ICE, IceOpenConnection,
2102 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2103
2104 dnl Check for -lXpm (needed for some versions of Motif)
2105 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2106 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2107 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2108
2109 dnl Check that the X11 header files don't use implicit declarations
2110 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2111 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002112 dnl -Werror is GCC only, others like Solaris Studio might not like it
2113 if test "$GCC" = yes; then
2114 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2115 else
2116 CFLAGS="$CFLAGS $X_CFLAGS"
2117 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002118 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2119 AC_MSG_RESULT(no),
2120 CFLAGS="$CFLAGS -Wno-implicit-int"
2121 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2122 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2123 AC_MSG_RESULT(test failed)
2124 )
2125 )
2126 CFLAGS=$cflags_save
2127
2128 LDFLAGS="$ac_save_LDFLAGS"
2129
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002130 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2131 AC_CACHE_VAL(ac_cv_small_wchar_t,
2132 [AC_TRY_RUN([
2133#include <X11/Xlib.h>
2134#if STDC_HEADERS
2135# include <stdlib.h>
2136# include <stddef.h>
2137#endif
2138 main()
2139 {
2140 if (sizeof(wchar_t) <= 2)
2141 exit(1);
2142 exit(0);
2143 }],
2144 ac_cv_small_wchar_t="no",
2145 ac_cv_small_wchar_t="yes",
2146 AC_MSG_ERROR(failed to compile test program))])
2147 AC_MSG_RESULT($ac_cv_small_wchar_t)
2148 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2149 AC_DEFINE(SMALL_WCHAR_T)
2150 fi
2151
Bram Moolenaar071d4272004-06-13 20:20:40 +00002152 fi
2153fi
2154
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002155test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002156
2157AC_MSG_CHECKING(--enable-gui argument)
2158AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002159 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk2/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002160
2161dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2162dnl Do not use character classes for portability with old tools.
2163enable_gui_canon=`echo "_$enable_gui" | \
2164 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2165
2166dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002167SKIP_GTK2=YES
2168SKIP_GNOME=YES
2169SKIP_MOTIF=YES
2170SKIP_ATHENA=YES
2171SKIP_NEXTAW=YES
2172SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002173SKIP_CARBON=YES
2174GUITYPE=NONE
2175
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002176if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002177 SKIP_PHOTON=
2178 case "$enable_gui_canon" in
2179 no) AC_MSG_RESULT(no GUI support)
2180 SKIP_PHOTON=YES ;;
2181 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2182 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2183 photon) AC_MSG_RESULT(Photon GUI support) ;;
2184 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2185 SKIP_PHOTON=YES ;;
2186 esac
2187
2188elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2189 SKIP_CARBON=
2190 case "$enable_gui_canon" in
2191 no) AC_MSG_RESULT(no GUI support)
2192 SKIP_CARBON=YES ;;
2193 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002194 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2195 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002196 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2197 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2198 SKIP_CARBON=YES ;;
2199 esac
2200
2201else
2202
Bram Moolenaar071d4272004-06-13 20:20:40 +00002203 case "$enable_gui_canon" in
2204 no|none) AC_MSG_RESULT(no GUI support) ;;
2205 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002206 SKIP_GTK2=
2207 SKIP_GNOME=
2208 SKIP_MOTIF=
2209 SKIP_ATHENA=
2210 SKIP_NEXTAW=
2211 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002212 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002213 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002214 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2215 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002216 SKIP_GTK2=;;
2217 motif) AC_MSG_RESULT(Motif GUI support)
2218 SKIP_MOTIF=;;
2219 athena) AC_MSG_RESULT(Athena GUI support)
2220 SKIP_ATHENA=;;
2221 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2222 SKIP_NEXTAW=;;
2223 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2224 esac
2225
2226fi
2227
Bram Moolenaar071d4272004-06-13 20:20:40 +00002228if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2229 -a "$enable_gui_canon" != "gnome2"; then
2230 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2231 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002232 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002233 , enable_gtk2_check="yes")
2234 AC_MSG_RESULT($enable_gtk2_check)
2235 if test "x$enable_gtk2_check" = "xno"; then
2236 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002237 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002238 fi
2239fi
2240
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002241if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002242 AC_MSG_CHECKING(whether or not to look for GNOME)
2243 AC_ARG_ENABLE(gnome-check,
2244 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2245 , enable_gnome_check="no")
2246 AC_MSG_RESULT($enable_gnome_check)
2247 if test "x$enable_gnome_check" = "xno"; then
2248 SKIP_GNOME=YES
2249 fi
2250fi
2251
2252if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2253 AC_MSG_CHECKING(whether or not to look for Motif)
2254 AC_ARG_ENABLE(motif-check,
2255 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2256 , enable_motif_check="yes")
2257 AC_MSG_RESULT($enable_motif_check)
2258 if test "x$enable_motif_check" = "xno"; then
2259 SKIP_MOTIF=YES
2260 fi
2261fi
2262
2263if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2264 AC_MSG_CHECKING(whether or not to look for Athena)
2265 AC_ARG_ENABLE(athena-check,
2266 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2267 , enable_athena_check="yes")
2268 AC_MSG_RESULT($enable_athena_check)
2269 if test "x$enable_athena_check" = "xno"; then
2270 SKIP_ATHENA=YES
2271 fi
2272fi
2273
2274if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2275 AC_MSG_CHECKING(whether or not to look for neXtaw)
2276 AC_ARG_ENABLE(nextaw-check,
2277 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2278 , enable_nextaw_check="yes")
2279 AC_MSG_RESULT($enable_nextaw_check);
2280 if test "x$enable_nextaw_check" = "xno"; then
2281 SKIP_NEXTAW=YES
2282 fi
2283fi
2284
2285if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2286 AC_MSG_CHECKING(whether or not to look for Carbon)
2287 AC_ARG_ENABLE(carbon-check,
2288 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2289 , enable_carbon_check="yes")
2290 AC_MSG_RESULT($enable_carbon_check);
2291 if test "x$enable_carbon_check" = "xno"; then
2292 SKIP_CARBON=YES
2293 fi
2294fi
2295
Bram Moolenaar843ee412004-06-30 16:16:41 +00002296
Bram Moolenaar071d4272004-06-13 20:20:40 +00002297if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2298 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002299 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002300 AC_MSG_RESULT(yes);
2301 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002302 if test "$VIMNAME" = "vim"; then
2303 VIMNAME=Vim
2304 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002305
Bram Moolenaar164fca32010-07-14 13:58:07 +02002306 if test "x$MACARCH" = "xboth"; then
2307 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2308 else
2309 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2310 fi
2311
Bram Moolenaar14716812006-05-04 21:54:08 +00002312 dnl Default install directory is not /usr/local
2313 if test x$prefix = xNONE; then
2314 prefix=/Applications
2315 fi
2316
2317 dnl Sorry for the hard coded default
2318 datadir='${prefix}/Vim.app/Contents/Resources'
2319
Bram Moolenaar071d4272004-06-13 20:20:40 +00002320 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002321 SKIP_GTK2=YES;
2322 SKIP_GNOME=YES;
2323 SKIP_MOTIF=YES;
2324 SKIP_ATHENA=YES;
2325 SKIP_NEXTAW=YES;
2326 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002327 SKIP_CARBON=YES
2328fi
2329
Bram Moolenaar071d4272004-06-13 20:20:40 +00002330dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002331dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002332dnl
2333dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002334dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002335dnl
2336AC_DEFUN(AM_PATH_GTK,
2337[
2338 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2339 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002340 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002341 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2342 no_gtk=""
2343 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2344 && $PKG_CONFIG --exists gtk+-2.0; then
2345 {
2346 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2347 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2348 dnl something like that.
2349 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002350 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002351 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2352 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2353 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2354 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2355 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2356 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2357 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2358 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002359 else
2360 no_gtk=yes
2361 fi
2362
2363 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2364 {
2365 ac_save_CFLAGS="$CFLAGS"
2366 ac_save_LIBS="$LIBS"
2367 CFLAGS="$CFLAGS $GTK_CFLAGS"
2368 LIBS="$LIBS $GTK_LIBS"
2369
2370 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002371 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002372 dnl
2373 rm -f conf.gtktest
2374 AC_TRY_RUN([
2375#include <gtk/gtk.h>
2376#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002377#if STDC_HEADERS
2378# include <stdlib.h>
2379# include <stddef.h>
2380#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002381
2382int
2383main ()
2384{
2385int major, minor, micro;
2386char *tmp_version;
2387
2388system ("touch conf.gtktest");
2389
2390/* HP/UX 9 (%@#!) writes to sscanf strings */
2391tmp_version = g_strdup("$min_gtk_version");
2392if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2393 printf("%s, bad version string\n", "$min_gtk_version");
2394 exit(1);
2395 }
2396
2397if ((gtk_major_version > major) ||
2398 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2399 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2400 (gtk_micro_version >= micro)))
2401{
2402 return 0;
2403}
2404return 1;
2405}
2406],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2407 CFLAGS="$ac_save_CFLAGS"
2408 LIBS="$ac_save_LIBS"
2409 }
2410 fi
2411 if test "x$no_gtk" = x ; then
2412 if test "x$enable_gtktest" = "xyes"; then
2413 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2414 else
2415 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2416 fi
2417 ifelse([$2], , :, [$2])
2418 else
2419 {
2420 AC_MSG_RESULT(no)
2421 GTK_CFLAGS=""
2422 GTK_LIBS=""
2423 ifelse([$3], , :, [$3])
2424 }
2425 fi
2426 }
2427 else
2428 GTK_CFLAGS=""
2429 GTK_LIBS=""
2430 ifelse([$3], , :, [$3])
2431 fi
2432 AC_SUBST(GTK_CFLAGS)
2433 AC_SUBST(GTK_LIBS)
2434 rm -f conf.gtktest
2435])
2436
2437dnl ---------------------------------------------------------------------------
2438dnl gnome
2439dnl ---------------------------------------------------------------------------
2440AC_DEFUN([GNOME_INIT_HOOK],
2441[
2442 AC_SUBST(GNOME_LIBS)
2443 AC_SUBST(GNOME_LIBDIR)
2444 AC_SUBST(GNOME_INCLUDEDIR)
2445
2446 AC_ARG_WITH(gnome-includes,
2447 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2448 [CFLAGS="$CFLAGS -I$withval"]
2449 )
2450
2451 AC_ARG_WITH(gnome-libs,
2452 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2453 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2454 )
2455
2456 AC_ARG_WITH(gnome,
2457 [ --with-gnome Specify prefix for GNOME files],
2458 if test x$withval = xyes; then
2459 want_gnome=yes
2460 ifelse([$1], [], :, [$1])
2461 else
2462 if test "x$withval" = xno; then
2463 want_gnome=no
2464 else
2465 want_gnome=yes
2466 LDFLAGS="$LDFLAGS -L$withval/lib"
2467 CFLAGS="$CFLAGS -I$withval/include"
2468 gnome_prefix=$withval/lib
2469 fi
2470 fi,
2471 want_gnome=yes)
2472
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002473 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002474 {
2475 AC_MSG_CHECKING(for libgnomeui-2.0)
2476 if $PKG_CONFIG --exists libgnomeui-2.0; then
2477 AC_MSG_RESULT(yes)
2478 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2479 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2480 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002481
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002482 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2483 dnl This might not be the right way but it works for me...
2484 AC_MSG_CHECKING(for FreeBSD)
2485 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2486 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002487 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002488 GNOME_LIBS="$GNOME_LIBS -pthread"
2489 else
2490 AC_MSG_RESULT(no)
2491 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002492 $1
2493 else
2494 AC_MSG_RESULT(not found)
2495 if test "x$2" = xfail; then
2496 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2497 fi
2498 fi
2499 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002500 fi
2501])
2502
2503AC_DEFUN([GNOME_INIT],[
2504 GNOME_INIT_HOOK([],fail)
2505])
2506
2507
2508dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002509dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002510dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002511if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002512
2513 AC_MSG_CHECKING(--disable-gtktest argument)
2514 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2515 , enable_gtktest=yes)
2516 if test "x$enable_gtktest" = "xyes" ; then
2517 AC_MSG_RESULT(gtk test enabled)
2518 else
2519 AC_MSG_RESULT(gtk test disabled)
2520 fi
2521
Bram Moolenaar071d4272004-06-13 20:20:40 +00002522 if test "X$PKG_CONFIG" = "X"; then
2523 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2524 fi
2525
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002526 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002527 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2528 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002529 AM_PATH_GTK(2.2.0,
2530 [GUI_LIB_LOC="$GTK_LIBDIR"
2531 GTK_LIBNAME="$GTK_LIBS"
2532 GUI_INC_LOC="$GTK_CFLAGS"], )
2533 if test "x$GTK_CFLAGS" != "x"; then
2534 SKIP_ATHENA=YES
2535 SKIP_NEXTAW=YES
2536 SKIP_MOTIF=YES
2537 GUITYPE=GTK
2538 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002539 fi
2540 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002541 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002542 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2543 || test "0$gtk_minor_version" -ge 2; then
2544 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2545 fi
2546 dnl
2547 dnl if GTK exists, then check for GNOME.
2548 dnl
2549 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002550 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002551 GNOME_INIT_HOOK([have_gnome=yes])
2552 if test "x$have_gnome" = xyes ; then
2553 AC_DEFINE(FEAT_GUI_GNOME)
2554 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2555 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002556 fi
2557 }
2558 fi
2559 fi
2560fi
2561
Bram Moolenaard2e03f02016-01-02 22:46:36 +01002562dnl Check the version of Gdk-Pixbuf. If the version is 2.31 or later and
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002563dnl glib-compile-resources is found in PATH, use GResource.
2564if test "x$GUITYPE" = "xGTK"; then
2565 AC_MSG_CHECKING([version of Gdk-Pixbuf])
2566 gdk_pixbuf_version=`$PKG_CONFIG --modversion gdk-pixbuf-2.0`
2567 if test "x$gdk_pixbuf_version" != x ; then
2568 gdk_pixbuf_version_minor=`echo $gdk_pixbuf_version | \
2569 sed -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/'`
2570 if test "x$gdk_pixbuf_version_minor" != x -a \
Bram Moolenaard2e03f02016-01-02 22:46:36 +01002571 $gdk_pixbuf_version_minor -ge 31 ; then
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002572 AC_MSG_RESULT([OK.])
2573 AC_PATH_PROG(GLIB_COMPILE_RESOURCES,[glib-compile-resources],no)
2574 AC_MSG_CHECKING([glib-compile-resources])
2575 if test "x$GLIB_COMPILE_RESOURCES" = xno ; then
2576 AC_MSG_RESULT([cannot be found in PATH.])
2577 else
2578 AC_MSG_RESULT([usable.])
2579 AC_DEFINE(USE_GRESOURCE)
2580 GRESOURCE_HDR="auto/gui_gtk_gresources.h"
2581 GRESOURCE_SRC="auto/gui_gtk_gresources.c"
2582 GRESOURCE_OBJ="objects/gui_gtk_gresources.o"
2583 fi
2584 else
2585 AC_MSG_RESULT([not usable.])
2586 fi
2587 else
2588 AC_MSG_RESULT([cannot obtain from pkg_config.])
2589 fi
2590fi
2591AC_SUBST(GLIB_COMPILE_RESOURCES)
2592AC_SUBST(GRESOURCE_HDR)
2593AC_SUBST(GRESOURCE_SRC)
2594AC_SUBST(GRESOURCE_OBJ)
2595
Bram Moolenaar071d4272004-06-13 20:20:40 +00002596dnl Check for Motif include files location.
2597dnl The LAST one found is used, this makes the highest version to be used,
2598dnl e.g. when Motif1.2 and Motif2.0 are both present.
2599
2600if test -z "$SKIP_MOTIF"; then
2601 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"
2602 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2603 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2604
2605 AC_MSG_CHECKING(for location of Motif GUI includes)
2606 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2607 GUI_INC_LOC=
2608 for try in $gui_includes; do
2609 if test -f "$try/Xm/Xm.h"; then
2610 GUI_INC_LOC=$try
2611 fi
2612 done
2613 if test -n "$GUI_INC_LOC"; then
2614 if test "$GUI_INC_LOC" = /usr/include; then
2615 GUI_INC_LOC=
2616 AC_MSG_RESULT(in default path)
2617 else
2618 AC_MSG_RESULT($GUI_INC_LOC)
2619 fi
2620 else
2621 AC_MSG_RESULT(<not found>)
2622 SKIP_MOTIF=YES
2623 fi
2624fi
2625
2626dnl Check for Motif library files location. In the same order as the include
2627dnl files, to avoid a mixup if several versions are present
2628
2629if test -z "$SKIP_MOTIF"; then
2630 AC_MSG_CHECKING(--with-motif-lib argument)
2631 AC_ARG_WITH(motif-lib,
2632 [ --with-motif-lib=STRING Library for Motif ],
2633 [ MOTIF_LIBNAME="${withval}" ] )
2634
2635 if test -n "$MOTIF_LIBNAME"; then
2636 AC_MSG_RESULT($MOTIF_LIBNAME)
2637 GUI_LIB_LOC=
2638 else
2639 AC_MSG_RESULT(no)
2640
2641 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2642 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2643
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002644 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2645 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002646 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002647 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 +00002648 GUI_LIB_LOC=
2649 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002650 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002651 if test -f "$libtry"; then
2652 GUI_LIB_LOC=$try
2653 fi
2654 done
2655 done
2656 if test -n "$GUI_LIB_LOC"; then
2657 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002658 if test "$GUI_LIB_LOC" = /usr/lib \
2659 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2660 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002661 GUI_LIB_LOC=
2662 AC_MSG_RESULT(in default path)
2663 else
2664 if test -n "$GUI_LIB_LOC"; then
2665 AC_MSG_RESULT($GUI_LIB_LOC)
2666 if test "`(uname) 2>/dev/null`" = SunOS &&
2667 uname -r | grep '^5' >/dev/null; then
2668 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2669 fi
2670 fi
2671 fi
2672 MOTIF_LIBNAME=-lXm
2673 else
2674 AC_MSG_RESULT(<not found>)
2675 SKIP_MOTIF=YES
2676 fi
2677 fi
2678fi
2679
2680if test -z "$SKIP_MOTIF"; then
2681 SKIP_ATHENA=YES
2682 SKIP_NEXTAW=YES
2683 GUITYPE=MOTIF
2684 AC_SUBST(MOTIF_LIBNAME)
2685fi
2686
2687dnl Check if the Athena files can be found
2688
2689GUI_X_LIBS=
2690
2691if test -z "$SKIP_ATHENA"; then
2692 AC_MSG_CHECKING(if Athena header files can be found)
2693 cflags_save=$CFLAGS
2694 CFLAGS="$CFLAGS $X_CFLAGS"
2695 AC_TRY_COMPILE([
2696#include <X11/Intrinsic.h>
2697#include <X11/Xaw/Paned.h>], ,
2698 AC_MSG_RESULT(yes),
2699 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2700 CFLAGS=$cflags_save
2701fi
2702
2703if test -z "$SKIP_ATHENA"; then
2704 GUITYPE=ATHENA
2705fi
2706
2707if test -z "$SKIP_NEXTAW"; then
2708 AC_MSG_CHECKING(if neXtaw header files can be found)
2709 cflags_save=$CFLAGS
2710 CFLAGS="$CFLAGS $X_CFLAGS"
2711 AC_TRY_COMPILE([
2712#include <X11/Intrinsic.h>
2713#include <X11/neXtaw/Paned.h>], ,
2714 AC_MSG_RESULT(yes),
2715 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2716 CFLAGS=$cflags_save
2717fi
2718
2719if test -z "$SKIP_NEXTAW"; then
2720 GUITYPE=NEXTAW
2721fi
2722
2723if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2724 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2725 dnl Avoid adding it when it twice
2726 if test -n "$GUI_INC_LOC"; then
2727 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2728 fi
2729 if test -n "$GUI_LIB_LOC"; then
2730 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2731 fi
2732
2733 dnl Check for -lXext and then for -lXmu
2734 ldflags_save=$LDFLAGS
2735 LDFLAGS="$X_LIBS $LDFLAGS"
2736 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2737 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2738 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2739 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2740 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2741 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2742 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2743 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2744 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2745 if test -z "$SKIP_MOTIF"; then
2746 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2747 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2748 fi
2749 LDFLAGS=$ldflags_save
2750
2751 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2752 AC_MSG_CHECKING(for extra X11 defines)
2753 NARROW_PROTO=
2754 rm -fr conftestdir
2755 if mkdir conftestdir; then
2756 cd conftestdir
2757 cat > Imakefile <<'EOF'
2758acfindx:
2759 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2760EOF
2761 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2762 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2763 fi
2764 cd ..
2765 rm -fr conftestdir
2766 fi
2767 if test -z "$NARROW_PROTO"; then
2768 AC_MSG_RESULT(no)
2769 else
2770 AC_MSG_RESULT($NARROW_PROTO)
2771 fi
2772 AC_SUBST(NARROW_PROTO)
2773fi
2774
2775dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2776dnl use the X11 include path
2777if test "$enable_xsmp" = "yes"; then
2778 cppflags_save=$CPPFLAGS
2779 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2780 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2781 CPPFLAGS=$cppflags_save
2782fi
2783
2784
Bram Moolenaare667c952010-07-05 22:57:59 +02002785if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002786 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2787 cppflags_save=$CPPFLAGS
2788 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2789 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2790
2791 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2792 if test ! "$enable_xim" = "no"; then
2793 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2794 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2795 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002796 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002797 fi
2798 CPPFLAGS=$cppflags_save
2799
2800 dnl automatically enable XIM when hangul input isn't enabled
2801 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2802 -a "x$GUITYPE" != "xNONE" ; then
2803 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2804 enable_xim="yes"
2805 fi
2806fi
2807
2808if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2809 cppflags_save=$CPPFLAGS
2810 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002811dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2812 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2813 AC_TRY_COMPILE([
2814#include <X11/Intrinsic.h>
2815#include <X11/Xmu/Editres.h>],
2816 [int i; i = 0;],
2817 AC_MSG_RESULT(yes)
2818 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2819 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002820 CPPFLAGS=$cppflags_save
2821fi
2822
2823dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2824if test -z "$SKIP_MOTIF"; then
2825 cppflags_save=$CPPFLAGS
2826 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002827 if test "$zOSUnix" = "yes"; then
2828 xmheader="Xm/Xm.h"
2829 else
2830 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002831 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002832 fi
2833 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002834
Bram Moolenaar77c19352012-06-13 19:19:41 +02002835 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002836 dnl Solaris uses XpmAttributes_21, very annoying.
2837 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2838 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2839 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2840 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2841 )
2842 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002843 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002844 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002845 CPPFLAGS=$cppflags_save
2846fi
2847
2848if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2849 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2850 enable_xim="no"
2851fi
2852if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2853 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2854 enable_fontset="no"
2855fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002856if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002857 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2858 enable_fontset="no"
2859fi
2860
Bram Moolenaar071d4272004-06-13 20:20:40 +00002861if test -z "$SKIP_PHOTON"; then
2862 GUITYPE=PHOTONGUI
2863fi
2864
2865AC_SUBST(GUI_INC_LOC)
2866AC_SUBST(GUI_LIB_LOC)
2867AC_SUBST(GUITYPE)
2868AC_SUBST(GUI_X_LIBS)
2869
2870if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2871 AC_MSG_ERROR([cannot use workshop without Motif])
2872fi
2873
2874dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2875if test "$enable_xim" = "yes"; then
2876 AC_DEFINE(FEAT_XIM)
2877fi
2878if test "$enable_fontset" = "yes"; then
2879 AC_DEFINE(FEAT_XFONTSET)
2880fi
2881
2882
2883dnl ---------------------------------------------------------------------------
2884dnl end of GUI-checking
2885dnl ---------------------------------------------------------------------------
2886
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002887dnl Check for Cygwin, which needs an extra source file if not using X11
Bram Moolenaar8def26a2015-12-17 15:34:53 +01002888AC_MSG_CHECKING(for CYGWIN or MSYS environment)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002889case `uname` in
Bram Moolenaar8def26a2015-12-17 15:34:53 +01002890 CYGWIN*|MSYS*) CYGWIN=yes; AC_MSG_RESULT(yes)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002891 AC_MSG_CHECKING(for CYGWIN clipboard support)
2892 if test "x$with_x" = "xno" ; then
2893 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2894 AC_MSG_RESULT(yes)
2895 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2896 else
2897 AC_MSG_RESULT(no - using X11)
2898 fi ;;
2899
2900 *) CYGWIN=no; AC_MSG_RESULT(no);;
2901esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002902
2903dnl Only really enable hangul input when GUI and XFONTSET are available
2904if test "$enable_hangulinput" = "yes"; then
2905 if test "x$GUITYPE" = "xNONE"; then
2906 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2907 enable_hangulinput=no
2908 else
2909 AC_DEFINE(FEAT_HANGULIN)
2910 HANGULIN_SRC=hangulin.c
2911 AC_SUBST(HANGULIN_SRC)
2912 HANGULIN_OBJ=objects/hangulin.o
2913 AC_SUBST(HANGULIN_OBJ)
2914 fi
2915fi
2916
2917dnl Checks for libraries and include files.
2918
Bram Moolenaar446cb832008-06-24 21:56:24 +00002919AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2920 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01002921 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002922#include "confdefs.h"
2923#include <ctype.h>
2924#if STDC_HEADERS
2925# include <stdlib.h>
2926# include <stddef.h>
2927#endif
2928main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01002929 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002930 vim_cv_toupper_broken=yes
2931 ],[
2932 vim_cv_toupper_broken=no
2933 ],[
2934 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2935 ])])
2936
2937if test "x$vim_cv_toupper_broken" = "xyes" ; then
2938 AC_DEFINE(BROKEN_TOUPPER)
2939fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002940
2941AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002942AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002943 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2944 AC_MSG_RESULT(no))
2945
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002946AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2947AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2948 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2949 AC_MSG_RESULT(no))
2950
Bram Moolenaar071d4272004-06-13 20:20:40 +00002951dnl Checks for header files.
2952AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2953dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2954if test "$HAS_ELF" = 1; then
2955 AC_CHECK_LIB(elf, main)
2956fi
2957
2958AC_HEADER_DIRENT
2959
Bram Moolenaar071d4272004-06-13 20:20:40 +00002960dnl If sys/wait.h is not found it might still exist but not be POSIX
2961dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2962if test $ac_cv_header_sys_wait_h = no; then
2963 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2964 AC_TRY_COMPILE([#include <sys/wait.h>],
2965 [union wait xx, yy; xx = yy],
2966 AC_MSG_RESULT(yes)
2967 AC_DEFINE(HAVE_SYS_WAIT_H)
2968 AC_DEFINE(HAVE_UNION_WAIT),
2969 AC_MSG_RESULT(no))
2970fi
2971
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002972AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2973 sys/select.h sys/utsname.h termcap.h fcntl.h \
2974 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2975 termio.h iconv.h inttypes.h langinfo.h math.h \
2976 unistd.h stropts.h errno.h sys/resource.h \
2977 sys/systeminfo.h locale.h sys/stream.h termios.h \
2978 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2979 utime.h sys/param.h libintl.h libgen.h \
2980 util/debug.h util/msg18n.h frame.h sys/acl.h \
2981 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002982
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002983dnl sys/ptem.h depends on sys/stream.h on Solaris
2984AC_CHECK_HEADERS(sys/ptem.h, [], [],
2985[#if defined HAVE_SYS_STREAM_H
2986# include <sys/stream.h>
2987#endif])
2988
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002989dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2990AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2991[#if defined HAVE_SYS_PARAM_H
2992# include <sys/param.h>
2993#endif])
2994
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002995
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002996dnl pthread_np.h may exist but can only be used after including pthread.h
2997AC_MSG_CHECKING([for pthread_np.h])
2998AC_TRY_COMPILE([
2999#include <pthread.h>
3000#include <pthread_np.h>],
3001 [int i; i = 0;],
3002 AC_MSG_RESULT(yes)
3003 AC_DEFINE(HAVE_PTHREAD_NP_H),
3004 AC_MSG_RESULT(no))
3005
Bram Moolenaare344bea2005-09-01 20:46:49 +00003006AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00003007if test "x$MACOSX" = "xyes"; then
3008 dnl The strings.h file on OS/X contains a warning and nothing useful.
3009 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3010else
Bram Moolenaar071d4272004-06-13 20:20:40 +00003011
3012dnl Check if strings.h and string.h can both be included when defined.
3013AC_MSG_CHECKING([if strings.h can be included after string.h])
3014cppflags_save=$CPPFLAGS
3015CPPFLAGS="$CPPFLAGS $X_CFLAGS"
3016AC_TRY_COMPILE([
3017#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
3018# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
3019 /* but don't do it on AIX 5.1 (Uribarri) */
3020#endif
3021#ifdef HAVE_XM_XM_H
3022# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
3023#endif
3024#ifdef HAVE_STRING_H
3025# include <string.h>
3026#endif
3027#if defined(HAVE_STRINGS_H)
3028# include <strings.h>
3029#endif
3030 ], [int i; i = 0;],
3031 AC_MSG_RESULT(yes),
3032 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3033 AC_MSG_RESULT(no))
3034CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00003035fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003036
3037dnl Checks for typedefs, structures, and compiler characteristics.
3038AC_PROG_GCC_TRADITIONAL
3039AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00003040AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003041AC_TYPE_MODE_T
3042AC_TYPE_OFF_T
3043AC_TYPE_PID_T
3044AC_TYPE_SIZE_T
3045AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003046AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003047
Bram Moolenaar071d4272004-06-13 20:20:40 +00003048AC_HEADER_TIME
3049AC_CHECK_TYPE(ino_t, long)
3050AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003051AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003052
3053AC_MSG_CHECKING(for rlim_t)
3054if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
3055 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
3056else
3057 AC_EGREP_CPP(dnl
3058changequote(<<,>>)dnl
3059<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
3060changequote([,]),
3061 [
3062#include <sys/types.h>
3063#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003064# include <stdlib.h>
3065# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003066#endif
3067#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00003068# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003069#endif
3070 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
3071 AC_MSG_RESULT($ac_cv_type_rlim_t)
3072fi
3073if test $ac_cv_type_rlim_t = no; then
3074 cat >> confdefs.h <<\EOF
3075#define rlim_t unsigned long
3076EOF
3077fi
3078
3079AC_MSG_CHECKING(for stack_t)
3080if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
3081 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
3082else
3083 AC_EGREP_CPP(stack_t,
3084 [
3085#include <sys/types.h>
3086#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003087# include <stdlib.h>
3088# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003089#endif
3090#include <signal.h>
3091 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
3092 AC_MSG_RESULT($ac_cv_type_stack_t)
3093fi
3094if test $ac_cv_type_stack_t = no; then
3095 cat >> confdefs.h <<\EOF
3096#define stack_t struct sigaltstack
3097EOF
3098fi
3099
3100dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
3101AC_MSG_CHECKING(whether stack_t has an ss_base field)
3102AC_TRY_COMPILE([
3103#include <sys/types.h>
3104#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003105# include <stdlib.h>
3106# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003107#endif
3108#include <signal.h>
3109#include "confdefs.h"
3110 ], [stack_t sigstk; sigstk.ss_base = 0; ],
3111 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
3112 AC_MSG_RESULT(no))
3113
3114olibs="$LIBS"
3115AC_MSG_CHECKING(--with-tlib argument)
3116AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
3117if test -n "$with_tlib"; then
3118 AC_MSG_RESULT($with_tlib)
3119 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003120 AC_MSG_CHECKING(for linking with $with_tlib library)
3121 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
3122 dnl Need to check for tgetent() below.
3123 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003124else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003125 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003126 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3127 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003128 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003129 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003130 dnl Older versions of ncurses have bugs, get a new one!
3131 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003132 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00003133 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003134 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3135 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003136 esac
3137 for libname in $tlibs; do
3138 AC_CHECK_LIB(${libname}, tgetent,,)
3139 if test "x$olibs" != "x$LIBS"; then
3140 dnl It's possible that a library is found but it doesn't work
3141 dnl e.g., shared library that cannot be found
3142 dnl compile and run a test program to be sure
3143 AC_TRY_RUN([
3144#ifdef HAVE_TERMCAP_H
3145# include <termcap.h>
3146#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003147#if STDC_HEADERS
3148# include <stdlib.h>
3149# include <stddef.h>
3150#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003151main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3152 res="OK", res="FAIL", res="FAIL")
3153 if test "$res" = "OK"; then
3154 break
3155 fi
3156 AC_MSG_RESULT($libname library is not usable)
3157 LIBS="$olibs"
3158 fi
3159 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003160 if test "x$olibs" = "x$LIBS"; then
3161 AC_MSG_RESULT(no terminal library found)
3162 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003163fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003164
3165if test "x$olibs" = "x$LIBS"; then
3166 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003167 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003168 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3169 AC_MSG_RESULT(yes),
3170 AC_MSG_ERROR([NOT FOUND!
3171 You need to install a terminal library; for example ncurses.
3172 Or specify the name of the library with --with-tlib.]))
3173fi
3174
Bram Moolenaar446cb832008-06-24 21:56:24 +00003175AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3176 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003177 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003178#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003179#ifdef HAVE_TERMCAP_H
3180# include <termcap.h>
3181#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003182#ifdef HAVE_STRING_H
3183# include <string.h>
3184#endif
3185#if STDC_HEADERS
3186# include <stdlib.h>
3187# include <stddef.h>
3188#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003189main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003190{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003191 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003192 vim_cv_terminfo=no
3193 ],[
3194 vim_cv_terminfo=yes
3195 ],[
3196 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3197 ])
3198 ])
3199
3200if test "x$vim_cv_terminfo" = "xyes" ; then
3201 AC_DEFINE(TERMINFO)
3202fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003203
3204if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003205 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3206 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003207 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003208#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003209#ifdef HAVE_TERMCAP_H
3210# include <termcap.h>
3211#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003212#if STDC_HEADERS
3213# include <stdlib.h>
3214# include <stddef.h>
3215#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003216main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003217{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003218 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003219 vim_cv_tgent=zero
3220 ],[
3221 vim_cv_tgent=non-zero
3222 ],[
3223 AC_MSG_ERROR(failed to compile test program.)
3224 ])
3225 ])
3226
3227 if test "x$vim_cv_tgent" = "xzero" ; then
3228 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3229 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003230fi
3231
3232AC_MSG_CHECKING(whether termcap.h contains ospeed)
3233AC_TRY_LINK([
3234#ifdef HAVE_TERMCAP_H
3235# include <termcap.h>
3236#endif
3237 ], [ospeed = 20000],
3238 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3239 [AC_MSG_RESULT(no)
3240 AC_MSG_CHECKING(whether ospeed can be extern)
3241 AC_TRY_LINK([
3242#ifdef HAVE_TERMCAP_H
3243# include <termcap.h>
3244#endif
3245extern short ospeed;
3246 ], [ospeed = 20000],
3247 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3248 AC_MSG_RESULT(no))]
3249 )
3250
3251AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3252AC_TRY_LINK([
3253#ifdef HAVE_TERMCAP_H
3254# include <termcap.h>
3255#endif
3256 ], [if (UP == 0 && BC == 0) PC = 1],
3257 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3258 [AC_MSG_RESULT(no)
3259 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3260 AC_TRY_LINK([
3261#ifdef HAVE_TERMCAP_H
3262# include <termcap.h>
3263#endif
3264extern char *UP, *BC, PC;
3265 ], [if (UP == 0 && BC == 0) PC = 1],
3266 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3267 AC_MSG_RESULT(no))]
3268 )
3269
3270AC_MSG_CHECKING(whether tputs() uses outfuntype)
3271AC_TRY_COMPILE([
3272#ifdef HAVE_TERMCAP_H
3273# include <termcap.h>
3274#endif
3275 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3276 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3277 AC_MSG_RESULT(no))
3278
3279dnl On some SCO machines sys/select redefines struct timeval
3280AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3281AC_TRY_COMPILE([
3282#include <sys/types.h>
3283#include <sys/time.h>
3284#include <sys/select.h>], ,
3285 AC_MSG_RESULT(yes)
3286 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3287 AC_MSG_RESULT(no))
3288
3289dnl AC_DECL_SYS_SIGLIST
3290
3291dnl Checks for pty.c (copied from screen) ==========================
3292AC_MSG_CHECKING(for /dev/ptc)
3293if test -r /dev/ptc; then
3294 AC_DEFINE(HAVE_DEV_PTC)
3295 AC_MSG_RESULT(yes)
3296else
3297 AC_MSG_RESULT(no)
3298fi
3299
3300AC_MSG_CHECKING(for SVR4 ptys)
3301if test -c /dev/ptmx ; then
3302 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3303 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3304 AC_MSG_RESULT(no))
3305else
3306 AC_MSG_RESULT(no)
3307fi
3308
3309AC_MSG_CHECKING(for ptyranges)
3310if test -d /dev/ptym ; then
3311 pdir='/dev/ptym'
3312else
3313 pdir='/dev'
3314fi
3315dnl SCO uses ptyp%d
3316AC_EGREP_CPP(yes,
3317[#ifdef M_UNIX
3318 yes;
3319#endif
3320 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3321dnl if test -c /dev/ptyp19; then
3322dnl ptys=`echo /dev/ptyp??`
3323dnl else
3324dnl ptys=`echo $pdir/pty??`
3325dnl fi
3326if test "$ptys" != "$pdir/pty??" ; then
3327 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3328 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3329 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3330 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3331 AC_MSG_RESULT([$p0 / $p1])
3332else
3333 AC_MSG_RESULT([don't know])
3334fi
3335
3336dnl **** pty mode/group handling ****
3337dnl
3338dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003339rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003340AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3341 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003342 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003343#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003344#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003345#if STDC_HEADERS
3346# include <stdlib.h>
3347# include <stddef.h>
3348#endif
3349#ifdef HAVE_UNISTD_H
3350#include <unistd.h>
3351#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003352#include <sys/stat.h>
3353#include <stdio.h>
3354main()
3355{
3356 struct stat sb;
3357 char *x,*ttyname();
3358 int om, m;
3359 FILE *fp;
3360
3361 if (!(x = ttyname(0))) exit(1);
3362 if (stat(x, &sb)) exit(1);
3363 om = sb.st_mode;
3364 if (om & 002) exit(0);
3365 m = system("mesg y");
3366 if (m == -1 || m == 127) exit(1);
3367 if (stat(x, &sb)) exit(1);
3368 m = sb.st_mode;
3369 if (chmod(x, om)) exit(1);
3370 if (m & 002) exit(0);
3371 if (sb.st_gid == getgid()) exit(1);
3372 if (!(fp=fopen("conftest_grp", "w")))
3373 exit(1);
3374 fprintf(fp, "%d\n", sb.st_gid);
3375 fclose(fp);
3376 exit(0);
3377}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003378 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003379 if test -f conftest_grp; then
3380 vim_cv_tty_group=`cat conftest_grp`
3381 if test "x$vim_cv_tty_mode" = "x" ; then
3382 vim_cv_tty_mode=0620
3383 fi
3384 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3385 else
3386 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003387 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003388 fi
3389 ],[
3390 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003391 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003392 ],[
3393 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3394 ])
3395 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003396rm -f conftest_grp
3397
Bram Moolenaar446cb832008-06-24 21:56:24 +00003398if test "x$vim_cv_tty_group" != "xworld" ; then
3399 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3400 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003401 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 +00003402 else
3403 AC_DEFINE(PTYMODE, 0620)
3404 fi
3405fi
3406
Bram Moolenaar071d4272004-06-13 20:20:40 +00003407dnl Checks for library functions. ===================================
3408
3409AC_TYPE_SIGNAL
3410
3411dnl find out what to use at the end of a signal function
3412if test $ac_cv_type_signal = void; then
3413 AC_DEFINE(SIGRETURN, [return])
3414else
3415 AC_DEFINE(SIGRETURN, [return 0])
3416fi
3417
3418dnl check if struct sigcontext is defined (used for SGI only)
3419AC_MSG_CHECKING(for struct sigcontext)
3420AC_TRY_COMPILE([
3421#include <signal.h>
3422test_sig()
3423{
3424 struct sigcontext *scont;
3425 scont = (struct sigcontext *)0;
3426 return 1;
3427} ], ,
3428 AC_MSG_RESULT(yes)
3429 AC_DEFINE(HAVE_SIGCONTEXT),
3430 AC_MSG_RESULT(no))
3431
3432dnl tricky stuff: try to find out if getcwd() is implemented with
3433dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003434AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3435 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003436 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003437#include "confdefs.h"
3438#ifdef HAVE_UNISTD_H
3439#include <unistd.h>
3440#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003441char *dagger[] = { "IFS=pwd", 0 };
3442main()
3443{
3444 char buffer[500];
3445 extern char **environ;
3446 environ = dagger;
3447 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003448}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003449 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003450 vim_cv_getcwd_broken=no
3451 ],[
3452 vim_cv_getcwd_broken=yes
3453 ],[
3454 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3455 ])
3456 ])
3457
3458if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3459 AC_DEFINE(BAD_GETCWD)
3460fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003461
Bram Moolenaar25153e12010-02-24 14:47:08 +01003462dnl Check for functions in one big call, to reduce the size of configure.
3463dnl Can only be used for functions that do not require any include.
3464AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003465 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003466 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003467 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003468 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003469 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3470 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003471AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003472
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003473dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3474dnl appropriate, so that off_t is 64 bits when needed.
3475AC_SYS_LARGEFILE
3476
Bram Moolenaar071d4272004-06-13 20:20:40 +00003477dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3478AC_MSG_CHECKING(for st_blksize)
3479AC_TRY_COMPILE(
3480[#include <sys/types.h>
3481#include <sys/stat.h>],
3482[ struct stat st;
3483 int n;
3484
3485 stat("/", &st);
3486 n = (int)st.st_blksize;],
3487 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3488 AC_MSG_RESULT(no))
3489
Bram Moolenaar446cb832008-06-24 21:56:24 +00003490AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3491 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003492 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003493#include "confdefs.h"
3494#if STDC_HEADERS
3495# include <stdlib.h>
3496# include <stddef.h>
3497#endif
3498#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003499#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003500main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003501 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003502 vim_cv_stat_ignores_slash=yes
3503 ],[
3504 vim_cv_stat_ignores_slash=no
3505 ],[
3506 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3507 ])
3508 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003509
Bram Moolenaar446cb832008-06-24 21:56:24 +00003510if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3511 AC_DEFINE(STAT_IGNORES_SLASH)
3512fi
3513
Bram Moolenaar071d4272004-06-13 20:20:40 +00003514dnl Link with iconv for charset translation, if not found without library.
3515dnl check for iconv() requires including iconv.h
3516dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3517dnl has been installed.
3518AC_MSG_CHECKING(for iconv_open())
3519save_LIBS="$LIBS"
3520LIBS="$LIBS -liconv"
3521AC_TRY_LINK([
3522#ifdef HAVE_ICONV_H
3523# include <iconv.h>
3524#endif
3525 ], [iconv_open("fr", "to");],
3526 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3527 LIBS="$save_LIBS"
3528 AC_TRY_LINK([
3529#ifdef HAVE_ICONV_H
3530# include <iconv.h>
3531#endif
3532 ], [iconv_open("fr", "to");],
3533 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3534 AC_MSG_RESULT(no)))
3535
3536
3537AC_MSG_CHECKING(for nl_langinfo(CODESET))
3538AC_TRY_LINK([
3539#ifdef HAVE_LANGINFO_H
3540# include <langinfo.h>
3541#endif
3542], [char *cs = nl_langinfo(CODESET);],
3543 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3544 AC_MSG_RESULT(no))
3545
Bram Moolenaar446cb832008-06-24 21:56:24 +00003546dnl Need various functions for floating point support. Only enable
3547dnl floating point when they are all present.
3548AC_CHECK_LIB(m, strtod)
3549AC_MSG_CHECKING([for strtod() and other floating point functions])
3550AC_TRY_LINK([
3551#ifdef HAVE_MATH_H
3552# include <math.h>
3553#endif
3554#if STDC_HEADERS
3555# include <stdlib.h>
3556# include <stddef.h>
3557#endif
3558], [char *s; double d;
3559 d = strtod("1.1", &s);
3560 d = fabs(1.11);
3561 d = ceil(1.11);
3562 d = floor(1.11);
3563 d = log10(1.11);
3564 d = pow(1.11, 2.22);
3565 d = sqrt(1.11);
3566 d = sin(1.11);
3567 d = cos(1.11);
3568 d = atan(1.11);
3569 ],
3570 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3571 AC_MSG_RESULT(no))
3572
Bram Moolenaar071d4272004-06-13 20:20:40 +00003573dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3574dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003575dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003576AC_MSG_CHECKING(--disable-acl argument)
3577AC_ARG_ENABLE(acl,
3578 [ --disable-acl Don't check for ACL support.],
3579 , [enable_acl="yes"])
3580if test "$enable_acl" = "yes"; then
3581AC_MSG_RESULT(no)
3582AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3583 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3584 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3585
3586AC_MSG_CHECKING(for POSIX ACL support)
3587AC_TRY_LINK([
3588#include <sys/types.h>
3589#ifdef HAVE_SYS_ACL_H
3590# include <sys/acl.h>
3591#endif
3592acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3593 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3594 acl_free(acl);],
3595 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3596 AC_MSG_RESULT(no))
3597
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003598AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003599AC_MSG_CHECKING(for Solaris ACL support)
3600AC_TRY_LINK([
3601#ifdef HAVE_SYS_ACL_H
3602# include <sys/acl.h>
3603#endif], [acl("foo", GETACLCNT, 0, NULL);
3604 ],
3605 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003606 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003607
3608AC_MSG_CHECKING(for AIX ACL support)
3609AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003610#if STDC_HEADERS
3611# include <stdlib.h>
3612# include <stddef.h>
3613#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003614#ifdef HAVE_SYS_ACL_H
3615# include <sys/acl.h>
3616#endif
3617#ifdef HAVE_SYS_ACCESS_H
3618# include <sys/access.h>
3619#endif
3620#define _ALL_SOURCE
3621
3622#include <sys/stat.h>
3623
3624int aclsize;
3625struct acl *aclent;], [aclsize = sizeof(struct acl);
3626 aclent = (void *)malloc(aclsize);
3627 statacl("foo", STX_NORMAL, aclent, aclsize);
3628 ],
3629 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3630 AC_MSG_RESULT(no))
3631else
3632 AC_MSG_RESULT(yes)
3633fi
3634
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003635if test "x$GTK_CFLAGS" != "x"; then
3636 dnl pango_shape_full() is new, fall back to pango_shape().
3637 AC_MSG_CHECKING(for pango_shape_full)
3638 ac_save_CFLAGS="$CFLAGS"
3639 ac_save_LIBS="$LIBS"
3640 CFLAGS="$CFLAGS $GTK_CFLAGS"
3641 LIBS="$LIBS $GTK_LIBS"
Bram Moolenaar5325b9b2015-09-09 20:27:02 +02003642 AC_TRY_LINK(
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003643 [#include <gtk/gtk.h>],
3644 [ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ],
3645 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL),
3646 AC_MSG_RESULT(no))
3647 CFLAGS="$ac_save_CFLAGS"
3648 LIBS="$ac_save_LIBS"
3649fi
3650
Bram Moolenaar071d4272004-06-13 20:20:40 +00003651AC_MSG_CHECKING(--disable-gpm argument)
3652AC_ARG_ENABLE(gpm,
3653 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3654 [enable_gpm="yes"])
3655
3656if test "$enable_gpm" = "yes"; then
3657 AC_MSG_RESULT(no)
3658 dnl Checking if gpm support can be compiled
3659 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3660 [olibs="$LIBS" ; LIBS="-lgpm"]
3661 AC_TRY_LINK(
3662 [#include <gpm.h>
3663 #include <linux/keyboard.h>],
3664 [Gpm_GetLibVersion(NULL);],
3665 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3666 dnl FEAT_MOUSE_GPM if mouse support is included
3667 [vi_cv_have_gpm=yes],
3668 [vi_cv_have_gpm=no])
3669 [LIBS="$olibs"]
3670 )
3671 if test $vi_cv_have_gpm = yes; then
3672 LIBS="$LIBS -lgpm"
3673 AC_DEFINE(HAVE_GPM)
3674 fi
3675else
3676 AC_MSG_RESULT(yes)
3677fi
3678
Bram Moolenaar446cb832008-06-24 21:56:24 +00003679AC_MSG_CHECKING(--disable-sysmouse argument)
3680AC_ARG_ENABLE(sysmouse,
3681 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3682 [enable_sysmouse="yes"])
3683
3684if test "$enable_sysmouse" = "yes"; then
3685 AC_MSG_RESULT(no)
3686 dnl Checking if sysmouse support can be compiled
3687 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3688 dnl defines FEAT_SYSMOUSE if mouse support is included
3689 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3690 AC_TRY_LINK(
3691 [#include <sys/consio.h>
3692 #include <signal.h>
3693 #include <sys/fbio.h>],
3694 [struct mouse_info mouse;
3695 mouse.operation = MOUSE_MODE;
3696 mouse.operation = MOUSE_SHOW;
3697 mouse.u.mode.mode = 0;
3698 mouse.u.mode.signal = SIGUSR2;],
3699 [vi_cv_have_sysmouse=yes],
3700 [vi_cv_have_sysmouse=no])
3701 )
3702 if test $vi_cv_have_sysmouse = yes; then
3703 AC_DEFINE(HAVE_SYSMOUSE)
3704 fi
3705else
3706 AC_MSG_RESULT(yes)
3707fi
3708
Bram Moolenaarf05da212009-11-17 16:13:15 +00003709dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3710AC_MSG_CHECKING(for FD_CLOEXEC)
3711AC_TRY_COMPILE(
3712[#if HAVE_FCNTL_H
3713# include <fcntl.h>
3714#endif],
3715[ int flag = FD_CLOEXEC;],
3716 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3717 AC_MSG_RESULT(not usable))
3718
Bram Moolenaar071d4272004-06-13 20:20:40 +00003719dnl rename needs to be checked separately to work on Nextstep with cc
3720AC_MSG_CHECKING(for rename)
3721AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3722 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3723 AC_MSG_RESULT(no))
3724
3725dnl sysctl() may exist but not the arguments we use
3726AC_MSG_CHECKING(for sysctl)
3727AC_TRY_COMPILE(
3728[#include <sys/types.h>
3729#include <sys/sysctl.h>],
3730[ int mib[2], r;
3731 size_t len;
3732
3733 mib[0] = CTL_HW;
3734 mib[1] = HW_USERMEM;
3735 len = sizeof(r);
3736 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3737 ],
3738 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3739 AC_MSG_RESULT(not usable))
3740
3741dnl sysinfo() may exist but not be Linux compatible
3742AC_MSG_CHECKING(for sysinfo)
3743AC_TRY_COMPILE(
3744[#include <sys/types.h>
3745#include <sys/sysinfo.h>],
3746[ struct sysinfo sinfo;
3747 int t;
3748
3749 (void)sysinfo(&sinfo);
3750 t = sinfo.totalram;
3751 ],
3752 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3753 AC_MSG_RESULT(not usable))
3754
Bram Moolenaar914572a2007-05-01 11:37:47 +00003755dnl struct sysinfo may have the mem_unit field or not
3756AC_MSG_CHECKING(for sysinfo.mem_unit)
3757AC_TRY_COMPILE(
3758[#include <sys/types.h>
3759#include <sys/sysinfo.h>],
3760[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003761 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003762 ],
3763 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3764 AC_MSG_RESULT(no))
3765
Bram Moolenaar071d4272004-06-13 20:20:40 +00003766dnl sysconf() may exist but not support what we want to use
3767AC_MSG_CHECKING(for sysconf)
3768AC_TRY_COMPILE(
3769[#include <unistd.h>],
3770[ (void)sysconf(_SC_PAGESIZE);
3771 (void)sysconf(_SC_PHYS_PAGES);
3772 ],
3773 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3774 AC_MSG_RESULT(not usable))
3775
Bram Moolenaar914703b2010-05-31 21:59:46 +02003776AC_CHECK_SIZEOF([int])
3777AC_CHECK_SIZEOF([long])
3778AC_CHECK_SIZEOF([time_t])
3779AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003780
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003781dnl Use different names to avoid clashing with other header files.
3782AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3783AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3784
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003785dnl Make sure that uint32_t is really 32 bits unsigned.
3786AC_MSG_CHECKING([uint32_t is 32 bits])
3787AC_TRY_RUN([
3788#ifdef HAVE_STDINT_H
3789# include <stdint.h>
3790#endif
3791#ifdef HAVE_INTTYPES_H
3792# include <inttypes.h>
3793#endif
3794main() {
3795 uint32_t nr1 = (uint32_t)-1;
3796 uint32_t nr2 = (uint32_t)0xffffffffUL;
3797 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3798 exit(0);
3799}],
3800AC_MSG_RESULT(ok),
3801AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003802AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003803
Bram Moolenaar446cb832008-06-24 21:56:24 +00003804dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3805dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3806
Bram Moolenaar071d4272004-06-13 20:20:40 +00003807[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003808#include "confdefs.h"
3809#ifdef HAVE_STRING_H
3810# include <string.h>
3811#endif
3812#if STDC_HEADERS
3813# include <stdlib.h>
3814# include <stddef.h>
3815#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003816main() {
3817 char buf[10];
3818 strcpy(buf, "abcdefghi");
3819 mch_memmove(buf, buf + 2, 3);
3820 if (strncmp(buf, "ababcf", 6))
3821 exit(1);
3822 strcpy(buf, "abcdefghi");
3823 mch_memmove(buf + 2, buf, 3);
3824 if (strncmp(buf, "cdedef", 6))
3825 exit(1);
3826 exit(0); /* libc version works properly. */
3827}']
3828
Bram Moolenaar446cb832008-06-24 21:56:24 +00003829AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3830 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003831 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 +00003832 [
3833 vim_cv_memmove_handles_overlap=yes
3834 ],[
3835 vim_cv_memmove_handles_overlap=no
3836 ],[
3837 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3838 ])
3839 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003840
Bram Moolenaar446cb832008-06-24 21:56:24 +00003841if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3842 AC_DEFINE(USEMEMMOVE)
3843else
3844 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3845 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003846 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 +00003847 [
3848 vim_cv_bcopy_handles_overlap=yes
3849 ],[
3850 vim_cv_bcopy_handles_overlap=no
3851 ],[
3852 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3853 ])
3854 ])
3855
3856 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3857 AC_DEFINE(USEBCOPY)
3858 else
3859 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3860 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003861 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 +00003862 [
3863 vim_cv_memcpy_handles_overlap=yes
3864 ],[
3865 vim_cv_memcpy_handles_overlap=no
3866 ],[
3867 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3868 ])
3869 ])
3870
3871 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3872 AC_DEFINE(USEMEMCPY)
3873 fi
3874 fi
3875fi
3876
Bram Moolenaar071d4272004-06-13 20:20:40 +00003877
3878dnl Check for multibyte locale functions
3879dnl Find out if _Xsetlocale() is supported by libX11.
3880dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003881if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003882 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003883 libs_save=$LIBS
3884 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
3885 CFLAGS="$CFLAGS $X_CFLAGS"
3886
3887 AC_MSG_CHECKING(whether X_LOCALE needed)
3888 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3889 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3890 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3891 AC_MSG_RESULT(no))
3892
3893 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
3894 AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes)
3895 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
3896
Bram Moolenaar071d4272004-06-13 20:20:40 +00003897 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003898 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00003899fi
3900
3901dnl Link with xpg4, it is said to make Korean locale working
3902AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3903
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003904dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003905dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003906dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003907dnl -t for typedefs (many ctags have this)
3908dnl -s for static functions (Elvis ctags only?)
3909dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3910dnl -i+m to test for older Exuberant ctags
3911AC_MSG_CHECKING(how to create tags)
3912test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003913if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003914 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003915elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3916 TAGPRG="exctags -I INIT+ --fields=+S"
3917elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3918 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003919else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003920 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003921 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3922 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3923 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3924 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3925 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3926 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3927 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3928fi
3929test -f tags.save && mv tags.save tags
3930AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3931
3932dnl Check how we can run man with a section number
3933AC_MSG_CHECKING(how to run man with a section nr)
3934MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003935(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 +00003936AC_MSG_RESULT($MANDEF)
3937if test "$MANDEF" = "man -s"; then
3938 AC_DEFINE(USEMAN_S)
3939fi
3940
3941dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003942dnl We take care to base this on an empty LIBS: on some systems libelf would be
3943dnl in LIBS and implicitly take along libintl. The final LIBS would then not
3944dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003945AC_MSG_CHECKING(--disable-nls argument)
3946AC_ARG_ENABLE(nls,
3947 [ --disable-nls Don't support NLS (gettext()).], ,
3948 [enable_nls="yes"])
3949
3950if test "$enable_nls" = "yes"; then
3951 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003952
3953 INSTALL_LANGS=install-languages
3954 AC_SUBST(INSTALL_LANGS)
3955 INSTALL_TOOL_LANGS=install-tool-languages
3956 AC_SUBST(INSTALL_TOOL_LANGS)
3957
Bram Moolenaar071d4272004-06-13 20:20:40 +00003958 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3959 AC_MSG_CHECKING([for NLS])
3960 if test -f po/Makefile; then
3961 have_gettext="no"
3962 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003963 olibs=$LIBS
3964 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00003965 AC_TRY_LINK(
3966 [#include <libintl.h>],
3967 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003968 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
3969 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003970 AC_TRY_LINK(
3971 [#include <libintl.h>],
3972 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003973 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
3974 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00003975 AC_MSG_RESULT([gettext() doesn't work]);
3976 LIBS=$olibs))
3977 else
3978 AC_MSG_RESULT([msgfmt not found - disabled]);
3979 fi
Bram Moolenaar278eb582014-07-30 13:22:52 +02003980 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003981 AC_DEFINE(HAVE_GETTEXT)
3982 MAKEMO=yes
3983 AC_SUBST(MAKEMO)
3984 dnl this was added in GNU gettext 0.10.36
3985 AC_CHECK_FUNCS(bind_textdomain_codeset)
3986 dnl _nl_msg_cat_cntr is required for GNU gettext
3987 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3988 AC_TRY_LINK(
3989 [#include <libintl.h>
3990 extern int _nl_msg_cat_cntr;],
3991 [++_nl_msg_cat_cntr;],
3992 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3993 AC_MSG_RESULT([no]))
3994 fi
3995 else
3996 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3997 fi
3998else
3999 AC_MSG_RESULT(yes)
4000fi
4001
4002dnl Check for dynamic linking loader
4003AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
4004if test x${DLL} = xdlfcn.h; then
4005 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
4006 AC_MSG_CHECKING([for dlopen()])
4007 AC_TRY_LINK(,[
4008 extern void* dlopen();
4009 dlopen();
4010 ],
4011 AC_MSG_RESULT(yes);
4012 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4013 AC_MSG_RESULT(no);
4014 AC_MSG_CHECKING([for dlopen() in -ldl])
4015 olibs=$LIBS
4016 LIBS="$LIBS -ldl"
4017 AC_TRY_LINK(,[
4018 extern void* dlopen();
4019 dlopen();
4020 ],
4021 AC_MSG_RESULT(yes);
4022 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4023 AC_MSG_RESULT(no);
4024 LIBS=$olibs))
4025 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
4026 dnl ick :-)
4027 AC_MSG_CHECKING([for dlsym()])
4028 AC_TRY_LINK(,[
4029 extern void* dlsym();
4030 dlsym();
4031 ],
4032 AC_MSG_RESULT(yes);
4033 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4034 AC_MSG_RESULT(no);
4035 AC_MSG_CHECKING([for dlsym() in -ldl])
4036 olibs=$LIBS
4037 LIBS="$LIBS -ldl"
4038 AC_TRY_LINK(,[
4039 extern void* dlsym();
4040 dlsym();
4041 ],
4042 AC_MSG_RESULT(yes);
4043 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4044 AC_MSG_RESULT(no);
4045 LIBS=$olibs))
4046elif test x${DLL} = xdl.h; then
4047 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
4048 AC_MSG_CHECKING([for shl_load()])
4049 AC_TRY_LINK(,[
4050 extern void* shl_load();
4051 shl_load();
4052 ],
4053 AC_MSG_RESULT(yes);
4054 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4055 AC_MSG_RESULT(no);
4056 AC_MSG_CHECKING([for shl_load() in -ldld])
4057 olibs=$LIBS
4058 LIBS="$LIBS -ldld"
4059 AC_TRY_LINK(,[
4060 extern void* shl_load();
4061 shl_load();
4062 ],
4063 AC_MSG_RESULT(yes);
4064 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4065 AC_MSG_RESULT(no);
4066 LIBS=$olibs))
4067fi
4068AC_CHECK_HEADERS(setjmp.h)
4069
4070if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
4071 dnl -ldl must come after DynaLoader.a
4072 if echo $LIBS | grep -e '-ldl' >/dev/null; then
4073 LIBS=`echo $LIBS | sed s/-ldl//`
4074 PERL_LIBS="$PERL_LIBS -ldl"
4075 fi
4076fi
4077
Bram Moolenaar164fca32010-07-14 13:58:07 +02004078if test "x$MACOSX" = "xyes"; then
4079 AC_MSG_CHECKING(whether we need -framework Cocoa)
4080 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
4081 dnl disabled during tiny build)
4082 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
4083 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004084 AC_MSG_RESULT(yes)
4085 else
4086 AC_MSG_RESULT(no)
4087 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02004088 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
4089 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
4090 dnl missing Objective-C symbols.
4091 if test "x$features" = "xtiny"; then
4092 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
4093 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
4094 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004095fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02004096if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01004097 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00004098fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004099
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004100dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
4101dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
4102dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00004103dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
4104dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004105DEPEND_CFLAGS_FILTER=
4106if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004107 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00004108 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00004109 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004110 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004111 AC_MSG_RESULT(yes)
4112 else
4113 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004114 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004115 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
4116 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00004117 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01004118 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004119 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
4120 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004121 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 +00004122 AC_MSG_RESULT(yes)
4123 else
4124 AC_MSG_RESULT(no)
4125 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00004126fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004127AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004128
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004129dnl link.sh tries to avoid overlinking in a hackish way.
4130dnl At least GNU ld supports --as-needed which provides the same functionality
4131dnl at linker level. Let's use it.
4132AC_MSG_CHECKING(linker --as-needed support)
4133LINK_AS_NEEDED=
4134# Check if linker supports --as-needed and --no-as-needed options
4135if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004136 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004137 LINK_AS_NEEDED=yes
4138fi
4139if test "$LINK_AS_NEEDED" = yes; then
4140 AC_MSG_RESULT(yes)
4141else
4142 AC_MSG_RESULT(no)
4143fi
4144AC_SUBST(LINK_AS_NEEDED)
4145
Bram Moolenaar77c19352012-06-13 19:19:41 +02004146# IBM z/OS reset CFLAGS for config.mk
4147if test "$zOSUnix" = "yes"; then
4148 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4149fi
4150
Bram Moolenaar071d4272004-06-13 20:20:40 +00004151dnl write output files
4152AC_OUTPUT(auto/config.mk:config.mk.in)
4153
4154dnl vim: set sw=2 tw=78 fo+=l: