blob: acbccdea39bc71609c7771687bcb6b233a790696 [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 Moolenaar98921892016-02-23 17:14:37 +0100216 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2 -a "X$enable_gui" != Xgtk3; then
Bram Moolenaar071d4272004-06-13 20:20:40 +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),
Bram Moolenaar23c4f712016-01-20 22:11:59 +0100439 features="huge"; AC_MSG_RESULT(Defaulting to huge))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000440
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 Moolenaar3c124e32016-01-31 14:36:58 +0100493 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
494 AC_MSG_ERROR([cannot use Lua with tiny or small features])
495 fi
496
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200497 dnl -- find the lua executable
498 AC_SUBST(vi_cv_path_lua)
499
500 AC_MSG_CHECKING(--with-lua-prefix argument)
501 AC_ARG_WITH(lua_prefix,
502 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
503 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200504 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200505
506 if test "X$with_lua_prefix" != "X"; then
507 vi_cv_path_lua_pfx="$with_lua_prefix"
508 else
509 AC_MSG_CHECKING(LUA_PREFIX environment var)
510 if test "X$LUA_PREFIX" != "X"; then
511 AC_MSG_RESULT("$LUA_PREFIX")
512 vi_cv_path_lua_pfx="$LUA_PREFIX"
513 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200514 AC_MSG_RESULT([not set, default to /usr])
515 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200516 fi
517 fi
518
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200519 AC_MSG_CHECKING(--with-luajit)
520 AC_ARG_WITH(luajit,
521 [ --with-luajit Link with LuaJIT instead of Lua.],
522 [vi_cv_with_luajit="$withval"],
523 [vi_cv_with_luajit="no"])
524 AC_MSG_RESULT($vi_cv_with_luajit)
525
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200526 LUA_INC=
527 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200528 if test "x$vi_cv_with_luajit" != "xno"; then
529 dnl -- try to find LuaJIT executable
530 AC_PATH_PROG(vi_cv_path_luajit, luajit)
531 if test "X$vi_cv_path_luajit" != "X"; then
532 dnl -- find LuaJIT version
533 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
Bram Moolenaar49b10272013-11-21 12:17:51 +0100534 [ 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 +0200535 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
536 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
537 vi_cv_path_lua="$vi_cv_path_luajit"
538 vi_cv_version_lua="$vi_cv_version_lua_luajit"
539 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200540 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200541 dnl -- try to find Lua executable
542 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
543 if test "X$vi_cv_path_plain_lua" != "X"; then
544 dnl -- find Lua version
545 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
546 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
547 fi
548 vi_cv_path_lua="$vi_cv_path_plain_lua"
549 vi_cv_version_lua="$vi_cv_version_plain_lua"
550 fi
551 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
552 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 +0100553 if test -f "$vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200554 AC_MSG_RESULT(yes)
555 LUA_INC=/luajit-$vi_cv_version_luajit
556 fi
557 fi
558 if test "X$LUA_INC" = "X"; then
559 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
Bram Moolenaar49222be2015-12-11 18:11:30 +0100560 if test -f "$vi_cv_path_lua_pfx/include/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200561 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200562 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200563 AC_MSG_RESULT(no)
564 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 +0100565 if test -f "$vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200566 AC_MSG_RESULT(yes)
567 LUA_INC=/lua$vi_cv_version_lua
568 else
569 AC_MSG_RESULT(no)
570 vi_cv_path_lua_pfx=
571 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200572 fi
573 fi
574 fi
575
576 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200577 if test "x$vi_cv_with_luajit" != "xno"; then
578 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
579 if test "X$multiarch" != "X"; then
580 lib_multiarch="lib/${multiarch}"
581 else
582 lib_multiarch="lib"
583 fi
584 if test "X$vi_cv_version_lua" = "X"; then
585 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
586 else
587 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
588 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200589 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200590 if test "X$LUA_INC" != "X"; then
591 dnl Test alternate location using version
592 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
593 else
594 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
595 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200596 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200597 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200598 lua_ok="yes"
599 else
600 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
601 libs_save=$LIBS
602 LIBS="$LIBS $LUA_LIBS"
603 AC_TRY_LINK(,[ ],
604 AC_MSG_RESULT(yes); lua_ok="yes",
605 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
606 LIBS=$libs_save
607 fi
608 if test "x$lua_ok" = "xyes"; then
609 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
610 LUA_SRC="if_lua.c"
611 LUA_OBJ="objects/if_lua.o"
612 LUA_PRO="if_lua.pro"
613 AC_DEFINE(FEAT_LUA)
614 fi
615 if test "$enable_luainterp" = "dynamic"; then
616 if test "x$vi_cv_with_luajit" != "xno"; then
617 luajit="jit"
618 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200619 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
620 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
621 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200622 if test "x$MACOSX" = "xyes"; then
623 ext="dylib"
624 indexes=""
625 else
626 ext="so"
627 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
628 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
629 if test "X$multiarch" != "X"; then
630 lib_multiarch="lib/${multiarch}"
631 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200632 fi
633 dnl Determine the sover for the current version, but fallback to
634 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200635 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200636 for subdir in "${lib_multiarch}" lib64 lib; do
637 if test -z "$subdir"; then
638 continue
639 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200640 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
641 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
642 for i in $indexes ""; do
643 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200644 sover2="$i"
645 break 3
646 fi
647 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100648 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200649 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200650 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200651 if test "X$sover" = "X"; then
652 AC_MSG_RESULT(no)
653 lua_ok="no"
654 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
655 else
656 AC_MSG_RESULT(yes)
657 lua_ok="yes"
658 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
659 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200660 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200661 AC_DEFINE(DYNAMIC_LUA)
662 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200663 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200664 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200665 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
666 test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
667 test "`(uname -m) 2>/dev/null`" = "x86_64"; then
668 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
669 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
670 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200671 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200672 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100673 AC_MSG_ERROR([could not configure lua])
674 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200675 AC_SUBST(LUA_SRC)
676 AC_SUBST(LUA_OBJ)
677 AC_SUBST(LUA_PRO)
678 AC_SUBST(LUA_LIBS)
679 AC_SUBST(LUA_CFLAGS)
680fi
681
682
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000683dnl Check for MzScheme feature.
684AC_MSG_CHECKING(--enable-mzschemeinterp argument)
685AC_ARG_ENABLE(mzschemeinterp,
686 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
687 [enable_mzschemeinterp="no"])
688AC_MSG_RESULT($enable_mzschemeinterp)
689
690if test "$enable_mzschemeinterp" = "yes"; then
691 dnl -- find the mzscheme executable
692 AC_SUBST(vi_cv_path_mzscheme)
693
694 AC_MSG_CHECKING(--with-plthome argument)
695 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000696 [ --with-plthome=PLTHOME Use PLTHOME.],
697 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000698 with_plthome="";AC_MSG_RESULT("no"))
699
700 if test "X$with_plthome" != "X"; then
701 vi_cv_path_mzscheme_pfx="$with_plthome"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100702 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000703 else
704 AC_MSG_CHECKING(PLTHOME environment var)
705 if test "X$PLTHOME" != "X"; then
706 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000707 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100708 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000709 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000710 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000711 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000712 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000713
714 dnl resolve symbolic link, the executable is often elsewhere and there
715 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000716 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000717 lsout=`ls -l $vi_cv_path_mzscheme`
718 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
719 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
720 fi
721 fi
722
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000723 if test "X$vi_cv_path_mzscheme" != "X"; then
724 dnl -- find where MzScheme thinks it was installed
725 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000726 dnl different versions of MzScheme differ in command line processing
727 dnl use universal approach
728 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000729 (build-path (call-with-values \
730 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000731 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
732 dnl Remove a trailing slash
733 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
734 sed -e 's+/$++'` ])
735 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000736 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000737 fi
738 fi
739
740 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100741 AC_MSG_CHECKING(for racket include directory)
742 SCHEME_INC=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-include-dir))) (when (path? p) (display p)))'`
743 if test "X$SCHEME_INC" != "X"; then
744 AC_MSG_RESULT(${SCHEME_INC})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000745 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100746 AC_MSG_RESULT(not found)
747 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
748 if test -f "$vi_cv_path_mzscheme_pfx/include/scheme.h"; then
749 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000750 AC_MSG_RESULT(yes)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000751 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000752 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100753 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
754 if test -f "$vi_cv_path_mzscheme_pfx/include/plt/scheme.h"; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000755 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100756 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000757 else
758 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100759 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
760 if test -f "$vi_cv_path_mzscheme_pfx/include/racket/scheme.h"; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100761 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100762 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100763 else
764 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100765 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
766 if test -f /usr/include/plt/scheme.h; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100767 AC_MSG_RESULT(yes)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100768 SCHEME_INC=/usr/include/plt
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100769 else
770 AC_MSG_RESULT(no)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100771 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
772 if test -f /usr/include/racket/scheme.h; then
773 AC_MSG_RESULT(yes)
774 SCHEME_INC=/usr/include/racket
775 else
776 AC_MSG_RESULT(no)
777 vi_cv_path_mzscheme_pfx=
778 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100779 fi
780 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000781 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000782 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000783 fi
784 fi
785
786 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100787
788 AC_MSG_CHECKING(for racket lib directory)
789 SCHEME_LIB=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-lib-dir))) (when (path? p) (display p)))'`
790 if test "X$SCHEME_LIB" != "X"; then
791 AC_MSG_RESULT(${SCHEME_LIB})
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000792 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100793 AC_MSG_RESULT(not found)
794 fi
795
796 for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do
797 if test "X$path" != "X"; then
798 if test "x$MACOSX" = "xyes"; then
799 MZSCHEME_LIBS="-framework Racket"
800 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
801 elif test -f "${path}/libmzscheme3m.a"; then
802 MZSCHEME_LIBS="${path}/libmzscheme3m.a"
803 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
804 elif test -f "${path}/libracket3m.a"; then
805 MZSCHEME_LIBS="${path}/libracket3m.a"
806 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
807 elif test -f "${path}/libracket.a"; then
808 MZSCHEME_LIBS="${path}/libracket.a ${path}/libmzgc.a"
809 elif test -f "${path}/libmzscheme.a"; then
810 MZSCHEME_LIBS="${path}/libmzscheme.a ${path}/libmzgc.a"
811 else
812 dnl Using shared objects
813 if test -f "${path}/libmzscheme3m.so"; then
814 MZSCHEME_LIBS="-L${path} -lmzscheme3m"
815 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
816 elif test -f "${path}/libracket3m.so"; then
817 MZSCHEME_LIBS="-L${path} -lracket3m"
818 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
819 elif test -f "${path}/libracket.so"; then
820 MZSCHEME_LIBS="-L${path} -lracket -lmzgc"
821 else
822 dnl try next until last
823 if test "$path" != "$SCHEME_LIB"; then
824 continue
825 fi
826 MZSCHEME_LIBS="-L${path} -lmzscheme -lmzgc"
827 fi
828 if test "$GCC" = yes; then
829 dnl Make Vim remember the path to the library. For when it's not in
830 dnl $LD_LIBRARY_PATH.
831 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${path}"
832 elif test "`(uname) 2>/dev/null`" = SunOS &&
833 uname -r | grep '^5' >/dev/null; then
834 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${path}"
835 fi
836 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000837 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100838 if test "X$MZSCHEME_LIBS" != "X"; then
839 break
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000840 fi
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100841 done
842
843 AC_MSG_CHECKING([if racket requires -pthread])
844 if test "X$SCHEME_LIB" != "X" && $FGREP -e -pthread "$SCHEME_LIB/buildinfo" >/dev/null ; then
845 AC_MSG_RESULT(yes)
846 MZSCHEME_LIBS="${MZSCHEME_LIBS} -pthread"
847 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -pthread"
848 else
849 AC_MSG_RESULT(no)
850 fi
851
852 AC_MSG_CHECKING(for racket config directory)
853 SCHEME_CONFIGDIR=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-config-dir))) (when (path? p) (display p)))'`
854 if test "X$SCHEME_CONFIGDIR" != "X"; then
855 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DMZSCHEME_CONFIGDIR='\"${SCHEME_CONFIGDIR}\"'"
856 AC_MSG_RESULT(${SCHEME_CONFIGDIR})
857 else
858 AC_MSG_RESULT(not found)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000859 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100860
861 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100862 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))))'`
863 if test "X$SCHEME_COLLECTS" = "X"; then
864 if test -d "$vi_cv_path_mzscheme_pfx/lib/plt/collects"; then
865 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100866 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100867 if test -d "$vi_cv_path_mzscheme_pfx/lib/racket/collects"; then
868 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100869 else
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100870 if test -d "$vi_cv_path_mzscheme_pfx/share/racket/collects"; then
871 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
872 else
873 if test -d "$vi_cv_path_mzscheme_pfx/collects"; then
874 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
875 fi
Bram Moolenaar75676462013-01-30 14:55:42 +0100876 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100877 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100878 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000879 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100880 if test "X$SCHEME_COLLECTS" != "X" ; then
881 AC_MSG_RESULT(${SCHEME_COLLECTS})
882 else
883 AC_MSG_RESULT(not found)
884 fi
885
886 AC_MSG_CHECKING(for mzscheme_base.c)
887 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000888 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100889 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
890 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100891 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100892 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100893 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100894 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
895 MZSCHEME_MOD="++lib scheme/base"
896 else
897 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
898 MZSCHEME_EXTRA="mzscheme_base.c"
899 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
900 MZSCHEME_MOD=""
901 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100902 fi
903 fi
904 if test "X$MZSCHEME_EXTRA" != "X" ; then
905 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000906 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100907 AC_MSG_RESULT(needed)
908 else
909 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000910 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100911
Bram Moolenaar9e902192013-07-17 18:58:11 +0200912 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
913 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
914
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000915 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100916 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200917
918 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
919 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
920 cflags_save=$CFLAGS
921 libs_save=$LIBS
922 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
923 LIBS="$LIBS $MZSCHEME_LIBS"
924 AC_TRY_LINK(,[ ],
925 AC_MSG_RESULT(yes); mzs_ok=yes,
926 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
927 CFLAGS=$cflags_save
928 LIBS=$libs_save
929 if test $mzs_ok = yes; then
930 MZSCHEME_SRC="if_mzsch.c"
931 MZSCHEME_OBJ="objects/if_mzsch.o"
932 MZSCHEME_PRO="if_mzsch.pro"
933 AC_DEFINE(FEAT_MZSCHEME)
934 else
935 MZSCHEME_CFLAGS=
936 MZSCHEME_LIBS=
937 MZSCHEME_EXTRA=
938 MZSCHEME_MZC=
939 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000940 fi
941 AC_SUBST(MZSCHEME_SRC)
942 AC_SUBST(MZSCHEME_OBJ)
943 AC_SUBST(MZSCHEME_PRO)
944 AC_SUBST(MZSCHEME_LIBS)
945 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000946 AC_SUBST(MZSCHEME_EXTRA)
947 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000948fi
949
950
Bram Moolenaar071d4272004-06-13 20:20:40 +0000951AC_MSG_CHECKING(--enable-perlinterp argument)
952AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200953 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000954 [enable_perlinterp="no"])
955AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200956if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +0100957 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
958 AC_MSG_ERROR([cannot use Perl with tiny or small features])
959 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000960 AC_SUBST(vi_cv_path_perl)
961 AC_PATH_PROG(vi_cv_path_perl, perl)
962 if test "X$vi_cv_path_perl" != "X"; then
963 AC_MSG_CHECKING(Perl version)
964 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
965 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200966 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000967 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
968 badthreads=no
969 else
970 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
971 eval `$vi_cv_path_perl -V:use5005threads`
972 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
973 badthreads=no
974 else
975 badthreads=yes
976 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
977 fi
978 else
979 badthreads=yes
980 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
981 fi
982 fi
983 if test $badthreads = no; then
984 AC_MSG_RESULT(OK)
985 eval `$vi_cv_path_perl -V:shrpenv`
986 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
987 shrpenv=""
988 fi
989 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
990 AC_SUBST(vi_cv_perllib)
Bram Moolenaard5f62b12014-08-17 17:05:44 +0200991 vi_cv_perl_extutils=unknown_perl_extutils_path
992 for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do
993 xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp"
994 if test -f "$xsubpp_path"; then
995 vi_cv_perl_xsubpp="$xsubpp_path"
996 fi
997 done
998 AC_SUBST(vi_cv_perl_xsubpp)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000999 dnl Remove "-fno-something", it breaks using cproto.
Bram Moolenaar280a8682015-06-21 13:41:08 +02001000 dnl Remove "-fdebug-prefix-map", it isn't supported by clang.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001001 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
Bram Moolenaar280a8682015-06-21 13:41:08 +02001002 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \
1003 -e 's/-fdebug-prefix-map[[^ ]]*//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001004 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
1005 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
1006 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
1007 -e 's/-bE:perl.exp//' -e 's/-lc //'`
1008 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
1009 dnl a test in configure may fail because of that.
1010 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
1011 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
1012
1013 dnl check that compiling a simple program still works with the flags
1014 dnl added for Perl.
1015 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
1016 cflags_save=$CFLAGS
1017 libs_save=$LIBS
1018 ldflags_save=$LDFLAGS
1019 CFLAGS="$CFLAGS $perlcppflags"
1020 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001021 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001022 LDFLAGS="$perlldflags $LDFLAGS"
1023 AC_TRY_LINK(,[ ],
1024 AC_MSG_RESULT(yes); perl_ok=yes,
1025 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
1026 CFLAGS=$cflags_save
1027 LIBS=$libs_save
1028 LDFLAGS=$ldflags_save
1029 if test $perl_ok = yes; then
1030 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +00001031 dnl remove -pipe and -Wxxx, it confuses cproto
1032 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001033 fi
1034 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001035 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001036 LDFLAGS="$perlldflags $LDFLAGS"
1037 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001038 fi
1039 PERL_LIBS=$perllibs
1040 PERL_SRC="auto/if_perl.c if_perlsfio.c"
1041 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
1042 PERL_PRO="if_perl.pro if_perlsfio.pro"
1043 AC_DEFINE(FEAT_PERL)
1044 fi
1045 fi
1046 else
1047 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
1048 fi
1049 fi
1050
1051 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +00001052 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +00001053 dir=/System/Library/Perl
1054 darwindir=$dir/darwin
1055 if test -d $darwindir; then
1056 PERL=/usr/bin/perl
1057 else
1058 dnl Mac OS X 10.3
1059 dir=/System/Library/Perl/5.8.1
1060 darwindir=$dir/darwin-thread-multi-2level
1061 if test -d $darwindir; then
1062 PERL=/usr/bin/perl
1063 fi
1064 fi
1065 if test -n "$PERL"; then
1066 PERL_DIR="$dir"
1067 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1068 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1069 PERL_LIBS="-L$darwindir/CORE -lperl"
1070 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001071 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1072 dnl be included if requested by passing --with-mac-arch to
1073 dnl configure, so strip these flags first (if present)
1074 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1075 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 +00001076 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001077 if test "$enable_perlinterp" = "dynamic"; then
1078 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1079 AC_DEFINE(DYNAMIC_PERL)
1080 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
1081 fi
1082 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001083
1084 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1085 AC_MSG_ERROR([could not configure perl])
1086 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001087fi
1088AC_SUBST(shrpenv)
1089AC_SUBST(PERL_SRC)
1090AC_SUBST(PERL_OBJ)
1091AC_SUBST(PERL_PRO)
1092AC_SUBST(PERL_CFLAGS)
1093AC_SUBST(PERL_LIBS)
1094
1095AC_MSG_CHECKING(--enable-pythoninterp argument)
1096AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001097 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001098 [enable_pythoninterp="no"])
1099AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001100if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001101 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1102 AC_MSG_ERROR([cannot use Python with tiny or small features])
1103 fi
1104
Bram Moolenaar071d4272004-06-13 20:20:40 +00001105 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001106 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001107 if test "X$vi_cv_path_python" != "X"; then
1108
1109 dnl -- get its version number
1110 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1111 [[vi_cv_var_python_version=`
1112 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1113 ]])
1114
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001115 dnl -- it must be at least version 2.3
1116 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001117 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001118 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001119 then
1120 AC_MSG_RESULT(yep)
1121
1122 dnl -- find where python thinks it was installed
1123 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1124 [ vi_cv_path_python_pfx=`
1125 ${vi_cv_path_python} -c \
1126 "import sys; print sys.prefix"` ])
1127
1128 dnl -- and where it thinks it runs
1129 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1130 [ vi_cv_path_python_epfx=`
1131 ${vi_cv_path_python} -c \
1132 "import sys; print sys.exec_prefix"` ])
1133
1134 dnl -- python's internal library path
1135
1136 AC_CACHE_VAL(vi_cv_path_pythonpath,
1137 [ vi_cv_path_pythonpath=`
1138 unset PYTHONPATH;
1139 ${vi_cv_path_python} -c \
1140 "import sys, string; print string.join(sys.path,':')"` ])
1141
1142 dnl -- where the Python implementation library archives are
1143
1144 AC_ARG_WITH(python-config-dir,
1145 [ --with-python-config-dir=PATH Python's config directory],
1146 [ vi_cv_path_python_conf="${withval}" ] )
1147
1148 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1149 [
1150 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001151 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1152 if test -d "$d" && test -f "$d/config.c"; then
1153 vi_cv_path_python_conf="$d"
1154 else
1155 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1156 for subdir in lib64 lib share; do
1157 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1158 if test -d "$d" && test -f "$d/config.c"; then
1159 vi_cv_path_python_conf="$d"
1160 fi
1161 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001162 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001163 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001164 ])
1165
1166 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1167
1168 if test "X$PYTHON_CONFDIR" = "X"; then
1169 AC_MSG_RESULT([can't find it!])
1170 else
1171
1172 dnl -- we need to examine Python's config/Makefile too
1173 dnl see what the interpreter is built from
1174 AC_CACHE_VAL(vi_cv_path_python_plibs,
1175 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001176 pwd=`pwd`
1177 tmp_mkf="$pwd/config-PyMake$$"
1178 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001179__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001180 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001181 @echo "python_LIBS='$(LIBS)'"
1182 @echo "python_SYSLIBS='$(SYSLIBS)'"
1183 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001184 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001185 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001186 @echo "python_PYTHONFRAMEWORK='$(PYTHONFRAMEWORK)'"
1187 @echo "python_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
1188 @echo "python_PYTHONFRAMEWORKINSTALLDIR='$(PYTHONFRAMEWORKINSTALLDIR)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001189eof
1190 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001191 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1192 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001193 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1194 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1195 vi_cv_path_python_plibs="-framework Python"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001196 if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
1197 vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
1198 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001199 else
1200 if test "${vi_cv_var_python_version}" = "1.4"; then
1201 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1202 else
1203 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1204 fi
Bram Moolenaar6c927552015-03-24 12:21:33 +01001205 dnl -- Check if the path contained in python_LINKFORSHARED is
1206 dnl usable for vim build. If not, make and try other
1207 dnl candidates.
Bram Moolenaara161e262015-03-24 15:14:27 +01001208 if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
Bram Moolenaar6c927552015-03-24 12:21:33 +01001209 python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]].*/\1/'`
1210 python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]][[ \t]]*\(.*\)/\2/'`
1211 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1212 dnl -- The path looks relative. Guess the absolute one using
1213 dnl the prefix and try that.
1214 python_link_path="${python_PYTHONFRAMEWORKPREFIX}/${python_link_path}"
1215 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1216 dnl -- A last resort.
1217 python_link_path="${python_PYTHONFRAMEWORKINSTALLDIR}/Versions/${vi_cv_var_python_version}/${python_PYTHONFRAMEWORK}"
1218 dnl -- No check is done. The last word is left to the
1219 dnl "sanity" test on link flags that follows shortly.
1220 fi
1221 python_LINKFORSHARED="${python_link_symbol} ${python_link_path}"
1222 fi
1223 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001224 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 +00001225 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1226 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1227 fi
1228 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001229 AC_CACHE_CHECK(Python's dll name,vi_cv_dll_name_python,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001230 [
1231 if test "X$python_DLLLIBRARY" != "X"; then
1232 vi_cv_dll_name_python="$python_DLLLIBRARY"
1233 else
1234 vi_cv_dll_name_python="$python_INSTSONAME"
1235 fi
1236 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001237
1238 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1239 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001240 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 +00001241 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001242 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 +00001243 fi
1244 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001245 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001246 if test "${vi_cv_var_python_version}" = "1.4"; then
1247 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1248 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001249 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 +00001250
1251 dnl On FreeBSD linking with "-pthread" is required to use threads.
1252 dnl _THREAD_SAFE must be used for compiling then.
1253 dnl The "-pthread" is added to $LIBS, so that the following check for
1254 dnl sigaltstack() will look in libc_r (it's there in libc!).
1255 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1256 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1257 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1258 AC_MSG_CHECKING([if -pthread should be used])
1259 threadsafe_flag=
1260 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001261 dnl if test "x$MACOSX" != "xyes"; then
1262 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001263 test "$GCC" = yes && threadsafe_flag="-pthread"
1264 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1265 threadsafe_flag="-D_THREAD_SAFE"
1266 thread_lib="-pthread"
1267 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001268 if test "`(uname) 2>/dev/null`" = SunOS; then
1269 threadsafe_flag="-pthreads"
1270 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001271 fi
1272 libs_save_old=$LIBS
1273 if test -n "$threadsafe_flag"; then
1274 cflags_save=$CFLAGS
1275 CFLAGS="$CFLAGS $threadsafe_flag"
1276 LIBS="$LIBS $thread_lib"
1277 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001278 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001279 AC_MSG_RESULT(no); LIBS=$libs_save_old
1280 )
1281 CFLAGS=$cflags_save
1282 else
1283 AC_MSG_RESULT(no)
1284 fi
1285
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001286 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001287 dnl added for Python.
1288 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1289 cflags_save=$CFLAGS
1290 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001291 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001292 LIBS="$LIBS $PYTHON_LIBS"
1293 AC_TRY_LINK(,[ ],
1294 AC_MSG_RESULT(yes); python_ok=yes,
1295 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1296 CFLAGS=$cflags_save
1297 LIBS=$libs_save
1298 if test $python_ok = yes; then
1299 AC_DEFINE(FEAT_PYTHON)
1300 else
1301 LIBS=$libs_save_old
1302 PYTHON_SRC=
1303 PYTHON_OBJ=
1304 PYTHON_LIBS=
1305 PYTHON_CFLAGS=
1306 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001307 fi
1308 else
1309 AC_MSG_RESULT(too old)
1310 fi
1311 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001312
1313 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1314 AC_MSG_ERROR([could not configure python])
1315 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001316fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001317
Bram Moolenaar071d4272004-06-13 20:20:40 +00001318AC_SUBST(PYTHON_CONFDIR)
1319AC_SUBST(PYTHON_LIBS)
1320AC_SUBST(PYTHON_GETPATH_CFLAGS)
1321AC_SUBST(PYTHON_CFLAGS)
1322AC_SUBST(PYTHON_SRC)
1323AC_SUBST(PYTHON_OBJ)
1324
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001325
1326AC_MSG_CHECKING(--enable-python3interp argument)
1327AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001328 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001329 [enable_python3interp="no"])
1330AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001331if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001332 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1333 AC_MSG_ERROR([cannot use Python with tiny or small features])
1334 fi
1335
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001336 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001337 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001338 if test "X$vi_cv_path_python3" != "X"; then
1339
1340 dnl -- get its version number
1341 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1342 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001343 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001344 ]])
1345
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001346 dnl -- it must be at least version 3
1347 AC_MSG_CHECKING(Python is 3.0 or better)
1348 if ${vi_cv_path_python3} -c \
1349 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1350 then
1351 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001352
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001353 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1354 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001355 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001356 vi_cv_var_python3_abiflags=
1357 if ${vi_cv_path_python3} -c \
1358 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1359 then
1360 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1361 "import sys; print(sys.abiflags)"`
1362 fi ])
1363
1364 dnl -- find where python3 thinks it was installed
1365 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1366 [ vi_cv_path_python3_pfx=`
1367 ${vi_cv_path_python3} -c \
1368 "import sys; print(sys.prefix)"` ])
1369
1370 dnl -- and where it thinks it runs
1371 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1372 [ vi_cv_path_python3_epfx=`
1373 ${vi_cv_path_python3} -c \
1374 "import sys; print(sys.exec_prefix)"` ])
1375
1376 dnl -- python3's internal library path
1377
1378 AC_CACHE_VAL(vi_cv_path_python3path,
1379 [ vi_cv_path_python3path=`
1380 unset PYTHONPATH;
1381 ${vi_cv_path_python3} -c \
1382 "import sys, string; print(':'.join(sys.path))"` ])
1383
1384 dnl -- where the Python implementation library archives are
1385
1386 AC_ARG_WITH(python3-config-dir,
1387 [ --with-python3-config-dir=PATH Python's config directory],
1388 [ vi_cv_path_python3_conf="${withval}" ] )
1389
1390 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1391 [
1392 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001393 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001394 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1395 if test -d "$d" && test -f "$d/config.c"; then
1396 vi_cv_path_python3_conf="$d"
1397 else
1398 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1399 for subdir in lib64 lib share; do
1400 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1401 if test -d "$d" && test -f "$d/config.c"; then
1402 vi_cv_path_python3_conf="$d"
1403 fi
1404 done
1405 done
1406 fi
1407 ])
1408
1409 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1410
1411 if test "X$PYTHON3_CONFDIR" = "X"; then
1412 AC_MSG_RESULT([can't find it!])
1413 else
1414
1415 dnl -- we need to examine Python's config/Makefile too
1416 dnl see what the interpreter is built from
1417 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1418 [
1419 pwd=`pwd`
1420 tmp_mkf="$pwd/config-PyMake$$"
1421 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001422__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001423 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001424 @echo "python3_LIBS='$(LIBS)'"
1425 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001426 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001427 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001428eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001429 dnl -- delete the lines from make about Entering/Leaving directory
1430 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1431 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001432 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 +02001433 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1434 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1435 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1436 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1437 ])
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001438 AC_CACHE_CHECK(Python3's dll name,vi_cv_dll_name_python3,
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001439 [
1440 if test "X$python3_DLLLIBRARY" != "X"; then
1441 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
1442 else
1443 vi_cv_dll_name_python3="$python3_INSTSONAME"
1444 fi
1445 ])
1446
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001447 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1448 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001449 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 +02001450 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001451 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 +02001452 fi
1453 PYTHON3_SRC="if_python3.c"
1454 PYTHON3_OBJ="objects/if_python3.o"
1455
1456 dnl On FreeBSD linking with "-pthread" is required to use threads.
1457 dnl _THREAD_SAFE must be used for compiling then.
1458 dnl The "-pthread" is added to $LIBS, so that the following check for
1459 dnl sigaltstack() will look in libc_r (it's there in libc!).
1460 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1461 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1462 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1463 AC_MSG_CHECKING([if -pthread should be used])
1464 threadsafe_flag=
1465 thread_lib=
1466 dnl if test "x$MACOSX" != "xyes"; then
1467 if test "`(uname) 2>/dev/null`" != Darwin; then
1468 test "$GCC" = yes && threadsafe_flag="-pthread"
1469 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1470 threadsafe_flag="-D_THREAD_SAFE"
1471 thread_lib="-pthread"
1472 fi
1473 if test "`(uname) 2>/dev/null`" = SunOS; then
1474 threadsafe_flag="-pthreads"
1475 fi
1476 fi
1477 libs_save_old=$LIBS
1478 if test -n "$threadsafe_flag"; then
1479 cflags_save=$CFLAGS
1480 CFLAGS="$CFLAGS $threadsafe_flag"
1481 LIBS="$LIBS $thread_lib"
1482 AC_TRY_LINK(,[ ],
1483 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1484 AC_MSG_RESULT(no); LIBS=$libs_save_old
1485 )
1486 CFLAGS=$cflags_save
1487 else
1488 AC_MSG_RESULT(no)
1489 fi
1490
1491 dnl check that compiling a simple program still works with the flags
1492 dnl added for Python.
1493 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1494 cflags_save=$CFLAGS
1495 libs_save=$LIBS
1496 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1497 LIBS="$LIBS $PYTHON3_LIBS"
1498 AC_TRY_LINK(,[ ],
1499 AC_MSG_RESULT(yes); python3_ok=yes,
1500 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1501 CFLAGS=$cflags_save
1502 LIBS=$libs_save
1503 if test "$python3_ok" = yes; then
1504 AC_DEFINE(FEAT_PYTHON3)
1505 else
1506 LIBS=$libs_save_old
1507 PYTHON3_SRC=
1508 PYTHON3_OBJ=
1509 PYTHON3_LIBS=
1510 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001511 fi
1512 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001513 else
1514 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001515 fi
1516 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001517 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1518 AC_MSG_ERROR([could not configure python3])
1519 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001520fi
1521
1522AC_SUBST(PYTHON3_CONFDIR)
1523AC_SUBST(PYTHON3_LIBS)
1524AC_SUBST(PYTHON3_CFLAGS)
1525AC_SUBST(PYTHON3_SRC)
1526AC_SUBST(PYTHON3_OBJ)
1527
1528dnl if python2.x and python3.x are enabled one can only link in code
1529dnl with dlopen(), dlsym(), dlclose()
1530if test "$python_ok" = yes && test "$python3_ok" = yes; then
1531 AC_DEFINE(DYNAMIC_PYTHON)
1532 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001533 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001534 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001535 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001536 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001537 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001538 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001539 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001540 #include <dlfcn.h>
1541 /* If this program fails, then RTLD_GLOBAL is needed.
1542 * RTLD_GLOBAL will be used and then it is not possible to
1543 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001544 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001545 */
1546
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001547 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001548 {
1549 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001550 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001551 if (pylib != 0)
1552 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001553 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001554 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1555 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1556 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001557 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001558 (*init)();
1559 needed = (*simple)("import termios") == -1;
1560 (*final)();
1561 dlclose(pylib);
1562 }
1563 return !needed;
1564 }
1565
1566 int main(int argc, char** argv)
1567 {
1568 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001569 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001570 not_needed = 1;
1571 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001572 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001573 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001574
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001575 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001576 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001577
1578 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1579 cflags_save=$CFLAGS
1580 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001581 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001582 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001583 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001584 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001585 #include <dlfcn.h>
1586 #include <wchar.h>
1587 /* If this program fails, then RTLD_GLOBAL is needed.
1588 * RTLD_GLOBAL will be used and then it is not possible to
1589 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001590 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001591 */
1592
1593 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1594 {
1595 int needed = 0;
Bram Moolenaarba59ddb2016-01-28 15:34:25 +01001596 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL);
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001597 if (pylib != 0)
1598 {
1599 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1600 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1601 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1602 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1603 (*pfx)(prefix);
1604 (*init)();
1605 needed = (*simple)("import termios") == -1;
1606 (*final)();
1607 dlclose(pylib);
1608 }
1609 return !needed;
1610 }
1611
1612 int main(int argc, char** argv)
1613 {
1614 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001615 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001616 not_needed = 1;
1617 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001618 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001619 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1620
1621 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001622 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001623
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001624 PYTHON_SRC="if_python.c"
1625 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001626 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001627 PYTHON_LIBS=
1628 PYTHON3_SRC="if_python3.c"
1629 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001630 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001631 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001632elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1633 AC_DEFINE(DYNAMIC_PYTHON)
1634 PYTHON_SRC="if_python.c"
1635 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001636 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001637 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001638elif test "$python_ok" = yes; then
1639 dnl Check that adding -fPIE works. It may be needed when using a static
1640 dnl Python library.
1641 AC_MSG_CHECKING([if -fPIE can be added for Python])
1642 cflags_save=$CFLAGS
1643 libs_save=$LIBS
1644 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1645 LIBS="$LIBS $PYTHON_LIBS"
1646 AC_TRY_LINK(,[ ],
1647 AC_MSG_RESULT(yes); fpie_ok=yes,
1648 AC_MSG_RESULT(no); fpie_ok=no)
1649 CFLAGS=$cflags_save
1650 LIBS=$libs_save
1651 if test $fpie_ok = yes; then
1652 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1653 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001654elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1655 AC_DEFINE(DYNAMIC_PYTHON3)
1656 PYTHON3_SRC="if_python3.c"
1657 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001658 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001659 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001660elif test "$python3_ok" = yes; then
1661 dnl Check that adding -fPIE works. It may be needed when using a static
1662 dnl Python library.
1663 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1664 cflags_save=$CFLAGS
1665 libs_save=$LIBS
1666 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1667 LIBS="$LIBS $PYTHON3_LIBS"
1668 AC_TRY_LINK(,[ ],
1669 AC_MSG_RESULT(yes); fpie_ok=yes,
1670 AC_MSG_RESULT(no); fpie_ok=no)
1671 CFLAGS=$cflags_save
1672 LIBS=$libs_save
1673 if test $fpie_ok = yes; then
1674 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1675 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001676fi
1677
Bram Moolenaar071d4272004-06-13 20:20:40 +00001678AC_MSG_CHECKING(--enable-tclinterp argument)
1679AC_ARG_ENABLE(tclinterp,
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001680 [ --enable-tclinterp[=OPTS] Include Tcl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001681 [enable_tclinterp="no"])
1682AC_MSG_RESULT($enable_tclinterp)
1683
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001684if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001685
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001686 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001687 AC_MSG_CHECKING(--with-tclsh argument)
1688 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1689 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001690 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001691 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1692 AC_SUBST(vi_cv_path_tcl)
1693
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001694 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1695 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1696 tclsh_name="tclsh8.4"
1697 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1698 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001699 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001700 tclsh_name="tclsh8.2"
1701 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1702 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001703 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1704 tclsh_name="tclsh8.0"
1705 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1706 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001707 dnl still didn't find it, try without version number
1708 if test "X$vi_cv_path_tcl" = "X"; then
1709 tclsh_name="tclsh"
1710 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1711 fi
1712 if test "X$vi_cv_path_tcl" != "X"; then
1713 AC_MSG_CHECKING(Tcl version)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001714 if echo 'exit [[expr [info tclversion] < 8.0]]' | "$vi_cv_path_tcl" - ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001715 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1716 AC_MSG_RESULT($tclver - OK);
1717 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 +01001718 tcldll=`echo 'puts libtcl[[info tclversion]][[info sharedlibextension]]' | $vi_cv_path_tcl -`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001719
1720 AC_MSG_CHECKING(for location of Tcl include)
1721 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001722 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 +00001723 else
1724 dnl For Mac OS X 10.3, use the OS-provided framework location
1725 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1726 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001727 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001728 for try in $tclinc; do
1729 if test -f "$try/tcl.h"; then
1730 AC_MSG_RESULT($try/tcl.h)
1731 TCL_INC=$try
1732 break
1733 fi
1734 done
1735 if test -z "$TCL_INC"; then
1736 AC_MSG_RESULT(<not found>)
1737 SKIP_TCL=YES
1738 fi
1739 if test -z "$SKIP_TCL"; then
1740 AC_MSG_CHECKING(for location of tclConfig.sh script)
1741 if test "x$MACOSX" != "xyes"; then
1742 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001743 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001744 else
1745 dnl For Mac OS X 10.3, use the OS-provided framework location
1746 tclcnf="/System/Library/Frameworks/Tcl.framework"
1747 fi
1748 for try in $tclcnf; do
Bram Moolenaar49222be2015-12-11 18:11:30 +01001749 if test -f "$try/tclConfig.sh"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001750 AC_MSG_RESULT($try/tclConfig.sh)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001751 . "$try/tclConfig.sh"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001752 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001753 if test "$enable_tclinterp" = "dynamic"; then
1754 TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"`
1755 else
1756 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1757 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001758 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001759 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001760 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 +00001761 break
1762 fi
1763 done
1764 if test -z "$TCL_LIBS"; then
1765 AC_MSG_RESULT(<not found>)
1766 AC_MSG_CHECKING(for Tcl library by myself)
1767 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001768 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001769 for ext in .so .a ; do
1770 for ver in "" $tclver ; do
1771 for try in $tcllib ; do
1772 trylib=tcl$ver$ext
Bram Moolenaar49222be2015-12-11 18:11:30 +01001773 if test -f "$try/lib$trylib" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001774 AC_MSG_RESULT($try/lib$trylib)
Bram Moolenaar49222be2015-12-11 18:11:30 +01001775 TCL_LIBS="-L\"$try\" -ltcl$ver -ldl -lm"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001776 if test "`(uname) 2>/dev/null`" = SunOS &&
1777 uname -r | grep '^5' >/dev/null; then
1778 TCL_LIBS="$TCL_LIBS -R $try"
1779 fi
1780 break 3
1781 fi
1782 done
1783 done
1784 done
1785 if test -z "$TCL_LIBS"; then
1786 AC_MSG_RESULT(<not found>)
1787 SKIP_TCL=YES
1788 fi
1789 fi
1790 if test -z "$SKIP_TCL"; then
1791 AC_DEFINE(FEAT_TCL)
1792 TCL_SRC=if_tcl.c
1793 TCL_OBJ=objects/if_tcl.o
1794 TCL_PRO=if_tcl.pro
1795 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1796 fi
1797 fi
1798 else
1799 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1800 fi
1801 fi
Bram Moolenaar8a5115c2016-01-09 19:41:11 +01001802 if test "$enable_tclinterp" = "dynamic"; then
1803 if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then
1804 AC_DEFINE(DYNAMIC_TCL)
1805 TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS"
1806 fi
1807 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001808 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1809 AC_MSG_ERROR([could not configure Tcl])
1810 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001811fi
1812AC_SUBST(TCL_SRC)
1813AC_SUBST(TCL_OBJ)
1814AC_SUBST(TCL_PRO)
1815AC_SUBST(TCL_CFLAGS)
1816AC_SUBST(TCL_LIBS)
1817
1818AC_MSG_CHECKING(--enable-rubyinterp argument)
1819AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001820 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001821 [enable_rubyinterp="no"])
1822AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001823if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001824 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1825 AC_MSG_ERROR([cannot use Ruby with tiny or small features])
1826 fi
1827
Bram Moolenaar165641d2010-02-17 16:23:09 +01001828 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001829 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001830 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1831 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1832 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001833 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001834 if test "X$vi_cv_path_ruby" != "X"; then
1835 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001836 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 +00001837 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001838 AC_MSG_CHECKING(Ruby rbconfig)
1839 ruby_rbconfig="RbConfig"
1840 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1841 ruby_rbconfig="Config"
1842 fi
1843 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001844 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001845 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 +00001846 if test "X$rubyhdrdir" != "X"; then
1847 AC_MSG_RESULT($rubyhdrdir)
1848 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001849 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1850 if test -d "$rubyarchdir"; then
1851 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001852 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001853 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001854 if test "X$rubyversion" = "X"; then
1855 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1856 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001857 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001858 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001859 if test "X$rubylibs" != "X"; then
1860 RUBY_LIBS="$rubylibs"
1861 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001862 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1863 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001864 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001865 if test -f "$rubylibdir/$librubya"; then
1866 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001867 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1868 elif test "$librubyarg" = "libruby.a"; then
1869 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1870 librubyarg="-lruby"
1871 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001872 fi
1873
1874 if test "X$librubyarg" != "X"; then
1875 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1876 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001877 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001878 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001879 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1880 dnl be included if requested by passing --with-mac-arch to
1881 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001882 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001883 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001884 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001885 LDFLAGS="$rubyldflags $LDFLAGS"
1886 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001887 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001888 fi
1889 RUBY_SRC="if_ruby.c"
1890 RUBY_OBJ="objects/if_ruby.o"
1891 RUBY_PRO="if_ruby.pro"
1892 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001893 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001894 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001895 AC_DEFINE(DYNAMIC_RUBY)
1896 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1897 RUBY_LIBS=
1898 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001899 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001900 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001901 fi
1902 else
1903 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1904 fi
1905 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001906
1907 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1908 AC_MSG_ERROR([could not configure Ruby])
1909 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001910fi
1911AC_SUBST(RUBY_SRC)
1912AC_SUBST(RUBY_OBJ)
1913AC_SUBST(RUBY_PRO)
1914AC_SUBST(RUBY_CFLAGS)
1915AC_SUBST(RUBY_LIBS)
1916
1917AC_MSG_CHECKING(--enable-cscope argument)
1918AC_ARG_ENABLE(cscope,
1919 [ --enable-cscope Include cscope interface.], ,
1920 [enable_cscope="no"])
1921AC_MSG_RESULT($enable_cscope)
1922if test "$enable_cscope" = "yes"; then
1923 AC_DEFINE(FEAT_CSCOPE)
1924fi
1925
1926AC_MSG_CHECKING(--enable-workshop argument)
1927AC_ARG_ENABLE(workshop,
1928 [ --enable-workshop Include Sun Visual Workshop support.], ,
1929 [enable_workshop="no"])
1930AC_MSG_RESULT($enable_workshop)
1931if test "$enable_workshop" = "yes"; then
1932 AC_DEFINE(FEAT_SUN_WORKSHOP)
1933 WORKSHOP_SRC="workshop.c integration.c"
1934 AC_SUBST(WORKSHOP_SRC)
1935 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1936 AC_SUBST(WORKSHOP_OBJ)
1937 if test "${enable_gui-xxx}" = xxx; then
1938 enable_gui=motif
1939 fi
1940fi
1941
1942AC_MSG_CHECKING(--disable-netbeans argument)
1943AC_ARG_ENABLE(netbeans,
1944 [ --disable-netbeans Disable NetBeans integration support.],
1945 , [enable_netbeans="yes"])
1946if test "$enable_netbeans" = "yes"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001947 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1948 AC_MSG_RESULT([cannot use NetBeans with tiny or small features])
1949 enable_netbeans="no"
1950 else
1951 AC_MSG_RESULT(no)
1952 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01001953else
1954 AC_MSG_RESULT(yes)
1955fi
1956
1957AC_MSG_CHECKING(--disable-channel argument)
1958AC_ARG_ENABLE(channel,
1959 [ --disable-channel Disable process communication support.],
1960 , [enable_channel="yes"])
1961if test "$enable_channel" = "yes"; then
Bram Moolenaar3c124e32016-01-31 14:36:58 +01001962 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1963 AC_MSG_RESULT([cannot use channels with tiny or small features])
1964 enable_channel="no"
1965 else
1966 AC_MSG_RESULT(no)
1967 fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01001968else
1969 if test "$enable_netbeans" = "yes"; then
Bram Moolenaar16435482016-01-24 21:31:54 +01001970 AC_MSG_RESULT([yes, netbeans also disabled])
Bram Moolenaare0874f82016-01-24 20:36:41 +01001971 enable_netbeans="no"
1972 else
1973 AC_MSG_RESULT(yes)
1974 fi
1975fi
1976
Bram Moolenaar16435482016-01-24 21:31:54 +01001977if test "$enable_channel" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001978 dnl On Solaris we need the socket and nsl library.
1979 AC_CHECK_LIB(socket, socket)
1980 AC_CHECK_LIB(nsl, gethostbyname)
Bram Moolenaare0874f82016-01-24 20:36:41 +01001981 AC_MSG_CHECKING(whether compiling with process communication is possible)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001982 AC_TRY_LINK([
1983#include <stdio.h>
1984#include <stdlib.h>
1985#include <stdarg.h>
1986#include <fcntl.h>
1987#include <netdb.h>
1988#include <netinet/in.h>
1989#include <errno.h>
1990#include <sys/types.h>
1991#include <sys/socket.h>
1992 /* Check bitfields */
1993 struct nbbuf {
1994 unsigned int initDone:1;
1995 ushort signmaplen;
1996 };
1997 ], [
1998 /* Check creating a socket. */
1999 struct sockaddr_in server;
2000 (void)socket(AF_INET, SOCK_STREAM, 0);
2001 (void)htons(100);
2002 (void)gethostbyname("microsoft.com");
2003 if (errno == ECONNREFUSED)
2004 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
2005 ],
2006 AC_MSG_RESULT(yes),
Bram Moolenaare0874f82016-01-24 20:36:41 +01002007 AC_MSG_RESULT(no); enable_netbeans="no"; enable_channel="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002008fi
2009if test "$enable_netbeans" = "yes"; then
2010 AC_DEFINE(FEAT_NETBEANS_INTG)
2011 NETBEANS_SRC="netbeans.c"
2012 AC_SUBST(NETBEANS_SRC)
2013 NETBEANS_OBJ="objects/netbeans.o"
2014 AC_SUBST(NETBEANS_OBJ)
2015fi
Bram Moolenaare0874f82016-01-24 20:36:41 +01002016if test "$enable_channel" = "yes"; then
2017 AC_DEFINE(FEAT_CHANNEL)
2018 CHANNEL_SRC="channel.c"
2019 AC_SUBST(CHANNEL_SRC)
2020 CHANNEL_OBJ="objects/channel.o"
2021 AC_SUBST(CHANNEL_OBJ)
2022fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002023
2024AC_MSG_CHECKING(--enable-sniff argument)
2025AC_ARG_ENABLE(sniff,
2026 [ --enable-sniff Include Sniff interface.], ,
2027 [enable_sniff="no"])
2028AC_MSG_RESULT($enable_sniff)
2029if test "$enable_sniff" = "yes"; then
2030 AC_DEFINE(FEAT_SNIFF)
2031 SNIFF_SRC="if_sniff.c"
2032 AC_SUBST(SNIFF_SRC)
2033 SNIFF_OBJ="objects/if_sniff.o"
2034 AC_SUBST(SNIFF_OBJ)
2035fi
2036
2037AC_MSG_CHECKING(--enable-multibyte argument)
2038AC_ARG_ENABLE(multibyte,
2039 [ --enable-multibyte Include multibyte editing support.], ,
2040 [enable_multibyte="no"])
2041AC_MSG_RESULT($enable_multibyte)
2042if test "$enable_multibyte" = "yes"; then
2043 AC_DEFINE(FEAT_MBYTE)
2044fi
2045
2046AC_MSG_CHECKING(--enable-hangulinput argument)
2047AC_ARG_ENABLE(hangulinput,
2048 [ --enable-hangulinput Include Hangul input support.], ,
2049 [enable_hangulinput="no"])
2050AC_MSG_RESULT($enable_hangulinput)
2051
2052AC_MSG_CHECKING(--enable-xim argument)
2053AC_ARG_ENABLE(xim,
2054 [ --enable-xim Include XIM input support.],
2055 AC_MSG_RESULT($enable_xim),
2056 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002057
2058AC_MSG_CHECKING(--enable-fontset argument)
2059AC_ARG_ENABLE(fontset,
2060 [ --enable-fontset Include X fontset output support.], ,
2061 [enable_fontset="no"])
2062AC_MSG_RESULT($enable_fontset)
2063dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
2064
2065test -z "$with_x" && with_x=yes
2066test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
2067if test "$with_x" = no; then
2068 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
2069else
2070 dnl Do this check early, so that its failure can override user requests.
2071
2072 AC_PATH_PROG(xmkmfpath, xmkmf)
2073
2074 AC_PATH_XTRA
2075
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002076 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00002077 dnl be compiled with a special option.
2078 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02002079 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002080 CFLAGS="$CFLAGS -W c,dll"
2081 LDFLAGS="$LDFLAGS -W l,dll"
2082 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
2083 fi
2084
2085 dnl On my HPUX system the X include dir is found, but the lib dir not.
2086 dnl This is a desparate try to fix this.
2087
2088 if test -d "$x_includes" && test ! -d "$x_libraries"; then
2089 x_libraries=`echo "$x_includes" | sed s/include/lib/`
2090 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
2091 X_LIBS="$X_LIBS -L$x_libraries"
2092 if test "`(uname) 2>/dev/null`" = SunOS &&
2093 uname -r | grep '^5' >/dev/null; then
2094 X_LIBS="$X_LIBS -R $x_libraries"
2095 fi
2096 fi
2097
2098 if test -d "$x_libraries" && test ! -d "$x_includes"; then
2099 x_includes=`echo "$x_libraries" | sed s/lib/include/`
2100 AC_MSG_RESULT(Corrected X includes to $x_includes)
2101 X_CFLAGS="$X_CFLAGS -I$x_includes"
2102 fi
2103
2104 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
2105 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
2106 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
2107 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
2108 dnl Same for "-R/usr/lib ".
2109 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
2110
2111
2112 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002113 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
2114 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002115 AC_MSG_CHECKING(if X11 header files can be found)
2116 cflags_save=$CFLAGS
2117 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002118 AC_TRY_COMPILE([#include <X11/Xlib.h>
2119#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00002120 AC_MSG_RESULT(yes),
2121 AC_MSG_RESULT(no); no_x=yes)
2122 CFLAGS=$cflags_save
2123
2124 if test "${no_x-no}" = yes; then
2125 with_x=no
2126 else
2127 AC_DEFINE(HAVE_X11)
2128 X_LIB="-lXt -lX11";
2129 AC_SUBST(X_LIB)
2130
2131 ac_save_LDFLAGS="$LDFLAGS"
2132 LDFLAGS="-L$x_libraries $LDFLAGS"
2133
2134 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2135 dnl For HP-UX 10.20 it must be before -lSM -lICE
2136 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2137 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2138
2139 dnl Some systems need -lnsl -lsocket when testing for ICE.
2140 dnl The check above doesn't do this, try here (again). Also needed to get
2141 dnl them after Xdmcp. link.sh will remove them when not needed.
2142 dnl Check for other function than above to avoid the cached value
2143 AC_CHECK_LIB(ICE, IceOpenConnection,
2144 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2145
2146 dnl Check for -lXpm (needed for some versions of Motif)
2147 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2148 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2149 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2150
2151 dnl Check that the X11 header files don't use implicit declarations
2152 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2153 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002154 dnl -Werror is GCC only, others like Solaris Studio might not like it
2155 if test "$GCC" = yes; then
2156 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2157 else
2158 CFLAGS="$CFLAGS $X_CFLAGS"
2159 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002160 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2161 AC_MSG_RESULT(no),
2162 CFLAGS="$CFLAGS -Wno-implicit-int"
2163 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2164 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2165 AC_MSG_RESULT(test failed)
2166 )
2167 )
2168 CFLAGS=$cflags_save
2169
2170 LDFLAGS="$ac_save_LDFLAGS"
2171
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002172 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2173 AC_CACHE_VAL(ac_cv_small_wchar_t,
2174 [AC_TRY_RUN([
2175#include <X11/Xlib.h>
2176#if STDC_HEADERS
2177# include <stdlib.h>
2178# include <stddef.h>
2179#endif
2180 main()
2181 {
2182 if (sizeof(wchar_t) <= 2)
2183 exit(1);
2184 exit(0);
2185 }],
2186 ac_cv_small_wchar_t="no",
2187 ac_cv_small_wchar_t="yes",
2188 AC_MSG_ERROR(failed to compile test program))])
2189 AC_MSG_RESULT($ac_cv_small_wchar_t)
2190 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2191 AC_DEFINE(SMALL_WCHAR_T)
2192 fi
2193
Bram Moolenaar071d4272004-06-13 20:20:40 +00002194 fi
2195fi
2196
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002197test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002198
2199AC_MSG_CHECKING(--enable-gui argument)
2200AC_ARG_ENABLE(gui,
Bram Moolenaar98921892016-02-23 17:14:37 +01002201 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk2/gnome2/gtk3/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002202
2203dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2204dnl Do not use character classes for portability with old tools.
2205enable_gui_canon=`echo "_$enable_gui" | \
2206 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2207
2208dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002209SKIP_GTK2=YES
Bram Moolenaar1858a842016-02-23 22:30:31 +01002210SKIP_GTK3=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002211SKIP_GNOME=YES
2212SKIP_MOTIF=YES
2213SKIP_ATHENA=YES
2214SKIP_NEXTAW=YES
2215SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002216SKIP_CARBON=YES
2217GUITYPE=NONE
2218
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002219if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002220 SKIP_PHOTON=
2221 case "$enable_gui_canon" in
2222 no) AC_MSG_RESULT(no GUI support)
2223 SKIP_PHOTON=YES ;;
2224 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2225 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2226 photon) AC_MSG_RESULT(Photon GUI support) ;;
2227 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2228 SKIP_PHOTON=YES ;;
2229 esac
2230
2231elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2232 SKIP_CARBON=
2233 case "$enable_gui_canon" in
2234 no) AC_MSG_RESULT(no GUI support)
2235 SKIP_CARBON=YES ;;
2236 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002237 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2238 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002239 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2240 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2241 SKIP_CARBON=YES ;;
2242 esac
2243
2244else
2245
Bram Moolenaar071d4272004-06-13 20:20:40 +00002246 case "$enable_gui_canon" in
2247 no|none) AC_MSG_RESULT(no GUI support) ;;
2248 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002249 SKIP_GTK2=
2250 SKIP_GNOME=
2251 SKIP_MOTIF=
2252 SKIP_ATHENA=
2253 SKIP_NEXTAW=
2254 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002255 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002256 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002257 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2258 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002259 SKIP_GTK2=;;
Bram Moolenaar98921892016-02-23 17:14:37 +01002260 gtk3) AC_MSG_RESULT(GTK+ 3.x GUI support)
2261 SKIP_GTK3=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002262 motif) AC_MSG_RESULT(Motif GUI support)
2263 SKIP_MOTIF=;;
2264 athena) AC_MSG_RESULT(Athena GUI support)
2265 SKIP_ATHENA=;;
2266 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2267 SKIP_NEXTAW=;;
2268 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2269 esac
2270
2271fi
2272
Bram Moolenaar071d4272004-06-13 20:20:40 +00002273if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2274 -a "$enable_gui_canon" != "gnome2"; then
2275 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2276 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002277 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002278 , enable_gtk2_check="yes")
2279 AC_MSG_RESULT($enable_gtk2_check)
2280 if test "x$enable_gtk2_check" = "xno"; then
2281 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002282 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002283 fi
2284fi
2285
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002286if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002287 AC_MSG_CHECKING(whether or not to look for GNOME)
2288 AC_ARG_ENABLE(gnome-check,
2289 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2290 , enable_gnome_check="no")
2291 AC_MSG_RESULT($enable_gnome_check)
2292 if test "x$enable_gnome_check" = "xno"; then
2293 SKIP_GNOME=YES
2294 fi
2295fi
2296
Bram Moolenaar98921892016-02-23 17:14:37 +01002297if test "x$SKIP_GTK3" != "xYES" -a "$enable_gui_canon" != "gtk3"; then
2298 AC_MSG_CHECKING(whether or not to look for GTK+ 3)
2299 AC_ARG_ENABLE(gtk3-check,
2300 [ --enable-gtk3-check If auto-select GUI, check for GTK+ 3 [default=yes]],
2301 , enable_gtk3_check="yes")
2302 AC_MSG_RESULT($enable_gtk3_check)
2303 if test "x$enable_gtk3_check" = "xno"; then
2304 SKIP_GTK3=YES
2305 fi
2306fi
2307
Bram Moolenaar071d4272004-06-13 20:20:40 +00002308if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2309 AC_MSG_CHECKING(whether or not to look for Motif)
2310 AC_ARG_ENABLE(motif-check,
2311 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2312 , enable_motif_check="yes")
2313 AC_MSG_RESULT($enable_motif_check)
2314 if test "x$enable_motif_check" = "xno"; then
2315 SKIP_MOTIF=YES
2316 fi
2317fi
2318
2319if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2320 AC_MSG_CHECKING(whether or not to look for Athena)
2321 AC_ARG_ENABLE(athena-check,
2322 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2323 , enable_athena_check="yes")
2324 AC_MSG_RESULT($enable_athena_check)
2325 if test "x$enable_athena_check" = "xno"; then
2326 SKIP_ATHENA=YES
2327 fi
2328fi
2329
2330if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2331 AC_MSG_CHECKING(whether or not to look for neXtaw)
2332 AC_ARG_ENABLE(nextaw-check,
2333 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2334 , enable_nextaw_check="yes")
2335 AC_MSG_RESULT($enable_nextaw_check);
2336 if test "x$enable_nextaw_check" = "xno"; then
2337 SKIP_NEXTAW=YES
2338 fi
2339fi
2340
2341if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2342 AC_MSG_CHECKING(whether or not to look for Carbon)
2343 AC_ARG_ENABLE(carbon-check,
2344 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2345 , enable_carbon_check="yes")
2346 AC_MSG_RESULT($enable_carbon_check);
2347 if test "x$enable_carbon_check" = "xno"; then
2348 SKIP_CARBON=YES
2349 fi
2350fi
2351
Bram Moolenaar843ee412004-06-30 16:16:41 +00002352
Bram Moolenaar071d4272004-06-13 20:20:40 +00002353if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2354 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002355 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002356 AC_MSG_RESULT(yes);
2357 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002358 if test "$VIMNAME" = "vim"; then
2359 VIMNAME=Vim
2360 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002361
Bram Moolenaar164fca32010-07-14 13:58:07 +02002362 if test "x$MACARCH" = "xboth"; then
2363 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2364 else
2365 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2366 fi
2367
Bram Moolenaar14716812006-05-04 21:54:08 +00002368 dnl Default install directory is not /usr/local
2369 if test x$prefix = xNONE; then
2370 prefix=/Applications
2371 fi
2372
2373 dnl Sorry for the hard coded default
2374 datadir='${prefix}/Vim.app/Contents/Resources'
2375
Bram Moolenaar071d4272004-06-13 20:20:40 +00002376 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002377 SKIP_GTK2=YES;
2378 SKIP_GNOME=YES;
2379 SKIP_MOTIF=YES;
2380 SKIP_ATHENA=YES;
2381 SKIP_NEXTAW=YES;
2382 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002383 SKIP_CARBON=YES
2384fi
2385
Bram Moolenaar071d4272004-06-13 20:20:40 +00002386dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002387dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002388dnl
2389dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002390dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002391dnl
2392AC_DEFUN(AM_PATH_GTK,
2393[
2394 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2395 {
Bram Moolenaar071d4272004-06-13 20:20:40 +00002396 no_gtk=""
2397 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2398 && $PKG_CONFIG --exists gtk+-2.0; then
2399 {
Bram Moolenaar98921892016-02-23 17:14:37 +01002400 min_gtk_version=ifelse([$1], ,2.2.0,$1)
2401 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002402 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2403 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2404 dnl something like that.
2405 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002406 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002407 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2408 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2409 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2410 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2411 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2412 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2413 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2414 }
Bram Moolenaar98921892016-02-23 17:14:37 +01002415 elif (test "X$SKIP_GTK3" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2416 && $PKG_CONFIG --exists gtk+-3.0; then
2417 {
2418 min_gtk_version=ifelse([$1], ,3.0.0,$1)
2419 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2420
2421 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-3.0`
2422 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-3.0`
2423 GTK_LIBS=`$PKG_CONFIG --libs gtk+-3.0`
2424 gtk_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2425 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2426 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2427 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2428 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \
2429 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2430 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002431 else
2432 no_gtk=yes
2433 fi
2434
2435 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2436 {
2437 ac_save_CFLAGS="$CFLAGS"
2438 ac_save_LIBS="$LIBS"
2439 CFLAGS="$CFLAGS $GTK_CFLAGS"
2440 LIBS="$LIBS $GTK_LIBS"
2441
2442 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002443 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002444 dnl
2445 rm -f conf.gtktest
2446 AC_TRY_RUN([
2447#include <gtk/gtk.h>
2448#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002449#if STDC_HEADERS
2450# include <stdlib.h>
2451# include <stddef.h>
2452#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002453
2454int
2455main ()
2456{
2457int major, minor, micro;
2458char *tmp_version;
2459
2460system ("touch conf.gtktest");
2461
2462/* HP/UX 9 (%@#!) writes to sscanf strings */
2463tmp_version = g_strdup("$min_gtk_version");
2464if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2465 printf("%s, bad version string\n", "$min_gtk_version");
2466 exit(1);
2467 }
2468
2469if ((gtk_major_version > major) ||
2470 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2471 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2472 (gtk_micro_version >= micro)))
2473{
2474 return 0;
2475}
2476return 1;
2477}
2478],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2479 CFLAGS="$ac_save_CFLAGS"
2480 LIBS="$ac_save_LIBS"
2481 }
2482 fi
2483 if test "x$no_gtk" = x ; then
2484 if test "x$enable_gtktest" = "xyes"; then
2485 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2486 else
2487 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2488 fi
2489 ifelse([$2], , :, [$2])
2490 else
2491 {
2492 AC_MSG_RESULT(no)
2493 GTK_CFLAGS=""
2494 GTK_LIBS=""
2495 ifelse([$3], , :, [$3])
2496 }
2497 fi
2498 }
2499 else
2500 GTK_CFLAGS=""
2501 GTK_LIBS=""
2502 ifelse([$3], , :, [$3])
2503 fi
2504 AC_SUBST(GTK_CFLAGS)
2505 AC_SUBST(GTK_LIBS)
2506 rm -f conf.gtktest
2507])
2508
2509dnl ---------------------------------------------------------------------------
2510dnl gnome
2511dnl ---------------------------------------------------------------------------
2512AC_DEFUN([GNOME_INIT_HOOK],
2513[
2514 AC_SUBST(GNOME_LIBS)
2515 AC_SUBST(GNOME_LIBDIR)
2516 AC_SUBST(GNOME_INCLUDEDIR)
2517
2518 AC_ARG_WITH(gnome-includes,
2519 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2520 [CFLAGS="$CFLAGS -I$withval"]
2521 )
2522
2523 AC_ARG_WITH(gnome-libs,
2524 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2525 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2526 )
2527
2528 AC_ARG_WITH(gnome,
2529 [ --with-gnome Specify prefix for GNOME files],
2530 if test x$withval = xyes; then
2531 want_gnome=yes
2532 ifelse([$1], [], :, [$1])
2533 else
2534 if test "x$withval" = xno; then
2535 want_gnome=no
2536 else
2537 want_gnome=yes
2538 LDFLAGS="$LDFLAGS -L$withval/lib"
2539 CFLAGS="$CFLAGS -I$withval/include"
2540 gnome_prefix=$withval/lib
2541 fi
2542 fi,
2543 want_gnome=yes)
2544
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002545 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002546 {
2547 AC_MSG_CHECKING(for libgnomeui-2.0)
2548 if $PKG_CONFIG --exists libgnomeui-2.0; then
2549 AC_MSG_RESULT(yes)
2550 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2551 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2552 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002553
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002554 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2555 dnl This might not be the right way but it works for me...
2556 AC_MSG_CHECKING(for FreeBSD)
2557 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2558 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002559 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002560 GNOME_LIBS="$GNOME_LIBS -pthread"
2561 else
2562 AC_MSG_RESULT(no)
2563 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002564 $1
2565 else
2566 AC_MSG_RESULT(not found)
2567 if test "x$2" = xfail; then
2568 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2569 fi
2570 fi
2571 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002572 fi
2573])
2574
2575AC_DEFUN([GNOME_INIT],[
2576 GNOME_INIT_HOOK([],fail)
2577])
2578
2579
2580dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002581dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002582dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002583if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002584
2585 AC_MSG_CHECKING(--disable-gtktest argument)
2586 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2587 , enable_gtktest=yes)
2588 if test "x$enable_gtktest" = "xyes" ; then
2589 AC_MSG_RESULT(gtk test enabled)
2590 else
2591 AC_MSG_RESULT(gtk test disabled)
2592 fi
2593
Bram Moolenaar071d4272004-06-13 20:20:40 +00002594 if test "X$PKG_CONFIG" = "X"; then
2595 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2596 fi
2597
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002598 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002599 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2600 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002601 AM_PATH_GTK(2.2.0,
2602 [GUI_LIB_LOC="$GTK_LIBDIR"
2603 GTK_LIBNAME="$GTK_LIBS"
2604 GUI_INC_LOC="$GTK_CFLAGS"], )
2605 if test "x$GTK_CFLAGS" != "x"; then
Bram Moolenaar98921892016-02-23 17:14:37 +01002606 SKIP_GTK3=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002607 SKIP_ATHENA=YES
2608 SKIP_NEXTAW=YES
2609 SKIP_MOTIF=YES
2610 GUITYPE=GTK
2611 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002612 fi
2613 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002614 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002615 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2616 || test "0$gtk_minor_version" -ge 2; then
2617 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2618 fi
2619 dnl
2620 dnl if GTK exists, then check for GNOME.
2621 dnl
2622 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002623 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002624 GNOME_INIT_HOOK([have_gnome=yes])
2625 if test "x$have_gnome" = xyes ; then
2626 AC_DEFINE(FEAT_GUI_GNOME)
2627 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2628 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002629 fi
2630 }
2631 fi
2632 fi
2633fi
2634
Bram Moolenaar98921892016-02-23 17:14:37 +01002635
2636dnl ---------------------------------------------------------------------------
2637dnl Check for GTK3.
2638dnl ---------------------------------------------------------------------------
2639if test -z "$SKIP_GTK3"; then
2640
2641 AC_MSG_CHECKING(--disable-gtktest argument)
2642 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2643 , enable_gtktest=yes)
2644 if test "x$enable_gtktest" = "xyes" ; then
2645 AC_MSG_RESULT(gtk test enabled)
2646 else
2647 AC_MSG_RESULT(gtk test disabled)
2648 fi
2649
2650 if test "X$PKG_CONFIG" = "X"; then
2651 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2652 fi
2653
2654 if test "x$PKG_CONFIG" != "xno"; then
2655 AM_PATH_GTK(3.0.0,
2656 [GUI_LIB_LOC="$GTK_LIBDIR"
2657 GTK_LIBNAME="$GTK_LIBS"
2658 GUI_INC_LOC="$GTK_CFLAGS"], )
2659 if test "x$GTK_CFLAGS" != "x"; then
2660 SKIP_GTK2=YES
2661 SKIP_GNOME=YES
2662 SKIP_ATHENA=YES
2663 SKIP_NEXTAW=YES
2664 SKIP_MOTIF=YES
2665 GUITYPE=GTK
2666 AC_SUBST(GTK_LIBNAME)
2667 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2668 AC_DEFINE(USE_GTK3)
2669 fi
2670 fi
2671fi
2672
Bram Moolenaard2e03f02016-01-02 22:46:36 +01002673dnl Check the version of Gdk-Pixbuf. If the version is 2.31 or later and
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002674dnl glib-compile-resources is found in PATH, use GResource.
2675if test "x$GUITYPE" = "xGTK"; then
2676 AC_MSG_CHECKING([version of Gdk-Pixbuf])
2677 gdk_pixbuf_version=`$PKG_CONFIG --modversion gdk-pixbuf-2.0`
2678 if test "x$gdk_pixbuf_version" != x ; then
2679 gdk_pixbuf_version_minor=`echo $gdk_pixbuf_version | \
2680 sed -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/'`
2681 if test "x$gdk_pixbuf_version_minor" != x -a \
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002682 $gdk_pixbuf_version_minor -ge 31 ; then
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002683 AC_MSG_RESULT([OK.])
2684 AC_PATH_PROG(GLIB_COMPILE_RESOURCES,[glib-compile-resources],no)
2685 AC_MSG_CHECKING([glib-compile-resources])
2686 if test "x$GLIB_COMPILE_RESOURCES" = xno ; then
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002687 GLIB_COMPILE_RESOURCES=""
2688 AC_MSG_RESULT([cannot be found in PATH.])
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002689 else
2690 AC_MSG_RESULT([usable.])
Bram Moolenaar33c31d52016-02-22 21:07:06 +01002691 AC_DEFINE(USE_GRESOURCE)
2692 GRESOURCE_SRC="auto/gui_gtk_gresources.c"
2693 GRESOURCE_OBJ="objects/gui_gtk_gresources.o"
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002694 fi
2695 else
2696 AC_MSG_RESULT([not usable.])
2697 fi
2698 else
2699 AC_MSG_RESULT([cannot obtain from pkg_config.])
2700 fi
2701fi
2702AC_SUBST(GLIB_COMPILE_RESOURCES)
Bram Moolenaar36e294c2015-12-29 18:55:46 +01002703AC_SUBST(GRESOURCE_SRC)
2704AC_SUBST(GRESOURCE_OBJ)
2705
Bram Moolenaar071d4272004-06-13 20:20:40 +00002706dnl Check for Motif include files location.
2707dnl The LAST one found is used, this makes the highest version to be used,
2708dnl e.g. when Motif1.2 and Motif2.0 are both present.
2709
2710if test -z "$SKIP_MOTIF"; then
2711 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"
2712 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2713 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2714
2715 AC_MSG_CHECKING(for location of Motif GUI includes)
2716 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2717 GUI_INC_LOC=
2718 for try in $gui_includes; do
2719 if test -f "$try/Xm/Xm.h"; then
2720 GUI_INC_LOC=$try
2721 fi
2722 done
2723 if test -n "$GUI_INC_LOC"; then
2724 if test "$GUI_INC_LOC" = /usr/include; then
2725 GUI_INC_LOC=
2726 AC_MSG_RESULT(in default path)
2727 else
2728 AC_MSG_RESULT($GUI_INC_LOC)
2729 fi
2730 else
2731 AC_MSG_RESULT(<not found>)
2732 SKIP_MOTIF=YES
2733 fi
2734fi
2735
2736dnl Check for Motif library files location. In the same order as the include
2737dnl files, to avoid a mixup if several versions are present
2738
2739if test -z "$SKIP_MOTIF"; then
2740 AC_MSG_CHECKING(--with-motif-lib argument)
2741 AC_ARG_WITH(motif-lib,
2742 [ --with-motif-lib=STRING Library for Motif ],
2743 [ MOTIF_LIBNAME="${withval}" ] )
2744
2745 if test -n "$MOTIF_LIBNAME"; then
2746 AC_MSG_RESULT($MOTIF_LIBNAME)
2747 GUI_LIB_LOC=
2748 else
2749 AC_MSG_RESULT(no)
2750
2751 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2752 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2753
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002754 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2755 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002756 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002757 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 +00002758 GUI_LIB_LOC=
2759 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002760 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002761 if test -f "$libtry"; then
2762 GUI_LIB_LOC=$try
2763 fi
2764 done
2765 done
2766 if test -n "$GUI_LIB_LOC"; then
2767 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002768 if test "$GUI_LIB_LOC" = /usr/lib \
2769 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2770 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002771 GUI_LIB_LOC=
2772 AC_MSG_RESULT(in default path)
2773 else
2774 if test -n "$GUI_LIB_LOC"; then
2775 AC_MSG_RESULT($GUI_LIB_LOC)
2776 if test "`(uname) 2>/dev/null`" = SunOS &&
2777 uname -r | grep '^5' >/dev/null; then
2778 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2779 fi
2780 fi
2781 fi
2782 MOTIF_LIBNAME=-lXm
2783 else
2784 AC_MSG_RESULT(<not found>)
2785 SKIP_MOTIF=YES
2786 fi
2787 fi
2788fi
2789
2790if test -z "$SKIP_MOTIF"; then
2791 SKIP_ATHENA=YES
2792 SKIP_NEXTAW=YES
2793 GUITYPE=MOTIF
2794 AC_SUBST(MOTIF_LIBNAME)
2795fi
2796
2797dnl Check if the Athena files can be found
2798
2799GUI_X_LIBS=
2800
2801if test -z "$SKIP_ATHENA"; then
2802 AC_MSG_CHECKING(if Athena header files can be found)
2803 cflags_save=$CFLAGS
2804 CFLAGS="$CFLAGS $X_CFLAGS"
2805 AC_TRY_COMPILE([
2806#include <X11/Intrinsic.h>
2807#include <X11/Xaw/Paned.h>], ,
2808 AC_MSG_RESULT(yes),
2809 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2810 CFLAGS=$cflags_save
2811fi
2812
2813if test -z "$SKIP_ATHENA"; then
2814 GUITYPE=ATHENA
2815fi
2816
2817if test -z "$SKIP_NEXTAW"; then
2818 AC_MSG_CHECKING(if neXtaw header files can be found)
2819 cflags_save=$CFLAGS
2820 CFLAGS="$CFLAGS $X_CFLAGS"
2821 AC_TRY_COMPILE([
2822#include <X11/Intrinsic.h>
2823#include <X11/neXtaw/Paned.h>], ,
2824 AC_MSG_RESULT(yes),
2825 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2826 CFLAGS=$cflags_save
2827fi
2828
2829if test -z "$SKIP_NEXTAW"; then
2830 GUITYPE=NEXTAW
2831fi
2832
2833if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2834 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2835 dnl Avoid adding it when it twice
2836 if test -n "$GUI_INC_LOC"; then
2837 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2838 fi
2839 if test -n "$GUI_LIB_LOC"; then
2840 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2841 fi
2842
2843 dnl Check for -lXext and then for -lXmu
2844 ldflags_save=$LDFLAGS
2845 LDFLAGS="$X_LIBS $LDFLAGS"
2846 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2847 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2848 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2849 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2850 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2851 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2852 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2853 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2854 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2855 if test -z "$SKIP_MOTIF"; then
2856 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2857 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2858 fi
2859 LDFLAGS=$ldflags_save
2860
2861 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2862 AC_MSG_CHECKING(for extra X11 defines)
2863 NARROW_PROTO=
2864 rm -fr conftestdir
2865 if mkdir conftestdir; then
2866 cd conftestdir
2867 cat > Imakefile <<'EOF'
2868acfindx:
2869 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2870EOF
2871 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2872 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2873 fi
2874 cd ..
2875 rm -fr conftestdir
2876 fi
2877 if test -z "$NARROW_PROTO"; then
2878 AC_MSG_RESULT(no)
2879 else
2880 AC_MSG_RESULT($NARROW_PROTO)
2881 fi
2882 AC_SUBST(NARROW_PROTO)
2883fi
2884
2885dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2886dnl use the X11 include path
2887if test "$enable_xsmp" = "yes"; then
2888 cppflags_save=$CPPFLAGS
2889 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2890 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2891 CPPFLAGS=$cppflags_save
2892fi
2893
2894
Bram Moolenaar98921892016-02-23 17:14:37 +01002895if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2" -o -z "$SKIP_GTK3"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002896 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2897 cppflags_save=$CPPFLAGS
2898 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2899 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2900
2901 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2902 if test ! "$enable_xim" = "no"; then
2903 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2904 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2905 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002906 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002907 fi
2908 CPPFLAGS=$cppflags_save
2909
2910 dnl automatically enable XIM when hangul input isn't enabled
2911 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2912 -a "x$GUITYPE" != "xNONE" ; then
2913 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2914 enable_xim="yes"
2915 fi
2916fi
2917
2918if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2919 cppflags_save=$CPPFLAGS
2920 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002921dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2922 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2923 AC_TRY_COMPILE([
2924#include <X11/Intrinsic.h>
2925#include <X11/Xmu/Editres.h>],
2926 [int i; i = 0;],
2927 AC_MSG_RESULT(yes)
2928 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2929 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002930 CPPFLAGS=$cppflags_save
2931fi
2932
2933dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2934if test -z "$SKIP_MOTIF"; then
2935 cppflags_save=$CPPFLAGS
2936 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002937 if test "$zOSUnix" = "yes"; then
2938 xmheader="Xm/Xm.h"
2939 else
2940 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002941 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002942 fi
2943 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002944
Bram Moolenaar77c19352012-06-13 19:19:41 +02002945 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002946 dnl Solaris uses XpmAttributes_21, very annoying.
2947 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2948 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2949 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2950 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2951 )
2952 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002953 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002954 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002955 CPPFLAGS=$cppflags_save
2956fi
2957
2958if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2959 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2960 enable_xim="no"
2961fi
2962if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2963 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2964 enable_fontset="no"
2965fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002966if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002967 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2968 enable_fontset="no"
2969fi
2970
Bram Moolenaar071d4272004-06-13 20:20:40 +00002971if test -z "$SKIP_PHOTON"; then
2972 GUITYPE=PHOTONGUI
2973fi
2974
2975AC_SUBST(GUI_INC_LOC)
2976AC_SUBST(GUI_LIB_LOC)
2977AC_SUBST(GUITYPE)
2978AC_SUBST(GUI_X_LIBS)
2979
2980if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2981 AC_MSG_ERROR([cannot use workshop without Motif])
2982fi
2983
2984dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2985if test "$enable_xim" = "yes"; then
2986 AC_DEFINE(FEAT_XIM)
2987fi
2988if test "$enable_fontset" = "yes"; then
2989 AC_DEFINE(FEAT_XFONTSET)
2990fi
2991
2992
2993dnl ---------------------------------------------------------------------------
2994dnl end of GUI-checking
2995dnl ---------------------------------------------------------------------------
2996
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002997dnl Check for Cygwin, which needs an extra source file if not using X11
Bram Moolenaar8def26a2015-12-17 15:34:53 +01002998AC_MSG_CHECKING(for CYGWIN or MSYS environment)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002999case `uname` in
Bram Moolenaar8def26a2015-12-17 15:34:53 +01003000 CYGWIN*|MSYS*) CYGWIN=yes; AC_MSG_RESULT(yes)
Bram Moolenaar693e40c2013-02-26 14:56:42 +01003001 AC_MSG_CHECKING(for CYGWIN clipboard support)
3002 if test "x$with_x" = "xno" ; then
3003 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
3004 AC_MSG_RESULT(yes)
3005 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
3006 else
3007 AC_MSG_RESULT(no - using X11)
3008 fi ;;
3009
3010 *) CYGWIN=no; AC_MSG_RESULT(no);;
3011esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00003012
3013dnl Only really enable hangul input when GUI and XFONTSET are available
3014if test "$enable_hangulinput" = "yes"; then
3015 if test "x$GUITYPE" = "xNONE"; then
3016 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
3017 enable_hangulinput=no
3018 else
3019 AC_DEFINE(FEAT_HANGULIN)
3020 HANGULIN_SRC=hangulin.c
3021 AC_SUBST(HANGULIN_SRC)
3022 HANGULIN_OBJ=objects/hangulin.o
3023 AC_SUBST(HANGULIN_OBJ)
3024 fi
3025fi
3026
3027dnl Checks for libraries and include files.
3028
Bram Moolenaar446cb832008-06-24 21:56:24 +00003029AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
3030 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003031 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003032#include "confdefs.h"
3033#include <ctype.h>
3034#if STDC_HEADERS
3035# include <stdlib.h>
3036# include <stddef.h>
3037#endif
3038main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003039 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003040 vim_cv_toupper_broken=yes
3041 ],[
3042 vim_cv_toupper_broken=no
3043 ],[
3044 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
3045 ])])
3046
3047if test "x$vim_cv_toupper_broken" = "xyes" ; then
3048 AC_DEFINE(BROKEN_TOUPPER)
3049fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003050
3051AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00003052AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003053 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
3054 AC_MSG_RESULT(no))
3055
Bram Moolenaar0c094b92009-05-14 20:20:33 +00003056AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
3057AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
3058 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
3059 AC_MSG_RESULT(no))
3060
Bram Moolenaar071d4272004-06-13 20:20:40 +00003061dnl Checks for header files.
3062AC_CHECK_HEADER(elf.h, HAS_ELF=1)
3063dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
3064if test "$HAS_ELF" = 1; then
3065 AC_CHECK_LIB(elf, main)
3066fi
3067
3068AC_HEADER_DIRENT
3069
Bram Moolenaar071d4272004-06-13 20:20:40 +00003070dnl If sys/wait.h is not found it might still exist but not be POSIX
3071dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
3072if test $ac_cv_header_sys_wait_h = no; then
3073 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
3074 AC_TRY_COMPILE([#include <sys/wait.h>],
3075 [union wait xx, yy; xx = yy],
3076 AC_MSG_RESULT(yes)
3077 AC_DEFINE(HAVE_SYS_WAIT_H)
3078 AC_DEFINE(HAVE_UNION_WAIT),
3079 AC_MSG_RESULT(no))
3080fi
3081
Bram Moolenaar779a7752016-01-30 23:26:34 +01003082AC_CHECK_HEADERS(stdint.h stdlib.h string.h \
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003083 sys/select.h sys/utsname.h termcap.h fcntl.h \
3084 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
3085 termio.h iconv.h inttypes.h langinfo.h math.h \
3086 unistd.h stropts.h errno.h sys/resource.h \
3087 sys/systeminfo.h locale.h sys/stream.h termios.h \
3088 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
3089 utime.h sys/param.h libintl.h libgen.h \
3090 util/debug.h util/msg18n.h frame.h sys/acl.h \
3091 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003092
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003093dnl sys/ptem.h depends on sys/stream.h on Solaris
3094AC_CHECK_HEADERS(sys/ptem.h, [], [],
3095[#if defined HAVE_SYS_STREAM_H
3096# include <sys/stream.h>
3097#endif])
3098
Bram Moolenaar32f31b12009-05-21 13:20:59 +00003099dnl sys/sysctl.h depends on sys/param.h on OpenBSD
3100AC_CHECK_HEADERS(sys/sysctl.h, [], [],
3101[#if defined HAVE_SYS_PARAM_H
3102# include <sys/param.h>
3103#endif])
3104
Bram Moolenaar00ca2842008-06-26 20:14:00 +00003105
Bram Moolenaardf3267e2005-01-25 22:07:05 +00003106dnl pthread_np.h may exist but can only be used after including pthread.h
3107AC_MSG_CHECKING([for pthread_np.h])
3108AC_TRY_COMPILE([
3109#include <pthread.h>
3110#include <pthread_np.h>],
3111 [int i; i = 0;],
3112 AC_MSG_RESULT(yes)
3113 AC_DEFINE(HAVE_PTHREAD_NP_H),
3114 AC_MSG_RESULT(no))
3115
Bram Moolenaare344bea2005-09-01 20:46:49 +00003116AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00003117if test "x$MACOSX" = "xyes"; then
3118 dnl The strings.h file on OS/X contains a warning and nothing useful.
3119 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3120else
Bram Moolenaar071d4272004-06-13 20:20:40 +00003121
3122dnl Check if strings.h and string.h can both be included when defined.
3123AC_MSG_CHECKING([if strings.h can be included after string.h])
3124cppflags_save=$CPPFLAGS
3125CPPFLAGS="$CPPFLAGS $X_CFLAGS"
3126AC_TRY_COMPILE([
3127#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
3128# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
3129 /* but don't do it on AIX 5.1 (Uribarri) */
3130#endif
3131#ifdef HAVE_XM_XM_H
3132# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
3133#endif
3134#ifdef HAVE_STRING_H
3135# include <string.h>
3136#endif
3137#if defined(HAVE_STRINGS_H)
3138# include <strings.h>
3139#endif
3140 ], [int i; i = 0;],
3141 AC_MSG_RESULT(yes),
3142 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
3143 AC_MSG_RESULT(no))
3144CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00003145fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003146
3147dnl Checks for typedefs, structures, and compiler characteristics.
3148AC_PROG_GCC_TRADITIONAL
3149AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00003150AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00003151AC_TYPE_MODE_T
3152AC_TYPE_OFF_T
3153AC_TYPE_PID_T
3154AC_TYPE_SIZE_T
3155AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003156AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003157
Bram Moolenaar071d4272004-06-13 20:20:40 +00003158AC_HEADER_TIME
3159AC_CHECK_TYPE(ino_t, long)
3160AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02003161AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003162
3163AC_MSG_CHECKING(for rlim_t)
3164if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
3165 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
3166else
3167 AC_EGREP_CPP(dnl
3168changequote(<<,>>)dnl
3169<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
3170changequote([,]),
3171 [
3172#include <sys/types.h>
3173#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003174# include <stdlib.h>
3175# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003176#endif
3177#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00003178# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003179#endif
3180 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
3181 AC_MSG_RESULT($ac_cv_type_rlim_t)
3182fi
3183if test $ac_cv_type_rlim_t = no; then
3184 cat >> confdefs.h <<\EOF
3185#define rlim_t unsigned long
3186EOF
3187fi
3188
3189AC_MSG_CHECKING(for stack_t)
3190if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
3191 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
3192else
3193 AC_EGREP_CPP(stack_t,
3194 [
3195#include <sys/types.h>
3196#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003197# include <stdlib.h>
3198# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003199#endif
3200#include <signal.h>
3201 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
3202 AC_MSG_RESULT($ac_cv_type_stack_t)
3203fi
3204if test $ac_cv_type_stack_t = no; then
3205 cat >> confdefs.h <<\EOF
3206#define stack_t struct sigaltstack
3207EOF
3208fi
3209
3210dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
3211AC_MSG_CHECKING(whether stack_t has an ss_base field)
3212AC_TRY_COMPILE([
3213#include <sys/types.h>
3214#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003215# include <stdlib.h>
3216# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003217#endif
3218#include <signal.h>
3219#include "confdefs.h"
3220 ], [stack_t sigstk; sigstk.ss_base = 0; ],
3221 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
3222 AC_MSG_RESULT(no))
3223
3224olibs="$LIBS"
3225AC_MSG_CHECKING(--with-tlib argument)
3226AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
3227if test -n "$with_tlib"; then
3228 AC_MSG_RESULT($with_tlib)
3229 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003230 AC_MSG_CHECKING(for linking with $with_tlib library)
3231 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
3232 dnl Need to check for tgetent() below.
3233 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003234else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003235 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003236 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3237 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003238 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003239 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003240 dnl Older versions of ncurses have bugs, get a new one!
3241 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003242 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00003243 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003244 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3245 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003246 esac
3247 for libname in $tlibs; do
3248 AC_CHECK_LIB(${libname}, tgetent,,)
3249 if test "x$olibs" != "x$LIBS"; then
3250 dnl It's possible that a library is found but it doesn't work
3251 dnl e.g., shared library that cannot be found
3252 dnl compile and run a test program to be sure
3253 AC_TRY_RUN([
3254#ifdef HAVE_TERMCAP_H
3255# include <termcap.h>
3256#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003257#if STDC_HEADERS
3258# include <stdlib.h>
3259# include <stddef.h>
3260#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003261main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3262 res="OK", res="FAIL", res="FAIL")
3263 if test "$res" = "OK"; then
3264 break
3265 fi
3266 AC_MSG_RESULT($libname library is not usable)
3267 LIBS="$olibs"
3268 fi
3269 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003270 if test "x$olibs" = "x$LIBS"; then
3271 AC_MSG_RESULT(no terminal library found)
3272 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003273fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003274
3275if test "x$olibs" = "x$LIBS"; then
3276 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003277 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003278 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3279 AC_MSG_RESULT(yes),
3280 AC_MSG_ERROR([NOT FOUND!
3281 You need to install a terminal library; for example ncurses.
3282 Or specify the name of the library with --with-tlib.]))
3283fi
3284
Bram Moolenaar446cb832008-06-24 21:56:24 +00003285AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3286 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003287 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003288#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003289#ifdef HAVE_TERMCAP_H
3290# include <termcap.h>
3291#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003292#ifdef HAVE_STRING_H
3293# include <string.h>
3294#endif
3295#if STDC_HEADERS
3296# include <stdlib.h>
3297# include <stddef.h>
3298#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003299main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003300{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003301 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003302 vim_cv_terminfo=no
3303 ],[
3304 vim_cv_terminfo=yes
3305 ],[
3306 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3307 ])
3308 ])
3309
3310if test "x$vim_cv_terminfo" = "xyes" ; then
3311 AC_DEFINE(TERMINFO)
3312fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003313
3314if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003315 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3316 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003317 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003318#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003319#ifdef HAVE_TERMCAP_H
3320# include <termcap.h>
3321#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003322#if STDC_HEADERS
3323# include <stdlib.h>
3324# include <stddef.h>
3325#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003326main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003327{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003328 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003329 vim_cv_tgent=zero
3330 ],[
3331 vim_cv_tgent=non-zero
3332 ],[
3333 AC_MSG_ERROR(failed to compile test program.)
3334 ])
3335 ])
3336
3337 if test "x$vim_cv_tgent" = "xzero" ; then
3338 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3339 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003340fi
3341
3342AC_MSG_CHECKING(whether termcap.h contains ospeed)
3343AC_TRY_LINK([
3344#ifdef HAVE_TERMCAP_H
3345# include <termcap.h>
3346#endif
3347 ], [ospeed = 20000],
3348 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3349 [AC_MSG_RESULT(no)
3350 AC_MSG_CHECKING(whether ospeed can be extern)
3351 AC_TRY_LINK([
3352#ifdef HAVE_TERMCAP_H
3353# include <termcap.h>
3354#endif
3355extern short ospeed;
3356 ], [ospeed = 20000],
3357 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3358 AC_MSG_RESULT(no))]
3359 )
3360
3361AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3362AC_TRY_LINK([
3363#ifdef HAVE_TERMCAP_H
3364# include <termcap.h>
3365#endif
3366 ], [if (UP == 0 && BC == 0) PC = 1],
3367 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3368 [AC_MSG_RESULT(no)
3369 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3370 AC_TRY_LINK([
3371#ifdef HAVE_TERMCAP_H
3372# include <termcap.h>
3373#endif
3374extern char *UP, *BC, PC;
3375 ], [if (UP == 0 && BC == 0) PC = 1],
3376 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3377 AC_MSG_RESULT(no))]
3378 )
3379
3380AC_MSG_CHECKING(whether tputs() uses outfuntype)
3381AC_TRY_COMPILE([
3382#ifdef HAVE_TERMCAP_H
3383# include <termcap.h>
3384#endif
3385 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3386 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3387 AC_MSG_RESULT(no))
3388
3389dnl On some SCO machines sys/select redefines struct timeval
3390AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3391AC_TRY_COMPILE([
3392#include <sys/types.h>
3393#include <sys/time.h>
3394#include <sys/select.h>], ,
3395 AC_MSG_RESULT(yes)
3396 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3397 AC_MSG_RESULT(no))
3398
3399dnl AC_DECL_SYS_SIGLIST
3400
3401dnl Checks for pty.c (copied from screen) ==========================
3402AC_MSG_CHECKING(for /dev/ptc)
3403if test -r /dev/ptc; then
3404 AC_DEFINE(HAVE_DEV_PTC)
3405 AC_MSG_RESULT(yes)
3406else
3407 AC_MSG_RESULT(no)
3408fi
3409
3410AC_MSG_CHECKING(for SVR4 ptys)
3411if test -c /dev/ptmx ; then
3412 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3413 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3414 AC_MSG_RESULT(no))
3415else
3416 AC_MSG_RESULT(no)
3417fi
3418
3419AC_MSG_CHECKING(for ptyranges)
3420if test -d /dev/ptym ; then
3421 pdir='/dev/ptym'
3422else
3423 pdir='/dev'
3424fi
3425dnl SCO uses ptyp%d
3426AC_EGREP_CPP(yes,
3427[#ifdef M_UNIX
3428 yes;
3429#endif
3430 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3431dnl if test -c /dev/ptyp19; then
3432dnl ptys=`echo /dev/ptyp??`
3433dnl else
3434dnl ptys=`echo $pdir/pty??`
3435dnl fi
3436if test "$ptys" != "$pdir/pty??" ; then
3437 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3438 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3439 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3440 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3441 AC_MSG_RESULT([$p0 / $p1])
3442else
3443 AC_MSG_RESULT([don't know])
3444fi
3445
3446dnl **** pty mode/group handling ****
3447dnl
3448dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003449rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003450AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3451 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003452 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003453#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003454#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003455#if STDC_HEADERS
3456# include <stdlib.h>
3457# include <stddef.h>
3458#endif
3459#ifdef HAVE_UNISTD_H
3460#include <unistd.h>
3461#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003462#include <sys/stat.h>
3463#include <stdio.h>
3464main()
3465{
3466 struct stat sb;
3467 char *x,*ttyname();
3468 int om, m;
3469 FILE *fp;
3470
3471 if (!(x = ttyname(0))) exit(1);
3472 if (stat(x, &sb)) exit(1);
3473 om = sb.st_mode;
3474 if (om & 002) exit(0);
3475 m = system("mesg y");
3476 if (m == -1 || m == 127) exit(1);
3477 if (stat(x, &sb)) exit(1);
3478 m = sb.st_mode;
3479 if (chmod(x, om)) exit(1);
3480 if (m & 002) exit(0);
3481 if (sb.st_gid == getgid()) exit(1);
3482 if (!(fp=fopen("conftest_grp", "w")))
3483 exit(1);
3484 fprintf(fp, "%d\n", sb.st_gid);
3485 fclose(fp);
3486 exit(0);
3487}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003488 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003489 if test -f conftest_grp; then
3490 vim_cv_tty_group=`cat conftest_grp`
3491 if test "x$vim_cv_tty_mode" = "x" ; then
3492 vim_cv_tty_mode=0620
3493 fi
3494 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3495 else
3496 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003497 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003498 fi
3499 ],[
3500 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003501 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003502 ],[
3503 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3504 ])
3505 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003506rm -f conftest_grp
3507
Bram Moolenaar446cb832008-06-24 21:56:24 +00003508if test "x$vim_cv_tty_group" != "xworld" ; then
3509 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3510 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003511 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 +00003512 else
3513 AC_DEFINE(PTYMODE, 0620)
3514 fi
3515fi
3516
Bram Moolenaar071d4272004-06-13 20:20:40 +00003517dnl Checks for library functions. ===================================
3518
3519AC_TYPE_SIGNAL
3520
3521dnl find out what to use at the end of a signal function
3522if test $ac_cv_type_signal = void; then
3523 AC_DEFINE(SIGRETURN, [return])
3524else
3525 AC_DEFINE(SIGRETURN, [return 0])
3526fi
3527
3528dnl check if struct sigcontext is defined (used for SGI only)
3529AC_MSG_CHECKING(for struct sigcontext)
3530AC_TRY_COMPILE([
3531#include <signal.h>
3532test_sig()
3533{
3534 struct sigcontext *scont;
3535 scont = (struct sigcontext *)0;
3536 return 1;
3537} ], ,
3538 AC_MSG_RESULT(yes)
3539 AC_DEFINE(HAVE_SIGCONTEXT),
3540 AC_MSG_RESULT(no))
3541
3542dnl tricky stuff: try to find out if getcwd() is implemented with
3543dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003544AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3545 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003546 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003547#include "confdefs.h"
3548#ifdef HAVE_UNISTD_H
3549#include <unistd.h>
3550#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003551char *dagger[] = { "IFS=pwd", 0 };
3552main()
3553{
3554 char buffer[500];
3555 extern char **environ;
3556 environ = dagger;
3557 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003558}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003559 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003560 vim_cv_getcwd_broken=no
3561 ],[
3562 vim_cv_getcwd_broken=yes
3563 ],[
3564 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3565 ])
3566 ])
3567
3568if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3569 AC_DEFINE(BAD_GETCWD)
3570fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003571
Bram Moolenaar25153e12010-02-24 14:47:08 +01003572dnl Check for functions in one big call, to reduce the size of configure.
3573dnl Can only be used for functions that do not require any include.
3574AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003575 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003576 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003577 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003578 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003579 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3580 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003581AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003582
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003583dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3584dnl appropriate, so that off_t is 64 bits when needed.
3585AC_SYS_LARGEFILE
3586
Bram Moolenaar071d4272004-06-13 20:20:40 +00003587dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3588AC_MSG_CHECKING(for st_blksize)
3589AC_TRY_COMPILE(
3590[#include <sys/types.h>
3591#include <sys/stat.h>],
3592[ struct stat st;
3593 int n;
3594
3595 stat("/", &st);
3596 n = (int)st.st_blksize;],
3597 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3598 AC_MSG_RESULT(no))
3599
Bram Moolenaar446cb832008-06-24 21:56:24 +00003600AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3601 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003602 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003603#include "confdefs.h"
3604#if STDC_HEADERS
3605# include <stdlib.h>
3606# include <stddef.h>
3607#endif
3608#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003609#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003610main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003611 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003612 vim_cv_stat_ignores_slash=yes
3613 ],[
3614 vim_cv_stat_ignores_slash=no
3615 ],[
3616 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3617 ])
3618 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003619
Bram Moolenaar446cb832008-06-24 21:56:24 +00003620if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3621 AC_DEFINE(STAT_IGNORES_SLASH)
3622fi
3623
Bram Moolenaar071d4272004-06-13 20:20:40 +00003624dnl Link with iconv for charset translation, if not found without library.
3625dnl check for iconv() requires including iconv.h
3626dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3627dnl has been installed.
3628AC_MSG_CHECKING(for iconv_open())
3629save_LIBS="$LIBS"
3630LIBS="$LIBS -liconv"
3631AC_TRY_LINK([
3632#ifdef HAVE_ICONV_H
3633# include <iconv.h>
3634#endif
3635 ], [iconv_open("fr", "to");],
3636 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3637 LIBS="$save_LIBS"
3638 AC_TRY_LINK([
3639#ifdef HAVE_ICONV_H
3640# include <iconv.h>
3641#endif
3642 ], [iconv_open("fr", "to");],
3643 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3644 AC_MSG_RESULT(no)))
3645
3646
3647AC_MSG_CHECKING(for nl_langinfo(CODESET))
3648AC_TRY_LINK([
3649#ifdef HAVE_LANGINFO_H
3650# include <langinfo.h>
3651#endif
3652], [char *cs = nl_langinfo(CODESET);],
3653 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3654 AC_MSG_RESULT(no))
3655
Bram Moolenaar446cb832008-06-24 21:56:24 +00003656dnl Need various functions for floating point support. Only enable
3657dnl floating point when they are all present.
3658AC_CHECK_LIB(m, strtod)
3659AC_MSG_CHECKING([for strtod() and other floating point functions])
3660AC_TRY_LINK([
3661#ifdef HAVE_MATH_H
3662# include <math.h>
3663#endif
3664#if STDC_HEADERS
3665# include <stdlib.h>
3666# include <stddef.h>
3667#endif
3668], [char *s; double d;
3669 d = strtod("1.1", &s);
3670 d = fabs(1.11);
3671 d = ceil(1.11);
3672 d = floor(1.11);
3673 d = log10(1.11);
3674 d = pow(1.11, 2.22);
3675 d = sqrt(1.11);
3676 d = sin(1.11);
3677 d = cos(1.11);
3678 d = atan(1.11);
3679 ],
3680 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3681 AC_MSG_RESULT(no))
3682
Bram Moolenaar071d4272004-06-13 20:20:40 +00003683dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3684dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003685dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003686AC_MSG_CHECKING(--disable-acl argument)
3687AC_ARG_ENABLE(acl,
3688 [ --disable-acl Don't check for ACL support.],
3689 , [enable_acl="yes"])
3690if test "$enable_acl" = "yes"; then
3691AC_MSG_RESULT(no)
3692AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3693 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3694 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3695
3696AC_MSG_CHECKING(for POSIX ACL support)
3697AC_TRY_LINK([
3698#include <sys/types.h>
3699#ifdef HAVE_SYS_ACL_H
3700# include <sys/acl.h>
3701#endif
3702acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3703 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3704 acl_free(acl);],
3705 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3706 AC_MSG_RESULT(no))
3707
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003708AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003709AC_MSG_CHECKING(for Solaris ACL support)
3710AC_TRY_LINK([
3711#ifdef HAVE_SYS_ACL_H
3712# include <sys/acl.h>
3713#endif], [acl("foo", GETACLCNT, 0, NULL);
3714 ],
3715 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003716 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003717
3718AC_MSG_CHECKING(for AIX ACL support)
3719AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003720#if STDC_HEADERS
3721# include <stdlib.h>
3722# include <stddef.h>
3723#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003724#ifdef HAVE_SYS_ACL_H
3725# include <sys/acl.h>
3726#endif
3727#ifdef HAVE_SYS_ACCESS_H
3728# include <sys/access.h>
3729#endif
3730#define _ALL_SOURCE
3731
3732#include <sys/stat.h>
3733
3734int aclsize;
3735struct acl *aclent;], [aclsize = sizeof(struct acl);
3736 aclent = (void *)malloc(aclsize);
3737 statacl("foo", STX_NORMAL, aclent, aclsize);
3738 ],
3739 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3740 AC_MSG_RESULT(no))
3741else
3742 AC_MSG_RESULT(yes)
3743fi
3744
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003745if test "x$GTK_CFLAGS" != "x"; then
3746 dnl pango_shape_full() is new, fall back to pango_shape().
3747 AC_MSG_CHECKING(for pango_shape_full)
3748 ac_save_CFLAGS="$CFLAGS"
3749 ac_save_LIBS="$LIBS"
3750 CFLAGS="$CFLAGS $GTK_CFLAGS"
3751 LIBS="$LIBS $GTK_LIBS"
Bram Moolenaar5325b9b2015-09-09 20:27:02 +02003752 AC_TRY_LINK(
Bram Moolenaar3cbe0c02015-09-08 20:00:22 +02003753 [#include <gtk/gtk.h>],
3754 [ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ],
3755 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL),
3756 AC_MSG_RESULT(no))
3757 CFLAGS="$ac_save_CFLAGS"
3758 LIBS="$ac_save_LIBS"
3759fi
3760
Bram Moolenaar071d4272004-06-13 20:20:40 +00003761AC_MSG_CHECKING(--disable-gpm argument)
3762AC_ARG_ENABLE(gpm,
3763 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3764 [enable_gpm="yes"])
3765
3766if test "$enable_gpm" = "yes"; then
3767 AC_MSG_RESULT(no)
3768 dnl Checking if gpm support can be compiled
3769 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3770 [olibs="$LIBS" ; LIBS="-lgpm"]
3771 AC_TRY_LINK(
3772 [#include <gpm.h>
3773 #include <linux/keyboard.h>],
3774 [Gpm_GetLibVersion(NULL);],
3775 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3776 dnl FEAT_MOUSE_GPM if mouse support is included
3777 [vi_cv_have_gpm=yes],
3778 [vi_cv_have_gpm=no])
3779 [LIBS="$olibs"]
3780 )
3781 if test $vi_cv_have_gpm = yes; then
3782 LIBS="$LIBS -lgpm"
3783 AC_DEFINE(HAVE_GPM)
3784 fi
3785else
3786 AC_MSG_RESULT(yes)
3787fi
3788
Bram Moolenaar446cb832008-06-24 21:56:24 +00003789AC_MSG_CHECKING(--disable-sysmouse argument)
3790AC_ARG_ENABLE(sysmouse,
3791 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3792 [enable_sysmouse="yes"])
3793
3794if test "$enable_sysmouse" = "yes"; then
3795 AC_MSG_RESULT(no)
3796 dnl Checking if sysmouse support can be compiled
3797 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3798 dnl defines FEAT_SYSMOUSE if mouse support is included
3799 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3800 AC_TRY_LINK(
3801 [#include <sys/consio.h>
3802 #include <signal.h>
3803 #include <sys/fbio.h>],
3804 [struct mouse_info mouse;
3805 mouse.operation = MOUSE_MODE;
3806 mouse.operation = MOUSE_SHOW;
3807 mouse.u.mode.mode = 0;
3808 mouse.u.mode.signal = SIGUSR2;],
3809 [vi_cv_have_sysmouse=yes],
3810 [vi_cv_have_sysmouse=no])
3811 )
3812 if test $vi_cv_have_sysmouse = yes; then
3813 AC_DEFINE(HAVE_SYSMOUSE)
3814 fi
3815else
3816 AC_MSG_RESULT(yes)
3817fi
3818
Bram Moolenaarf05da212009-11-17 16:13:15 +00003819dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3820AC_MSG_CHECKING(for FD_CLOEXEC)
3821AC_TRY_COMPILE(
3822[#if HAVE_FCNTL_H
3823# include <fcntl.h>
3824#endif],
3825[ int flag = FD_CLOEXEC;],
3826 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3827 AC_MSG_RESULT(not usable))
3828
Bram Moolenaar071d4272004-06-13 20:20:40 +00003829dnl rename needs to be checked separately to work on Nextstep with cc
3830AC_MSG_CHECKING(for rename)
3831AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3832 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3833 AC_MSG_RESULT(no))
3834
3835dnl sysctl() may exist but not the arguments we use
3836AC_MSG_CHECKING(for sysctl)
3837AC_TRY_COMPILE(
3838[#include <sys/types.h>
3839#include <sys/sysctl.h>],
3840[ int mib[2], r;
3841 size_t len;
3842
3843 mib[0] = CTL_HW;
3844 mib[1] = HW_USERMEM;
3845 len = sizeof(r);
3846 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3847 ],
3848 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3849 AC_MSG_RESULT(not usable))
3850
3851dnl sysinfo() may exist but not be Linux compatible
3852AC_MSG_CHECKING(for sysinfo)
3853AC_TRY_COMPILE(
3854[#include <sys/types.h>
3855#include <sys/sysinfo.h>],
3856[ struct sysinfo sinfo;
3857 int t;
3858
3859 (void)sysinfo(&sinfo);
3860 t = sinfo.totalram;
3861 ],
3862 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3863 AC_MSG_RESULT(not usable))
3864
Bram Moolenaar914572a2007-05-01 11:37:47 +00003865dnl struct sysinfo may have the mem_unit field or not
3866AC_MSG_CHECKING(for sysinfo.mem_unit)
3867AC_TRY_COMPILE(
3868[#include <sys/types.h>
3869#include <sys/sysinfo.h>],
3870[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003871 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003872 ],
3873 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3874 AC_MSG_RESULT(no))
3875
Bram Moolenaar071d4272004-06-13 20:20:40 +00003876dnl sysconf() may exist but not support what we want to use
3877AC_MSG_CHECKING(for sysconf)
3878AC_TRY_COMPILE(
3879[#include <unistd.h>],
3880[ (void)sysconf(_SC_PAGESIZE);
3881 (void)sysconf(_SC_PHYS_PAGES);
3882 ],
3883 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3884 AC_MSG_RESULT(not usable))
3885
Bram Moolenaar914703b2010-05-31 21:59:46 +02003886AC_CHECK_SIZEOF([int])
3887AC_CHECK_SIZEOF([long])
3888AC_CHECK_SIZEOF([time_t])
3889AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003890
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003891dnl Use different names to avoid clashing with other header files.
3892AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3893AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3894
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003895dnl Make sure that uint32_t is really 32 bits unsigned.
3896AC_MSG_CHECKING([uint32_t is 32 bits])
3897AC_TRY_RUN([
3898#ifdef HAVE_STDINT_H
3899# include <stdint.h>
3900#endif
3901#ifdef HAVE_INTTYPES_H
3902# include <inttypes.h>
3903#endif
3904main() {
3905 uint32_t nr1 = (uint32_t)-1;
3906 uint32_t nr2 = (uint32_t)0xffffffffUL;
3907 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3908 exit(0);
3909}],
3910AC_MSG_RESULT(ok),
3911AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003912AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003913
Bram Moolenaar446cb832008-06-24 21:56:24 +00003914dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3915dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3916
Bram Moolenaar071d4272004-06-13 20:20:40 +00003917[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003918#include "confdefs.h"
3919#ifdef HAVE_STRING_H
3920# include <string.h>
3921#endif
3922#if STDC_HEADERS
3923# include <stdlib.h>
3924# include <stddef.h>
3925#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003926main() {
3927 char buf[10];
3928 strcpy(buf, "abcdefghi");
3929 mch_memmove(buf, buf + 2, 3);
3930 if (strncmp(buf, "ababcf", 6))
3931 exit(1);
3932 strcpy(buf, "abcdefghi");
3933 mch_memmove(buf + 2, buf, 3);
3934 if (strncmp(buf, "cdedef", 6))
3935 exit(1);
3936 exit(0); /* libc version works properly. */
3937}']
3938
Bram Moolenaar446cb832008-06-24 21:56:24 +00003939AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3940 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003941 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 +00003942 [
3943 vim_cv_memmove_handles_overlap=yes
3944 ],[
3945 vim_cv_memmove_handles_overlap=no
3946 ],[
3947 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3948 ])
3949 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003950
Bram Moolenaar446cb832008-06-24 21:56:24 +00003951if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3952 AC_DEFINE(USEMEMMOVE)
3953else
3954 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3955 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003956 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 +00003957 [
3958 vim_cv_bcopy_handles_overlap=yes
3959 ],[
3960 vim_cv_bcopy_handles_overlap=no
3961 ],[
3962 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3963 ])
3964 ])
3965
3966 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3967 AC_DEFINE(USEBCOPY)
3968 else
3969 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3970 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003971 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 +00003972 [
3973 vim_cv_memcpy_handles_overlap=yes
3974 ],[
3975 vim_cv_memcpy_handles_overlap=no
3976 ],[
3977 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3978 ])
3979 ])
3980
3981 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3982 AC_DEFINE(USEMEMCPY)
3983 fi
3984 fi
3985fi
3986
Bram Moolenaar071d4272004-06-13 20:20:40 +00003987
3988dnl Check for multibyte locale functions
3989dnl Find out if _Xsetlocale() is supported by libX11.
3990dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003991if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003992 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003993 libs_save=$LIBS
3994 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
3995 CFLAGS="$CFLAGS $X_CFLAGS"
3996
3997 AC_MSG_CHECKING(whether X_LOCALE needed)
3998 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3999 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
4000 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
4001 AC_MSG_RESULT(no))
4002
4003 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
4004 AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes)
4005 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
4006
Bram Moolenaar071d4272004-06-13 20:20:40 +00004007 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02004008 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00004009fi
4010
4011dnl Link with xpg4, it is said to make Korean locale working
4012AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
4013
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004014dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02004015dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004016dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004017dnl -t for typedefs (many ctags have this)
4018dnl -s for static functions (Elvis ctags only?)
4019dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
4020dnl -i+m to test for older Exuberant ctags
4021AC_MSG_CHECKING(how to create tags)
4022test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02004023if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00004024 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02004025elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
4026 TAGPRG="exctags -I INIT+ --fields=+S"
4027elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
4028 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004029else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00004030 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004031 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
4032 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
4033 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
4034 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
4035 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
4036 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
4037 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
4038fi
4039test -f tags.save && mv tags.save tags
4040AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
4041
4042dnl Check how we can run man with a section number
4043AC_MSG_CHECKING(how to run man with a section nr)
4044MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00004045(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 +00004046AC_MSG_RESULT($MANDEF)
4047if test "$MANDEF" = "man -s"; then
4048 AC_DEFINE(USEMAN_S)
4049fi
4050
4051dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004052dnl We take care to base this on an empty LIBS: on some systems libelf would be
4053dnl in LIBS and implicitly take along libintl. The final LIBS would then not
4054dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00004055AC_MSG_CHECKING(--disable-nls argument)
4056AC_ARG_ENABLE(nls,
4057 [ --disable-nls Don't support NLS (gettext()).], ,
4058 [enable_nls="yes"])
4059
4060if test "$enable_nls" = "yes"; then
4061 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00004062
4063 INSTALL_LANGS=install-languages
4064 AC_SUBST(INSTALL_LANGS)
4065 INSTALL_TOOL_LANGS=install-tool-languages
4066 AC_SUBST(INSTALL_TOOL_LANGS)
4067
Bram Moolenaar071d4272004-06-13 20:20:40 +00004068 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
4069 AC_MSG_CHECKING([for NLS])
4070 if test -f po/Makefile; then
4071 have_gettext="no"
4072 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004073 olibs=$LIBS
4074 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00004075 AC_TRY_LINK(
4076 [#include <libintl.h>],
4077 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004078 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
4079 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004080 AC_TRY_LINK(
4081 [#include <libintl.h>],
4082 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01004083 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
4084 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00004085 AC_MSG_RESULT([gettext() doesn't work]);
4086 LIBS=$olibs))
4087 else
4088 AC_MSG_RESULT([msgfmt not found - disabled]);
4089 fi
Bram Moolenaar278eb582014-07-30 13:22:52 +02004090 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00004091 AC_DEFINE(HAVE_GETTEXT)
4092 MAKEMO=yes
4093 AC_SUBST(MAKEMO)
4094 dnl this was added in GNU gettext 0.10.36
4095 AC_CHECK_FUNCS(bind_textdomain_codeset)
4096 dnl _nl_msg_cat_cntr is required for GNU gettext
4097 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
4098 AC_TRY_LINK(
4099 [#include <libintl.h>
4100 extern int _nl_msg_cat_cntr;],
4101 [++_nl_msg_cat_cntr;],
4102 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
4103 AC_MSG_RESULT([no]))
4104 fi
4105 else
4106 AC_MSG_RESULT([no "po/Makefile" - disabled]);
4107 fi
4108else
4109 AC_MSG_RESULT(yes)
4110fi
4111
4112dnl Check for dynamic linking loader
4113AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
4114if test x${DLL} = xdlfcn.h; then
4115 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
4116 AC_MSG_CHECKING([for dlopen()])
4117 AC_TRY_LINK(,[
4118 extern void* dlopen();
4119 dlopen();
4120 ],
4121 AC_MSG_RESULT(yes);
4122 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4123 AC_MSG_RESULT(no);
4124 AC_MSG_CHECKING([for dlopen() in -ldl])
4125 olibs=$LIBS
4126 LIBS="$LIBS -ldl"
4127 AC_TRY_LINK(,[
4128 extern void* dlopen();
4129 dlopen();
4130 ],
4131 AC_MSG_RESULT(yes);
4132 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
4133 AC_MSG_RESULT(no);
4134 LIBS=$olibs))
4135 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
4136 dnl ick :-)
4137 AC_MSG_CHECKING([for dlsym()])
4138 AC_TRY_LINK(,[
4139 extern void* dlsym();
4140 dlsym();
4141 ],
4142 AC_MSG_RESULT(yes);
4143 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4144 AC_MSG_RESULT(no);
4145 AC_MSG_CHECKING([for dlsym() in -ldl])
4146 olibs=$LIBS
4147 LIBS="$LIBS -ldl"
4148 AC_TRY_LINK(,[
4149 extern void* dlsym();
4150 dlsym();
4151 ],
4152 AC_MSG_RESULT(yes);
4153 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
4154 AC_MSG_RESULT(no);
4155 LIBS=$olibs))
4156elif test x${DLL} = xdl.h; then
4157 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
4158 AC_MSG_CHECKING([for shl_load()])
4159 AC_TRY_LINK(,[
4160 extern void* shl_load();
4161 shl_load();
4162 ],
4163 AC_MSG_RESULT(yes);
4164 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4165 AC_MSG_RESULT(no);
4166 AC_MSG_CHECKING([for shl_load() in -ldld])
4167 olibs=$LIBS
4168 LIBS="$LIBS -ldld"
4169 AC_TRY_LINK(,[
4170 extern void* shl_load();
4171 shl_load();
4172 ],
4173 AC_MSG_RESULT(yes);
4174 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
4175 AC_MSG_RESULT(no);
4176 LIBS=$olibs))
4177fi
4178AC_CHECK_HEADERS(setjmp.h)
4179
4180if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
4181 dnl -ldl must come after DynaLoader.a
4182 if echo $LIBS | grep -e '-ldl' >/dev/null; then
4183 LIBS=`echo $LIBS | sed s/-ldl//`
4184 PERL_LIBS="$PERL_LIBS -ldl"
4185 fi
4186fi
4187
Bram Moolenaar164fca32010-07-14 13:58:07 +02004188if test "x$MACOSX" = "xyes"; then
4189 AC_MSG_CHECKING(whether we need -framework Cocoa)
4190 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
4191 dnl disabled during tiny build)
4192 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
4193 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00004194 AC_MSG_RESULT(yes)
4195 else
4196 AC_MSG_RESULT(no)
4197 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02004198 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
4199 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
4200 dnl missing Objective-C symbols.
4201 if test "x$features" = "xtiny"; then
4202 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
4203 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
4204 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004205fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02004206if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01004207 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00004208fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00004209
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004210dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
4211dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
4212dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00004213dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
4214dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004215DEPEND_CFLAGS_FILTER=
4216if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004217 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00004218 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00004219 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004220 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004221 AC_MSG_RESULT(yes)
4222 else
4223 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004224 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004225 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
4226 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00004227 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01004228 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004229 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
4230 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004231 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 +00004232 AC_MSG_RESULT(yes)
4233 else
4234 AC_MSG_RESULT(no)
4235 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00004236fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004237AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004238
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004239dnl link.sh tries to avoid overlinking in a hackish way.
4240dnl At least GNU ld supports --as-needed which provides the same functionality
4241dnl at linker level. Let's use it.
4242AC_MSG_CHECKING(linker --as-needed support)
4243LINK_AS_NEEDED=
4244# Check if linker supports --as-needed and --no-as-needed options
4245if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004246 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004247 LINK_AS_NEEDED=yes
4248fi
4249if test "$LINK_AS_NEEDED" = yes; then
4250 AC_MSG_RESULT(yes)
4251else
4252 AC_MSG_RESULT(no)
4253fi
4254AC_SUBST(LINK_AS_NEEDED)
4255
Bram Moolenaar77c19352012-06-13 19:19:41 +02004256# IBM z/OS reset CFLAGS for config.mk
4257if test "$zOSUnix" = "yes"; then
4258 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4259fi
4260
Bram Moolenaar071d4272004-06-13 20:20:40 +00004261dnl write output files
4262AC_OUTPUT(auto/config.mk:config.mk.in)
4263
4264dnl vim: set sw=2 tw=78 fo+=l: