blob: 7fa4297393093c49b7b9e12c30d70883a7d18cf1 [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 Moolenaar0b105412014-11-30 13:34:23 +01001044 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1045 AC_MSG_ERROR([cannot use Python with tiny or small features])
1046 fi
1047
Bram Moolenaar071d4272004-06-13 20:20:40 +00001048 dnl -- find the python executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001049 AC_PATH_PROGS(vi_cv_path_python, python2 python)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001050 if test "X$vi_cv_path_python" != "X"; then
1051
1052 dnl -- get its version number
1053 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
1054 [[vi_cv_var_python_version=`
1055 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
1056 ]])
1057
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001058 dnl -- it must be at least version 2.3
1059 AC_MSG_CHECKING(Python is 2.3 or better)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001060 if ${vi_cv_path_python} -c \
Bram Moolenaarc09a6d62013-06-10 21:27:29 +02001061 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001062 then
1063 AC_MSG_RESULT(yep)
1064
1065 dnl -- find where python thinks it was installed
1066 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
1067 [ vi_cv_path_python_pfx=`
1068 ${vi_cv_path_python} -c \
1069 "import sys; print sys.prefix"` ])
1070
1071 dnl -- and where it thinks it runs
1072 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
1073 [ vi_cv_path_python_epfx=`
1074 ${vi_cv_path_python} -c \
1075 "import sys; print sys.exec_prefix"` ])
1076
1077 dnl -- python's internal library path
1078
1079 AC_CACHE_VAL(vi_cv_path_pythonpath,
1080 [ vi_cv_path_pythonpath=`
1081 unset PYTHONPATH;
1082 ${vi_cv_path_python} -c \
1083 "import sys, string; print string.join(sys.path,':')"` ])
1084
1085 dnl -- where the Python implementation library archives are
1086
1087 AC_ARG_WITH(python-config-dir,
1088 [ --with-python-config-dir=PATH Python's config directory],
1089 [ vi_cv_path_python_conf="${withval}" ] )
1090
1091 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
1092 [
1093 vi_cv_path_python_conf=
Bram Moolenaarac499e32013-06-02 19:14:17 +02001094 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"`
1095 if test -d "$d" && test -f "$d/config.c"; then
1096 vi_cv_path_python_conf="$d"
1097 else
1098 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
1099 for subdir in lib64 lib share; do
1100 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
1101 if test -d "$d" && test -f "$d/config.c"; then
1102 vi_cv_path_python_conf="$d"
1103 fi
1104 done
Bram Moolenaar071d4272004-06-13 20:20:40 +00001105 done
Bram Moolenaarac499e32013-06-02 19:14:17 +02001106 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001107 ])
1108
1109 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
1110
1111 if test "X$PYTHON_CONFDIR" = "X"; then
1112 AC_MSG_RESULT([can't find it!])
1113 else
1114
1115 dnl -- we need to examine Python's config/Makefile too
1116 dnl see what the interpreter is built from
1117 AC_CACHE_VAL(vi_cv_path_python_plibs,
1118 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001119 pwd=`pwd`
1120 tmp_mkf="$pwd/config-PyMake$$"
1121 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001122__:
Bram Moolenaar218116c2010-05-20 21:46:00 +02001123 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001124 @echo "python_LIBS='$(LIBS)'"
1125 @echo "python_SYSLIBS='$(SYSLIBS)'"
1126 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001127 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001128 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001129eof
1130 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001131 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1132 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001133 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1134 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1135 vi_cv_path_python_plibs="-framework Python"
1136 else
1137 if test "${vi_cv_var_python_version}" = "1.4"; then
1138 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1139 else
1140 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1141 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001142 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 +00001143 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1144 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1145 fi
1146 ])
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001147 AC_CACHE_VAL(vi_cv_dll_name_python,
1148 [
1149 if test "X$python_DLLLIBRARY" != "X"; then
1150 vi_cv_dll_name_python="$python_DLLLIBRARY"
1151 else
1152 vi_cv_dll_name_python="$python_INSTSONAME"
1153 fi
1154 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001155
1156 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1157 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001158 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 +00001159 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001160 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 +00001161 fi
1162 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001163 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001164 if test "${vi_cv_var_python_version}" = "1.4"; then
1165 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1166 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001167 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 +00001168
1169 dnl On FreeBSD linking with "-pthread" is required to use threads.
1170 dnl _THREAD_SAFE must be used for compiling then.
1171 dnl The "-pthread" is added to $LIBS, so that the following check for
1172 dnl sigaltstack() will look in libc_r (it's there in libc!).
1173 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1174 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1175 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1176 AC_MSG_CHECKING([if -pthread should be used])
1177 threadsafe_flag=
1178 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001179 dnl if test "x$MACOSX" != "xyes"; then
1180 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001181 test "$GCC" = yes && threadsafe_flag="-pthread"
1182 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1183 threadsafe_flag="-D_THREAD_SAFE"
1184 thread_lib="-pthread"
1185 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001186 if test "`(uname) 2>/dev/null`" = SunOS; then
1187 threadsafe_flag="-pthreads"
1188 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001189 fi
1190 libs_save_old=$LIBS
1191 if test -n "$threadsafe_flag"; then
1192 cflags_save=$CFLAGS
1193 CFLAGS="$CFLAGS $threadsafe_flag"
1194 LIBS="$LIBS $thread_lib"
1195 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001196 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001197 AC_MSG_RESULT(no); LIBS=$libs_save_old
1198 )
1199 CFLAGS=$cflags_save
1200 else
1201 AC_MSG_RESULT(no)
1202 fi
1203
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001204 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001205 dnl added for Python.
1206 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1207 cflags_save=$CFLAGS
1208 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001209 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001210 LIBS="$LIBS $PYTHON_LIBS"
1211 AC_TRY_LINK(,[ ],
1212 AC_MSG_RESULT(yes); python_ok=yes,
1213 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1214 CFLAGS=$cflags_save
1215 LIBS=$libs_save
1216 if test $python_ok = yes; then
1217 AC_DEFINE(FEAT_PYTHON)
1218 else
1219 LIBS=$libs_save_old
1220 PYTHON_SRC=
1221 PYTHON_OBJ=
1222 PYTHON_LIBS=
1223 PYTHON_CFLAGS=
1224 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001225 fi
1226 else
1227 AC_MSG_RESULT(too old)
1228 fi
1229 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001230
1231 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1232 AC_MSG_ERROR([could not configure python])
1233 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001234fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001235
Bram Moolenaar071d4272004-06-13 20:20:40 +00001236AC_SUBST(PYTHON_CONFDIR)
1237AC_SUBST(PYTHON_LIBS)
1238AC_SUBST(PYTHON_GETPATH_CFLAGS)
1239AC_SUBST(PYTHON_CFLAGS)
1240AC_SUBST(PYTHON_SRC)
1241AC_SUBST(PYTHON_OBJ)
1242
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001243
1244AC_MSG_CHECKING(--enable-python3interp argument)
1245AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001246 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001247 [enable_python3interp="no"])
1248AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001249if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001250 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1251 AC_MSG_ERROR([cannot use Python with tiny or small features])
1252 fi
1253
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001254 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001255 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001256 if test "X$vi_cv_path_python3" != "X"; then
1257
1258 dnl -- get its version number
1259 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1260 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001261 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001262 ]])
1263
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001264 dnl -- it must be at least version 3
1265 AC_MSG_CHECKING(Python is 3.0 or better)
1266 if ${vi_cv_path_python3} -c \
1267 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1268 then
1269 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001270
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001271 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1272 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001273 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001274 vi_cv_var_python3_abiflags=
1275 if ${vi_cv_path_python3} -c \
1276 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1277 then
1278 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1279 "import sys; print(sys.abiflags)"`
1280 fi ])
1281
1282 dnl -- find where python3 thinks it was installed
1283 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1284 [ vi_cv_path_python3_pfx=`
1285 ${vi_cv_path_python3} -c \
1286 "import sys; print(sys.prefix)"` ])
1287
1288 dnl -- and where it thinks it runs
1289 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1290 [ vi_cv_path_python3_epfx=`
1291 ${vi_cv_path_python3} -c \
1292 "import sys; print(sys.exec_prefix)"` ])
1293
1294 dnl -- python3's internal library path
1295
1296 AC_CACHE_VAL(vi_cv_path_python3path,
1297 [ vi_cv_path_python3path=`
1298 unset PYTHONPATH;
1299 ${vi_cv_path_python3} -c \
1300 "import sys, string; print(':'.join(sys.path))"` ])
1301
1302 dnl -- where the Python implementation library archives are
1303
1304 AC_ARG_WITH(python3-config-dir,
1305 [ --with-python3-config-dir=PATH Python's config directory],
1306 [ vi_cv_path_python3_conf="${withval}" ] )
1307
1308 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1309 [
1310 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001311 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001312 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1313 if test -d "$d" && test -f "$d/config.c"; then
1314 vi_cv_path_python3_conf="$d"
1315 else
1316 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1317 for subdir in lib64 lib share; do
1318 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1319 if test -d "$d" && test -f "$d/config.c"; then
1320 vi_cv_path_python3_conf="$d"
1321 fi
1322 done
1323 done
1324 fi
1325 ])
1326
1327 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1328
1329 if test "X$PYTHON3_CONFDIR" = "X"; then
1330 AC_MSG_RESULT([can't find it!])
1331 else
1332
1333 dnl -- we need to examine Python's config/Makefile too
1334 dnl see what the interpreter is built from
1335 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1336 [
1337 pwd=`pwd`
1338 tmp_mkf="$pwd/config-PyMake$$"
1339 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001340__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001341 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001342 @echo "python3_LIBS='$(LIBS)'"
1343 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001344 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001345 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001346eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001347 dnl -- delete the lines from make about Entering/Leaving directory
1348 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1349 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001350 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 +02001351 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1352 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1353 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1354 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1355 ])
1356 AC_CACHE_VAL(vi_cv_dll_name_python3,
1357 [
1358 if test "X$python3_DLLLIBRARY" != "X"; then
1359 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
1360 else
1361 vi_cv_dll_name_python3="$python3_INSTSONAME"
1362 fi
1363 ])
1364
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001365 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1366 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001367 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 +02001368 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001369 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 +02001370 fi
1371 PYTHON3_SRC="if_python3.c"
1372 PYTHON3_OBJ="objects/if_python3.o"
1373
1374 dnl On FreeBSD linking with "-pthread" is required to use threads.
1375 dnl _THREAD_SAFE must be used for compiling then.
1376 dnl The "-pthread" is added to $LIBS, so that the following check for
1377 dnl sigaltstack() will look in libc_r (it's there in libc!).
1378 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1379 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1380 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1381 AC_MSG_CHECKING([if -pthread should be used])
1382 threadsafe_flag=
1383 thread_lib=
1384 dnl if test "x$MACOSX" != "xyes"; then
1385 if test "`(uname) 2>/dev/null`" != Darwin; then
1386 test "$GCC" = yes && threadsafe_flag="-pthread"
1387 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1388 threadsafe_flag="-D_THREAD_SAFE"
1389 thread_lib="-pthread"
1390 fi
1391 if test "`(uname) 2>/dev/null`" = SunOS; then
1392 threadsafe_flag="-pthreads"
1393 fi
1394 fi
1395 libs_save_old=$LIBS
1396 if test -n "$threadsafe_flag"; then
1397 cflags_save=$CFLAGS
1398 CFLAGS="$CFLAGS $threadsafe_flag"
1399 LIBS="$LIBS $thread_lib"
1400 AC_TRY_LINK(,[ ],
1401 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1402 AC_MSG_RESULT(no); LIBS=$libs_save_old
1403 )
1404 CFLAGS=$cflags_save
1405 else
1406 AC_MSG_RESULT(no)
1407 fi
1408
1409 dnl check that compiling a simple program still works with the flags
1410 dnl added for Python.
1411 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1412 cflags_save=$CFLAGS
1413 libs_save=$LIBS
1414 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1415 LIBS="$LIBS $PYTHON3_LIBS"
1416 AC_TRY_LINK(,[ ],
1417 AC_MSG_RESULT(yes); python3_ok=yes,
1418 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1419 CFLAGS=$cflags_save
1420 LIBS=$libs_save
1421 if test "$python3_ok" = yes; then
1422 AC_DEFINE(FEAT_PYTHON3)
1423 else
1424 LIBS=$libs_save_old
1425 PYTHON3_SRC=
1426 PYTHON3_OBJ=
1427 PYTHON3_LIBS=
1428 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001429 fi
1430 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001431 else
1432 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001433 fi
1434 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001435 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1436 AC_MSG_ERROR([could not configure python3])
1437 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001438fi
1439
1440AC_SUBST(PYTHON3_CONFDIR)
1441AC_SUBST(PYTHON3_LIBS)
1442AC_SUBST(PYTHON3_CFLAGS)
1443AC_SUBST(PYTHON3_SRC)
1444AC_SUBST(PYTHON3_OBJ)
1445
1446dnl if python2.x and python3.x are enabled one can only link in code
1447dnl with dlopen(), dlsym(), dlclose()
1448if test "$python_ok" = yes && test "$python3_ok" = yes; then
1449 AC_DEFINE(DYNAMIC_PYTHON)
1450 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001451 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001452 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001453 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001454 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001455 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001456 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001457 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001458 #include <dlfcn.h>
1459 /* If this program fails, then RTLD_GLOBAL is needed.
1460 * RTLD_GLOBAL will be used and then it is not possible to
1461 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001462 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001463 */
1464
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001465 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001466 {
1467 int needed = 0;
1468 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1469 if (pylib != 0)
1470 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001471 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001472 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1473 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1474 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001475 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001476 (*init)();
1477 needed = (*simple)("import termios") == -1;
1478 (*final)();
1479 dlclose(pylib);
1480 }
1481 return !needed;
1482 }
1483
1484 int main(int argc, char** argv)
1485 {
1486 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001487 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001488 not_needed = 1;
1489 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001490 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001491 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001492
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001493 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001494 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001495
1496 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1497 cflags_save=$CFLAGS
1498 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001499 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001500 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001501 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001502 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001503 #include <dlfcn.h>
1504 #include <wchar.h>
1505 /* If this program fails, then RTLD_GLOBAL is needed.
1506 * RTLD_GLOBAL will be used and then it is not possible to
1507 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001508 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001509 */
1510
1511 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1512 {
1513 int needed = 0;
1514 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1515 if (pylib != 0)
1516 {
1517 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1518 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1519 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1520 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1521 (*pfx)(prefix);
1522 (*init)();
1523 needed = (*simple)("import termios") == -1;
1524 (*final)();
1525 dlclose(pylib);
1526 }
1527 return !needed;
1528 }
1529
1530 int main(int argc, char** argv)
1531 {
1532 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001533 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001534 not_needed = 1;
1535 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001536 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001537 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1538
1539 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001540 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001541
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001542 PYTHON_SRC="if_python.c"
1543 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001544 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001545 PYTHON_LIBS=
1546 PYTHON3_SRC="if_python3.c"
1547 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001548 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001549 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001550elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1551 AC_DEFINE(DYNAMIC_PYTHON)
1552 PYTHON_SRC="if_python.c"
1553 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001554 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001555 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001556elif test "$python_ok" = yes; then
1557 dnl Check that adding -fPIE works. It may be needed when using a static
1558 dnl Python library.
1559 AC_MSG_CHECKING([if -fPIE can be added for Python])
1560 cflags_save=$CFLAGS
1561 libs_save=$LIBS
1562 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1563 LIBS="$LIBS $PYTHON_LIBS"
1564 AC_TRY_LINK(,[ ],
1565 AC_MSG_RESULT(yes); fpie_ok=yes,
1566 AC_MSG_RESULT(no); fpie_ok=no)
1567 CFLAGS=$cflags_save
1568 LIBS=$libs_save
1569 if test $fpie_ok = yes; then
1570 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1571 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001572elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1573 AC_DEFINE(DYNAMIC_PYTHON3)
1574 PYTHON3_SRC="if_python3.c"
1575 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001576 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001577 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001578elif test "$python3_ok" = yes; then
1579 dnl Check that adding -fPIE works. It may be needed when using a static
1580 dnl Python library.
1581 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1582 cflags_save=$CFLAGS
1583 libs_save=$LIBS
1584 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1585 LIBS="$LIBS $PYTHON3_LIBS"
1586 AC_TRY_LINK(,[ ],
1587 AC_MSG_RESULT(yes); fpie_ok=yes,
1588 AC_MSG_RESULT(no); fpie_ok=no)
1589 CFLAGS=$cflags_save
1590 LIBS=$libs_save
1591 if test $fpie_ok = yes; then
1592 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1593 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001594fi
1595
Bram Moolenaar071d4272004-06-13 20:20:40 +00001596AC_MSG_CHECKING(--enable-tclinterp argument)
1597AC_ARG_ENABLE(tclinterp,
1598 [ --enable-tclinterp Include Tcl interpreter.], ,
1599 [enable_tclinterp="no"])
1600AC_MSG_RESULT($enable_tclinterp)
1601
1602if test "$enable_tclinterp" = "yes"; then
1603
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001604 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001605 AC_MSG_CHECKING(--with-tclsh argument)
1606 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1607 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001608 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001609 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1610 AC_SUBST(vi_cv_path_tcl)
1611
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001612 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1613 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1614 tclsh_name="tclsh8.4"
1615 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1616 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001617 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001618 tclsh_name="tclsh8.2"
1619 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1620 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001621 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1622 tclsh_name="tclsh8.0"
1623 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1624 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001625 dnl still didn't find it, try without version number
1626 if test "X$vi_cv_path_tcl" = "X"; then
1627 tclsh_name="tclsh"
1628 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1629 fi
1630 if test "X$vi_cv_path_tcl" != "X"; then
1631 AC_MSG_CHECKING(Tcl version)
1632 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1633 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1634 AC_MSG_RESULT($tclver - OK);
1635 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 -`
1636
1637 AC_MSG_CHECKING(for location of Tcl include)
1638 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001639 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 +00001640 else
1641 dnl For Mac OS X 10.3, use the OS-provided framework location
1642 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1643 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001644 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001645 for try in $tclinc; do
1646 if test -f "$try/tcl.h"; then
1647 AC_MSG_RESULT($try/tcl.h)
1648 TCL_INC=$try
1649 break
1650 fi
1651 done
1652 if test -z "$TCL_INC"; then
1653 AC_MSG_RESULT(<not found>)
1654 SKIP_TCL=YES
1655 fi
1656 if test -z "$SKIP_TCL"; then
1657 AC_MSG_CHECKING(for location of tclConfig.sh script)
1658 if test "x$MACOSX" != "xyes"; then
1659 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001660 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001661 else
1662 dnl For Mac OS X 10.3, use the OS-provided framework location
1663 tclcnf="/System/Library/Frameworks/Tcl.framework"
1664 fi
1665 for try in $tclcnf; do
1666 if test -f $try/tclConfig.sh; then
1667 AC_MSG_RESULT($try/tclConfig.sh)
1668 . $try/tclConfig.sh
1669 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1670 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1671 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001672 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001673 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 +00001674 break
1675 fi
1676 done
1677 if test -z "$TCL_LIBS"; then
1678 AC_MSG_RESULT(<not found>)
1679 AC_MSG_CHECKING(for Tcl library by myself)
1680 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001681 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001682 for ext in .so .a ; do
1683 for ver in "" $tclver ; do
1684 for try in $tcllib ; do
1685 trylib=tcl$ver$ext
1686 if test -f $try/lib$trylib ; then
1687 AC_MSG_RESULT($try/lib$trylib)
1688 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1689 if test "`(uname) 2>/dev/null`" = SunOS &&
1690 uname -r | grep '^5' >/dev/null; then
1691 TCL_LIBS="$TCL_LIBS -R $try"
1692 fi
1693 break 3
1694 fi
1695 done
1696 done
1697 done
1698 if test -z "$TCL_LIBS"; then
1699 AC_MSG_RESULT(<not found>)
1700 SKIP_TCL=YES
1701 fi
1702 fi
1703 if test -z "$SKIP_TCL"; then
1704 AC_DEFINE(FEAT_TCL)
1705 TCL_SRC=if_tcl.c
1706 TCL_OBJ=objects/if_tcl.o
1707 TCL_PRO=if_tcl.pro
1708 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1709 fi
1710 fi
1711 else
1712 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1713 fi
1714 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001715 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1716 AC_MSG_ERROR([could not configure Tcl])
1717 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001718fi
1719AC_SUBST(TCL_SRC)
1720AC_SUBST(TCL_OBJ)
1721AC_SUBST(TCL_PRO)
1722AC_SUBST(TCL_CFLAGS)
1723AC_SUBST(TCL_LIBS)
1724
1725AC_MSG_CHECKING(--enable-rubyinterp argument)
1726AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001727 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001728 [enable_rubyinterp="no"])
1729AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001730if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001731 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1732 AC_MSG_ERROR([cannot use Ruby with tiny or small features])
1733 fi
1734
Bram Moolenaar165641d2010-02-17 16:23:09 +01001735 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001736 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001737 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1738 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1739 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001740 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001741 if test "X$vi_cv_path_ruby" != "X"; then
1742 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001743 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 +00001744 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001745 AC_MSG_CHECKING(Ruby rbconfig)
1746 ruby_rbconfig="RbConfig"
1747 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1748 ruby_rbconfig="Config"
1749 fi
1750 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001751 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001752 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 +00001753 if test "X$rubyhdrdir" != "X"; then
1754 AC_MSG_RESULT($rubyhdrdir)
1755 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001756 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1757 if test -d "$rubyarchdir"; then
1758 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001759 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001760 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001761 if test "X$rubyversion" = "X"; then
1762 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1763 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001764 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001765 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001766 if test "X$rubylibs" != "X"; then
1767 RUBY_LIBS="$rubylibs"
1768 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001769 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1770 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001771 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001772 if test -f "$rubylibdir/$librubya"; then
1773 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001774 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1775 elif test "$librubyarg" = "libruby.a"; then
1776 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1777 librubyarg="-lruby"
1778 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001779 fi
1780
1781 if test "X$librubyarg" != "X"; then
1782 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1783 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001784 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001785 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001786 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1787 dnl be included if requested by passing --with-mac-arch to
1788 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001789 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001790 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001791 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001792 LDFLAGS="$rubyldflags $LDFLAGS"
1793 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001794 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001795 fi
1796 RUBY_SRC="if_ruby.c"
1797 RUBY_OBJ="objects/if_ruby.o"
1798 RUBY_PRO="if_ruby.pro"
1799 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001800 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001801 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001802 AC_DEFINE(DYNAMIC_RUBY)
1803 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1804 RUBY_LIBS=
1805 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001806 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001807 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001808 fi
1809 else
1810 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1811 fi
1812 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001813
1814 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1815 AC_MSG_ERROR([could not configure Ruby])
1816 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001817fi
1818AC_SUBST(RUBY_SRC)
1819AC_SUBST(RUBY_OBJ)
1820AC_SUBST(RUBY_PRO)
1821AC_SUBST(RUBY_CFLAGS)
1822AC_SUBST(RUBY_LIBS)
1823
1824AC_MSG_CHECKING(--enable-cscope argument)
1825AC_ARG_ENABLE(cscope,
1826 [ --enable-cscope Include cscope interface.], ,
1827 [enable_cscope="no"])
1828AC_MSG_RESULT($enable_cscope)
1829if test "$enable_cscope" = "yes"; then
1830 AC_DEFINE(FEAT_CSCOPE)
1831fi
1832
1833AC_MSG_CHECKING(--enable-workshop argument)
1834AC_ARG_ENABLE(workshop,
1835 [ --enable-workshop Include Sun Visual Workshop support.], ,
1836 [enable_workshop="no"])
1837AC_MSG_RESULT($enable_workshop)
1838if test "$enable_workshop" = "yes"; then
1839 AC_DEFINE(FEAT_SUN_WORKSHOP)
1840 WORKSHOP_SRC="workshop.c integration.c"
1841 AC_SUBST(WORKSHOP_SRC)
1842 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1843 AC_SUBST(WORKSHOP_OBJ)
1844 if test "${enable_gui-xxx}" = xxx; then
1845 enable_gui=motif
1846 fi
1847fi
1848
1849AC_MSG_CHECKING(--disable-netbeans argument)
1850AC_ARG_ENABLE(netbeans,
1851 [ --disable-netbeans Disable NetBeans integration support.],
1852 , [enable_netbeans="yes"])
1853if test "$enable_netbeans" = "yes"; then
1854 AC_MSG_RESULT(no)
1855 dnl On Solaris we need the socket and nsl library.
1856 AC_CHECK_LIB(socket, socket)
1857 AC_CHECK_LIB(nsl, gethostbyname)
1858 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1859 AC_TRY_LINK([
1860#include <stdio.h>
1861#include <stdlib.h>
1862#include <stdarg.h>
1863#include <fcntl.h>
1864#include <netdb.h>
1865#include <netinet/in.h>
1866#include <errno.h>
1867#include <sys/types.h>
1868#include <sys/socket.h>
1869 /* Check bitfields */
1870 struct nbbuf {
1871 unsigned int initDone:1;
1872 ushort signmaplen;
1873 };
1874 ], [
1875 /* Check creating a socket. */
1876 struct sockaddr_in server;
1877 (void)socket(AF_INET, SOCK_STREAM, 0);
1878 (void)htons(100);
1879 (void)gethostbyname("microsoft.com");
1880 if (errno == ECONNREFUSED)
1881 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1882 ],
1883 AC_MSG_RESULT(yes),
1884 AC_MSG_RESULT(no); enable_netbeans="no")
1885else
1886 AC_MSG_RESULT(yes)
1887fi
1888if test "$enable_netbeans" = "yes"; then
1889 AC_DEFINE(FEAT_NETBEANS_INTG)
1890 NETBEANS_SRC="netbeans.c"
1891 AC_SUBST(NETBEANS_SRC)
1892 NETBEANS_OBJ="objects/netbeans.o"
1893 AC_SUBST(NETBEANS_OBJ)
1894fi
1895
1896AC_MSG_CHECKING(--enable-sniff argument)
1897AC_ARG_ENABLE(sniff,
1898 [ --enable-sniff Include Sniff interface.], ,
1899 [enable_sniff="no"])
1900AC_MSG_RESULT($enable_sniff)
1901if test "$enable_sniff" = "yes"; then
1902 AC_DEFINE(FEAT_SNIFF)
1903 SNIFF_SRC="if_sniff.c"
1904 AC_SUBST(SNIFF_SRC)
1905 SNIFF_OBJ="objects/if_sniff.o"
1906 AC_SUBST(SNIFF_OBJ)
1907fi
1908
1909AC_MSG_CHECKING(--enable-multibyte argument)
1910AC_ARG_ENABLE(multibyte,
1911 [ --enable-multibyte Include multibyte editing support.], ,
1912 [enable_multibyte="no"])
1913AC_MSG_RESULT($enable_multibyte)
1914if test "$enable_multibyte" = "yes"; then
1915 AC_DEFINE(FEAT_MBYTE)
1916fi
1917
1918AC_MSG_CHECKING(--enable-hangulinput argument)
1919AC_ARG_ENABLE(hangulinput,
1920 [ --enable-hangulinput Include Hangul input support.], ,
1921 [enable_hangulinput="no"])
1922AC_MSG_RESULT($enable_hangulinput)
1923
1924AC_MSG_CHECKING(--enable-xim argument)
1925AC_ARG_ENABLE(xim,
1926 [ --enable-xim Include XIM input support.],
1927 AC_MSG_RESULT($enable_xim),
1928 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001929
1930AC_MSG_CHECKING(--enable-fontset argument)
1931AC_ARG_ENABLE(fontset,
1932 [ --enable-fontset Include X fontset output support.], ,
1933 [enable_fontset="no"])
1934AC_MSG_RESULT($enable_fontset)
1935dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1936
1937test -z "$with_x" && with_x=yes
1938test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1939if test "$with_x" = no; then
1940 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1941else
1942 dnl Do this check early, so that its failure can override user requests.
1943
1944 AC_PATH_PROG(xmkmfpath, xmkmf)
1945
1946 AC_PATH_XTRA
1947
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001948 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001949 dnl be compiled with a special option.
1950 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001951 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001952 CFLAGS="$CFLAGS -W c,dll"
1953 LDFLAGS="$LDFLAGS -W l,dll"
1954 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1955 fi
1956
1957 dnl On my HPUX system the X include dir is found, but the lib dir not.
1958 dnl This is a desparate try to fix this.
1959
1960 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1961 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1962 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1963 X_LIBS="$X_LIBS -L$x_libraries"
1964 if test "`(uname) 2>/dev/null`" = SunOS &&
1965 uname -r | grep '^5' >/dev/null; then
1966 X_LIBS="$X_LIBS -R $x_libraries"
1967 fi
1968 fi
1969
1970 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1971 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1972 AC_MSG_RESULT(Corrected X includes to $x_includes)
1973 X_CFLAGS="$X_CFLAGS -I$x_includes"
1974 fi
1975
1976 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1977 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1978 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1979 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1980 dnl Same for "-R/usr/lib ".
1981 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1982
1983
1984 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001985 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1986 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001987 AC_MSG_CHECKING(if X11 header files can be found)
1988 cflags_save=$CFLAGS
1989 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001990 AC_TRY_COMPILE([#include <X11/Xlib.h>
1991#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001992 AC_MSG_RESULT(yes),
1993 AC_MSG_RESULT(no); no_x=yes)
1994 CFLAGS=$cflags_save
1995
1996 if test "${no_x-no}" = yes; then
1997 with_x=no
1998 else
1999 AC_DEFINE(HAVE_X11)
2000 X_LIB="-lXt -lX11";
2001 AC_SUBST(X_LIB)
2002
2003 ac_save_LDFLAGS="$LDFLAGS"
2004 LDFLAGS="-L$x_libraries $LDFLAGS"
2005
2006 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2007 dnl For HP-UX 10.20 it must be before -lSM -lICE
2008 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2009 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2010
2011 dnl Some systems need -lnsl -lsocket when testing for ICE.
2012 dnl The check above doesn't do this, try here (again). Also needed to get
2013 dnl them after Xdmcp. link.sh will remove them when not needed.
2014 dnl Check for other function than above to avoid the cached value
2015 AC_CHECK_LIB(ICE, IceOpenConnection,
2016 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2017
2018 dnl Check for -lXpm (needed for some versions of Motif)
2019 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2020 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2021 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2022
2023 dnl Check that the X11 header files don't use implicit declarations
2024 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2025 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002026 dnl -Werror is GCC only, others like Solaris Studio might not like it
2027 if test "$GCC" = yes; then
2028 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2029 else
2030 CFLAGS="$CFLAGS $X_CFLAGS"
2031 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002032 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2033 AC_MSG_RESULT(no),
2034 CFLAGS="$CFLAGS -Wno-implicit-int"
2035 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2036 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2037 AC_MSG_RESULT(test failed)
2038 )
2039 )
2040 CFLAGS=$cflags_save
2041
2042 LDFLAGS="$ac_save_LDFLAGS"
2043
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002044 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2045 AC_CACHE_VAL(ac_cv_small_wchar_t,
2046 [AC_TRY_RUN([
2047#include <X11/Xlib.h>
2048#if STDC_HEADERS
2049# include <stdlib.h>
2050# include <stddef.h>
2051#endif
2052 main()
2053 {
2054 if (sizeof(wchar_t) <= 2)
2055 exit(1);
2056 exit(0);
2057 }],
2058 ac_cv_small_wchar_t="no",
2059 ac_cv_small_wchar_t="yes",
2060 AC_MSG_ERROR(failed to compile test program))])
2061 AC_MSG_RESULT($ac_cv_small_wchar_t)
2062 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2063 AC_DEFINE(SMALL_WCHAR_T)
2064 fi
2065
Bram Moolenaar071d4272004-06-13 20:20:40 +00002066 fi
2067fi
2068
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002069test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002070
2071AC_MSG_CHECKING(--enable-gui argument)
2072AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002073 [ --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 +00002074
2075dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2076dnl Do not use character classes for portability with old tools.
2077enable_gui_canon=`echo "_$enable_gui" | \
2078 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2079
2080dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002081SKIP_GTK2=YES
2082SKIP_GNOME=YES
2083SKIP_MOTIF=YES
2084SKIP_ATHENA=YES
2085SKIP_NEXTAW=YES
2086SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002087SKIP_CARBON=YES
2088GUITYPE=NONE
2089
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002090if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002091 SKIP_PHOTON=
2092 case "$enable_gui_canon" in
2093 no) AC_MSG_RESULT(no GUI support)
2094 SKIP_PHOTON=YES ;;
2095 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2096 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2097 photon) AC_MSG_RESULT(Photon GUI support) ;;
2098 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2099 SKIP_PHOTON=YES ;;
2100 esac
2101
2102elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2103 SKIP_CARBON=
2104 case "$enable_gui_canon" in
2105 no) AC_MSG_RESULT(no GUI support)
2106 SKIP_CARBON=YES ;;
2107 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002108 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2109 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002110 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2111 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2112 SKIP_CARBON=YES ;;
2113 esac
2114
2115else
2116
Bram Moolenaar071d4272004-06-13 20:20:40 +00002117 case "$enable_gui_canon" in
2118 no|none) AC_MSG_RESULT(no GUI support) ;;
2119 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002120 SKIP_GTK2=
2121 SKIP_GNOME=
2122 SKIP_MOTIF=
2123 SKIP_ATHENA=
2124 SKIP_NEXTAW=
2125 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002126 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002127 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002128 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2129 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002130 SKIP_GTK2=;;
2131 motif) AC_MSG_RESULT(Motif GUI support)
2132 SKIP_MOTIF=;;
2133 athena) AC_MSG_RESULT(Athena GUI support)
2134 SKIP_ATHENA=;;
2135 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2136 SKIP_NEXTAW=;;
2137 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2138 esac
2139
2140fi
2141
Bram Moolenaar071d4272004-06-13 20:20:40 +00002142if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2143 -a "$enable_gui_canon" != "gnome2"; then
2144 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2145 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002146 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002147 , enable_gtk2_check="yes")
2148 AC_MSG_RESULT($enable_gtk2_check)
2149 if test "x$enable_gtk2_check" = "xno"; then
2150 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002151 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002152 fi
2153fi
2154
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002155if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002156 AC_MSG_CHECKING(whether or not to look for GNOME)
2157 AC_ARG_ENABLE(gnome-check,
2158 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2159 , enable_gnome_check="no")
2160 AC_MSG_RESULT($enable_gnome_check)
2161 if test "x$enable_gnome_check" = "xno"; then
2162 SKIP_GNOME=YES
2163 fi
2164fi
2165
2166if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2167 AC_MSG_CHECKING(whether or not to look for Motif)
2168 AC_ARG_ENABLE(motif-check,
2169 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2170 , enable_motif_check="yes")
2171 AC_MSG_RESULT($enable_motif_check)
2172 if test "x$enable_motif_check" = "xno"; then
2173 SKIP_MOTIF=YES
2174 fi
2175fi
2176
2177if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2178 AC_MSG_CHECKING(whether or not to look for Athena)
2179 AC_ARG_ENABLE(athena-check,
2180 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2181 , enable_athena_check="yes")
2182 AC_MSG_RESULT($enable_athena_check)
2183 if test "x$enable_athena_check" = "xno"; then
2184 SKIP_ATHENA=YES
2185 fi
2186fi
2187
2188if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2189 AC_MSG_CHECKING(whether or not to look for neXtaw)
2190 AC_ARG_ENABLE(nextaw-check,
2191 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2192 , enable_nextaw_check="yes")
2193 AC_MSG_RESULT($enable_nextaw_check);
2194 if test "x$enable_nextaw_check" = "xno"; then
2195 SKIP_NEXTAW=YES
2196 fi
2197fi
2198
2199if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2200 AC_MSG_CHECKING(whether or not to look for Carbon)
2201 AC_ARG_ENABLE(carbon-check,
2202 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2203 , enable_carbon_check="yes")
2204 AC_MSG_RESULT($enable_carbon_check);
2205 if test "x$enable_carbon_check" = "xno"; then
2206 SKIP_CARBON=YES
2207 fi
2208fi
2209
Bram Moolenaar843ee412004-06-30 16:16:41 +00002210
Bram Moolenaar071d4272004-06-13 20:20:40 +00002211if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2212 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002213 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002214 AC_MSG_RESULT(yes);
2215 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002216 if test "$VIMNAME" = "vim"; then
2217 VIMNAME=Vim
2218 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002219
Bram Moolenaar164fca32010-07-14 13:58:07 +02002220 if test "x$MACARCH" = "xboth"; then
2221 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2222 else
2223 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2224 fi
2225
Bram Moolenaar14716812006-05-04 21:54:08 +00002226 dnl Default install directory is not /usr/local
2227 if test x$prefix = xNONE; then
2228 prefix=/Applications
2229 fi
2230
2231 dnl Sorry for the hard coded default
2232 datadir='${prefix}/Vim.app/Contents/Resources'
2233
Bram Moolenaar071d4272004-06-13 20:20:40 +00002234 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002235 SKIP_GTK2=YES;
2236 SKIP_GNOME=YES;
2237 SKIP_MOTIF=YES;
2238 SKIP_ATHENA=YES;
2239 SKIP_NEXTAW=YES;
2240 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002241 SKIP_CARBON=YES
2242fi
2243
Bram Moolenaar071d4272004-06-13 20:20:40 +00002244dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002245dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002246dnl
2247dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002248dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002249dnl
2250AC_DEFUN(AM_PATH_GTK,
2251[
2252 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2253 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002254 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002255 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2256 no_gtk=""
2257 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2258 && $PKG_CONFIG --exists gtk+-2.0; then
2259 {
2260 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2261 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2262 dnl something like that.
2263 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002264 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002265 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2266 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2267 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2268 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2269 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2270 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2271 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2272 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002273 else
2274 no_gtk=yes
2275 fi
2276
2277 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2278 {
2279 ac_save_CFLAGS="$CFLAGS"
2280 ac_save_LIBS="$LIBS"
2281 CFLAGS="$CFLAGS $GTK_CFLAGS"
2282 LIBS="$LIBS $GTK_LIBS"
2283
2284 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002285 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002286 dnl
2287 rm -f conf.gtktest
2288 AC_TRY_RUN([
2289#include <gtk/gtk.h>
2290#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002291#if STDC_HEADERS
2292# include <stdlib.h>
2293# include <stddef.h>
2294#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002295
2296int
2297main ()
2298{
2299int major, minor, micro;
2300char *tmp_version;
2301
2302system ("touch conf.gtktest");
2303
2304/* HP/UX 9 (%@#!) writes to sscanf strings */
2305tmp_version = g_strdup("$min_gtk_version");
2306if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2307 printf("%s, bad version string\n", "$min_gtk_version");
2308 exit(1);
2309 }
2310
2311if ((gtk_major_version > major) ||
2312 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2313 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2314 (gtk_micro_version >= micro)))
2315{
2316 return 0;
2317}
2318return 1;
2319}
2320],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2321 CFLAGS="$ac_save_CFLAGS"
2322 LIBS="$ac_save_LIBS"
2323 }
2324 fi
2325 if test "x$no_gtk" = x ; then
2326 if test "x$enable_gtktest" = "xyes"; then
2327 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2328 else
2329 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2330 fi
2331 ifelse([$2], , :, [$2])
2332 else
2333 {
2334 AC_MSG_RESULT(no)
2335 GTK_CFLAGS=""
2336 GTK_LIBS=""
2337 ifelse([$3], , :, [$3])
2338 }
2339 fi
2340 }
2341 else
2342 GTK_CFLAGS=""
2343 GTK_LIBS=""
2344 ifelse([$3], , :, [$3])
2345 fi
2346 AC_SUBST(GTK_CFLAGS)
2347 AC_SUBST(GTK_LIBS)
2348 rm -f conf.gtktest
2349])
2350
2351dnl ---------------------------------------------------------------------------
2352dnl gnome
2353dnl ---------------------------------------------------------------------------
2354AC_DEFUN([GNOME_INIT_HOOK],
2355[
2356 AC_SUBST(GNOME_LIBS)
2357 AC_SUBST(GNOME_LIBDIR)
2358 AC_SUBST(GNOME_INCLUDEDIR)
2359
2360 AC_ARG_WITH(gnome-includes,
2361 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2362 [CFLAGS="$CFLAGS -I$withval"]
2363 )
2364
2365 AC_ARG_WITH(gnome-libs,
2366 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2367 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2368 )
2369
2370 AC_ARG_WITH(gnome,
2371 [ --with-gnome Specify prefix for GNOME files],
2372 if test x$withval = xyes; then
2373 want_gnome=yes
2374 ifelse([$1], [], :, [$1])
2375 else
2376 if test "x$withval" = xno; then
2377 want_gnome=no
2378 else
2379 want_gnome=yes
2380 LDFLAGS="$LDFLAGS -L$withval/lib"
2381 CFLAGS="$CFLAGS -I$withval/include"
2382 gnome_prefix=$withval/lib
2383 fi
2384 fi,
2385 want_gnome=yes)
2386
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002387 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002388 {
2389 AC_MSG_CHECKING(for libgnomeui-2.0)
2390 if $PKG_CONFIG --exists libgnomeui-2.0; then
2391 AC_MSG_RESULT(yes)
2392 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2393 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2394 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002395
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002396 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2397 dnl This might not be the right way but it works for me...
2398 AC_MSG_CHECKING(for FreeBSD)
2399 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2400 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002401 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002402 GNOME_LIBS="$GNOME_LIBS -pthread"
2403 else
2404 AC_MSG_RESULT(no)
2405 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002406 $1
2407 else
2408 AC_MSG_RESULT(not found)
2409 if test "x$2" = xfail; then
2410 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2411 fi
2412 fi
2413 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002414 fi
2415])
2416
2417AC_DEFUN([GNOME_INIT],[
2418 GNOME_INIT_HOOK([],fail)
2419])
2420
2421
2422dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002423dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002424dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002425if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002426
2427 AC_MSG_CHECKING(--disable-gtktest argument)
2428 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2429 , enable_gtktest=yes)
2430 if test "x$enable_gtktest" = "xyes" ; then
2431 AC_MSG_RESULT(gtk test enabled)
2432 else
2433 AC_MSG_RESULT(gtk test disabled)
2434 fi
2435
Bram Moolenaar071d4272004-06-13 20:20:40 +00002436 if test "X$PKG_CONFIG" = "X"; then
2437 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2438 fi
2439
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002440 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002441 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2442 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002443 AM_PATH_GTK(2.2.0,
2444 [GUI_LIB_LOC="$GTK_LIBDIR"
2445 GTK_LIBNAME="$GTK_LIBS"
2446 GUI_INC_LOC="$GTK_CFLAGS"], )
2447 if test "x$GTK_CFLAGS" != "x"; then
2448 SKIP_ATHENA=YES
2449 SKIP_NEXTAW=YES
2450 SKIP_MOTIF=YES
2451 GUITYPE=GTK
2452 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002453 fi
2454 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002455 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002456 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2457 || test "0$gtk_minor_version" -ge 2; then
2458 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2459 fi
2460 dnl
2461 dnl if GTK exists, then check for GNOME.
2462 dnl
2463 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002464 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002465 GNOME_INIT_HOOK([have_gnome=yes])
2466 if test "x$have_gnome" = xyes ; then
2467 AC_DEFINE(FEAT_GUI_GNOME)
2468 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2469 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002470 fi
2471 }
2472 fi
2473 fi
2474fi
2475
2476dnl Check for Motif include files location.
2477dnl The LAST one found is used, this makes the highest version to be used,
2478dnl e.g. when Motif1.2 and Motif2.0 are both present.
2479
2480if test -z "$SKIP_MOTIF"; then
2481 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"
2482 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2483 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2484
2485 AC_MSG_CHECKING(for location of Motif GUI includes)
2486 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2487 GUI_INC_LOC=
2488 for try in $gui_includes; do
2489 if test -f "$try/Xm/Xm.h"; then
2490 GUI_INC_LOC=$try
2491 fi
2492 done
2493 if test -n "$GUI_INC_LOC"; then
2494 if test "$GUI_INC_LOC" = /usr/include; then
2495 GUI_INC_LOC=
2496 AC_MSG_RESULT(in default path)
2497 else
2498 AC_MSG_RESULT($GUI_INC_LOC)
2499 fi
2500 else
2501 AC_MSG_RESULT(<not found>)
2502 SKIP_MOTIF=YES
2503 fi
2504fi
2505
2506dnl Check for Motif library files location. In the same order as the include
2507dnl files, to avoid a mixup if several versions are present
2508
2509if test -z "$SKIP_MOTIF"; then
2510 AC_MSG_CHECKING(--with-motif-lib argument)
2511 AC_ARG_WITH(motif-lib,
2512 [ --with-motif-lib=STRING Library for Motif ],
2513 [ MOTIF_LIBNAME="${withval}" ] )
2514
2515 if test -n "$MOTIF_LIBNAME"; then
2516 AC_MSG_RESULT($MOTIF_LIBNAME)
2517 GUI_LIB_LOC=
2518 else
2519 AC_MSG_RESULT(no)
2520
2521 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2522 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2523
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002524 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2525 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002526 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002527 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 +00002528 GUI_LIB_LOC=
2529 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002530 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002531 if test -f "$libtry"; then
2532 GUI_LIB_LOC=$try
2533 fi
2534 done
2535 done
2536 if test -n "$GUI_LIB_LOC"; then
2537 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002538 if test "$GUI_LIB_LOC" = /usr/lib \
2539 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2540 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002541 GUI_LIB_LOC=
2542 AC_MSG_RESULT(in default path)
2543 else
2544 if test -n "$GUI_LIB_LOC"; then
2545 AC_MSG_RESULT($GUI_LIB_LOC)
2546 if test "`(uname) 2>/dev/null`" = SunOS &&
2547 uname -r | grep '^5' >/dev/null; then
2548 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2549 fi
2550 fi
2551 fi
2552 MOTIF_LIBNAME=-lXm
2553 else
2554 AC_MSG_RESULT(<not found>)
2555 SKIP_MOTIF=YES
2556 fi
2557 fi
2558fi
2559
2560if test -z "$SKIP_MOTIF"; then
2561 SKIP_ATHENA=YES
2562 SKIP_NEXTAW=YES
2563 GUITYPE=MOTIF
2564 AC_SUBST(MOTIF_LIBNAME)
2565fi
2566
2567dnl Check if the Athena files can be found
2568
2569GUI_X_LIBS=
2570
2571if test -z "$SKIP_ATHENA"; then
2572 AC_MSG_CHECKING(if Athena header files can be found)
2573 cflags_save=$CFLAGS
2574 CFLAGS="$CFLAGS $X_CFLAGS"
2575 AC_TRY_COMPILE([
2576#include <X11/Intrinsic.h>
2577#include <X11/Xaw/Paned.h>], ,
2578 AC_MSG_RESULT(yes),
2579 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2580 CFLAGS=$cflags_save
2581fi
2582
2583if test -z "$SKIP_ATHENA"; then
2584 GUITYPE=ATHENA
2585fi
2586
2587if test -z "$SKIP_NEXTAW"; then
2588 AC_MSG_CHECKING(if neXtaw header files can be found)
2589 cflags_save=$CFLAGS
2590 CFLAGS="$CFLAGS $X_CFLAGS"
2591 AC_TRY_COMPILE([
2592#include <X11/Intrinsic.h>
2593#include <X11/neXtaw/Paned.h>], ,
2594 AC_MSG_RESULT(yes),
2595 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2596 CFLAGS=$cflags_save
2597fi
2598
2599if test -z "$SKIP_NEXTAW"; then
2600 GUITYPE=NEXTAW
2601fi
2602
2603if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2604 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2605 dnl Avoid adding it when it twice
2606 if test -n "$GUI_INC_LOC"; then
2607 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2608 fi
2609 if test -n "$GUI_LIB_LOC"; then
2610 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2611 fi
2612
2613 dnl Check for -lXext and then for -lXmu
2614 ldflags_save=$LDFLAGS
2615 LDFLAGS="$X_LIBS $LDFLAGS"
2616 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2617 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2618 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2619 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2620 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2621 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2622 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2623 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2624 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2625 if test -z "$SKIP_MOTIF"; then
2626 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2627 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2628 fi
2629 LDFLAGS=$ldflags_save
2630
2631 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2632 AC_MSG_CHECKING(for extra X11 defines)
2633 NARROW_PROTO=
2634 rm -fr conftestdir
2635 if mkdir conftestdir; then
2636 cd conftestdir
2637 cat > Imakefile <<'EOF'
2638acfindx:
2639 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2640EOF
2641 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2642 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2643 fi
2644 cd ..
2645 rm -fr conftestdir
2646 fi
2647 if test -z "$NARROW_PROTO"; then
2648 AC_MSG_RESULT(no)
2649 else
2650 AC_MSG_RESULT($NARROW_PROTO)
2651 fi
2652 AC_SUBST(NARROW_PROTO)
2653fi
2654
2655dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2656dnl use the X11 include path
2657if test "$enable_xsmp" = "yes"; then
2658 cppflags_save=$CPPFLAGS
2659 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2660 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2661 CPPFLAGS=$cppflags_save
2662fi
2663
2664
Bram Moolenaare667c952010-07-05 22:57:59 +02002665if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002666 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2667 cppflags_save=$CPPFLAGS
2668 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2669 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2670
2671 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2672 if test ! "$enable_xim" = "no"; then
2673 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2674 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2675 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002676 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002677 fi
2678 CPPFLAGS=$cppflags_save
2679
2680 dnl automatically enable XIM when hangul input isn't enabled
2681 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2682 -a "x$GUITYPE" != "xNONE" ; then
2683 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2684 enable_xim="yes"
2685 fi
2686fi
2687
2688if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2689 cppflags_save=$CPPFLAGS
2690 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002691dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2692 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2693 AC_TRY_COMPILE([
2694#include <X11/Intrinsic.h>
2695#include <X11/Xmu/Editres.h>],
2696 [int i; i = 0;],
2697 AC_MSG_RESULT(yes)
2698 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2699 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002700 CPPFLAGS=$cppflags_save
2701fi
2702
2703dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2704if test -z "$SKIP_MOTIF"; then
2705 cppflags_save=$CPPFLAGS
2706 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002707 if test "$zOSUnix" = "yes"; then
2708 xmheader="Xm/Xm.h"
2709 else
2710 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002711 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002712 fi
2713 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002714
Bram Moolenaar77c19352012-06-13 19:19:41 +02002715 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002716 dnl Solaris uses XpmAttributes_21, very annoying.
2717 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2718 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2719 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2720 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2721 )
2722 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002723 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002724 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002725 CPPFLAGS=$cppflags_save
2726fi
2727
2728if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2729 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2730 enable_xim="no"
2731fi
2732if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2733 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2734 enable_fontset="no"
2735fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002736if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002737 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2738 enable_fontset="no"
2739fi
2740
Bram Moolenaar071d4272004-06-13 20:20:40 +00002741if test -z "$SKIP_PHOTON"; then
2742 GUITYPE=PHOTONGUI
2743fi
2744
2745AC_SUBST(GUI_INC_LOC)
2746AC_SUBST(GUI_LIB_LOC)
2747AC_SUBST(GUITYPE)
2748AC_SUBST(GUI_X_LIBS)
2749
2750if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2751 AC_MSG_ERROR([cannot use workshop without Motif])
2752fi
2753
2754dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2755if test "$enable_xim" = "yes"; then
2756 AC_DEFINE(FEAT_XIM)
2757fi
2758if test "$enable_fontset" = "yes"; then
2759 AC_DEFINE(FEAT_XFONTSET)
2760fi
2761
2762
2763dnl ---------------------------------------------------------------------------
2764dnl end of GUI-checking
2765dnl ---------------------------------------------------------------------------
2766
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002767dnl Check for Cygwin, which needs an extra source file if not using X11
2768AC_MSG_CHECKING(for CYGWIN environment)
2769case `uname` in
2770 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2771 AC_MSG_CHECKING(for CYGWIN clipboard support)
2772 if test "x$with_x" = "xno" ; then
2773 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2774 AC_MSG_RESULT(yes)
2775 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2776 else
2777 AC_MSG_RESULT(no - using X11)
2778 fi ;;
2779
2780 *) CYGWIN=no; AC_MSG_RESULT(no);;
2781esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002782
2783dnl Only really enable hangul input when GUI and XFONTSET are available
2784if test "$enable_hangulinput" = "yes"; then
2785 if test "x$GUITYPE" = "xNONE"; then
2786 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2787 enable_hangulinput=no
2788 else
2789 AC_DEFINE(FEAT_HANGULIN)
2790 HANGULIN_SRC=hangulin.c
2791 AC_SUBST(HANGULIN_SRC)
2792 HANGULIN_OBJ=objects/hangulin.o
2793 AC_SUBST(HANGULIN_OBJ)
2794 fi
2795fi
2796
2797dnl Checks for libraries and include files.
2798
Bram Moolenaar446cb832008-06-24 21:56:24 +00002799AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2800 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01002801 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002802#include "confdefs.h"
2803#include <ctype.h>
2804#if STDC_HEADERS
2805# include <stdlib.h>
2806# include <stddef.h>
2807#endif
2808main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01002809 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002810 vim_cv_toupper_broken=yes
2811 ],[
2812 vim_cv_toupper_broken=no
2813 ],[
2814 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2815 ])])
2816
2817if test "x$vim_cv_toupper_broken" = "xyes" ; then
2818 AC_DEFINE(BROKEN_TOUPPER)
2819fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002820
2821AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002822AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002823 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2824 AC_MSG_RESULT(no))
2825
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002826AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2827AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2828 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2829 AC_MSG_RESULT(no))
2830
Bram Moolenaar071d4272004-06-13 20:20:40 +00002831dnl Checks for header files.
2832AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2833dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2834if test "$HAS_ELF" = 1; then
2835 AC_CHECK_LIB(elf, main)
2836fi
2837
2838AC_HEADER_DIRENT
2839
Bram Moolenaar071d4272004-06-13 20:20:40 +00002840dnl If sys/wait.h is not found it might still exist but not be POSIX
2841dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2842if test $ac_cv_header_sys_wait_h = no; then
2843 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2844 AC_TRY_COMPILE([#include <sys/wait.h>],
2845 [union wait xx, yy; xx = yy],
2846 AC_MSG_RESULT(yes)
2847 AC_DEFINE(HAVE_SYS_WAIT_H)
2848 AC_DEFINE(HAVE_UNION_WAIT),
2849 AC_MSG_RESULT(no))
2850fi
2851
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002852AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2853 sys/select.h sys/utsname.h termcap.h fcntl.h \
2854 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2855 termio.h iconv.h inttypes.h langinfo.h math.h \
2856 unistd.h stropts.h errno.h sys/resource.h \
2857 sys/systeminfo.h locale.h sys/stream.h termios.h \
2858 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2859 utime.h sys/param.h libintl.h libgen.h \
2860 util/debug.h util/msg18n.h frame.h sys/acl.h \
2861 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002862
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002863dnl sys/ptem.h depends on sys/stream.h on Solaris
2864AC_CHECK_HEADERS(sys/ptem.h, [], [],
2865[#if defined HAVE_SYS_STREAM_H
2866# include <sys/stream.h>
2867#endif])
2868
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002869dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2870AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2871[#if defined HAVE_SYS_PARAM_H
2872# include <sys/param.h>
2873#endif])
2874
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002875
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002876dnl pthread_np.h may exist but can only be used after including pthread.h
2877AC_MSG_CHECKING([for pthread_np.h])
2878AC_TRY_COMPILE([
2879#include <pthread.h>
2880#include <pthread_np.h>],
2881 [int i; i = 0;],
2882 AC_MSG_RESULT(yes)
2883 AC_DEFINE(HAVE_PTHREAD_NP_H),
2884 AC_MSG_RESULT(no))
2885
Bram Moolenaare344bea2005-09-01 20:46:49 +00002886AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002887if test "x$MACOSX" = "xyes"; then
2888 dnl The strings.h file on OS/X contains a warning and nothing useful.
2889 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2890else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002891
2892dnl Check if strings.h and string.h can both be included when defined.
2893AC_MSG_CHECKING([if strings.h can be included after string.h])
2894cppflags_save=$CPPFLAGS
2895CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2896AC_TRY_COMPILE([
2897#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2898# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2899 /* but don't do it on AIX 5.1 (Uribarri) */
2900#endif
2901#ifdef HAVE_XM_XM_H
2902# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2903#endif
2904#ifdef HAVE_STRING_H
2905# include <string.h>
2906#endif
2907#if defined(HAVE_STRINGS_H)
2908# include <strings.h>
2909#endif
2910 ], [int i; i = 0;],
2911 AC_MSG_RESULT(yes),
2912 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2913 AC_MSG_RESULT(no))
2914CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002915fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002916
2917dnl Checks for typedefs, structures, and compiler characteristics.
2918AC_PROG_GCC_TRADITIONAL
2919AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002920AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002921AC_TYPE_MODE_T
2922AC_TYPE_OFF_T
2923AC_TYPE_PID_T
2924AC_TYPE_SIZE_T
2925AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002926AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002927
Bram Moolenaar071d4272004-06-13 20:20:40 +00002928AC_HEADER_TIME
2929AC_CHECK_TYPE(ino_t, long)
2930AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002931AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002932
2933AC_MSG_CHECKING(for rlim_t)
2934if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2935 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2936else
2937 AC_EGREP_CPP(dnl
2938changequote(<<,>>)dnl
2939<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2940changequote([,]),
2941 [
2942#include <sys/types.h>
2943#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002944# include <stdlib.h>
2945# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002946#endif
2947#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002948# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002949#endif
2950 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2951 AC_MSG_RESULT($ac_cv_type_rlim_t)
2952fi
2953if test $ac_cv_type_rlim_t = no; then
2954 cat >> confdefs.h <<\EOF
2955#define rlim_t unsigned long
2956EOF
2957fi
2958
2959AC_MSG_CHECKING(for stack_t)
2960if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2961 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2962else
2963 AC_EGREP_CPP(stack_t,
2964 [
2965#include <sys/types.h>
2966#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002967# include <stdlib.h>
2968# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002969#endif
2970#include <signal.h>
2971 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2972 AC_MSG_RESULT($ac_cv_type_stack_t)
2973fi
2974if test $ac_cv_type_stack_t = no; then
2975 cat >> confdefs.h <<\EOF
2976#define stack_t struct sigaltstack
2977EOF
2978fi
2979
2980dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2981AC_MSG_CHECKING(whether stack_t has an ss_base field)
2982AC_TRY_COMPILE([
2983#include <sys/types.h>
2984#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002985# include <stdlib.h>
2986# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002987#endif
2988#include <signal.h>
2989#include "confdefs.h"
2990 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2991 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2992 AC_MSG_RESULT(no))
2993
2994olibs="$LIBS"
2995AC_MSG_CHECKING(--with-tlib argument)
2996AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2997if test -n "$with_tlib"; then
2998 AC_MSG_RESULT($with_tlib)
2999 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003000 AC_MSG_CHECKING(for linking with $with_tlib library)
3001 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
3002 dnl Need to check for tgetent() below.
3003 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003004else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003005 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003006 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3007 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003008 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003009 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003010 dnl Older versions of ncurses have bugs, get a new one!
3011 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003012 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00003013 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003014 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3015 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003016 esac
3017 for libname in $tlibs; do
3018 AC_CHECK_LIB(${libname}, tgetent,,)
3019 if test "x$olibs" != "x$LIBS"; then
3020 dnl It's possible that a library is found but it doesn't work
3021 dnl e.g., shared library that cannot be found
3022 dnl compile and run a test program to be sure
3023 AC_TRY_RUN([
3024#ifdef HAVE_TERMCAP_H
3025# include <termcap.h>
3026#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003027#if STDC_HEADERS
3028# include <stdlib.h>
3029# include <stddef.h>
3030#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003031main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3032 res="OK", res="FAIL", res="FAIL")
3033 if test "$res" = "OK"; then
3034 break
3035 fi
3036 AC_MSG_RESULT($libname library is not usable)
3037 LIBS="$olibs"
3038 fi
3039 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003040 if test "x$olibs" = "x$LIBS"; then
3041 AC_MSG_RESULT(no terminal library found)
3042 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003043fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003044
3045if test "x$olibs" = "x$LIBS"; then
3046 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003047 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003048 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3049 AC_MSG_RESULT(yes),
3050 AC_MSG_ERROR([NOT FOUND!
3051 You need to install a terminal library; for example ncurses.
3052 Or specify the name of the library with --with-tlib.]))
3053fi
3054
Bram Moolenaar446cb832008-06-24 21:56:24 +00003055AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3056 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003057 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003058#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003059#ifdef HAVE_TERMCAP_H
3060# include <termcap.h>
3061#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003062#ifdef HAVE_STRING_H
3063# include <string.h>
3064#endif
3065#if STDC_HEADERS
3066# include <stdlib.h>
3067# include <stddef.h>
3068#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003069main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003070{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003071 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003072 vim_cv_terminfo=no
3073 ],[
3074 vim_cv_terminfo=yes
3075 ],[
3076 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3077 ])
3078 ])
3079
3080if test "x$vim_cv_terminfo" = "xyes" ; then
3081 AC_DEFINE(TERMINFO)
3082fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003083
3084if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003085 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3086 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003087 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003088#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003089#ifdef HAVE_TERMCAP_H
3090# include <termcap.h>
3091#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003092#if STDC_HEADERS
3093# include <stdlib.h>
3094# include <stddef.h>
3095#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003096main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003097{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003098 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003099 vim_cv_tgent=zero
3100 ],[
3101 vim_cv_tgent=non-zero
3102 ],[
3103 AC_MSG_ERROR(failed to compile test program.)
3104 ])
3105 ])
3106
3107 if test "x$vim_cv_tgent" = "xzero" ; then
3108 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3109 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003110fi
3111
3112AC_MSG_CHECKING(whether termcap.h contains ospeed)
3113AC_TRY_LINK([
3114#ifdef HAVE_TERMCAP_H
3115# include <termcap.h>
3116#endif
3117 ], [ospeed = 20000],
3118 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3119 [AC_MSG_RESULT(no)
3120 AC_MSG_CHECKING(whether ospeed can be extern)
3121 AC_TRY_LINK([
3122#ifdef HAVE_TERMCAP_H
3123# include <termcap.h>
3124#endif
3125extern short ospeed;
3126 ], [ospeed = 20000],
3127 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3128 AC_MSG_RESULT(no))]
3129 )
3130
3131AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3132AC_TRY_LINK([
3133#ifdef HAVE_TERMCAP_H
3134# include <termcap.h>
3135#endif
3136 ], [if (UP == 0 && BC == 0) PC = 1],
3137 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3138 [AC_MSG_RESULT(no)
3139 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3140 AC_TRY_LINK([
3141#ifdef HAVE_TERMCAP_H
3142# include <termcap.h>
3143#endif
3144extern char *UP, *BC, PC;
3145 ], [if (UP == 0 && BC == 0) PC = 1],
3146 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3147 AC_MSG_RESULT(no))]
3148 )
3149
3150AC_MSG_CHECKING(whether tputs() uses outfuntype)
3151AC_TRY_COMPILE([
3152#ifdef HAVE_TERMCAP_H
3153# include <termcap.h>
3154#endif
3155 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3156 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3157 AC_MSG_RESULT(no))
3158
3159dnl On some SCO machines sys/select redefines struct timeval
3160AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3161AC_TRY_COMPILE([
3162#include <sys/types.h>
3163#include <sys/time.h>
3164#include <sys/select.h>], ,
3165 AC_MSG_RESULT(yes)
3166 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3167 AC_MSG_RESULT(no))
3168
3169dnl AC_DECL_SYS_SIGLIST
3170
3171dnl Checks for pty.c (copied from screen) ==========================
3172AC_MSG_CHECKING(for /dev/ptc)
3173if test -r /dev/ptc; then
3174 AC_DEFINE(HAVE_DEV_PTC)
3175 AC_MSG_RESULT(yes)
3176else
3177 AC_MSG_RESULT(no)
3178fi
3179
3180AC_MSG_CHECKING(for SVR4 ptys)
3181if test -c /dev/ptmx ; then
3182 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3183 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3184 AC_MSG_RESULT(no))
3185else
3186 AC_MSG_RESULT(no)
3187fi
3188
3189AC_MSG_CHECKING(for ptyranges)
3190if test -d /dev/ptym ; then
3191 pdir='/dev/ptym'
3192else
3193 pdir='/dev'
3194fi
3195dnl SCO uses ptyp%d
3196AC_EGREP_CPP(yes,
3197[#ifdef M_UNIX
3198 yes;
3199#endif
3200 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3201dnl if test -c /dev/ptyp19; then
3202dnl ptys=`echo /dev/ptyp??`
3203dnl else
3204dnl ptys=`echo $pdir/pty??`
3205dnl fi
3206if test "$ptys" != "$pdir/pty??" ; then
3207 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3208 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3209 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3210 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3211 AC_MSG_RESULT([$p0 / $p1])
3212else
3213 AC_MSG_RESULT([don't know])
3214fi
3215
3216dnl **** pty mode/group handling ****
3217dnl
3218dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003219rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003220AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3221 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003222 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003223#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003224#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003225#if STDC_HEADERS
3226# include <stdlib.h>
3227# include <stddef.h>
3228#endif
3229#ifdef HAVE_UNISTD_H
3230#include <unistd.h>
3231#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003232#include <sys/stat.h>
3233#include <stdio.h>
3234main()
3235{
3236 struct stat sb;
3237 char *x,*ttyname();
3238 int om, m;
3239 FILE *fp;
3240
3241 if (!(x = ttyname(0))) exit(1);
3242 if (stat(x, &sb)) exit(1);
3243 om = sb.st_mode;
3244 if (om & 002) exit(0);
3245 m = system("mesg y");
3246 if (m == -1 || m == 127) exit(1);
3247 if (stat(x, &sb)) exit(1);
3248 m = sb.st_mode;
3249 if (chmod(x, om)) exit(1);
3250 if (m & 002) exit(0);
3251 if (sb.st_gid == getgid()) exit(1);
3252 if (!(fp=fopen("conftest_grp", "w")))
3253 exit(1);
3254 fprintf(fp, "%d\n", sb.st_gid);
3255 fclose(fp);
3256 exit(0);
3257}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003258 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003259 if test -f conftest_grp; then
3260 vim_cv_tty_group=`cat conftest_grp`
3261 if test "x$vim_cv_tty_mode" = "x" ; then
3262 vim_cv_tty_mode=0620
3263 fi
3264 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3265 else
3266 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003267 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003268 fi
3269 ],[
3270 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003271 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003272 ],[
3273 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3274 ])
3275 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003276rm -f conftest_grp
3277
Bram Moolenaar446cb832008-06-24 21:56:24 +00003278if test "x$vim_cv_tty_group" != "xworld" ; then
3279 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3280 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003281 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 +00003282 else
3283 AC_DEFINE(PTYMODE, 0620)
3284 fi
3285fi
3286
Bram Moolenaar071d4272004-06-13 20:20:40 +00003287dnl Checks for library functions. ===================================
3288
3289AC_TYPE_SIGNAL
3290
3291dnl find out what to use at the end of a signal function
3292if test $ac_cv_type_signal = void; then
3293 AC_DEFINE(SIGRETURN, [return])
3294else
3295 AC_DEFINE(SIGRETURN, [return 0])
3296fi
3297
3298dnl check if struct sigcontext is defined (used for SGI only)
3299AC_MSG_CHECKING(for struct sigcontext)
3300AC_TRY_COMPILE([
3301#include <signal.h>
3302test_sig()
3303{
3304 struct sigcontext *scont;
3305 scont = (struct sigcontext *)0;
3306 return 1;
3307} ], ,
3308 AC_MSG_RESULT(yes)
3309 AC_DEFINE(HAVE_SIGCONTEXT),
3310 AC_MSG_RESULT(no))
3311
3312dnl tricky stuff: try to find out if getcwd() is implemented with
3313dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003314AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3315 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003316 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003317#include "confdefs.h"
3318#ifdef HAVE_UNISTD_H
3319#include <unistd.h>
3320#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003321char *dagger[] = { "IFS=pwd", 0 };
3322main()
3323{
3324 char buffer[500];
3325 extern char **environ;
3326 environ = dagger;
3327 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003328}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003329 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003330 vim_cv_getcwd_broken=no
3331 ],[
3332 vim_cv_getcwd_broken=yes
3333 ],[
3334 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3335 ])
3336 ])
3337
3338if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3339 AC_DEFINE(BAD_GETCWD)
3340fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003341
Bram Moolenaar25153e12010-02-24 14:47:08 +01003342dnl Check for functions in one big call, to reduce the size of configure.
3343dnl Can only be used for functions that do not require any include.
3344AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003345 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003346 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003347 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003348 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003349 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3350 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003351AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003352
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003353dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3354dnl appropriate, so that off_t is 64 bits when needed.
3355AC_SYS_LARGEFILE
3356
Bram Moolenaar071d4272004-06-13 20:20:40 +00003357dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3358AC_MSG_CHECKING(for st_blksize)
3359AC_TRY_COMPILE(
3360[#include <sys/types.h>
3361#include <sys/stat.h>],
3362[ struct stat st;
3363 int n;
3364
3365 stat("/", &st);
3366 n = (int)st.st_blksize;],
3367 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3368 AC_MSG_RESULT(no))
3369
Bram Moolenaar446cb832008-06-24 21:56:24 +00003370AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3371 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003372 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003373#include "confdefs.h"
3374#if STDC_HEADERS
3375# include <stdlib.h>
3376# include <stddef.h>
3377#endif
3378#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003379#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003380main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003381 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003382 vim_cv_stat_ignores_slash=yes
3383 ],[
3384 vim_cv_stat_ignores_slash=no
3385 ],[
3386 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3387 ])
3388 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003389
Bram Moolenaar446cb832008-06-24 21:56:24 +00003390if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3391 AC_DEFINE(STAT_IGNORES_SLASH)
3392fi
3393
Bram Moolenaar071d4272004-06-13 20:20:40 +00003394dnl Link with iconv for charset translation, if not found without library.
3395dnl check for iconv() requires including iconv.h
3396dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3397dnl has been installed.
3398AC_MSG_CHECKING(for iconv_open())
3399save_LIBS="$LIBS"
3400LIBS="$LIBS -liconv"
3401AC_TRY_LINK([
3402#ifdef HAVE_ICONV_H
3403# include <iconv.h>
3404#endif
3405 ], [iconv_open("fr", "to");],
3406 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3407 LIBS="$save_LIBS"
3408 AC_TRY_LINK([
3409#ifdef HAVE_ICONV_H
3410# include <iconv.h>
3411#endif
3412 ], [iconv_open("fr", "to");],
3413 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3414 AC_MSG_RESULT(no)))
3415
3416
3417AC_MSG_CHECKING(for nl_langinfo(CODESET))
3418AC_TRY_LINK([
3419#ifdef HAVE_LANGINFO_H
3420# include <langinfo.h>
3421#endif
3422], [char *cs = nl_langinfo(CODESET);],
3423 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3424 AC_MSG_RESULT(no))
3425
Bram Moolenaar446cb832008-06-24 21:56:24 +00003426dnl Need various functions for floating point support. Only enable
3427dnl floating point when they are all present.
3428AC_CHECK_LIB(m, strtod)
3429AC_MSG_CHECKING([for strtod() and other floating point functions])
3430AC_TRY_LINK([
3431#ifdef HAVE_MATH_H
3432# include <math.h>
3433#endif
3434#if STDC_HEADERS
3435# include <stdlib.h>
3436# include <stddef.h>
3437#endif
3438], [char *s; double d;
3439 d = strtod("1.1", &s);
3440 d = fabs(1.11);
3441 d = ceil(1.11);
3442 d = floor(1.11);
3443 d = log10(1.11);
3444 d = pow(1.11, 2.22);
3445 d = sqrt(1.11);
3446 d = sin(1.11);
3447 d = cos(1.11);
3448 d = atan(1.11);
3449 ],
3450 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3451 AC_MSG_RESULT(no))
3452
Bram Moolenaar071d4272004-06-13 20:20:40 +00003453dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3454dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003455dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003456AC_MSG_CHECKING(--disable-acl argument)
3457AC_ARG_ENABLE(acl,
3458 [ --disable-acl Don't check for ACL support.],
3459 , [enable_acl="yes"])
3460if test "$enable_acl" = "yes"; then
3461AC_MSG_RESULT(no)
3462AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3463 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3464 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3465
3466AC_MSG_CHECKING(for POSIX ACL support)
3467AC_TRY_LINK([
3468#include <sys/types.h>
3469#ifdef HAVE_SYS_ACL_H
3470# include <sys/acl.h>
3471#endif
3472acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3473 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3474 acl_free(acl);],
3475 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3476 AC_MSG_RESULT(no))
3477
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003478AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003479AC_MSG_CHECKING(for Solaris ACL support)
3480AC_TRY_LINK([
3481#ifdef HAVE_SYS_ACL_H
3482# include <sys/acl.h>
3483#endif], [acl("foo", GETACLCNT, 0, NULL);
3484 ],
3485 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003486 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003487
3488AC_MSG_CHECKING(for AIX ACL support)
3489AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003490#if STDC_HEADERS
3491# include <stdlib.h>
3492# include <stddef.h>
3493#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003494#ifdef HAVE_SYS_ACL_H
3495# include <sys/acl.h>
3496#endif
3497#ifdef HAVE_SYS_ACCESS_H
3498# include <sys/access.h>
3499#endif
3500#define _ALL_SOURCE
3501
3502#include <sys/stat.h>
3503
3504int aclsize;
3505struct acl *aclent;], [aclsize = sizeof(struct acl);
3506 aclent = (void *)malloc(aclsize);
3507 statacl("foo", STX_NORMAL, aclent, aclsize);
3508 ],
3509 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3510 AC_MSG_RESULT(no))
3511else
3512 AC_MSG_RESULT(yes)
3513fi
3514
3515AC_MSG_CHECKING(--disable-gpm argument)
3516AC_ARG_ENABLE(gpm,
3517 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3518 [enable_gpm="yes"])
3519
3520if test "$enable_gpm" = "yes"; then
3521 AC_MSG_RESULT(no)
3522 dnl Checking if gpm support can be compiled
3523 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3524 [olibs="$LIBS" ; LIBS="-lgpm"]
3525 AC_TRY_LINK(
3526 [#include <gpm.h>
3527 #include <linux/keyboard.h>],
3528 [Gpm_GetLibVersion(NULL);],
3529 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3530 dnl FEAT_MOUSE_GPM if mouse support is included
3531 [vi_cv_have_gpm=yes],
3532 [vi_cv_have_gpm=no])
3533 [LIBS="$olibs"]
3534 )
3535 if test $vi_cv_have_gpm = yes; then
3536 LIBS="$LIBS -lgpm"
3537 AC_DEFINE(HAVE_GPM)
3538 fi
3539else
3540 AC_MSG_RESULT(yes)
3541fi
3542
Bram Moolenaar446cb832008-06-24 21:56:24 +00003543AC_MSG_CHECKING(--disable-sysmouse argument)
3544AC_ARG_ENABLE(sysmouse,
3545 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3546 [enable_sysmouse="yes"])
3547
3548if test "$enable_sysmouse" = "yes"; then
3549 AC_MSG_RESULT(no)
3550 dnl Checking if sysmouse support can be compiled
3551 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3552 dnl defines FEAT_SYSMOUSE if mouse support is included
3553 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3554 AC_TRY_LINK(
3555 [#include <sys/consio.h>
3556 #include <signal.h>
3557 #include <sys/fbio.h>],
3558 [struct mouse_info mouse;
3559 mouse.operation = MOUSE_MODE;
3560 mouse.operation = MOUSE_SHOW;
3561 mouse.u.mode.mode = 0;
3562 mouse.u.mode.signal = SIGUSR2;],
3563 [vi_cv_have_sysmouse=yes],
3564 [vi_cv_have_sysmouse=no])
3565 )
3566 if test $vi_cv_have_sysmouse = yes; then
3567 AC_DEFINE(HAVE_SYSMOUSE)
3568 fi
3569else
3570 AC_MSG_RESULT(yes)
3571fi
3572
Bram Moolenaarf05da212009-11-17 16:13:15 +00003573dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3574AC_MSG_CHECKING(for FD_CLOEXEC)
3575AC_TRY_COMPILE(
3576[#if HAVE_FCNTL_H
3577# include <fcntl.h>
3578#endif],
3579[ int flag = FD_CLOEXEC;],
3580 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3581 AC_MSG_RESULT(not usable))
3582
Bram Moolenaar071d4272004-06-13 20:20:40 +00003583dnl rename needs to be checked separately to work on Nextstep with cc
3584AC_MSG_CHECKING(for rename)
3585AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3586 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3587 AC_MSG_RESULT(no))
3588
3589dnl sysctl() may exist but not the arguments we use
3590AC_MSG_CHECKING(for sysctl)
3591AC_TRY_COMPILE(
3592[#include <sys/types.h>
3593#include <sys/sysctl.h>],
3594[ int mib[2], r;
3595 size_t len;
3596
3597 mib[0] = CTL_HW;
3598 mib[1] = HW_USERMEM;
3599 len = sizeof(r);
3600 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3601 ],
3602 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3603 AC_MSG_RESULT(not usable))
3604
3605dnl sysinfo() may exist but not be Linux compatible
3606AC_MSG_CHECKING(for sysinfo)
3607AC_TRY_COMPILE(
3608[#include <sys/types.h>
3609#include <sys/sysinfo.h>],
3610[ struct sysinfo sinfo;
3611 int t;
3612
3613 (void)sysinfo(&sinfo);
3614 t = sinfo.totalram;
3615 ],
3616 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3617 AC_MSG_RESULT(not usable))
3618
Bram Moolenaar914572a2007-05-01 11:37:47 +00003619dnl struct sysinfo may have the mem_unit field or not
3620AC_MSG_CHECKING(for sysinfo.mem_unit)
3621AC_TRY_COMPILE(
3622[#include <sys/types.h>
3623#include <sys/sysinfo.h>],
3624[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003625 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003626 ],
3627 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3628 AC_MSG_RESULT(no))
3629
Bram Moolenaar071d4272004-06-13 20:20:40 +00003630dnl sysconf() may exist but not support what we want to use
3631AC_MSG_CHECKING(for sysconf)
3632AC_TRY_COMPILE(
3633[#include <unistd.h>],
3634[ (void)sysconf(_SC_PAGESIZE);
3635 (void)sysconf(_SC_PHYS_PAGES);
3636 ],
3637 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3638 AC_MSG_RESULT(not usable))
3639
Bram Moolenaar914703b2010-05-31 21:59:46 +02003640AC_CHECK_SIZEOF([int])
3641AC_CHECK_SIZEOF([long])
3642AC_CHECK_SIZEOF([time_t])
3643AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003644
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003645dnl Use different names to avoid clashing with other header files.
3646AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3647AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3648
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003649dnl Make sure that uint32_t is really 32 bits unsigned.
3650AC_MSG_CHECKING([uint32_t is 32 bits])
3651AC_TRY_RUN([
3652#ifdef HAVE_STDINT_H
3653# include <stdint.h>
3654#endif
3655#ifdef HAVE_INTTYPES_H
3656# include <inttypes.h>
3657#endif
3658main() {
3659 uint32_t nr1 = (uint32_t)-1;
3660 uint32_t nr2 = (uint32_t)0xffffffffUL;
3661 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3662 exit(0);
3663}],
3664AC_MSG_RESULT(ok),
3665AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003666AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003667
Bram Moolenaar446cb832008-06-24 21:56:24 +00003668dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3669dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3670
Bram Moolenaar071d4272004-06-13 20:20:40 +00003671[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003672#include "confdefs.h"
3673#ifdef HAVE_STRING_H
3674# include <string.h>
3675#endif
3676#if STDC_HEADERS
3677# include <stdlib.h>
3678# include <stddef.h>
3679#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003680main() {
3681 char buf[10];
3682 strcpy(buf, "abcdefghi");
3683 mch_memmove(buf, buf + 2, 3);
3684 if (strncmp(buf, "ababcf", 6))
3685 exit(1);
3686 strcpy(buf, "abcdefghi");
3687 mch_memmove(buf + 2, buf, 3);
3688 if (strncmp(buf, "cdedef", 6))
3689 exit(1);
3690 exit(0); /* libc version works properly. */
3691}']
3692
Bram Moolenaar446cb832008-06-24 21:56:24 +00003693AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3694 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003695 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 +00003696 [
3697 vim_cv_memmove_handles_overlap=yes
3698 ],[
3699 vim_cv_memmove_handles_overlap=no
3700 ],[
3701 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3702 ])
3703 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003704
Bram Moolenaar446cb832008-06-24 21:56:24 +00003705if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3706 AC_DEFINE(USEMEMMOVE)
3707else
3708 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3709 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003710 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 +00003711 [
3712 vim_cv_bcopy_handles_overlap=yes
3713 ],[
3714 vim_cv_bcopy_handles_overlap=no
3715 ],[
3716 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3717 ])
3718 ])
3719
3720 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3721 AC_DEFINE(USEBCOPY)
3722 else
3723 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3724 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003725 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 +00003726 [
3727 vim_cv_memcpy_handles_overlap=yes
3728 ],[
3729 vim_cv_memcpy_handles_overlap=no
3730 ],[
3731 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3732 ])
3733 ])
3734
3735 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3736 AC_DEFINE(USEMEMCPY)
3737 fi
3738 fi
3739fi
3740
Bram Moolenaar071d4272004-06-13 20:20:40 +00003741
3742dnl Check for multibyte locale functions
3743dnl Find out if _Xsetlocale() is supported by libX11.
3744dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003745if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003746 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003747 libs_save=$LIBS
3748 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
3749 CFLAGS="$CFLAGS $X_CFLAGS"
3750
3751 AC_MSG_CHECKING(whether X_LOCALE needed)
3752 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3753 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3754 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3755 AC_MSG_RESULT(no))
3756
3757 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
3758 AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes)
3759 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
3760
Bram Moolenaar071d4272004-06-13 20:20:40 +00003761 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003762 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00003763fi
3764
3765dnl Link with xpg4, it is said to make Korean locale working
3766AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3767
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003768dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003769dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003770dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003771dnl -t for typedefs (many ctags have this)
3772dnl -s for static functions (Elvis ctags only?)
3773dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3774dnl -i+m to test for older Exuberant ctags
3775AC_MSG_CHECKING(how to create tags)
3776test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003777if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003778 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003779elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3780 TAGPRG="exctags -I INIT+ --fields=+S"
3781elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3782 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003783else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003784 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003785 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3786 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3787 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3788 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3789 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3790 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3791 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3792fi
3793test -f tags.save && mv tags.save tags
3794AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3795
3796dnl Check how we can run man with a section number
3797AC_MSG_CHECKING(how to run man with a section nr)
3798MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003799(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 +00003800AC_MSG_RESULT($MANDEF)
3801if test "$MANDEF" = "man -s"; then
3802 AC_DEFINE(USEMAN_S)
3803fi
3804
3805dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003806dnl We take care to base this on an empty LIBS: on some systems libelf would be
3807dnl in LIBS and implicitly take along libintl. The final LIBS would then not
3808dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003809AC_MSG_CHECKING(--disable-nls argument)
3810AC_ARG_ENABLE(nls,
3811 [ --disable-nls Don't support NLS (gettext()).], ,
3812 [enable_nls="yes"])
3813
3814if test "$enable_nls" = "yes"; then
3815 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003816
3817 INSTALL_LANGS=install-languages
3818 AC_SUBST(INSTALL_LANGS)
3819 INSTALL_TOOL_LANGS=install-tool-languages
3820 AC_SUBST(INSTALL_TOOL_LANGS)
3821
Bram Moolenaar071d4272004-06-13 20:20:40 +00003822 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3823 AC_MSG_CHECKING([for NLS])
3824 if test -f po/Makefile; then
3825 have_gettext="no"
3826 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003827 olibs=$LIBS
3828 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00003829 AC_TRY_LINK(
3830 [#include <libintl.h>],
3831 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003832 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
3833 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003834 AC_TRY_LINK(
3835 [#include <libintl.h>],
3836 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003837 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
3838 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00003839 AC_MSG_RESULT([gettext() doesn't work]);
3840 LIBS=$olibs))
3841 else
3842 AC_MSG_RESULT([msgfmt not found - disabled]);
3843 fi
Bram Moolenaar278eb582014-07-30 13:22:52 +02003844 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003845 AC_DEFINE(HAVE_GETTEXT)
3846 MAKEMO=yes
3847 AC_SUBST(MAKEMO)
3848 dnl this was added in GNU gettext 0.10.36
3849 AC_CHECK_FUNCS(bind_textdomain_codeset)
3850 dnl _nl_msg_cat_cntr is required for GNU gettext
3851 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3852 AC_TRY_LINK(
3853 [#include <libintl.h>
3854 extern int _nl_msg_cat_cntr;],
3855 [++_nl_msg_cat_cntr;],
3856 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3857 AC_MSG_RESULT([no]))
3858 fi
3859 else
3860 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3861 fi
3862else
3863 AC_MSG_RESULT(yes)
3864fi
3865
3866dnl Check for dynamic linking loader
3867AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3868if test x${DLL} = xdlfcn.h; then
3869 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3870 AC_MSG_CHECKING([for dlopen()])
3871 AC_TRY_LINK(,[
3872 extern void* dlopen();
3873 dlopen();
3874 ],
3875 AC_MSG_RESULT(yes);
3876 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3877 AC_MSG_RESULT(no);
3878 AC_MSG_CHECKING([for dlopen() in -ldl])
3879 olibs=$LIBS
3880 LIBS="$LIBS -ldl"
3881 AC_TRY_LINK(,[
3882 extern void* dlopen();
3883 dlopen();
3884 ],
3885 AC_MSG_RESULT(yes);
3886 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3887 AC_MSG_RESULT(no);
3888 LIBS=$olibs))
3889 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3890 dnl ick :-)
3891 AC_MSG_CHECKING([for dlsym()])
3892 AC_TRY_LINK(,[
3893 extern void* dlsym();
3894 dlsym();
3895 ],
3896 AC_MSG_RESULT(yes);
3897 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3898 AC_MSG_RESULT(no);
3899 AC_MSG_CHECKING([for dlsym() in -ldl])
3900 olibs=$LIBS
3901 LIBS="$LIBS -ldl"
3902 AC_TRY_LINK(,[
3903 extern void* dlsym();
3904 dlsym();
3905 ],
3906 AC_MSG_RESULT(yes);
3907 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3908 AC_MSG_RESULT(no);
3909 LIBS=$olibs))
3910elif test x${DLL} = xdl.h; then
3911 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3912 AC_MSG_CHECKING([for shl_load()])
3913 AC_TRY_LINK(,[
3914 extern void* shl_load();
3915 shl_load();
3916 ],
3917 AC_MSG_RESULT(yes);
3918 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3919 AC_MSG_RESULT(no);
3920 AC_MSG_CHECKING([for shl_load() in -ldld])
3921 olibs=$LIBS
3922 LIBS="$LIBS -ldld"
3923 AC_TRY_LINK(,[
3924 extern void* shl_load();
3925 shl_load();
3926 ],
3927 AC_MSG_RESULT(yes);
3928 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3929 AC_MSG_RESULT(no);
3930 LIBS=$olibs))
3931fi
3932AC_CHECK_HEADERS(setjmp.h)
3933
3934if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3935 dnl -ldl must come after DynaLoader.a
3936 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3937 LIBS=`echo $LIBS | sed s/-ldl//`
3938 PERL_LIBS="$PERL_LIBS -ldl"
3939 fi
3940fi
3941
Bram Moolenaar164fca32010-07-14 13:58:07 +02003942if test "x$MACOSX" = "xyes"; then
3943 AC_MSG_CHECKING(whether we need -framework Cocoa)
3944 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3945 dnl disabled during tiny build)
3946 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3947 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003948 AC_MSG_RESULT(yes)
3949 else
3950 AC_MSG_RESULT(no)
3951 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003952 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3953 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3954 dnl missing Objective-C symbols.
3955 if test "x$features" = "xtiny"; then
3956 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3957 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3958 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003959fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003960if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003961 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003962fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003963
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003964dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3965dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3966dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003967dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3968dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003969DEPEND_CFLAGS_FILTER=
3970if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003971 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003972 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003973 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003974 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003975 AC_MSG_RESULT(yes)
3976 else
3977 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003978 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003979 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3980 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003981 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003982 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003983 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3984 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02003985 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 +00003986 AC_MSG_RESULT(yes)
3987 else
3988 AC_MSG_RESULT(no)
3989 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003990fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003991AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003992
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003993dnl link.sh tries to avoid overlinking in a hackish way.
3994dnl At least GNU ld supports --as-needed which provides the same functionality
3995dnl at linker level. Let's use it.
3996AC_MSG_CHECKING(linker --as-needed support)
3997LINK_AS_NEEDED=
3998# Check if linker supports --as-needed and --no-as-needed options
3999if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004000 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004001 LINK_AS_NEEDED=yes
4002fi
4003if test "$LINK_AS_NEEDED" = yes; then
4004 AC_MSG_RESULT(yes)
4005else
4006 AC_MSG_RESULT(no)
4007fi
4008AC_SUBST(LINK_AS_NEEDED)
4009
Bram Moolenaar77c19352012-06-13 19:19:41 +02004010# IBM z/OS reset CFLAGS for config.mk
4011if test "$zOSUnix" = "yes"; then
4012 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4013fi
4014
Bram Moolenaar071d4272004-06-13 20:20:40 +00004015dnl write output files
4016AC_OUTPUT(auto/config.mk:config.mk.in)
4017
4018dnl vim: set sw=2 tw=78 fo+=l: