blob: 62785e171c520e4731fd511875724deac4d17e56 [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),
156 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
157
158 if test "x$DEVELOPER_DIR" = "x"; then
159 AC_PATH_PROG(XCODE_SELECT, xcode-select)
160 if test "x$XCODE_SELECT" != "x"; then
161 AC_MSG_CHECKING(for developer dir using xcode-select)
162 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
163 AC_MSG_RESULT([$DEVELOPER_DIR])
164 else
165 DEVELOPER_DIR=/Developer
166 fi
167 fi
168
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000169 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000170 AC_MSG_CHECKING(for 10.4 universal SDK)
171 dnl There is a terrible inconsistency (but we appear to get away with it):
172 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
173 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
174 dnl tests using the preprocessor are actually done with the wrong header
175 dnl files. $LDFLAGS is set at the end, because configure uses it together
176 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000177 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000178 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000179 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100180 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000181 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000182 AC_MSG_RESULT(found, will make universal binary),
183
184 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000185 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000186 AC_MSG_CHECKING(if Intel architecture is supported)
187 CPPFLAGS="$CPPFLAGS -arch i386"
188 LDFLAGS="$save_ldflags -arch i386"
189 AC_TRY_LINK([ ], [ ],
190 AC_MSG_RESULT(yes); MACARCH="intel",
191 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000192 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000193 CPPFLAGS="$save_cppflags -arch ppc"
194 LDFLAGS="$save_ldflags -arch ppc"))
195 elif test "x$MACARCH" = "xintel"; then
196 CPPFLAGS="$CPPFLAGS -arch intel"
197 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000198 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000199 CPPFLAGS="$CPPFLAGS -arch ppc"
200 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000201 fi
202
Bram Moolenaar071d4272004-06-13 20:20:40 +0000203 if test "$enable_darwin" = "yes"; then
204 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200205 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000206 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000207 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100208 dnl Removed -no-cpp-precomp, only for very old compilers.
209 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210
211 dnl If Carbon is found, assume we don't want X11
212 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000213 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000214 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
215 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200216 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000217 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000218 fi
219 fi
220 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000221
Bram Moolenaardb552d602006-03-23 22:59:57 +0000222 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000223 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000224 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000225 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
226 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
227 fi
228
Bram Moolenaar071d4272004-06-13 20:20:40 +0000229else
230 AC_MSG_RESULT(no)
231fi
232
Bram Moolenaar39766a72013-11-03 00:41:00 +0100233dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon
234dnl so we need to include it to have access to version macros.
Bram Moolenaar18e54692013-11-03 20:26:31 +0100235AC_CHECK_HEADERS(AvailabilityMacros.h)
Bram Moolenaar39766a72013-11-03 00:41:00 +0100236
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237AC_SUBST(OS_EXTRA_SRC)
238AC_SUBST(OS_EXTRA_OBJ)
239
240dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
241dnl Only when the directory exists and it wasn't there yet.
242dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000243dnl Skip all of this when cross-compiling.
244if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000245 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000246 have_local_include=''
247 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000248 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
249 --without-local-dir do not search /usr/local for local libraries.], [
250 local_dir="$withval"
251 case "$withval" in
252 */*) ;;
253 no)
254 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200255 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000256 have_local_lib=yes
257 ;;
258 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
259 esac
260 AC_MSG_RESULT($local_dir)
261 ], [
262 local_dir=/usr/local
263 AC_MSG_RESULT(Defaulting to $local_dir)
264 ])
265 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000266 echo 'void f(){}' > conftest.c
Bram Moolenaar0958e0f2013-11-04 04:57:50 +0100267 dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler)
268 have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
Bram Moolenaarc236c162008-07-13 17:41:49 +0000269 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000270 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000272 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
273 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000274 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000275 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000276 fi
277 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000278 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
279 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000280 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000281 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000282 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000283 fi
284fi
285
286AC_MSG_CHECKING(--with-vim-name argument)
287AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
288 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000289 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000290AC_SUBST(VIMNAME)
291AC_MSG_CHECKING(--with-ex-name argument)
292AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
293 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
294 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
295AC_SUBST(EXNAME)
296AC_MSG_CHECKING(--with-view-name argument)
297AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
298 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
299 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
300AC_SUBST(VIEWNAME)
301
302AC_MSG_CHECKING(--with-global-runtime argument)
303AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
304 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
305 AC_MSG_RESULT(no))
306
307AC_MSG_CHECKING(--with-modified-by argument)
308AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
309 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
310 AC_MSG_RESULT(no))
311
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200312dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000313AC_MSG_CHECKING(if character set is EBCDIC)
314AC_TRY_COMPILE([ ],
315[ /* TryCompile function for CharSet.
316 Treat any failure as ASCII for compatibility with existing art.
317 Use compile-time rather than run-time tests for cross-compiler
318 tolerance. */
319#if '0'!=240
320make an error "Character set is not EBCDIC"
321#endif ],
322[ # TryCompile action if true
323cf_cv_ebcdic=yes ],
324[ # TryCompile action if false
325cf_cv_ebcdic=no])
326# end of TryCompile ])
327# end of CacheVal CvEbcdic
328AC_MSG_RESULT($cf_cv_ebcdic)
329case "$cf_cv_ebcdic" in #(vi
330 yes) AC_DEFINE(EBCDIC)
331 line_break='"\\n"'
332 ;;
333 *) line_break='"\\012"';;
334esac
335AC_SUBST(line_break)
336
337if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +0200338dnl If we have EBCDIC we most likely have z/OS Unix, let's test it!
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200339AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000340case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200341 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000342 dnl If using cc the environment variable _CC_CCMODE must be
343 dnl set to "1", so that some compiler extensions are enabled.
344 dnl If using c89 the environment variable is named _CC_C89MODE.
345 dnl Note: compile with c89 never tested.
346 if test "$CC" = "cc"; then
347 ccm="$_CC_CCMODE"
348 ccn="CC"
349 else
350 if test "$CC" = "c89"; then
351 ccm="$_CC_C89MODE"
352 ccn="C89"
353 else
354 ccm=1
355 fi
356 fi
357 if test "$ccm" != "1"; then
358 echo ""
359 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200360 echo " On z/OS Unix, the environment variable"
Bram Moolenaar77c19352012-06-13 19:19:41 +0200361 echo " _CC_${ccn}MODE must be set to \"1\"!"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000362 echo " Do:"
363 echo " export _CC_${ccn}MODE=1"
364 echo " and then call configure again."
365 echo "------------------------------------------"
366 exit 1
367 fi
Bram Moolenaar77c19352012-06-13 19:19:41 +0200368 # Set CFLAGS for configure process.
369 # This will be reset later for config.mk.
370 # Use haltonmsg to force error for missing H files.
371 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)";
372 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000373 AC_MSG_RESULT(yes)
374 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200375 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000376 AC_MSG_RESULT(no)
377 ;;
378esac
379fi
380
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200381dnl Set QUOTESED. Needs additional backslashes on zOS
382if test "$zOSUnix" = "yes"; then
383 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
384else
385 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
386fi
387AC_SUBST(QUOTESED)
388
389
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200390dnl Link with -lsmack for Smack stuff; if not found
391AC_MSG_CHECKING(--disable-smack argument)
392AC_ARG_ENABLE(smack,
393 [ --disable-smack Do not check for Smack support.],
394 , enable_smack="yes")
395if test "$enable_smack" = "yes"; then
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200396 AC_MSG_RESULT(no)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200397 AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no")
Bram Moolenaar4ed89cd2014-04-05 12:02:25 +0200398else
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200399 AC_MSG_RESULT(yes)
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200400fi
401if test "$enable_smack" = "yes"; then
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200402 AC_CHECK_HEADER([attr/xattr.h], true, enable_smack="no")
403fi
404if test "$enable_smack" = "yes"; then
405 AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h)
406 AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>],
407 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +0200408 AC_MSG_RESULT(no); enable_smack="no")
Bram Moolenaarc09551a2014-04-10 11:09:17 +0200409fi
410if test "$enable_smack" = "yes"; then
411 AC_CHECK_LIB(attr, setxattr,
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200412 [LIBS="$LIBS -lattr"
413 found_smack="yes"
414 AC_DEFINE(HAVE_SMACK)])
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000415fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000416
Bram Moolenaar5bd32f42014-04-02 14:05:38 +0200417dnl When smack was found don't search for SELinux
418if test "x$found_smack" = "x"; then
419 dnl Link with -lselinux for SELinux stuff; if not found
420 AC_MSG_CHECKING(--disable-selinux argument)
421 AC_ARG_ENABLE(selinux,
422 [ --disable-selinux Do not check for SELinux support.],
423 , enable_selinux="yes")
424 if test "$enable_selinux" = "yes"; then
425 AC_MSG_RESULT(no)
426 AC_CHECK_LIB(selinux, is_selinux_enabled,
427 [LIBS="$LIBS -lselinux"
428 AC_DEFINE(HAVE_SELINUX)])
429 else
430 AC_MSG_RESULT(yes)
431 fi
432fi
433
Bram Moolenaar071d4272004-06-13 20:20:40 +0000434dnl Check user requested features.
435
436AC_MSG_CHECKING(--with-features argument)
437AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
438 features="$withval"; AC_MSG_RESULT($features),
439 features="normal"; AC_MSG_RESULT(Defaulting to normal))
440
441dovimdiff=""
442dogvimdiff=""
443case "$features" in
444 tiny) AC_DEFINE(FEAT_TINY) ;;
445 small) AC_DEFINE(FEAT_SMALL) ;;
446 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
447 dogvimdiff="installgvimdiff" ;;
448 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
449 dogvimdiff="installgvimdiff" ;;
450 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
451 dogvimdiff="installgvimdiff" ;;
452 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
453esac
454
455AC_SUBST(dovimdiff)
456AC_SUBST(dogvimdiff)
457
458AC_MSG_CHECKING(--with-compiledby argument)
459AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
460 compiledby="$withval"; AC_MSG_RESULT($withval),
461 compiledby=""; AC_MSG_RESULT(no))
462AC_SUBST(compiledby)
463
464AC_MSG_CHECKING(--disable-xsmp argument)
465AC_ARG_ENABLE(xsmp,
466 [ --disable-xsmp Disable XSMP session management],
467 , enable_xsmp="yes")
468
469if test "$enable_xsmp" = "yes"; then
470 AC_MSG_RESULT(no)
471 AC_MSG_CHECKING(--disable-xsmp-interact argument)
472 AC_ARG_ENABLE(xsmp-interact,
473 [ --disable-xsmp-interact Disable XSMP interaction],
474 , enable_xsmp_interact="yes")
475 if test "$enable_xsmp_interact" = "yes"; then
476 AC_MSG_RESULT(no)
477 AC_DEFINE(USE_XSMP_INTERACT)
478 else
479 AC_MSG_RESULT(yes)
480 fi
481else
482 AC_MSG_RESULT(yes)
483fi
484
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200485dnl Check for Lua feature.
486AC_MSG_CHECKING(--enable-luainterp argument)
487AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200488 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200489 [enable_luainterp="no"])
490AC_MSG_RESULT($enable_luainterp)
491
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200492if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200493 dnl -- find the lua executable
494 AC_SUBST(vi_cv_path_lua)
495
496 AC_MSG_CHECKING(--with-lua-prefix argument)
497 AC_ARG_WITH(lua_prefix,
498 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
499 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200500 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200501
502 if test "X$with_lua_prefix" != "X"; then
503 vi_cv_path_lua_pfx="$with_lua_prefix"
504 else
505 AC_MSG_CHECKING(LUA_PREFIX environment var)
506 if test "X$LUA_PREFIX" != "X"; then
507 AC_MSG_RESULT("$LUA_PREFIX")
508 vi_cv_path_lua_pfx="$LUA_PREFIX"
509 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200510 AC_MSG_RESULT([not set, default to /usr])
511 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200512 fi
513 fi
514
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200515 AC_MSG_CHECKING(--with-luajit)
516 AC_ARG_WITH(luajit,
517 [ --with-luajit Link with LuaJIT instead of Lua.],
518 [vi_cv_with_luajit="$withval"],
519 [vi_cv_with_luajit="no"])
520 AC_MSG_RESULT($vi_cv_with_luajit)
521
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200522 LUA_INC=
523 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200524 if test "x$vi_cv_with_luajit" != "xno"; then
525 dnl -- try to find LuaJIT executable
526 AC_PATH_PROG(vi_cv_path_luajit, luajit)
527 if test "X$vi_cv_path_luajit" != "X"; then
528 dnl -- find LuaJIT version
529 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit,
Bram Moolenaar49b10272013-11-21 12:17:51 +0100530 [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]*\)* .*/\1/'` ])
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200531 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit,
532 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ])
533 vi_cv_path_lua="$vi_cv_path_luajit"
534 vi_cv_version_lua="$vi_cv_version_lua_luajit"
535 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200536 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200537 dnl -- try to find Lua executable
538 AC_PATH_PROG(vi_cv_path_plain_lua, lua)
539 if test "X$vi_cv_path_plain_lua" != "X"; then
540 dnl -- find Lua version
541 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua,
542 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
543 fi
544 vi_cv_path_lua="$vi_cv_path_plain_lua"
545 vi_cv_version_lua="$vi_cv_version_plain_lua"
546 fi
547 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then
548 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit)
549 if test -f $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h; then
550 AC_MSG_RESULT(yes)
551 LUA_INC=/luajit-$vi_cv_version_luajit
552 fi
553 fi
554 if test "X$LUA_INC" = "X"; then
555 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
556 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
557 AC_MSG_RESULT(yes)
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200558 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200559 AC_MSG_RESULT(no)
560 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
561 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
562 AC_MSG_RESULT(yes)
563 LUA_INC=/lua$vi_cv_version_lua
564 else
565 AC_MSG_RESULT(no)
566 vi_cv_path_lua_pfx=
567 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200568 fi
569 fi
570 fi
571
572 if test "X$vi_cv_path_lua_pfx" != "X"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200573 if test "x$vi_cv_with_luajit" != "xno"; then
574 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
575 if test "X$multiarch" != "X"; then
576 lib_multiarch="lib/${multiarch}"
577 else
578 lib_multiarch="lib"
579 fi
580 if test "X$vi_cv_version_lua" = "X"; then
581 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit"
582 else
583 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua"
584 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200585 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200586 if test "X$LUA_INC" != "X"; then
587 dnl Test alternate location using version
588 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
589 else
590 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
591 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200592 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200593 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200594 lua_ok="yes"
595 else
596 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane])
597 libs_save=$LIBS
598 LIBS="$LIBS $LUA_LIBS"
599 AC_TRY_LINK(,[ ],
600 AC_MSG_RESULT(yes); lua_ok="yes",
601 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="")
602 LIBS=$libs_save
603 fi
604 if test "x$lua_ok" = "xyes"; then
605 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
606 LUA_SRC="if_lua.c"
607 LUA_OBJ="objects/if_lua.o"
608 LUA_PRO="if_lua.pro"
609 AC_DEFINE(FEAT_LUA)
610 fi
611 if test "$enable_luainterp" = "dynamic"; then
612 if test "x$vi_cv_with_luajit" != "xno"; then
613 luajit="jit"
614 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200615 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then
616 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll"
617 else
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200618 if test "x$MACOSX" = "xyes"; then
619 ext="dylib"
620 indexes=""
621 else
622 ext="so"
623 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9"
624 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null`
625 if test "X$multiarch" != "X"; then
626 lib_multiarch="lib/${multiarch}"
627 fi
Bram Moolenaar768baac2013-04-15 14:44:57 +0200628 fi
629 dnl Determine the sover for the current version, but fallback to
630 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found.
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200631 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx)
Bram Moolenaar768baac2013-04-15 14:44:57 +0200632 for subdir in "${lib_multiarch}" lib64 lib; do
633 if test -z "$subdir"; then
634 continue
635 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200636 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \
637 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do
638 for i in $indexes ""; do
639 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then
Bram Moolenaar768baac2013-04-15 14:44:57 +0200640 sover2="$i"
641 break 3
642 fi
643 done
Bram Moolenaar07e1da62013-02-06 19:49:43 +0100644 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200645 sover=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200646 done
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200647 if test "X$sover" = "X"; then
648 AC_MSG_RESULT(no)
649 lua_ok="no"
650 vi_cv_dll_name_lua="liblua${luajit}.${ext}"
651 else
652 AC_MSG_RESULT(yes)
653 lua_ok="yes"
654 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2"
655 fi
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200656 fi
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200657 AC_DEFINE(DYNAMIC_LUA)
658 LUA_LIBS=""
Bram Moolenaar1e91f262012-10-03 14:48:08 +0200659 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200660 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200661 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \
662 test "x$MACOSX" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \
663 test "`(uname -m) 2>/dev/null`" = "x86_64"; then
664 dnl OSX/x64 requires these flags. See http://luajit.org/install.html
665 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS"
666 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200667 fi
Bram Moolenaare855ccf2013-07-28 13:32:15 +0200668 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then
Bram Moolenaarf788a062011-12-14 20:51:25 +0100669 AC_MSG_ERROR([could not configure lua])
670 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200671 AC_SUBST(LUA_SRC)
672 AC_SUBST(LUA_OBJ)
673 AC_SUBST(LUA_PRO)
674 AC_SUBST(LUA_LIBS)
675 AC_SUBST(LUA_CFLAGS)
676fi
677
678
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000679dnl Check for MzScheme feature.
680AC_MSG_CHECKING(--enable-mzschemeinterp argument)
681AC_ARG_ENABLE(mzschemeinterp,
682 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
683 [enable_mzschemeinterp="no"])
684AC_MSG_RESULT($enable_mzschemeinterp)
685
686if test "$enable_mzschemeinterp" = "yes"; then
687 dnl -- find the mzscheme executable
688 AC_SUBST(vi_cv_path_mzscheme)
689
690 AC_MSG_CHECKING(--with-plthome argument)
691 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000692 [ --with-plthome=PLTHOME Use PLTHOME.],
693 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000694 with_plthome="";AC_MSG_RESULT("no"))
695
696 if test "X$with_plthome" != "X"; then
697 vi_cv_path_mzscheme_pfx="$with_plthome"
698 else
699 AC_MSG_CHECKING(PLTHOME environment var)
700 if test "X$PLTHOME" != "X"; then
701 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000702 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000703 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000704 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000705 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000706 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000707
708 dnl resolve symbolic link, the executable is often elsewhere and there
709 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000710 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000711 lsout=`ls -l $vi_cv_path_mzscheme`
712 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
713 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
714 fi
715 fi
716
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000717 if test "X$vi_cv_path_mzscheme" != "X"; then
718 dnl -- find where MzScheme thinks it was installed
719 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000720 dnl different versions of MzScheme differ in command line processing
721 dnl use universal approach
722 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000723 (build-path (call-with-values \
724 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000725 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
726 dnl Remove a trailing slash
727 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
728 sed -e 's+/$++'` ])
729 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000730 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000731 fi
732 fi
733
Bram Moolenaard7afed32007-05-06 13:26:41 +0000734 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000735 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
736 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
737 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000738 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
739 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000740 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000741 AC_MSG_RESULT(no)
742 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000743 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000744 AC_MSG_RESULT(yes)
745 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000746 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000747 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100748 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
749 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000750 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100751 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000752 else
753 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100754 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
755 if test -f /usr/include/plt/scheme.h; then
756 AC_MSG_RESULT(yes)
757 SCHEME_INC=/usr/include/plt
758 else
759 AC_MSG_RESULT(no)
760 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
761 if test -f /usr/include/racket/scheme.h; then
762 AC_MSG_RESULT(yes)
763 SCHEME_INC=/usr/include/racket
764 else
765 AC_MSG_RESULT(no)
766 vi_cv_path_mzscheme_pfx=
767 fi
768 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000769 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000770 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000771 fi
772 fi
773
774 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000775 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar75676462013-01-30 14:55:42 +0100776 MZSCHEME_LIBS="-framework Racket"
777 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000778 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
779 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
780 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100781 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
782 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
783 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
784 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
785 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
786 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000787 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000788 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000789 dnl Using shared objects
790 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
791 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
792 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100793 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
794 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
795 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
796 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
797 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000798 else
799 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
800 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000801 if test "$GCC" = yes; then
802 dnl Make Vim remember the path to the library. For when it's not in
803 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000804 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000805 elif test "`(uname) 2>/dev/null`" = SunOS &&
806 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000807 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000808 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000809 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100810
811 AC_MSG_CHECKING(for racket collects directory)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000812 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100813 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100814 else
815 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100816 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/
817 else
818 if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then
819 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/
Bram Moolenaar75676462013-01-30 14:55:42 +0100820 else
821 if test -d $vi_cv_path_mzscheme_pfx/collects; then
822 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/
823 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100824 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100825 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000826 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100827 if test "X$SCHEME_COLLECTS" != "X" ; then
828 AC_MSG_RESULT(${SCHEME_COLLECTS})
829 else
830 AC_MSG_RESULT(not found)
831 fi
832
833 AC_MSG_CHECKING(for mzscheme_base.c)
834 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000835 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100836 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
837 MZSCHEME_MOD="++lib scheme/base"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100838 else
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100839 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100840 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar45e2bcc2014-02-15 17:19:00 +0100841 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
842 MZSCHEME_MOD="++lib scheme/base"
843 else
844 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then
845 MZSCHEME_EXTRA="mzscheme_base.c"
846 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool"
847 MZSCHEME_MOD=""
848 fi
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100849 fi
850 fi
851 if test "X$MZSCHEME_EXTRA" != "X" ; then
852 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000853 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
854 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100855 AC_MSG_RESULT(needed)
856 else
857 AC_MSG_RESULT(not needed)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000858 fi
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100859
Bram Moolenaar9e902192013-07-17 18:58:11 +0200860 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'".
861 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"])
862
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000863 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaarfe9fb922012-11-23 21:54:48 +0100864 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar9e902192013-07-17 18:58:11 +0200865
866 dnl Test that we can compile a simple program with these CFLAGS and LIBS.
867 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane])
868 cflags_save=$CFLAGS
869 libs_save=$LIBS
870 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS"
871 LIBS="$LIBS $MZSCHEME_LIBS"
872 AC_TRY_LINK(,[ ],
873 AC_MSG_RESULT(yes); mzs_ok=yes,
874 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no)
875 CFLAGS=$cflags_save
876 LIBS=$libs_save
877 if test $mzs_ok = yes; then
878 MZSCHEME_SRC="if_mzsch.c"
879 MZSCHEME_OBJ="objects/if_mzsch.o"
880 MZSCHEME_PRO="if_mzsch.pro"
881 AC_DEFINE(FEAT_MZSCHEME)
882 else
883 MZSCHEME_CFLAGS=
884 MZSCHEME_LIBS=
885 MZSCHEME_EXTRA=
886 MZSCHEME_MZC=
887 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000888 fi
889 AC_SUBST(MZSCHEME_SRC)
890 AC_SUBST(MZSCHEME_OBJ)
891 AC_SUBST(MZSCHEME_PRO)
892 AC_SUBST(MZSCHEME_LIBS)
893 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000894 AC_SUBST(MZSCHEME_EXTRA)
895 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000896fi
897
898
Bram Moolenaar071d4272004-06-13 20:20:40 +0000899AC_MSG_CHECKING(--enable-perlinterp argument)
900AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200901 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000902 [enable_perlinterp="no"])
903AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200904if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000905 AC_SUBST(vi_cv_path_perl)
906 AC_PATH_PROG(vi_cv_path_perl, perl)
907 if test "X$vi_cv_path_perl" != "X"; then
908 AC_MSG_CHECKING(Perl version)
909 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
910 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200911 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000912 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
913 badthreads=no
914 else
915 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
916 eval `$vi_cv_path_perl -V:use5005threads`
917 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
918 badthreads=no
919 else
920 badthreads=yes
921 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
922 fi
923 else
924 badthreads=yes
925 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
926 fi
927 fi
928 if test $badthreads = no; then
929 AC_MSG_RESULT(OK)
930 eval `$vi_cv_path_perl -V:shrpenv`
931 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
932 shrpenv=""
933 fi
934 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
935 AC_SUBST(vi_cv_perllib)
Bram Moolenaard5f62b12014-08-17 17:05:44 +0200936 vi_cv_perl_extutils=unknown_perl_extutils_path
937 for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do
938 xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp"
939 if test -f "$xsubpp_path"; then
940 vi_cv_perl_xsubpp="$xsubpp_path"
941 fi
942 done
943 AC_SUBST(vi_cv_perl_xsubpp)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000944 dnl Remove "-fno-something", it breaks using cproto.
945 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
946 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
947 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
948 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
949 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
950 -e 's/-bE:perl.exp//' -e 's/-lc //'`
951 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
952 dnl a test in configure may fail because of that.
953 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
954 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
955
956 dnl check that compiling a simple program still works with the flags
957 dnl added for Perl.
958 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
959 cflags_save=$CFLAGS
960 libs_save=$LIBS
961 ldflags_save=$LDFLAGS
962 CFLAGS="$CFLAGS $perlcppflags"
963 LIBS="$LIBS $perllibs"
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200964 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000965 LDFLAGS="$perlldflags $LDFLAGS"
966 AC_TRY_LINK(,[ ],
967 AC_MSG_RESULT(yes); perl_ok=yes,
968 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
969 CFLAGS=$cflags_save
970 LIBS=$libs_save
971 LDFLAGS=$ldflags_save
972 if test $perl_ok = yes; then
973 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000974 dnl remove -pipe and -Wxxx, it confuses cproto
975 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000976 fi
977 if test "X$perlldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +0100978 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +0200979 LDFLAGS="$perlldflags $LDFLAGS"
980 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000981 fi
982 PERL_LIBS=$perllibs
983 PERL_SRC="auto/if_perl.c if_perlsfio.c"
984 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
985 PERL_PRO="if_perl.pro if_perlsfio.pro"
986 AC_DEFINE(FEAT_PERL)
987 fi
988 fi
989 else
990 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
991 fi
992 fi
993
994 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000995 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000996 dir=/System/Library/Perl
997 darwindir=$dir/darwin
998 if test -d $darwindir; then
999 PERL=/usr/bin/perl
1000 else
1001 dnl Mac OS X 10.3
1002 dir=/System/Library/Perl/5.8.1
1003 darwindir=$dir/darwin-thread-multi-2level
1004 if test -d $darwindir; then
1005 PERL=/usr/bin/perl
1006 fi
1007 fi
1008 if test -n "$PERL"; then
1009 PERL_DIR="$dir"
1010 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
1011 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
1012 PERL_LIBS="-L$darwindir/CORE -lperl"
1013 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001014 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
1015 dnl be included if requested by passing --with-mac-arch to
1016 dnl configure, so strip these flags first (if present)
1017 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
1018 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 +00001019 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +02001020 if test "$enable_perlinterp" = "dynamic"; then
1021 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
1022 AC_DEFINE(DYNAMIC_PERL)
1023 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
1024 fi
1025 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001026
1027 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then
1028 AC_MSG_ERROR([could not configure perl])
1029 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001030fi
1031AC_SUBST(shrpenv)
1032AC_SUBST(PERL_SRC)
1033AC_SUBST(PERL_OBJ)
1034AC_SUBST(PERL_PRO)
1035AC_SUBST(PERL_CFLAGS)
1036AC_SUBST(PERL_LIBS)
1037
1038AC_MSG_CHECKING(--enable-pythoninterp argument)
1039AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001040 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001041 [enable_pythoninterp="no"])
1042AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001043if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001044 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001045 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001046 if test "X$vi_cv_path_python" != "X"; then
1047
1048 dnl -- get its version number
1049 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1050 [[vi_cv_var_python_version=`
1051 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1052 ]])
1053
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001054 dnl -- it must be at least version 2.3
1055 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001056 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001057 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001058 then
1059 AC_MSG_RESULT(yep)
1060
1061 dnl -- find where python thinks it was installed
1062 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1063 [ vi_cv_path_python_pfx=`
1064 ${vi_cv_path_python} -c \
1065 "import sys; print sys.prefix"` ])
1066
1067 dnl -- and where it thinks it runs
1068 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1069 [ vi_cv_path_python_epfx=`
1070 ${vi_cv_path_python} -c \
1071 "import sys; print sys.exec_prefix"` ])
1072
1073 dnl -- python's internal library path
1074
1075 AC_CACHE_VAL(vi_cv_path_pythonpath,
1076 [ vi_cv_path_pythonpath=`
1077 unset PYTHONPATH;
1078 ${vi_cv_path_python} -c \
1079 "import sys, string; print string.join(sys.path,':')"` ])
1080
1081 dnl -- where the Python implementation library archives are
1082
1083 AC_ARG_WITH(python-config-dir,
1084 [ --with-python-config-dir=PATH Python's config directory],
1085 [ vi_cv_path_python_conf="${withval}" ] )
1086
1087 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1088 [
1089 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001090 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1091 if test -d "$d" && test -f "$d/config.c"; then
1092 vi_cv_path_python_conf="$d"
1093 else
1094 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1095 for subdir in lib64 lib share; do
1096 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1097 if test -d "$d" && test -f "$d/config.c"; then
1098 vi_cv_path_python_conf="$d"
1099 fi
1100 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001101 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001102 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001103 ])
1104
1105 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1106
1107 if test "X$PYTHON_CONFDIR" = "X"; then
1108 AC_MSG_RESULT([can't find it!])
1109 else
1110
1111 dnl -- we need to examine Python's config/Makefile too
1112 dnl see what the interpreter is built from
1113 AC_CACHE_VAL(vi_cv_path_python_plibs,
1114 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001115 pwd=`pwd`
1116 tmp_mkf="$pwd/config-PyMake$$"
1117 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001118__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001119 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001120 @echo "python_LIBS='$(LIBS)'"
1121 @echo "python_SYSLIBS='$(SYSLIBS)'"
1122 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001123 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001124 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001125eof
1126 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001127 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1128 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001129 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1130 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1131 vi_cv_path_python_plibs="-framework Python"
1132 else
1133 if test "${vi_cv_var_python_version}" = "1.4"; then
1134 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1135 else
1136 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1137 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001138 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 +00001139 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1140 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1141 fi
1142 ])
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001143 AC_CACHE_VAL(vi_cv_dll_name_python,
1144 [
1145 if test "X$python_DLLLIBRARY" != "X"; then
1146 vi_cv_dll_name_python="$python_DLLLIBRARY"
1147 else
1148 vi_cv_dll_name_python="$python_INSTSONAME"
1149 fi
1150 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001151
1152 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1153 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001154 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 +00001155 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001156 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 +00001157 fi
1158 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001159 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001160 if test "${vi_cv_var_python_version}" = "1.4"; then
1161 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1162 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001163 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 +00001164
1165 dnl On FreeBSD linking with "-pthread" is required to use threads.
1166 dnl _THREAD_SAFE must be used for compiling then.
1167 dnl The "-pthread" is added to $LIBS, so that the following check for
1168 dnl sigaltstack() will look in libc_r (it's there in libc!).
1169 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1170 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1171 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1172 AC_MSG_CHECKING([if -pthread should be used])
1173 threadsafe_flag=
1174 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001175 dnl if test "x$MACOSX" != "xyes"; then
1176 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001177 test "$GCC" = yes && threadsafe_flag="-pthread"
1178 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1179 threadsafe_flag="-D_THREAD_SAFE"
1180 thread_lib="-pthread"
1181 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001182 if test "`(uname) 2>/dev/null`" = SunOS; then
1183 threadsafe_flag="-pthreads"
1184 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001185 fi
1186 libs_save_old=$LIBS
1187 if test -n "$threadsafe_flag"; then
1188 cflags_save=$CFLAGS
1189 CFLAGS="$CFLAGS $threadsafe_flag"
1190 LIBS="$LIBS $thread_lib"
1191 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001192 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001193 AC_MSG_RESULT(no); LIBS=$libs_save_old
1194 )
1195 CFLAGS=$cflags_save
1196 else
1197 AC_MSG_RESULT(no)
1198 fi
1199
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001200 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001201 dnl added for Python.
1202 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1203 cflags_save=$CFLAGS
1204 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001205 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001206 LIBS="$LIBS $PYTHON_LIBS"
1207 AC_TRY_LINK(,[ ],
1208 AC_MSG_RESULT(yes); python_ok=yes,
1209 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1210 CFLAGS=$cflags_save
1211 LIBS=$libs_save
1212 if test $python_ok = yes; then
1213 AC_DEFINE(FEAT_PYTHON)
1214 else
1215 LIBS=$libs_save_old
1216 PYTHON_SRC=
1217 PYTHON_OBJ=
1218 PYTHON_LIBS=
1219 PYTHON_CFLAGS=
1220 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001221 fi
1222 else
1223 AC_MSG_RESULT(too old)
1224 fi
1225 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001226
1227 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1228 AC_MSG_ERROR([could not configure python])
1229 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001230fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001231
Bram Moolenaar071d4272004-06-13 20:20:40 +00001232AC_SUBST(PYTHON_CONFDIR)
1233AC_SUBST(PYTHON_LIBS)
1234AC_SUBST(PYTHON_GETPATH_CFLAGS)
1235AC_SUBST(PYTHON_CFLAGS)
1236AC_SUBST(PYTHON_SRC)
1237AC_SUBST(PYTHON_OBJ)
1238
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001239
1240AC_MSG_CHECKING(--enable-python3interp argument)
1241AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001242 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001243 [enable_python3interp="no"])
1244AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001245if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001246 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001247 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001248 if test "X$vi_cv_path_python3" != "X"; then
1249
1250 dnl -- get its version number
1251 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1252 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001253 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001254 ]])
1255
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001256 dnl -- it must be at least version 3
1257 AC_MSG_CHECKING(Python is 3.0 or better)
1258 if ${vi_cv_path_python3} -c \
1259 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1260 then
1261 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001262
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001263 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1264 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001265 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001266 vi_cv_var_python3_abiflags=
1267 if ${vi_cv_path_python3} -c \
1268 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1269 then
1270 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1271 "import sys; print(sys.abiflags)"`
1272 fi ])
1273
1274 dnl -- find where python3 thinks it was installed
1275 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1276 [ vi_cv_path_python3_pfx=`
1277 ${vi_cv_path_python3} -c \
1278 "import sys; print(sys.prefix)"` ])
1279
1280 dnl -- and where it thinks it runs
1281 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1282 [ vi_cv_path_python3_epfx=`
1283 ${vi_cv_path_python3} -c \
1284 "import sys; print(sys.exec_prefix)"` ])
1285
1286 dnl -- python3's internal library path
1287
1288 AC_CACHE_VAL(vi_cv_path_python3path,
1289 [ vi_cv_path_python3path=`
1290 unset PYTHONPATH;
1291 ${vi_cv_path_python3} -c \
1292 "import sys, string; print(':'.join(sys.path))"` ])
1293
1294 dnl -- where the Python implementation library archives are
1295
1296 AC_ARG_WITH(python3-config-dir,
1297 [ --with-python3-config-dir=PATH Python's config directory],
1298 [ vi_cv_path_python3_conf="${withval}" ] )
1299
1300 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1301 [
1302 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001303 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001304 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1305 if test -d "$d" && test -f "$d/config.c"; then
1306 vi_cv_path_python3_conf="$d"
1307 else
1308 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1309 for subdir in lib64 lib share; do
1310 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1311 if test -d "$d" && test -f "$d/config.c"; then
1312 vi_cv_path_python3_conf="$d"
1313 fi
1314 done
1315 done
1316 fi
1317 ])
1318
1319 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1320
1321 if test "X$PYTHON3_CONFDIR" = "X"; then
1322 AC_MSG_RESULT([can't find it!])
1323 else
1324
1325 dnl -- we need to examine Python's config/Makefile too
1326 dnl see what the interpreter is built from
1327 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1328 [
1329 pwd=`pwd`
1330 tmp_mkf="$pwd/config-PyMake$$"
1331 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001332__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001333 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001334 @echo "python3_LIBS='$(LIBS)'"
1335 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001336 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001337 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001338eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001339 dnl -- delete the lines from make about Entering/Leaving directory
1340 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1341 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001342 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 +02001343 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1344 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1345 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1346 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1347 ])
1348 AC_CACHE_VAL(vi_cv_dll_name_python3,
1349 [
1350 if test "X$python3_DLLLIBRARY" != "X"; then
1351 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
1352 else
1353 vi_cv_dll_name_python3="$python3_INSTSONAME"
1354 fi
1355 ])
1356
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001357 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1358 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001359 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 +02001360 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001361 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 +02001362 fi
1363 PYTHON3_SRC="if_python3.c"
1364 PYTHON3_OBJ="objects/if_python3.o"
1365
1366 dnl On FreeBSD linking with "-pthread" is required to use threads.
1367 dnl _THREAD_SAFE must be used for compiling then.
1368 dnl The "-pthread" is added to $LIBS, so that the following check for
1369 dnl sigaltstack() will look in libc_r (it's there in libc!).
1370 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1371 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1372 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1373 AC_MSG_CHECKING([if -pthread should be used])
1374 threadsafe_flag=
1375 thread_lib=
1376 dnl if test "x$MACOSX" != "xyes"; then
1377 if test "`(uname) 2>/dev/null`" != Darwin; then
1378 test "$GCC" = yes && threadsafe_flag="-pthread"
1379 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1380 threadsafe_flag="-D_THREAD_SAFE"
1381 thread_lib="-pthread"
1382 fi
1383 if test "`(uname) 2>/dev/null`" = SunOS; then
1384 threadsafe_flag="-pthreads"
1385 fi
1386 fi
1387 libs_save_old=$LIBS
1388 if test -n "$threadsafe_flag"; then
1389 cflags_save=$CFLAGS
1390 CFLAGS="$CFLAGS $threadsafe_flag"
1391 LIBS="$LIBS $thread_lib"
1392 AC_TRY_LINK(,[ ],
1393 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1394 AC_MSG_RESULT(no); LIBS=$libs_save_old
1395 )
1396 CFLAGS=$cflags_save
1397 else
1398 AC_MSG_RESULT(no)
1399 fi
1400
1401 dnl check that compiling a simple program still works with the flags
1402 dnl added for Python.
1403 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1404 cflags_save=$CFLAGS
1405 libs_save=$LIBS
1406 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1407 LIBS="$LIBS $PYTHON3_LIBS"
1408 AC_TRY_LINK(,[ ],
1409 AC_MSG_RESULT(yes); python3_ok=yes,
1410 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1411 CFLAGS=$cflags_save
1412 LIBS=$libs_save
1413 if test "$python3_ok" = yes; then
1414 AC_DEFINE(FEAT_PYTHON3)
1415 else
1416 LIBS=$libs_save_old
1417 PYTHON3_SRC=
1418 PYTHON3_OBJ=
1419 PYTHON3_LIBS=
1420 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001421 fi
1422 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001423 else
1424 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001425 fi
1426 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001427 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1428 AC_MSG_ERROR([could not configure python3])
1429 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001430fi
1431
1432AC_SUBST(PYTHON3_CONFDIR)
1433AC_SUBST(PYTHON3_LIBS)
1434AC_SUBST(PYTHON3_CFLAGS)
1435AC_SUBST(PYTHON3_SRC)
1436AC_SUBST(PYTHON3_OBJ)
1437
1438dnl if python2.x and python3.x are enabled one can only link in code
1439dnl with dlopen(), dlsym(), dlclose()
1440if test "$python_ok" = yes && test "$python3_ok" = yes; then
1441 AC_DEFINE(DYNAMIC_PYTHON)
1442 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001443 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001444 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001445 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001446 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001447 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1448 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001449 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001450 #include <dlfcn.h>
1451 /* If this program fails, then RTLD_GLOBAL is needed.
1452 * RTLD_GLOBAL will be used and then it is not possible to
1453 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001454 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001455 */
1456
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001457 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001458 {
1459 int needed = 0;
1460 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1461 if (pylib != 0)
1462 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001463 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001464 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1465 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1466 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001467 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001468 (*init)();
1469 needed = (*simple)("import termios") == -1;
1470 (*final)();
1471 dlclose(pylib);
1472 }
1473 return !needed;
1474 }
1475
1476 int main(int argc, char** argv)
1477 {
1478 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001479 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001480 not_needed = 1;
1481 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001482 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001483 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001484
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001485 CFLAGS=$cflags_save
1486 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001487
1488 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1489 cflags_save=$CFLAGS
1490 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1491 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001492 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1493 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001494 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001495 #include <dlfcn.h>
1496 #include <wchar.h>
1497 /* If this program fails, then RTLD_GLOBAL is needed.
1498 * RTLD_GLOBAL will be used and then it is not possible to
1499 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001500 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001501 */
1502
1503 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1504 {
1505 int needed = 0;
1506 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1507 if (pylib != 0)
1508 {
1509 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1510 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1511 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1512 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1513 (*pfx)(prefix);
1514 (*init)();
1515 needed = (*simple)("import termios") == -1;
1516 (*final)();
1517 dlclose(pylib);
1518 }
1519 return !needed;
1520 }
1521
1522 int main(int argc, char** argv)
1523 {
1524 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001525 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001526 not_needed = 1;
1527 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001528 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001529 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1530
1531 CFLAGS=$cflags_save
1532 LDFLAGS=$ldflags_save
1533
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001534 PYTHON_SRC="if_python.c"
1535 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001536 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001537 PYTHON_LIBS=
1538 PYTHON3_SRC="if_python3.c"
1539 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001540 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001541 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001542elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1543 AC_DEFINE(DYNAMIC_PYTHON)
1544 PYTHON_SRC="if_python.c"
1545 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001546 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001547 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001548elif test "$python_ok" = yes; then
1549 dnl Check that adding -fPIE works. It may be needed when using a static
1550 dnl Python library.
1551 AC_MSG_CHECKING([if -fPIE can be added for Python])
1552 cflags_save=$CFLAGS
1553 libs_save=$LIBS
1554 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1555 LIBS="$LIBS $PYTHON_LIBS"
1556 AC_TRY_LINK(,[ ],
1557 AC_MSG_RESULT(yes); fpie_ok=yes,
1558 AC_MSG_RESULT(no); fpie_ok=no)
1559 CFLAGS=$cflags_save
1560 LIBS=$libs_save
1561 if test $fpie_ok = yes; then
1562 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1563 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001564elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1565 AC_DEFINE(DYNAMIC_PYTHON3)
1566 PYTHON3_SRC="if_python3.c"
1567 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001568 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001569 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001570elif test "$python3_ok" = yes; then
1571 dnl Check that adding -fPIE works. It may be needed when using a static
1572 dnl Python library.
1573 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1574 cflags_save=$CFLAGS
1575 libs_save=$LIBS
1576 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1577 LIBS="$LIBS $PYTHON3_LIBS"
1578 AC_TRY_LINK(,[ ],
1579 AC_MSG_RESULT(yes); fpie_ok=yes,
1580 AC_MSG_RESULT(no); fpie_ok=no)
1581 CFLAGS=$cflags_save
1582 LIBS=$libs_save
1583 if test $fpie_ok = yes; then
1584 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1585 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001586fi
1587
Bram Moolenaar071d4272004-06-13 20:20:40 +00001588AC_MSG_CHECKING(--enable-tclinterp argument)
1589AC_ARG_ENABLE(tclinterp,
1590 [ --enable-tclinterp Include Tcl interpreter.], ,
1591 [enable_tclinterp="no"])
1592AC_MSG_RESULT($enable_tclinterp)
1593
1594if test "$enable_tclinterp" = "yes"; then
1595
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001596 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001597 AC_MSG_CHECKING(--with-tclsh argument)
1598 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1599 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001600 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001601 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1602 AC_SUBST(vi_cv_path_tcl)
1603
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001604 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1605 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1606 tclsh_name="tclsh8.4"
1607 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1608 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001609 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001610 tclsh_name="tclsh8.2"
1611 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1612 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001613 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1614 tclsh_name="tclsh8.0"
1615 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1616 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001617 dnl still didn't find it, try without version number
1618 if test "X$vi_cv_path_tcl" = "X"; then
1619 tclsh_name="tclsh"
1620 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1621 fi
1622 if test "X$vi_cv_path_tcl" != "X"; then
1623 AC_MSG_CHECKING(Tcl version)
1624 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1625 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1626 AC_MSG_RESULT($tclver - OK);
1627 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 -`
1628
1629 AC_MSG_CHECKING(for location of Tcl include)
1630 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001631 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 +00001632 else
1633 dnl For Mac OS X 10.3, use the OS-provided framework location
1634 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1635 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001636 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001637 for try in $tclinc; do
1638 if test -f "$try/tcl.h"; then
1639 AC_MSG_RESULT($try/tcl.h)
1640 TCL_INC=$try
1641 break
1642 fi
1643 done
1644 if test -z "$TCL_INC"; then
1645 AC_MSG_RESULT(<not found>)
1646 SKIP_TCL=YES
1647 fi
1648 if test -z "$SKIP_TCL"; then
1649 AC_MSG_CHECKING(for location of tclConfig.sh script)
1650 if test "x$MACOSX" != "xyes"; then
1651 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001652 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001653 else
1654 dnl For Mac OS X 10.3, use the OS-provided framework location
1655 tclcnf="/System/Library/Frameworks/Tcl.framework"
1656 fi
1657 for try in $tclcnf; do
1658 if test -f $try/tclConfig.sh; then
1659 AC_MSG_RESULT($try/tclConfig.sh)
1660 . $try/tclConfig.sh
1661 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1662 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1663 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001664 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001665 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 +00001666 break
1667 fi
1668 done
1669 if test -z "$TCL_LIBS"; then
1670 AC_MSG_RESULT(<not found>)
1671 AC_MSG_CHECKING(for Tcl library by myself)
1672 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001673 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001674 for ext in .so .a ; do
1675 for ver in "" $tclver ; do
1676 for try in $tcllib ; do
1677 trylib=tcl$ver$ext
1678 if test -f $try/lib$trylib ; then
1679 AC_MSG_RESULT($try/lib$trylib)
1680 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1681 if test "`(uname) 2>/dev/null`" = SunOS &&
1682 uname -r | grep '^5' >/dev/null; then
1683 TCL_LIBS="$TCL_LIBS -R $try"
1684 fi
1685 break 3
1686 fi
1687 done
1688 done
1689 done
1690 if test -z "$TCL_LIBS"; then
1691 AC_MSG_RESULT(<not found>)
1692 SKIP_TCL=YES
1693 fi
1694 fi
1695 if test -z "$SKIP_TCL"; then
1696 AC_DEFINE(FEAT_TCL)
1697 TCL_SRC=if_tcl.c
1698 TCL_OBJ=objects/if_tcl.o
1699 TCL_PRO=if_tcl.pro
1700 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1701 fi
1702 fi
1703 else
1704 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1705 fi
1706 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001707 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1708 AC_MSG_ERROR([could not configure Tcl])
1709 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001710fi
1711AC_SUBST(TCL_SRC)
1712AC_SUBST(TCL_OBJ)
1713AC_SUBST(TCL_PRO)
1714AC_SUBST(TCL_CFLAGS)
1715AC_SUBST(TCL_LIBS)
1716
1717AC_MSG_CHECKING(--enable-rubyinterp argument)
1718AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001719 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001720 [enable_rubyinterp="no"])
1721AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001722if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001723 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001724 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001725 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1726 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1727 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001728 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001729 if test "X$vi_cv_path_ruby" != "X"; then
1730 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001731 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 +00001732 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001733 AC_MSG_CHECKING(Ruby rbconfig)
1734 ruby_rbconfig="RbConfig"
1735 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1736 ruby_rbconfig="Config"
1737 fi
1738 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001739 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001740 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 +00001741 if test "X$rubyhdrdir" != "X"; then
1742 AC_MSG_RESULT($rubyhdrdir)
1743 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001744 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1745 if test -d "$rubyarchdir"; then
1746 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001747 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001748 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001749 if test "X$rubyversion" = "X"; then
1750 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1751 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001752 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001753 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001754 if test "X$rubylibs" != "X"; then
1755 RUBY_LIBS="$rubylibs"
1756 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001757 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1758 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001759 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001760 if test -f "$rubylibdir/$librubya"; then
1761 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001762 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1763 elif test "$librubyarg" = "libruby.a"; then
1764 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1765 librubyarg="-lruby"
1766 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001767 fi
1768
1769 if test "X$librubyarg" != "X"; then
1770 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1771 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001772 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001773 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001774 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1775 dnl be included if requested by passing --with-mac-arch to
1776 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001777 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001778 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001779 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001780 LDFLAGS="$rubyldflags $LDFLAGS"
1781 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001782 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001783 fi
1784 RUBY_SRC="if_ruby.c"
1785 RUBY_OBJ="objects/if_ruby.o"
1786 RUBY_PRO="if_ruby.pro"
1787 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001788 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001789 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001790 AC_DEFINE(DYNAMIC_RUBY)
1791 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1792 RUBY_LIBS=
1793 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001794 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001795 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001796 fi
1797 else
1798 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1799 fi
1800 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001801
1802 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1803 AC_MSG_ERROR([could not configure Ruby])
1804 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001805fi
1806AC_SUBST(RUBY_SRC)
1807AC_SUBST(RUBY_OBJ)
1808AC_SUBST(RUBY_PRO)
1809AC_SUBST(RUBY_CFLAGS)
1810AC_SUBST(RUBY_LIBS)
1811
1812AC_MSG_CHECKING(--enable-cscope argument)
1813AC_ARG_ENABLE(cscope,
1814 [ --enable-cscope Include cscope interface.], ,
1815 [enable_cscope="no"])
1816AC_MSG_RESULT($enable_cscope)
1817if test "$enable_cscope" = "yes"; then
1818 AC_DEFINE(FEAT_CSCOPE)
1819fi
1820
1821AC_MSG_CHECKING(--enable-workshop argument)
1822AC_ARG_ENABLE(workshop,
1823 [ --enable-workshop Include Sun Visual Workshop support.], ,
1824 [enable_workshop="no"])
1825AC_MSG_RESULT($enable_workshop)
1826if test "$enable_workshop" = "yes"; then
1827 AC_DEFINE(FEAT_SUN_WORKSHOP)
1828 WORKSHOP_SRC="workshop.c integration.c"
1829 AC_SUBST(WORKSHOP_SRC)
1830 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1831 AC_SUBST(WORKSHOP_OBJ)
1832 if test "${enable_gui-xxx}" = xxx; then
1833 enable_gui=motif
1834 fi
1835fi
1836
1837AC_MSG_CHECKING(--disable-netbeans argument)
1838AC_ARG_ENABLE(netbeans,
1839 [ --disable-netbeans Disable NetBeans integration support.],
1840 , [enable_netbeans="yes"])
1841if test "$enable_netbeans" = "yes"; then
1842 AC_MSG_RESULT(no)
1843 dnl On Solaris we need the socket and nsl library.
1844 AC_CHECK_LIB(socket, socket)
1845 AC_CHECK_LIB(nsl, gethostbyname)
1846 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1847 AC_TRY_LINK([
1848#include <stdio.h>
1849#include <stdlib.h>
1850#include <stdarg.h>
1851#include <fcntl.h>
1852#include <netdb.h>
1853#include <netinet/in.h>
1854#include <errno.h>
1855#include <sys/types.h>
1856#include <sys/socket.h>
1857 /* Check bitfields */
1858 struct nbbuf {
1859 unsigned int initDone:1;
1860 ushort signmaplen;
1861 };
1862 ], [
1863 /* Check creating a socket. */
1864 struct sockaddr_in server;
1865 (void)socket(AF_INET, SOCK_STREAM, 0);
1866 (void)htons(100);
1867 (void)gethostbyname("microsoft.com");
1868 if (errno == ECONNREFUSED)
1869 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1870 ],
1871 AC_MSG_RESULT(yes),
1872 AC_MSG_RESULT(no); enable_netbeans="no")
1873else
1874 AC_MSG_RESULT(yes)
1875fi
1876if test "$enable_netbeans" = "yes"; then
1877 AC_DEFINE(FEAT_NETBEANS_INTG)
1878 NETBEANS_SRC="netbeans.c"
1879 AC_SUBST(NETBEANS_SRC)
1880 NETBEANS_OBJ="objects/netbeans.o"
1881 AC_SUBST(NETBEANS_OBJ)
1882fi
1883
1884AC_MSG_CHECKING(--enable-sniff argument)
1885AC_ARG_ENABLE(sniff,
1886 [ --enable-sniff Include Sniff interface.], ,
1887 [enable_sniff="no"])
1888AC_MSG_RESULT($enable_sniff)
1889if test "$enable_sniff" = "yes"; then
1890 AC_DEFINE(FEAT_SNIFF)
1891 SNIFF_SRC="if_sniff.c"
1892 AC_SUBST(SNIFF_SRC)
1893 SNIFF_OBJ="objects/if_sniff.o"
1894 AC_SUBST(SNIFF_OBJ)
1895fi
1896
1897AC_MSG_CHECKING(--enable-multibyte argument)
1898AC_ARG_ENABLE(multibyte,
1899 [ --enable-multibyte Include multibyte editing support.], ,
1900 [enable_multibyte="no"])
1901AC_MSG_RESULT($enable_multibyte)
1902if test "$enable_multibyte" = "yes"; then
1903 AC_DEFINE(FEAT_MBYTE)
1904fi
1905
1906AC_MSG_CHECKING(--enable-hangulinput argument)
1907AC_ARG_ENABLE(hangulinput,
1908 [ --enable-hangulinput Include Hangul input support.], ,
1909 [enable_hangulinput="no"])
1910AC_MSG_RESULT($enable_hangulinput)
1911
1912AC_MSG_CHECKING(--enable-xim argument)
1913AC_ARG_ENABLE(xim,
1914 [ --enable-xim Include XIM input support.],
1915 AC_MSG_RESULT($enable_xim),
1916 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001917
1918AC_MSG_CHECKING(--enable-fontset argument)
1919AC_ARG_ENABLE(fontset,
1920 [ --enable-fontset Include X fontset output support.], ,
1921 [enable_fontset="no"])
1922AC_MSG_RESULT($enable_fontset)
1923dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1924
1925test -z "$with_x" && with_x=yes
1926test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1927if test "$with_x" = no; then
1928 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1929else
1930 dnl Do this check early, so that its failure can override user requests.
1931
1932 AC_PATH_PROG(xmkmfpath, xmkmf)
1933
1934 AC_PATH_XTRA
1935
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001936 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001937 dnl be compiled with a special option.
1938 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001939 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001940 CFLAGS="$CFLAGS -W c,dll"
1941 LDFLAGS="$LDFLAGS -W l,dll"
1942 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1943 fi
1944
1945 dnl On my HPUX system the X include dir is found, but the lib dir not.
1946 dnl This is a desparate try to fix this.
1947
1948 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1949 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1950 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1951 X_LIBS="$X_LIBS -L$x_libraries"
1952 if test "`(uname) 2>/dev/null`" = SunOS &&
1953 uname -r | grep '^5' >/dev/null; then
1954 X_LIBS="$X_LIBS -R $x_libraries"
1955 fi
1956 fi
1957
1958 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1959 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1960 AC_MSG_RESULT(Corrected X includes to $x_includes)
1961 X_CFLAGS="$X_CFLAGS -I$x_includes"
1962 fi
1963
1964 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1965 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1966 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1967 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1968 dnl Same for "-R/usr/lib ".
1969 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1970
1971
1972 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001973 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1974 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001975 AC_MSG_CHECKING(if X11 header files can be found)
1976 cflags_save=$CFLAGS
1977 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001978 AC_TRY_COMPILE([#include <X11/Xlib.h>
1979#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001980 AC_MSG_RESULT(yes),
1981 AC_MSG_RESULT(no); no_x=yes)
1982 CFLAGS=$cflags_save
1983
1984 if test "${no_x-no}" = yes; then
1985 with_x=no
1986 else
1987 AC_DEFINE(HAVE_X11)
1988 X_LIB="-lXt -lX11";
1989 AC_SUBST(X_LIB)
1990
1991 ac_save_LDFLAGS="$LDFLAGS"
1992 LDFLAGS="-L$x_libraries $LDFLAGS"
1993
1994 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1995 dnl For HP-UX 10.20 it must be before -lSM -lICE
1996 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1997 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1998
1999 dnl Some systems need -lnsl -lsocket when testing for ICE.
2000 dnl The check above doesn't do this, try here (again). Also needed to get
2001 dnl them after Xdmcp. link.sh will remove them when not needed.
2002 dnl Check for other function than above to avoid the cached value
2003 AC_CHECK_LIB(ICE, IceOpenConnection,
2004 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2005
2006 dnl Check for -lXpm (needed for some versions of Motif)
2007 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2008 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2009 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2010
2011 dnl Check that the X11 header files don't use implicit declarations
2012 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2013 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002014 dnl -Werror is GCC only, others like Solaris Studio might not like it
2015 if test "$GCC" = yes; then
2016 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2017 else
2018 CFLAGS="$CFLAGS $X_CFLAGS"
2019 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002020 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2021 AC_MSG_RESULT(no),
2022 CFLAGS="$CFLAGS -Wno-implicit-int"
2023 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2024 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2025 AC_MSG_RESULT(test failed)
2026 )
2027 )
2028 CFLAGS=$cflags_save
2029
2030 LDFLAGS="$ac_save_LDFLAGS"
2031
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002032 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2033 AC_CACHE_VAL(ac_cv_small_wchar_t,
2034 [AC_TRY_RUN([
2035#include <X11/Xlib.h>
2036#if STDC_HEADERS
2037# include <stdlib.h>
2038# include <stddef.h>
2039#endif
2040 main()
2041 {
2042 if (sizeof(wchar_t) <= 2)
2043 exit(1);
2044 exit(0);
2045 }],
2046 ac_cv_small_wchar_t="no",
2047 ac_cv_small_wchar_t="yes",
2048 AC_MSG_ERROR(failed to compile test program))])
2049 AC_MSG_RESULT($ac_cv_small_wchar_t)
2050 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2051 AC_DEFINE(SMALL_WCHAR_T)
2052 fi
2053
Bram Moolenaar071d4272004-06-13 20:20:40 +00002054 fi
2055fi
2056
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002057test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002058
2059AC_MSG_CHECKING(--enable-gui argument)
2060AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002061 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk2/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002062
2063dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2064dnl Do not use character classes for portability with old tools.
2065enable_gui_canon=`echo "_$enable_gui" | \
2066 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2067
2068dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002069SKIP_GTK2=YES
2070SKIP_GNOME=YES
2071SKIP_MOTIF=YES
2072SKIP_ATHENA=YES
2073SKIP_NEXTAW=YES
2074SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002075SKIP_CARBON=YES
2076GUITYPE=NONE
2077
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002078if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002079 SKIP_PHOTON=
2080 case "$enable_gui_canon" in
2081 no) AC_MSG_RESULT(no GUI support)
2082 SKIP_PHOTON=YES ;;
2083 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2084 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2085 photon) AC_MSG_RESULT(Photon GUI support) ;;
2086 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2087 SKIP_PHOTON=YES ;;
2088 esac
2089
2090elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2091 SKIP_CARBON=
2092 case "$enable_gui_canon" in
2093 no) AC_MSG_RESULT(no GUI support)
2094 SKIP_CARBON=YES ;;
2095 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002096 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2097 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002098 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2099 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2100 SKIP_CARBON=YES ;;
2101 esac
2102
2103else
2104
Bram Moolenaar071d4272004-06-13 20:20:40 +00002105 case "$enable_gui_canon" in
2106 no|none) AC_MSG_RESULT(no GUI support) ;;
2107 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002108 SKIP_GTK2=
2109 SKIP_GNOME=
2110 SKIP_MOTIF=
2111 SKIP_ATHENA=
2112 SKIP_NEXTAW=
2113 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002114 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002115 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002116 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2117 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002118 SKIP_GTK2=;;
2119 motif) AC_MSG_RESULT(Motif GUI support)
2120 SKIP_MOTIF=;;
2121 athena) AC_MSG_RESULT(Athena GUI support)
2122 SKIP_ATHENA=;;
2123 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2124 SKIP_NEXTAW=;;
2125 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2126 esac
2127
2128fi
2129
Bram Moolenaar071d4272004-06-13 20:20:40 +00002130if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2131 -a "$enable_gui_canon" != "gnome2"; then
2132 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2133 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002134 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002135 , enable_gtk2_check="yes")
2136 AC_MSG_RESULT($enable_gtk2_check)
2137 if test "x$enable_gtk2_check" = "xno"; then
2138 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002139 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002140 fi
2141fi
2142
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002143if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002144 AC_MSG_CHECKING(whether or not to look for GNOME)
2145 AC_ARG_ENABLE(gnome-check,
2146 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2147 , enable_gnome_check="no")
2148 AC_MSG_RESULT($enable_gnome_check)
2149 if test "x$enable_gnome_check" = "xno"; then
2150 SKIP_GNOME=YES
2151 fi
2152fi
2153
2154if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2155 AC_MSG_CHECKING(whether or not to look for Motif)
2156 AC_ARG_ENABLE(motif-check,
2157 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2158 , enable_motif_check="yes")
2159 AC_MSG_RESULT($enable_motif_check)
2160 if test "x$enable_motif_check" = "xno"; then
2161 SKIP_MOTIF=YES
2162 fi
2163fi
2164
2165if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2166 AC_MSG_CHECKING(whether or not to look for Athena)
2167 AC_ARG_ENABLE(athena-check,
2168 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2169 , enable_athena_check="yes")
2170 AC_MSG_RESULT($enable_athena_check)
2171 if test "x$enable_athena_check" = "xno"; then
2172 SKIP_ATHENA=YES
2173 fi
2174fi
2175
2176if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2177 AC_MSG_CHECKING(whether or not to look for neXtaw)
2178 AC_ARG_ENABLE(nextaw-check,
2179 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2180 , enable_nextaw_check="yes")
2181 AC_MSG_RESULT($enable_nextaw_check);
2182 if test "x$enable_nextaw_check" = "xno"; then
2183 SKIP_NEXTAW=YES
2184 fi
2185fi
2186
2187if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2188 AC_MSG_CHECKING(whether or not to look for Carbon)
2189 AC_ARG_ENABLE(carbon-check,
2190 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2191 , enable_carbon_check="yes")
2192 AC_MSG_RESULT($enable_carbon_check);
2193 if test "x$enable_carbon_check" = "xno"; then
2194 SKIP_CARBON=YES
2195 fi
2196fi
2197
Bram Moolenaar843ee412004-06-30 16:16:41 +00002198
Bram Moolenaar071d4272004-06-13 20:20:40 +00002199if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2200 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002201 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002202 AC_MSG_RESULT(yes);
2203 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002204 if test "$VIMNAME" = "vim"; then
2205 VIMNAME=Vim
2206 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002207
Bram Moolenaar164fca32010-07-14 13:58:07 +02002208 if test "x$MACARCH" = "xboth"; then
2209 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2210 else
2211 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2212 fi
2213
Bram Moolenaar14716812006-05-04 21:54:08 +00002214 dnl Default install directory is not /usr/local
2215 if test x$prefix = xNONE; then
2216 prefix=/Applications
2217 fi
2218
2219 dnl Sorry for the hard coded default
2220 datadir='${prefix}/Vim.app/Contents/Resources'
2221
Bram Moolenaar071d4272004-06-13 20:20:40 +00002222 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002223 SKIP_GTK2=YES;
2224 SKIP_GNOME=YES;
2225 SKIP_MOTIF=YES;
2226 SKIP_ATHENA=YES;
2227 SKIP_NEXTAW=YES;
2228 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002229 SKIP_CARBON=YES
2230fi
2231
Bram Moolenaar071d4272004-06-13 20:20:40 +00002232dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002233dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002234dnl
2235dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002236dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002237dnl
2238AC_DEFUN(AM_PATH_GTK,
2239[
2240 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2241 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002242 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002243 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2244 no_gtk=""
2245 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2246 && $PKG_CONFIG --exists gtk+-2.0; then
2247 {
2248 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2249 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2250 dnl something like that.
2251 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002252 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002253 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2254 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2255 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2256 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2257 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2258 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2259 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2260 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002261 else
2262 no_gtk=yes
2263 fi
2264
2265 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2266 {
2267 ac_save_CFLAGS="$CFLAGS"
2268 ac_save_LIBS="$LIBS"
2269 CFLAGS="$CFLAGS $GTK_CFLAGS"
2270 LIBS="$LIBS $GTK_LIBS"
2271
2272 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002273 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002274 dnl
2275 rm -f conf.gtktest
2276 AC_TRY_RUN([
2277#include <gtk/gtk.h>
2278#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002279#if STDC_HEADERS
2280# include <stdlib.h>
2281# include <stddef.h>
2282#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002283
2284int
2285main ()
2286{
2287int major, minor, micro;
2288char *tmp_version;
2289
2290system ("touch conf.gtktest");
2291
2292/* HP/UX 9 (%@#!) writes to sscanf strings */
2293tmp_version = g_strdup("$min_gtk_version");
2294if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2295 printf("%s, bad version string\n", "$min_gtk_version");
2296 exit(1);
2297 }
2298
2299if ((gtk_major_version > major) ||
2300 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2301 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2302 (gtk_micro_version >= micro)))
2303{
2304 return 0;
2305}
2306return 1;
2307}
2308],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2309 CFLAGS="$ac_save_CFLAGS"
2310 LIBS="$ac_save_LIBS"
2311 }
2312 fi
2313 if test "x$no_gtk" = x ; then
2314 if test "x$enable_gtktest" = "xyes"; then
2315 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2316 else
2317 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2318 fi
2319 ifelse([$2], , :, [$2])
2320 else
2321 {
2322 AC_MSG_RESULT(no)
2323 GTK_CFLAGS=""
2324 GTK_LIBS=""
2325 ifelse([$3], , :, [$3])
2326 }
2327 fi
2328 }
2329 else
2330 GTK_CFLAGS=""
2331 GTK_LIBS=""
2332 ifelse([$3], , :, [$3])
2333 fi
2334 AC_SUBST(GTK_CFLAGS)
2335 AC_SUBST(GTK_LIBS)
2336 rm -f conf.gtktest
2337])
2338
2339dnl ---------------------------------------------------------------------------
2340dnl gnome
2341dnl ---------------------------------------------------------------------------
2342AC_DEFUN([GNOME_INIT_HOOK],
2343[
2344 AC_SUBST(GNOME_LIBS)
2345 AC_SUBST(GNOME_LIBDIR)
2346 AC_SUBST(GNOME_INCLUDEDIR)
2347
2348 AC_ARG_WITH(gnome-includes,
2349 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2350 [CFLAGS="$CFLAGS -I$withval"]
2351 )
2352
2353 AC_ARG_WITH(gnome-libs,
2354 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2355 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2356 )
2357
2358 AC_ARG_WITH(gnome,
2359 [ --with-gnome Specify prefix for GNOME files],
2360 if test x$withval = xyes; then
2361 want_gnome=yes
2362 ifelse([$1], [], :, [$1])
2363 else
2364 if test "x$withval" = xno; then
2365 want_gnome=no
2366 else
2367 want_gnome=yes
2368 LDFLAGS="$LDFLAGS -L$withval/lib"
2369 CFLAGS="$CFLAGS -I$withval/include"
2370 gnome_prefix=$withval/lib
2371 fi
2372 fi,
2373 want_gnome=yes)
2374
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002375 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002376 {
2377 AC_MSG_CHECKING(for libgnomeui-2.0)
2378 if $PKG_CONFIG --exists libgnomeui-2.0; then
2379 AC_MSG_RESULT(yes)
2380 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2381 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2382 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002383
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002384 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2385 dnl This might not be the right way but it works for me...
2386 AC_MSG_CHECKING(for FreeBSD)
2387 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2388 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002389 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002390 GNOME_LIBS="$GNOME_LIBS -pthread"
2391 else
2392 AC_MSG_RESULT(no)
2393 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002394 $1
2395 else
2396 AC_MSG_RESULT(not found)
2397 if test "x$2" = xfail; then
2398 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2399 fi
2400 fi
2401 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002402 fi
2403])
2404
2405AC_DEFUN([GNOME_INIT],[
2406 GNOME_INIT_HOOK([],fail)
2407])
2408
2409
2410dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002411dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002412dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002413if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002414
2415 AC_MSG_CHECKING(--disable-gtktest argument)
2416 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2417 , enable_gtktest=yes)
2418 if test "x$enable_gtktest" = "xyes" ; then
2419 AC_MSG_RESULT(gtk test enabled)
2420 else
2421 AC_MSG_RESULT(gtk test disabled)
2422 fi
2423
Bram Moolenaar071d4272004-06-13 20:20:40 +00002424 if test "X$PKG_CONFIG" = "X"; then
2425 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2426 fi
2427
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002428 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002429 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2430 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002431 AM_PATH_GTK(2.2.0,
2432 [GUI_LIB_LOC="$GTK_LIBDIR"
2433 GTK_LIBNAME="$GTK_LIBS"
2434 GUI_INC_LOC="$GTK_CFLAGS"], )
2435 if test "x$GTK_CFLAGS" != "x"; then
2436 SKIP_ATHENA=YES
2437 SKIP_NEXTAW=YES
2438 SKIP_MOTIF=YES
2439 GUITYPE=GTK
2440 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002441 fi
2442 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002443 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002444 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2445 || test "0$gtk_minor_version" -ge 2; then
2446 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2447 fi
2448 dnl
2449 dnl if GTK exists, then check for GNOME.
2450 dnl
2451 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002452 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002453 GNOME_INIT_HOOK([have_gnome=yes])
2454 if test "x$have_gnome" = xyes ; then
2455 AC_DEFINE(FEAT_GUI_GNOME)
2456 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2457 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002458 fi
2459 }
2460 fi
2461 fi
2462fi
2463
2464dnl Check for Motif include files location.
2465dnl The LAST one found is used, this makes the highest version to be used,
2466dnl e.g. when Motif1.2 and Motif2.0 are both present.
2467
2468if test -z "$SKIP_MOTIF"; then
2469 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"
2470 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2471 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2472
2473 AC_MSG_CHECKING(for location of Motif GUI includes)
2474 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2475 GUI_INC_LOC=
2476 for try in $gui_includes; do
2477 if test -f "$try/Xm/Xm.h"; then
2478 GUI_INC_LOC=$try
2479 fi
2480 done
2481 if test -n "$GUI_INC_LOC"; then
2482 if test "$GUI_INC_LOC" = /usr/include; then
2483 GUI_INC_LOC=
2484 AC_MSG_RESULT(in default path)
2485 else
2486 AC_MSG_RESULT($GUI_INC_LOC)
2487 fi
2488 else
2489 AC_MSG_RESULT(<not found>)
2490 SKIP_MOTIF=YES
2491 fi
2492fi
2493
2494dnl Check for Motif library files location. In the same order as the include
2495dnl files, to avoid a mixup if several versions are present
2496
2497if test -z "$SKIP_MOTIF"; then
2498 AC_MSG_CHECKING(--with-motif-lib argument)
2499 AC_ARG_WITH(motif-lib,
2500 [ --with-motif-lib=STRING Library for Motif ],
2501 [ MOTIF_LIBNAME="${withval}" ] )
2502
2503 if test -n "$MOTIF_LIBNAME"; then
2504 AC_MSG_RESULT($MOTIF_LIBNAME)
2505 GUI_LIB_LOC=
2506 else
2507 AC_MSG_RESULT(no)
2508
2509 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2510 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2511
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002512 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2513 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002514 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002515 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 +00002516 GUI_LIB_LOC=
2517 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002518 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002519 if test -f "$libtry"; then
2520 GUI_LIB_LOC=$try
2521 fi
2522 done
2523 done
2524 if test -n "$GUI_LIB_LOC"; then
2525 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002526 if test "$GUI_LIB_LOC" = /usr/lib \
2527 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2528 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002529 GUI_LIB_LOC=
2530 AC_MSG_RESULT(in default path)
2531 else
2532 if test -n "$GUI_LIB_LOC"; then
2533 AC_MSG_RESULT($GUI_LIB_LOC)
2534 if test "`(uname) 2>/dev/null`" = SunOS &&
2535 uname -r | grep '^5' >/dev/null; then
2536 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2537 fi
2538 fi
2539 fi
2540 MOTIF_LIBNAME=-lXm
2541 else
2542 AC_MSG_RESULT(<not found>)
2543 SKIP_MOTIF=YES
2544 fi
2545 fi
2546fi
2547
2548if test -z "$SKIP_MOTIF"; then
2549 SKIP_ATHENA=YES
2550 SKIP_NEXTAW=YES
2551 GUITYPE=MOTIF
2552 AC_SUBST(MOTIF_LIBNAME)
2553fi
2554
2555dnl Check if the Athena files can be found
2556
2557GUI_X_LIBS=
2558
2559if test -z "$SKIP_ATHENA"; then
2560 AC_MSG_CHECKING(if Athena header files can be found)
2561 cflags_save=$CFLAGS
2562 CFLAGS="$CFLAGS $X_CFLAGS"
2563 AC_TRY_COMPILE([
2564#include <X11/Intrinsic.h>
2565#include <X11/Xaw/Paned.h>], ,
2566 AC_MSG_RESULT(yes),
2567 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2568 CFLAGS=$cflags_save
2569fi
2570
2571if test -z "$SKIP_ATHENA"; then
2572 GUITYPE=ATHENA
2573fi
2574
2575if test -z "$SKIP_NEXTAW"; then
2576 AC_MSG_CHECKING(if neXtaw header files can be found)
2577 cflags_save=$CFLAGS
2578 CFLAGS="$CFLAGS $X_CFLAGS"
2579 AC_TRY_COMPILE([
2580#include <X11/Intrinsic.h>
2581#include <X11/neXtaw/Paned.h>], ,
2582 AC_MSG_RESULT(yes),
2583 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2584 CFLAGS=$cflags_save
2585fi
2586
2587if test -z "$SKIP_NEXTAW"; then
2588 GUITYPE=NEXTAW
2589fi
2590
2591if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2592 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2593 dnl Avoid adding it when it twice
2594 if test -n "$GUI_INC_LOC"; then
2595 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2596 fi
2597 if test -n "$GUI_LIB_LOC"; then
2598 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2599 fi
2600
2601 dnl Check for -lXext and then for -lXmu
2602 ldflags_save=$LDFLAGS
2603 LDFLAGS="$X_LIBS $LDFLAGS"
2604 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2605 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2606 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2607 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2608 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2609 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2610 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2611 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2612 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2613 if test -z "$SKIP_MOTIF"; then
2614 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2615 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2616 fi
2617 LDFLAGS=$ldflags_save
2618
2619 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2620 AC_MSG_CHECKING(for extra X11 defines)
2621 NARROW_PROTO=
2622 rm -fr conftestdir
2623 if mkdir conftestdir; then
2624 cd conftestdir
2625 cat > Imakefile <<'EOF'
2626acfindx:
2627 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2628EOF
2629 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2630 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2631 fi
2632 cd ..
2633 rm -fr conftestdir
2634 fi
2635 if test -z "$NARROW_PROTO"; then
2636 AC_MSG_RESULT(no)
2637 else
2638 AC_MSG_RESULT($NARROW_PROTO)
2639 fi
2640 AC_SUBST(NARROW_PROTO)
2641fi
2642
2643dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2644dnl use the X11 include path
2645if test "$enable_xsmp" = "yes"; then
2646 cppflags_save=$CPPFLAGS
2647 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2648 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2649 CPPFLAGS=$cppflags_save
2650fi
2651
2652
Bram Moolenaare667c952010-07-05 22:57:59 +02002653if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002654 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2655 cppflags_save=$CPPFLAGS
2656 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2657 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2658
2659 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2660 if test ! "$enable_xim" = "no"; then
2661 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2662 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2663 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002664 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002665 fi
2666 CPPFLAGS=$cppflags_save
2667
2668 dnl automatically enable XIM when hangul input isn't enabled
2669 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2670 -a "x$GUITYPE" != "xNONE" ; then
2671 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2672 enable_xim="yes"
2673 fi
2674fi
2675
2676if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2677 cppflags_save=$CPPFLAGS
2678 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002679dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2680 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2681 AC_TRY_COMPILE([
2682#include <X11/Intrinsic.h>
2683#include <X11/Xmu/Editres.h>],
2684 [int i; i = 0;],
2685 AC_MSG_RESULT(yes)
2686 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2687 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002688 CPPFLAGS=$cppflags_save
2689fi
2690
2691dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2692if test -z "$SKIP_MOTIF"; then
2693 cppflags_save=$CPPFLAGS
2694 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002695 if test "$zOSUnix" = "yes"; then
2696 xmheader="Xm/Xm.h"
2697 else
2698 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002699 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002700 fi
2701 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002702
Bram Moolenaar77c19352012-06-13 19:19:41 +02002703 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002704 dnl Solaris uses XpmAttributes_21, very annoying.
2705 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2706 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2707 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2708 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2709 )
2710 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002711 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002712 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002713 CPPFLAGS=$cppflags_save
2714fi
2715
2716if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2717 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2718 enable_xim="no"
2719fi
2720if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2721 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2722 enable_fontset="no"
2723fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002724if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002725 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2726 enable_fontset="no"
2727fi
2728
Bram Moolenaar071d4272004-06-13 20:20:40 +00002729if test -z "$SKIP_PHOTON"; then
2730 GUITYPE=PHOTONGUI
2731fi
2732
2733AC_SUBST(GUI_INC_LOC)
2734AC_SUBST(GUI_LIB_LOC)
2735AC_SUBST(GUITYPE)
2736AC_SUBST(GUI_X_LIBS)
2737
2738if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2739 AC_MSG_ERROR([cannot use workshop without Motif])
2740fi
2741
2742dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2743if test "$enable_xim" = "yes"; then
2744 AC_DEFINE(FEAT_XIM)
2745fi
2746if test "$enable_fontset" = "yes"; then
2747 AC_DEFINE(FEAT_XFONTSET)
2748fi
2749
2750
2751dnl ---------------------------------------------------------------------------
2752dnl end of GUI-checking
2753dnl ---------------------------------------------------------------------------
2754
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002755dnl Check for Cygwin, which needs an extra source file if not using X11
2756AC_MSG_CHECKING(for CYGWIN environment)
2757case `uname` in
2758 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2759 AC_MSG_CHECKING(for CYGWIN clipboard support)
2760 if test "x$with_x" = "xno" ; then
2761 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2762 AC_MSG_RESULT(yes)
2763 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2764 else
2765 AC_MSG_RESULT(no - using X11)
2766 fi ;;
2767
2768 *) CYGWIN=no; AC_MSG_RESULT(no);;
2769esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002770
2771dnl Only really enable hangul input when GUI and XFONTSET are available
2772if test "$enable_hangulinput" = "yes"; then
2773 if test "x$GUITYPE" = "xNONE"; then
2774 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2775 enable_hangulinput=no
2776 else
2777 AC_DEFINE(FEAT_HANGULIN)
2778 HANGULIN_SRC=hangulin.c
2779 AC_SUBST(HANGULIN_SRC)
2780 HANGULIN_OBJ=objects/hangulin.o
2781 AC_SUBST(HANGULIN_OBJ)
2782 fi
2783fi
2784
2785dnl Checks for libraries and include files.
2786
Bram Moolenaar446cb832008-06-24 21:56:24 +00002787AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2788 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01002789 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002790#include "confdefs.h"
2791#include <ctype.h>
2792#if STDC_HEADERS
2793# include <stdlib.h>
2794# include <stddef.h>
2795#endif
2796main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01002797 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002798 vim_cv_toupper_broken=yes
2799 ],[
2800 vim_cv_toupper_broken=no
2801 ],[
2802 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2803 ])])
2804
2805if test "x$vim_cv_toupper_broken" = "xyes" ; then
2806 AC_DEFINE(BROKEN_TOUPPER)
2807fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002808
2809AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002810AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002811 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2812 AC_MSG_RESULT(no))
2813
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002814AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2815AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2816 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2817 AC_MSG_RESULT(no))
2818
Bram Moolenaar071d4272004-06-13 20:20:40 +00002819dnl Checks for header files.
2820AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2821dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2822if test "$HAS_ELF" = 1; then
2823 AC_CHECK_LIB(elf, main)
2824fi
2825
2826AC_HEADER_DIRENT
2827
Bram Moolenaar071d4272004-06-13 20:20:40 +00002828dnl If sys/wait.h is not found it might still exist but not be POSIX
2829dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2830if test $ac_cv_header_sys_wait_h = no; then
2831 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2832 AC_TRY_COMPILE([#include <sys/wait.h>],
2833 [union wait xx, yy; xx = yy],
2834 AC_MSG_RESULT(yes)
2835 AC_DEFINE(HAVE_SYS_WAIT_H)
2836 AC_DEFINE(HAVE_UNION_WAIT),
2837 AC_MSG_RESULT(no))
2838fi
2839
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002840AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2841 sys/select.h sys/utsname.h termcap.h fcntl.h \
2842 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2843 termio.h iconv.h inttypes.h langinfo.h math.h \
2844 unistd.h stropts.h errno.h sys/resource.h \
2845 sys/systeminfo.h locale.h sys/stream.h termios.h \
2846 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2847 utime.h sys/param.h libintl.h libgen.h \
2848 util/debug.h util/msg18n.h frame.h sys/acl.h \
2849 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002850
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002851dnl sys/ptem.h depends on sys/stream.h on Solaris
2852AC_CHECK_HEADERS(sys/ptem.h, [], [],
2853[#if defined HAVE_SYS_STREAM_H
2854# include <sys/stream.h>
2855#endif])
2856
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002857dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2858AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2859[#if defined HAVE_SYS_PARAM_H
2860# include <sys/param.h>
2861#endif])
2862
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002863
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002864dnl pthread_np.h may exist but can only be used after including pthread.h
2865AC_MSG_CHECKING([for pthread_np.h])
2866AC_TRY_COMPILE([
2867#include <pthread.h>
2868#include <pthread_np.h>],
2869 [int i; i = 0;],
2870 AC_MSG_RESULT(yes)
2871 AC_DEFINE(HAVE_PTHREAD_NP_H),
2872 AC_MSG_RESULT(no))
2873
Bram Moolenaare344bea2005-09-01 20:46:49 +00002874AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002875if test "x$MACOSX" = "xyes"; then
2876 dnl The strings.h file on OS/X contains a warning and nothing useful.
2877 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2878else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002879
2880dnl Check if strings.h and string.h can both be included when defined.
2881AC_MSG_CHECKING([if strings.h can be included after string.h])
2882cppflags_save=$CPPFLAGS
2883CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2884AC_TRY_COMPILE([
2885#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2886# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2887 /* but don't do it on AIX 5.1 (Uribarri) */
2888#endif
2889#ifdef HAVE_XM_XM_H
2890# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2891#endif
2892#ifdef HAVE_STRING_H
2893# include <string.h>
2894#endif
2895#if defined(HAVE_STRINGS_H)
2896# include <strings.h>
2897#endif
2898 ], [int i; i = 0;],
2899 AC_MSG_RESULT(yes),
2900 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2901 AC_MSG_RESULT(no))
2902CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002903fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002904
2905dnl Checks for typedefs, structures, and compiler characteristics.
2906AC_PROG_GCC_TRADITIONAL
2907AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002908AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002909AC_TYPE_MODE_T
2910AC_TYPE_OFF_T
2911AC_TYPE_PID_T
2912AC_TYPE_SIZE_T
2913AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002914AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002915
Bram Moolenaar071d4272004-06-13 20:20:40 +00002916AC_HEADER_TIME
2917AC_CHECK_TYPE(ino_t, long)
2918AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002919AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002920
2921AC_MSG_CHECKING(for rlim_t)
2922if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2923 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2924else
2925 AC_EGREP_CPP(dnl
2926changequote(<<,>>)dnl
2927<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2928changequote([,]),
2929 [
2930#include <sys/types.h>
2931#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002932# include <stdlib.h>
2933# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002934#endif
2935#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002936# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002937#endif
2938 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2939 AC_MSG_RESULT($ac_cv_type_rlim_t)
2940fi
2941if test $ac_cv_type_rlim_t = no; then
2942 cat >> confdefs.h <<\EOF
2943#define rlim_t unsigned long
2944EOF
2945fi
2946
2947AC_MSG_CHECKING(for stack_t)
2948if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2949 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2950else
2951 AC_EGREP_CPP(stack_t,
2952 [
2953#include <sys/types.h>
2954#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002955# include <stdlib.h>
2956# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002957#endif
2958#include <signal.h>
2959 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2960 AC_MSG_RESULT($ac_cv_type_stack_t)
2961fi
2962if test $ac_cv_type_stack_t = no; then
2963 cat >> confdefs.h <<\EOF
2964#define stack_t struct sigaltstack
2965EOF
2966fi
2967
2968dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2969AC_MSG_CHECKING(whether stack_t has an ss_base field)
2970AC_TRY_COMPILE([
2971#include <sys/types.h>
2972#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002973# include <stdlib.h>
2974# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002975#endif
2976#include <signal.h>
2977#include "confdefs.h"
2978 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2979 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2980 AC_MSG_RESULT(no))
2981
2982olibs="$LIBS"
2983AC_MSG_CHECKING(--with-tlib argument)
2984AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2985if test -n "$with_tlib"; then
2986 AC_MSG_RESULT($with_tlib)
2987 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002988 AC_MSG_CHECKING(for linking with $with_tlib library)
2989 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2990 dnl Need to check for tgetent() below.
2991 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002992else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002993 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002994 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2995 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002996 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002997 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002998 dnl Older versions of ncurses have bugs, get a new one!
2999 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003000 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00003001 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003002 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3003 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003004 esac
3005 for libname in $tlibs; do
3006 AC_CHECK_LIB(${libname}, tgetent,,)
3007 if test "x$olibs" != "x$LIBS"; then
3008 dnl It's possible that a library is found but it doesn't work
3009 dnl e.g., shared library that cannot be found
3010 dnl compile and run a test program to be sure
3011 AC_TRY_RUN([
3012#ifdef HAVE_TERMCAP_H
3013# include <termcap.h>
3014#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003015#if STDC_HEADERS
3016# include <stdlib.h>
3017# include <stddef.h>
3018#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003019main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3020 res="OK", res="FAIL", res="FAIL")
3021 if test "$res" = "OK"; then
3022 break
3023 fi
3024 AC_MSG_RESULT($libname library is not usable)
3025 LIBS="$olibs"
3026 fi
3027 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003028 if test "x$olibs" = "x$LIBS"; then
3029 AC_MSG_RESULT(no terminal library found)
3030 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003031fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003032
3033if test "x$olibs" = "x$LIBS"; then
3034 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003035 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003036 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3037 AC_MSG_RESULT(yes),
3038 AC_MSG_ERROR([NOT FOUND!
3039 You need to install a terminal library; for example ncurses.
3040 Or specify the name of the library with --with-tlib.]))
3041fi
3042
Bram Moolenaar446cb832008-06-24 21:56:24 +00003043AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3044 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003045 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003046#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003047#ifdef HAVE_TERMCAP_H
3048# include <termcap.h>
3049#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003050#ifdef HAVE_STRING_H
3051# include <string.h>
3052#endif
3053#if STDC_HEADERS
3054# include <stdlib.h>
3055# include <stddef.h>
3056#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003057main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003058{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003059 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003060 vim_cv_terminfo=no
3061 ],[
3062 vim_cv_terminfo=yes
3063 ],[
3064 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3065 ])
3066 ])
3067
3068if test "x$vim_cv_terminfo" = "xyes" ; then
3069 AC_DEFINE(TERMINFO)
3070fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003071
3072if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003073 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3074 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003075 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003076#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003077#ifdef HAVE_TERMCAP_H
3078# include <termcap.h>
3079#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003080#if STDC_HEADERS
3081# include <stdlib.h>
3082# include <stddef.h>
3083#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003084main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003085{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003086 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003087 vim_cv_tgent=zero
3088 ],[
3089 vim_cv_tgent=non-zero
3090 ],[
3091 AC_MSG_ERROR(failed to compile test program.)
3092 ])
3093 ])
3094
3095 if test "x$vim_cv_tgent" = "xzero" ; then
3096 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3097 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003098fi
3099
3100AC_MSG_CHECKING(whether termcap.h contains ospeed)
3101AC_TRY_LINK([
3102#ifdef HAVE_TERMCAP_H
3103# include <termcap.h>
3104#endif
3105 ], [ospeed = 20000],
3106 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3107 [AC_MSG_RESULT(no)
3108 AC_MSG_CHECKING(whether ospeed can be extern)
3109 AC_TRY_LINK([
3110#ifdef HAVE_TERMCAP_H
3111# include <termcap.h>
3112#endif
3113extern short ospeed;
3114 ], [ospeed = 20000],
3115 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3116 AC_MSG_RESULT(no))]
3117 )
3118
3119AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3120AC_TRY_LINK([
3121#ifdef HAVE_TERMCAP_H
3122# include <termcap.h>
3123#endif
3124 ], [if (UP == 0 && BC == 0) PC = 1],
3125 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3126 [AC_MSG_RESULT(no)
3127 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3128 AC_TRY_LINK([
3129#ifdef HAVE_TERMCAP_H
3130# include <termcap.h>
3131#endif
3132extern char *UP, *BC, PC;
3133 ], [if (UP == 0 && BC == 0) PC = 1],
3134 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3135 AC_MSG_RESULT(no))]
3136 )
3137
3138AC_MSG_CHECKING(whether tputs() uses outfuntype)
3139AC_TRY_COMPILE([
3140#ifdef HAVE_TERMCAP_H
3141# include <termcap.h>
3142#endif
3143 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3144 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3145 AC_MSG_RESULT(no))
3146
3147dnl On some SCO machines sys/select redefines struct timeval
3148AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3149AC_TRY_COMPILE([
3150#include <sys/types.h>
3151#include <sys/time.h>
3152#include <sys/select.h>], ,
3153 AC_MSG_RESULT(yes)
3154 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3155 AC_MSG_RESULT(no))
3156
3157dnl AC_DECL_SYS_SIGLIST
3158
3159dnl Checks for pty.c (copied from screen) ==========================
3160AC_MSG_CHECKING(for /dev/ptc)
3161if test -r /dev/ptc; then
3162 AC_DEFINE(HAVE_DEV_PTC)
3163 AC_MSG_RESULT(yes)
3164else
3165 AC_MSG_RESULT(no)
3166fi
3167
3168AC_MSG_CHECKING(for SVR4 ptys)
3169if test -c /dev/ptmx ; then
3170 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3171 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3172 AC_MSG_RESULT(no))
3173else
3174 AC_MSG_RESULT(no)
3175fi
3176
3177AC_MSG_CHECKING(for ptyranges)
3178if test -d /dev/ptym ; then
3179 pdir='/dev/ptym'
3180else
3181 pdir='/dev'
3182fi
3183dnl SCO uses ptyp%d
3184AC_EGREP_CPP(yes,
3185[#ifdef M_UNIX
3186 yes;
3187#endif
3188 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3189dnl if test -c /dev/ptyp19; then
3190dnl ptys=`echo /dev/ptyp??`
3191dnl else
3192dnl ptys=`echo $pdir/pty??`
3193dnl fi
3194if test "$ptys" != "$pdir/pty??" ; then
3195 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3196 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3197 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3198 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3199 AC_MSG_RESULT([$p0 / $p1])
3200else
3201 AC_MSG_RESULT([don't know])
3202fi
3203
3204dnl **** pty mode/group handling ****
3205dnl
3206dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003207rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003208AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3209 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003210 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003211#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003212#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003213#if STDC_HEADERS
3214# include <stdlib.h>
3215# include <stddef.h>
3216#endif
3217#ifdef HAVE_UNISTD_H
3218#include <unistd.h>
3219#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003220#include <sys/stat.h>
3221#include <stdio.h>
3222main()
3223{
3224 struct stat sb;
3225 char *x,*ttyname();
3226 int om, m;
3227 FILE *fp;
3228
3229 if (!(x = ttyname(0))) exit(1);
3230 if (stat(x, &sb)) exit(1);
3231 om = sb.st_mode;
3232 if (om & 002) exit(0);
3233 m = system("mesg y");
3234 if (m == -1 || m == 127) exit(1);
3235 if (stat(x, &sb)) exit(1);
3236 m = sb.st_mode;
3237 if (chmod(x, om)) exit(1);
3238 if (m & 002) exit(0);
3239 if (sb.st_gid == getgid()) exit(1);
3240 if (!(fp=fopen("conftest_grp", "w")))
3241 exit(1);
3242 fprintf(fp, "%d\n", sb.st_gid);
3243 fclose(fp);
3244 exit(0);
3245}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003246 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003247 if test -f conftest_grp; then
3248 vim_cv_tty_group=`cat conftest_grp`
3249 if test "x$vim_cv_tty_mode" = "x" ; then
3250 vim_cv_tty_mode=0620
3251 fi
3252 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3253 else
3254 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003255 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003256 fi
3257 ],[
3258 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003259 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003260 ],[
3261 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3262 ])
3263 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003264rm -f conftest_grp
3265
Bram Moolenaar446cb832008-06-24 21:56:24 +00003266if test "x$vim_cv_tty_group" != "xworld" ; then
3267 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3268 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003269 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 +00003270 else
3271 AC_DEFINE(PTYMODE, 0620)
3272 fi
3273fi
3274
Bram Moolenaar071d4272004-06-13 20:20:40 +00003275dnl Checks for library functions. ===================================
3276
3277AC_TYPE_SIGNAL
3278
3279dnl find out what to use at the end of a signal function
3280if test $ac_cv_type_signal = void; then
3281 AC_DEFINE(SIGRETURN, [return])
3282else
3283 AC_DEFINE(SIGRETURN, [return 0])
3284fi
3285
3286dnl check if struct sigcontext is defined (used for SGI only)
3287AC_MSG_CHECKING(for struct sigcontext)
3288AC_TRY_COMPILE([
3289#include <signal.h>
3290test_sig()
3291{
3292 struct sigcontext *scont;
3293 scont = (struct sigcontext *)0;
3294 return 1;
3295} ], ,
3296 AC_MSG_RESULT(yes)
3297 AC_DEFINE(HAVE_SIGCONTEXT),
3298 AC_MSG_RESULT(no))
3299
3300dnl tricky stuff: try to find out if getcwd() is implemented with
3301dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003302AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3303 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003304 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003305#include "confdefs.h"
3306#ifdef HAVE_UNISTD_H
3307#include <unistd.h>
3308#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003309char *dagger[] = { "IFS=pwd", 0 };
3310main()
3311{
3312 char buffer[500];
3313 extern char **environ;
3314 environ = dagger;
3315 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003316}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003317 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003318 vim_cv_getcwd_broken=no
3319 ],[
3320 vim_cv_getcwd_broken=yes
3321 ],[
3322 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3323 ])
3324 ])
3325
3326if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3327 AC_DEFINE(BAD_GETCWD)
3328fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003329
Bram Moolenaar25153e12010-02-24 14:47:08 +01003330dnl Check for functions in one big call, to reduce the size of configure.
3331dnl Can only be used for functions that do not require any include.
3332AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003333 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003334 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003335 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003336 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003337 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3338 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003339AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003340
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003341dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3342dnl appropriate, so that off_t is 64 bits when needed.
3343AC_SYS_LARGEFILE
3344
Bram Moolenaar071d4272004-06-13 20:20:40 +00003345dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3346AC_MSG_CHECKING(for st_blksize)
3347AC_TRY_COMPILE(
3348[#include <sys/types.h>
3349#include <sys/stat.h>],
3350[ struct stat st;
3351 int n;
3352
3353 stat("/", &st);
3354 n = (int)st.st_blksize;],
3355 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3356 AC_MSG_RESULT(no))
3357
Bram Moolenaar446cb832008-06-24 21:56:24 +00003358AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3359 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003360 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003361#include "confdefs.h"
3362#if STDC_HEADERS
3363# include <stdlib.h>
3364# include <stddef.h>
3365#endif
3366#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003367#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003368main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003369 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003370 vim_cv_stat_ignores_slash=yes
3371 ],[
3372 vim_cv_stat_ignores_slash=no
3373 ],[
3374 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3375 ])
3376 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003377
Bram Moolenaar446cb832008-06-24 21:56:24 +00003378if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3379 AC_DEFINE(STAT_IGNORES_SLASH)
3380fi
3381
Bram Moolenaar071d4272004-06-13 20:20:40 +00003382dnl Link with iconv for charset translation, if not found without library.
3383dnl check for iconv() requires including iconv.h
3384dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3385dnl has been installed.
3386AC_MSG_CHECKING(for iconv_open())
3387save_LIBS="$LIBS"
3388LIBS="$LIBS -liconv"
3389AC_TRY_LINK([
3390#ifdef HAVE_ICONV_H
3391# include <iconv.h>
3392#endif
3393 ], [iconv_open("fr", "to");],
3394 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3395 LIBS="$save_LIBS"
3396 AC_TRY_LINK([
3397#ifdef HAVE_ICONV_H
3398# include <iconv.h>
3399#endif
3400 ], [iconv_open("fr", "to");],
3401 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3402 AC_MSG_RESULT(no)))
3403
3404
3405AC_MSG_CHECKING(for nl_langinfo(CODESET))
3406AC_TRY_LINK([
3407#ifdef HAVE_LANGINFO_H
3408# include <langinfo.h>
3409#endif
3410], [char *cs = nl_langinfo(CODESET);],
3411 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3412 AC_MSG_RESULT(no))
3413
Bram Moolenaar446cb832008-06-24 21:56:24 +00003414dnl Need various functions for floating point support. Only enable
3415dnl floating point when they are all present.
3416AC_CHECK_LIB(m, strtod)
3417AC_MSG_CHECKING([for strtod() and other floating point functions])
3418AC_TRY_LINK([
3419#ifdef HAVE_MATH_H
3420# include <math.h>
3421#endif
3422#if STDC_HEADERS
3423# include <stdlib.h>
3424# include <stddef.h>
3425#endif
3426], [char *s; double d;
3427 d = strtod("1.1", &s);
3428 d = fabs(1.11);
3429 d = ceil(1.11);
3430 d = floor(1.11);
3431 d = log10(1.11);
3432 d = pow(1.11, 2.22);
3433 d = sqrt(1.11);
3434 d = sin(1.11);
3435 d = cos(1.11);
3436 d = atan(1.11);
3437 ],
3438 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3439 AC_MSG_RESULT(no))
3440
Bram Moolenaar071d4272004-06-13 20:20:40 +00003441dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3442dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003443dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003444AC_MSG_CHECKING(--disable-acl argument)
3445AC_ARG_ENABLE(acl,
3446 [ --disable-acl Don't check for ACL support.],
3447 , [enable_acl="yes"])
3448if test "$enable_acl" = "yes"; then
3449AC_MSG_RESULT(no)
3450AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3451 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3452 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3453
3454AC_MSG_CHECKING(for POSIX ACL support)
3455AC_TRY_LINK([
3456#include <sys/types.h>
3457#ifdef HAVE_SYS_ACL_H
3458# include <sys/acl.h>
3459#endif
3460acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3461 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3462 acl_free(acl);],
3463 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3464 AC_MSG_RESULT(no))
3465
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003466AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003467AC_MSG_CHECKING(for Solaris ACL support)
3468AC_TRY_LINK([
3469#ifdef HAVE_SYS_ACL_H
3470# include <sys/acl.h>
3471#endif], [acl("foo", GETACLCNT, 0, NULL);
3472 ],
3473 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003474 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003475
3476AC_MSG_CHECKING(for AIX ACL support)
3477AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003478#if STDC_HEADERS
3479# include <stdlib.h>
3480# include <stddef.h>
3481#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003482#ifdef HAVE_SYS_ACL_H
3483# include <sys/acl.h>
3484#endif
3485#ifdef HAVE_SYS_ACCESS_H
3486# include <sys/access.h>
3487#endif
3488#define _ALL_SOURCE
3489
3490#include <sys/stat.h>
3491
3492int aclsize;
3493struct acl *aclent;], [aclsize = sizeof(struct acl);
3494 aclent = (void *)malloc(aclsize);
3495 statacl("foo", STX_NORMAL, aclent, aclsize);
3496 ],
3497 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3498 AC_MSG_RESULT(no))
3499else
3500 AC_MSG_RESULT(yes)
3501fi
3502
3503AC_MSG_CHECKING(--disable-gpm argument)
3504AC_ARG_ENABLE(gpm,
3505 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3506 [enable_gpm="yes"])
3507
3508if test "$enable_gpm" = "yes"; then
3509 AC_MSG_RESULT(no)
3510 dnl Checking if gpm support can be compiled
3511 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3512 [olibs="$LIBS" ; LIBS="-lgpm"]
3513 AC_TRY_LINK(
3514 [#include <gpm.h>
3515 #include <linux/keyboard.h>],
3516 [Gpm_GetLibVersion(NULL);],
3517 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3518 dnl FEAT_MOUSE_GPM if mouse support is included
3519 [vi_cv_have_gpm=yes],
3520 [vi_cv_have_gpm=no])
3521 [LIBS="$olibs"]
3522 )
3523 if test $vi_cv_have_gpm = yes; then
3524 LIBS="$LIBS -lgpm"
3525 AC_DEFINE(HAVE_GPM)
3526 fi
3527else
3528 AC_MSG_RESULT(yes)
3529fi
3530
Bram Moolenaar446cb832008-06-24 21:56:24 +00003531AC_MSG_CHECKING(--disable-sysmouse argument)
3532AC_ARG_ENABLE(sysmouse,
3533 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3534 [enable_sysmouse="yes"])
3535
3536if test "$enable_sysmouse" = "yes"; then
3537 AC_MSG_RESULT(no)
3538 dnl Checking if sysmouse support can be compiled
3539 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3540 dnl defines FEAT_SYSMOUSE if mouse support is included
3541 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3542 AC_TRY_LINK(
3543 [#include <sys/consio.h>
3544 #include <signal.h>
3545 #include <sys/fbio.h>],
3546 [struct mouse_info mouse;
3547 mouse.operation = MOUSE_MODE;
3548 mouse.operation = MOUSE_SHOW;
3549 mouse.u.mode.mode = 0;
3550 mouse.u.mode.signal = SIGUSR2;],
3551 [vi_cv_have_sysmouse=yes],
3552 [vi_cv_have_sysmouse=no])
3553 )
3554 if test $vi_cv_have_sysmouse = yes; then
3555 AC_DEFINE(HAVE_SYSMOUSE)
3556 fi
3557else
3558 AC_MSG_RESULT(yes)
3559fi
3560
Bram Moolenaarf05da212009-11-17 16:13:15 +00003561dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3562AC_MSG_CHECKING(for FD_CLOEXEC)
3563AC_TRY_COMPILE(
3564[#if HAVE_FCNTL_H
3565# include <fcntl.h>
3566#endif],
3567[ int flag = FD_CLOEXEC;],
3568 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3569 AC_MSG_RESULT(not usable))
3570
Bram Moolenaar071d4272004-06-13 20:20:40 +00003571dnl rename needs to be checked separately to work on Nextstep with cc
3572AC_MSG_CHECKING(for rename)
3573AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3574 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3575 AC_MSG_RESULT(no))
3576
3577dnl sysctl() may exist but not the arguments we use
3578AC_MSG_CHECKING(for sysctl)
3579AC_TRY_COMPILE(
3580[#include <sys/types.h>
3581#include <sys/sysctl.h>],
3582[ int mib[2], r;
3583 size_t len;
3584
3585 mib[0] = CTL_HW;
3586 mib[1] = HW_USERMEM;
3587 len = sizeof(r);
3588 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3589 ],
3590 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3591 AC_MSG_RESULT(not usable))
3592
3593dnl sysinfo() may exist but not be Linux compatible
3594AC_MSG_CHECKING(for sysinfo)
3595AC_TRY_COMPILE(
3596[#include <sys/types.h>
3597#include <sys/sysinfo.h>],
3598[ struct sysinfo sinfo;
3599 int t;
3600
3601 (void)sysinfo(&sinfo);
3602 t = sinfo.totalram;
3603 ],
3604 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3605 AC_MSG_RESULT(not usable))
3606
Bram Moolenaar914572a2007-05-01 11:37:47 +00003607dnl struct sysinfo may have the mem_unit field or not
3608AC_MSG_CHECKING(for sysinfo.mem_unit)
3609AC_TRY_COMPILE(
3610[#include <sys/types.h>
3611#include <sys/sysinfo.h>],
3612[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003613 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003614 ],
3615 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3616 AC_MSG_RESULT(no))
3617
Bram Moolenaar071d4272004-06-13 20:20:40 +00003618dnl sysconf() may exist but not support what we want to use
3619AC_MSG_CHECKING(for sysconf)
3620AC_TRY_COMPILE(
3621[#include <unistd.h>],
3622[ (void)sysconf(_SC_PAGESIZE);
3623 (void)sysconf(_SC_PHYS_PAGES);
3624 ],
3625 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3626 AC_MSG_RESULT(not usable))
3627
Bram Moolenaar914703b2010-05-31 21:59:46 +02003628AC_CHECK_SIZEOF([int])
3629AC_CHECK_SIZEOF([long])
3630AC_CHECK_SIZEOF([time_t])
3631AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003632
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003633dnl Use different names to avoid clashing with other header files.
3634AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3635AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3636
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003637dnl Make sure that uint32_t is really 32 bits unsigned.
3638AC_MSG_CHECKING([uint32_t is 32 bits])
3639AC_TRY_RUN([
3640#ifdef HAVE_STDINT_H
3641# include <stdint.h>
3642#endif
3643#ifdef HAVE_INTTYPES_H
3644# include <inttypes.h>
3645#endif
3646main() {
3647 uint32_t nr1 = (uint32_t)-1;
3648 uint32_t nr2 = (uint32_t)0xffffffffUL;
3649 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3650 exit(0);
3651}],
3652AC_MSG_RESULT(ok),
3653AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003654AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003655
Bram Moolenaar446cb832008-06-24 21:56:24 +00003656dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3657dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3658
Bram Moolenaar071d4272004-06-13 20:20:40 +00003659[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003660#include "confdefs.h"
3661#ifdef HAVE_STRING_H
3662# include <string.h>
3663#endif
3664#if STDC_HEADERS
3665# include <stdlib.h>
3666# include <stddef.h>
3667#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003668main() {
3669 char buf[10];
3670 strcpy(buf, "abcdefghi");
3671 mch_memmove(buf, buf + 2, 3);
3672 if (strncmp(buf, "ababcf", 6))
3673 exit(1);
3674 strcpy(buf, "abcdefghi");
3675 mch_memmove(buf + 2, buf, 3);
3676 if (strncmp(buf, "cdedef", 6))
3677 exit(1);
3678 exit(0); /* libc version works properly. */
3679}']
3680
Bram Moolenaar446cb832008-06-24 21:56:24 +00003681AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3682 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003683 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 +00003684 [
3685 vim_cv_memmove_handles_overlap=yes
3686 ],[
3687 vim_cv_memmove_handles_overlap=no
3688 ],[
3689 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3690 ])
3691 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003692
Bram Moolenaar446cb832008-06-24 21:56:24 +00003693if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3694 AC_DEFINE(USEMEMMOVE)
3695else
3696 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3697 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003698 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 +00003699 [
3700 vim_cv_bcopy_handles_overlap=yes
3701 ],[
3702 vim_cv_bcopy_handles_overlap=no
3703 ],[
3704 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3705 ])
3706 ])
3707
3708 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3709 AC_DEFINE(USEBCOPY)
3710 else
3711 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3712 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003713 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 +00003714 [
3715 vim_cv_memcpy_handles_overlap=yes
3716 ],[
3717 vim_cv_memcpy_handles_overlap=no
3718 ],[
3719 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3720 ])
3721 ])
3722
3723 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3724 AC_DEFINE(USEMEMCPY)
3725 fi
3726 fi
3727fi
3728
Bram Moolenaar071d4272004-06-13 20:20:40 +00003729
3730dnl Check for multibyte locale functions
3731dnl Find out if _Xsetlocale() is supported by libX11.
3732dnl Check if X_LOCALE should be defined.
3733
3734if test "$enable_multibyte" = "yes"; then
3735 cflags_save=$CFLAGS
3736 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003737 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003738 CFLAGS="$CFLAGS -I$x_includes"
3739 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3740 AC_MSG_CHECKING(whether X_LOCALE needed)
3741 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3742 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3743 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3744 AC_MSG_RESULT(no))
3745 fi
3746 CFLAGS=$cflags_save
3747 LDFLAGS=$ldflags_save
3748fi
3749
3750dnl Link with xpg4, it is said to make Korean locale working
3751AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3752
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003753dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003754dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003755dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003756dnl -t for typedefs (many ctags have this)
3757dnl -s for static functions (Elvis ctags only?)
3758dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3759dnl -i+m to test for older Exuberant ctags
3760AC_MSG_CHECKING(how to create tags)
3761test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003762if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003763 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003764elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3765 TAGPRG="exctags -I INIT+ --fields=+S"
3766elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3767 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003768else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003769 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003770 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3771 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3772 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3773 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3774 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3775 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3776 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3777fi
3778test -f tags.save && mv tags.save tags
3779AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3780
3781dnl Check how we can run man with a section number
3782AC_MSG_CHECKING(how to run man with a section nr)
3783MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003784(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 +00003785AC_MSG_RESULT($MANDEF)
3786if test "$MANDEF" = "man -s"; then
3787 AC_DEFINE(USEMAN_S)
3788fi
3789
3790dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003791dnl We take care to base this on an empty LIBS: on some systems libelf would be
3792dnl in LIBS and implicitly take along libintl. The final LIBS would then not
3793dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003794AC_MSG_CHECKING(--disable-nls argument)
3795AC_ARG_ENABLE(nls,
3796 [ --disable-nls Don't support NLS (gettext()).], ,
3797 [enable_nls="yes"])
3798
3799if test "$enable_nls" = "yes"; then
3800 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003801
3802 INSTALL_LANGS=install-languages
3803 AC_SUBST(INSTALL_LANGS)
3804 INSTALL_TOOL_LANGS=install-tool-languages
3805 AC_SUBST(INSTALL_TOOL_LANGS)
3806
Bram Moolenaar071d4272004-06-13 20:20:40 +00003807 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3808 AC_MSG_CHECKING([for NLS])
3809 if test -f po/Makefile; then
3810 have_gettext="no"
3811 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003812 olibs=$LIBS
3813 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00003814 AC_TRY_LINK(
3815 [#include <libintl.h>],
3816 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003817 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
3818 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003819 AC_TRY_LINK(
3820 [#include <libintl.h>],
3821 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003822 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
3823 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00003824 AC_MSG_RESULT([gettext() doesn't work]);
3825 LIBS=$olibs))
3826 else
3827 AC_MSG_RESULT([msgfmt not found - disabled]);
3828 fi
Bram Moolenaar278eb582014-07-30 13:22:52 +02003829 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003830 AC_DEFINE(HAVE_GETTEXT)
3831 MAKEMO=yes
3832 AC_SUBST(MAKEMO)
3833 dnl this was added in GNU gettext 0.10.36
3834 AC_CHECK_FUNCS(bind_textdomain_codeset)
3835 dnl _nl_msg_cat_cntr is required for GNU gettext
3836 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3837 AC_TRY_LINK(
3838 [#include <libintl.h>
3839 extern int _nl_msg_cat_cntr;],
3840 [++_nl_msg_cat_cntr;],
3841 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3842 AC_MSG_RESULT([no]))
3843 fi
3844 else
3845 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3846 fi
3847else
3848 AC_MSG_RESULT(yes)
3849fi
3850
3851dnl Check for dynamic linking loader
3852AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3853if test x${DLL} = xdlfcn.h; then
3854 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3855 AC_MSG_CHECKING([for dlopen()])
3856 AC_TRY_LINK(,[
3857 extern void* dlopen();
3858 dlopen();
3859 ],
3860 AC_MSG_RESULT(yes);
3861 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3862 AC_MSG_RESULT(no);
3863 AC_MSG_CHECKING([for dlopen() in -ldl])
3864 olibs=$LIBS
3865 LIBS="$LIBS -ldl"
3866 AC_TRY_LINK(,[
3867 extern void* dlopen();
3868 dlopen();
3869 ],
3870 AC_MSG_RESULT(yes);
3871 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3872 AC_MSG_RESULT(no);
3873 LIBS=$olibs))
3874 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3875 dnl ick :-)
3876 AC_MSG_CHECKING([for dlsym()])
3877 AC_TRY_LINK(,[
3878 extern void* dlsym();
3879 dlsym();
3880 ],
3881 AC_MSG_RESULT(yes);
3882 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3883 AC_MSG_RESULT(no);
3884 AC_MSG_CHECKING([for dlsym() in -ldl])
3885 olibs=$LIBS
3886 LIBS="$LIBS -ldl"
3887 AC_TRY_LINK(,[
3888 extern void* dlsym();
3889 dlsym();
3890 ],
3891 AC_MSG_RESULT(yes);
3892 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3893 AC_MSG_RESULT(no);
3894 LIBS=$olibs))
3895elif test x${DLL} = xdl.h; then
3896 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3897 AC_MSG_CHECKING([for shl_load()])
3898 AC_TRY_LINK(,[
3899 extern void* shl_load();
3900 shl_load();
3901 ],
3902 AC_MSG_RESULT(yes);
3903 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3904 AC_MSG_RESULT(no);
3905 AC_MSG_CHECKING([for shl_load() in -ldld])
3906 olibs=$LIBS
3907 LIBS="$LIBS -ldld"
3908 AC_TRY_LINK(,[
3909 extern void* shl_load();
3910 shl_load();
3911 ],
3912 AC_MSG_RESULT(yes);
3913 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3914 AC_MSG_RESULT(no);
3915 LIBS=$olibs))
3916fi
3917AC_CHECK_HEADERS(setjmp.h)
3918
3919if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3920 dnl -ldl must come after DynaLoader.a
3921 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3922 LIBS=`echo $LIBS | sed s/-ldl//`
3923 PERL_LIBS="$PERL_LIBS -ldl"
3924 fi
3925fi
3926
Bram Moolenaar164fca32010-07-14 13:58:07 +02003927if test "x$MACOSX" = "xyes"; then
3928 AC_MSG_CHECKING(whether we need -framework Cocoa)
3929 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3930 dnl disabled during tiny build)
3931 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3932 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003933 AC_MSG_RESULT(yes)
3934 else
3935 AC_MSG_RESULT(no)
3936 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003937 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3938 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3939 dnl missing Objective-C symbols.
3940 if test "x$features" = "xtiny"; then
3941 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3942 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3943 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003944fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003945if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003946 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003947fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003948
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003949dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3950dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3951dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003952dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3953dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003954DEPEND_CFLAGS_FILTER=
3955if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003956 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003957 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003958 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003959 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003960 AC_MSG_RESULT(yes)
3961 else
3962 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003963 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003964 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3965 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003966 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003967 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003968 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3969 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003970 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 +00003971 AC_MSG_RESULT(yes)
3972 else
3973 AC_MSG_RESULT(no)
3974 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003975fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003976AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003977
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003978dnl link.sh tries to avoid overlinking in a hackish way.
3979dnl At least GNU ld supports --as-needed which provides the same functionality
3980dnl at linker level. Let's use it.
3981AC_MSG_CHECKING(linker --as-needed support)
3982LINK_AS_NEEDED=
3983# Check if linker supports --as-needed and --no-as-needed options
3984if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003985 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003986 LINK_AS_NEEDED=yes
3987fi
3988if test "$LINK_AS_NEEDED" = yes; then
3989 AC_MSG_RESULT(yes)
3990else
3991 AC_MSG_RESULT(no)
3992fi
3993AC_SUBST(LINK_AS_NEEDED)
3994
Bram Moolenaar77c19352012-06-13 19:19:41 +02003995# IBM z/OS reset CFLAGS for config.mk
3996if test "$zOSUnix" = "yes"; then
3997 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
3998fi
3999
Bram Moolenaar071d4272004-06-13 20:20:40 +00004000dnl write output files
4001AC_OUTPUT(auto/config.mk:config.mk.in)
4002
4003dnl vim: set sw=2 tw=78 fo+=l: