blob: 9d8121530e25edd05714706f4ecfd6d3185665ce [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 Moolenaar6c927552015-03-24 12:21:33 +01001129 @echo "python_PYTHONFRAMEWORK='$(PYTHONFRAMEWORK)'"
1130 @echo "python_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'"
1131 @echo "python_PYTHONFRAMEWORKINSTALLDIR='$(PYTHONFRAMEWORKINSTALLDIR)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001132eof
1133 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +00001134 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1135 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001136 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
1137 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
1138 vi_cv_path_python_plibs="-framework Python"
Bram Moolenaar6c927552015-03-24 12:21:33 +01001139 if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then
1140 vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python"
1141 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001142 else
1143 if test "${vi_cv_var_python_version}" = "1.4"; then
1144 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
1145 else
1146 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
1147 fi
Bram Moolenaar6c927552015-03-24 12:21:33 +01001148 dnl -- Check if the path contained in python_LINKFORSHARED is
1149 dnl usable for vim build. If not, make and try other
1150 dnl candidates.
1151 if test -n "${python_LINKFORSHARED}"; then
1152 python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]].*/\1/'`
1153 python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]][[ \t]]*\(.*\)/\2/'`
1154 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1155 dnl -- The path looks relative. Guess the absolute one using
1156 dnl the prefix and try that.
1157 python_link_path="${python_PYTHONFRAMEWORKPREFIX}/${python_link_path}"
1158 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then
1159 dnl -- A last resort.
1160 python_link_path="${python_PYTHONFRAMEWORKINSTALLDIR}/Versions/${vi_cv_var_python_version}/${python_PYTHONFRAMEWORK}"
1161 dnl -- No check is done. The last word is left to the
1162 dnl "sanity" test on link flags that follows shortly.
1163 fi
1164 python_LINKFORSHARED="${python_link_symbol} ${python_link_path}"
1165 fi
1166 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +02001167 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 +00001168 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1169 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
1170 fi
1171 ])
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001172 AC_CACHE_VAL(vi_cv_dll_name_python,
1173 [
1174 if test "X$python_DLLLIBRARY" != "X"; then
1175 vi_cv_dll_name_python="$python_DLLLIBRARY"
1176 else
1177 vi_cv_dll_name_python="$python_INSTSONAME"
1178 fi
1179 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001180
1181 PYTHON_LIBS="${vi_cv_path_python_plibs}"
1182 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001183 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 +00001184 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001185 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 +00001186 fi
1187 PYTHON_SRC="if_python.c"
Bram Moolenaar9bdb9a02012-07-25 16:32:08 +02001188 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001189 if test "${vi_cv_var_python_version}" = "1.4"; then
1190 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
1191 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001192 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 +00001193
1194 dnl On FreeBSD linking with "-pthread" is required to use threads.
1195 dnl _THREAD_SAFE must be used for compiling then.
1196 dnl The "-pthread" is added to $LIBS, so that the following check for
1197 dnl sigaltstack() will look in libc_r (it's there in libc!).
1198 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1199 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1200 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1201 AC_MSG_CHECKING([if -pthread should be used])
1202 threadsafe_flag=
1203 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00001204 dnl if test "x$MACOSX" != "xyes"; then
1205 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001206 test "$GCC" = yes && threadsafe_flag="-pthread"
1207 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1208 threadsafe_flag="-D_THREAD_SAFE"
1209 thread_lib="-pthread"
1210 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001211 if test "`(uname) 2>/dev/null`" = SunOS; then
1212 threadsafe_flag="-pthreads"
1213 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001214 fi
1215 libs_save_old=$LIBS
1216 if test -n "$threadsafe_flag"; then
1217 cflags_save=$CFLAGS
1218 CFLAGS="$CFLAGS $threadsafe_flag"
1219 LIBS="$LIBS $thread_lib"
1220 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001221 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +00001222 AC_MSG_RESULT(no); LIBS=$libs_save_old
1223 )
1224 CFLAGS=$cflags_save
1225 else
1226 AC_MSG_RESULT(no)
1227 fi
1228
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001229 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +00001230 dnl added for Python.
1231 AC_MSG_CHECKING([if compile and link flags for Python are sane])
1232 cflags_save=$CFLAGS
1233 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +02001234 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001235 LIBS="$LIBS $PYTHON_LIBS"
1236 AC_TRY_LINK(,[ ],
1237 AC_MSG_RESULT(yes); python_ok=yes,
1238 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
1239 CFLAGS=$cflags_save
1240 LIBS=$libs_save
1241 if test $python_ok = yes; then
1242 AC_DEFINE(FEAT_PYTHON)
1243 else
1244 LIBS=$libs_save_old
1245 PYTHON_SRC=
1246 PYTHON_OBJ=
1247 PYTHON_LIBS=
1248 PYTHON_CFLAGS=
1249 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001250 fi
1251 else
1252 AC_MSG_RESULT(too old)
1253 fi
1254 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001255
1256 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then
1257 AC_MSG_ERROR([could not configure python])
1258 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001259fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001260
Bram Moolenaar071d4272004-06-13 20:20:40 +00001261AC_SUBST(PYTHON_CONFDIR)
1262AC_SUBST(PYTHON_LIBS)
1263AC_SUBST(PYTHON_GETPATH_CFLAGS)
1264AC_SUBST(PYTHON_CFLAGS)
1265AC_SUBST(PYTHON_SRC)
1266AC_SUBST(PYTHON_OBJ)
1267
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001268
1269AC_MSG_CHECKING(--enable-python3interp argument)
1270AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001271 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001272 [enable_python3interp="no"])
1273AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001274if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001275 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1276 AC_MSG_ERROR([cannot use Python with tiny or small features])
1277 fi
1278
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001279 dnl -- find the python3 executable
Bram Moolenaar09ba6d72012-12-12 14:25:05 +01001280 AC_PATH_PROGS(vi_cv_path_python3, python3 python)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001281 if test "X$vi_cv_path_python3" != "X"; then
1282
1283 dnl -- get its version number
1284 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
1285 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001286 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001287 ]])
1288
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001289 dnl -- it must be at least version 3
1290 AC_MSG_CHECKING(Python is 3.0 or better)
1291 if ${vi_cv_path_python3} -c \
1292 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)"
1293 then
1294 AC_MSG_RESULT(yep)
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001295
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001296 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
1297 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001298 [
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001299 vi_cv_var_python3_abiflags=
1300 if ${vi_cv_path_python3} -c \
1301 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1302 then
1303 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1304 "import sys; print(sys.abiflags)"`
1305 fi ])
1306
1307 dnl -- find where python3 thinks it was installed
1308 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1309 [ vi_cv_path_python3_pfx=`
1310 ${vi_cv_path_python3} -c \
1311 "import sys; print(sys.prefix)"` ])
1312
1313 dnl -- and where it thinks it runs
1314 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1315 [ vi_cv_path_python3_epfx=`
1316 ${vi_cv_path_python3} -c \
1317 "import sys; print(sys.exec_prefix)"` ])
1318
1319 dnl -- python3's internal library path
1320
1321 AC_CACHE_VAL(vi_cv_path_python3path,
1322 [ vi_cv_path_python3path=`
1323 unset PYTHONPATH;
1324 ${vi_cv_path_python3} -c \
1325 "import sys, string; print(':'.join(sys.path))"` ])
1326
1327 dnl -- where the Python implementation library archives are
1328
1329 AC_ARG_WITH(python3-config-dir,
1330 [ --with-python3-config-dir=PATH Python's config directory],
1331 [ vi_cv_path_python3_conf="${withval}" ] )
1332
1333 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1334 [
1335 vi_cv_path_python3_conf=
Bram Moolenaarfee496d2013-07-12 20:07:24 +02001336 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001337 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"`
1338 if test -d "$d" && test -f "$d/config.c"; then
1339 vi_cv_path_python3_conf="$d"
1340 else
1341 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
1342 for subdir in lib64 lib share; do
1343 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
1344 if test -d "$d" && test -f "$d/config.c"; then
1345 vi_cv_path_python3_conf="$d"
1346 fi
1347 done
1348 done
1349 fi
1350 ])
1351
1352 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1353
1354 if test "X$PYTHON3_CONFDIR" = "X"; then
1355 AC_MSG_RESULT([can't find it!])
1356 else
1357
1358 dnl -- we need to examine Python's config/Makefile too
1359 dnl see what the interpreter is built from
1360 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1361 [
1362 pwd=`pwd`
1363 tmp_mkf="$pwd/config-PyMake$$"
1364 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001365__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001366 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001367 @echo "python3_LIBS='$(LIBS)'"
1368 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaarf94a13c2012-09-21 13:26:49 +02001369 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001370 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001371eof
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001372 dnl -- delete the lines from make about Entering/Leaving directory
1373 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1374 rm -f -- "${tmp_mkf}"
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001375 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 +02001376 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
1377 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1378 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1379 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1380 ])
1381 AC_CACHE_VAL(vi_cv_dll_name_python3,
1382 [
1383 if test "X$python3_DLLLIBRARY" != "X"; then
1384 vi_cv_dll_name_python3="$python3_DLLLIBRARY"
1385 else
1386 vi_cv_dll_name_python3="$python3_INSTSONAME"
1387 fi
1388 ])
1389
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001390 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1391 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001392 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 +02001393 else
Bram Moolenaar780c3e92013-06-11 20:53:28 +02001394 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 +02001395 fi
1396 PYTHON3_SRC="if_python3.c"
1397 PYTHON3_OBJ="objects/if_python3.o"
1398
1399 dnl On FreeBSD linking with "-pthread" is required to use threads.
1400 dnl _THREAD_SAFE must be used for compiling then.
1401 dnl The "-pthread" is added to $LIBS, so that the following check for
1402 dnl sigaltstack() will look in libc_r (it's there in libc!).
1403 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1404 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1405 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1406 AC_MSG_CHECKING([if -pthread should be used])
1407 threadsafe_flag=
1408 thread_lib=
1409 dnl if test "x$MACOSX" != "xyes"; then
1410 if test "`(uname) 2>/dev/null`" != Darwin; then
1411 test "$GCC" = yes && threadsafe_flag="-pthread"
1412 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1413 threadsafe_flag="-D_THREAD_SAFE"
1414 thread_lib="-pthread"
1415 fi
1416 if test "`(uname) 2>/dev/null`" = SunOS; then
1417 threadsafe_flag="-pthreads"
1418 fi
1419 fi
1420 libs_save_old=$LIBS
1421 if test -n "$threadsafe_flag"; then
1422 cflags_save=$CFLAGS
1423 CFLAGS="$CFLAGS $threadsafe_flag"
1424 LIBS="$LIBS $thread_lib"
1425 AC_TRY_LINK(,[ ],
1426 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1427 AC_MSG_RESULT(no); LIBS=$libs_save_old
1428 )
1429 CFLAGS=$cflags_save
1430 else
1431 AC_MSG_RESULT(no)
1432 fi
1433
1434 dnl check that compiling a simple program still works with the flags
1435 dnl added for Python.
1436 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
1437 cflags_save=$CFLAGS
1438 libs_save=$LIBS
1439 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1440 LIBS="$LIBS $PYTHON3_LIBS"
1441 AC_TRY_LINK(,[ ],
1442 AC_MSG_RESULT(yes); python3_ok=yes,
1443 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1444 CFLAGS=$cflags_save
1445 LIBS=$libs_save
1446 if test "$python3_ok" = yes; then
1447 AC_DEFINE(FEAT_PYTHON3)
1448 else
1449 LIBS=$libs_save_old
1450 PYTHON3_SRC=
1451 PYTHON3_OBJ=
1452 PYTHON3_LIBS=
1453 PYTHON3_CFLAGS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001454 fi
1455 fi
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02001456 else
1457 AC_MSG_RESULT(too old)
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001458 fi
1459 fi
Bram Moolenaar1612b1a2013-06-14 21:22:39 +02001460 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then
1461 AC_MSG_ERROR([could not configure python3])
1462 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001463fi
1464
1465AC_SUBST(PYTHON3_CONFDIR)
1466AC_SUBST(PYTHON3_LIBS)
1467AC_SUBST(PYTHON3_CFLAGS)
1468AC_SUBST(PYTHON3_SRC)
1469AC_SUBST(PYTHON3_OBJ)
1470
1471dnl if python2.x and python3.x are enabled one can only link in code
1472dnl with dlopen(), dlsym(), dlclose()
1473if test "$python_ok" = yes && test "$python3_ok" = yes; then
1474 AC_DEFINE(DYNAMIC_PYTHON)
1475 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001476 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001477 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001478 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001479 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001480 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001481 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001482 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001483 #include <dlfcn.h>
1484 /* If this program fails, then RTLD_GLOBAL is needed.
1485 * RTLD_GLOBAL will be used and then it is not possible to
1486 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001487 * Only the first python version used will be switched on.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001488 */
1489
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001490 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001491 {
1492 int needed = 0;
1493 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1494 if (pylib != 0)
1495 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001496 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001497 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1498 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1499 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001500 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001501 (*init)();
1502 needed = (*simple)("import termios") == -1;
1503 (*final)();
1504 dlclose(pylib);
1505 }
1506 return !needed;
1507 }
1508
1509 int main(int argc, char** argv)
1510 {
1511 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001512 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001513 not_needed = 1;
1514 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001515 }])],
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001516 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001517
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001518 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001519 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001520
1521 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1522 cflags_save=$CFLAGS
1523 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001524 libs_save=$LIBS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001525 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001526 LIBS="-ldl $LIBS"
Bram Moolenaar7db77842014-03-27 17:40:59 +01001527 AC_RUN_IFELSE([AC_LANG_SOURCE([
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001528 #include <dlfcn.h>
1529 #include <wchar.h>
1530 /* If this program fails, then RTLD_GLOBAL is needed.
1531 * RTLD_GLOBAL will be used and then it is not possible to
1532 * have both python versions enabled in the same vim instance.
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02001533 * Only the first python version used will be switched on.
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001534 */
1535
1536 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1537 {
1538 int needed = 0;
1539 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1540 if (pylib != 0)
1541 {
1542 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1543 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1544 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1545 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1546 (*pfx)(prefix);
1547 (*init)();
1548 needed = (*simple)("import termios") == -1;
1549 (*final)();
1550 dlclose(pylib);
1551 }
1552 return !needed;
1553 }
1554
1555 int main(int argc, char** argv)
1556 {
1557 int not_needed = 0;
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001558 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}"))
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001559 not_needed = 1;
1560 return !not_needed;
Bram Moolenaar7db77842014-03-27 17:40:59 +01001561 }])],
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001562 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1563
1564 CFLAGS=$cflags_save
Bram Moolenaar5d3fbf32015-03-05 16:47:20 +01001565 LIBS=$libs_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001566
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001567 PYTHON_SRC="if_python.c"
1568 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001569 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001570 PYTHON_LIBS=
1571 PYTHON3_SRC="if_python3.c"
1572 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001573 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001574 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001575elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1576 AC_DEFINE(DYNAMIC_PYTHON)
1577 PYTHON_SRC="if_python.c"
1578 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001579 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001580 PYTHON_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001581elif test "$python_ok" = yes; then
1582 dnl Check that adding -fPIE works. It may be needed when using a static
1583 dnl Python library.
1584 AC_MSG_CHECKING([if -fPIE can be added for Python])
1585 cflags_save=$CFLAGS
1586 libs_save=$LIBS
1587 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE"
1588 LIBS="$LIBS $PYTHON_LIBS"
1589 AC_TRY_LINK(,[ ],
1590 AC_MSG_RESULT(yes); fpie_ok=yes,
1591 AC_MSG_RESULT(no); fpie_ok=no)
1592 CFLAGS=$cflags_save
1593 LIBS=$libs_save
1594 if test $fpie_ok = yes; then
1595 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE"
1596 fi
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001597elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1598 AC_DEFINE(DYNAMIC_PYTHON3)
1599 PYTHON3_SRC="if_python3.c"
1600 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaarcf1b0572014-05-22 14:44:22 +02001601 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\""
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001602 PYTHON3_LIBS=
Bram Moolenaare741f272013-07-09 21:57:52 +02001603elif test "$python3_ok" = yes; then
1604 dnl Check that adding -fPIE works. It may be needed when using a static
1605 dnl Python library.
1606 AC_MSG_CHECKING([if -fPIE can be added for Python3])
1607 cflags_save=$CFLAGS
1608 libs_save=$LIBS
1609 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE"
1610 LIBS="$LIBS $PYTHON3_LIBS"
1611 AC_TRY_LINK(,[ ],
1612 AC_MSG_RESULT(yes); fpie_ok=yes,
1613 AC_MSG_RESULT(no); fpie_ok=no)
1614 CFLAGS=$cflags_save
1615 LIBS=$libs_save
1616 if test $fpie_ok = yes; then
1617 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE"
1618 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001619fi
1620
Bram Moolenaar071d4272004-06-13 20:20:40 +00001621AC_MSG_CHECKING(--enable-tclinterp argument)
1622AC_ARG_ENABLE(tclinterp,
1623 [ --enable-tclinterp Include Tcl interpreter.], ,
1624 [enable_tclinterp="no"])
1625AC_MSG_RESULT($enable_tclinterp)
1626
1627if test "$enable_tclinterp" = "yes"; then
1628
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001629 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001630 AC_MSG_CHECKING(--with-tclsh argument)
1631 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1632 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001633 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001634 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1635 AC_SUBST(vi_cv_path_tcl)
1636
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001637 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1638 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1639 tclsh_name="tclsh8.4"
1640 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1641 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001642 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001643 tclsh_name="tclsh8.2"
1644 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1645 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001646 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1647 tclsh_name="tclsh8.0"
1648 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1649 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001650 dnl still didn't find it, try without version number
1651 if test "X$vi_cv_path_tcl" = "X"; then
1652 tclsh_name="tclsh"
1653 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1654 fi
1655 if test "X$vi_cv_path_tcl" != "X"; then
1656 AC_MSG_CHECKING(Tcl version)
1657 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1658 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1659 AC_MSG_RESULT($tclver - OK);
1660 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 -`
1661
1662 AC_MSG_CHECKING(for location of Tcl include)
1663 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001664 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 +00001665 else
1666 dnl For Mac OS X 10.3, use the OS-provided framework location
1667 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1668 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001669 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001670 for try in $tclinc; do
1671 if test -f "$try/tcl.h"; then
1672 AC_MSG_RESULT($try/tcl.h)
1673 TCL_INC=$try
1674 break
1675 fi
1676 done
1677 if test -z "$TCL_INC"; then
1678 AC_MSG_RESULT(<not found>)
1679 SKIP_TCL=YES
1680 fi
1681 if test -z "$SKIP_TCL"; then
1682 AC_MSG_CHECKING(for location of tclConfig.sh script)
1683 if test "x$MACOSX" != "xyes"; then
1684 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001685 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001686 else
1687 dnl For Mac OS X 10.3, use the OS-provided framework location
1688 tclcnf="/System/Library/Frameworks/Tcl.framework"
1689 fi
1690 for try in $tclcnf; do
1691 if test -f $try/tclConfig.sh; then
1692 AC_MSG_RESULT($try/tclConfig.sh)
1693 . $try/tclConfig.sh
1694 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1695 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1696 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001697 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001698 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 +00001699 break
1700 fi
1701 done
1702 if test -z "$TCL_LIBS"; then
1703 AC_MSG_RESULT(<not found>)
1704 AC_MSG_CHECKING(for Tcl library by myself)
1705 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001706 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001707 for ext in .so .a ; do
1708 for ver in "" $tclver ; do
1709 for try in $tcllib ; do
1710 trylib=tcl$ver$ext
1711 if test -f $try/lib$trylib ; then
1712 AC_MSG_RESULT($try/lib$trylib)
1713 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1714 if test "`(uname) 2>/dev/null`" = SunOS &&
1715 uname -r | grep '^5' >/dev/null; then
1716 TCL_LIBS="$TCL_LIBS -R $try"
1717 fi
1718 break 3
1719 fi
1720 done
1721 done
1722 done
1723 if test -z "$TCL_LIBS"; then
1724 AC_MSG_RESULT(<not found>)
1725 SKIP_TCL=YES
1726 fi
1727 fi
1728 if test -z "$SKIP_TCL"; then
1729 AC_DEFINE(FEAT_TCL)
1730 TCL_SRC=if_tcl.c
1731 TCL_OBJ=objects/if_tcl.o
1732 TCL_PRO=if_tcl.pro
1733 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1734 fi
1735 fi
1736 else
1737 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1738 fi
1739 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001740 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then
1741 AC_MSG_ERROR([could not configure Tcl])
1742 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001743fi
1744AC_SUBST(TCL_SRC)
1745AC_SUBST(TCL_OBJ)
1746AC_SUBST(TCL_PRO)
1747AC_SUBST(TCL_CFLAGS)
1748AC_SUBST(TCL_LIBS)
1749
1750AC_MSG_CHECKING(--enable-rubyinterp argument)
1751AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001752 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001753 [enable_rubyinterp="no"])
1754AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001755if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar0b105412014-11-30 13:34:23 +01001756 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then
1757 AC_MSG_ERROR([cannot use Ruby with tiny or small features])
1758 fi
1759
Bram Moolenaar165641d2010-02-17 16:23:09 +01001760 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001761 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001762 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1763 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1764 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001765 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001766 if test "X$vi_cv_path_ruby" != "X"; then
1767 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001768 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 +00001769 AC_MSG_RESULT(OK)
Bram Moolenaar81398892012-10-03 21:09:35 +02001770 AC_MSG_CHECKING(Ruby rbconfig)
1771 ruby_rbconfig="RbConfig"
1772 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then
1773 ruby_rbconfig="Config"
1774 fi
1775 AC_MSG_RESULT($ruby_rbconfig)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001776 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar81398892012-10-03 21:09:35 +02001777 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 +00001778 if test "X$rubyhdrdir" != "X"; then
1779 AC_MSG_RESULT($rubyhdrdir)
1780 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaara6fd37b2014-03-27 17:19:09 +01001781 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"`
1782 if test -d "$rubyarchdir"; then
1783 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001784 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001785 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"`
Bram Moolenaar026a4452013-08-07 15:22:23 +02001786 if test "X$rubyversion" = "X"; then
1787 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"`
1788 fi
Bram Moolenaar165641d2010-02-17 16:23:09 +01001789 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar81398892012-10-03 21:09:35 +02001790 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001791 if test "X$rubylibs" != "X"; then
1792 RUBY_LIBS="$rubylibs"
1793 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001794 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"`
1795 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"`
Bram Moolenaarac499e32013-06-02 19:14:17 +02001796 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001797 if test -f "$rubylibdir/$librubya"; then
1798 librubyarg="$librubyarg"
Bram Moolenaarac499e32013-06-02 19:14:17 +02001799 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1800 elif test "$librubyarg" = "libruby.a"; then
1801 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1802 librubyarg="-lruby"
1803 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001804 fi
1805
1806 if test "X$librubyarg" != "X"; then
1807 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1808 fi
Bram Moolenaar81398892012-10-03 21:09:35 +02001809 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001810 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001811 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1812 dnl be included if requested by passing --with-mac-arch to
1813 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001814 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001815 if test "X$rubyldflags" != "X"; then
Bram Moolenaar2bcaec32014-03-27 18:51:11 +01001816 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02001817 LDFLAGS="$rubyldflags $LDFLAGS"
1818 fi
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001819 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001820 fi
1821 RUBY_SRC="if_ruby.c"
1822 RUBY_OBJ="objects/if_ruby.o"
1823 RUBY_PRO="if_ruby.pro"
1824 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001825 if test "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar81398892012-10-03 21:09:35 +02001826 libruby=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"`
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001827 AC_DEFINE(DYNAMIC_RUBY)
1828 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1829 RUBY_LIBS=
1830 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001831 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001832 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001833 fi
1834 else
1835 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1836 fi
1837 fi
Bram Moolenaarf788a062011-12-14 20:51:25 +01001838
1839 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then
1840 AC_MSG_ERROR([could not configure Ruby])
1841 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001842fi
1843AC_SUBST(RUBY_SRC)
1844AC_SUBST(RUBY_OBJ)
1845AC_SUBST(RUBY_PRO)
1846AC_SUBST(RUBY_CFLAGS)
1847AC_SUBST(RUBY_LIBS)
1848
1849AC_MSG_CHECKING(--enable-cscope argument)
1850AC_ARG_ENABLE(cscope,
1851 [ --enable-cscope Include cscope interface.], ,
1852 [enable_cscope="no"])
1853AC_MSG_RESULT($enable_cscope)
1854if test "$enable_cscope" = "yes"; then
1855 AC_DEFINE(FEAT_CSCOPE)
1856fi
1857
1858AC_MSG_CHECKING(--enable-workshop argument)
1859AC_ARG_ENABLE(workshop,
1860 [ --enable-workshop Include Sun Visual Workshop support.], ,
1861 [enable_workshop="no"])
1862AC_MSG_RESULT($enable_workshop)
1863if test "$enable_workshop" = "yes"; then
1864 AC_DEFINE(FEAT_SUN_WORKSHOP)
1865 WORKSHOP_SRC="workshop.c integration.c"
1866 AC_SUBST(WORKSHOP_SRC)
1867 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1868 AC_SUBST(WORKSHOP_OBJ)
1869 if test "${enable_gui-xxx}" = xxx; then
1870 enable_gui=motif
1871 fi
1872fi
1873
1874AC_MSG_CHECKING(--disable-netbeans argument)
1875AC_ARG_ENABLE(netbeans,
1876 [ --disable-netbeans Disable NetBeans integration support.],
1877 , [enable_netbeans="yes"])
1878if test "$enable_netbeans" = "yes"; then
1879 AC_MSG_RESULT(no)
1880 dnl On Solaris we need the socket and nsl library.
1881 AC_CHECK_LIB(socket, socket)
1882 AC_CHECK_LIB(nsl, gethostbyname)
1883 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1884 AC_TRY_LINK([
1885#include <stdio.h>
1886#include <stdlib.h>
1887#include <stdarg.h>
1888#include <fcntl.h>
1889#include <netdb.h>
1890#include <netinet/in.h>
1891#include <errno.h>
1892#include <sys/types.h>
1893#include <sys/socket.h>
1894 /* Check bitfields */
1895 struct nbbuf {
1896 unsigned int initDone:1;
1897 ushort signmaplen;
1898 };
1899 ], [
1900 /* Check creating a socket. */
1901 struct sockaddr_in server;
1902 (void)socket(AF_INET, SOCK_STREAM, 0);
1903 (void)htons(100);
1904 (void)gethostbyname("microsoft.com");
1905 if (errno == ECONNREFUSED)
1906 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1907 ],
1908 AC_MSG_RESULT(yes),
1909 AC_MSG_RESULT(no); enable_netbeans="no")
1910else
1911 AC_MSG_RESULT(yes)
1912fi
1913if test "$enable_netbeans" = "yes"; then
1914 AC_DEFINE(FEAT_NETBEANS_INTG)
1915 NETBEANS_SRC="netbeans.c"
1916 AC_SUBST(NETBEANS_SRC)
1917 NETBEANS_OBJ="objects/netbeans.o"
1918 AC_SUBST(NETBEANS_OBJ)
1919fi
1920
1921AC_MSG_CHECKING(--enable-sniff argument)
1922AC_ARG_ENABLE(sniff,
1923 [ --enable-sniff Include Sniff interface.], ,
1924 [enable_sniff="no"])
1925AC_MSG_RESULT($enable_sniff)
1926if test "$enable_sniff" = "yes"; then
1927 AC_DEFINE(FEAT_SNIFF)
1928 SNIFF_SRC="if_sniff.c"
1929 AC_SUBST(SNIFF_SRC)
1930 SNIFF_OBJ="objects/if_sniff.o"
1931 AC_SUBST(SNIFF_OBJ)
1932fi
1933
1934AC_MSG_CHECKING(--enable-multibyte argument)
1935AC_ARG_ENABLE(multibyte,
1936 [ --enable-multibyte Include multibyte editing support.], ,
1937 [enable_multibyte="no"])
1938AC_MSG_RESULT($enable_multibyte)
1939if test "$enable_multibyte" = "yes"; then
1940 AC_DEFINE(FEAT_MBYTE)
1941fi
1942
1943AC_MSG_CHECKING(--enable-hangulinput argument)
1944AC_ARG_ENABLE(hangulinput,
1945 [ --enable-hangulinput Include Hangul input support.], ,
1946 [enable_hangulinput="no"])
1947AC_MSG_RESULT($enable_hangulinput)
1948
1949AC_MSG_CHECKING(--enable-xim argument)
1950AC_ARG_ENABLE(xim,
1951 [ --enable-xim Include XIM input support.],
1952 AC_MSG_RESULT($enable_xim),
1953 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001954
1955AC_MSG_CHECKING(--enable-fontset argument)
1956AC_ARG_ENABLE(fontset,
1957 [ --enable-fontset Include X fontset output support.], ,
1958 [enable_fontset="no"])
1959AC_MSG_RESULT($enable_fontset)
1960dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1961
1962test -z "$with_x" && with_x=yes
1963test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1964if test "$with_x" = no; then
1965 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1966else
1967 dnl Do this check early, so that its failure can override user requests.
1968
1969 AC_PATH_PROG(xmkmfpath, xmkmf)
1970
1971 AC_PATH_XTRA
1972
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001973 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001974 dnl be compiled with a special option.
1975 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001976 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001977 CFLAGS="$CFLAGS -W c,dll"
1978 LDFLAGS="$LDFLAGS -W l,dll"
1979 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1980 fi
1981
1982 dnl On my HPUX system the X include dir is found, but the lib dir not.
1983 dnl This is a desparate try to fix this.
1984
1985 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1986 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1987 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1988 X_LIBS="$X_LIBS -L$x_libraries"
1989 if test "`(uname) 2>/dev/null`" = SunOS &&
1990 uname -r | grep '^5' >/dev/null; then
1991 X_LIBS="$X_LIBS -R $x_libraries"
1992 fi
1993 fi
1994
1995 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1996 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1997 AC_MSG_RESULT(Corrected X includes to $x_includes)
1998 X_CFLAGS="$X_CFLAGS -I$x_includes"
1999 fi
2000
2001 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
2002 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
2003 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
2004 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
2005 dnl Same for "-R/usr/lib ".
2006 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
2007
2008
2009 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002010 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
2011 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002012 AC_MSG_CHECKING(if X11 header files can be found)
2013 cflags_save=$CFLAGS
2014 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002015 AC_TRY_COMPILE([#include <X11/Xlib.h>
2016#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00002017 AC_MSG_RESULT(yes),
2018 AC_MSG_RESULT(no); no_x=yes)
2019 CFLAGS=$cflags_save
2020
2021 if test "${no_x-no}" = yes; then
2022 with_x=no
2023 else
2024 AC_DEFINE(HAVE_X11)
2025 X_LIB="-lXt -lX11";
2026 AC_SUBST(X_LIB)
2027
2028 ac_save_LDFLAGS="$LDFLAGS"
2029 LDFLAGS="-L$x_libraries $LDFLAGS"
2030
2031 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
2032 dnl For HP-UX 10.20 it must be before -lSM -lICE
2033 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
2034 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
2035
2036 dnl Some systems need -lnsl -lsocket when testing for ICE.
2037 dnl The check above doesn't do this, try here (again). Also needed to get
2038 dnl them after Xdmcp. link.sh will remove them when not needed.
2039 dnl Check for other function than above to avoid the cached value
2040 AC_CHECK_LIB(ICE, IceOpenConnection,
2041 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
2042
2043 dnl Check for -lXpm (needed for some versions of Motif)
2044 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
2045 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
2046 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
2047
2048 dnl Check that the X11 header files don't use implicit declarations
2049 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
2050 cflags_save=$CFLAGS
Bram Moolenaard1864592013-05-04 04:40:15 +02002051 dnl -Werror is GCC only, others like Solaris Studio might not like it
2052 if test "$GCC" = yes; then
2053 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
2054 else
2055 CFLAGS="$CFLAGS $X_CFLAGS"
2056 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002057 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2058 AC_MSG_RESULT(no),
2059 CFLAGS="$CFLAGS -Wno-implicit-int"
2060 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
2061 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
2062 AC_MSG_RESULT(test failed)
2063 )
2064 )
2065 CFLAGS=$cflags_save
2066
2067 LDFLAGS="$ac_save_LDFLAGS"
2068
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00002069 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
2070 AC_CACHE_VAL(ac_cv_small_wchar_t,
2071 [AC_TRY_RUN([
2072#include <X11/Xlib.h>
2073#if STDC_HEADERS
2074# include <stdlib.h>
2075# include <stddef.h>
2076#endif
2077 main()
2078 {
2079 if (sizeof(wchar_t) <= 2)
2080 exit(1);
2081 exit(0);
2082 }],
2083 ac_cv_small_wchar_t="no",
2084 ac_cv_small_wchar_t="yes",
2085 AC_MSG_ERROR(failed to compile test program))])
2086 AC_MSG_RESULT($ac_cv_small_wchar_t)
2087 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
2088 AC_DEFINE(SMALL_WCHAR_T)
2089 fi
2090
Bram Moolenaar071d4272004-06-13 20:20:40 +00002091 fi
2092fi
2093
Bram Moolenaara7fc0102005-05-18 22:17:12 +00002094test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00002095
2096AC_MSG_CHECKING(--enable-gui argument)
2097AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002098 [ --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 +00002099
2100dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
2101dnl Do not use character classes for portability with old tools.
2102enable_gui_canon=`echo "_$enable_gui" | \
2103 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
2104
2105dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002106SKIP_GTK2=YES
2107SKIP_GNOME=YES
2108SKIP_MOTIF=YES
2109SKIP_ATHENA=YES
2110SKIP_NEXTAW=YES
2111SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002112SKIP_CARBON=YES
2113GUITYPE=NONE
2114
Bram Moolenaarb11160e2005-01-04 21:31:43 +00002115if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002116 SKIP_PHOTON=
2117 case "$enable_gui_canon" in
2118 no) AC_MSG_RESULT(no GUI support)
2119 SKIP_PHOTON=YES ;;
2120 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
2121 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
2122 photon) AC_MSG_RESULT(Photon GUI support) ;;
2123 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2124 SKIP_PHOTON=YES ;;
2125 esac
2126
2127elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
2128 SKIP_CARBON=
2129 case "$enable_gui_canon" in
2130 no) AC_MSG_RESULT(no GUI support)
2131 SKIP_CARBON=YES ;;
2132 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02002133 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
2134 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002135 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
2136 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
2137 SKIP_CARBON=YES ;;
2138 esac
2139
2140else
2141
Bram Moolenaar071d4272004-06-13 20:20:40 +00002142 case "$enable_gui_canon" in
2143 no|none) AC_MSG_RESULT(no GUI support) ;;
2144 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002145 SKIP_GTK2=
2146 SKIP_GNOME=
2147 SKIP_MOTIF=
2148 SKIP_ATHENA=
2149 SKIP_NEXTAW=
2150 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002151 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002152 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002153 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
2154 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00002155 SKIP_GTK2=;;
2156 motif) AC_MSG_RESULT(Motif GUI support)
2157 SKIP_MOTIF=;;
2158 athena) AC_MSG_RESULT(Athena GUI support)
2159 SKIP_ATHENA=;;
2160 nextaw) AC_MSG_RESULT(neXtaw GUI support)
2161 SKIP_NEXTAW=;;
2162 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
2163 esac
2164
2165fi
2166
Bram Moolenaar071d4272004-06-13 20:20:40 +00002167if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
2168 -a "$enable_gui_canon" != "gnome2"; then
2169 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
2170 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002171 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002172 , enable_gtk2_check="yes")
2173 AC_MSG_RESULT($enable_gtk2_check)
2174 if test "x$enable_gtk2_check" = "xno"; then
2175 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002176 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00002177 fi
2178fi
2179
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002180if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002181 AC_MSG_CHECKING(whether or not to look for GNOME)
2182 AC_ARG_ENABLE(gnome-check,
2183 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
2184 , enable_gnome_check="no")
2185 AC_MSG_RESULT($enable_gnome_check)
2186 if test "x$enable_gnome_check" = "xno"; then
2187 SKIP_GNOME=YES
2188 fi
2189fi
2190
2191if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
2192 AC_MSG_CHECKING(whether or not to look for Motif)
2193 AC_ARG_ENABLE(motif-check,
2194 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
2195 , enable_motif_check="yes")
2196 AC_MSG_RESULT($enable_motif_check)
2197 if test "x$enable_motif_check" = "xno"; then
2198 SKIP_MOTIF=YES
2199 fi
2200fi
2201
2202if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
2203 AC_MSG_CHECKING(whether or not to look for Athena)
2204 AC_ARG_ENABLE(athena-check,
2205 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
2206 , enable_athena_check="yes")
2207 AC_MSG_RESULT($enable_athena_check)
2208 if test "x$enable_athena_check" = "xno"; then
2209 SKIP_ATHENA=YES
2210 fi
2211fi
2212
2213if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
2214 AC_MSG_CHECKING(whether or not to look for neXtaw)
2215 AC_ARG_ENABLE(nextaw-check,
2216 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
2217 , enable_nextaw_check="yes")
2218 AC_MSG_RESULT($enable_nextaw_check);
2219 if test "x$enable_nextaw_check" = "xno"; then
2220 SKIP_NEXTAW=YES
2221 fi
2222fi
2223
2224if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
2225 AC_MSG_CHECKING(whether or not to look for Carbon)
2226 AC_ARG_ENABLE(carbon-check,
2227 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
2228 , enable_carbon_check="yes")
2229 AC_MSG_RESULT($enable_carbon_check);
2230 if test "x$enable_carbon_check" = "xno"; then
2231 SKIP_CARBON=YES
2232 fi
2233fi
2234
Bram Moolenaar843ee412004-06-30 16:16:41 +00002235
Bram Moolenaar071d4272004-06-13 20:20:40 +00002236if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
2237 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00002238 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00002239 AC_MSG_RESULT(yes);
2240 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00002241 if test "$VIMNAME" = "vim"; then
2242 VIMNAME=Vim
2243 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00002244
Bram Moolenaar164fca32010-07-14 13:58:07 +02002245 if test "x$MACARCH" = "xboth"; then
2246 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
2247 else
2248 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
2249 fi
2250
Bram Moolenaar14716812006-05-04 21:54:08 +00002251 dnl Default install directory is not /usr/local
2252 if test x$prefix = xNONE; then
2253 prefix=/Applications
2254 fi
2255
2256 dnl Sorry for the hard coded default
2257 datadir='${prefix}/Vim.app/Contents/Resources'
2258
Bram Moolenaar071d4272004-06-13 20:20:40 +00002259 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002260 SKIP_GTK2=YES;
2261 SKIP_GNOME=YES;
2262 SKIP_MOTIF=YES;
2263 SKIP_ATHENA=YES;
2264 SKIP_NEXTAW=YES;
2265 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002266 SKIP_CARBON=YES
2267fi
2268
Bram Moolenaar071d4272004-06-13 20:20:40 +00002269dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002270dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002271dnl
2272dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002273dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00002274dnl
2275AC_DEFUN(AM_PATH_GTK,
2276[
2277 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
2278 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002279 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002280 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
2281 no_gtk=""
2282 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
2283 && $PKG_CONFIG --exists gtk+-2.0; then
2284 {
2285 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
2286 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
2287 dnl something like that.
2288 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00002289 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00002290 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
2291 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2292 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
2293 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2294 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
2295 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
2296 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
2297 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002298 else
2299 no_gtk=yes
2300 fi
2301
2302 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
2303 {
2304 ac_save_CFLAGS="$CFLAGS"
2305 ac_save_LIBS="$LIBS"
2306 CFLAGS="$CFLAGS $GTK_CFLAGS"
2307 LIBS="$LIBS $GTK_LIBS"
2308
2309 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002310 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002311 dnl
2312 rm -f conf.gtktest
2313 AC_TRY_RUN([
2314#include <gtk/gtk.h>
2315#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002316#if STDC_HEADERS
2317# include <stdlib.h>
2318# include <stddef.h>
2319#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002320
2321int
2322main ()
2323{
2324int major, minor, micro;
2325char *tmp_version;
2326
2327system ("touch conf.gtktest");
2328
2329/* HP/UX 9 (%@#!) writes to sscanf strings */
2330tmp_version = g_strdup("$min_gtk_version");
2331if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
2332 printf("%s, bad version string\n", "$min_gtk_version");
2333 exit(1);
2334 }
2335
2336if ((gtk_major_version > major) ||
2337 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
2338 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
2339 (gtk_micro_version >= micro)))
2340{
2341 return 0;
2342}
2343return 1;
2344}
2345],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
2346 CFLAGS="$ac_save_CFLAGS"
2347 LIBS="$ac_save_LIBS"
2348 }
2349 fi
2350 if test "x$no_gtk" = x ; then
2351 if test "x$enable_gtktest" = "xyes"; then
2352 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2353 else
2354 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
2355 fi
2356 ifelse([$2], , :, [$2])
2357 else
2358 {
2359 AC_MSG_RESULT(no)
2360 GTK_CFLAGS=""
2361 GTK_LIBS=""
2362 ifelse([$3], , :, [$3])
2363 }
2364 fi
2365 }
2366 else
2367 GTK_CFLAGS=""
2368 GTK_LIBS=""
2369 ifelse([$3], , :, [$3])
2370 fi
2371 AC_SUBST(GTK_CFLAGS)
2372 AC_SUBST(GTK_LIBS)
2373 rm -f conf.gtktest
2374])
2375
2376dnl ---------------------------------------------------------------------------
2377dnl gnome
2378dnl ---------------------------------------------------------------------------
2379AC_DEFUN([GNOME_INIT_HOOK],
2380[
2381 AC_SUBST(GNOME_LIBS)
2382 AC_SUBST(GNOME_LIBDIR)
2383 AC_SUBST(GNOME_INCLUDEDIR)
2384
2385 AC_ARG_WITH(gnome-includes,
2386 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2387 [CFLAGS="$CFLAGS -I$withval"]
2388 )
2389
2390 AC_ARG_WITH(gnome-libs,
2391 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2392 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2393 )
2394
2395 AC_ARG_WITH(gnome,
2396 [ --with-gnome Specify prefix for GNOME files],
2397 if test x$withval = xyes; then
2398 want_gnome=yes
2399 ifelse([$1], [], :, [$1])
2400 else
2401 if test "x$withval" = xno; then
2402 want_gnome=no
2403 else
2404 want_gnome=yes
2405 LDFLAGS="$LDFLAGS -L$withval/lib"
2406 CFLAGS="$CFLAGS -I$withval/include"
2407 gnome_prefix=$withval/lib
2408 fi
2409 fi,
2410 want_gnome=yes)
2411
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002412 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002413 {
2414 AC_MSG_CHECKING(for libgnomeui-2.0)
2415 if $PKG_CONFIG --exists libgnomeui-2.0; then
2416 AC_MSG_RESULT(yes)
2417 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2418 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2419 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002420
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002421 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2422 dnl This might not be the right way but it works for me...
2423 AC_MSG_CHECKING(for FreeBSD)
2424 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2425 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002426 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002427 GNOME_LIBS="$GNOME_LIBS -pthread"
2428 else
2429 AC_MSG_RESULT(no)
2430 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002431 $1
2432 else
2433 AC_MSG_RESULT(not found)
2434 if test "x$2" = xfail; then
2435 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2436 fi
2437 fi
2438 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002439 fi
2440])
2441
2442AC_DEFUN([GNOME_INIT],[
2443 GNOME_INIT_HOOK([],fail)
2444])
2445
2446
2447dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002448dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002449dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002450if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002451
2452 AC_MSG_CHECKING(--disable-gtktest argument)
2453 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2454 , enable_gtktest=yes)
2455 if test "x$enable_gtktest" = "xyes" ; then
2456 AC_MSG_RESULT(gtk test enabled)
2457 else
2458 AC_MSG_RESULT(gtk test disabled)
2459 fi
2460
Bram Moolenaar071d4272004-06-13 20:20:40 +00002461 if test "X$PKG_CONFIG" = "X"; then
2462 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2463 fi
2464
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002465 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002466 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2467 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002468 AM_PATH_GTK(2.2.0,
2469 [GUI_LIB_LOC="$GTK_LIBDIR"
2470 GTK_LIBNAME="$GTK_LIBS"
2471 GUI_INC_LOC="$GTK_CFLAGS"], )
2472 if test "x$GTK_CFLAGS" != "x"; then
2473 SKIP_ATHENA=YES
2474 SKIP_NEXTAW=YES
2475 SKIP_MOTIF=YES
2476 GUITYPE=GTK
2477 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002478 fi
2479 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002480 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002481 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2482 || test "0$gtk_minor_version" -ge 2; then
2483 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2484 fi
2485 dnl
2486 dnl if GTK exists, then check for GNOME.
2487 dnl
2488 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002489 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002490 GNOME_INIT_HOOK([have_gnome=yes])
2491 if test "x$have_gnome" = xyes ; then
2492 AC_DEFINE(FEAT_GUI_GNOME)
2493 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2494 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002495 fi
2496 }
2497 fi
2498 fi
2499fi
2500
2501dnl Check for Motif include files location.
2502dnl The LAST one found is used, this makes the highest version to be used,
2503dnl e.g. when Motif1.2 and Motif2.0 are both present.
2504
2505if test -z "$SKIP_MOTIF"; then
2506 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"
2507 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2508 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2509
2510 AC_MSG_CHECKING(for location of Motif GUI includes)
2511 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2512 GUI_INC_LOC=
2513 for try in $gui_includes; do
2514 if test -f "$try/Xm/Xm.h"; then
2515 GUI_INC_LOC=$try
2516 fi
2517 done
2518 if test -n "$GUI_INC_LOC"; then
2519 if test "$GUI_INC_LOC" = /usr/include; then
2520 GUI_INC_LOC=
2521 AC_MSG_RESULT(in default path)
2522 else
2523 AC_MSG_RESULT($GUI_INC_LOC)
2524 fi
2525 else
2526 AC_MSG_RESULT(<not found>)
2527 SKIP_MOTIF=YES
2528 fi
2529fi
2530
2531dnl Check for Motif library files location. In the same order as the include
2532dnl files, to avoid a mixup if several versions are present
2533
2534if test -z "$SKIP_MOTIF"; then
2535 AC_MSG_CHECKING(--with-motif-lib argument)
2536 AC_ARG_WITH(motif-lib,
2537 [ --with-motif-lib=STRING Library for Motif ],
2538 [ MOTIF_LIBNAME="${withval}" ] )
2539
2540 if test -n "$MOTIF_LIBNAME"; then
2541 AC_MSG_RESULT($MOTIF_LIBNAME)
2542 GUI_LIB_LOC=
2543 else
2544 AC_MSG_RESULT(no)
2545
2546 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2547 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2548
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002549 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The
2550 dnl linker will figure out which one to use, we only check if one exists.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002551 AC_MSG_CHECKING(for location of Motif GUI libs)
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002552 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 +00002553 GUI_LIB_LOC=
2554 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002555 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002556 if test -f "$libtry"; then
2557 GUI_LIB_LOC=$try
2558 fi
2559 done
2560 done
2561 if test -n "$GUI_LIB_LOC"; then
2562 dnl Remove /usr/lib, it causes trouble on some systems
Bram Moolenaar6324c3b2013-06-17 20:27:18 +02002563 if test "$GUI_LIB_LOC" = /usr/lib \
2564 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \
2565 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002566 GUI_LIB_LOC=
2567 AC_MSG_RESULT(in default path)
2568 else
2569 if test -n "$GUI_LIB_LOC"; then
2570 AC_MSG_RESULT($GUI_LIB_LOC)
2571 if test "`(uname) 2>/dev/null`" = SunOS &&
2572 uname -r | grep '^5' >/dev/null; then
2573 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2574 fi
2575 fi
2576 fi
2577 MOTIF_LIBNAME=-lXm
2578 else
2579 AC_MSG_RESULT(<not found>)
2580 SKIP_MOTIF=YES
2581 fi
2582 fi
2583fi
2584
2585if test -z "$SKIP_MOTIF"; then
2586 SKIP_ATHENA=YES
2587 SKIP_NEXTAW=YES
2588 GUITYPE=MOTIF
2589 AC_SUBST(MOTIF_LIBNAME)
2590fi
2591
2592dnl Check if the Athena files can be found
2593
2594GUI_X_LIBS=
2595
2596if test -z "$SKIP_ATHENA"; then
2597 AC_MSG_CHECKING(if Athena header files can be found)
2598 cflags_save=$CFLAGS
2599 CFLAGS="$CFLAGS $X_CFLAGS"
2600 AC_TRY_COMPILE([
2601#include <X11/Intrinsic.h>
2602#include <X11/Xaw/Paned.h>], ,
2603 AC_MSG_RESULT(yes),
2604 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2605 CFLAGS=$cflags_save
2606fi
2607
2608if test -z "$SKIP_ATHENA"; then
2609 GUITYPE=ATHENA
2610fi
2611
2612if test -z "$SKIP_NEXTAW"; then
2613 AC_MSG_CHECKING(if neXtaw header files can be found)
2614 cflags_save=$CFLAGS
2615 CFLAGS="$CFLAGS $X_CFLAGS"
2616 AC_TRY_COMPILE([
2617#include <X11/Intrinsic.h>
2618#include <X11/neXtaw/Paned.h>], ,
2619 AC_MSG_RESULT(yes),
2620 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2621 CFLAGS=$cflags_save
2622fi
2623
2624if test -z "$SKIP_NEXTAW"; then
2625 GUITYPE=NEXTAW
2626fi
2627
2628if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2629 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2630 dnl Avoid adding it when it twice
2631 if test -n "$GUI_INC_LOC"; then
2632 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2633 fi
2634 if test -n "$GUI_LIB_LOC"; then
2635 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2636 fi
2637
2638 dnl Check for -lXext and then for -lXmu
2639 ldflags_save=$LDFLAGS
2640 LDFLAGS="$X_LIBS $LDFLAGS"
2641 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2642 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2643 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2644 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2645 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2646 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2647 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2648 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2649 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2650 if test -z "$SKIP_MOTIF"; then
2651 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2652 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2653 fi
2654 LDFLAGS=$ldflags_save
2655
2656 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2657 AC_MSG_CHECKING(for extra X11 defines)
2658 NARROW_PROTO=
2659 rm -fr conftestdir
2660 if mkdir conftestdir; then
2661 cd conftestdir
2662 cat > Imakefile <<'EOF'
2663acfindx:
2664 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2665EOF
2666 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2667 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2668 fi
2669 cd ..
2670 rm -fr conftestdir
2671 fi
2672 if test -z "$NARROW_PROTO"; then
2673 AC_MSG_RESULT(no)
2674 else
2675 AC_MSG_RESULT($NARROW_PROTO)
2676 fi
2677 AC_SUBST(NARROW_PROTO)
2678fi
2679
2680dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2681dnl use the X11 include path
2682if test "$enable_xsmp" = "yes"; then
2683 cppflags_save=$CPPFLAGS
2684 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2685 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2686 CPPFLAGS=$cppflags_save
2687fi
2688
2689
Bram Moolenaare667c952010-07-05 22:57:59 +02002690if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002691 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2692 cppflags_save=$CPPFLAGS
2693 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2694 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2695
2696 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2697 if test ! "$enable_xim" = "no"; then
2698 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2699 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2700 AC_MSG_RESULT(yes),
Bram Moolenaare29b1fe2014-04-10 20:00:15 +02002701 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no")
Bram Moolenaar071d4272004-06-13 20:20:40 +00002702 fi
2703 CPPFLAGS=$cppflags_save
2704
2705 dnl automatically enable XIM when hangul input isn't enabled
2706 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2707 -a "x$GUITYPE" != "xNONE" ; then
2708 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2709 enable_xim="yes"
2710 fi
2711fi
2712
2713if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2714 cppflags_save=$CPPFLAGS
2715 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002716dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2717 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2718 AC_TRY_COMPILE([
2719#include <X11/Intrinsic.h>
2720#include <X11/Xmu/Editres.h>],
2721 [int i; i = 0;],
2722 AC_MSG_RESULT(yes)
2723 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2724 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002725 CPPFLAGS=$cppflags_save
2726fi
2727
2728dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2729if test -z "$SKIP_MOTIF"; then
2730 cppflags_save=$CPPFLAGS
2731 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002732 if test "$zOSUnix" = "yes"; then
2733 xmheader="Xm/Xm.h"
2734 else
2735 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02002736 Xm/UnhighlightT.h Xm/Notebook.h"
Bram Moolenaar77c19352012-06-13 19:19:41 +02002737 fi
2738 AC_CHECK_HEADERS($xmheader)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002739
Bram Moolenaar77c19352012-06-13 19:19:41 +02002740 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002741 dnl Solaris uses XpmAttributes_21, very annoying.
2742 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2743 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2744 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2745 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2746 )
2747 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002748 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002749 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002750 CPPFLAGS=$cppflags_save
2751fi
2752
2753if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2754 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2755 enable_xim="no"
2756fi
2757if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2758 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2759 enable_fontset="no"
2760fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002761if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002762 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2763 enable_fontset="no"
2764fi
2765
Bram Moolenaar071d4272004-06-13 20:20:40 +00002766if test -z "$SKIP_PHOTON"; then
2767 GUITYPE=PHOTONGUI
2768fi
2769
2770AC_SUBST(GUI_INC_LOC)
2771AC_SUBST(GUI_LIB_LOC)
2772AC_SUBST(GUITYPE)
2773AC_SUBST(GUI_X_LIBS)
2774
2775if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2776 AC_MSG_ERROR([cannot use workshop without Motif])
2777fi
2778
2779dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2780if test "$enable_xim" = "yes"; then
2781 AC_DEFINE(FEAT_XIM)
2782fi
2783if test "$enable_fontset" = "yes"; then
2784 AC_DEFINE(FEAT_XFONTSET)
2785fi
2786
2787
2788dnl ---------------------------------------------------------------------------
2789dnl end of GUI-checking
2790dnl ---------------------------------------------------------------------------
2791
Bram Moolenaar693e40c2013-02-26 14:56:42 +01002792dnl Check for Cygwin, which needs an extra source file if not using X11
2793AC_MSG_CHECKING(for CYGWIN environment)
2794case `uname` in
2795 CYGWIN*) CYGWIN=yes; AC_MSG_RESULT(yes)
2796 AC_MSG_CHECKING(for CYGWIN clipboard support)
2797 if test "x$with_x" = "xno" ; then
2798 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o
2799 AC_MSG_RESULT(yes)
2800 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD)
2801 else
2802 AC_MSG_RESULT(no - using X11)
2803 fi ;;
2804
2805 *) CYGWIN=no; AC_MSG_RESULT(no);;
2806esac
Bram Moolenaar071d4272004-06-13 20:20:40 +00002807
2808dnl Only really enable hangul input when GUI and XFONTSET are available
2809if test "$enable_hangulinput" = "yes"; then
2810 if test "x$GUITYPE" = "xNONE"; then
2811 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2812 enable_hangulinput=no
2813 else
2814 AC_DEFINE(FEAT_HANGULIN)
2815 HANGULIN_SRC=hangulin.c
2816 AC_SUBST(HANGULIN_SRC)
2817 HANGULIN_OBJ=objects/hangulin.o
2818 AC_SUBST(HANGULIN_OBJ)
2819 fi
2820fi
2821
2822dnl Checks for libraries and include files.
2823
Bram Moolenaar446cb832008-06-24 21:56:24 +00002824AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2825 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01002826 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002827#include "confdefs.h"
2828#include <ctype.h>
2829#if STDC_HEADERS
2830# include <stdlib.h>
2831# include <stddef.h>
2832#endif
2833main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01002834 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00002835 vim_cv_toupper_broken=yes
2836 ],[
2837 vim_cv_toupper_broken=no
2838 ],[
2839 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2840 ])])
2841
2842if test "x$vim_cv_toupper_broken" = "xyes" ; then
2843 AC_DEFINE(BROKEN_TOUPPER)
2844fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002845
2846AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002847AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002848 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2849 AC_MSG_RESULT(no))
2850
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002851AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2852AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2853 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2854 AC_MSG_RESULT(no))
2855
Bram Moolenaar071d4272004-06-13 20:20:40 +00002856dnl Checks for header files.
2857AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2858dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2859if test "$HAS_ELF" = 1; then
2860 AC_CHECK_LIB(elf, main)
2861fi
2862
2863AC_HEADER_DIRENT
2864
Bram Moolenaar071d4272004-06-13 20:20:40 +00002865dnl If sys/wait.h is not found it might still exist but not be POSIX
2866dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2867if test $ac_cv_header_sys_wait_h = no; then
2868 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2869 AC_TRY_COMPILE([#include <sys/wait.h>],
2870 [union wait xx, yy; xx = yy],
2871 AC_MSG_RESULT(yes)
2872 AC_DEFINE(HAVE_SYS_WAIT_H)
2873 AC_DEFINE(HAVE_UNION_WAIT),
2874 AC_MSG_RESULT(no))
2875fi
2876
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002877AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2878 sys/select.h sys/utsname.h termcap.h fcntl.h \
2879 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2880 termio.h iconv.h inttypes.h langinfo.h math.h \
2881 unistd.h stropts.h errno.h sys/resource.h \
2882 sys/systeminfo.h locale.h sys/stream.h termios.h \
2883 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2884 utime.h sys/param.h libintl.h libgen.h \
2885 util/debug.h util/msg18n.h frame.h sys/acl.h \
2886 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002887
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002888dnl sys/ptem.h depends on sys/stream.h on Solaris
2889AC_CHECK_HEADERS(sys/ptem.h, [], [],
2890[#if defined HAVE_SYS_STREAM_H
2891# include <sys/stream.h>
2892#endif])
2893
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002894dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2895AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2896[#if defined HAVE_SYS_PARAM_H
2897# include <sys/param.h>
2898#endif])
2899
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002900
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002901dnl pthread_np.h may exist but can only be used after including pthread.h
2902AC_MSG_CHECKING([for pthread_np.h])
2903AC_TRY_COMPILE([
2904#include <pthread.h>
2905#include <pthread_np.h>],
2906 [int i; i = 0;],
2907 AC_MSG_RESULT(yes)
2908 AC_DEFINE(HAVE_PTHREAD_NP_H),
2909 AC_MSG_RESULT(no))
2910
Bram Moolenaare344bea2005-09-01 20:46:49 +00002911AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002912if test "x$MACOSX" = "xyes"; then
2913 dnl The strings.h file on OS/X contains a warning and nothing useful.
2914 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2915else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002916
2917dnl Check if strings.h and string.h can both be included when defined.
2918AC_MSG_CHECKING([if strings.h can be included after string.h])
2919cppflags_save=$CPPFLAGS
2920CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2921AC_TRY_COMPILE([
2922#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2923# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2924 /* but don't do it on AIX 5.1 (Uribarri) */
2925#endif
2926#ifdef HAVE_XM_XM_H
2927# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2928#endif
2929#ifdef HAVE_STRING_H
2930# include <string.h>
2931#endif
2932#if defined(HAVE_STRINGS_H)
2933# include <strings.h>
2934#endif
2935 ], [int i; i = 0;],
2936 AC_MSG_RESULT(yes),
2937 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2938 AC_MSG_RESULT(no))
2939CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002940fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002941
2942dnl Checks for typedefs, structures, and compiler characteristics.
2943AC_PROG_GCC_TRADITIONAL
2944AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002945AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002946AC_TYPE_MODE_T
2947AC_TYPE_OFF_T
2948AC_TYPE_PID_T
2949AC_TYPE_SIZE_T
2950AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002951AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002952
Bram Moolenaar071d4272004-06-13 20:20:40 +00002953AC_HEADER_TIME
2954AC_CHECK_TYPE(ino_t, long)
2955AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002956AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002957
2958AC_MSG_CHECKING(for rlim_t)
2959if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2960 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2961else
2962 AC_EGREP_CPP(dnl
2963changequote(<<,>>)dnl
2964<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2965changequote([,]),
2966 [
2967#include <sys/types.h>
2968#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002969# include <stdlib.h>
2970# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002971#endif
2972#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002973# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002974#endif
2975 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2976 AC_MSG_RESULT($ac_cv_type_rlim_t)
2977fi
2978if test $ac_cv_type_rlim_t = no; then
2979 cat >> confdefs.h <<\EOF
2980#define rlim_t unsigned long
2981EOF
2982fi
2983
2984AC_MSG_CHECKING(for stack_t)
2985if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2986 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2987else
2988 AC_EGREP_CPP(stack_t,
2989 [
2990#include <sys/types.h>
2991#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002992# include <stdlib.h>
2993# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002994#endif
2995#include <signal.h>
2996 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2997 AC_MSG_RESULT($ac_cv_type_stack_t)
2998fi
2999if test $ac_cv_type_stack_t = no; then
3000 cat >> confdefs.h <<\EOF
3001#define stack_t struct sigaltstack
3002EOF
3003fi
3004
3005dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
3006AC_MSG_CHECKING(whether stack_t has an ss_base field)
3007AC_TRY_COMPILE([
3008#include <sys/types.h>
3009#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00003010# include <stdlib.h>
3011# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003012#endif
3013#include <signal.h>
3014#include "confdefs.h"
3015 ], [stack_t sigstk; sigstk.ss_base = 0; ],
3016 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
3017 AC_MSG_RESULT(no))
3018
3019olibs="$LIBS"
3020AC_MSG_CHECKING(--with-tlib argument)
3021AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
3022if test -n "$with_tlib"; then
3023 AC_MSG_RESULT($with_tlib)
3024 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003025 AC_MSG_CHECKING(for linking with $with_tlib library)
3026 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
3027 dnl Need to check for tgetent() below.
3028 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003029else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003030 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003031 dnl On HP-UX 10.10 termcap or termlib should be used instead of
3032 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003033 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003034 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003035 dnl Older versions of ncurses have bugs, get a new one!
3036 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00003037 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00003038 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01003039 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
3040 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00003041 esac
3042 for libname in $tlibs; do
3043 AC_CHECK_LIB(${libname}, tgetent,,)
3044 if test "x$olibs" != "x$LIBS"; then
3045 dnl It's possible that a library is found but it doesn't work
3046 dnl e.g., shared library that cannot be found
3047 dnl compile and run a test program to be sure
3048 AC_TRY_RUN([
3049#ifdef HAVE_TERMCAP_H
3050# include <termcap.h>
3051#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003052#if STDC_HEADERS
3053# include <stdlib.h>
3054# include <stddef.h>
3055#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003056main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
3057 res="OK", res="FAIL", res="FAIL")
3058 if test "$res" = "OK"; then
3059 break
3060 fi
3061 AC_MSG_RESULT($libname library is not usable)
3062 LIBS="$olibs"
3063 fi
3064 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003065 if test "x$olibs" = "x$LIBS"; then
3066 AC_MSG_RESULT(no terminal library found)
3067 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003068fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003069
3070if test "x$olibs" = "x$LIBS"; then
3071 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003072 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00003073 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
3074 AC_MSG_RESULT(yes),
3075 AC_MSG_ERROR([NOT FOUND!
3076 You need to install a terminal library; for example ncurses.
3077 Or specify the name of the library with --with-tlib.]))
3078fi
3079
Bram Moolenaar446cb832008-06-24 21:56:24 +00003080AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
3081 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003082 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003083#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003084#ifdef HAVE_TERMCAP_H
3085# include <termcap.h>
3086#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003087#ifdef HAVE_STRING_H
3088# include <string.h>
3089#endif
3090#if STDC_HEADERS
3091# include <stdlib.h>
3092# include <stddef.h>
3093#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003094main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003095{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003096 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003097 vim_cv_terminfo=no
3098 ],[
3099 vim_cv_terminfo=yes
3100 ],[
3101 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
3102 ])
3103 ])
3104
3105if test "x$vim_cv_terminfo" = "xyes" ; then
3106 AC_DEFINE(TERMINFO)
3107fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003108
3109if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00003110 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
3111 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003112 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003113#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003114#ifdef HAVE_TERMCAP_H
3115# include <termcap.h>
3116#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00003117#if STDC_HEADERS
3118# include <stdlib.h>
3119# include <stddef.h>
3120#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003121main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00003122{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003123 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003124 vim_cv_tgent=zero
3125 ],[
3126 vim_cv_tgent=non-zero
3127 ],[
3128 AC_MSG_ERROR(failed to compile test program.)
3129 ])
3130 ])
3131
3132 if test "x$vim_cv_tgent" = "xzero" ; then
3133 AC_DEFINE(TGETENT_ZERO_ERR, 0)
3134 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003135fi
3136
3137AC_MSG_CHECKING(whether termcap.h contains ospeed)
3138AC_TRY_LINK([
3139#ifdef HAVE_TERMCAP_H
3140# include <termcap.h>
3141#endif
3142 ], [ospeed = 20000],
3143 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
3144 [AC_MSG_RESULT(no)
3145 AC_MSG_CHECKING(whether ospeed can be extern)
3146 AC_TRY_LINK([
3147#ifdef HAVE_TERMCAP_H
3148# include <termcap.h>
3149#endif
3150extern short ospeed;
3151 ], [ospeed = 20000],
3152 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
3153 AC_MSG_RESULT(no))]
3154 )
3155
3156AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
3157AC_TRY_LINK([
3158#ifdef HAVE_TERMCAP_H
3159# include <termcap.h>
3160#endif
3161 ], [if (UP == 0 && BC == 0) PC = 1],
3162 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
3163 [AC_MSG_RESULT(no)
3164 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
3165 AC_TRY_LINK([
3166#ifdef HAVE_TERMCAP_H
3167# include <termcap.h>
3168#endif
3169extern char *UP, *BC, PC;
3170 ], [if (UP == 0 && BC == 0) PC = 1],
3171 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
3172 AC_MSG_RESULT(no))]
3173 )
3174
3175AC_MSG_CHECKING(whether tputs() uses outfuntype)
3176AC_TRY_COMPILE([
3177#ifdef HAVE_TERMCAP_H
3178# include <termcap.h>
3179#endif
3180 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
3181 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
3182 AC_MSG_RESULT(no))
3183
3184dnl On some SCO machines sys/select redefines struct timeval
3185AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
3186AC_TRY_COMPILE([
3187#include <sys/types.h>
3188#include <sys/time.h>
3189#include <sys/select.h>], ,
3190 AC_MSG_RESULT(yes)
3191 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
3192 AC_MSG_RESULT(no))
3193
3194dnl AC_DECL_SYS_SIGLIST
3195
3196dnl Checks for pty.c (copied from screen) ==========================
3197AC_MSG_CHECKING(for /dev/ptc)
3198if test -r /dev/ptc; then
3199 AC_DEFINE(HAVE_DEV_PTC)
3200 AC_MSG_RESULT(yes)
3201else
3202 AC_MSG_RESULT(no)
3203fi
3204
3205AC_MSG_CHECKING(for SVR4 ptys)
3206if test -c /dev/ptmx ; then
3207 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
3208 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
3209 AC_MSG_RESULT(no))
3210else
3211 AC_MSG_RESULT(no)
3212fi
3213
3214AC_MSG_CHECKING(for ptyranges)
3215if test -d /dev/ptym ; then
3216 pdir='/dev/ptym'
3217else
3218 pdir='/dev'
3219fi
3220dnl SCO uses ptyp%d
3221AC_EGREP_CPP(yes,
3222[#ifdef M_UNIX
3223 yes;
3224#endif
3225 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
3226dnl if test -c /dev/ptyp19; then
3227dnl ptys=`echo /dev/ptyp??`
3228dnl else
3229dnl ptys=`echo $pdir/pty??`
3230dnl fi
3231if test "$ptys" != "$pdir/pty??" ; then
3232 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
3233 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
3234 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
3235 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
3236 AC_MSG_RESULT([$p0 / $p1])
3237else
3238 AC_MSG_RESULT([don't know])
3239fi
3240
3241dnl **** pty mode/group handling ****
3242dnl
3243dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00003244rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00003245AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
3246 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003247 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003248#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003249#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003250#if STDC_HEADERS
3251# include <stdlib.h>
3252# include <stddef.h>
3253#endif
3254#ifdef HAVE_UNISTD_H
3255#include <unistd.h>
3256#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003257#include <sys/stat.h>
3258#include <stdio.h>
3259main()
3260{
3261 struct stat sb;
3262 char *x,*ttyname();
3263 int om, m;
3264 FILE *fp;
3265
3266 if (!(x = ttyname(0))) exit(1);
3267 if (stat(x, &sb)) exit(1);
3268 om = sb.st_mode;
3269 if (om & 002) exit(0);
3270 m = system("mesg y");
3271 if (m == -1 || m == 127) exit(1);
3272 if (stat(x, &sb)) exit(1);
3273 m = sb.st_mode;
3274 if (chmod(x, om)) exit(1);
3275 if (m & 002) exit(0);
3276 if (sb.st_gid == getgid()) exit(1);
3277 if (!(fp=fopen("conftest_grp", "w")))
3278 exit(1);
3279 fprintf(fp, "%d\n", sb.st_gid);
3280 fclose(fp);
3281 exit(0);
3282}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003283 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003284 if test -f conftest_grp; then
3285 vim_cv_tty_group=`cat conftest_grp`
3286 if test "x$vim_cv_tty_mode" = "x" ; then
3287 vim_cv_tty_mode=0620
3288 fi
3289 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
3290 else
3291 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003292 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003293 fi
3294 ],[
3295 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00003296 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00003297 ],[
3298 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
3299 ])
3300 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003301rm -f conftest_grp
3302
Bram Moolenaar446cb832008-06-24 21:56:24 +00003303if test "x$vim_cv_tty_group" != "xworld" ; then
3304 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
3305 if test "x$vim_cv_tty_mode" = "x" ; then
Bram Moolenaar84a05ac2013-05-06 04:24:17 +02003306 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 +00003307 else
3308 AC_DEFINE(PTYMODE, 0620)
3309 fi
3310fi
3311
Bram Moolenaar071d4272004-06-13 20:20:40 +00003312dnl Checks for library functions. ===================================
3313
3314AC_TYPE_SIGNAL
3315
3316dnl find out what to use at the end of a signal function
3317if test $ac_cv_type_signal = void; then
3318 AC_DEFINE(SIGRETURN, [return])
3319else
3320 AC_DEFINE(SIGRETURN, [return 0])
3321fi
3322
3323dnl check if struct sigcontext is defined (used for SGI only)
3324AC_MSG_CHECKING(for struct sigcontext)
3325AC_TRY_COMPILE([
3326#include <signal.h>
3327test_sig()
3328{
3329 struct sigcontext *scont;
3330 scont = (struct sigcontext *)0;
3331 return 1;
3332} ], ,
3333 AC_MSG_RESULT(yes)
3334 AC_DEFINE(HAVE_SIGCONTEXT),
3335 AC_MSG_RESULT(no))
3336
3337dnl tricky stuff: try to find out if getcwd() is implemented with
3338dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00003339AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
3340 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003341 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003342#include "confdefs.h"
3343#ifdef HAVE_UNISTD_H
3344#include <unistd.h>
3345#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003346char *dagger[] = { "IFS=pwd", 0 };
3347main()
3348{
3349 char buffer[500];
3350 extern char **environ;
3351 environ = dagger;
3352 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00003353}
Bram Moolenaar7db77842014-03-27 17:40:59 +01003354 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003355 vim_cv_getcwd_broken=no
3356 ],[
3357 vim_cv_getcwd_broken=yes
3358 ],[
3359 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
3360 ])
3361 ])
3362
3363if test "x$vim_cv_getcwd_broken" = "xyes" ; then
3364 AC_DEFINE(BAD_GETCWD)
3365fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003366
Bram Moolenaar25153e12010-02-24 14:47:08 +01003367dnl Check for functions in one big call, to reduce the size of configure.
3368dnl Can only be used for functions that do not require any include.
3369AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar24305862012-08-15 14:05:05 +02003370 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00003371 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003372 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00003373 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00003374 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
3375 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01003376AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00003377
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02003378dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
3379dnl appropriate, so that off_t is 64 bits when needed.
3380AC_SYS_LARGEFILE
3381
Bram Moolenaar071d4272004-06-13 20:20:40 +00003382dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
3383AC_MSG_CHECKING(for st_blksize)
3384AC_TRY_COMPILE(
3385[#include <sys/types.h>
3386#include <sys/stat.h>],
3387[ struct stat st;
3388 int n;
3389
3390 stat("/", &st);
3391 n = (int)st.st_blksize;],
3392 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
3393 AC_MSG_RESULT(no))
3394
Bram Moolenaar446cb832008-06-24 21:56:24 +00003395AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
3396 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003397 AC_RUN_IFELSE([AC_LANG_SOURCE([[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003398#include "confdefs.h"
3399#if STDC_HEADERS
3400# include <stdlib.h>
3401# include <stddef.h>
3402#endif
3403#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003404#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003405main() {struct stat st; exit(stat("configure/", &st) != 0); }
Bram Moolenaar7db77842014-03-27 17:40:59 +01003406 ]])],[
Bram Moolenaar446cb832008-06-24 21:56:24 +00003407 vim_cv_stat_ignores_slash=yes
3408 ],[
3409 vim_cv_stat_ignores_slash=no
3410 ],[
3411 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3412 ])
3413 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003414
Bram Moolenaar446cb832008-06-24 21:56:24 +00003415if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3416 AC_DEFINE(STAT_IGNORES_SLASH)
3417fi
3418
Bram Moolenaar071d4272004-06-13 20:20:40 +00003419dnl Link with iconv for charset translation, if not found without library.
3420dnl check for iconv() requires including iconv.h
3421dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3422dnl has been installed.
3423AC_MSG_CHECKING(for iconv_open())
3424save_LIBS="$LIBS"
3425LIBS="$LIBS -liconv"
3426AC_TRY_LINK([
3427#ifdef HAVE_ICONV_H
3428# include <iconv.h>
3429#endif
3430 ], [iconv_open("fr", "to");],
3431 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3432 LIBS="$save_LIBS"
3433 AC_TRY_LINK([
3434#ifdef HAVE_ICONV_H
3435# include <iconv.h>
3436#endif
3437 ], [iconv_open("fr", "to");],
3438 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3439 AC_MSG_RESULT(no)))
3440
3441
3442AC_MSG_CHECKING(for nl_langinfo(CODESET))
3443AC_TRY_LINK([
3444#ifdef HAVE_LANGINFO_H
3445# include <langinfo.h>
3446#endif
3447], [char *cs = nl_langinfo(CODESET);],
3448 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3449 AC_MSG_RESULT(no))
3450
Bram Moolenaar446cb832008-06-24 21:56:24 +00003451dnl Need various functions for floating point support. Only enable
3452dnl floating point when they are all present.
3453AC_CHECK_LIB(m, strtod)
3454AC_MSG_CHECKING([for strtod() and other floating point functions])
3455AC_TRY_LINK([
3456#ifdef HAVE_MATH_H
3457# include <math.h>
3458#endif
3459#if STDC_HEADERS
3460# include <stdlib.h>
3461# include <stddef.h>
3462#endif
3463], [char *s; double d;
3464 d = strtod("1.1", &s);
3465 d = fabs(1.11);
3466 d = ceil(1.11);
3467 d = floor(1.11);
3468 d = log10(1.11);
3469 d = pow(1.11, 2.22);
3470 d = sqrt(1.11);
3471 d = sin(1.11);
3472 d = cos(1.11);
3473 d = atan(1.11);
3474 ],
3475 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3476 AC_MSG_RESULT(no))
3477
Bram Moolenaar071d4272004-06-13 20:20:40 +00003478dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3479dnl when -lacl works, also try to use -lattr (required for Debian).
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003480dnl On Solaris, use the acl_get/set functions in libsec, if present.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003481AC_MSG_CHECKING(--disable-acl argument)
3482AC_ARG_ENABLE(acl,
3483 [ --disable-acl Don't check for ACL support.],
3484 , [enable_acl="yes"])
3485if test "$enable_acl" = "yes"; then
3486AC_MSG_RESULT(no)
3487AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3488 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3489 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3490
3491AC_MSG_CHECKING(for POSIX ACL support)
3492AC_TRY_LINK([
3493#include <sys/types.h>
3494#ifdef HAVE_SYS_ACL_H
3495# include <sys/acl.h>
3496#endif
3497acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3498 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3499 acl_free(acl);],
3500 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3501 AC_MSG_RESULT(no))
3502
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003503AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)],
Bram Moolenaar071d4272004-06-13 20:20:40 +00003504AC_MSG_CHECKING(for Solaris ACL support)
3505AC_TRY_LINK([
3506#ifdef HAVE_SYS_ACL_H
3507# include <sys/acl.h>
3508#endif], [acl("foo", GETACLCNT, 0, NULL);
3509 ],
3510 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
Bram Moolenaar8d462f92012-02-05 22:51:33 +01003511 AC_MSG_RESULT(no)))
Bram Moolenaar071d4272004-06-13 20:20:40 +00003512
3513AC_MSG_CHECKING(for AIX ACL support)
3514AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003515#if STDC_HEADERS
3516# include <stdlib.h>
3517# include <stddef.h>
3518#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003519#ifdef HAVE_SYS_ACL_H
3520# include <sys/acl.h>
3521#endif
3522#ifdef HAVE_SYS_ACCESS_H
3523# include <sys/access.h>
3524#endif
3525#define _ALL_SOURCE
3526
3527#include <sys/stat.h>
3528
3529int aclsize;
3530struct acl *aclent;], [aclsize = sizeof(struct acl);
3531 aclent = (void *)malloc(aclsize);
3532 statacl("foo", STX_NORMAL, aclent, aclsize);
3533 ],
3534 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3535 AC_MSG_RESULT(no))
3536else
3537 AC_MSG_RESULT(yes)
3538fi
3539
3540AC_MSG_CHECKING(--disable-gpm argument)
3541AC_ARG_ENABLE(gpm,
3542 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3543 [enable_gpm="yes"])
3544
3545if test "$enable_gpm" = "yes"; then
3546 AC_MSG_RESULT(no)
3547 dnl Checking if gpm support can be compiled
3548 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3549 [olibs="$LIBS" ; LIBS="-lgpm"]
3550 AC_TRY_LINK(
3551 [#include <gpm.h>
3552 #include <linux/keyboard.h>],
3553 [Gpm_GetLibVersion(NULL);],
3554 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3555 dnl FEAT_MOUSE_GPM if mouse support is included
3556 [vi_cv_have_gpm=yes],
3557 [vi_cv_have_gpm=no])
3558 [LIBS="$olibs"]
3559 )
3560 if test $vi_cv_have_gpm = yes; then
3561 LIBS="$LIBS -lgpm"
3562 AC_DEFINE(HAVE_GPM)
3563 fi
3564else
3565 AC_MSG_RESULT(yes)
3566fi
3567
Bram Moolenaar446cb832008-06-24 21:56:24 +00003568AC_MSG_CHECKING(--disable-sysmouse argument)
3569AC_ARG_ENABLE(sysmouse,
3570 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3571 [enable_sysmouse="yes"])
3572
3573if test "$enable_sysmouse" = "yes"; then
3574 AC_MSG_RESULT(no)
3575 dnl Checking if sysmouse support can be compiled
3576 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3577 dnl defines FEAT_SYSMOUSE if mouse support is included
3578 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3579 AC_TRY_LINK(
3580 [#include <sys/consio.h>
3581 #include <signal.h>
3582 #include <sys/fbio.h>],
3583 [struct mouse_info mouse;
3584 mouse.operation = MOUSE_MODE;
3585 mouse.operation = MOUSE_SHOW;
3586 mouse.u.mode.mode = 0;
3587 mouse.u.mode.signal = SIGUSR2;],
3588 [vi_cv_have_sysmouse=yes],
3589 [vi_cv_have_sysmouse=no])
3590 )
3591 if test $vi_cv_have_sysmouse = yes; then
3592 AC_DEFINE(HAVE_SYSMOUSE)
3593 fi
3594else
3595 AC_MSG_RESULT(yes)
3596fi
3597
Bram Moolenaarf05da212009-11-17 16:13:15 +00003598dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3599AC_MSG_CHECKING(for FD_CLOEXEC)
3600AC_TRY_COMPILE(
3601[#if HAVE_FCNTL_H
3602# include <fcntl.h>
3603#endif],
3604[ int flag = FD_CLOEXEC;],
3605 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3606 AC_MSG_RESULT(not usable))
3607
Bram Moolenaar071d4272004-06-13 20:20:40 +00003608dnl rename needs to be checked separately to work on Nextstep with cc
3609AC_MSG_CHECKING(for rename)
3610AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3611 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3612 AC_MSG_RESULT(no))
3613
3614dnl sysctl() may exist but not the arguments we use
3615AC_MSG_CHECKING(for sysctl)
3616AC_TRY_COMPILE(
3617[#include <sys/types.h>
3618#include <sys/sysctl.h>],
3619[ int mib[2], r;
3620 size_t len;
3621
3622 mib[0] = CTL_HW;
3623 mib[1] = HW_USERMEM;
3624 len = sizeof(r);
3625 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3626 ],
3627 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3628 AC_MSG_RESULT(not usable))
3629
3630dnl sysinfo() may exist but not be Linux compatible
3631AC_MSG_CHECKING(for sysinfo)
3632AC_TRY_COMPILE(
3633[#include <sys/types.h>
3634#include <sys/sysinfo.h>],
3635[ struct sysinfo sinfo;
3636 int t;
3637
3638 (void)sysinfo(&sinfo);
3639 t = sinfo.totalram;
3640 ],
3641 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3642 AC_MSG_RESULT(not usable))
3643
Bram Moolenaar914572a2007-05-01 11:37:47 +00003644dnl struct sysinfo may have the mem_unit field or not
3645AC_MSG_CHECKING(for sysinfo.mem_unit)
3646AC_TRY_COMPILE(
3647[#include <sys/types.h>
3648#include <sys/sysinfo.h>],
3649[ struct sysinfo sinfo;
Bram Moolenaar3c7ad012013-06-11 19:53:45 +02003650 sinfo.mem_unit = 1;
Bram Moolenaar914572a2007-05-01 11:37:47 +00003651 ],
3652 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3653 AC_MSG_RESULT(no))
3654
Bram Moolenaar071d4272004-06-13 20:20:40 +00003655dnl sysconf() may exist but not support what we want to use
3656AC_MSG_CHECKING(for sysconf)
3657AC_TRY_COMPILE(
3658[#include <unistd.h>],
3659[ (void)sysconf(_SC_PAGESIZE);
3660 (void)sysconf(_SC_PHYS_PAGES);
3661 ],
3662 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3663 AC_MSG_RESULT(not usable))
3664
Bram Moolenaar914703b2010-05-31 21:59:46 +02003665AC_CHECK_SIZEOF([int])
3666AC_CHECK_SIZEOF([long])
3667AC_CHECK_SIZEOF([time_t])
3668AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003669
Bram Moolenaara2aa31a2014-02-23 22:52:40 +01003670dnl Use different names to avoid clashing with other header files.
3671AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int])
3672AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long])
3673
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003674dnl Make sure that uint32_t is really 32 bits unsigned.
3675AC_MSG_CHECKING([uint32_t is 32 bits])
3676AC_TRY_RUN([
3677#ifdef HAVE_STDINT_H
3678# include <stdint.h>
3679#endif
3680#ifdef HAVE_INTTYPES_H
3681# include <inttypes.h>
3682#endif
3683main() {
3684 uint32_t nr1 = (uint32_t)-1;
3685 uint32_t nr2 = (uint32_t)0xffffffffUL;
3686 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3687 exit(0);
3688}],
3689AC_MSG_RESULT(ok),
3690AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003691AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003692
Bram Moolenaar446cb832008-06-24 21:56:24 +00003693dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3694dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3695
Bram Moolenaar071d4272004-06-13 20:20:40 +00003696[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003697#include "confdefs.h"
3698#ifdef HAVE_STRING_H
3699# include <string.h>
3700#endif
3701#if STDC_HEADERS
3702# include <stdlib.h>
3703# include <stddef.h>
3704#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003705main() {
3706 char buf[10];
3707 strcpy(buf, "abcdefghi");
3708 mch_memmove(buf, buf + 2, 3);
3709 if (strncmp(buf, "ababcf", 6))
3710 exit(1);
3711 strcpy(buf, "abcdefghi");
3712 mch_memmove(buf + 2, buf, 3);
3713 if (strncmp(buf, "cdedef", 6))
3714 exit(1);
3715 exit(0); /* libc version works properly. */
3716}']
3717
Bram Moolenaar446cb832008-06-24 21:56:24 +00003718AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3719 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003720 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 +00003721 [
3722 vim_cv_memmove_handles_overlap=yes
3723 ],[
3724 vim_cv_memmove_handles_overlap=no
3725 ],[
3726 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3727 ])
3728 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003729
Bram Moolenaar446cb832008-06-24 21:56:24 +00003730if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3731 AC_DEFINE(USEMEMMOVE)
3732else
3733 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3734 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003735 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 +00003736 [
3737 vim_cv_bcopy_handles_overlap=yes
3738 ],[
3739 vim_cv_bcopy_handles_overlap=no
3740 ],[
3741 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3742 ])
3743 ])
3744
3745 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3746 AC_DEFINE(USEBCOPY)
3747 else
3748 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3749 [
Bram Moolenaar7db77842014-03-27 17:40:59 +01003750 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 +00003751 [
3752 vim_cv_memcpy_handles_overlap=yes
3753 ],[
3754 vim_cv_memcpy_handles_overlap=no
3755 ],[
3756 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3757 ])
3758 ])
3759
3760 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3761 AC_DEFINE(USEMEMCPY)
3762 fi
3763 fi
3764fi
3765
Bram Moolenaar071d4272004-06-13 20:20:40 +00003766
3767dnl Check for multibyte locale functions
3768dnl Find out if _Xsetlocale() is supported by libX11.
3769dnl Check if X_LOCALE should be defined.
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003770if test "x$with_x" = "xyes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003771 cflags_save=$CFLAGS
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003772 libs_save=$LIBS
3773 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS"
3774 CFLAGS="$CFLAGS $X_CFLAGS"
3775
3776 AC_MSG_CHECKING(whether X_LOCALE needed)
3777 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3778 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3779 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3780 AC_MSG_RESULT(no))
3781
3782 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used)
3783 AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes)
3784 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no))
3785
Bram Moolenaar071d4272004-06-13 20:20:40 +00003786 CFLAGS=$cflags_save
Bram Moolenaarcbc246a2014-10-11 14:47:26 +02003787 LIBS=$libs_save
Bram Moolenaar071d4272004-06-13 20:20:40 +00003788fi
3789
3790dnl Link with xpg4, it is said to make Korean locale working
3791AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3792
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003793dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003794dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003795dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003796dnl -t for typedefs (many ctags have this)
3797dnl -s for static functions (Elvis ctags only?)
3798dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3799dnl -i+m to test for older Exuberant ctags
3800AC_MSG_CHECKING(how to create tags)
3801test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003802if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003803 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003804elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3805 TAGPRG="exctags -I INIT+ --fields=+S"
3806elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3807 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003808else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003809 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003810 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3811 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3812 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3813 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3814 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3815 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3816 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3817fi
3818test -f tags.save && mv tags.save tags
3819AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3820
3821dnl Check how we can run man with a section number
3822AC_MSG_CHECKING(how to run man with a section nr)
3823MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003824(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 +00003825AC_MSG_RESULT($MANDEF)
3826if test "$MANDEF" = "man -s"; then
3827 AC_DEFINE(USEMAN_S)
3828fi
3829
3830dnl Check if gettext() is working and if it needs -lintl
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003831dnl We take care to base this on an empty LIBS: on some systems libelf would be
3832dnl in LIBS and implicitly take along libintl. The final LIBS would then not
3833dnl contain libintl, and the link step would fail due to -Wl,--as-needed.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003834AC_MSG_CHECKING(--disable-nls argument)
3835AC_ARG_ENABLE(nls,
3836 [ --disable-nls Don't support NLS (gettext()).], ,
3837 [enable_nls="yes"])
3838
3839if test "$enable_nls" = "yes"; then
3840 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003841
3842 INSTALL_LANGS=install-languages
3843 AC_SUBST(INSTALL_LANGS)
3844 INSTALL_TOOL_LANGS=install-tool-languages
3845 AC_SUBST(INSTALL_TOOL_LANGS)
3846
Bram Moolenaar071d4272004-06-13 20:20:40 +00003847 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3848 AC_MSG_CHECKING([for NLS])
3849 if test -f po/Makefile; then
3850 have_gettext="no"
3851 if test -n "$MSGFMT"; then
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003852 olibs=$LIBS
3853 LIBS=""
Bram Moolenaar071d4272004-06-13 20:20:40 +00003854 AC_TRY_LINK(
3855 [#include <libintl.h>],
3856 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003857 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs,
3858 LIBS="-lintl"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003859 AC_TRY_LINK(
3860 [#include <libintl.h>],
3861 [gettext("Test");],
Bram Moolenaar49b6a572013-11-17 20:32:54 +01003862 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes";
3863 LIBS="$olibs -lintl",
Bram Moolenaar071d4272004-06-13 20:20:40 +00003864 AC_MSG_RESULT([gettext() doesn't work]);
3865 LIBS=$olibs))
3866 else
3867 AC_MSG_RESULT([msgfmt not found - disabled]);
3868 fi
Bram Moolenaar278eb582014-07-30 13:22:52 +02003869 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003870 AC_DEFINE(HAVE_GETTEXT)
3871 MAKEMO=yes
3872 AC_SUBST(MAKEMO)
3873 dnl this was added in GNU gettext 0.10.36
3874 AC_CHECK_FUNCS(bind_textdomain_codeset)
3875 dnl _nl_msg_cat_cntr is required for GNU gettext
3876 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3877 AC_TRY_LINK(
3878 [#include <libintl.h>
3879 extern int _nl_msg_cat_cntr;],
3880 [++_nl_msg_cat_cntr;],
3881 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3882 AC_MSG_RESULT([no]))
3883 fi
3884 else
3885 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3886 fi
3887else
3888 AC_MSG_RESULT(yes)
3889fi
3890
3891dnl Check for dynamic linking loader
3892AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3893if test x${DLL} = xdlfcn.h; then
3894 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3895 AC_MSG_CHECKING([for dlopen()])
3896 AC_TRY_LINK(,[
3897 extern void* dlopen();
3898 dlopen();
3899 ],
3900 AC_MSG_RESULT(yes);
3901 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3902 AC_MSG_RESULT(no);
3903 AC_MSG_CHECKING([for dlopen() in -ldl])
3904 olibs=$LIBS
3905 LIBS="$LIBS -ldl"
3906 AC_TRY_LINK(,[
3907 extern void* dlopen();
3908 dlopen();
3909 ],
3910 AC_MSG_RESULT(yes);
3911 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3912 AC_MSG_RESULT(no);
3913 LIBS=$olibs))
3914 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3915 dnl ick :-)
3916 AC_MSG_CHECKING([for dlsym()])
3917 AC_TRY_LINK(,[
3918 extern void* dlsym();
3919 dlsym();
3920 ],
3921 AC_MSG_RESULT(yes);
3922 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3923 AC_MSG_RESULT(no);
3924 AC_MSG_CHECKING([for dlsym() in -ldl])
3925 olibs=$LIBS
3926 LIBS="$LIBS -ldl"
3927 AC_TRY_LINK(,[
3928 extern void* dlsym();
3929 dlsym();
3930 ],
3931 AC_MSG_RESULT(yes);
3932 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3933 AC_MSG_RESULT(no);
3934 LIBS=$olibs))
3935elif test x${DLL} = xdl.h; then
3936 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3937 AC_MSG_CHECKING([for shl_load()])
3938 AC_TRY_LINK(,[
3939 extern void* shl_load();
3940 shl_load();
3941 ],
3942 AC_MSG_RESULT(yes);
3943 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3944 AC_MSG_RESULT(no);
3945 AC_MSG_CHECKING([for shl_load() in -ldld])
3946 olibs=$LIBS
3947 LIBS="$LIBS -ldld"
3948 AC_TRY_LINK(,[
3949 extern void* shl_load();
3950 shl_load();
3951 ],
3952 AC_MSG_RESULT(yes);
3953 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3954 AC_MSG_RESULT(no);
3955 LIBS=$olibs))
3956fi
3957AC_CHECK_HEADERS(setjmp.h)
3958
3959if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3960 dnl -ldl must come after DynaLoader.a
3961 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3962 LIBS=`echo $LIBS | sed s/-ldl//`
3963 PERL_LIBS="$PERL_LIBS -ldl"
3964 fi
3965fi
3966
Bram Moolenaar164fca32010-07-14 13:58:07 +02003967if test "x$MACOSX" = "xyes"; then
3968 AC_MSG_CHECKING(whether we need -framework Cocoa)
3969 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3970 dnl disabled during tiny build)
3971 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3972 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003973 AC_MSG_RESULT(yes)
3974 else
3975 AC_MSG_RESULT(no)
3976 fi
Bram Moolenaar3437b912013-07-03 19:52:53 +02003977 dnl As mentioned above, tiny build implies os_macosx.m isn't needed.
3978 dnl Exclude it from OS_EXTRA_SRC so that linker won't complain about
3979 dnl missing Objective-C symbols.
3980 if test "x$features" = "xtiny"; then
3981 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'`
3982 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'`
3983 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003984fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003985if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003986 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003987fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003988
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003989dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3990dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3991dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003992dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3993dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003994DEPEND_CFLAGS_FILTER=
3995if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003996 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003997 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003998 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003999 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004000 AC_MSG_RESULT(yes)
4001 else
4002 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004003 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004004 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
4005 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00004006 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01004007 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00004008 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
4009 if test "$gccmajor" -gt "3"; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004010 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 +00004011 AC_MSG_RESULT(yes)
4012 else
4013 AC_MSG_RESULT(no)
4014 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00004015fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00004016AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00004017
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004018dnl link.sh tries to avoid overlinking in a hackish way.
4019dnl At least GNU ld supports --as-needed which provides the same functionality
4020dnl at linker level. Let's use it.
4021AC_MSG_CHECKING(linker --as-needed support)
4022LINK_AS_NEEDED=
4023# Check if linker supports --as-needed and --no-as-needed options
4024if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
Bram Moolenaara6cc0312013-06-18 23:31:55 +02004025 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'`
Bram Moolenaar22e193d2010-11-03 22:32:24 +01004026 LINK_AS_NEEDED=yes
4027fi
4028if test "$LINK_AS_NEEDED" = yes; then
4029 AC_MSG_RESULT(yes)
4030else
4031 AC_MSG_RESULT(no)
4032fi
4033AC_SUBST(LINK_AS_NEEDED)
4034
Bram Moolenaar77c19352012-06-13 19:19:41 +02004035# IBM z/OS reset CFLAGS for config.mk
4036if test "$zOSUnix" = "yes"; then
4037 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll"
4038fi
4039
Bram Moolenaar071d4272004-06-13 20:20:40 +00004040dnl write output files
4041AC_OUTPUT(auto/config.mk:config.mk.in)
4042
4043dnl vim: set sw=2 tw=78 fo+=l: